Gawe kontroler MIDI dhewe karo Arduino

MIDI

Yen sampeyan seneng musik utawa langsung musisi amatir utawa profesional, mesthine ing omah sampeyan wis nglumpukake koleksi alat musik sing akeh. Kanggo nggawe campuran kasebut kanthi sampurna, luwih becik njaluk a Kontroler MIDI. Sayange, jinis obyek iki biasane larang banget supaya wong sing ora duwe akeh sumber daya angel entuk akses menyang kabeh sing bisa ditawakake.

Kanggo luwih ngerti babagan kontrol MIDI, kandhani tembung MIDI asale Antarmuka Digital Instrumen Musik, yaiku, jinis kontrol sing nggawe piranti musik elektronik bisa saling komunikasi. Yen sampeyan duwe keyboard elektronik ing omah, umpamane, kemungkinan antarmuka kasebut duwe antarmuka MIDI. Sadurunge terus maju, senadyan kasunyatan manawa ana rincian teknis tartamtu sing bisa nyebabake wong liya percaya, mesthine kudu jelas MIDI dudu audio.

Gawe kontroler MIDI dhewe kanthi tutorial sederhana iki

Yen wis jelas babagan iki, mesthine bakal luwih gampang sampeyan ngerti manawa MIDI mung gampang instruksi bisa ndhukung nganti 16 saluran independen, tegese bisa nganti 16 piranti beda sing komunikasi kanthi independen. Piranti kasebut kudu disambungake liwat kabel DIN 5-pin, sing umume kabel kanthi limang pin ing konektor. Minangka rinci, umume nggunakake USB tinimbang DIN 5-pin, yen nggunakake USB, kita kudu nggawe antarmuka USB-MIDI.

Tanpa wektu maneh, aku menehi sampeyan link sing bisa ditemokake tutorial langkah demi langkah kanthi akeh gambar deskriptif supaya bisa nindakake kabeh tumindak sing dibutuhake kanggo nggawe kontrol MIDI dhewe.

Artikel sing gegandhengan:
Cara ngganti jeneng pangguna lan sandhi Pi ing Raspberry Pi

Cara nggawe kontrol MIDI dhewe karo Arduino

konektor midi

Ana akeh wong sing butuh, kanthi alesan sing beda, pribadi lan profesional, kanggo nggunakake a kontrol MIDI khusus Amarga bisa uga lan minangka conto, ing sawetara wektu ing uripmu minangka seniman, tuku kontrol MIDI sing murah bisa uga ora bisa nyukupi pangarepan utawa kabutuhan sampeyan, nalika wis tekan wektune, milih versi profesional bisa uga kakehan sumber finansial. kabutuhan, uga akeh fitur sing bisa ditawakake.

Amarga iki, dina iki aku pengin nuduhake kabeh sing dibutuhake supaya sampeyan bisa nggawe kontrol MIDI dhewe sing nuduhake kabeh sing dibutuhake kanggo konstruksi lan nawakake piranti lunak sing kudu diinstal. Minangka rinci, kanggo proyek iki panggunaan dewan Arduino iku penting, kontroler sing cukup kuat kanggo nindakake tugas iki.

Artikel sing gegandhengan:
Cara nggawe robot: 3 pilihan sing beda

Apa kontroler MIDI?

midi

Sejatine kontrol MIDI tanggung jawab, umume ngomong, kanggo nyambungake piranti musik sing beda-beda. Akeh instrumen sing nggabungake antarmuka MIDI, sanajan iki kudu jelas amarga ana akeh pangguna sing asring bingung, MIDI dudu file audio, nanging sawetara instruksi sing gampang banget sing bisa ditampa instrumen supaya bisa ngontrol beda. utawa setelan swara.

Ing njero MIDI ana rong jinis sing bedaIng tangan siji, kita duwe sing diarani Change Control, sing duwe nomer kontrol lan regane antara 0 lan 127. Amarga iki, pesen bisa diterbitake ing endi paramèter sing beda kayata volume utawa nada bisa diganti. Instrumen sing beda sing nampa MIDI kudu nggawa manual supaya nerangake saluran lan pesen sing disetel minangka standar lan cara ngganti.

Ing urutan nomer loro, kita duwe Program Ganti, sawetara pesen sing sabanjure luwih gampang tinimbang karo Kontrol Ganti. Jinis pesen iki digunakake kanggo ngganti prasetel utawa tambalan piranti. Kaya ing Kontrol Ganti, bebarengan karo instrumen sampeyan, pabrikan kudu nyakup manual sing nuduhake prasetel sing diganti karo pesen tartamtu.

Bagian sing Diperlukan kanggo Mbangun Controller MIDI krasan dhewe

Skema konektor Midi

Kanggo bisa nggawe kontrol MIDI dhewe, sampeyan butuh seri tambahan, kaya sing wis kasebut, menyang dewan Arduino. Sadurunge nerusake, cukup kandhani manawa mbesuk amarga sampeyan pengin nggedhekake proyek, sampeyan butuh luwih akeh prekara, sanajan ing wektu iki kanthi sawetara potongan sampeyan bakal duwe akeh.

Kita butuh kabel DIN 5-tiang wanita, 2 resistor 220 ohm, 2 saklar sakedap, 2 resistor 10k ohm, kabel sambungan, papan sirkuit, kabel MIDI lan piranti MIDI utawa antarmuka USB. Mung nganggo potongan-potongan kasebut, sampeyan bisa miwiti, kanthi ngetutake langkahku, kanggo nggawe kontrol MIDI dhewe.

Langkah pisanan

Skema midi Arduino

Sadurunge miwiti, aku menehi gambar supaya sampeyan bisa ndeleng pin kabel MIDI, kanthi cara iki supaya bisa ngerti pin kanthi bener lan utamane ing endi saben kudu nyambung. Umumé, sing kudu sampeyan lakoni yaiku nyambungake pin 5 kabel menyang resistor 220 ohm lan saka kana menyang Arduino Transmit 1, pin 4 menyang resistor 220 ohm lan saka kana menyang soket 5V Arduino nalika pin 2 kudu disambungake menyang sambungan Ground saka kontroler sampeyan.

Sawise langkah iki rampung, sampeyan ora duwe diagram rinci ing foto sing ana ing sangisore garis kasebut, saiki wayahe nyambungake tombol kasebut. Gagasan ing bagean iki yaiku kanggo entuk, nggunakake pin digitalRead (bisa ndeteksi nalika voltase sing tekan wis diganti) supaya bisa nggunakake transistor kanggo entuk, kanthi mung tombol pencet. Kanggo iki, kita mung kudu nggunakake tombol, supaya ing sisih kiwa disambungake menyang 5V, sisih tengen dadi resistensi 220 ohm lan saka kana menyang lemah, mula, kita uga nyambung sisih tengen menyang pin 6 Tombol nomer loro bakal diinstal kanthi cara sing padha, kaya sing sampeyan deleng ing diagram, tinimbang pin 6 kita sambung karo 7.

Piranti lunak kanggo digunakake kanggo kontroler midi ing omah

Sawise rampung karo kabeh piranti keras, saiki wayahe nyambung instrumen lan tes kita. Sadurunge, kita kudu duwe Antarmuka USB-MIDI lan kabel MIDI kanggo nyambungake papan, sing ngirim data, karo komputer. Kanggo nggayuh iki, kita milih perpustakaan MIDI v4.2 sing digawe wong lanang saka Forty Seven Effects sing kudu diinstal ing Arduino lan kalebu ing proyek kasebut.

Ing kasus komputer, kita butuh program sing bisa ngawasi kabeh data MIDI sing kasedhiya saka Arduino. Kanggo iki, kita duwe macem-macem kemungkinan kayata MIDI Monitor (OS X), MIDI-OX (Windows) utawa Kmidimon (Linux)

Kanggo nindakake tes sethithik, kita mung kudu nyambungake Arduino menyang komputer lan nglakokake kode ing ngisor iki:

#include
#include
#include
#include
#include

MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // crear objeto de salida MIDI llamado midiOut

void setup() {
Serial.begin(31250); // configuracion de serial para MIDI
}

void loop() {
midiOut.sendControlChange(56,127,1); // envío de señal MIDI CC -- 56 = nota, 127 = velocidad, 1 = canal
delay(1000); // retraso
midiOut.sendProgramChange(12,1); // envío de una señal MIDI PC -- 12 = valor, 1 = canal
delay(1000); // retraso de 1 segundo
}

Yen kabeh wis lancar, sampeyan bisa mbukak tes tombol, yen tes iki durung bisa digunakake, sampeyan kudu nggawe manawa kabeh koneksi bener, sirkuit kasebut padha karo diagram sadurunge, sirkuit disambungake menyang antarmuka USB-MIDI nganggo kabel MIDI, kabel port MIDI wis disambungake kanthi bener, kabel MIDI disambungake menyang input antarmuka USB-MIDI, papan Arduino disambungake kanthi bener karo jaringan listrik lan duwe cukup ...

Tes yen tombol bisa digunakake kanthi bener

Sadurunge terus menehi feed program karo fungsi lan kode anyar sing bisa ilang, luwih becik mandheg sawetara wektu lan nyoba manawa tombol bisa digunakake kanthi bener. Kanggo wong-wong mau, kita kudu ngemot kode ing ngisor iki:

const int boton1 = 6; // asignacion del boton a una variable
const int boton2 = 7; // asignacion del boton a una variable

void setup() {
Serial.begin(9600); // configuracion del serial
pinMode(boton1,INPUT); // configuracion del boton1 como entrada
pinMode(boton2,INPUT); // configuracion del boton2 como entrada
}

void loop() {

if(digitalRead(boton1) == HIGH) { // prueba de estado del boton1
delay(10); // retraso
if(digitalRead(boton1) == HIGH) { // prueba de estado de nuevo
Serial.println("Boton 1 funciona correctamente!"); // log
delay(250);
}
}

if(digitalRead(boton2) == HIGH) { // prueba de boton 2
delay(10); // retraso
if(digitalRead(boton2) == HIGH) { // prueba de estado de nuevo
Serial.println("Boton 2 funciona correctamente!"); // log
delay(250);
}
}

}

Kode iki mung kudu dikompilasi lan dieksekusi, kanthi kabel USB sing disambungake, program bakal menehi katrangan manawa ana tombol sing ditekan.

Kita nggawe kontroler MIDI krasan

Sawise rampung tes iki, saiki wayahe nglumpukake kontroler MIDI dhewe, mula mung kudu nyusun kode ing ngisor iki:

#include
#include
#include
#include
#include

const int boton1 = 6; // asignamos boton a la variable
const int boton2 = 7; // asignamos boton a la variable

MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut

void setup() {
pinMode(boton1,INPUT); // configuracion del boton1 como una entrada
pinMode(boton2,INPUT); // configuracion del boton2 como una entrada
Serial.begin(31250); // configuracion MIDI de salida
}

void loop() {
if(digitalRead(buttonOne) == HIGH) { // comprobacion de estado
delay(10); // retraso
if(digitalRead(buttonOne) == HIGH) { // comprobacion de estado de nuevo
midiOut.sendControlChange(56,127,1); // envío un MIDI CC -- 56 = nota, 127 = velocidad, 1 = canal
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // comprobacion de estado
delay(10); // retraso
if(digitalRead(buttonTwo) == HIGH) { // nueva comprobacion de estado
midiOut.sendControlChange(42,127,1); // envío un MIDI CC -- 42 = nota, 127 = velocidad, 1 = canal
delay(250);
}
}
}

Minangka detil, ujar manawa sampeyan ora bisa nggunakake printah Serial.println () kanthi output MIDI wektu iki, yen sampeyan pengin nuduhake sawetara jinis pesen ing komputer, cukup ganti:

midiOut.sendControlChange(42,127,1);

dening:

midiOut.sendControlChange(value, channel);

endi nilai lan saluran kudu duwe nilai sing dipengini sing pengin ditampilake.

Tuladha operasi:


Konten artikel kasebut sesuai karo prinsip kita yaiku etika editorial. Kanggo nglaporake klik kesalahan Kene.

4 komentar, tinggalake sampeyan

Ninggalake komentar sampeyan

Panjenengan alamat email ora bisa diterbitake.

*

*

  1. Tanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Kontrol SPAM, manajemen komentar.
  3. Legitimasi: idin sampeyan
  4. Komunikasi data: Data kasebut ora bakal dikomunikasikake karo pihak katelu kajaba kanthi kewajiban ukum.
  5. Panyimpenan data: Database sing dianakake dening Occentus Networks (EU)
  6. Hak: Kapan wae sampeyan bisa matesi, mulihake lan mbusak informasi sampeyan.

  1.   Alfred ngandika

    Arduino nawakake akeh kemungkinan kanggo nindakake proyek dhewe https://www.juguetronica.com/arduino . Salah sawijining perkara sing paling apik yaiku sampeyan bisa miwiti tanpa ahli lan terus sinau, saengga motivasi awak dhewe dadi mandhiri.

  2.   Danel Roman ngandika

    Greetings.

    Aku nyoba nindakake tutorial sing hebat iki… nanging # kalebu ora rampung….

    Apa sampeyan bisa menehi katrangan marang sing penting?

    Matur nuwun banget.

  3.   Uel ngandika

    Wigati
    Aku pengin nggawe modul drum elektronik kanthi ngganti tombol nganggo input jack sing bakal teka sinyal piezoelektrik.
    Apa sampeyan bisa nindakake?

  4.   Eduardo Valenzuela ngandika

    Mangga, yen sampeyan bisa menehi kalebu kode iki, aku kepengin banget karo proyek iki.

Tes inggrisTes Katalankuis Spanyol