Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <MIDI.h> // подключаем библиотеку для работы с MIDI.
- int sensor = A6; // пин, куда подключен пьезоэлемент для снятия ударов с барабана.
- int last, value; // переменные для хранения данных о силе удара.
- boolean noteOn; // булево, для хранения значения о текущем состоянии ноты.
- unsigned long last_time; // переменная для таймера.
- MIDI_CREATE_DEFAULT_INSTANCE(); // настраиваем MIDI.
- void setup() {
- MIDI.begin(1); // запускаем MIDI.
- Serial.begin(115200); // открываем порт.
- }
- void loop() {
- if (value != last && value > 15) { // отправляем данные только при изменении + защита от микровибраций датчика.
- noteOff(); // отключаем ноту, если была включена.
- MIDI.sendNoteOn(38, map(value, 16, 1023, 15, 127), 1); // включаем ноту с нужной силой удара.
- noteOn = true; // сохраняем данные о включенной ноте.
- last = value; // записываем значение предыдущей силы удара.
- }
- if (millis() - last_time > 250) { // каждые 250 миллисекунд
- noteOff(); // отключаем ноту, если была включена.
- last_time = millis(); // сбрасываем счётчик.
- }
- delay(20); // задержка для стабильности работы.
- }
- void noteOff() { // функция для отключения ноты.
- if (noteOn == true) { // если нота была включена
- MIDI.sendNoteOff(38, 64, 1); // выключаем
- noteOn = false; // сохраняем информацию.
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement