Обновления
2026 год
Новые материалы и дополнения к опубликованным, по датам. Ссылки ведут прямо к изменённому месту.
RSS-лентаНет обновлений этого типа за 2026
Шаблоны C++ на коде плагина тремоло: шаблоны функций и классов, параметр-тип и параметр-число, auto в параметрах, требования к типу-аргументу, вариативные шаблоны и вывод аргументов шаблона класса. Второй раздел разбирает шаблон serialise, через который плагин сохраняет параметры в JSON и читает их обратно. Заметки на полях ведут на уроки Learn C++.
Почему цифровая нелинейная обработка даёт составляющие, которых нет у аналоговой: сочетания частот двух тонов, отражение всего, что выше fs/2, и отличие отражений от интермодуляции. Тест двумя тонами 19 и 20 кГц и измерения компрессоров Боба Каца с оговорками. Передискретизация: граница отражения, фильтры и задержка, измерения juce::dsp::Oversampling. Метод антипроизводной для tanh и его сравнение с передискретизацией, класс насыщения с передискретизацией на C++23 и JUCE.
Как нелинейная обработка без памяти добавляет гармоники: передаточная кривая, жёсткое ограничение и мягкие кривые tanh, кубическая и арктангенс, входное усиление и компенсация уровня, нечётные гармоники симметричной кривой, чётные гармоники и постоянная составляющая при смещении рабочей точки, фильтр постоянной составляющей, фильтры до и после кривой и гармоники выше частоты Найквиста. Сатурация в сведении: сравнение при одинаковой громкости и параллельная обработка. Сатуратор на C++23 и цепочка juce::dsp с WaveShaper.
Как описать любой линейный фильтр: линейность и инвариантность во времени, импульсная характеристика и свёртка, КИХ- и БИХ-фильтры, частотная характеристика с проверкой уровня −3 дБ однополюсного фильтра, передаточная функция, нули и полюсы, фазовая и групповая задержка, линейная фаза и предзвон. Биквад с формулами RBJ, добротность через радиус полюсов, прямая и транспонированная формы и фильтр переменных состояний для модуляции. Класс Biquad на C++23 и фильтры juce::dsp.
Что такое паттерн проектирования по книге банды четырёх и как устроен паттерн «посетитель»: классический пример с параметрами плагина и двойной диспетчеризацией, затем сериализация JUCE в ToVar и FromVar, где посетители выбираются при компиляции, а одна функция serialise описывает и запись, и чтение.
Стандартная библиотека C++ на коде плагина тремоло: std::optional и почему его операторы разыменования не проверяют пустоту, индекс контейнера с проверкой и без, ёмкость вектора, std::rotate, лямбды и std::function. Заметки на полях ведут на уроки Learn C++.
Краткая история эквалайзера от корректоров телефонных линий до плагинов, виды эквалайзеров, задачи эквализации и рабочие приёмы.
Как по отсчётам узнать, из каких частот состоит сигнал: сравнение с пробной синусоидой, дискретное преобразование Фурье, бины, амплитуда и фаза, симметрия спектра, разрешение по частоте, утечка и окно Ханна, быстрое преобразование Фурье, анализатор спектра, спектрограмма и обратное ДПФ. Наивное ДПФ на C++20 и анализатор на juce::dsp::FFT с передачей кадров из аудиопотока через очередь.
Что теряется при понижении разрядности тихого сигнала и как дизеринг заменяет искажения ровным шумом: RPDF и TPDF, отношение сигнал/шум и динамический диапазон 16 бит, формирование спектра шума и его цена, история алгоритмов от Meridian и Sony до POW-R и проверка на слух. По статье Боба Каца «Dither».
Что такое мастеринг и почему отправленное на завод — премастер: стеклянный мастер-диск, первый и второй оригиналы и матрицы компакт-диска, наследие грампластинки и кривой RIAA, переход от лент U-matic и CD-R к файлам DDP и требования к мастер-файлам Apple Digital Masters.
Зачем студия пишет 24 бита и сводит во float, если выпуск остаётся 16-битным: запас 48 дБ, рост длины слова и накопление ошибок округления при обработке, номинальная и эффективная разрядность АЦП, спор о 96 и 192 кГц и история перехода от CD к 24 битам.
Как линия задержки хранит прошлые отсчёты между вызовами processBlock: перевод времени в отсчёты, кольцевой буфер с индексом по остатку или маске, размер и подготовка буфера, эхо с прямой и обратной связью и время спада повторов, гребенчатый фильтр при короткой задержке, дробная задержка с линейной интерполяцией, изменение времени без щелчков, класс DelayLine на C++20 и сравнение с juce::dsp::DelayLine.
Четвёртая статья серии о простом синтезаторе: порядок вычислений голоса, параметры отдельно от состояния, общий интерфейс компонентов и класс SynthVoice, рендер ноты в juce::AudioBuffer с остановкой по огибающей, запись WAV через juce::WavAudioFormat с выбором разрядности, консольное приложение JUCE на CMake и проверки файла. Визуализация со звуком и скачиванием WAV, совпадающего с файлом программы.
Третья статья серии о простом синтезаторе: субтрактивный синтез и место фильтра после микшера, рекуррентная формула однополюсного фильтра нижних частот, коэффициент из частоты среза и постоянная времени, устойчивость, реакция на скачок, сглаживание пилы и шума и ограничения первого фильтра. Класс LowPassFilter на C++20 и сравнение с juce::dsp::FirstOrderTPTFilter.
Вторая статья серии о простом синтезаторе: события нажатия и отпускания клавиши, перевод секунд в отсчёты, четыре стадии ADSR, линейные и экспоненциальные участки с целью с перелётом, машина состояний и граничные случаи, VCA как умножение на огибающую и защита от щелчков. Класс AdsrEnvelope на C++20, голос в аудиоблоке JUCE и сравнение с juce::ADSR.
Почему записи с конца 1980-х становились громче при том же пике 0 dBFS: хронология по измерениям тысяч треков, причины, цена в микродинамике и искажениях, спор об усталости слушателя и о том, что изменила нормализация громкости.
Что пришло на смену VU-метру в цифровой студии: индикатор OVER и его пределы, соглашения 0 VU = −20, −18 и −14 dBFS, K-система Боба Каца с калибровкой мониторов на 83 дБ SPL и её место после BS.1770 и EBU R 128.
Классы и всё, что вокруг них, на коде плагина тремоло: структуры и классы, конструкторы и список инициализации, наследование и override, шаблоны и enum class, RAII, запрет копирования, перегрузка операторов, макросы JUCE, тесты на GoogleTest и лямбды. Заметки на полях ведут на уроки Learn C++.
Объём C++, нужный для чтения плагина на JUCE: как код попадает в компилятор, типы и литералы, auto, const и constexpr, явное приведение типов, пространства имён, функции, значения, ссылки и указатели, цикл по диапазону, noexcept и точка входа плагина. Примеры из учебного плагина тремоло, заметки на полях со ссылками на Learn C++, три таблицы и вопросы самопроверки.
Что меняется, когда код плагина JUCE выполняется в аудиопотоке: почему в processBlock не создают и не удаляют объекты, скрытые выделения памяти, подготовка буферов в prepareToPlay, проверка RealtimeSanitizer, обмен данными с интерфейсом через атомарные значения и очереди, подмена целого объекта через очереди указателей вместо общего владения со счётчиком ссылок, классы владения JUCE и детектор утечек. Фрагменты учебного плагина тремоло, две схемы, две таблицы и самопроверка.
Кто создаёт и удаляет объекты в плагине JUCE: стек, поля и куча, ошибки ручных new и delete, умный указатель с единственным владельцем и функция для его создания, передача параметров процессору, невладеющие ссылки и граница с хостом. Фрагменты кода учебного плагина тремоло, две схемы и самопроверка.
Исходный и обработанный сигнал в плагине: законы смешивания dry/wet, обход средствами DAW и самого плагина, компенсация задержки при выключении и кроссфейд против щелчка. Четыре схемы, таблица законов, пример на C++ и JUCE и самопроверка.
Каналы, панорама и баланс, задержка в темпе, ранние отражения и реверберационный хвост, посылы и глубина, преобразование мид-сайд и проверка стерео в моно. Две схемы, числовые примеры, термины глоссария, заметки «Подробнее» и самопроверка.
Какую громкость и какой предел истинных пиков требуют вещание в России, Европе и США и стриминговые площадки, чем различаются цели −23 LUFS и −24 LKFS, что делают Spotify, Apple Music, YouTube и Apple Podcasts с громкими и тихими треками и как это влияет на мастеринг.
Проект, дорожки и клипы, Mute и Solo, MIDI и piano roll, разница между аудио- и MIDI-клипом, путь сигнала и экспорт. Примеры программ, включая REAPER и бесплатные GarageBand и LMMS; четыре опыта со звуком.
Ноты и октавы, темп, ритм, аккорды, тональности и арпеджио для первого музыкального наброска. Восемь коротких опытов с прослушиванием.
Первое знакомство со звуком и слухом, осциллятором, ADSR и LFO, цифровой записью и файлами. Четыре простых опыта с графиками и прослушиванием.
Как лимитер держит сигнал ниже потолка: пиковый детектор, почему мгновенная атака превращает его в клиппер, предварительный анализ и его задержка, восстановление и накачка, истинный пик между отсчётами и предел −1 dBTP, сравнение с жёстким и мягким клиппером.
Первая статья серии о простом синтезаторе: отдельная фаза каждого осциллятора, алиасинг пилы и прямоугольника, поправка PolyBLEP, частота ноты MIDI, интервалы и расстройка в центах, саб-осциллятор, шум и микшер с запасом до 0 dBFS. Примеры на C++20 и JUCE.
Белый и розовый спектры, PRNG и seed, генераторы C++/JUCE с сохраняемым состоянием, уровни и отличие от TPDF-дизеринга. Эксперимент сравнивает звучание, PSD и мощность октав при одинаковом RMS.
Как управлять усилением источников, складывать отсчёты с учётом фазы и оставлять запас до перегрузки. Примеры C++/JUCE и график суммы двух синусоид.
Почему частота и уровень сигнала не полностью описывают слышимый звук, как читать кривые равной громкости и чем различаются сжатие с потерями и без них.
Уровень сигнала, громкость прослушивания, маскировка при наложении музыки и форматы файлов. Дополнительные разделы знакомят с задержкой блока и динамической обработкой.
Частота и высота тона, уровни записи, компрессия и модуляция. Разделы о LFO и тремоло объясняют действие параметров без обязательного чтения кода.
Физические свойства звука, слуховое восприятие, цифровая запись и управление динамикой. В конце — битрейт, сжатие и ограничения форматов файлов.
От звуковой волны к отсчётам в памяти, чтению файлов и обработке на C++ и JUCE. Маршрут объясняет масштаб чисел, устройство буферов и расчёт модуляции.
Чем различаются форматы AIFF, FLAC и MP3: порядок байтов, сжатие без потерь и с потерями, битрейт и экономия места.
Как прочитать отсчёт целочисленного PCM из байтов и перевести его в float и обратно без ошибок знака, масштаба и округления.
Как устроен WAV-файл: контейнер RIFF, чанки, параметры в fmt и отсчёты в data; чтение и запись.
Как слух воспринимает громкость, высоту и направление звука и какие звуки он не замечает: критические полосы и маскировка.
Как LFO меняет амплитуду звука и почему одинаковая глубина модуляции даёт разный результат в двух способах расчёта.
Математика для чтения формул об аудио: обозначения, отношения и единицы, системы счисления, тригонометрия, логарифмы и экспонента.
Как низкочастотное колебание управляет звуком: фазовый аккумулятор, формы волн и реализация на C++ и JUCE.
Как аудио представлено в программах: отсчёты, каналы, кадры, буферы, их размер и связь размера блока с задержкой.
Как напряжение превращается в числа при записи и обратно при воспроизведении: дискретизация, квантование и его ошибка.
Почему звуки разной частоты при одном уровне давления кажутся неодинаково громкими: дБ SPL, фоны, чтение кривых равной громкости.
Как компрессор уменьшает разницу между громкими и тихими местами: порог, степень сжатия, колено, атака и восстановление, лимитер и гейт.
Как описать громкость цифрового сигнала одним числом: децибелы, шкала dBFS, пиковый и среднеквадратичный уровень, динамический диапазон.
Как непрерывный сигнал превращается в отсчёты, как связаны период и частота дискретизации и что происходит при слишком низкой частоте.
Что такое звук физически: колебания давления, частота, период, длина волны, фаза и амплитуда; как звук становится аналоговым электрическим сигналом.