Daftar Isi:

Membangun Pengontrol MIDI Arduino: 9 Langkah (dengan Gambar)
Membangun Pengontrol MIDI Arduino: 9 Langkah (dengan Gambar)

Video: Membangun Pengontrol MIDI Arduino: 9 Langkah (dengan Gambar)

Video: Membangun Pengontrol MIDI Arduino: 9 Langkah (dengan Gambar)
Video: Amazing arduino project 2024, November
Anonim

Instruksi ini awalnya diterbitkan di blog saya pada 28 Juni 2020

Saya menikmati membangun barang-barang yang mencakup elektronik, dan saya selalu ingin membangun sesuatu menggunakan Arduino.

Salah satu build paling umum untuk pemula yang saya temukan adalah pengontrol MIDI. Pengontrol MIDI adalah perangkat keras apa pun yang mengirimkan data MIDI (Antarmuka Digital Alat Musik) ke perangkat untuk memicu suara dan membuat musik.

Saya menemukan bahwa banyak implementasi yang rumit, bahkan untuk pemula. Sangat membuat frustrasi karena saya harus menggunakan ratusan baris kode yang tidak dapat dibaca. Atau saya perlu menyolder resistor dalam beberapa kasus, di antara contoh lainnya.

Proyek

Dengan membangun Pengontrol MIDI Arduino saya sendiri, niat saya adalah membuat proyek yang menyenangkan, menjaga kebisingan serendah mungkin. Sesuatu yang bisa diikuti oleh pemula mana pun. Untuk mencapai itu, saya menggunakan MIDI Fighter 3D sebagai inspirasi dasar dan menghapus setiap fitur yang tidak penting.

Total biaya proyek saya di bawah $30, dan daftar materinya sangat singkat (tautan afiliasi):

  • Arduino Leonardo (atau tiruan): antara $10 dan $20.
  • 16 x Sanwa button 24mm (atau clone): antara $1 dan $2,50 per tombol.
  • Solder Besi
  • Kabel Listrik 22 AWG

Papan Arduino

Ketika saya memulai proyek ini, saya menemukan ada banyak model Arduino baru (tidak termasuk ratusan papan yang kompatibel). Dan semuanya menawarkan kemampuan yang sedikit berbeda.

Saya perlu mengirim sinyal MIDI ke komputer dan cara paling sederhana untuk melakukannya adalah melalui USB. Setiap papan Arduino berdasarkan mikrokontroler ATmega32u4 memiliki komunikasi USB bawaan.

Papan Arduino resmi dengan dukungan USB asli adalah Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Papan ini memiliki dukungan USB terintegrasi yang berarti mereka dapat bertindak sebagai perangkat MIDI USB.

Saya memutuskan untuk menggunakan tiruan dari Arduino Leonardo. Ini memiliki input yang cukup untuk proyek ini dan juga termasuk header, yang membuatnya lebih mudah untuk memasang/mencabut kabel.

Langkah pertama

Meskipun saya akan menjelaskan langkah demi langkah bagaimana saya menerapkan kode untuk proyek ini, Anda dapat mengunduh versi finalnya.

Untuk mengunggah kode ke papan, Anda perlu menggunakan Arduino IDE. Mereka juga memiliki editor Web yang sangat berguna tetapi mereka memiliki kuota terbatas pada waktu per hari Anda dapat mengkompilasi kode.

Langkah 1: Mengedipkan LED Built-in

Lucu bagaimana "Hello World" di dunia perangkat keras mengedipkan LED.

Itu adalah kejutan yang menyenangkan bagi saya untuk mengetahui bahwa Arduino Leonardo memiliki LED bawaan yang dapat Anda kedipkan untuk menguji kode Anda. Dengan begitu Anda tidak perlu membangun sirkuit eksternal pada papan tempat memotong roti dengan LED dan resistor.

Kode:

Langkah 2: Mengedipkan LED pada Input Manual

Langkah logis berikutnya adalah mengedipkan LED yang sama setiap kali saya mengirim sinyal. Saya melepas penutup plastik dari salah satu ujung 2 kabel Dupont, dan menghubungkan ujung lainnya ke papan:

  • Pin nomor 2: Salah satu input digital (positif). Bisa berupa pin digital apa saja.
  • Pin GND: Pin ground apa saja (negatif).

Sekarang, setiap kali saya bergabung dengan ujung kabel yang terbuka, saya menutup sirkuit dan dengan demikian saya dapat mengeksekusi kode sebagai konsekuensinya

Masing-masing dari 20 pin digital pada Leonardo memiliki resistor internal (terputus secara default) yang dapat diaktifkan menggunakan INPUT_PULLUP. Ingatlah bahwa input pull-up berarti status tombol terbalik:

  • TINGGI saat sirkuit terbuka (tombol TIDAK ditekan).
  • LOW saat sirkuit ditutup (tombol ditekan).

Kode:

Langkah 3: Memasang Perpustakaan MIDIUSB

Perpustakaan ini memungkinkan papan Arduino dengan kemampuan USB untuk bertindak sebagai instrumen MIDI melalui USB. Periksa dokumentasi resmi untuk info lebih lanjut.

Dengan menggunakan Arduino IDE, Anda dapat menginstal Perpustakaan Arduino tambahan menggunakan Manajer Perpustakaan:

  1. Buka IDE dan klik menu "Sketsa", lalu "Sertakan Perpustakaan", lalu "Kelola Perpustakaan".
  2. Cari MIDIUSB dan klik Instal.
  3. Setelah selesai, tag Terpasang akan muncul di sebelah perpustakaan MIDIUSB.
  4. Tutup Manajer Perpustakaan.

Sekarang Leonardo dapat mengirim pesan MIDI melalui USB! Tetapi pertama-tama, diperlukan beberapa wawasan tentang cara kerja MIDI.

Cara Kerja MIDI

"MIDI (Musical Instrument Digital Interface) adalah protokol komunikasi standar yang menghubungkan alat musik elektronik, komputer, dan perangkat audio terkait untuk memutar musik." - Wikipedia

Ini menangani pesan acara dengan data nada dan kecepatan nada yang dimainkan, di antara instruksi lainnya

Dalam proyek khusus ini, input dari 16 tombol mengirimkan pesan yang berbeda melalui USB. Pesan-pesan ini dapat diubah menjadi suara di komputer menggunakan perangkat lunak apa pun yang sesuai seperti GarageBand atau Ableton Live.

Anatomi pesan MIDI

Untuk mengirim pesan MIDI, saya menggunakan metode sendMIDI() dari Perpustakaan MIDIUSB yang saya instal pada langkah 3.

Metode ini dapat menerima 4 parameter:

  • Jenis acara: Bisa 0x09 untuk not Aktif (putar not) atau 0x08 untuk not Mati (berhenti memainkan not).
  • Catatan Nyala/Mati: Jenis acara yang digabungkan dengan saluran MIDI (1-16). Saya hanya menggunakan saluran 1 jadi 0x90 untuk note On atau 0x80 untuk note Off.
  • Nomor not: Setiap not memiliki nada numerik terkait (skala frekuensi).
  • Kecepatan: Dari 0 (tanpa kecepatan) hingga 127 (tercepat).

Langkah 4: Mengirim Pesan MIDI

Saya menyertakan Perpustakaan MIDIUSB dan alih-alih mengedipkan LED bawaan, saya mengirim catatan.

Kode:

Penting: Dari langkah ini dan seterusnya, Arduino berubah menjadi Pengontrol USB MIDI, dan berhenti menerima kode melalui USB.

Saat Anda terjebak dalam posisi di mana Arduino tidak lagi dapat diprogram, ikuti langkah-langkah ini:

  1. Tahan tombol reset bulat pada papan Arduino.
  2. Klik Unggah pada Arduino IDE.
  3. Lepaskan tombol reset.
  4. Kode yang diperbarui akan diunggah ke papan.

Langkah 5: Mengirim Pesan MIDI Dari Setiap Tombol

Mengirim Pesan MIDI Dari Setiap Tombol
Mengirim Pesan MIDI Dari Setiap Tombol

Langkah terakhir adalah memetakan setiap nada ke sebuah tombol. Untuk 16 tombol, saya mendefinisikan skala dari C2 hingga E3b, yang merupakan nada dari 36 hingga 51 secara berurutan dari bawah ke atas dan dari kiri ke kanan. Lihat file ini dari Tutorial Arduino untuk melihat nada apa yang sesuai dengan setiap nada.

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

Dan seperti inilah tampilan kode terakhir

Langkah 6: Menyiapkan Saluran atau Bank (opsional)

Menyiapkan Saluran atau Bank (opsional)
Menyiapkan Saluran atau Bank (opsional)

Jika Anda ingin menambahkan lebih banyak tombol dengan kemampuan untuk berpindah saluran atau bank, seperti pada MIDI Fighter 3D (lihat gambar), Arduino Leonardo memiliki empat pin lagi yang dapat Anda gunakan. Arduino Leonardo memiliki 20 pin input/output digital, dimana hanya 16 pin yang digunakan untuk memainkan not.

Anda dapat menggunakan tombol tambahan tersebut untuk memperbarui variabel dalam kode, dan mengirimkan nilainya sebagai parameter ke metode MidiUSB.sendMIDI:

Gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Langkah 7: Kasus

Kasus
Kasus
Kasus
Kasus

Untuk menjaga agar proyek ini tetap sederhana, saya sangat pilih-pilih dalam memilih fitur mana yang disertakan.

  • Tombol saja: 16 tombol arcade seperti Sanwa, dalam kotak 4x4. Tidak ada tombol, tidak ada slider, tidak ada fader, atau input analog lainnya.
  • Kasing unibody: Jangan gunakan sekrup, mur, baut, atau lem untuk penutup atau untuk menahan papan Arduino.
  • Alat sehari-hari: Misalnya, saya menyolder kabel daripada membeli pemotong kawat khusus untuk tombol arcade.

Desain Unibodi

Salah satu tantangan yang saya hadapi adalah merancang kasing yang cukup sederhana sehingga tidak perlu dirakit dan dapat dicetak 3d dalam sekali jalan.

Untuk menghindari penggunaan sekrup atau lem, saya perlu merancang penutup yang menyediakan akses terkecil ke elektronik. Inspirasi terbesar saya untuk enklosur adalah Mac Mini, yang memiliki lubang berbentuk lingkaran di bagian bawah. Saya juga ingin merancang penutup yang dapat disekrup untuk itu, tetapi saya memutuskan untuk membiarkannya terbuka untuk mengekspos elektronik.

Unduh kotak cetak 3d (322 KB). Pengaturan yang disarankan: PLA, lapisan 0,15mm, pengisi 20%, penegak dukungan setidaknya untuk lubang bawah yang membulat, dudukan Arduino, dan USB mikro.

Memegang Arduino tanpa sekrup

Leonardo memiliki 4 lubang untuk memasang papan ke kasing yang sesuai, tetapi ide saya adalah membuatnya mudah untuk menambah dan melepas papan dari kasing.

Menemukan dudukan klip untuk Arduino di Thingiverse itu mudah, dan saya butuh 5 iterasi untuk mengintegrasikan dudukan itu ke desain unibody. Bagian yang paling sulit adalah membuat kaki-kakinya untuk menghindari lubang untuk tombol, dan membuat micro USB berada di tengah-tengah casing.

Langkah 8: Majelis

Perakitan
Perakitan
Perakitan
Perakitan
Perakitan
Perakitan

Setelah memasukkan semua tombol di tempatnya, saya menyolder kabel hitam pendek yang menghubungkan semua kaki negatif tombol di antara mereka.

Kemudian saya menyolder kabel merah panjang dari setiap kaki positif untuk terhubung langsung ke papan.

Untuk menghubungkan kabel ke Arduino, saya memotong dan menyolder beberapa ujung Dupont dan menutupinya dengan tabung heat-shrink.

Saya menghubungkan kabel ke papan mengikuti urutan yang sama seperti di MIDI Fighter. Dari bawah ke atas dan dari kiri ke kanan

Langkah 9: Menggunakan Pengontrol MIDI

Menggunakan Pengontrol MIDI
Menggunakan Pengontrol MIDI

Perangkat lunak musik apa pun (atau perangkat keras yang sesuai) dapat digunakan untuk menerima MIDI dan membuat musik. Yang paling direkomendasikan adalah Garage Band, Ableton Live, dan saya tahu ada banyak aplikasi untuk diinstal di telepon.

Semua alat itu berguna untuk memuat suara yang telah ditentukan sebelumnya untuk permainan drum jari, tetapi alat itu dibuat untuk tujuan yang lebih besar. Alat-alat itu bisa jadi sulit bagi pemula untuk mengatur.

MIDI di browser Web

Untuk membuat sesuatu yang lebih selaras dengan proyek ini dan kesederhanaannya, saya membangun alat Web yang sepenuhnya berfokus pada pengontrol MIDI.

Punchy: Implementasi WebMIDI dan WebAudio untuk pengontrol MIDI.

Itu dapat membaca pesan MIDI di browser apa pun yang mendukung WebMIDI JavaScript API. Kemudian memutar suara di synthesizer (menggunakan WebAudio API) atau di sampler, memuat suara khusus dari paket suara apa pun.

Siapkan Ableton Live

Untuk membuat Pengontrol MIDI berfungsi dengan Ableton Live, ikuti langkah-langkah sederhana ini dari dokumentasi resmi mereka.

Buka Preferences → Link MIDI dan pastikan "Input" memiliki "Track" dan "Remote" ON dan output memiliki "Remote" ON serta disebutkan dalam panduan:

Direkomendasikan: