Cara Membuat Pengontrol MIDI dengan Arduino

Cara Membuat Pengontrol MIDI dengan Arduino

Sebagai 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 untuk proyek Internet of Things (IoT), Arduino Uno sederhana (apa saja jenis Arduino yang berbeda?) memiliki lebih dari cukup daya untuk proyek ini.





Pertama kali menggunakan Arduino? Jangan khawatir, kami punya yang lengkap Panduan pemula Arduino 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 bukanlah audio! Data MIDI adalah seperangkat instruksi sederhana (satu instruksi disebut 'pesan') yang mungkin diimplementasikan oleh 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 berkomunikasi secara independen satu sama lain. Perangkat terhubung menggunakan kabel DIN 5-pin. DIN adalah singkatan dari 'German Institute for Standardization', dan hanyalah sebuah kabel dengan lima pin di dalam konektor. USB sering digunakan sebagai pengganti DIN 5-pin, atau antarmuka USB-MIDI dapat digunakan.

MIDI-Kabel-Pria



Kontrol Perubahan dan Perubahan Program

Ada dua jenis utama pesan MIDI: Control Change, dan Program Change.

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 dilengkapi dengan manual yang menjelaskan saluran dan pesan apa yang disetel secara default, dan cara mengubahnya (dikenal sebagai pemetaan MIDI).





Pesan Program Change (PC) lebih sederhana daripada pesan CC. Pesan PC terdiri dari satu nomor, dan digunakan untuk mengubah preset atau patch pada perangkat. Pesan PC kadang-kadang dikenal sebagai 'Perubahan Patch'. Mirip dengan pesan CC, produsen harus menyediakan dokumen yang menguraikan prasetel apa yang diubah oleh pesan tertentu.

Apa yang Anda Butuhkan

  • Arduino
  • Soket perempuan DIN 5-pin
  • 2x220 ohm resistor
  • 2 x 10k ohm resistor
  • 2 x sakelar sesaat
  • Kabel penghubung
  • Papan tempat memotong roti
  • kabel MIDI
  • Perangkat MIDI atau antarmuka USB
Air & Kayu 5 Pcs DIN 5 Pin PCB Mounting Soket Wanita untuk Keyboard PC BELI SEKARANG DI AMAZON

Bangun Rencana

Proyek ini akan cukup sederhana. Anda tentu saja 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 papan tempat memotong roti di sini, namun dimungkinkan untuk mentransfernya ke kotak proyek dan konektor yang disolder untuk solusi yang kuat.





Perakitan Sirkuit

Arduino-Midi-Controller-Sirkuit

Koneksi MIDI

MIDI-Pinout

Pasang soket MIDI Anda sebagai berikut:

  • MIDI pin 5 ke Arduino Transmit (TX) 1 melalui resistor 220 ohm
  • MIDI pin 4 ke Arduino +5V melalui resistor 220 ohm
  • MIDI pin 2 ke tanah Arduino

Koneksi Tombol

Tombol-tombol tersebut bekerja dengan mengubah resistansi yang 'dilihat' oleh Arduino. Pin Arduino melewati sakelar langsung ke ground ( RENDAH ) melalui resistor 10k ohm (resistor 'pull down', memastikan nilainya tetap rendah). Saat tombol ditekan, nilai yang terlihat oleh rangkaian berubah menjadi +5v tanpa resistor ( TINGGI ). Arduino dapat mendeteksi perubahan ini menggunakan digitalBaca(pin) memerintah. 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 setelah semua perangkat keras selesai, saatnya untuk mengujinya. Anda akan memerlukan antarmuka USB-MIDI (banyak antarmuka audio dapat melakukan ini) dan kabel MIDI. Port MIDI yang terhubung ke papan tempat memotong roti sedang mengirim data, jadi itu adalah outputnya. Komputer Anda menerima data, oleh karena itu adalah input. Proyek ini menggunakan Arduino yang luar biasa Perpustakaan MIDI v4.2 oleh Empat Puluh Tujuh Efek. Setelah Anda menginstal Perpustakaan, Anda dapat memasukkannya ke dalam kode Anda dengan pergi ke Sketsa > Sertakan Pustaka > MIDI .

Anda juga memerlukan program untuk memantau data MIDI yang masuk:

Hubungkan Arduino ke komputer Anda dan unggah kode tes berikut (jangan lupa untuk memilih papan dan port yang benar dari Alat > Papan dan Alat > Pelabuhan menu).

#include
#include
#include
#include
#include
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
Serial.begin(31250); // setup serial for MIDI
}
void loop() {
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(1000); // wait 1 second
midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel
delay(1000); // wait 1 second
}

Kode ini akan mengirim pesan CC, tunggu 1 detik, kirim pesan PC, lalu tunggu 1 detik tanpa batas. Jika semuanya bekerja 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 terhubung dengan benar - harus ada 2 pin cadangan di tepi luar
  • Periksa ulang 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 tetap mengalami masalah, mungkin ada baiknya memeriksa papan tempat memotong roti Anda. Papan murah terkadang bisa sangat tidak konsisten dan berkualitas rendah -- itu terjadi pada saya saat mengerjakan proyek ini.

Pengujian Tombol

Sekarang saatnya untuk menguji apakah tombol-tombol tersebut berfungsi dengan benar. Unggah kode tes berikut. MIDI tidak perlu dihubungkan untuk menguji bagian ini.

const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
void setup() {
Serial.begin(9600); // setup serial for text
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
}
void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
Serial.println('Button One Works!'); // log result
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
Serial.println('Button Two Works!'); // log result
delay(250);
}
}

}

Jalankan kode ini (tetapi tetap sambungkan kabel USB) dan buka Serial Monitor ( Kanan Atas > Monitor Serial ). Saat Anda menekan tombol, Anda akan melihat 'Tombol Satu Berfungsi!' atau 'Tombol Dua Bekerja!' tergantung pada tombol yang Anda tekan.

Ada satu catatan penting yang dapat diambil dari contoh ini - perangkat lunak tidak terpental. Ini adalah penundaan sederhana 10 milidetik (ms) antara memeriksa tombol dan kemudian memeriksa tombol lagi. Ini meningkatkan akurasi penekanan tombol dan membantu mencegah kebisingan yang memicu Arduino. Anda tidak harus melakukan ini, meskipun dianjurkan.

Membuat Pengontrol

Sekarang setelah semuanya terhubung dan berfungsi, saatnya untuk merakit pengontrol penuh.

Contoh ini akan mengirimkan pesan CC yang 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.

#include
#include
#include
#include
#include
const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel
delay(250);
}
}
}

Catatan -- Anda tidak akan dapat menggunakan Serial.println() dengan keluaran MIDI.

Jika Anda ingin mengirim pesan PC alih-alih CC, cukup ganti:

midiOut.sendControlChange(42,127,1);

Dengan:

midiOut.sendProgramChange(value, channel);

Sedang Beraksi

Di bawah ini adalah demonstrasi sebagai pengontrol untuk Ableton Live ( Perangkat lunak DJ terbaik untuk setiap anggaran ). Kanan atas menunjukkan pengukur audio, dan tengah atas menunjukkan pesan midi yang masuk (melalui Monitor MIDI pada OSX).

bagaimana cara melihat siapa yang memblokir saya di facebook

Sudahkah Anda Membuat Kontroler MIDI?

Ada banyak kegunaan praktis untuk pengontrol MIDI khusus. Anda dapat membangun unit yang dikendalikan kaki yang luas, atau pengontrol studio yang ramping. Dan jika Anda tertarik untuk membelinya, berikut adalah pengontrol MIDI USB terbaik yang dapat Anda beli.

Kredit Gambar: Keith Gentry melalui Shutterstock.com

Kami harap Anda menyukai item yang kami rekomendasikan dan diskusikan! MUO memiliki kemitraan afiliasi dan sponsor, jadi kami menerima bagian dari pendapatan dari beberapa pembelian Anda. Ini tidak akan memengaruhi harga yang Anda bayar dan membantu kami menawarkan rekomendasi produk terbaik.

Membagikan Membagikan Menciak Surel Apakah Layak Mengupgrade ke Windows 11?

Windows telah didesain ulang. Tetapi apakah itu cukup untuk meyakinkan Anda untuk beralih dari Windows 10 ke Windows 11?

Baca Selanjutnya
Topik-topik yang berkaitan
  • buatan sendiri
  • Perangkat Lunak DJ
  • Arduino
  • Elektronik
  • PAGI MENJELANG SIANG
Tentang Penulis Joe Coburn(136 Artikel Diterbitkan)

Joe adalah lulusan Ilmu Komputer dari University of Lincoln, Inggris. Dia adalah pengembang perangkat lunak profesional, dan ketika dia tidak menerbangkan drone atau menulis musik, dia sering terlihat sedang mengambil foto atau membuat video.

More From Joe Coburn

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan