File size: 2,606 Bytes
be46bea
 
707dac7
be46bea
707dac7
 
be46bea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Dataset preparation

LTX's trainer takes a dataset; it does not help you *build* one. For an audio LoRA the dataset is the challange, the model learns a transformation, so
every item must be the same performance twice, once dry and once through a real
acoustic treatment, aligned and gain-matched. I also used two iterations of each dry sound source so model can learn on variety. 
These are the scripts that built the AKUSPACE set (266 pairs, 14 sources × 19 cells).

Set `AKUSPACE_DATASET` to your dataset root, or run from the repo and the
relative default applies.

| Script | Does |
|---|---|
| `build_v5_rooms.py` | dry/wet room pairs at three levels per room |
| `build_v5_outdoor.py` | outdoor beds; projects the dry out before rebuilding |
| `build_v5_sfx.py` | Eurorack modular-delay pairs |
| `build_eurorack_dry.py` | assembles the dry side fed through the hardware |
| `make_manifest_v5.py` | writes the training CSV with captions and splits |
| `verify_dataset.py` | checks every pair: length, rate, ceiling, alignment |
| `check_limiting.py` | catches limiting/clipping introduced by a render chain |
| `check_clips.py` | duration and sample-rate conformance |
| `wetdry.py` | measures the wet/dry relationship of a rendered pair |
| `slice_ableton_stems.py` | cuts long recordings into per-source clips |

## The rules these encode

Each one cost real time to learn.

**Never normalise dry and wet independently.** Apply the same gain to both, or
the pair no longer describes a transformation and the model learns loudness
instead of acoustics.

**Normalise by active loudness, not peak.** Sparse material — handclaps
especially — reads ~13 dB quiet on peak-based normalisation and ends up
mismatched against sustained sources.

**An ambience bed is not a reverb tail.** A tail is part of the signal and
scales cleanly; a bed is a separate recording, so boosting it amplifies its own
noise floor. Scale beds down only, and only a little. This is why the outdoor
cells ship two levels while rooms and SFX ship three.

**Check the dry fit before trusting any ambience measurement.** `R = wet − dry`
assumes the render carries the dry at exactly 1.00×. When it does not, a
negative ghost of the dry hides inside R and dominates every derived number —
which produced months of misleading ambience statistics here before
`verify_dataset.py` caught it. Confirm fit ≈ 1.000 first.

**The trigger word belongs in preprocessing, not the manifest.** It is prepended
to training captions by the preprocessor and must appear in inference prompts;
storing it in the CSV double-applies it.