Испанец Франко Молино любит играть на гитаре. Так как одного человека для живого концерта мало, он пошёл по пути наименьшего сопротивления и собрал DrumCube — робота-барабанщика. DrumCube представляет собой компактную механическую драм-машину, которая заменяет три основных элемента ударной установки: бас-барабан, малый барабан и хай-хет. Они управляются платой Arduino Uno, а звук проходит через три раздельные цепи усиления. Его можно подключать к усилителю, ему не нужны семплы или записи, а ещё он не прогуляет репетицию и не напьётся после концерта.
Бас-барабан
В DrumCube бас-барабан состоит из двух пьезоэлементов, по которым бьёт резиновый молоток, управляемый сервоприводом. Чтобы звук был чище и не было высоких частот, на пьезоэлементы наклеены поролоновые губки.
Звук усиливается с помощью 5 вольт от общего блока питания, проходит через фильтр нижних частот и подаётся на микшер.
Малый барабан
Для получения этого звука Франко использует банку чипсов Pringles, электретный микрофон и две барабанные палочки с управлением от сервоприводов. Так как для них необходимо время на возврат в исходное положение, Франко применил схему из двух палочек, удары которыми чередуются.
Звук передаётся через схему усиления без фильтра нижних частот, но с дополнительным усилительным каскадом.
Хай-хет
Для хай-хета музыкант выбрал транзисторный генератор белого шума и светодиодный индикатор, которые активируются с Arduino. Шум проходит через фильтр высоких частот и подаётся на микшер, где объединяется с остальными сигналами:
На микшере с помощью потенциометра можно менять уровень звука от каждого элемента.
Создание музыки
Для создания ритма Франко использует цикл из 16 тактов. Биту каждого элемента соответствует простое число:
Для паузы Франко использовал ноль, а для комбинаций — суммы:
Таким образом, цикл записывается последовательностью этих чисел. Франко сохраняет их в переменные, которую Arduino проверяет при генерации битов. Например, для популярного бразильского стиля босанова будет последовательность 6, 0, 5, 0, 8, 0, 5, 0, 6, 0, 5, 0, 8, 0, 5, 0.
Для подачи битов используется цикл длительностью 150 миллисекунд, в конце которого должны приходить биты со всех трёх элементов. Длительность можно менять, но она ограничена скоростью работы сервоприводов.
В начале цикла на сервоприводы малого барабана подаётся команда возврата в исходное положение. Сервопривод бас-барабана остаётся на месте, так как у него оба положения дают звук. Хай-хет срабатывает почти моментально, поэтому включается в конце текущего цикла и выключается через заданный интервал в начале следующего. Так как у всех элементов разное время для создания звука, для каждого вычисляется свой интервал, когда нужно подать команду на создание бита, а затем сигнал последовательно передаётся на все задействованные элементы.
Посмотреть и послушать DrumCube можно на видео:
На странице проекта можно найти историю создания, детальное описание DrumCube и код для Arduino.
Комментарии (11)
trolley813
06.06.2019 12:51Биту каждого элемента соответствует простое число
Почему 1,3,5, а не 1,2,4? Преимуществ это не дает (коррекцию ошибок какую-нибудь сделать не получается все равно), а переводить сложнее (битовых операций уже недостаточно)
iig
06.06.2019 13:35Почему 1,3,5, а не 1,2,4?
Даже в механическом музыканте должна быть некая загадочность.
inferrna
06.06.2019 14:23Не хватает аналоговой педали для регулировки темпа, а то как-то совсем бездушно играет.
IvanT
06.06.2019 16:28а ещё он не прогуляет репетицию и не напьётся после концерта.
Правильный подход. Лучше вообще заменить всех участников группы на роботов и тогда вообще никаких проблем с этими кожаными мешками. Никто никогда не напьётся, не возьмёт больничный, не уйдёт в другую группу, не состарится и не умрёт. Осталось только доработать современную технологию нейросетей, чтобы они ещё и музыку с песнями писали и вообще сплошной профит.
Javian
Наверное разницы с качественной аудиозаписью нет, но выглядит интересно для зрителей.
Assimilator
Петь и танцевать, Карл!