Трек для программиста
От звуковой волны к отсчётам в памяти, чтению файлов и обработке на C++ и JUCE. Маршрут объясняет масштаб чисел, устройство буферов, расчёт модуляции и правила кода в аудиопотоке.
7 этапов · 29 элементов
- Статья
- Раздел статьи
- По желанию
Первое знакомство со звуком
Начните с короткого обзора: послушайте частоту, формы волн, огибающую и модуляцию; познакомьтесь со слухом, цифровой записью и файлами. Затем переходите к подробным материалам маршрута.
Сигнал и обозначения
Разберите частоту, амплитуду, фазу и переход от звука к напряжению. Если формулы незнакомы, начните с математического справочника.
Отсчёты и буферы
Проследите дискретизацию и квантование, затем разберите шкалу уровня, каналы, кадры и расположение отсчётов в памяти.
Байты и форматы файлов
Прочитайте целочисленный PCM, разберите чтение WAV по чанкам и сравните способы сжатия. Перед MP3 познакомьтесь с частотной маскировкой; по желанию сначала разберите критические полосы, на которые опирается её модель.
Модуляция и обработка
Начните с пути сигнала в DAW: где на дорожке стоит плагин и почему порядок блоков меняет результат. Затем настройте уровни источников и сложите их с запасом до перегрузки; по желанию посмотрите, как сумма с короткой задержкой даёт гребенчатую фильтрацию. После этого постройте LFO, примените его к усилению в тремоло и подготовьте белый и розовый шум для синтезатора. Затем посмотрите, как плагин смешивает dry и wet и выключает обработку без сдвига во времени и щелчка. По желанию разберите, как компрессор вычисляет ослабление по уровню сигнала.
- Первое знакомство с DAW: дорожки, MIDI и звукПуть сигнала
- Микширование сигналов: усиление, фаза и запас уровня
- Звук в пространстве: панорама, задержка, реверберация и мид-сайдМоносовместимость и короткая задержкапо желанию
- LFO: низкочастотный генератор и модуляция
- Тремоло: глубина модуляции и усиление
- Белый и розовый шум: спектр и генерация
- Dry/wet и bypass: исходный и обработанный сигнал в плагине
- Принцип работы компрессорапо желанию
Синтезатор
По желанию начните с сообщений MIDI и равномерной темперации: что приходит в инструмент при нажатии клавиши и как полутоны связаны с частотой. Затем соберите источники одного голоса: два осциллятора с отдельными фазами, PolyBLEP против алиасинга, расстройку в центах, саб-осциллятор, шум и микшер с запасом до 0 dBFS. После этого придайте ноте форму во времени: огибающая ADSR как машина состояний по отсчётам, VCA и защита от щелчков на краях ноты. Затем ослабьте высокие частоты суммы источников: однополюсный фильтр нижних частот после микшера, коэффициент из частоты среза, постоянная времени и реакция на скачок.
C++ для аудио
Начните с языка: сборка, типы, функции, ссылки и указатели, затем классы, шаблоны и макросы JUCE. Потом разберите, кто создаёт и удаляет объекты плагина JUCE и как процессор получает параметры во владение. Затем перейдите к аудиопотоку: почему в processBlock не выделяют память, где её готовить, как проверить это санитайзером и как обмениваться данными с интерфейсом.