Ударная установка на Arduino
Для меня музыка является самым мощным триггером ностальгии, дарит возможность путешествовать во времени и переживать связанные с ней периоды жизни, снова и снова.
Знакомство с музыкой Akira Yamaoka я начал еще в начальной школе. Мой друг тоже был фанатом серии игр Silent Hill, поэтому мы были на одной волне. Прошло много лет, универ подарил мне друга, и волею судьбы наши музыкальные вкусы оказались в одном диапазоне. Школьный друг на тот момент подружился с бас гитарой. ЕОТ, которая меня ненавидела, согласилась петь. Друг начал осваивать барабаны, а я умел играть на гитаре несколько песен по табам. Так появилась на свет наша кавер-группа.
Однажды, возвращаясь с другом с очередной репетиции, нам пришла в идея собрать свою электронную ударную установку, дабы была возможность играть из дома. Ставить акустику было некуда, а электронная тогда нам была не по карману.
Мы придумывали множество концепций, но все они остались на этапе раздумий и споров.
В какой-то момент все закончилось. Больше мы не играли вместе.
Но это было чертовски классно.
Я проснулся с четким пониманием, как сделать рабочий вариант. Хотелось минимализма и возможности в любой момент разобрать все на части и перенести в другое место.
Решил не гнаться за количеством пэдов, так как все равно планировал в основном побаловаться, в лучшем случае поиграть с друзьями как в старые добрые.
Сразу забегу вперед и скажу, что ударная установка очень впечатлила, учитывая как мало ресурсов было вложено в ее создание.
Каркас
Показал концепт другу - ему сразу понравилось. Загоревшись идеей, на следующий день мы встретились и поехали по магазинам.
В качестве материала для каркаса был выбран полипропилен. Нужно было купить трубок 3 метра на 32 мм, 4 T-адаптера, 2 заглушки, пачку болтов, 6 уголков, вооружиться дрелью и каркас был готов к сборке.
В результате получился довольной устойчивый для такого небольшого количества опорных частей каркас. Во все соединения добавлялся изолон в качестве демпфера, а также использовались прорезиненные шайбы. Это было необходимо для того, чтобы колебания от ударов по одному пэду не передавались другому через каркас, создавая при этом искаженный звук. Все пэды также не должны были находиться в прямом контакте с трубками.
Пэды
Выбор пал на оргстекло.
При резке оргстекла бормашинкой повсюду летела стружка и пыль, поэтому решили просто продавить линии разреза канцелярским ножом и надломить.
Для улучшения отскока и сведения механического шума от ударов по пэдам до минимума выбрали изолон.
Классическим вариантом определения момента и силы удара в электронных ударных установках является использование пьезоэлемента.
При помощи клейкой ленты пьезо плотно легли на оптимальное в зависимости от разновидности пэда (тарелка или мембрана) место.
В целях модульности контакты пьезоэлемента вывел на гнездо типа Jack, чтобы провода не были жестко закреплены за пэдами.
Для того, чтобы при появлении натяжения проводов на клейкую ленту на место вывода проводов добавил по капле клея.
Установка пэдов
Установить пэды на каркас оставалось за малым.
Педаль басового барабана
Мы сразу сошлись во мнении, что добротно воссоздать сердце барабанной установки сложнее и дороже, нежели взять готовую педаль. Педаль небольшого размера нам обошлась примерно в 30 долларов и составила ровно половину стоимости всей ударной установки, но оно того стоило. Оставалось придумать куда прикрепить пьезо. Хамер развернули в направлении самой педали и удачно прикрутили пэд небольшого размера на место крепления к обручу басового барабана.
Педаль хай-хэта
Хотелось воссоздать эффект изменения звучания хай-хэта при помощи педали. Открыв свою коробку полезных вещей, я нашел там лишние детали от DIY конструктора радиоуправляемого краба. Собрал первое, что пришло в голову и припаял кнопку с выходом на Jack 3.5 mm.
Начинка
Для начала нужно было подобрать так называемый enclosure — корпус, в который бы поместилась Arduino Uno с кастомным шилдом и “дюжиной” Jack разъемов.
Мы с другом пришли в FixPrice, и я сразу увидел её. Она сильно выделялась среди остальных. Только она имела форму сэндвича и я сразу понял, что уйду только с ней. На кассе мне сообщили, что не могут отбить данный товар, так как его вообще там не должно было быть. Но я не сдавался. Друг уговаривал взять другую, обычную коробку. Я ждал, пока сотрудники магазина что-то решат. В итоге мне все таки продали ее по цене обычных, но она не была обычной для меня.
Был разработан Custom Shield, который подключается к ардуино при помощи припаянных ножек на протоборде.
Был выбран классический вариант с параллельным включением 6 понижающих резисторов на 1M Ohm для каждого пэда, чтобы в спокойном режиме напряжение на аналоговом входе Arduino равнялось 0.
Помимо аналоговых транзитных дорожек на плате присутствует цифровой вход для подключения педали хай-хэта. Ранее я описывал принцип педали, который заключался в использовании тактовой кнопки. В данном случае отслеживание нажатия педали основано на использовании встроенного в Arduino pull-up резистора.
Оставалось подключить разъемы к шилду.
Коннекторы были сделаны из dupont проводков, используемых с breadboard.
Провода
Запаивание 12 + 5 Jack разъемов заняло меньше времени, чем я ожидал.
Однако, удобно развесить их на установке оказалось настоящей головоломкой.
Код
Суть алгоритма состоит в том, чтобы обработать входной аналоговый сигнал с каждого пэда, распозновать факт и силу удара, сгенерировать MIDI-ноту на виртуальном драйвере и ко всему прочему определить состояние педали хай-хэта.
Выпрямленный сигнал от удара по пэду на осциллографе выглядит следующим образом:
- Устанавливаем пороговое значение, чтобы фильтровать удары по соседним пэдам и отсекать ложные срабатывания от высокочастотных вибраций;
- Фиксируем момент начала удара по пороговому значению;
- Вычисляем экстремумы для получившихся колебаний волны;
- Выбираем максимальное значение на получившейся огибающей;
- Вызываем событие нажатия ноты на MIDI-драйвере со значением, полученным на предыдущем шаге в качестве громкости;
- Передаем драйверу событие отпустить ноту.
За основу взял код от Evan Kale и добавил поддержку контроллера-педали для хай-хэт.
Скачать код можно здесь.
Подключение к компьютеру
Я использовал следующий pipeline:
- Hairless MIDI (serial-мост между Arduino и MIDI драйвером)
- LoopBe1 (виртуальный MIDI-драйвер)
- Addictive Drums VSTi Standalone
Вердикт
Для развлечения самое то. Надеваешь наушники, откидываешься в кресле и стучишь под любимые песни — настоящий кайф. Можно даже live выступления устраивать дома с друзьями.