Съдържание:
- Консумативи
- Стъпка 1: Изграждане на макета
- Стъпка 2: Качване на скицата
- Стъпка 3: Разбиране на MIDI и вътрешни MIDI контури без коса
- Стъпка 4: Свързване към вашия DAW
- Стъпка 5: Играйте
Видео: Основен MIDI контролер на Arduino: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Въведение:
Аз съм нов в работата с Arduino, но се надявам да разширя знанията си, като преподавам на другите и получавам обратна връзка. Това е много основен MIDI контролер с 4 бутона и потенциометър. Очертанията на този проект изглеждат така:
1. Изградете макета
2. Качете скицата в Arduino
3. Разберете MIDI без коса и вътрешен MIDI контур (loopbe1)
4. насочете вашия MIDI към DAW (Ableton)
Консумативи
1 x Arduino Mega 2560
1 х дъска за хляб
1 x USB кабел
1 x потенциометър
4 x бутони Tact
4 x 120Ohm резистора
14 x джъмперни кабели за макет
Стъпка 1: Изграждане на макета
Свържете своя макет, така че всички компоненти да съвпадат с изображение 1 по -горе. Всеки бутон трябва да изглежда същият като на изображение 2. Входовете на бутоните са 2, 3, 4 и 5 на Arduino, а средният щифт на потенциометъра е свързан към ANALOG вход A0.
Стъпка 2: Качване на скицата
Копирайте и поставете кода по -долу в Arduino IDE. Изберете правилната дъска под „инструменти“и качете скицата в Arduino.
байт бележкаON = 144; // бележка на бележка за команден байт; // място за съхранение на текуща нота 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, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // този път ще зададем щифта като INPUT Serial.begin (9600); // инициализираме Serial connection} 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 (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 (data1); Serial.write (data2); }
Все още съм много нов в писането на код като цяло ….. тези с малко повече опит вероятно биха могли да изчистят това …
Стъпка 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 искате "track" да бъде активиран). След това изберете един от вашите MIDI входове за запис към MIDI контура (loopbe1), както е показано на изображението по -горе.
Стъпка 5: Играйте
Бутоните вече ще работят като всеки друг MIDI контролер! Потенциометърът ще промени скоростта на нотите, изпращани до DAW. (Много тъмният …) видеоклип по -горе показва звук на роял в действие!
Препоръчано:
Основен урок за Arduino Bluetooth: 6 стъпки (със снимки)
Основен урок за Bluetooth на Arduino: АКТУАЛИЗИРАНЕ: АКТУАЛИЗИРАНАТА ВЕРСИЯ НА ТАЗИ АРТИКУЛ МОЖЕ ДА НАМЕРИТЕ ТУК Всеки път, когато сте мислили да управлявате каквито и да е електронни устройства с вашия смартфон? Управлението на вашия робот или на други устройства с вашия смартфон ще бъде наистина страхотно. Ето един прост и басов
Arduino базиран DIY контролер за игри - Arduino PS2 контролер за игри - Възпроизвеждане на Tekken с DIY Arduino геймпад: 7 стъпки
Arduino базиран DIY контролер за игри | Arduino PS2 контролер за игри | Игра на Tekken с DIY Arduino геймпад: Здравейте момчета, играта на игри винаги е забавна, но играта със собствения си DIY персонализиран контролер на играта е по -забавна. Така че ще направим контролер за игра, използвайки arduino pro micro в тази инструкция
YABC - Още един контролер на Blynk - IoT облачен контролер за температура и влажност, ESP8266: 4 стъпки
YABC - Още един контролер на Blynk - IoT облачен контролер за температура и влажност, ESP8266: Здравейте производители, наскоро започнах да отглеждам гъби у дома, гъби стриди, но вече имам 3 пъти от тези контролери у дома за контрол на температурата на ферментатора за моята домашна напитка, съпруга също прави това нещо Комбуча сега и като термостат за топлина
MIDI 5V LED лентов контролер за Spielatron или друг MIDI синтезатор: 7 стъпки (със снимки)
MIDI 5V LED Strip Light Controller за Spielatron или друг MIDI синтезатор: Този контролер мига трицветни LED ленти за 50mS на бележка.Синьо за G5 до D#6, червено за E6 до B6 и зелено за C7 до G7. Контролерът е ALSA MIDI устройство, така че MIDI софтуерът може да извежда към светодиодите едновременно с MIDI синтезатор
Разбъркване на NES контролер (Nintendo контролер MP3, V3.0): 5 стъпки (със снимки)
Разбъркване на контролера на NES (Nintendo Controller MP3, V3.0): Напълно изтръгнах ryan97128 от неговия дизайн за Nintendo Controller MP3, версия 2.0 и чувам, че той е получил идеята от всички мъдри Morte_Moya, така че не мога да взема кредит за целия им гений. Просто исках да добавя удобство и презареждане