Pengawal Asas Arduino MIDI: 5 Langkah
Pengawal Asas Arduino MIDI: 5 Langkah
Anonim
Pengawal MIDI Arduino Asas
Pengawal MIDI Arduino Asas

Pengenalan:

Saya baru bekerja dengan Arduino tetapi saya berharap dapat meluaskan pengetahuan saya dengan mengajar orang lain dan menerima maklum balas. Ini adalah pengawal MIDI yang sangat asas dengan 4 butang dan potensiometer. Garis besar untuk projek ini kelihatan seperti ini:

1. Bentukkan papan roti

2. Muat naik Sketsa ke Arduino

3. Fahami MIDI Tanpa Rambut dan gelung MIDI dalaman (loopbe1)

4. hala tuju MIDI anda ke DAW (Ableton)

Bekalan

1 x Arduino Mega 2560

1 x Papan Roti

1 x Kabel USB

1 x Potensiometer

4 x Butang Tact

Perintang 4 x 120Ohm

14 x kabel pelompat untuk papan roti

Langkah 1: Membangun Papan Roti

Membangun Papan Roti
Membangun Papan Roti
Membangun Papan Roti
Membangun Papan Roti

Sambungkan papan roti anda supaya semua komponen sesuai dengan gambar 1 di atas. Setiap butang akan kelihatan sama seperti gambar 2. Input butang adalah 2, 3, 4 dan 5 pada Arduino dan pin tengah potensiometer disambungkan ke input ANALOG A0.

Langkah 2: Memuat naik Lakaran

Memuat naik Lakaran
Memuat naik Lakaran

Salin dan tampal kod di bawah ke dalam Arduino IDE. Pilih papan yang betul di bawah "alat" dan muat naik lakaran ke Arduino.

byte noteON = 144; // note on commandbyte note; // storan untuk bermain nota int butang Pin1 = 2; butang intPin2 = 3; butang intPin3 = 4; butang intPin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage untuk keadaan butang semasa boolean lastState = LOW; // storan untuk keadaan butang terakhir tidak disiapkan () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // kali ini kita akan menetapkan pin sebagai INPUT Serial.begin (9600); // memulakan sambungan Serial} gelung void () {int PotVal = analogRead (potPin); kecepatan byte = peta (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // hidupkan nota 60 dihidupkan dengan 127 kelewatan kelajuan (200); // bentuk butang mentah melantunkan} lain jika (currentState == LOW && lastState == TINGGI) {MIDImessage (noteON, 60, 0); // putar nota 60 matikan kelewatan (2); // bentuk butang kasar yang melantunkan} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == RENDAH) {// jika butang baru sahaja ditekan MIDImessage (noteON, 61, velocity); // hidupkan nota 60 dihidupkan dengan 127 kelewatan kelajuan (200); // bentuk butang kasar debouncing} lain jika (currentState == LOW && lastState == TINGGI) {MIDImessage (noteON, 60, 0); // putar nota 60 off delay (2); // bentuk butang mentah debouncing} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// jika butang baru sahaja ditekan MIDImessage (noteON, 62, velocity); // hidupkan nota 60 dihidupkan dengan 127 kelewatan kelajuan (200); // bentuk butang kasar debouncing} lain jika (currentState == LOW && lastState == TINGGI) {MIDImessage (noteON, 60, 0); // putar nota 60 off delay (2); // bentuk butang mentah debouncing} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// jika butang baru sahaja ditekan MIDImessage (noteON, 63, velocity); // hidupkan nota 60 dihidupkan dengan 127 kelewatan kelajuan (200); // bentuk butang kasar debouncing} lain jika (currentState == LOW && lastState == TINGGI) {MIDImessage (noteON, 60, 0); // putar nota 60 off delay (2); // bentuk butang mentah debouncing} lastState = currentState; } // hantar mesej MIDI batal MIDImessage (perintah bait, data bait1, data bait2) {Serial.write (arahan); Serial.write (data1); Serial.write (data2); }

Saya masih baru dalam menulis kod secara umum….. mereka yang mempunyai sedikit pengalaman mungkin dapat membersihkannya…

Langkah 3: Memahami MIDI Tanpa Rambut dan Gelung MIDI Dalaman

Memahami MIDI Tanpa Rambut dan Gelung MIDI Dalaman
Memahami MIDI Tanpa Rambut dan Gelung MIDI Dalaman
Memahami MIDI Tanpa Rambut dan Gelung MIDI Dalaman
Memahami MIDI Tanpa Rambut dan Gelung MIDI Dalaman
Memahami MIDI Tanpa Rambut dan Gelung MIDI Dalaman
Memahami MIDI Tanpa Rambut dan Gelung MIDI Dalaman

Arduino perlu melalui jambatan bersiri seperti MIDI Tanpa Rambut kemudian melalui gelung MIDI dalaman seperti loopbe1 (atau bas IAC untuk Mac).

Catatan: anda tidak boleh memuat naik lakaran ke Arduino semasa ia dihubungkan ke jambatan bersiri MIDI tanpa rambut.

Pilih Arduino anda di port bersiri MIDI Tanpa Rambut dan loopbe1 atau IAC Bus di MIDI keluar.

Catatan: pastikan bahawa bisu tidak aktif semasa menggunakan loopbe1.

Langkah 4: Menyambung ke DAW anda

Menyambung ke DAW Anda
Menyambung ke DAW Anda

Sekiranya anda mendapat isyarat ke aplikasi MIDI Tanpa Rambut ketika anda menekan butang di papan roti (lampu akan berkedip) anda seharusnya dapat mengirim data MIDI ke DAW. Saya menggunakan Ableton tetapi mana-mana DAW mesti berfungsi. Pastikan gelung MIDI dalaman anda (loopbe1) diaktifkan mengikut pilihan DAW anda (di Ableton anda mahu "trek" diaktifkan). Seterusnya, pilih salah satu input trek MIDI anda ke gelung MIDI (loopbe1) seperti yang ditunjukkan dalam gambar di atas.

Langkah 5: Main

Image
Image

Butang sekarang akan berfungsi seperti pengawal MIDI lain! Potensiometer akan mengubah halaju nota yang dihantar ke DAW. Video (sangat gelap …) di atas menunjukkan bunyi piano yang hebat dalam aksi!

Disyorkan: