Daftar Isi:

Pengontrol MIDI Arduino Dasar: 5 Langkah
Pengontrol MIDI Arduino Dasar: 5 Langkah

Video: Pengontrol MIDI Arduino Dasar: 5 Langkah

Video: Pengontrol MIDI Arduino Dasar: 5 Langkah
Video: Tonton Sampai Habis !!! Belajar Arduino Di Jamin Bisa 2024, November
Anonim
Pengontrol MIDI Arduino Dasar
Pengontrol MIDI Arduino Dasar

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

Membangun Papan Tempat memotong roti
Membangun Papan Tempat memotong roti
Membangun Papan Tempat memotong roti
Membangun Papan Tempat memotong roti

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

Mengunggah Sketsa
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

Memahami Loop MIDI Tanpa Rambut dan Internal MIDI
Memahami Loop MIDI Tanpa Rambut dan Internal MIDI
Memahami Loop MIDI Tanpa Rambut dan Internal MIDI
Memahami Loop MIDI Tanpa Rambut dan Internal MIDI
Memahami Loop MIDI Tanpa Rambut dan Internal MIDI
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

Menghubungkan ke DAW Anda
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

Image
Image

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: