12 · Conception sonore et mixage
Directive du propriétaire (premier jet) : « effets sonores légers lorsqu'il y a une action, tout le temps. » La conception des effets suit la pratique documentée de conception sonore basée sur le mouvement d'earshot (github.com/Leonxlnx/earshot, MIT ; docs/motion-sfx-techniques.md, docs/SFX.md) ; notre code dans recipe/tools/sound.py est notre propre création et n'utilise aucun échantillon.
Les couches
| Couche | Niveau | Notes |
|---|---|---|
| Voix | −16 LUFS (référence parole ≈ −19 dBFS, RMS 400 ms) | remplit 93–98% de la durée |
| Tapis musical | 18 LU sous la voix, pas de ducking | original, en do majeur (Do–Lam–Fa–Sol, 100 BPM) : marimba, basse pincée, nappe, kick, shaker. Passe à la nappe seule pour la reprise (musicDrop: [start, end]) |
| Foley | ~15 dB sous la voix (ticks ~21, oiseaux ~22) | un son sur chaque action visible |
| Accents | ~9 dB sous la voix | temps forts de l'histoire uniquement, au maximum ~20 par minute, avec une baisse musicale de 7 dB dans les 0,35 s précédant le plus gros (stop: true) |
| Master | −14 LUFS intégrés, pic vrai −1,5 dBTP | loudnorm linéaire à deux passes |
Les effets (24, dans sound.py)
| Type | Niveau | Utilisation sur | Conception |
|---|---|---|---|
whoosh (long: true pour les grands mouvements) | foley | entrer dans un nouvel endroit, grands mouvements de caméra | bruit rose à travers trois bandes mobiles (1 : 1,6 : 2,5) suivant la vitesse ; balayage panoramique ; le pic atterrit sur le repère |
swish | foley | un bras, un livre, un geste, un lancer | fin éclat lumineux et rapide, 0,2 s |
pop | foley | l'apparition du titre, un changement de visage sur un objet, petites arrivées | blip tonal montant vers la tonique, tick, sonnerie fille |
tick | foley | chaque pas d'un compteur | petit coup lumineux avec une résonance variable (round robin) |
tap | foley | de petits objets qui atterrissent, compteurs qui se stabilisent | bloc de bois amorti |
flip | foley | pages d'un calendrier | bruissement de papier et stabilisation |
slap | foley | une affiche ou un papier plaqué | claque large bande et flutter |
creak (dur) | foley | portes et charnières | impulsions de glissement-collage à travers des résonances de bois |
click | foley | interrupteurs, enseignes qui s'allument | pression et verrouillage espacés de 35 ms |
light | foley | éclairage d'une enseigne | ronronnement doux et petit carillon dans la tonalité |
chirp | foley | vie extérieure (avec parcimonie) | deux petits sifflements d'oiseau |
rattle | foley | feuilles, frissons | salves de bruit filtré à un taux de fluctuation |
slide | foley | un glissement ou un déplacement latéral | un léger grincement glissant |
stretch (dur) | foley | caoutchouc, une corde qui se tend, une surface qui se plie | un grincement rugueux ascendant |
whir (dur) | foley | une bande qui se déroule, un mécanisme qui tourne | clics de cliquet sur du flutter |
chalk (dur) | foley | écrire, rayer sur un tableau | une bande granuleuse hachée par le trait |
roll (dur) | foley | quelque chose qui roule | grondement sourd au rythme du roulement plus des ticks de surface |
thunk | accent | un objet mou qui atterrit (la pomme sur l'herbe) | un corps sourd qui tombe plus un transitoire passe-bas |
thud | accent | une installation lourde | sub 90 → 42 Hz avec corps et transitoire |
slam | accent | des portes qui se ferment | corps en bois, craquement, verrouillage et queue de salle voûtée en pierre |
snip | accent | couper | deux clics de lame et un shing métallique |
boing | accent | ressorts, trampolines | une note descendante oscillante |
twang | accent | une corde tendue pincée | partiels harmoniques avec oscillation de hauteur |
ding | accent | un nombre qui atterrit, un aboutissement | une cloche do6 avec des partiels inharmoniques |
Pour ajouter un effet : écrire fx_<nom>(rng, …) renvoyant un tableau mono ou stéréo à un pic unitaire (couches qui culminent ensemble, groupées pour qu'elles ne se gênent pas, un filtre mobile sur tout ce qui bouge, parties tonales en do majeur, pas de silence préalable, un fondu court à la fin), l'ajouter à FX, REL et soit ACCENT soit l'ensemble foley, ainsi qu'à SUSTAINED s'il prend dur.
Repères (dans film.mjs)
{ t: W(17) - LEAD, type: 'slam', gain: 1, stop: true } // un accent avec une baisse musicale avant
{ t: W(53) - 0.05, type: 'whir', gain: 0.8, dur: 1.4 } // un son foley soutenu
...changes(a, b, value, 0.06).map(t => ({ t, type: 'tick', gain: 0.7 })) // un tick à chaque changement de compteur
test le moment où l'attaque du son atterrit (whooshes : quand leur pic atterrit) ; le mixeur l'avance de 10 ms, jamais plus tard que l'image.gainajuste dans la limite du niveau du type (0,5 ≈ −6 dB). Chaque repère reçoit ±1,2 dB de variation aléatoire et sa propre graine de bruit, donc les répétitions ne sonnent jamais identiques.- Écrire les repères plan par plan à partir de la colonne sonore du storyboard. Chaque action visible en reçoit un ; chaque accent repose sur un temps fort narratif.
Les niveaux sont mesurés, pas devinés
sound.py normalise la voix à −16 LUFS, mesure la référence de parole (médiane du RMS sur 400 ms pendant la parole), et règle chaque effet pour que son segment le plus fort de 400 ms se situe à REL[type] dB de cette référence. Sur le premier jet v3, cela a donné aux accents une médiane de −9 dB et au foley −15 dB par rapport à la voix. Vérifier tout mix avec :
python -I recipe/tools/sfx-levels.py <outDir> <outDir>/cue-sheet.txt
Sorties
stem-voice.wav, stem-music.wav, stem-sfx.wav, mix.wav (masterisé), cue-sheet.txt (chaque effet placé avec son niveau et son intensité), et le MP4 final (H.264 copié depuis le rendu silencieux, AAC 192 kb/s).
Licence
Tout ici est synthétisé. Si le propriétaire fournit une piste musicale, il doit en détenir la licence ; la définir comme tapis à −34 LUFS sans ducking, et conserver les effets.