Хабрахабр

[Перевод] Как автор TV-B-Gone сделал музыкальный синтезатор ArduTouch

Совместимый с Arduino музыкальный инструмент, обучающий цифровой обработке сигналов

Статья Митча Альтмана – изобретателя, придумавшего универсальный пульт для выключения телевизоров TV-B-Gone, и организатора хакерских конференций

Мне необходимо было научиться извлекать такие звуки! Ребёнком я тянулся к музыке, и меня поражали звуки синтезатора Moog с альбома 1968 года Switched-On Bach. С момента обретения TV-B-Gone популярности я сделал множество наборов для изготовления забавных открытых устройств, которые я представляю по всему миру на конференциях самоделкиных. Так началось обучение и изготовление синтезаторов длиною в жизнь, параллельно моему вхождению в техноиндустрию, где я в итоге сделал TV-B-Gone, гаджет, который позволяет вам выключать почти все модели телевизоров, управляемых с пульта. Вспоминая свою молодость, я захотел обеспечить их набором, простым в сборке и использовании, но при этом являющимся полноценным музыкальным синтезатором.
Так появился ArduTouch стоимостью в $30. На них новички обучаются паять, прокладывают себе путь в мир электроники и микроконтроллеров. У него также есть программная библиотека, которая может служить точкой входа в мир цифровой обработки сигналов. В этот проект входят одна плата, сенсорная клавиатура, ATMega328P (тот же процессор, что используется в Arduino Uno) и аудио усилитель с динамиком.

Я использовал 12 контактов для клавиатуры, чтобы реализовать всю хроматическую музыкальную шкалу целиком. Самой большой трудностью при разработке платы стало ограниченное количество контактов входа/выхода у ATMega328P. Ещё два контакта используются для вывода стереозвука, а другие два – для последовательной передачи данных (ArduTouch можно программировать при помощи стандартных средств разработки для Arduino, хотя для соединения с компьютером потребуется кабель FTDI). Клавиатура похожа на Stylophone – один из моих любимых аналоговых синтезаторов конца 1960-х – и для распознавания использует ёмкостный датчик. Оставшихся контактов как раз хватило для двух кнопок и двух потенциометров, управляющих синтезатором.

ЦАП-чипы стоят дорого, поэтому я использовал широтно-импульсную модуляцию для кодирования стерео аудио каналов, выходящих из ATMega328P. Чтобы человек мог сразу получить слышимые результаты после пайки, я поместил на плату чип усилителя LM386 и динамик (усилитель обходится при подключении аудио джека). Фильтры нижних частот на каждый канал, состоящие резистора и конденсатора, преобразуют ШИМ в аудио.

Основой проекта является сложная программная библиотека синтеза аудио, используемая для программирования ATMega328P. Опытные электронщики поймут, что схема ArduTouch проста.

Достаточно просто подсоединить динамик к контактам, и чередовать включение и выключение, отправляя квадратную волну на разных частотах (такую технологию использовал сам Алан Тьюринг в компьютере Manchester Mark II). Довольно просто заставить микроконтроллер выдавать простейшие ноты. Но в результате получится резкий звук, далёкий от богатой палитры синтезатора Moog.

Они занимаются созданием двоичных представлений аудиоволн, их искажением и превращением этих чисел в аналоговые сигналы. Чтобы улучшить звук, мне нужно было обратиться к цифровым синтезаторам. Это можно сделать множеством различных способов, и я с удовольствием отмечу, что ArduTouch поддерживает довольно много разных техник, включая использование волновых таблиц (использование хранящихся в памяти сэмплов) и генерацию звуков (подсчёт аудио на лету).

Если не поиграться со звуком, обычно он получается тонким и стерильным. После создания базовых двоичных представлений звука мы обращаемся к критически важному этапу его «искажения». ArduTouch способен применять множество цифровых динамических функций и эффектов, включая тремоло, вибрато, портаменто, а также фильтры низких и высоких частот. Прикольные звуки получаются после динамической манипуляции.


ArduTouch использует относительно немного компонентов


Его могут собрать даже новички

Библиотека ArduTouch, созданная мною вместе с моим другом Биллом Алесси, производит все вычисления низкого уровня – и на её создание у нас ушло два года. И хотя концептуально всё вышеперечисленное не является чем-то трудным для изучения и понимания, само программирование получается довольно сложным.

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

На моём канале на YouTube вы можете послушать множество демонстраций его работы. Но даже при использовании синтезатора по умолчанию звук получается неожиданно хорошим для подобного маломощного микроконтроллера (поддерживающего частоту дискретизации всего в 15 кГц) и недорогого оборудования.

Также я работаю над созданием более мощной версии ArduTouch, подходящей для выступлений. Для развития проекта в будущем я буду продолжать улучшать библиотеку ArduTouch для Arduino и выкладывать дополнительные готовые синтезаторы. У него будет 32-битный микроконтроллер со множеством контактов входа/выхода, ЦАП, куча памяти (что позволит использовать MIDI), небольшой ЖК-экран, несколько кнопок и потенциометров, и светодиодные индикаторы – и, конечно, улучшенный звук. Это уже будет не набор, но он всё равно останется совместимым с Arduino.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть