Gumawa ng iyong sariling MIDI controller kasama ng Arduino

Midi

Kung ikaw ay isang mahilig sa musika o direkta na isang baguhan o propesyonal na musikero, tiyak sa iyong bahay na naipon mo ang isang malaking koleksyon ng mga instrumentong pangmusika. Upang gawing perpekto ang lahat ng mga ito, pinakamahusay na kumuha ng Controller ng MIDI. Sa kasamaang palad, ang mga uri ng mga bagay na ito ay karaniwang medyo mahal, kaya mahirap para sa isang tao na walang masyadong maraming mapagkukunan na ma-access ang lahat na maalok nila.

Upang mas maunawaan kung ano ang isang MIDI controller, sabihin sa iyo na nagmula ang salitang MIDI Musical Instrumentong Digital Interface, iyon ay, isang uri ng tagakontrol na ginagawang kakayahang makipag-usap sa bawat isa ang mga elektronikong kagamitang pang-musikal. Kung mayroon kang isang elektronikong keyboard sa bahay, halimbawa, higit sa malamang na mayroon itong interface na MIDI. Bago magpatuloy sa pagsulong, sa kabila ng katotohanang may ilang mga teknikal na detalye na maaaring humantong sa isang maniwala kung hindi man, dapat itong maging napakalinaw na Ang MIDI ay hindi audio.

Lumikha ng iyong sariling MIDI controller gamit ang simpleng tutorial na ito

Kapag malinaw na namin ang tungkol dito, tiyak na mas madali para sa iyo na maunawaan na ang MIDI ay isang simple lamang itinakda ang tagubilin na may kakayahang suportahan ang hanggang sa 16 na malayang mga channel, na nangangahulugang maaaring hanggang sa 16 magkakaibang mga aparato na nakikipag-usap nang nakapag-iisa sa bawat isa. Ang mga aparatong ito ay dapat na konektado sa pamamagitan ng isang 5-pin DIN cable, na karaniwang isang cable na may limang mga pin sa loob ng isang konektor. Bilang isang detalye, pangkaraniwan na gumamit ng isang USB sa halip na isang 5-pin DIN, sa kaso ng paggamit ng isang USB dapat kaming lumikha ng isang interface na USB-MIDI.

Nang walang karagdagang pagtatalo, iniiwan kita ng link kung saan mo mahahanap ang sangguni sunud-sunod sa maraming naglalarawang mga imahe kung saan maaari naming maisagawa ang lahat ng kinakailangang mga pagkilos upang lumikha ng aming sariling MIDI controller.

Kaugnay na artikulo:
Paano baguhin ang Pi username at password sa aming Raspberry Pi

Paano gumawa ng iyong sariling MIDI controller kasama ng Arduino

konektor ng midi

Marami ang mga taong nangangailangan, para sa iba't ibang mga kadahilanan kapwa personal at propesyonal, na gumamit ng a ganap na pasadyang MIDI controller Sapagkat marahil at bilang isang halimbawa, sa ilang mga punto sa iyong buhay bilang isang artista, ang pagbili ng isang murang taga-kontrol ng MIDI ay maaaring hindi matugunan ang iyong mga inaasahan o pangangailangan habang, pagdating ng oras, ang pagpili para sa isang propesyonal na bersyon ay maaaring labis sa parehong mga mapagkukunang pampinansyal. kailangan, pati na rin ang malaking bilang ng mga tampok na maalok nila.

Dahil dito, ngayon nais kong ipakita sa iyo ang lahat ng kailangan mo upang makagawa ka ng iyong sariling MIDI controller, na nagpapahiwatig ng kapwa lahat ng kailangan mo para sa pagtatayo nito at pag-aalok sa iyo ng software na kakailanganin mong i-install. Bilang isang detalye, para sa proyektong ito ang paggamit ng isang board ng Arduino ay mahalaga, isang taga-kontrol na sapat na malakas upang maisakatuparan ang gawaing ito.

Paano gumawa ng isang robot
Kaugnay na artikulo:
Paano gumawa ng isang robot: 3 magkakaibang mga pagpipilian

Ano ang isang MIDI controller?

Midi

Karaniwan ang isang MIDI controller ay responsable, malawak na pagsasalita, para sa pagkonekta ng iba't ibang mga aparatong pang-musika sa bawat isa. Marami ang mga instrumento na nagsasama ng isang interface ng MIDI, kahit na ito ay dapat na malinaw na malinaw dahil maraming mga gumagamit na madalas na nalilito, ang MIDI ay hindi isang audio file, ngunit isang napaka-simpleng hanay ng mga tagubilin na maaaring matanggap ng isang instrumento. Upang makagawa ng iba't ibang kontrol o mga setting ng tunog.

Sa loob ng MIDI mayroong dalawang magkakaibang uriSa isang banda mayroon kaming tinatawag na Change Control kung saan mayroon itong numero ng controller at isang halaga sa pagitan ng 0 at 127. Salamat dito, maaaring maisyuhan ang mga mensahe kung saan maaaring mabago ang iba't ibang mga parameter tulad ng dami o tono. Ang iba't ibang mga instrumento na tumatanggap ng MIDI ay dapat magdala ng isang manu-manong kasama nila na nagpapaliwanag kung aling mga channel at mensahe ang itinatakda bilang default at kung paano baguhin ang mga ito.

Sa pangalawang lugar mayroon kaming Program Change, isang serye ng mga mensahe na siya namang mas simple kaysa sa mga bumubuo sa Change Control. Ang mga uri ng mensahe ay ginagamit upang baguhin ang preset o patch ng isang aparato. Tulad ng sa Change Control, kasama ang iyong instrumento ang tagagawa ay dapat magsama ng isang manu-manong nagpapahiwatig kung aling mga preset ang binago ng isang partikular na mensahe.

Mga Kinakailangan na Bahagi upang Buuin ang Iyong Sariling Homemade MIDI Controller

Skema ng Midi konektor

Upang makapagtayo ng iyong sariling MIDI controller kakailanganin mo ang isang serye ng mga piraso bilang karagdagan sa, tulad ng nabanggit na namin, isang Arduino board. Bago magpatuloy, sabihin lamang sa iyo na marahil, sa hinaharap dahil nais mong mapalawak ang proyekto, kailangan mo ng higit pang mga bagay, bagaman, sa oras na ito na may ilang mga piraso magkakaroon ka ng maraming.

Kakailanganin namin ang isang 5-poste na babaeng DIN cable, 2 220 ohm resistors, 2 pansamantalang switch, 2 10k ohm resistors, mga wire ng koneksyon, isang circuit board, MIDI cable at isang MIDI device o USB interface. Sa mga piraso lamang na ito maaari kang magsimula, na sinusundan ang aking mga hakbang, upang makagawa ng iyong sariling MIDI controller.

Mga unang hakbang

Arduino midi eskematiko

Bago simulan iwan ko sa iyo ng isang larawan kung saan maaari mong makita ang mga pin ng iyong MIDI cable, sa ganitong paraan maaari naming makilala nang tama ang mga pin at lalo na kung saan ikonekta ang bawat isa. Malawakang pagsasalita, ang kailangan mo lang gawin sa puntong ito ay ikonekta ang pin 5 ng cable sa isang 220 ohm risistor at mula doon sa Arduino Transmit 1, i-pin ang 4 sa isang resistor na 220 ohm at mula doon sa 5V na socket ng Arduino habang pin 2 ay dapat na konektado sa Ground koneksyon ng iyong controller.

Kapag tapos na ang hakbang na ito, wala kang isang detalyadong diagram sa larawan na matatagpuan sa ibaba lamang ng mga linyang ito, oras na upang ikonekta ang mga pindutan. Ang ideya sa seksyong ito ay upang makamit, gamit ang digitalRead pin (may kakayahang makita kung kailan nagbabago ang boltahe na nakakaabot) upang magamit ang isang transistor upang makamit, na may pagpindot sa isang pindutan. Para dito kailangan lang naming gumamit ng isang pindutan upang, sa kaliwang bahagi nito ay ikinonekta namin ito sa 5V, sa kanang bahagi sa isang 220 ohm na paglaban at mula doon sa lupa habang, sa turn, ikinonekta din namin ang kanang bahagi sa pin 6 Ang ikalawang pindutan ay mai-install sa parehong paraan bagaman, tulad ng nakikita mo sa diagram, sa halip na pin 6 ay ikonekta namin ito sa 7.

Ang software na gagamitin para sa home midi controller

Kapag natapos na namin ang lahat ng mga hardware, oras na upang ikonekta ang aming instrumento at pagsubok. Bago ito kailangan nating magkaroon ng USB-MIDI interface at isang MIDI cable upang ikonekta ang board, na kung saan ay nagpapadala ng data, sa aming computer. Upang makamit ito, pinili namin ang MIDI v4.2 library na nilikha ng mga lalaki mula sa Apatnapung Pitong Epekto na dapat naming mai-install sa aming Arduino at isama sa proyekto.

Sa kaso ng computer, kakailanganin namin ng isang programa na may kakayahang pangasiwaan ang lahat ng data ng MIDI na darating dito mula sa Arduino. Para sa mga ito mayroon kaming iba't ibang mga posibilidad tulad ng MIDI Monitor (OS X), MIDI-OX (Windows) o Kmidimon (Linux)

Upang makagawa ng isang maliit na pagsubok kailangan lang naming ikonekta ang Arduino sa aming computer at isagawa ang sumusunod na code:

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

Kung ang lahat ay naging maayos, maaari kang pumunta sa pagsubok ng pindutan, kung sakaling hindi gumana ang pagsubok na ito para sa iyo dapat mong tiyakin na ang lahat ng mga koneksyon ay tama, ang circuit ay eksaktong kapareho ng nakaraang diagram, ang circuit ay konektado sa isang USB-MIDI interface na may isang MIDI cable, ang mga kable ng MIDI port ay konektado nang tama, ang MIDI cable ay konektado sa input ng interface ng USB-MIDI, ang Arduino board ay konektado nang tama sa electrical network at mayroon itong sapat na lakas ...

Pagsubok na gumagana nang tama ang mga pindutan

Bago magpatuloy na pakainin ang aming programa ng mga bagong pag-andar at code na maaari tayong mawala, sulit na huminto sandali at subukan na gumana nang maayos ang mga pindutan. Para sa kanila kailangan nating i-load ang sumusunod na code:

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

}

Ang code na ito ay dapat lamang na maiipon at maipatupad nang sa gayon, na may koneksyon sa USB cable, sasabihin sa atin ng programa kung ang alinman sa mga pindutan ay na-press.

Lumilikha kami ng aming homemade MIDI controller

Kapag naisagawa na namin ang mga pagsubok na ito, oras na upang tipunin ang aming sariling MIDI controller para doon, kakailanganin mo lamang na makatipon ang sumusunod na code:

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

Bilang isang detalye, sabihin sa iyo na hindi mo maaaring gamitin ang utos na Serial.println () na may output na MIDI sa oras na ito, kung nais mong magpakita ng ilang uri ng mensahe sa computer, baguhin lamang:

midiOut.sendControlChange(42,127,1);

sa pamamagitan ng:

midiOut.sendControlChange(value, channel);

kung saan ang halaga at channel ay dapat magkaroon ng mga nais na halagang nais mong ipakita.

Halimbawa ng operasyon:


4 na puna, iwan mo na ang iyo

Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Alfred dijo

    Nag-aalok sa iyo ang Arduino ng maraming mga posibilidad na magsagawa ng mga proyekto nang mag-isa https://www.juguetronica.com/arduino . Ang isa sa pinakamagandang bagay ay maaari kang magsimula nang hindi isang dalubhasa at magpatuloy sa pag-aaral, sa gayon ay pagganyak sa iyong sarili na maging turo sa sarili.

  2.   Danel Roman dijo

    Pagbati.

    Sinusubukan kong isagawa ang kamangha-manghang tutorial na ito ... ngunit ang # isama ay hindi kumpleto….

    Maaari mo bang sabihin sa akin kung alin ang kinakailangan?

    Maraming salamat sa inyo.

  3.   uell dijo

    Hello.
    Nais kong gumawa ng isang elektronikong module ng drum sa pamamagitan ng pagpapalit ng mga pindutan ng mga input ng jack kung saan darating ang isang piezoelectric signal.
    Posible bang gawin ito?

  4.   Eduardo Valenzuela dijo

    Mangyaring kung maaari mong ibigay ang mga kasama ng code na ito, interesado ako sa proyektong ito.