# Атмосфера и J-cut: звук приходит раньше картинки

```bash
python scripts/render_audio_layers.py cut.mp4 out.mp4 \
  --broll-plan broll_plan.json --ambience room_tone --j-lead 0.55
```

Два приёма, которых в скилле не было и без которых монтаж читается как
любительский, сколько ни улучшай картинку.

## 1. Атмосферный слой

Между фразами в тесно нарезанной речи наступает **цифровая тишина** — ровный
ноль, которого не бывает ни в одной комнате мира. Зритель не осознаёт это как
дефект, но слышит запись как дешёвую.

Слой комнаты на −36 дБ относительно измеренного голоса убирает провал. Его не
слышат — слышат его отсутствие.

Шесть атмосфер синтезируются вместе с остальным паком:

| Звук | Под что |
|---|---|
| `room_tone` | универсальный, под любой разговор |
| `electronics_hum` | железо, видеокарты, лаборатория |
| `server_room` | серверы, данные, сети |
| `keyboard_typing` | код, монтаж, работа за компьютером |
| `city_distant` | улица, люди, город |
| `tension_bed` | напряжённый блок; тянется, но не нарастает |

Все зациклены по построению: хвост сшит с головой кроссфейдом **внутри
буфера**, иначе на стыке петли слышен щелчок. Щелчки в `keyboard_typing`
расставлены неровно — ровный ритм читается как метроном, а не как работа.

## 2. J-cut

У прямой склейки звук и картинка меняются одновременно. В жизни так не бывает:
сначала слышишь голос коллеги, потом поворачиваешься. Слух ведёт внимание,
зрение догоняет.

По опубликованным разборам монтажа смещение **20–30% склеек** уже читается как
кинематографичное, а безопасная зона смещения — **от полусекунды до двух**.
Больше начинает восприниматься как рассинхрон.

### Речь не смещается никогда

Это важно и это ограничение, а не недоработка. Голос спикера обязан оставаться
в липсинке с губами — прямой запрет нулевой аксиомы. J-cut на речи сломал бы
именно то, ради чего построена вся пословная шкала.

Смещается **атмосфера перебивки**. Гул железа под кадром видеокарты, щелчки
клавиш под кадром кода начинаются за полсекунды до того, как картинка
переключится. Тогда переход на вставку звучит как **причина**, а не как
следствие: зритель уже услышал, что сейчас будет, и картинка подтверждает.

### Как выбирается атмосфера

По понятию, которое `harvest_broll.py` записал в поле `concept`. Если план
писали руками и поля нет — понятие выводится из текста привязки теми же
образцами, что использует сборщик. Связка не должна рваться из-за отсутствия
одного поля: на первом же реальном проекте план был написан вручную, и без
запасного пути J-cut'ов вышло ноль.

## Уровни

Считаются от **измеренной громкости голоса**, а не от полной шкалы — то же
правило, что и у шины SFX. Атмосфера −36 дБ под голосом, слой перебивки −26 дБ.
Итоговое выравнивание всё равно делает `audio_fx.py` одним последним проходом.

## Порядок

Слой ставится **после** перебивок и графики, но **до** музыки: музыкальный бас
меряет громкость голоса, и если атмосфера добавится после, бас окажется
относительно другого уровня, чем считал.
