Remove the try-catch wrapper added around s.waitForBoot in
sound_algo/engine.scd — it swallowed real boot errors in
production. Move boot-failure tolerance into
sound_algo/tests/test_tempo.scd instead, where it belongs.
data_only/engine.scd was not affected (no wrapper added).
User : "tu refait aussi les tracks avec toutes les possibilité
de synth disponible pour plus de variation et d'humanité dans
ces créations". Niveau choisi : subtil.
3 axes implémentés en helpers globaux qui s'appliquent à TOUS
les 345 tracks existants sans les réécrire :
1) HUMANIZE (engine.scd, opt-in via ~humanizeOn défaut true)
- Timing offset Pwhite ±3.5ms par note (1.4% sur dur 0.25)
- Velocity Pwhite ±10% par note
- Micro-detune ±3 cents sur acid/melody/harmony midinote
- Appliqué aux 7 Pdef (kickSeq/hatSeq/snareSeq/clapSeq/percSeq/
acidSeq/melodySeq/harmonySeq) via Pfunc factories ~hTime
~hVel ~hDet déclarées dans ~reload
- Désactivable : ~humanizeOn = false; ~reload.value
- Tunables : ~humanizeTiming, ~humanizeVelocity, ~humanizeDetune
2) SYNTH ROTATION (palette/synth_rotation.scd, opt-in défaut OFF)
- 8 rotators (acid/bass/lead/pad/pluck/kick/hat/snare/melody)
- Pool de 19 versions par catégorie (acid_v1..v19 etc.)
- Cycle toutes les ~rotationEvery=8 notes (configurable)
- Vérifie SynthDescLib avant de switcher pour éviter crash
- Activation : ~setRotationOn.(true)
3) AUTO LAYER (palette/auto_layer.scd, opt-in défaut OFF)
- 3 layers parallèles à melody/harmony/acid
- Mirror Pdef qui rejouent le même score avec instrument
différent (warmPad/choir/sub_boom par défaut)
- Octave offset configurable, amp réduit (0.20-0.30)
- Pan opposé, attack/release plus mou, cutoff moins ouvert
- Activation : ~setAutoLayer.(true)
Hook chargement dans live/_load.scd après scales/melodies/
harmonics. Les modules sont silencieux jusqu'à activation.