Daftar Isi:
- Perlengkapan
- Langkah 1: Membangun Breadboard
- Langkah 2: Mengunggah Sketsa
- Langkah 3: Memahami Loop MIDI Tanpa Rambut dan Internal MIDI
- Langkah 4: Menghubungkan ke DAW Anda
- Langkah 5: Mainkan
Video: Pengontrol MIDI Arduino Dasar: 5 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
pengantar:
Saya baru bekerja dengan Arduino tetapi saya berharap dapat memperluas pengetahuan saya dengan mengajar orang lain dan menerima umpan balik. Ini adalah pengontrol MIDI yang sangat mendasar dengan 4 tombol dan potensiometer. Garis besar untuk proyek ini terlihat seperti ini:
1. Bangun papan tempat memotong roti
2. Unggah Sketsa ke Arduino
3. Memahami MIDI Tanpa Rambut dan loop MIDI internal (loopbe1)
4. rutekan MIDI Anda ke DAW (Ableton)
Perlengkapan
1 x Arduino Mega 2560
1 x Papan Roti
1 x Kabel USB
1 x Potensiometer
4 x Tombol Kebijaksanaan
4 x 120Ohm resistor
14 x kabel jumper untuk papan tempat memotong roti
Langkah 1: Membangun Breadboard
Hubungkan papan tempat memotong roti Anda sehingga semua komponen cocok dengan gambar 1 di atas. Setiap tombol akan terlihat sama seperti gambar 2. Tombol input 2, 3, 4 dan 5 pada Arduino dan pin tengah potensiometer terhubung ke input ANALOG A0.
Langkah 2: Mengunggah Sketsa
Salin dan tempel kode di bawah ini ke Arduino IDE. Pilih papan yang benar di bawah "alat" dan unggah sketsa ke Arduino.
byte noteON = 144;//note pada commandbyte note;//storage untuk not yang sedang diputar int buttonPin1 = 2; int tombolPin2 = 3; int tombolPin3 = 4; int tombolPin4 = 5; int potPin = A0; boolean currentState = LOW;//stroage untuk status tombol saat ini boolean lastState = LOW;//storage untuk status tombol terakhir void setup(){ pinMode(buttonPin1, INPUT); pinMode(tombolPin2, INPUT); pinMode(tombolPin3, INPUT); pinMode(tombolPin4, INPUT); //kali ini kita akan mengatur pin sebagai INPUT Serial.begin(9600);//menginisialisasi koneksi Serial } void loop(){ int PotVal = analogRead(potPin); kecepatan byte = peta(PotVal, 0, 1023, 0, 127); currentState = digitalRead(buttonPin1); if (currentState == HIGH && lastState == LOW){ MIDImessage(noteON, 60, velocity);//mengaktifkan note 60 dengan 127 kecepatan delay(200);//bentuk kasar dari tombol debouncing } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//matikan not 60 off delay(2);//bentuk kasar tombol debouncing } lastState = currentState; currentState = digitalRead(buttonPin2); if (currentState == HIGH && lastState == LOW){//jika tombol baru saja ditekan MIDImessage(noteON, 61, velocity);//mengaktifkan note 60 dengan 127 velocity delay(200);//bentuk kasar tombol debouncing } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//matikan not 60 off delay(2);//bentuk kasar dari tombol debouncing } lastState = currentState; currentState = digitalRead(buttonPin3); if (currentState == HIGH && lastState == LOW){//jika tombol baru saja ditekan MIDImessage(noteON, 62, velocity);//mengaktifkan note 60 dengan 127 velocity delay(200);//bentuk kasar tombol debouncing } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//matikan not 60 off delay(2);//bentuk kasar dari tombol debouncing } lastState = currentState; currentState = digitalRead(buttonPin4); if (currentState == HIGH && lastState == LOW){//jika tombol baru saja ditekan MIDImessage(noteON, 63, velocity);//mengaktifkan note 60 dengan 127 velocity delay(200);//bentuk kasar tombol debouncing } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//matikan not 60 off delay(2);//bentuk kasar dari tombol debouncing } lastState = currentState; } //kirim pesan MIDI void MIDImessage(perintah byte, byte data1, byte data2) { Serial.write(perintah); Serial.write(data1); Serial.write(data2); }
Saya masih sangat baru dalam menulis kode secara umum….. mereka yang memiliki sedikit pengalaman mungkin bisa membersihkannya…
Langkah 3: Memahami Loop MIDI Tanpa Rambut dan Internal MIDI
Arduino perlu dijalankan melalui jembatan serial seperti Hairless MIDI kemudian melalui loop MIDI internal seperti loopbe1 (atau bus IAC untuk Mac).
Catatan: Anda tidak dapat mengunggah sketsa ke Arduino saat terhubung ke jembatan serial MIDI tanpa rambut.
Pilih Arduino Anda di port serial Hairless MIDI dan loopbe1 atau IAC Bus di MIDI out.
Catatan: pastikan mute tidak aktif saat menggunakan loopbe1.
Langkah 4: Menghubungkan ke DAW Anda
Jika Anda mendapatkan sinyal ke aplikasi Hairless MIDI saat Anda menekan tombol di papan tempat memotong roti (lampu akan berkedip), Anda seharusnya dapat mengirim data MIDI ke DAW. Saya menggunakan Ableton tetapi DAW apa pun harus berfungsi. Pastikan loop MIDI internal Anda (loopbe1) diaktifkan di preferensi DAW Anda (di Ableton Anda ingin "track" diaktifkan). Selanjutnya, pilih salah satu input track MIDI Anda ke loop MIDI (loopbe1) seperti yang ditunjukkan pada gambar di atas.
Langkah 5: Mainkan
Tombol sekarang akan berfungsi seperti pengontrol MIDI lainnya! Potensiometer akan mengubah kecepatan nada yang dikirim ke DAW. Video (sangat gelap…) di atas menunjukkan suara grand piano beraksi!
Direkomendasikan:
Komponen Pemasangan Permukaan Solder - Dasar-dasar Solder: 9 Langkah (dengan Gambar)
Komponen Pemasangan Permukaan Solder | Dasar-dasar Solder: Sejauh ini dalam Seri Dasar Solder saya, saya telah membahas dasar-dasar yang cukup tentang penyolderan untuk Anda mulai berlatih. Dalam Instructable ini, apa yang akan saya diskusikan sedikit lebih maju, tetapi ini adalah beberapa dasar untuk menyolder Surface Mount Compo
Menyolder Kabel ke Kabel - Dasar-dasar Solder: 11 Langkah
Menyolder Kabel ke Kabel | Dasar-dasar Solder: Untuk Instruksi ini, saya akan membahas cara umum untuk menyolder kabel ke kabel lain. Saya akan berasumsi bahwa Anda telah memeriksa 2 Instructables pertama untuk seri Soldering Basics saya. Jika Anda belum melihat Instruksi saya tentang Menggunakan
Game Reckless Racer Arduino OLED, AdafruitGFX, dan Dasar-dasar Bitmaps: 6 Langkah
Game Reckless Racer Arduino OLED, AdafruitGFX dan Bitmaps Dasar: Dalam tutorial ini kita akan melihat bagaimana menggunakan bitmap menggunakan library Adafruit_GFX.c sebagai semacam sprite dalam sebuah game. Gim paling sederhana yang dapat kami pikirkan adalah gim pengguliran samping yang mengubah jalur mobil, pada akhirnya penguji beta dan asisten pembuat kode kami
Dasar-dasar Antarmuka Arduino TFT: 10 Langkah (dengan Gambar)
Dasar-dasar Antarmuka TFT Arduino: Layar sentuh TFT adalah antarmuka grafis luar biasa yang dapat digunakan dengan mikrokontroler seperti Atmel, PIC, STM, karena memiliki rentang warna yang luas, dan kemampuan grafis yang baik serta pemetaan piksel yang baik. Hari ini, kita akan pergi ke Antarmuka TFT 2,4 inci
Dasar-dasar Arduino Esplora: 4 Langkah
Dasar-dasar Arduino Esplora: Oh! Saya tidak melihat Anda di sana! Anda pasti ingin mempelajari dasar-dasar dasar-dasar papan Esplora yang hebat. Nah, masuk, masuk. Tutorial ini akan mengajarkan Anda tentang beberapa trik rapi yang dapat Anda lakukan dengan Esplora Anda