В статье присутствует описание некоторых гитарных эффектов, а также свод полученного нами при разработке гитарного процессора
Что такое гитарные эффекты? Для чего они нужны? Пусть следующее видео ответит за нас:
Теоретическая часть
Ниже приведена классификация эффектов в зависимости от особенностей их реализации:
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 евро за компоненты, однако если приобретать всё самостоятельно — можно немного сэкономить.
Заключение
В конечном итоге нам всё же удалось сделать скромный гитарный процессор, однако финальная версия в корне отличалась от планируемой изначально и заслуживает отдельной статьи. Часть возможностей процессора показана на видео:
Надеемся, что данной статьёй мы поможем людям, начинающим разработку собственных гитарных эффектов, избежать тех граблей, на которые наступили мы.
Комментарии (9)
sim2q
20.06.2016 15:50интересно!
ps у нас валяются ADAU1401, всё никак не добъём проект, плату правда хочу ЛУТом сделать :)
думаю — пока соберемся, ещё поколение dsp пройдёт:)
madf
20.06.2016 16:24Sigma Studio позволяет использовать только готовые компоненты (ручки крутить, ползунки двигать) или можно описать какую-то логику обработки аналогового сигнала, программирование, язык там есть?
madf
20.06.2016 16:35Я с звуком пробовал работать через другое семейство AVR — XMega, правда пришлось вешать внешний АЦП (16-бит). Кстати говоря, для моно его вполне хватало на частоте выше 74К, вот для стерео и работу с I2S (т.к. все нормальные звуковые ЦАП-ы работают на ней) — тяжко, пришлось разгонять контроллер. Впрочем я пока этот проект забросил, лежит ждет своего времени. Делал я правда немного другое, не эффекты (более обыденную вещь), но подобным образом для начало поигрался (задержкой).
Crapachi
Дааа, с текущем курсом доллара, когда не самый лучший проц стоит 50т.р., их теперь только самому и собирать :D Теперь только не хватает статей про паяния педалек и крафт гитар :)
musicriffstudio
уже внутри браузера делают:
http://dashersw.github.io/pedalboard.js/demo/
даже паять ничего не надо
Einherjar
Это баловство. Из нормальных решений существует peavey revalver на PC, там реально хороший звук в отличие от всяких гитарригов и прочего шлака включая не самые лучшие процы до 50тр, а возможностей, особенно при подключении как vst к какому-н sonar, больше как ни крути чем у большинства «железных» процессоров.