Нормализация 🥴
Продолжаю ковырять свой плеер под мак, тот самый, который я делаю похожим на AIMP. На этот раз взялся за громкость. И не за регулятор, а за то, почему один трек сносит голову, а следующий приходится выкручивать.
Нормализация по амплитуде отвечает на насколько ровно звучит внутри одного трека. Живой регулятор, который следит за сигналом и всё время подкручивает. Он несимметричен. Если громче нужного, то усиление убирается мгновенно, иначе сигнал вылетит за верхний край, а там его уже ничем не спасти. Если тихо, то добавляется медленно, и не сразу. Какие плавающие коффициены у AIMP мне неизвесты. Я подбирал работу по одному и тому же треку + специальная генерированная звуковая волна (full-scale peak test signal) и смотря на текущие цифры нормализации по амплитуде у АIMP.
Replay gain - меряется воспринимаемая громкость по тому же стандарту, по которому её меряют на телевидении и в стриминговых сервисах. Частоты взвешиваются так, как их слышит ухо, а тихие паузы из подсчёта выбрасываются, чтобы вступление и затихание не занижали результат. Дальше арифметика, разница между намеренным и общим опорным уровнем является поправкой. Тихий трек поднимают, громкий опускают.
"Анализ файла на лету" я сознательно пока не стал тащить. Надо либо у Артёма узнавать, как он это сделал. Либо так же эмпирически мерить, на что у меня честно не хватило сил и терпения )) В общем, задачку и доработку оставил на будущее.
Когда включены обе. Нормализация по амплитуде знает, сколько добавила Replay gain, и опускает свою планку ровно на столько же. Итог попадает туда, куда просили.
Бонусом оставил то, чего нет в AIMP - "живая полоска" со шкалой в децибелах. Показывает - что обе нормализации сделали с треком. Добавлял как временную штуку для визуального контроля, но решил оставить навсегда.
Пока всё это делал, наткнулся на пост на форуме AIMP, где там чел долго не мог понять, как ему измерить и в теги сохранить track gain и решил на всякий добавить у себя галочку записи замеров в теги сразу же после измерения ))