Iklan
Sebagai seorang musisi yang telah mengumpulkan koleksi alat musik dan kotak suara, Arduino yang sederhana adalah alat yang sempurna untuk membuat pengontrol MIDI khusus. Sementara Raspberry Pi mungkin telah mengambil mahkota Internet of Things (IoT) Internet of Things: 10 Produk Berguna yang Harus Anda Coba pada tahun 2016Internet of Things meningkat pada tahun 2016, tetapi apa artinya sebenarnya? Bagaimana Anda secara pribadi mendapat manfaat dari Internet of Things? Berikut adalah beberapa produk bermanfaat untuk diilustrasikan. Baca lebih banyak proyek, Arduino Uno sederhana (apa saja jenis-jenis Arduino? Arduino Buying Guide: Papan Yang Seharusnya Anda Dapatkan?Ada begitu banyak jenis papan Arduino di luar sana, Anda akan dimaafkan karena bingung. Yang mana yang harus Anda beli untuk proyek Anda? Biarkan kami membantu, dengan panduan pembelian Arduino ini! Baca lebih banyak ) memiliki kekuatan lebih dari cukup untuk proyek ini.
Pertama kali menggunakan Arduino? Jangan khawatir, kami sudah lengkap Panduan pemula Arduino Memulai Dengan Arduino: A Beginner's GuideArduino adalah platform prototipe elektronik sumber terbuka yang didasarkan pada perangkat keras dan lunak yang fleksibel dan mudah digunakan. Ini ditujukan untuk seniman, perancang, penggemar, dan siapa pun yang tertarik untuk menciptakan objek atau lingkungan interaktif. Baca lebih banyak untuk membaca sebelum Anda menangani proyek ini.
Apa itu MIDI?
MIDI adalah singkatan dari Musical Instrument Digital Interface. Ini menguraikan cara standar untuk perangkat musik untuk berkomunikasi satu sama lain. Jika Anda memiliki keyboard elektronik, Anda mungkin memiliki antarmuka MIDI. Meskipun ada beberapa detail teknis yang terlibat dalam implementasi MIDI, penting untuk diingat bahwa MIDI bukan audio! Data MIDI adalah serangkaian instruksi sederhana (satu instruksi disebut "pesan") yang dapat diterapkan perangkat lain untuk membuat suara atau parameter kontrol yang berbeda.
MIDI mendukung 16 saluran. Ini berarti bahwa setiap kabel dapat mendukung 16 perangkat berbeda yang saling berkomunikasi secara independen. Perangkat terhubung menggunakan kabel DIN 5-pin. DIN adalah singkatan dari "German Institute for Standardization", dan hanya sebuah kabel dengan lima pin di dalam konektor. USB sering digunakan sebagai pengganti DIN 5-pin, atau antarmuka USB-MIDI dapat digunakan.
Kontrol Perubahan dan Perubahan Program
Ada dua jenis utama pesan MIDI: Kontrol Ubah, dan Perubahan Program.
Pesan Control Change (CC) berisi nomor pengontrol dan nilai antara 0 dan 127. Pesan CC sering digunakan untuk mengubah pengaturan seperti volume atau nada. Perangkat yang menerima MIDI harus datang dengan manual yang menjelaskan saluran dan pesan apa yang diatur secara default, dan bagaimana mengubahnya (dikenal sebagai pemetaan MIDI).
Pesan Perubahan Program (PC) lebih sederhana dari pesan CC. Pesan PC terdiri dari satu nomor, dan digunakan untuk mengubah preset atau patch pada perangkat. Pesan PC terkadang dikenal sebagai "Patch Change". Mirip dengan pesan CC, pabrikan harus menyediakan dokumen yang menguraikan preset apa yang diubah oleh pesan tertentu.
Apa yang Anda Butuhkan?
- Arduino
- Soket betina DIN 5-pin
- 2 x 220 ohm resistor
- 2 x 10k resistor ohm
- 2 x sakelar sesaat
- Kabel pengait
- Papan tempat memotong roti
- Kabel MIDI
- Perangkat MIDI atau antarmuka USB
Bangun Rencana
Proyek ini akan sangat sederhana. Tentu saja Anda dapat menambahkan lebih banyak tombol atau perangkat keras sesuai dengan kebutuhan Anda. Hampir semua Arduino akan cocok - hanya tiga pin yang diperlukan untuk contoh ini. Proyek ini terdiri dari dua tombol untuk mengontrol program, port MIDI untuk mengirim data, dan perangkat untuk menerima pesan. Sirkuit ini telah dibangun di atas a papan tempat memotong roti Elektronik Pemula: 10 Keterampilan yang Harus Anda KetahuiBanyak dari kita bahkan belum pernah menyentuh besi solder - tetapi membuat sesuatu bisa sangat bermanfaat. Berikut ini sepuluh keterampilan elektronik DIY paling dasar untuk membantu Anda memulai. Baca lebih banyak di sini, namun dimungkinkan untuk mentransfernya ke kotak proyek dan konektor yang disolder untuk solusi yang kuat.
Majelis sirkuit
Koneksi MIDI
Pasang soket MIDI Anda sebagai berikut:
- Pin MIDI 5 ke Arduino Transmit (TX) 1 melalui resistor 220 ohm
- Pin MIDI 4 ke Arduino + 5V melalui resistor 220 ohm
- Pin MIDI 2 ke Arduino ground
Koneksi Tombol
Tombol-tombol ini bekerja dengan mengubah hambatan yang "dilihat" Arduino. Pin Arduino melewati sakelar langsung ke tanah (RENDAH) melalui resistor 10k ohm (resistor "pull down", memastikan nilainya tetap rendah). Ketika tombol ditekan, nilai yang dilihat oleh sirkuit berubah menjadi + 5v tanpa resistor (TINGGI). Arduino dapat mendeteksi perubahan ini menggunakan digitalRead (pin) perintah. Hubungkan tombol ke pin 6 dan 7 pada input / output digital Arduino (I / O). Hubungkan kedua tombol:
- Sisi kiri tombol ke + 5V
- Sisi kanan tombol ke Arduino Ground melalui resistor 10k ohm
- Sisi kanan tombol ke pin Arduino (6 atau 7)
Pengujian MIDI
Sekarang semua perangkat keras selesai, sekarang saatnya untuk mengujinya. Anda akan memerlukan antarmuka USB-MIDI (banyak antarmuka audio dapat melakukan ini) dan kabel MIDI. Port MIDI yang dihubungkan dengan kabel di papan tempat memotong kayu sedang mengirimkan data, jadi itu adalah output. Komputer Anda menerima data, oleh karena itu ia adalah input. Proyek ini menggunakan Arduino yang sangat baik Perpustakaan MIDI v4.2 oleh Empat Puluh Tujuh Efek. Setelah Anda menginstal Perpustakaan, Anda dapat memasukkannya ke dalam kode dengan masuk ke Sketsa> Sertakan Perpustakaan> MIDI.
Anda juga membutuhkan program untuk memantau data MIDI yang masuk:
- Monitor MIDI untuk OS X
- MIDI-OX untuk Windows
- KMidimon untuk Linux
Hubungkan Arduino Memulai dengan Starter Kit Arduino Anda - Menginstal Driver & Menyiapkan Board & PortJadi, Anda telah membeli sendiri kit starter Arduino, dan mungkin beberapa komponen keren acak lainnya - sekarang apa? Bagaimana Anda memulai pemrograman dengan hal Arduino ini? Bagaimana Anda mengaturnya ... Baca lebih banyak ke komputer Anda dan unggah kode uji berikut (jangan lupa untuk memilih papan dan port yang benar dari Alat> Papan dan Alat> Port menu).
#termasuk
#termasuk
#termasuk
#termasuk
#termasuk MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // buat objek MIDI yang disebut midiOut void setup () {Serial.begin (31250); // setup serial untuk MIDI. } void loop () {midiOut.sendControlChange (56.127,1); // kirim MIDI CC - 56 = catatan, 127 = kecepatan, 1 = penundaan saluran (1000); // tunggu 1 detik midiOut.sendProgramChange (12,1); // kirim PC MIDI - 12 = nilai, 1 = penundaan saluran (1000); // tunggu 1 detik. }
Kode ini akan mengirim pesan CC, tunggu 1 detik, kirim pesan PC lalu tunggu 1 detik tanpa batas. Jika semuanya berfungsi dengan benar, Anda akan melihat pesan muncul di monitor MIDI Anda.
Jika tidak ada yang terjadi, jangan panik! Coba pemecahan masalah:
- Pastikan semua koneksi sudah benar
- Periksa port MIDI kabel dengan benar - harus ada 2 pin cadangan di tepi luar
- Periksa kembali apakah sirkuitnya benar
- Pastikan sirkuit terhubung ke antarmuka USB-MIDI dengan kabel MIDI
- Periksa kabel MIDI Anda terhubung ke memasukkan pada antarmuka USB-MIDI Anda
- Pastikan Arduino memiliki kekuatan
- Instal driver yang benar untuk antarmuka USB-MIDI Anda
Jika Anda masih mengalami masalah mungkin perlu memeriksa papan tempat memotong roti Anda. Papan murah kadang-kadang bisa sangat tidak konsisten dan berkualitas rendah - itu terjadi pada saya saat mengerjakan proyek ini.
Pengujian Tombol
Sekarang saatnya menguji tombol-tombol tersebut bekerja dengan benar. Unggah kode uji berikut. MIDI tidak perlu terhubung untuk menguji bagian ini.
const int buttonOne = 6; // tetapkan pin tombol ke variabel. const int buttonTwo = 7; // tetapkan pin tombol ke pengaturan void variabel () {Serial.begin (9600); // setup serial untuk pinMode teks (buttonOne, INPUT); // tombol pengaturan sebagai input pinMode (buttonTwo, INPUT); // tombol pengaturan sebagai input. } void loop () {if (digitalRead (buttonOne) == HIGH) {// periksa tombol delay negara (10); // peranti lunak mati jika (digitalRead (buttonOne) == TINGGI) {// centang tombol lagi Serial.println ("Tombol Satu Bekerja!"); // penundaan hasil log (250); }} if (digitalRead (buttonTwo) == HIGH) {// periksa tombol delay negara (10); // perangkat lunak turun bouncing if (digitalRead (buttonTwo) == HIGH) {// centang tombol lagi Serial.println ("Tombol Dua Bekerja!"); // penundaan hasil log (250); } } }
Jalankan kode ini (tetapi tetap terhubung dengan kabel USB) dan buka Serial Monitor (Kanan Atas> Monitor Seri). Ketika Anda menekan tombol, Anda akan melihat "Tombol Satu Bekerja!" atau "Tombol Dua Berfungsi!" tergantung pada tombol yang Anda tekan.
Ada satu catatan penting untuk diambil dari contoh ini - peranti lunaknya harus dihentikan. Ini adalah penundaan 10 milidetik (ms) sederhana antara memeriksa tombol dan kemudian memeriksa tombol lagi. Ini meningkatkan akurasi tombol tekan dan membantu mencegah noise yang memicu Arduino. Anda tidak harus melakukan ini, meskipun dianjurkan.
Membuat Pengontrol
Sekarang semuanya terhubung dan bekerja, sekarang saatnya untuk memasang pengontrol penuh.
Contoh ini akan mengirim pesan CC berbeda untuk setiap tombol yang ditekan. Saya menggunakan ini untuk mengontrol Ableton Live 9.6 di OS X. Kode ini mirip dengan kedua sampel pengujian di atas.
#termasuk
#termasuk
#termasuk
#termasuk
#termasuk const int buttonOne = 6; // tetapkan pin tombol ke variabel. const int buttonTwo = 7; // tetapkan pin tombol ke variabel MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // buat objek MIDI yang disebut midiOut void setup () {pinMode (buttonOne, INPUT); // tombol pengaturan sebagai input pinMode (buttonTwo, INPUT); // tombol pengaturan sebagai input Serial.begin (31250); // atur output MIDI. } void loop () {if (digitalRead (buttonOne) == HIGH) {// periksa tombol delay negara (10); // perangkat lunak de-bouncing if (digitalRead (buttonOne) == HIGH) {// periksa tombol lagi midiOut.sendControlChange (56.127,1); // kirim MIDI CC - 56 = catatan, 127 = kecepatan, 1 = penundaan saluran (250); }} if (digitalRead (buttonTwo) == HIGH) {// periksa tombol delay negara (10); // software de-bounce if (digitalRead (buttonTwo) == HIGH) {// centang tombol state lagi midiOut.sendControlChange (42.127,1); // kirim MIDI CC - 42 = catatan, 127 = kecepatan, 1 = penundaan saluran (250); } } }
Catatan - Anda tidak akan dapat menggunakan Serial.println () dengan output MIDI.
Jika Anda ingin mengirim pesan PC dan bukan CC cukup ganti:
midiOut.sendControlChange (42.127,1);
Dengan:
midiOut.sendProgramChange (nilai, saluran);
Beraksi
Di bawah ini adalah demonstrasi sebagai pengontrol untuk Ableton Live (Perangkat lunak DJ terbaik untuk setiap anggaran Perangkat Lunak DJ Terbaik Untuk Setiap AnggaranPerangkat lunak pencampuran yang baik dapat membuat semua perbedaan dalam kinerja Anda. Baik Anda menggunakan Mac, Windows, atau Linux, setiap tingkat keterampilan dan anggaran dipenuhi jika Anda ingin mulai menjadi DJ. Baca lebih banyak ). Kanan atas menunjukkan meter audio, dan tengah atas menunjukkan pesan midi yang masuk (via Monitor MIDI pada OS X).
Sudahkah Anda Membuat Pengontrol MIDI?
Ada banyak kegunaan praktis untuk pengontrol MIDI khusus. Anda bisa membangun unit yang luas dengan kaki, atau pengontrol studio yang ramping. Dan jika Anda tertarik untuk membelinya, ini dia pengontrol MIDI USB terbaik 9 Pengontrol MIDI USB Terbaik untuk MusisiMencari pengontrol USB MIDI? Berikut adalah pengontrol MIDI terbaik yang dapat Anda beli sekarang, terlepas dari anggaran. Baca lebih banyak kamu dapat membeli.
Kredit Gambar: Keith Gentry melalui Shutterstock.com
Joe adalah lulusan Ilmu Komputer dari University of Lincoln, Inggris. Dia adalah pengembang perangkat lunak profesional, dan ketika dia tidak terbang drone atau menulis musik, dia sering ditemukan mengambil foto atau memproduksi video.