Ngadamel kontroler MIDI anjeun nyalira ku Arduino

Midi

Upami anjeun pameget musik atanapi langsung musisi amatir atanapi propésional, pastina di bumi anjeun anjeun parantos ngumpulkeun koleksi alat musik anu hébat. Sangkan campuran ieu sampurna, langkung saé kéngingkeun a MIDI controller. Hanjakalna, jenis objék ieu biasana lumayan mahal supados jalma anu henteu gaduh seueur sumberdaya ngagaduhan aksés sesah kana sagala anu tiasa ditawarkeun.

Pikeun langkung ngartos naon anu dimaksud MIDI controller, bejakeun yén kecap MIDI asalna Alat Musik Digital Interface, nyaéta, samacam kontrol anu ngajantenkeun alat musik éléktronik tiasa saling komunikasi. Upami anjeun ngagaduhan kibor éléktronik di bumi, contona, éta sigana henteu ngagaduhan interface MIDI. Sateuacan neraskeun mayunan, sanaos kanyataanna aya detil téknis tangtu anu tiasa ngakibatkeun hiji jalma percaya sanésna, éta kedah jelas pisan MIDI sanés audio.

Ngadamel kontroler MIDI anjeun nyalira ku tutorial saderhana ieu

Sakali kami jelas ngeunaan ieu, pastina bakal langkung gampang pikeun anjeun pikeun ngartos yén MIDI ngan saukur saderhana set instruksi sanggup ngadukung nepi ka 16 saluran mandiri, anu hartosna aya tiasa dugi ka 16 alat anu béda-béda komunikasi sacara mandiri. Alat-alat ieu kedah disambungkeun ngalangkungan kabel DIN 5-pin, anu dasarna kabel sareng lima pin dina konektor. Salaku jéntréna, lumayan pikeun ngagunakeun USB tibatan DIN 5-pin, upami nganggo USB urang kedah ngadamel interface USB-MIDI.

Tanpa ado salajengna, kuring ngantepkeun anjeun kana tautan anu anjeun tiasa mendakannana tutorial undak-usuk kalayan seueur gambar deskriptif dimana urang tiasa ngalakukeun sagala tindakan anu diperyogikeun pikeun nyiptakeun kontroler MIDI urang sorangan.

Tulisan anu aya hubunganana:
Kumaha ngarobih nami pangguna sareng kecap akses Pi dina Raspberry Pi kami

Kumaha carana ngadamel pengendali MIDI anjeun nyalira ku Arduino

panyambungna Midi

Seueur jalma anu peryogi, ku alesan anu béda-béda pribadi sareng propésional, pikeun ngagunakeun pinuh MIDI controller Kusabab meureun sareng salaku conto, dina sababaraha waktos dina kahirupan anjeun salaku seniman, mésér kontributor MIDI anu murah panginten henteu tiasa dipiharepkeun sareng kabutuhan anjeun nalika, nalika waktuna waktuna, milih pikeun vérsi propésional tiasa kaleuleuwihi dina duanana sumber kauangan. peryogi, ogé sajumlah ageung fitur anu aranjeunna tiasa nawiskeun.

Kusabab ieu, dinten ieu kuring hoyong ningalikeun anjeun sadayana anu anjeun peryogikeun sahingga anjeun tiasa ngadamel pengendali MIDI anjeun nyalira nunjukkeun sadayana anu diperyogikeun pikeun pangwangunan sareng nawiskeun parangkat lunak anu anjeun kedah instal. Salaku jéntré, pikeun proyék ieu panggunaan dewan Arduino penting pisan, pengendali anu cukup kuat pikeun ngalaksanakeun tugas ieu.

Tulisan anu aya hubunganana:
Kumaha carana ngadamel robot: 3 pilihan anu béda

Naon kontroler MIDI?

midi

Dasarna, hiji MIDI controller tanggung jawab, sacara umum, pikeun nyambungkeun alat musik anu béda-béda. Seueur instrumen anu ngahijikeun antarbeungeut MIDI, sanaos ieu kedah jelas pisan kumargi seueur pangguna anu sering lieur, MIDI sanés file audio, tapi sét instruksi anu saderhana anu tiasa nampi instrumén pikeun ngadamel kontrol anu béda. atanapi setélan sora.

Di jero MIDI aya dua jinis anu bédaDi hiji sisi kami ngagaduhan anu disebat Change Control dimana éta ngagaduhan nomer pengendali sareng nilai antara 0 sareng 127. Hatur nuhun kana ieu, pesen tiasa dikaluarkeun dimana parameter anu béda sapertos volume atanapi nada tiasa dirobih. Instrumén anu béda anu nampi MIDI kedah nyandak manual ku aranjeunna ngajelaskeun saluran sareng pesen mana anu ditetepkeun sacara standar sareng cara ngarobihna.

Di tempat kadua urang gaduh Program Change, mangrupikeun serangkaian pesen anu dina gilirannana langkung saderhana tibatan anu ngawangun Control Change. Jinis-jinis pesen ieu dianggo pikeun ngarobih prasetél atanapi tambalan hiji alat. Sapertos dina Change Control, babarengan sareng instrumen anjeun pabrikan kedah ngalebetkeun manual nunjukkeun prédét mana anu dirobih ku pesen khusus.

Bagian Dipikabutuh pikeun Ngawangun Kontrol MIDI buatan Anjeun sorangan

Skéma konektor Midi

Pikeun tiasa ngawangun pengendali MIDI anjeun nyalira anjeun peryogi séép potongan salian, sapertos anu parantos kami sebatkeun, ka dewan Arduino. Sateuacan neraskeun, kantun nyaritakeun yén meureun, kahareupna kusabab anjeun badé ngalegaan proyek, anjeun peryogi langkung seueur hal, sanaos dina waktos ieu ku sababaraha potongan anjeun bakal gaduh seueur.

Urang peryogi kabel DIN bikang 5-kutub, résistor 2 220 ohm, 2 sakedap saklar, 2 résistor 10k ohm, kabel sambungan, papan sirkuit, kabel MIDI sareng alat MIDI atanapi antarbeungeut USB. Kalayan ngan ukur potongan-potongan ieu anjeun tiasa ngamimitian, nuturkeun léngkah kuring, pikeun ngadamel kontroler MIDI anjeun nyalira.

Léngkah munggaran

Skéma midi Arduino

Sateuacan ngawitan kuring ngantunkeun anjeun gambar dimana anjeun tiasa ningali pin tina kabel MIDI anjeun, ku cara ieu urang tiasa leres ngaidentipikasi pin sareng khususna dimana masing-masing kedah sambung. Sacara umum, sadayana anu anjeun kedah lakukeun dina titik ieu nyambungkeun pin 5 tina kabel kana résistor 220 ohm sareng ti sana ka Arduino Transmit 1, pin 4 ka résistor 220 ohm sareng ti ditu ka stop kontak 5V of Arduino bari pin 2 kedah disambungkeun kana sambungan Ground tina controller anjeun.

Sakali léngkah ieu réngsé, anjeun henteu ngagaduhan diagram lengkep dina poto anu aya di handapeun garis ieu, parantos waktuna sambungkeun tombol-tombolna. Gagasan dina bagian ieu nyaéta pikeun ngahontal, nganggo pin digitalRead (sanggup ngadeteksi nalika voltase anu ngahontal éta robih) janten tiasa nganggo transistor pikeun ngahontal, kalayan mencét tombol. Pikeun ieu kami ngan ukur kedah nganggo tombol sahingga, di belah kénca éta kami sambungkeun ka 5V, sisi katuhu kana résistansi 220 ohm sareng ti ditu ka darat bari, dina gilirannana, urang ogé nyambungkeun sisi katuhu ka pin 6 Tombol anu kadua bakal dipasang dina cara anu sami sanaos, sakumaha anjeun tiasa tingali dina diagram, tibatan pin 6 urang sambungkeun kana 7.

Parangkat lunak anu dianggo pikeun home Midi controller

Sakali urang parantos bérés sareng sadaya pakakasna, waktosna pikeun nyambungkeun instrumen sareng tés urang. Sateuacan éta urang kedah gaduh Antarmuka USB-MIDI sareng kabel MIDI pikeun nyambungkeun papan, anu ngirim data, sareng komputer urang. Pikeun ngahontal ieu, kami parantos milih perpustakaan MIDI v4.2 anu diciptakeun ku jalma-jalma ti Opat puluh Puluh Pangaruh anu urang kedah dipasang dina Arduino sareng dilebetkeun kana proyék.

Dina kasus komputer, urang peryogi program anu sanggup ngawaskeun sadaya data MIDI anu sumping tina Arduino. Pikeun ieu urang gaduh kamungkinan anu béda sapertos MIDI Monitor (OS X), MIDI-OX (Windows) atanapi Kmidimon (Linux)

Pikeun ngalakukeun sakedik tés urang kedah nyambungkeun Arduino kana komputer urang sareng ngajalankeun kode ieu:

#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
}

Upami sadayana parantos saé, anjeun tiasa kana tés tombol, upami tés ieu henteu hasil pikeun anjeun anjeun kedah mastikeun yén sadaya koneksi leres, sirkuitna sami sareng diagram sateuacanna, sirkuit disambungkeun kana antarmuka USB-MIDI nganggo kabel MIDI, kabel port MIDI nyambung leres, kabel MIDI disambungkeun kana input interface USB-MIDI, papan Arduino leres nyambung kana jaringan listrik sareng éta ngagaduhan kakuatan anu cekap ...

Nguji yén tombol tiasa leres

Sateuacan neraskeun tuang program kami nganggo pungsi sareng kode énggal anu tiasa urang kasasar, éta patut dieureunkeun sakedap na tés yén tombol tiasa leres. Pikeun aranjeunna urang kedah ngamuat kode ieu:

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 ieu kedah disusun sareng dieksekusi ku kituna, kalayan kabel USB disambungkeun, program nyarios ka kami upami aya tombol anu diteken.

Kami nyiptakeun controller MIDI homemade kami

Sakali kami parantos ngalaksanakeun tés ieu, parantos waktuna pikeun ngarakit MIDI sorangan pikeun éta, anjeun ngan ukur kedah nyusun kode ieu:

#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);
}
}
}

Salaku jéntré, ngawartosan anjeun yén anjeun moal tiasa nganggo paréntah Serial.println () kalayan kaluaran MIDI waktos ieu, upami anjeun hoyong nunjukkeun sababaraha jinis pesen dina komputer, tinggal robih:

midiOut.sendControlChange(42,127,1);

ku:

midiOut.sendControlChange(value, channel);

dimana nilai sareng saluran kedah ngagaduhan nilai anu dipikahoyong anu anjeun hoyong tampilkeun.

Conto operasi:


Eusi tulisan taat kana prinsip urang tina étika éditorial. Pikeun ngalaporkeun kasalahan klik di dieu.

4 koméntar, tinggalkeun anjeun

Ninggalkeun koméntar anjeun

email alamat anjeun moal diterbitkeun. Widang diperlukeun téh ditandaan ku *

*

*

  1. Jawab data: Miguel Ángel Gatón
  2. Tujuan tina data: Kontrol SPAM, manajemén koméntar.
  3. Legitimasi: idin anjeun
  4. Komunikasi data: Data moal dikomunikasikan ka pihak katilu kacuali ku kawajiban hukum.
  5. Panyimpenan data: Basis data anu diayakeun ku Occentus Networks (EU)
  6. Hak: Iraha waé anjeun tiasa ngawatesan, cageur sareng mupus inpormasi anjeun.

  1.   Alfred cenahna

    Arduino nawiskeun anjeun seueur kamungkinan pikeun ngadamel proyék nyalira https://www.juguetronica.com/arduino . Salah sahiji hal anu pangsaéna nyaéta anjeun tiasa ngamimitian tanpa janten ahli sareng neraskeun diajar, sahingga memotivasi diri anjeun supaya diajar diri.

  2.   Danel Roman cenahna

    Salam.

    Kuring nyobian ngalaksanakeun tutorial anu hadé ieu ... tapi anu kalebet henteu lengkep….

    Naha anjeun tiasa nyarioskeun anu mana anu diperyogikeun?

    Hatur nuhun pisan.

  3.   Uél cenahna

    Hello.
    Abdi hoyong ngadamel modul kendang éléktronik ku ngagentos tombol-tombol ku input jack anu sinyal piezoelektrik bakal sumping.
    Naha mungkin pikeun ngalakukeunana?

  4.   Eduardo Valenzuela cenahna

    Punten upami anjeun tiasa masihan kalebet kode ieu, kuring resep kana proyék ieu.