Негізгі Arduino MIDI контроллері: 5 қадам
Негізгі Arduino MIDI контроллері: 5 қадам
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 Әдептілік түймелері

4 x 120 Ом резисторлары

Нан тақтасына арналған 14 х өтпелі кабель

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

Нан тақтасын құру
Нан тақтасын құру
Нан тақтасын құру
Нан тақтасын құру

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

2 -қадам: Эскизді жүктеу

Эскизді жүктеу
Эскизді жүктеу

Төмендегі кодты көшіріп, Arduino IDE -ге қойыңыз. «Құралдар» астында дұрыс тақтаны таңдап, эскизді Arduino -ға жүктеңіз.

byte noteON = 144; // командалық байтқа ескерту; // қазіргі уақытта ойнатылатын қойма int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = LOW; // ағымдағы түйме күйі үшін стратеги boolean 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, жылдамдық); // 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, жылдамдық); // 127 жылдамдықты кешіктірумен (200) 60 жазбаны қосыңыз; // түйменің өрескел түрі дебунинг} else if (currentState == LOW && LastState == HIGH) {MIDImessage (noteON, 60, 0); // ескертуді кешіктіруді өшіру (2); // түймешіктерді жоюдың өрескел түрі} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// if MIDImessage батырмасы жаңа басылған болса (noteON, 62, жылдамдық); // 60 -ескертуді 127 жылдамдық кешігуімен қосыңыз (200); // түйменің өрескел түрі дебунинг} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // ескертуді кешіктіруді өшіру (2); // түймені жоюдың өрескел түрі} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// if MIDImessage батырмасы енді басылған болса (noteON, 63, жылдамдық); // 127 жылдамдықты кешіктірумен (200) 60 жазбаны қосыңыз; // түйменің өрескел түрі дебунинг} else if (currentState == LOW && LastState == HIGH) {MIDImessage (noteON, 60, 0); // ескертуді кешіктіруді өшіру (2); // түймешіктерді жоюдың өрескел түрі} lastState = currentState; } // MIDI хабарламасын жіберу void MIDImessage (байт пәрмені, байт деректері1, байт деректері2) {Serial.write (пәрмен); Serial.write (data1); Serial.write (data2); }

Мен әлі де кодты жазуда өте жаңамын … … тәжірибесі барлар, бәлкім, тазартады …

3 -қадам: Шашсыз MIDI және ішкі MIDI ілмектерін түсіну

Шашсыз MIDI және ішкі MIDI ілмектерін түсіну
Шашсыз MIDI және ішкі MIDI ілмектерін түсіну
Шашсыз MIDI және ішкі MIDI ілмектерін түсіну
Шашсыз MIDI және ішкі MIDI ілмектерін түсіну
Шашсыз MIDI және ішкі MIDI ілмектерін түсіну
Шашсыз MIDI және ішкі MIDI ілмектерін түсіну

Arduino Hairless MIDI сияқты сериялық көпір арқылы, содан кейін loopbe1 (немесе Mac үшін IAC шинасы) сияқты ішкі MIDI циклі арқылы өту керек.

Ескерту: сіз эскизді Arduino -ға түксіз MIDI сериялық көпіріне қосылған кезде жүктей алмайсыз.

Шашсыз MIDI сериялық портынан Arduino -ны таңдаңыз және MIDI -де loopbe1 немесе IAC шинасын таңдаңыз.

Ескерту: loopbe1 пайдалану кезінде дыбыс қосылмайтынын тексеріңіз.

4 -қадам: DAW -ке қосылу

Сіздің DAW -ге қосылу
Сіздің DAW -ге қосылу

Егер сіз тақтаның батырмасын басқанда (шамдар жыпылықтайды) Hairless MIDI қосымшасына сигнал алсаңыз, MIDI деректерін DAW -ке жіберуіңіз керек. Мен Ableton -ды қолдандым, бірақ кез келген DAW жұмыс істеуі керек. Сіздің ішкі MIDI циклі (loopbe1) DAW теңшелімдерінде қосылғанына көз жеткізіңіз (Ableton -да сіз «тректі» қосқыңыз келеді). Содан кейін, жоғарыдағы суретте көрсетілгендей MIDI циклына (loopbe1) MIDI тректерінің кірістерінің бірін таңдаңыз.

5 -қадам: Ойна

Image
Image

Енді түймелер басқа MIDI контроллері сияқты жұмыс істейді! Потенциометр DAW -ге жіберілетін жазбалардың жылдамдығын өзгертеді. Жоғарыдағы (өте қараңғы…) бейнеде рояльдің фортепианодағы дыбысы көрінеді!

Ұсынылған: