Fè kontwolè MIDI pwòp ou a ak Arduino

MIDI

Si ou se yon lover mizik oswa dirèkteman yon mizisyen amatè oswa pwofesyonèl, siman nan kay ou ou te akimile yon gwo koleksyon enstriman mizik. Pou fè tout bagay sa yo melanje parfe, li pi bon jwenn yon MIDI kontwolè. Malerezman, sa yo kalite objè yo anjeneral byen chè pou ke yon moun ki pa gen anpil resous gen aksè difisil nan tout bagay yo ka ofri.

Pou konprann pi byen kisa yon kontwolè MIDI ye, di ou ke pawòl MIDI a soti Enstriman Mizik Digital Entèfas, se sa ki, yon kalite kontwolè ki fè aparèy elektwonik mizik ka kominike youn ak lòt. Si ou gen yon klavye elektwonik lakay ou, pou egzanp, li gen plis chans ke li gen yon koòdone MIDI. Anvan ou kontinye avanse, malgre lefèt ke gen sèten detay teknik ki ka mennen yon sèl kwè otreman, li dwe trè klè ke MIDI se pa odyo.

Kreye kontwolè MIDI pwòp ou a ak leson patikilye senp sa a

Yon fwa nou klè sou sa, li pral siman pi fasil pou ou pou w konprann ke MIDI se jis yon senp ansèyman ki kapab sipòte jiska 16 chanèl endepandan, ki vle di ke ka gen jiska 16 aparèy diferan kominike poukont youn ak lòt. Aparèy sa yo dwe konekte nan yon kab DIN 5-PIN, ki se fondamantalman yon kab ak senk broch andedan yon Connector. Kòm yon detay, li se byen komen yo sèvi ak yon USB olye pou yo yon DIN 5-PIN, nan ka ta gen itilize yon USB nou dwe kreye yon koòdone USB-MIDI.

San yo pa plis ado, mwen kite ou ak lyen ki kote ou ka jwenn la leson patikilye etap pa etap ak yon anpil nan imaj deskriptif kote nou ka fè tout aksyon ki nesesè yo kreye pwòp MIDI kontwolè nou an.

Atik ki gen rapò ak:
Kouman chanje non itilizatè Pi ak modpas sou Franbwaz Pi nou an

Kouman fè kontwolè MIDI pwòp ou a ak Arduino

Midi Connector

Anpil nan yo se moun ki bezwen, pou diferan rezon tou de pèsonèl ak pwofesyonèl, yo sèvi ak yon konplètman kontwolè MIDI koutim Paske petèt e kòm yon egzanp, nan kèk pwen nan lavi ou kòm yon atis, achte yon kontwolè MIDI chè pa ka satisfè atant ou oswa bezwen pandan ke, lè lè a rive, chwazi pou yon vèsyon pwofesyonèl pouvwa ap twòp nan tou de resous finansye. bezwen, osi byen ke gwo kantite karakteristik yo ka ofri.

Akòz sa a, jodi a mwen vle montre ou tout bagay ou bezwen pou ke ou ka fè pwòp ou MIDI kontwolè ki endike tou de tout bagay ki nesesè pou konstriksyon li yo ak ofri ou lojisyèl an ke ou pral bezwen enstale. Kòm yon detay, pou pwojè sa a itilizasyon yon tablo Arduino esansyèl, yon kontwolè ki pwisan ase pou fè travay sa a.

Atik ki gen rapò ak:
Kouman fè yon robo: 3 opsyon diferan

Ki sa ki se yon kontwolè MIDI?

midi

Fondamantalman yon kontwolè MIDI ki responsab, lajman pale, pou konekte diferan aparèy mizik youn ak lòt. Anpil nan yo se enstriman mizik yo ki enkòpore yon koòdone MIDI, byenke sa a dwe trè klè depi gen anpil divinò ki souvan konfonn, MIDI se pa yon dosye odyo, men yon seri trè senp nan enstriksyon ke yon enstriman ka resevwa. Fè diferan kontwòl oswa anviwònman son.

Anndan MIDI gen de kalite diferanSou yon bò nou gen yon sèl la rele Chanjman Kontwòl kote li gen nimewo a kontwolè ak yon valè ant 0 ak 127. Mèsi a sa a, mesaj yo ka bay kote paramèt diferan tankou volim oswa ton ka chanje. Enstriman diferan ki aksepte MIDI ta dwe pote yon manyèl avèk yo eksplike ki chanèl ak mesaj yo mete pa default ak kouman yo chanje yo.

An dezyèm plas nou gen Pwogram Chanjman an, yon seri de mesaj ki an vire yo pi senp pase sa yo ki fè moute Kontwòl Chanjman an. Sa yo kalite mesaj yo te itilize chanje prereglaj la oswa patch nan yon aparèy. Kòm nan kontwòl Chanjman, ansanm ak enstriman ou a manifakti a dwe gen ladan yon manyèl ki endike ki prereglaj yo chanje pa yon mesaj patikilye.

Pati ki nesesè yo bati pwòp endijèn MIDI Kontwolè ou

Midi Connector schematic

Pou kapab bati kontwolè MIDI pwòp ou a ou pral bezwen yon seri de moso nan adisyon, jan nou te deja mansyone, nan yon tablo Arduino. Anvan ou kontinye, jis di ou ke petèt, nan tan kap vini an paske ou vle elaji pwojè a, ou bezwen plis bagay, byenke nan moman sa a ak yon moso kèk ou pral gen anpil.

Nou pral bezwen yon 5-poto fi DIN kab, 2 220 ohm rezistans, 2 switch momantane, 2 10k ohm rezistans, fil koneksyon, yon tablo sikwi, MIDI kab ak yon aparèy MIDI oswa koòdone USB. Avèk jis moso sa yo ou ka kòmanse, swiv etap mwen an, fè kontwolè MIDI pwòp ou yo.

Premye etap yo

Arduino midi schematic

Anvan ou kòmanse mwen kite ou yon foto kote ou ka wè broch yo nan MIDI kab ou, nan fason sa a nou ka idantifye kòrèkteman broch yo ak espesyalman kote yo chak dwe konekte. Angwo, tout sa ou dwe fè nan pwen sa a se konekte PIN 5 nan kab la nan yon rezistans 220 ohm ak soti nan gen nan Arduino Transmèt 1 a, PIN 4 nan yon rezistans 220 ohm ak soti nan gen nan priz la 5V nan Arduino pandan y ap PIN 2 dwe konekte nan koneksyon an Ground nan kontwolè ou.

Yon fwa ke etap sa a fè, ou pa gen yon dyagram detaye nan foto a ki sitiye jis anba liy sa yo, li lè pou konekte bouton sa yo. Lide a nan seksyon sa a se reyalize, lè l sèvi avèk PIN nan digitalRead (ki kapab detekte lè vòltaj la ki rive nan li chanje) pou kapab sèvi ak yon tranzistò reyalize, ak jis pouse nan yon bouton. Pou sa nou sèlman bezwen sèvi ak yon bouton pou ke, bò gòch nan li nou konekte li nan 5V, bò dwat la nan yon rezistans 220 ohm ak soti nan gen nan tè pandan y ap, nan vire, nou menm tou nou konekte bò dwat la PIN 6 Dezyèm bouton an ta dwe enstale nan menm fason an byenke, menm jan ou ka wè nan dyagram lan, olye pou yo PIN 6 nou konekte li nan 7.

Lojisyèl pou itilize pou kontwolè midi lakay ou

Yon fwa nou fini ak tout pyès ki nan konpitè, li lè yo konekte enstriman nou yo ak tès yo. Anvan sa nou bezwen gen yon USB-MIDI koòdone ak yon kab MIDI konekte tablo a, ki ap voye done, ak òdinatè nou an. Pou reyalize sa, nou te chwazi pou bibliyotèk MIDI v4.2 ki te kreye pa nèg ki soti nan karant sèt efè ke nou dwe te enstale sou Arduino nou yo ak enkli nan pwojè a.

Nan ka a nan òdinatè a, nou pral bezwen yon pwogram ki se kapab nan sipèvize tout done yo MIDI ki rive nan li soti nan Arduino. Pou sa nou gen posiblite diferan tankou MIDI ki monitè kè bebe (OS X), MIDI-OX (Windows) oswa Kmidimon (Linux)

Pou fè yon ti tès nou jis bezwen konekte Arduino a nan òdinatè nou an ak egzekite kòd sa a:

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

Si tout bagay ale byen, ou ka ale nan tès la bouton, nan ka tès sa a pa te travay pou ou ou dwe asire w ke tout koneksyon yo kòrèk, kous la se egzakteman menm jan ak dyagram anvan an, kous la konekte ak yon koòdone USB-MIDI ak yon kab MIDI, Câbles pò MIDI yo kòrèkteman konekte, kab MIDI a konekte ak opinyon koòdone USB-MIDI a, tablo Arduino a kòrèkteman konekte ak rezo elektrik la e li gen ase pouvwa ...

Tès ke bouton yo fonksyone kòrèkteman

Anvan ou kontinye manje pwogram nou an ak nouvo fonksyonalite ak kòd ke nou ka pèdi nan, li vo kanpe pou yon moman ak teste ke bouton yo fonksyone byen. Pou yo nou dwe chaje kòd sa a:

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

}

Kòd sa a jis gen yo dwe konpile ak egzekite pou ke, ak kab la USB konekte, pwogram nan di nou si nenpòt nan bouton yo te bourade.

Nou kreye kontwolè MIDI endijèn nou an

Yon fwa nou te kouri tès sa yo, li lè yo rasanble kontwolè MIDI pwòp nou yo pou sa, ou pral sèlman gen konpile kòd sa a:

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

Kòm yon detay, di ou ke ou pa ka itilize lòd la Serial.println () ak yon pwodiksyon MIDI tan sa a, si ou vle montre kèk kalite mesaj sou òdinatè a, jis chanje:

midiOut.sendControlChange(42,127,1);

pa:

midiOut.sendControlChange(value, channel);

kote valè ak chanèl dwe gen valè yo vle ke ou vle montre.

Egzanp operasyon:


Kontni an nan atik la respekte prensip nou yo nan etik editoryal. Pou rapòte yon erè klike sou isit la.

4 kòmantè, kite ou

Kite kòmantè ou

Adrès imèl ou pa pral dwe pibliye. Jaden obligatwa yo make ak *

*

*

  1. Responsab pou done yo: Miguel Ángel Gatón
  2. Objektif done yo: Kontwòl SPAM, jesyon kòmantè.
  3. Lejitimasyon: konsantman ou
  4. Kominikasyon nan done yo: done yo pa pral kominike bay twazyèm pati eksepte pa obligasyon legal.
  5. Done depo: baz done anime pa rezo Occentus (Inyon Ewopeyen)
  6. Dwa: Nenpòt ki lè ou ka limite, refè ak efase enfòmasyon ou yo.

  1.   Alfred diro

    Arduino ofri ou anpil posiblite pou antreprann pwojè pou kont ou https://www.juguetronica.com/arduino . Youn nan pi bon bagay yo se ke ou ka kòmanse san yo pa yon ekspè ak kontinye sou aprantisaj, konsa motive tèt ou yo dwe endepandan anseye.

  2.   Danel Roman diro

    Bonjou.

    Mwen ap eseye pote soti nan sa a leson patikilye kokenn ... men # gen ladan yo yo pa konplè ....

    Èske ou ta ka di m 'ki sa ki nesesè?

    Mèsi anpil.

  3.   Uell diro

    Hey.
    Mwen ta renmen fè yon modil tanbou elektwonik pa ranplase bouton yo ak entrain Jack ki yon siyal piezoelectric ap rive.
    Èske li ta posib pou fè li?

  4.   Eduardo Valenzuela diro

    Tanpri, si ou ta ka bay gen ladan yo nan kòd sa a, mwen enterese nan pwojè sa a.