[Из песочницы] Гитарные эффекты: алгоритмы, первый опыт аппаратной реализации
В статье присутствует описание некоторых гитарных эффектов, а также свод полученного нами при разработке гитарного процессора горького опыта. Кстати, гитарный процессор мы разрабатывали в качестве курсового проекта в университете.
Что такое гитарные эффекты? Для чего они нужны? Пусть следующее видео ответит за нас:
Теоретическая часть
Ниже приведена классификация эффектов в зависимости от особенностей их реализации:
1) Фильтры – ФНЧ, ФВЧ, полосовой фильтр, эквалайзер
2) Параметрические фильтры – wah-wah (квакушка), фейзер
3) Эффекты над линией задержки – vibrato, flanger, chorus, echo
4) Модуляторы – tremolo, vibrato
5) Нелинейные эффекты – overdrive, distortion, fuzz
6) Пространственные эффекты – reverb
Фильтры
Фильтры, по определению, удаляют часть спектра выше или ниже частоты среза. Для многих ситуаций это слишком грубое вмешательство.
Эквалайзер, с другой стороны, усиливает или ослабляет определенные частотные полосы, не меняя остаток спектра. Эквалайзеры строятся на сериях shelving- и peak-фильтров.
Ниже приведен список часто используемых фильтров:
- Lowpass filter
- Highpass filter
- Bandpass filter
- Bandreject filter
- Shelving filter
- Peak filter
Параметрические фильтры
Некоротые эффекты можно реализовать, меняя параметры простых фильтров с течением времени.
Эффект «Wah-wah» – это узкий bandpass-фильтр, в котором центральная (резонансная) частота перемещается со временем. Фильтрованный звук смешивается с оригинальным.
Эффекты над линией задержки
Все эффекты этого класса объединяет один принцип работы. Входной сигнал сохраняется в участке памяти, которая здесь назыается линией задержки (delay line). На выход же подается сумма входной выборки и выборки откуда-то из линии задержки. Количество и места выборок из линии задержки определяют уникальное звучание эффекта.
Эффекты, которые не сохраняют результат своей работы в линию задержки (т. е. там содержится только чистый входной сигнал) описываются фильтрами с конечной импульсной характеристикой. Эффекты, изменяющие линию задержки, описываются фильтрами с бесконечной импульсной характеристикой.
Эффект «Flanger» – выборка из линии задержки происходит в районе от 0 до 15 мс, причем точное место определяется по низкочастотному (около 1 Гц) синусоидальному закону. Использование низкочастотных синусоид – популярная техника при создании эффектов и имеет собственное название – Low Frequency Oscillator или просто LFO.
Эффект «Echo» – одна или несколько выборок на одинаковом расстоянии, более 50 мс. Вариант с одной выборкой позволяет фактически удвоить количество сыгранных нот. При помощи нескольих выборок можно имитировать игру в просторном помещении. Аналогичной цели достигает так же эффект «Reverb», но о нем позже.
Эффект «Chorus» – имитация игры нескольких инструментов. Несколько выборок (по количеству инструментов) на случайном расстоянии в 10-25 мс.
Модуляция
Модуляция – это процесс, при котором параметры синусоидального сигнала (амплитуда, частота и фаза) меняются на основе аудиосигнала.
Амплитудная модуляция определяется как
y(n) = (1 + a LFO(n)) x(n),
где а – глубина модуляции, число от 0 до 1.
Эффект «Tremolo» – амплитудная модуляция звука с LFO до 20 Гц.
Нелинейные эффекты
Суть нелинейных эффектов сводится к внедрению в звук новых гармоник. Нелинейная обработка звука позволяет, к примеру, ослабить громкие участки, чтобы последующая аппаратура не вносила нежелательных искажений (или чтобы не разбудить соседей при просмотре фильма); усилить тихие участки, делая звук более насыщенным.
Однако, такие фильтры не входят в рамки статьи, поэтому в этом разделе мы сосредоточимся на линейке из трех схожих, очень гитарных, очень эффектных эффектов – overdrive, distortion, fuzz. По сути, это один эффект с разной силой и разными целями.
Овердрайв Вы могли услышать в начале статьи. Как звучит его старший брат, король металла – дисторшн, можно узнать под спойлером.
Реализция этого эффекта проста, и в то же время полна хитростей, что делает создание хорошего дисторшна своего рода искусством. В основе эффекта лежит простая идея – звуки слишком высокой амплитуды должны быть обрезаны. Поначалу это был нежелательный эффект от выхода электронных компонентов в нелинейные режимы работы, но со временем музыканты начали использовать это в своих интересах.
Практическая часть: попытка аппаратной реализации
Первым делом мы решили сделать “седцем” нашей системы Arduino. Этот выбор был обусловлен тем, что опыта работы с другими микроконтроллерами / микропроцессорами у нас практически не было. С arduino мы были хорошо знакомы. Также подкупила простота этой платформы.
Для обработки гитарного сигнала в цифровом виде необходим АЦП/ЦАП. Скромные АЦП/ЦАП, присутствующие на Arduino Mega, нам не подходили из-за малой разрядности. Было решено использовать внешний кодек. Выбор пал на cirrus logic CS4270.
При первом же тесте взаимодействия с кодеком стало ясно, что arduino для наших целей не подойдёт. Предельная частота, с которой мы смогли обмениваться с кодеком данными (принимать оцифрованный сигнал с АЦП, затем без обработки передавать его на ЦАП) составила ~20 кГц. Такая частота является недостаточной для обработки звука.
FreeDSP
Разочаровавшись в возможностях arduino, мы перешли в стадию поиска DSP (DSP — Digital signal processor, специализированный микропроцессор, предназначенный для цифровой обработки сигналов). На просторах интернета был найден проект FreeDSP (http://freedsp.cc/). Информации о нём совсем немного, не считая официального сайта.
FreeDSP — недорогое решение для цифровой обработки сигналов в режиме реального времени, предназначенное для исследователей и DIY сообщества. Плата базируется на ADAU 1701 DSP. Программирование ADAU 1701 осуществляется в SigmaStudio IDE. Более подробную информацию о проекте можно найти по адресу http://www.freedsp.cc/.

Создатели проекта предлагают за скромную сумму приобрести у них все комплектующие для сборки. Однако мы решили сделать всё самостоятельно. Благо на сайте проекта присутствуют все необходимые схемы, а также списки комплектующих. Фотографии процесса сборки можно увидеть под спойлером.

Итак, freeDSP собран, и даже не воспламеняется при включении в розетку.

Мы уже готовы были открывать шампанское, но далее нас ожидала серия проблем. На сайте freeDSP есть весьма подробное руководство по запуску проекта, однако сделав всё в точном соответствии с ним, перепроверив множество раз каждый пункт, freeDSP отказывался даже выдавать сигнал гитары на выход.
Потратив большое количество времени на перепайку нового ADAU, а также на проверку всевозможных неисправностей, проблема всё же была найдена. Оказалось, что файл, который выдаёт Sigma Studio в формате .hex при компиляции проекта, на самом деле является текстовым файлом. В руководстве по FreeDSP это никак не упоминалось. Следовательно, пришлось использовать специальные утилиты для преобразования текстового .hex файла в бинарный .hex, который используется программаторами. Одна из таких утилит преобразует исходный файл в intel hex формат, который используется большинством программаторов. Данная проблема не описана в руководстве к freeDSP, что в свою очередь влечёт массу проблем для разработчиков.
Итак, мы всё же заставили freeDSP работать. Теперь пару слов про программирование: ADAU 1701 загружает программу с EEPROM при запуске. Программирование, как было упомянуто ранее, выполняется в IDE Sigma Studio. Используется графический язык разработки, который отлично заточен под обработку сигналов.
Но следующая проблема не заставила себя долго ждать. Оказалось, что freeDSP не может взаимодействовать с какой-либо внешней памятью. Внутренней же памяти ему хватает лишь на delay длиной в 20ms. К сожалению, этот нюанс мы обнаружили слишком поздно. Для большинства гитарных эффектов память является необходимым условием. В связи с этим, freeDSP был положен на полку до лучших времён.
Наши выводы о работе с freeDSP: данная плата является отличным вариантом в том случае, если вы собираетесь делать обработку звука, не предполагающую наличие памяти (напр. эквалайзер). Среда разработки проста в освоении. Сборка платы также не вызывает особых затруднений. Что касается стоимости — на сайте freeDSP указана цена в 65 евро за компоненты, однако если приобретать всё самостоятельно — можно немного сэкономить.
Заключение
В конечном итоге нам всё же удалось сделать скромный гитарный процессор, однако финальная версия в корне отличалась от планируемой изначально и заслуживает отдельной статьи. Часть возможностей процессора показана на видео:
Надеемся, что данной статьёй мы поможем людям, начинающим разработку собственных гитарных эффектов, избежать тех граблей, на которые наступили мы.



Пентагон полностью очищает свои системы от ИИ Anthropic ради национальной безопасности США
Huawei анонсировала внешний аккумулятор на 12 000 мА·ч с двусторонней 100-ваттной зарядкой и офлайн-поиском
Землю накроет облако плазмы: ожидается магнитная буря
Qualcomm Snapdragon 8 Elite Gen 6 станет первым в мире мобильным процессором с рекордной частотой 5 ГГц
Ультратонкие рамки и уникальный дисплей: Oppo Find X10 оснастят OLED-панелью Tianma с яркостью 2000 нит и 95% охватом BT.2020
Thunderobot обновила линейку игровых ноутбуков 911: процессоры Intel 13-го поколения и графика RTX 5050 в топовой версии
В России наладят серийное производство печатных плат для смартфонов и серверов
Анонсирован Mac Studio на чипе M5 Ultra — самый производительный Mac в истории за $5500