Advertisement
Guest User

Arduino USB MIDI Drum

a guest
Nov 19th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.88 KB | None | 0 0
  1. #include <MIDI.h> // подключаем библиотеку для работы с MIDI.
  2.  
  3. int sensor = A6; // пин, куда подключен пьезоэлемент для снятия ударов с барабана.
  4. int last, value; // переменные для хранения данных о силе удара.
  5. boolean noteOn; // булево, для хранения значения о текущем состоянии ноты.
  6. unsigned long last_time; // переменная для таймера.
  7.  
  8. MIDI_CREATE_DEFAULT_INSTANCE(); // настраиваем MIDI.
  9.  
  10. void setup() {
  11.   MIDI.begin(1); // запускаем MIDI.
  12.   Serial.begin(115200); // открываем порт.
  13. }
  14.  
  15. void loop() {
  16.   if (value != last && value > 15) { // отправляем данные только при изменении + защита от микровибраций датчика.
  17.     noteOff(); // отключаем ноту, если была включена.
  18.     MIDI.sendNoteOn(38, map(value, 16, 1023, 15, 127), 1); // включаем ноту с нужной силой удара.
  19.     noteOn = true; // сохраняем данные о включенной ноте.
  20.     last = value; // записываем значение предыдущей силы удара.
  21.   }
  22.   if (millis() - last_time > 250) { // каждые 250 миллисекунд
  23.     noteOff(); // отключаем ноту, если была включена.
  24.     last_time = millis(); // сбрасываем счётчик.
  25.   }
  26.   delay(20); // задержка для стабильности работы.
  27. }
  28.  
  29. void noteOff() { // функция для отключения ноты.
  30.   if (noteOn == true) { // если нота была включена
  31.     MIDI.sendNoteOff(38, 64, 1); // выключаем
  32.     noteOn = false; // сохраняем информацию.
  33.   }
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement