
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

Вступление:
Я новичок в работе с 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-петель



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

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


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

NAIN 1.0 - базовый робот-гуманоид, использующий Arduino: Nain 1.0 будет иметь в основном 5 съемных модулей: 1) Arm - которым можно управлять с помощью сервоприводов. 2) Диски - которым можно управлять с помощью двигателей постоянного тока. 3) Нога - Наин сможет переключаться между колесами или ногами для движения. 4) Голова и
Funbot - базовый моторизованный расширяемый робот: 7 шагов

The Funbot - базовый моторизованный расширяемый робот: Всем привет. Сегодня я собираюсь показать вам, как построить FunBot - сверхлегкого моторизованного робота, который может торчать, рисовать узоры, вращаться и превращаться в колесного бота. Он расширяем с помощью деталей, реле и даже микроконтроллеров, но это освещает
Базовый ПК Arduino с выходом VGA: 5 шагов (с изображениями)

Базовый компьютер Arduino с выходом VGA: в моем предыдущем руководстве я показал, как построить 8-битный компьютер в стиле ретро, работающий на BASIC, с помощью двух Arduino и с выходным сигналом в черно-белом для экрана телевизора. Сейчас я покажу, как собрать такой же компьютер, но с выходным сигналом в
Базовый ПК Arduino с ТВ-выходом: 5 шагов (с изображениями)

Базовый ПК Arduino с ТВ-выходом: в этой инструкции я покажу, как построить 8-битный ретро-компьютер под управлением BASIC с помощью двух Arduino и нескольких других компонентов. Вы можете вводить переменные и программу BASIC с клавиатуры PS2, и результат отображается на мониторе с
Базовый детектор землетрясений Arduino: 7 шагов (с изображениями)

Базовый детектор землетрясений Arduino: Tiny9 вернулся, и сегодня мы собираемся создать простой детектор землетрясений Arduino. Пожалуйста, посетите мой инструктаж по взаимодействию с LIS2HH12 от Tiny9 по приведенной ниже ссылке, чтобы настроить устройство, поэтому все, что вам нужно сделать, это добавить 3 резистора и 3 светоизлучателя