Мазмуну:

Негизги Arduino MIDI Controller: 5 кадам
Негизги Arduino MIDI Controller: 5 кадам

Video: Негизги Arduino MIDI Controller: 5 кадам

Video: Негизги Arduino MIDI Controller: 5 кадам
Video: #5 Как запрограммировать ПЛК Outseal Arduino — управление водяным насосом 2024, Ноябрь
Anonim
Негизги Arduino MIDI контроллери
Негизги Arduino MIDI контроллери

Киришүү:

Мен Arduino менен жаңы иштеп жатам, бирок башкаларга үйрөтүү жана пикир алуу аркылуу билимимди кеңейтем деп үмүттөнөм. Бул 4 баскычка жана потенциометрге ээ болгон эң негизги MIDI контроллери. Бул долбоордун схемасы мындай көрүнөт:

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 Buttons

4 x 120Ohm каршылыгы

Нан үчүн 14 х секирүүчү кабель

1 -кадам: Нан тактасын куруу

Нан тактасын куруу
Нан тактасын куруу
Нан тактасын куруу
Нан тактасын куруу

Нан тактаңызды бардык компоненттер жогорудагы 1 -сүрөттө дал келиши үчүн туташтырыңыз. Ар бир баскыч 2 -сүрөттө окшош болушу керек. Түймөнүн кириши Arduinoдо 2, 3, 4 жана 5, потенциометрдин ортоңку пини ANALOG A0 киришине туташкан.

2 -кадам: Эскизди жүктөө

Эскиз жүктөлүүдө
Эскиз жүктөлүүдө

Төмөндөгү кодду көчүрүп, Arduino IDEге чаптаңыз. "Куралдар" астындагы туура тактаны тандап, эскизди Arduinoго жүктөңүз.

byte noteON = 144; // commandbyte note боюнча эскертүү; // учурда ойнотуу үчүн сактагыч int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; логикалык currentState = ТӨМӨН; // учурдагы баскычтын абалы үчүн стратеги логикалык lastState = LOW; // акыркы баскычтын абалын сактоо үчүн боштукту орнотуу () {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, ылдамдык); // 127 эскертмени 127 ылдамдыкта кечиктирүү менен күйгүзүү (200); // баскычтын дебунунун орой формасы} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // 60 эскертүүнү кечиктирүүнү өчүрүү (2); // баскычтын дебунунун орой формасы} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// if button MIDImessage басылган болсо (noteON, 61, ылдамдык); дебунинг} else if if (currentState == LOW &&StState == HIGH) {MIDImessage (noteON, 60, 0); // note 60 өчүрүү кечигүү (2); // баскычтын дебундун орой формасы} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && LastState == LOW) {// if button MIDImessage жаңы басылган болсо (noteON, 62, ылдамдык); дебунинг} else if if (currentState == LOW && LastState == HIGH) {MIDImessage (noteON, 60, 0); // note 60 өчүрүү кечигүү (2); // баскычтын дебундун орой формасы} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && LastState == LOW) {// if MIDImessage баскычы жаңы басылган болсо (noteON, 63, ылдамдык); дебунинг} else if if (currentState == LOW &&StState == HIGH) {MIDImessage (noteON, 60, 0); // note 60 өчүрүү кечигүү (2); // баскычтын дебундун орой формасы} lastState = currentState; } // MIDI билдирүүсүн жокко чыгаруу MIDImessage (байт буйругу, байт data1, байт data2) {Serial.write (команда); Serial.write (data1); Serial.write (data2); }

Мен жалпысынан код жазуу үчүн дагы эле жаңы … …. бир аз тажрыйбасы барлар, балким, муну тазалап коюшу мүмкүн …

3 -кадам: Чачсыз MIDI жана Ички MIDI циклдерин түшүнүү

Чачсыз MIDI жана ички MIDI циклдерин түшүнүү
Чачсыз MIDI жана ички MIDI циклдерин түшүнүү
Чачсыз MIDI жана ички MIDI циклдерин түшүнүү
Чачсыз MIDI жана ички MIDI циклдерин түшүнүү
Чачсыз MIDI жана ички MIDI циклдерин түшүнүү
Чачсыз MIDI жана ички MIDI циклдерин түшүнүү

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

Эскертүү: сиз эскизди Arduinoго түксүз MIDI сериялык көпүрөсүнө туташып турганда жүктөй албайсыз.

Hairless MIDI сериялык портунда Arduino тандап, MIDIде loopbe1 же IAC Bus тандаңыз.

Эскертүү: loopbe1ди колдонууда үнсүз эмес экенин текшериңиз.

4 -кадам: DAWге туташуу

DAWге туташуу
DAWге туташуу

Эгерде сиз панелдин баскычын басканыңызда Hairless MIDI колдонмосуна сигнал алсаңыз (жарыктар күйүп калат), сиз MIDI маалыматын DAWке жөнөтө алышыңыз керек. Мен Аблетонду колдондум, бирок ар кандай DAW иштеши керек. Сиздин ички MIDI циклыңыз (loopbe1) DAW каалоолоруңузда иштетилгенин текшериңиз (Аблетондо сиз "тректи" иштетүүнү каалайсыз). Андан кийин, жогоруда сүрөттө көрсөтүлгөндөй MIDI циклине (loopbe1) MIDI тректиңиздин бирин тандаңыз.

5 -кадам: Ойноңуз

Image
Image

Эми баскычтар башка MIDI контроллери сыяктуу иштейт! Потенциометр DAWка жөнөтүлүп жаткан ноталардын ылдамдыгын өзгөртөт. Жогорудагы (өтө караңгы…) видео роялдын үнүн көрсөтүп турат!

Сунушталууда: