- PVSM.RU - https://www.pvsm.ru -

Статья Митча Альтмана – изобретателя, придумавшего универсальный пульт для выключения телевизоров TV-B-Gone, и организатора хакерских конференций
Ребёнком я тянулся к музыке, и меня поражали звуки синтезатора Moog [1] с альбома 1968 года Switched-On Bach [2]. Мне необходимо было научиться извлекать такие звуки! Так началось обучение и изготовление синтезаторов длиною в жизнь, параллельно моему вхождению в техноиндустрию [3], где я в итоге сделал TV-B-Gone [4], гаджет, который позволяет вам выключать почти все модели телевизоров, управляемых с пульта. С момента обретения TV-B-Gone популярности я сделал множество наборов для изготовления забавных открытых устройств, которые я представляю по всему миру на конференциях самоделкиных [5]. На них новички обучаются паять, прокладывают себе путь в мир электроники и микроконтроллеров. Вспоминая свою молодость, я захотел обеспечить их набором, простым в сборке [6] и использовании, но при этом являющимся полноценным музыкальным синтезатором.
Так появился ArduTouch [7] стоимостью в $30. В этот проект входят одна плата, сенсорная клавиатура, ATMega328P (тот же процессор, что используется в Arduino Uno) и аудио усилитель с динамиком. У него также есть программная библиотека, которая может служить точкой входа в мир цифровой обработки сигналов.
Самой большой трудностью при разработке платы стало ограниченное количество контактов входа/выхода у ATMega328P. Я использовал 12 контактов для клавиатуры, чтобы реализовать всю хроматическую [8] музыкальную шкалу целиком. Клавиатура похожа на Stylophone [9] – один из моих любимых аналоговых синтезаторов конца 1960-х – и для распознавания использует ёмкостный датчик. Ещё два контакта используются для вывода стереозвука, а другие два – для последовательной передачи данных (ArduTouch можно программировать при помощи стандартных средств разработки [10] для Arduino, хотя для соединения с компьютером потребуется кабель FTDI). Оставшихся контактов как раз хватило для двух кнопок и двух потенциометров, управляющих синтезатором.
Чтобы человек мог сразу получить слышимые результаты после пайки, я поместил на плату чип усилителя LM386 и динамик (усилитель обходится при подключении аудио джека). ЦАП-чипы стоят дорого, поэтому я использовал широтно-импульсную модуляцию [11] для кодирования стерео аудио каналов, выходящих из ATMega328P. Фильтры нижних частот [12] на каждый канал, состоящие резистора и конденсатора, преобразуют ШИМ в аудио.
Опытные электронщики поймут, что схема ArduTouch проста. Основой проекта является сложная программная библиотека синтеза аудио, используемая для программирования ATMega328P.
Довольно просто заставить микроконтроллер выдавать простейшие ноты. Достаточно просто подсоединить динамик к контактам, и чередовать включение и выключение, отправляя квадратную волну на разных частотах (такую технологию использовал сам Алан Тьюринг в компьютере Manchester Mark II [13]). Но в результате получится резкий звук, далёкий от богатой палитры синтезатора Moog.
Чтобы улучшить звук, мне нужно было обратиться к цифровым синтезаторам. Они занимаются созданием двоичных представлений аудиоволн, их искажением и превращением этих чисел в аналоговые сигналы. Это можно сделать множеством различных способов, и я с удовольствием отмечу, что ArduTouch поддерживает довольно много разных техник, включая использование волновых таблиц (использование хранящихся в памяти сэмплов) и генерацию звуков (подсчёт аудио на лету).
После создания базовых двоичных представлений звука мы обращаемся к критически важному этапу его «искажения». Если не поиграться со звуком, обычно он получается тонким и стерильным. Прикольные звуки получаются после динамической манипуляции. ArduTouch способен применять множество цифровых динамических функций и эффектов, включая тремоло, вибрато, портаменто, а также фильтры низких и высоких частот.


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

Его могут собрать даже новички
И хотя концептуально всё вышеперечисленное не является чем-то трудным для изучения и понимания, само программирование получается довольно сложным. Библиотека ArduTouch, созданная мною вместе с моим другом Биллом Алесси, производит все вычисления низкого уровня – и на её создание у нас ушло два года.
Библиотека разработана так, чтобы быть гибкой и позволять даже неопытным пользователям создавать новые синтезаторы, выдающие разные звуки. Синтезатор Thick, комбинирующий четыре пилообразных волны идёт в комплекта, а другие синтезаторы можно скачать отдельно [14]. Опытные пользователи могут научиться, как создавать синтезаторы с нуля, вызывая функции высокого уровня. Надеюсь, что люди, которым понравится проект, создадут новые синтезаторы и поделятся со мной их кодом, чтобы я мог делиться им с другими.
Но даже при использовании синтезатора по умолчанию звук получается неожиданно хорошим для подобного маломощного микроконтроллера (поддерживающего частоту дискретизации всего в 15 кГц) и недорогого оборудования. На моём канале на YouTube [15] вы можете послушать множество демонстраций его работы.
Для развития проекта в будущем я буду продолжать улучшать библиотеку ArduTouch для Arduino и выкладывать дополнительные готовые синтезаторы. Также я работаю над созданием более мощной версии ArduTouch, подходящей для выступлений. Это уже будет не набор, но он всё равно останется совместимым с Arduino. У него будет 32-битный микроконтроллер со множеством контактов входа/выхода, ЦАП, куча памяти (что позволит использовать MIDI [16]), небольшой ЖК-экран, несколько кнопок и потенциометров, и светодиодные индикаторы – и, конечно, улучшенный звук.
Автор: Вячеслав Голованов
Источник [17]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy-ili-sdelaj-sam/302370
Ссылки в тексте:
[1] Moog: https://en.wikipedia.org/wiki/Moog_synthesizer
[2] Switched-On Bach: https://en.wikipedia.org/wiki/Switched-On_Bach
[3] вхождению в техноиндустрию: https://en.wikipedia.org/wiki/Mitch_Altman
[4] TV-B-Gone: https://www.tvbgone.com/
[5] конференциях самоделкиных: https://livestream.com/internetsociety2/hope/videos/178394812
[6] простым в сборке: https://cornfieldelectronics.com/cfe/projects/ardutouch/ArduTouchAssembly_v1.2_revC.pdf
[7] ArduTouch: https://cornfieldelectronics.com/cfe/products/buy.php?productId=synth
[8] хроматическую: https://ru.wikipedia.org/wiki/%D0%A5%D1%80%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%B3%D0%B0%D0%BC%D0%BC%D0%B0
[9] Stylophone: https://en.wikipedia.org/wiki/Stylophone
[10] стандартных средств разработки: https://github.com/maltman23/ArduTouch/blob/master/ProgrammingGuide/ArduTouchProgrammingGuide.pdf
[11] широтно-импульсную модуляцию: https://ru.wikipedia.org/wiki/%D0%A8%D0%B8%D1%80%D0%BE%D1%82%D0%BD%D0%BE-%D0%B8%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F
[12] Фильтры нижних частот: https://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80_%D0%BD%D0%B8%D0%B6%D0%BD%D0%B8%D1%85_%D1%87%D0%B0%D1%81%D1%82%D0%BE%D1%82
[13] Manchester Mark II: https://spectrum.ieee.org/tech-history/silicon-revolution/alan-turing-how-his-universal-machine-became-a-musical-instrument
[14] можно скачать отдельно: https://github.com/maltman23/ArduTouch/tree/master/Arduino
[15] канале на YouTube: https://www.youtube.com/channel/UCG4O2QlyxA-T2psXsmI5hLg?reload=9
[16] MIDI: https://en.wikipedia.org/wiki/MIDI
[17] Источник: https://habr.com/post/433212/?utm_source=habrahabr&utm_medium=rss&utm_campaign=433212
Нажмите здесь для печати.