Оглавление:

Базовый MIDI-контроллер Arduino: 5 шагов
Базовый MIDI-контроллер Arduino: 5 шагов

Видео: Базовый MIDI-контроллер Arduino: 5 шагов

Видео: Базовый MIDI-контроллер Arduino: 5 шагов
Видео: 10. Миди контроллер на Arduino Nano|Arduino| Midi 2024, Май
Anonim
Базовый MIDI-контроллер Arduino
Базовый MIDI-контроллер Arduino

Вступление:

Я новичок в работе с Arduino, но надеюсь расширить свои знания, обучая других и получая отзывы. Это очень простой MIDI-контроллер с 4 кнопками и потенциометром. Схема этого проекта выглядит так:

1. Соберите макетную плату.

2. Загрузите эскиз в Arduino.

3. Знакомство с MIDI без волос и внутренним циклом MIDI (loopbe1)

4. направьте свой MIDI в DAW (Ableton)

Запасы

1 х Arduino Mega 2560

1 х Хлебная доска

1 х USB-кабель

1 х потенциометр

4 x кнопки такта

4 резистора по 120 Ом

14 х соединительных кабелей для макета

Шаг 1: Сборка макета

Создание макета
Создание макета
Создание макета
Создание макета

Подключите макетную плату так, чтобы все компоненты соответствовали изображению 1 выше. Каждая кнопка должна выглядеть так же, как на изображении 2. Входы кнопок - 2, 3, 4 и 5 на Arduino, а средний вывод потенциометра подключен к АНАЛОГОВОМУ входу A0.

Шаг 2: загрузка эскиза

Загрузка эскиза
Загрузка эскиза

Скопируйте и вставьте приведенный ниже код в IDE Arduino. Выберите правильную плату в разделе «Инструменты» и загрузите эскиз в Arduino.

byte noteON = 144; // обратите внимание на командуbyte note; // хранилище для текущей проигрываемой ноты int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = LOW; // порядок текущего состояния кнопки boolean lastState = LOW; // сохранение последнего состояния кнопки void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, ВХОД); pinMode (buttonPin3, ВХОД); pinMode (buttonPin4, ВХОД); // на этот раз мы установим вывод как INPUT Serial.begin (9600); // инициализируем последовательное соединение} void loop () {int PotVal = analogRead (potPin); скорость байта = карта (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // включаем ноту 60 с задержкой скорости 127 (200); // грубая форма дебонирования кнопки} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // отключаем ноту 60 delay (2); // грубая форма отключения кнопки} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// если кнопка была только что нажата MIDImessage (noteON, 61, velocity); // включаем ноту 60 с задержкой скорости 127 (200); // грубая форма кнопки debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // отключаем задержку примечания 60 (2); // грубая форма отключения кнопки} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// если кнопка была только что нажата MIDImessage (noteON, 62, velocity); // включаем ноту 60 с задержкой скорости 127 (200); // грубая форма кнопки debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // отключаем задержку примечания 60 (2); // грубая форма отключения кнопки} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// если кнопка была только что нажата MIDImessage (noteON, 63, velocity); // включаем ноту 60 с задержкой скорости 127 (200); // грубая форма кнопки debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // отключаем задержку примечания 60 (2); // грубая форма отключения кнопки} lastState = currentState; } // отправить сообщение MIDI void MIDImessage (байтовая команда, байтовые данные1, байтовые данные2) {Serial.write (команда); Serial.write (данные1); Serial.write (данные2); }

Я все еще новичок в написании кода в целом … … те, у кого немного больше опыта, вероятно, могли бы это исправить …

Шаг 3: понимание MIDI без волос и внутренних MIDI-петель

Понимание MIDI без волос и внутренних MIDI-петель
Понимание MIDI без волос и внутренних MIDI-петель
Понимание MIDI без волос и внутренних MIDI-петель
Понимание MIDI без волос и внутренних MIDI-петель
Понимание MIDI без волос и внутренних MIDI-петель
Понимание MIDI без волос и внутренних MIDI-петель

Arduino должен работать через последовательный мост, такой как Hairless MIDI, а затем через внутренний MIDI-цикл, такой как loopbe1 (или шину IAC для Mac).

Примечание: вы не можете загрузить скетч в Arduino, пока он подключен к последовательному мосту MIDI без волос.

Выберите свой Arduino в последовательном порте MIDI без волос и шину loopbe1 или IAC в MIDI-выходе.

Примечание: убедитесь, что отключение звука не включено при использовании loopbe1.

Шаг 4: Подключение к вашей DAW

Подключение к вашей DAW
Подключение к вашей DAW

Если вы получаете сигнал в приложение Hairless MIDI при нажатии кнопки на макете (индикаторы будут мигать), вы сможете отправлять MIDI-данные в DAW. Я использовал Ableton, но любая DAW должна работать. Убедитесь, что ваш внутренний MIDI-цикл (loopbe1) включен в ваших настройках DAW (в Ableton вы хотите, чтобы «трек» был включен). Затем выберите один из входов MIDI-треков в MIDI-петлю (loopbe1), как показано на изображении выше.

Шаг 5: Играйте

Image
Image

Теперь кнопки будут работать как любой другой MIDI-контроллер! Потенциометр изменит скорость нот, отправляемых в DAW. На видео (очень мрачном…) выше показан звук рояля в действии!

Рекомендуемые: