Комментарии

Gridmaniac
Оставлен: Автоматически
Смело оставляйте комментарии, критикуйте, задавайте вопросы

Ударная установка на Arduino

Опубликовано: 27.02.2018

Для меня музыка является самым мощным триггером ностальгии, дарит возможность путешествовать во времени и переживать связанные с ней периоды жизни, снова и снова.

Знакомство с музыкой Akira Yamaoka я начал еще в начальной школе. Мой друг тоже был фанатом серии игр Silent Hill, поэтому мы были на одной волне. Прошло много лет, универ подарил мне друга, и волею судьбы наши музыкальные вкусы оказались в одном диапазоне. Школьный друг на тот момент подружился с бас гитарой. ЕОТ, которая меня ненавидела, согласилась петь. Друг начал осваивать барабаны, а я умел играть на гитаре несколько песен по табам. Так появилась на свет наша кавер-группа.

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

Мы придумывали множество концепций, но все они остались на этапе раздумий и споров.

В какой-то момент все закончилось. Больше мы не играли вместе.

Но это было чертовски классно.


Я проснулся с четким пониманием, как сделать рабочий вариант. Хотелось минимализма и возможности в любой момент разобрать все на части и перенести в другое место.

Тот самый концепт
Тот самый концепт

Решил не гнаться за количеством пэдов, так как все равно планировал в основном побаловаться, в лучшем случае поиграть с друзьями как в старые добрые.

Сразу забегу вперед и скажу, что ударная установка очень впечатлила, учитывая как мало ресурсов было вложено в ее создание.

Каркас

Показал концепт другу - ему сразу понравилось. Загоревшись идеей, на следующий день мы встретились и поехали по магазинам.

В качестве материала для каркаса был выбран полипропилен. Нужно было купить трубок 3 метра на 32 мм, 4 T-адаптера, 2 заглушки, пачку болтов, 6 уголков, вооружиться дрелью и каркас был готов к сборке.

Нижние опоры
Нижние опоры
T-адаптер для повышения устойчивости конструкции
T-адаптер для повышения устойчивости конструкции
Боковые стойки для тарелок
Боковые стойки для тарелок
Крепление боковых стоек к нижним опорам с помощью уголков
Крепление боковых стоек к нижним опорам с помощью уголков
Заглушка была приварена с помощью нагрева от газовой плиты. В заглушке просверлено отверстие и выведен болт с барашком. Для демпфинга тарелок добавили прокладку из изолона и прорезиненную шайбу.
Заглушка была приварена с помощью нагрева от газовой плиты. В заглушке просверлено отверстие и выведен болт с барашком. Для демпфинга тарелок добавили прокладку из изолона и прорезиненную шайбу.
В основной поперечной оси было просверлено 3 сквозных отверстия для пэдов, 2 по краям для крепления к боковым стойкам и 2 уголка, чтобы конструкцию не косило.
В основной поперечной оси было просверлено 3 сквозных отверстия для пэдов, 2 по краям для крепления к боковым стойкам и 2 уголка, чтобы конструкцию не косило.
Двойное соединение поперечной оси с боковой стойкой + демпфер.
Двойное соединение поперечной оси с боковой стойкой + демпфер.
По возможности использовали демпфер из изолона, прорезиненные шайбы. Для удобства разбора подобрали гайки типа Барашек.
По возможности использовали демпфер из изолона, прорезиненные шайбы. Для удобства разбора подобрали гайки типа Барашек.
Соединение боковой стойки с нижней опорой на уголки.
Соединение боковой стойки с нижней опорой на уголки.
Готовый каркас
Готовый каркас

В результате получился довольной устойчивый для такого небольшого количества опорных частей каркас. Во все соединения добавлялся изолон в качестве демпфера, а также использовались прорезиненные шайбы. Это было необходимо для того, чтобы колебания от ударов по одному пэду не передавались другому через каркас, создавая при этом искаженный звук. Все пэды также не должны были находиться в прямом контакте с трубками.

Пэды

Выбор пал на оргстекло.

Пластина белого оргстекла
Пластина белого оргстекла

При резке оргстекла бормашинкой повсюду летела стружка и пыль, поэтому решили просто продавить линии разреза канцелярским ножом и надломить.

Для улучшения отскока и сведения механического шума от ударов по пэдам до минимума выбрали изолон.

Белый лист изолона
Белый лист изолона

Классическим вариантом определения момента и силы удара в электронных ударных установках является использование пьезоэлемента.

Пьезокристалл на мембране
Пьезокристалл на мембране

При помощи клейкой ленты пьезо плотно легли на оптимальное в зависимости от разновидности пэда (тарелка или мембрана) место.

Пьезоэлементы
Пьезоэлементы

В целях модульности контакты пьезоэлемента вывел на гнездо типа Jack, чтобы провода не были жестко закреплены за пэдами.

Для того, чтобы при появлении натяжения проводов на клейкую ленту на место вывода проводов добавил по капле клея.
Для того, чтобы при появлении натяжения проводов на клейкую ленту на место вывода проводов добавил по капле клея.
На лицевую сторону при помощи того же клея для пластика был наклеен изолон.
На лицевую сторону при помощи того же клея для пластика был наклеен изолон.

Установка пэдов

Установить пэды на каркас оставалось за малым.

Место крепления.
Место крепления.
Наверх шайба + крепко завернутый барашек, чтобы пэд не разворачивало.
Наверх шайба + крепко завернутый барашек, чтобы пэд не разворачивало.
Крепление для тарелок не такое жесткое для имитации ощущений как от настоящей тарелки.
Крепление для тарелок не такое жесткое для имитации ощущений как от настоящей тарелки.

Педаль басового барабана

Мы сразу сошлись во мнении, что добротно воссоздать сердце барабанной установки сложнее и дороже, нежели взять готовую педаль. Педаль небольшого размера нам обошлась примерно в 30 долларов и составила ровно половину стоимости всей ударной установки, но оно того стоило. Оставалось придумать куда прикрепить пьезо. Хамер развернули в направлении самой педали и удачно прикрутили пэд небольшого размера на место крепления к обручу басового барабана.

Кажется, что хаммер бьет в гайку, но это не так, бьет ровно в направлении пьезо.
Кажется, что хаммер бьет в гайку, но это не так, бьет ровно в направлении пьезо.

Педаль хай-хэта

Хотелось воссоздать эффект изменения звучания хай-хэта при помощи педали. Открыв свою коробку полезных вещей, я нашел там лишние детали от DIY конструктора радиоуправляемого краба. Собрал первое, что пришло в голову и припаял кнопку с выходом на Jack 3.5 mm.

Цифровой контроллер-педаль для изменения режима звучания хай-хэта.
Цифровой контроллер-педаль для изменения режима звучания хай-хэта.

Начинка

Для начала нужно было подобрать так называемый enclosure — корпус, в который бы поместилась Arduino Uno с кастомным шилдом и “дюжиной” Jack разъемов.

Коробка для сэндвича из FixPrice. Дырку сделал я и уже после покупки.
Коробка для сэндвича из FixPrice. Дырку сделал я и уже после покупки.

Мы с другом пришли в FixPrice, и я сразу увидел её. Она сильно выделялась среди остальных. Только она имела форму сэндвича и я сразу понял, что уйду только с ней. На кассе мне сообщили, что не могут отбить данный товар, так как его вообще там не должно было быть. Но я не сдавался. Друг уговаривал взять другую, обычную коробку. Я ждал, пока сотрудники магазина что-то решат. В итоге мне все таки продали ее по цене обычных, но она не была обычной для меня.

Она была словно создана для данного проекта.
Она была словно создана для данного проекта.

Был разработан Custom Shield, который подключается к ардуино при помощи припаянных ножек на протоборде.

Скетч, созданный в программе Fritzing.
Скетч, созданный в программе Fritzing.

Был выбран классический вариант с параллельным включением 6 понижающих резисторов на 1M Ohm для каждого пэда, чтобы в спокойном режиме напряжение на аналоговом входе Arduino равнялось 0.

Для каждого аналогового входа помимо резисторов на плату были запаяны разъемы для подключения Jack 3.5 mm разъемов.
Для каждого аналогового входа помимо резисторов на плату были запаяны разъемы для подключения Jack 3.5 mm разъемов.

Помимо аналоговых транзитных дорожек на плате присутствует цифровой вход для подключения педали хай-хэта. Ранее я описывал принцип педали, который заключался в использовании тактовой кнопки. В данном случае отслеживание нажатия педали основано на использовании встроенного в Arduino pull-up резистора.

Нижний вид платы. Левые 2 пина не используются в электрической схеме, а лишь впаяны для устойчивости на момент припаивания остальных компонентов.
Нижний вид платы. Левые 2 пина не используются в электрической схеме, а лишь впаяны для устойчивости на момент припаивания остальных компонентов.
Шилд на своем месте.
Шилд на своем месте.

Оставалось подключить разъемы к шилду.

Коннекторы были сделаны из dupont проводков, используемых с breadboard.

Пластиковые детали были склеены между собой, а провода укорочены наполовину.
Пластиковые детали были склеены между собой, а провода укорочены наполовину.
Все 7 разъемов подключены коннекторами к Arduino.
Все 7 разъемов подключены коннекторами к Arduino.
Высоты немного не хватало, чтобы корпус закрывался без усилий.
Высоты немного не хватало, чтобы корпус закрывался без усилий.
Но сквозной болт с гайкой решил проблему.
Но сквозной болт с гайкой решил проблему.
Arduino закреплена на шурупах. Также выведен USB разъем для подключения к компьютеру.
Arduino закреплена на шурупах. Также выведен USB разъем для подключения к компьютеру.

Провода

Запаивание 12 + 5 Jack разъемов заняло меньше времени, чем я ожидал.

Модные красно-черные ̶д̶е̶р̶е̶в̶ь̶я̶ провода.
Модные красно-черные ̶д̶е̶р̶е̶в̶ь̶я̶ провода.

Однако, удобно развесить их на установке оказалось настоящей головоломкой.

Финальный вид.
Финальный вид.
Вид от первого лица.
Вид от первого лица.
Коммутация и все такое.
Коммутация и все такое.

Код

Суть алгоритма состоит в том, чтобы обработать входной аналоговый сигнал с каждого пэда, распозновать факт и силу удара, сгенерировать MIDI-ноту на виртуальном драйвере и ко всему прочему определить состояние педали хай-хэта.

Выпрямленный сигнал от удара по пэду на осциллографе выглядит следующим образом:

Красным показаны точки максимумов.
Красным показаны точки максимумов.
  • Устанавливаем пороговое значение, чтобы фильтровать удары по соседним пэдам и отсекать ложные срабатывания от высокочастотных вибраций;
  • Фиксируем момент начала удара по пороговому значению;
  • Вычисляем экстремумы для получившихся колебаний волны;
  • Выбираем максимальное значение на получившейся огибающей;
  • Вызываем событие нажатия ноты на MIDI-драйвере со значением, полученным на предыдущем шаге в качестве громкости;
  • Передаем драйверу событие отпустить ноту.

За основу взял код от Evan Kale и добавил поддержку контроллера-педали для хай-хэт.

Скачать код можно здесь.

Подключение к компьютеру

Я использовал следующий pipeline:

  • Hairless MIDI (serial-мост между Arduino и MIDI драйвером)
  • LoopBe1 (виртуальный MIDI-драйвер)
  • Addictive Drums VSTi Standalone

Вердикт

Для развлечения самое то. Надеваешь наушники, откидываешься в кресле и стучишь под любимые песни — настоящий кайф. Можно даже live выступления устраивать дома с друзьями.