Isi kandungan:

Membina Pengawal Arduino MIDI: 9 Langkah (dengan Gambar)
Membina Pengawal Arduino MIDI: 9 Langkah (dengan Gambar)

Video: Membina Pengawal Arduino MIDI: 9 Langkah (dengan Gambar)

Video: Membina Pengawal Arduino MIDI: 9 Langkah (dengan Gambar)
Video: RBT Tahun 5 Pengaturcaraan projek cahaya dan bunyi baginpapan mikropengawal arduino uno 2024, November
Anonim

Instruksional ini pada mulanya diterbitkan di blog saya pada 28 Jun 2020

Saya suka membina barang yang merangkumi elektronik, dan saya selalu mahu membina sesuatu menggunakan Arduino.

Salah satu binaan yang paling biasa untuk pemula yang saya dapati ialah pengawal MIDI. Pengawal MIDI adalah sebarang perkakasan yang menghantar data MIDI (Antarmuka Digital Instrumen Musikal) ke peranti untuk mencetuskan suara dan membuat muzik.

Saya mendapati bahawa banyak pelaksanaannya rumit, bahkan untuk pemula. Sangat mengecewakan apabila saya perlu menggunakan beratus-ratus baris kod yang tidak dapat dibaca. Atau bahawa saya perlu menyolder perintang dalam beberapa kes, antara contoh lain.

Projek

Dengan membina Arduino MIDI Controller saya sendiri, niat saya adalah untuk membuat projek yang menyeronokkan, sehingga kebisingan tetap rendah. Sesuatu yang boleh diikuti oleh pemula. Untuk mencapainya, saya menggunakan MIDI Fighter 3D sebagai inspirasi asas dan membuang setiap ciri yang tidak penting.

Jumlah kos projek saya di bawah $ 30, dan senarai bahan sangat pendek (pautan afiliasi):

  • Arduino Leonardo (atau klon): antara $ 10 dan $ 20.
  • 16 x butang Sanwa 24mm (atau klon): antara $ 1 dan $ 2.50 setiap butang.
  • Besi pematerian
  • 22 Wayar Elektrik AWG

Lembaga Arduino

Semasa saya memulakan projek ini, saya dapati terdapat banyak model Arduino baru (tidak termasuk ratusan papan serasi). Dan semuanya menawarkan kemampuan yang sedikit berbeza.

Saya perlu menghantar isyarat MIDI ke komputer dan cara termudah untuk melakukannya adalah melalui USB. Mana-mana papan Arduino berdasarkan mikrokontroler ATmega32u4 mempunyai komunikasi USB terbina dalam.

Papan Arduino rasmi dengan sokongan USB asli adalah Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Papan ini mempunyai sokongan USB bersepadu yang bermaksud mereka boleh berfungsi sebagai peranti USB MIDI.

Saya memutuskan untuk pergi dengan klon Arduino Leonardo. Ia mempunyai cukup input untuk projek ini dan juga merangkumi header, yang menjadikannya lebih mudah untuk memasang / mencabut kabel.

Langkah pertama

Walaupun saya akan menerangkan langkah demi langkah bagaimana saya melaksanakan kod untuk projek ini, anda boleh memuat turun versi terakhir.

Untuk memuat naik kod ke papan anda perlu menggunakan Arduino IDE. Mereka juga mempunyai penyunting Web yang sangat berguna tetapi mereka mempunyai kuota terhad pada waktu sehari sehingga anda dapat menyusun kod.

Langkah 1: Berkelip LED Built-in

Sungguh lucu bagaimana "Hello World" dalam dunia perkakasan berkelip-kelip LED.

Ia adalah kejutan yang baik bagi saya untuk mengetahui bahawa Arduino Leonardo mempunyai LED terpasang yang anda boleh berkedip untuk menguji kod anda. Dengan cara itu anda tidak perlu membina litar luaran di papan roti dengan LED dan perintang.

Kod:

Langkah 2: Mengedipkan LED pada Input Manual

Langkah logik seterusnya adalah dengan mengedipkan LED yang sama setiap kali saya menghantar isyarat. Saya menanggalkan penutup plastik salah satu hujung 2 wayar Dupont, dan menghubungkan hujung yang lain ke papan:

  • Nombor pin 2: Salah satu input digital (positif). Ini boleh menjadi pin digital.
  • Pin GND: Mana-mana pin tanah (negatif).

Sekarang, setiap kali saya memasukkan hujung wayar yang terdedah, saya menutup litar dan dengan itu saya dapat melaksanakan kod akibatnya

Setiap 20 pin digital di Leonardo mempunyai perintang dalaman (terputus secara lalai) yang dapat diaktifkan menggunakan INPUT_PULLUP. Perlu diingat bahawa input pull-up bermaksud keadaan butang terbalik:

  • TINGGI semasa litar terbuka (butang TIDAK ditekan).
  • RENDAH ketika litar ditutup (butang ditekan).

Kod:

Langkah 3: Memasang Perpustakaan MIDIUSB

Perpustakaan ini membolehkan papan Arduino dengan keupayaan USB bertindak sebagai instrumen MIDI melalui USB. Lihat dokumentasi rasmi untuk maklumat lebih lanjut.

Dengan menggunakan Arduino IDE, anda boleh memasang Perpustakaan Arduino tambahan menggunakan Pengurus Perpustakaan:

  1. Buka IDE dan klik pada menu "Sketsa", kemudian "Sertakan Perpustakaan", kemudian "Urus Perpustakaan".
  2. Cari MIDIUSB dan klik Pasang.
  3. Setelah selesai, tag yang terpasang akan muncul di sebelah perpustakaan MIDIUSB.
  4. Tutup Pengurus Perpustakaan.

Kini Leonardo dapat menghantar mesej MIDI melalui USB! Tetapi pertama, beberapa pandangan tentang bagaimana MIDI berfungsi sangat diperlukan.

Bagaimana MIDI Berfungsi

"MIDI (Antarmuka Digital Instrumen Musikal) adalah protokol komunikasi standard yang menghubungkan alat muzik elektronik, komputer, dan alat audio yang berkaitan untuk memainkan muzik." - Wikipedia

Ia menangani mesej acara dengan data nada dan kelajuan nota yang dimainkan, antara petunjuk lain

Dalam projek khusus ini, input dari 16 butang menghantar mesej yang berbeza melalui USB. Mesej ini dapat ditukar menjadi suara di komputer menggunakan perisian yang sesuai seperti GarageBand atau Ableton Live.

Anatomi mesej MIDI

Untuk menghantar mesej MIDI, saya menggunakan kaedah sendMIDI () dari Perpustakaan MIDIUSB yang saya pasang pada langkah 3.

Kaedah ini boleh menerima 4 parameter:

  • Jenis acara: Ia boleh menjadi 0x09 untuk nota Hidup (mainkan nota) atau 0x08 untuk nota Mati (berhenti bermain nota).
  • Catatan Hidup / Mati: Jenis acara digabungkan dengan saluran MIDI (1-16). Saya hanya menggunakan saluran 1 jadi 0x90 untuk nota Hidup atau 0x80 untuk nota Mati.
  • Nombor nota: Setiap nota mempunyai nada angka yang berkaitan (skala frekuensi).
  • Kecepatan: Dari 0 (tanpa halaju) hingga 127 (terpantas).

Langkah 4: Menghantar MIDI Mesej

Saya memasukkan Perpustakaan MIDIUSB dan bukannya berkelip LED terpasang, saya menghantar nota.

Kod:

⚠ Penting: Dari langkah ini dan seterusnya Arduino berubah menjadi Pengawal USB MIDI, dan ia berhenti menerima kod melalui USB.

Apabila anda terjebak dalam kedudukan di mana Arduino tidak dapat diprogramkan lagi, ikuti langkah-langkah berikut:

  1. Tahan butang reset bulat di papan Arduino.
  2. Klik Muat naik di Arduino IDE.
  3. Lepaskan butang set semula.
  4. Kod yang dikemas kini akan dimuat naik ke papan.

Langkah 5: Menghantar MIDI Mesej Dari Setiap Butang

Menghantar MIDI Mesej Dari Setiap Butang
Menghantar MIDI Mesej Dari Setiap Butang

Langkah terakhir adalah memetakan setiap nada ke butang. Untuk 16 butang, saya menentukan skala dari C2 hingga E3b, yang merupakan nada dari 36 hingga 51 dalam urutan dari bawah ke atas dan dari kiri ke kanan. Lihat fail ini dari Arduino Tutorials untuk melihat nada apa yang sesuai dengan setiap nota.

Saya menggunakan pin digital dari 2 hingga 12 dan pin analog (menggunakannya sebagai digit) dari A0 hingga A4.

Seperti inilah kod akhir seperti

Langkah 6: Menetapkan Saluran atau Bank (pilihan)

Menetapkan Saluran atau Bank (pilihan)
Menetapkan Saluran atau Bank (pilihan)

Sekiranya anda ingin menambah lebih banyak butang dengan kemampuan untuk menukar saluran atau bank, seperti dalam MIDI Fighter 3D (lihat gambar), Arduino Leonardo mempunyai empat lagi pin yang boleh anda gunakan. Arduino Leonardo mempunyai 20 pin input / output digital, hanya 16 yang digunakan untuk bermain nota.

Anda boleh menggunakan butang tambahan itu untuk mengemas kini pemboleh ubah dalam kod, dan mengirim nilainya sebagai parameter ke kaedah MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Langkah 7: Kesnya

Kes itu
Kes itu
Kes itu
Kes itu

Untuk memastikan projek ini mudah, saya sangat memilih untuk memilih ciri yang termasuk.

  • Butang sahaja: 16 butang arcade seperti Sanwa, dalam grid 4x4. Tidak ada kenop, tidak ada slider, tidak ada fader, atau input analog lain.
  • Sarung unibody: Jangan gunakan skru, mur, baut, atau gam untuk penutup atau untuk memegang papan Arduino.
  • Alat setiap hari: Contohnya, saya menyolder wayar daripada membeli wayar gunting tertentu untuk butang arked.

Reka Bentuk Unibodi

Salah satu cabaran yang saya hadapi ialah merancang casing yang cukup sederhana sehingga tidak memerlukan pemasangan dan boleh dicetak 3d dalam satu masa.

Untuk mengelakkan penggunaan skru atau gam, saya perlu merancang penutup yang menyediakan akses terkecil ke elektronik. Inspirasi terbesar saya untuk kandang adalah Mac Mini, yang mempunyai lubang berbentuk bulatan di bahagian bawah. Saya juga ingin merancang penutup skru untuk itu, tetapi saya memutuskan untuk membiarkannya terbuka untuk mendedahkan elektronik.

Muat turun cetakan 3D (322 KB). Tetapan yang disyorkan: PLA, lapisan 0.15mm, pengisian 20%, penegak sokongan sekurang-kurangnya untuk lubang bawah bulat, pemegang Arduino, dan USB mikro.

Memegang Arduino tanpa skru

Leonardo mempunyai 4 lubang untuk memasukkan papan ke dalam casing yang sesuai, tetapi idea saya adalah untuk memudahkan menambahkan dan mengeluarkan papan dari casing tersebut.

Mencari pemegang klip untuk Arduino di Thingiverse adalah mudah, dan saya memerlukan 5 lelaran untuk menyatukan pemegang itu ke unibody desing. Bahagian yang paling sukar adalah membuat kakinya untuk mengelakkan lubang butang, dan menjadikan USB mikro sejajar ke tengah casing.

Langkah 8: Majlis

Majlis
Majlis
Majlis
Majlis
Majlis
Majlis

Setelah memasukkan semua butang di tempatnya, saya memateri wayar hitam pendek yang menghubungkan semua butang kaki negatif di antara mereka.

Kemudian saya memateri wayar merah panjang dari setiap kaki positif untuk menyambung terus ke papan.

Untuk menyambungkan wayar ke Arduino, saya memotong dan menyolder beberapa hujung Dupont dan menutupnya dengan tiub pengecutan panas.

Saya menyambungkan wayar ke papan mengikut susunan yang sama seperti di MIDI Fighter. Dari bawah ke atas dan dari kiri ke kanan

Langkah 9: Menggunakan Pengawal MIDI

Menggunakan Pengawal MIDI
Menggunakan Pengawal MIDI

Mana-mana perisian muzik (atau perkakasan yang sesuai) dapat digunakan untuk menerima MIDI dan membuat muzik. Yang paling disyorkan ialah Garage Band, Ableton Live, dan saya tahu terdapat banyak aplikasi untuk dipasang di telefon.

Semua alat itu berguna untuk memuatkan bunyi yang telah ditentukan untuk gendang jari, tetapi ia dibuat untuk tujuan yang lebih besar. Alat-alat itu sukar untuk disiapkan oleh pemula.

MIDI dalam penyemak imbas Web

Untuk membuat sesuatu yang lebih selaras dengan projek ini dan kesederhanaannya, saya membina alat Web yang sepenuhnya tertumpu pada pengawal MIDI.

Punchy: Pelaksanaan WebMIDI dan WebAudio untuk pengawal MIDI.

Ia dapat membaca mesej MIDI pada penyemak imbas mana pun yang menyokong API JavaScript WebMIDI. Kemudian ia memainkan suara dalam synthesizer (menggunakan API WebAudio) atau dalam sampler, memuatkan suara tersuai dari mana-mana pek suara.

Sediakan Ableton Live

Untuk menjadikan MIDI Controller berfungsi dengan Ableton Live, ikuti langkah mudah ini dari dokumentasi rasmi mereka.

Pergi ke Pilihan → Pautkan MIDI dan pastikan "Input" mempunyai "Track" dan "Remote" ON dan output mempunyai "Remote" ON seperti yang disebutkan dalam panduan:

Disyorkan: