Трек для программиста

От звуковой волны к отсчётам в памяти, чтению файлов и обработке на C++ и JUCE. Маршрут объясняет масштаб чисел, устройство буферов, расчёт модуляции и правила кода в аудиопотоке.

7 этапов · 29 элементов

  1. Первое знакомство со звуком

    Начните с короткого обзора: послушайте частоту, формы волн, огибающую и модуляцию; познакомьтесь со слухом, цифровой записью и файлами. Затем переходите к подробным материалам маршрута.

  2. Сигнал и обозначения

    Разберите частоту, амплитуду, фазу и переход от звука к напряжению. Если формулы незнакомы, начните с математического справочника.

  3. Отсчёты и буферы

    Проследите дискретизацию и квантование, затем разберите шкалу уровня, каналы, кадры и расположение отсчётов в памяти.

  4. Байты и форматы файлов

    Прочитайте целочисленный PCM, разберите чтение WAV по чанкам и сравните способы сжатия. Перед MP3 познакомьтесь с частотной маскировкой; по желанию сначала разберите критические полосы, на которые опирается её модель.

  5. Модуляция и обработка

    Начните с пути сигнала в DAW: где на дорожке стоит плагин и почему порядок блоков меняет результат. Затем настройте уровни источников и сложите их с запасом до перегрузки; по желанию посмотрите, как сумма с короткой задержкой даёт гребенчатую фильтрацию. После этого постройте LFO, примените его к усилению в тремоло и подготовьте белый и розовый шум для синтезатора. Затем посмотрите, как плагин смешивает dry и wet и выключает обработку без сдвига во времени и щелчка. По желанию разберите, как компрессор вычисляет ослабление по уровню сигнала.

  6. Синтезатор

    По желанию начните с сообщений MIDI и равномерной темперации: что приходит в инструмент при нажатии клавиши и как полутоны связаны с частотой. Затем соберите источники одного голоса: два осциллятора с отдельными фазами, PolyBLEP против алиасинга, расстройку в центах, саб-осциллятор, шум и микшер с запасом до 0 dBFS. После этого придайте ноте форму во времени: огибающая ADSR как машина состояний по отсчётам, VCA и защита от щелчков на краях ноты. Затем ослабьте высокие частоты суммы источников: однополюсный фильтр нижних частот после микшера, коэффициент из частоты среза, постоянная времени и реакция на скачок.

  7. C++ для аудио

    Начните с языка: сборка, типы, функции, ссылки и указатели, затем классы, шаблоны и макросы JUCE. Потом разберите, кто создаёт и удаляет объекты плагина JUCE и как процессор получает параметры во владение. Затем перейдите к аудиопотоку: почему в processBlock не выделяют память, где её готовить, как проверить это санитайзером и как обмениваться данными с интерфейсом.

Поиск

Ищем по названиям, тексту статей и английским терминам. Например: «частота дискретизации», «Nyquist», «аналоговый сигнал».