Не надо слушать тех, кто велит тебе играть на скрипке, когда у тебя хорошо получается стучать в барабан.
Жозе Моуринью
Вступление
Просматривая на YouTube очередное видео «Дани Крастера» где он решил сделать midi электро барабаны… Убедился, что там нет абсолютно ничегошеньки сложного, а барабанов в моей домашней студии отродясь не было)
Да, в FL studio и других DAW (программы для записи музыки) вполне можно обойтись и без них, используя, например, клавиши клавиатуры, или, что еще лучше, midi пианино… Но!!!
Что может быть лучше, после тяжелого трудового дня, чем «мисить» барабанными палочками соляки по настоящим драм пэдам реального барабана?! К тому же, сила удара и экспрессия настоящего «месилова» спасут треки от однообразности) В общем…. Был свободный день субботы…
Приступим!
1) заказываем на Aliexpress! Нам нужно 6 пьезо датчиков и платка Ардуино (Arduino)

P. S. (тут NANO плата подойдет лучше, так как у нее 8 аналоговых входов) можно добавить еще пэдов или даже педали бас бочки и хай хэта. Обойдется это все примерно в 10$.
2) Идем в ближайший строительный магазин и покупаем:
Лист звукоизоляции самый дешевый, Фанерку 4мм и Суперклей. (сейчас, я бы делал основание барабанов потяжелее, например из толстенького массива дерева… Подойдет, к примеру, заготовка для разделочной доски, толщиной от 10мм, и другие ухищрения, чтобы установка меньше прыгала по столу от ударов)

3) Приступаем к сборке:
— Нарезаем квадратики из фанерки для пэдов

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

— как делаем пэды из фанеры? На одну сторону фанерки клеим звукоизоляционный (мягкий) лист, на другую, ножки из того же листа и по центру пьезодатчик. Садил все на суперклей не жалея. Каждую ножку, желательно сделать вдвое выше чем у меня, или из более мягкого листа, чтобы максимально уменьшить вибрацию основания от удара по пэду, это даст меньше ложных срабатываний у других датчиков)

Провода сквозь основание.


Подключаем каждый пьезодатчик через маленькую платку у них в комплекте к Ардуино. У каждой платки есть +, -, и S — на этом контакте появляется ток, когда пьезодатчик вибрирует (она дает только чистый сигнал). «+» подключаем к 5v разему Ардуино, «-» к GND, а «S» соединяем с входами A0, A1 … A(n).
Аппаратная часть готова!
Приступаем к программной части
int delayNum = 60; //Задержка для регулирования нескольких срабатываний
void noteOnTest (int indexNote, int trashHold) { //Функция для тестирования
Serial.print( indexNote );
Serial.print( " - " );
Serial.println( trashHold );
}
void noteOn(int cmd, int pitch, int velocity) { //Рабочая функция
Serial.write(cmd);
Serial.write(pitch);
Serial.write(velocity);
}
class Pad {
public:
unsigned short int thisPin;
unsigned short int trashHold;
bool inKikNow;
unsigned short int noteIndex;
unsigned short int counter;
Pad(int thisPinNum, int trashhold, int note){
inKikNow = false;
thisPin = thisPinNum;
trashHold = trashhold;
noteIndex = note;
counter = 0;
}
// Вся магия творится в этом лисенере
void listenPad (){
int signalPin = analogRead(thisPin);
if ( inKikNow == false && signalPin > trashHold && counter > delayNum) {
inKikNow = true;
counter = 0;
//noteOnTest(thisPin, map( signalPin, 0, 1023, 0, 100));
noteOn(0x90, noteIndex, (map( signalPin, 0, 1023, 0, 100)));
} else if ( inKikNow == true && signalPin <= trashHold && counter > delayNum){
inKikNow = false;
counter = 0;
noteOn(0x80, noteIndex, 0);
}
if(counter > 65500){
counter = delayNum+1;
}
counter++;
}
};
// Присваиваем пин, минимальную регистрируемую силу удара, Номер midi ноты
Pad pin0(0, 470, 70);
Pad pin1(1, 350, 69);
Pad pin2(2, 500, 62);
Pad pin3(3, 230, 78);
Pad pin4(4, 420, 72);
Pad pin5(5, 470, 60);
// Устанавливаем аналоговые разъемы на ВХОД
void setup() {
// initialize digital pin LED_BUILTIN as an output.
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
pinMode(A4, INPUT);
pinMode(A5, INPUT);
}
// Запускаем слушатель много много раз в секунду
// чтобы фиксировать изменения на датчиках
void loop() {
pin0.listenPad();
pin1.listenPad();
pin2.listenPad();
pin3.listenPad();
pin4.listenPad();
pin5.listenPad();
//delay(10);
}
Записываем эту программу на Arduino. (В нашем случае китайскую Ардуино. P.S. Загрузка кода в контроллер осуществляется через официальную программу Ардуино, но, с установкой специальных драйверов от китайской, обычно ссылка на эти драйвера есть на странице товара на AliExpress)
Наша плата посылает сообщения на COM порт. Теперь надо эти сигналы конвертировать в миди.
Для этого нам нужно 2 программки: LoopMidi и Hairless Midi
Открываем LoopMidi и создаем в Setup новое «Виртуальное» миди устройство. Открываем Hairless Midi и выставляем COM port куда пишет Ардуино и LoopMidi на вывод. Бьем по нашим электро барабанам и видим мигание индикаторов, значит все прошло как надо)

Наслаждаемся!
Выводы
Конечно, это не полноценные барабаны, но их вполне достаточно чтобы играть в свое удовольствие и понять, нужно ли Вам копить на профессиональный инструмент.
Стоимость их изготовления не более 15$ =)
Что я планирую с ними делать дальше?
Сделать полноценную ударную установку, полноразмерную, с «карданом» и с Hi-Hat тарелками, реагирующим на нажатие педали.
А также пере прошить процессор Arduino чтобы он определялся сразу как Midi устройство, а не использовал сторонний софт. Это уменьшит задержку и даст более законченное устройство в моей «коллекции» музыкальных инструментов =)
Всем удачи! До связи!