Kā izveidot MIDI kontrolieri ar Arduino

Kā izveidot MIDI kontrolieri ar Arduino

Kā mūziķis, kurš ir sakrājis mūzikas instrumentu un trokšņu kastīšu kolekciju, pazemīgais Arduino ir ideāls instruments, lai izveidotu pielāgotu MIDI kontrolieri. Lai gan Raspberry Pi, iespējams, ir ieguvis kroni lietu interneta (IoT) projektiem, vienkāršam Arduino Uno (kādi ir dažādi Arduino veidi?) Šim projektam ir vairāk nekā pietiekami daudz spēka.





Vai pirmo reizi izmantojat Arduino? Neuztraucieties, mums ir pilnīga Arduino iesācēju ceļvedis jāizlasa, pirms ķeraties pie šī projekta.





Kas ir MIDI?

MIDI apzīmē mūzikas instrumentu digitālo saskarni. Tajā ir izklāstīts standarta veids, kā mūzikas ierīces savstarpēji sazināties. Ja jums pieder elektroniskā tastatūra, jums, iespējams, ir MIDI saskarne. Lai gan MIDI ieviešanā ir dažas tehniskas detaļas, ir svarīgi atcerēties, ka MIDI nav audio! MIDI dati ir vienkāršs instrukciju kopums (vienu instrukciju sauc par “ziņojumu”), ko cita ierīce var ieviest, lai radītu dažādas skaņas vai vadības parametrus.





MIDI atbalsta 16 kanālus. Tas nozīmē, ka katrs kabelis var atbalstīt 16 dažādas ierīces, kas savstarpēji sazinās neatkarīgi. Ierīces tiek savienotas, izmantojot 5 kontaktu DIN kabeli. DIN apzīmē “Vācijas standartizācijas institūtu” un ir vienkārši kabelis ar piecām tapām savienotāja iekšpusē. 5 kontaktu DIN vietā bieži tiek izmantots USB, vai arī var izmantot USB-MIDI saskarni.

MIDI-kabelis, vīrietis



Kontroles maiņa un programmas maiņa

Ir divi galvenie MIDI ziņojumu veidi: vadības maiņa un programmas maiņa.

Vadības maiņas (CC) ziņojumi satur kontroliera numuru un vērtību no 0 līdz 127. CC ziņojumus bieži izmanto, lai mainītu iestatījumus, piemēram, skaļumu vai piķi. Ierīcēm, kas pieņem MIDI, ir jābūt rokasgrāmatai, kurā paskaidrots, kādi kanāli un ziņojumi ir iestatīti pēc noklusējuma un kā tos mainīt (pazīstams kā MIDI kartēšana).





Programmu maiņas (PC) ziņojumi ir vienkāršāki par CC ziņojumiem. Datora ziņojumi sastāv no viena numura un tiek izmantoti, lai mainītu ierīces sākotnējo iestatījumu vai ielāpu. Datora ziņojumus dažreiz sauc par “Patch Change”. Līdzīgi kā CC ziņojumiem, ražotājiem ir jāiesniedz dokuments, kurā izklāstīts, kādi iestatījumi tiek mainīti ar konkrētu ziņojumu.

Kas jums būs nepieciešams

  • Arduino
  • 5 kontaktu DIN ligzda
  • 2 x 220 omi rezistori
  • 2 x 10k omu rezistori
  • 2 x īslaicīgi slēdži
  • Savienojami vadi
  • Maizes dēlis
  • MIDI kabelis
  • MIDI ierīce vai USB interfeiss
Ūdens un koks 5 gab. DIN 5 kontaktu PCB stiprinājuma ligzdas datora tastatūrai PIRKT TŪLĪT AMAZON

Veidot plānu

Šis projekts būs pavisam vienkāršs. Jūs, protams, varat pievienot vairāk pogu vai aparatūras atbilstoši savām vajadzībām. Gandrīz jebkurš Arduino būs piemērots - šim piemēram ir vajadzīgas tikai trīs tapas. Šis projekts sastāv no divām pogām, lai kontrolētu programmu, MIDI portu datu nosūtīšanai un ierīces ziņojumu saņemšanai. Šī shēma šeit ir uzbūvēta uz maizes dēļa, tomēr ir iespējams to pārvietot uz projekta kastīti un lodētiem savienotājiem, lai iegūtu stabilu risinājumu.





Ķēdes montāža

Arduino-Midi-Controller-Circuit

MIDI savienojums

MIDI-Pinout

Pievienojiet MIDI ligzdu šādi:

  • MIDI pin 5 uz Arduino Transmit (TX) 1, izmantojot 220 omu rezistoru
  • MIDI pin 4 līdz Arduino +5V caur 220 omu rezistoru
  • MIDI tapa 2 līdz Arduino zemei

Pogas savienojums

Pogas darbojas, mainot pretestību, ko Arduino 'redz'. Arduino tapa iet caur slēdzi taisni uz zemes ( ZEMS ), izmantojot 10k omu rezistoru (“nolaižamais” rezistors, nodrošinot vērtību zemu). Nospiežot pogu, ķēdes redzamā vērtība bez rezistora mainās uz +5v ( AUGSTS ). Arduino var noteikt šīs izmaiņas, izmantojot digitalRead (pin) komandu. Pievienojiet pogas Arduino digitālās ieejas/izejas (I/O) 6. un 7. tapai. Savienojiet abas pogas:

  • Pogas kreisā puse līdz +5V
  • Pogas labā puse uz Arduino Ground, izmantojot 10k omu rezistoru
  • Pogas labā puse līdz Arduino tapai (6 vai 7)

MIDI pārbaude

Tagad, kad visa aparatūra ir pabeigta, ir pienācis laiks to pārbaudīt. Jums būs nepieciešams USB-MIDI interfeiss (daudzas audio saskarnes to var izdarīt) un MIDI kabelis. Maizes dēļā pieslēgtais MIDI ports sūta datus, tāpēc tā ir izeja. Jūsu dators saņem datus, tāpēc tā ir ievade. Šis projekts izmanto lielisko Arduino MIDI bibliotēka v4.2 ar četrdesmit septiņiem efektiem. Kad esat instalējis bibliotēku, varat to iekļaut savā kodā, dodoties uz Skice> Iekļaut bibliotēku> MIDI .

Jums būs nepieciešama arī programma, lai uzraudzītu ienākošos MIDI datus:

Pievienojiet Arduino datoram un augšupielādējiet šādu testa kodu (neaizmirstiet no izvēlnes izvēlēties pareizo dēli un portu Rīki> Padome un Rīki> Ports izvēlnes).

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

Šis kods nosūtīs CC ziņojumu, pagaidiet 1 sekundi, nosūtiet datora ziņojumu un pēc tam pagaidiet 1 sekundi bezgalīgi. Ja viss darbojas pareizi, MIDI monitorā vajadzētu redzēt ziņojumu.

Ja nekas nenotiek, nekrītiet panikā! Mēģiniet novērst problēmu:

  • Pārliecinieties, vai visi savienojumi ir pareizi
  • Pārbaudiet, vai MIDI ports ir pareizi pievienots vadam - ārējām malām jābūt 2 rezerves tapām
  • Vēlreiz pārbaudiet, vai ķēde ir pareiza
  • Pārbaudiet, vai ķēde ir savienota ar USB-MIDI saskarni, izmantojot MIDI kabeli
  • Pārbaudiet, vai MIDI kabelis ir pievienots ievadi USB-MIDI saskarnē
  • Pārliecinieties, vai Arduino ir spēks
  • Instalējiet pareizo USB-MIDI saskarnes draiveri

Ja Jums ir joprojām ja rodas problēmas, iespējams, ir vērts pārbaudīt savu maizes dēli. Lēti dēļi dažreiz var būt ļoti pretrunīgi un nekvalitatīvi-tas notika ar mani, strādājot pie šī projekta.

Pogas pārbaude

Tagad ir pienācis laiks pārbaudīt, vai pogas darbojas pareizi. Augšupielādējiet šādu testa kodu. Lai pārbaudītu šo daļu, MIDI nav jāpievieno.

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

}

Palaidiet šo kodu (bet turiet pievienotu USB kabeli) un atveriet seriālo monitoru ( Augšā pa labi> Sērijas monitors ). Nospiežot pogu, vajadzētu redzēt 'Button One Works!' vai 'Poga divi darbojas!' atkarībā no nospiestās pogas.

No šī piemēra ir jāatceras viena svarīga piezīme-programmatūras atkāpšanās. Šī ir vienkārša 10 milisekundes (ms) kavēšanās starp pogas pārbaudi un pogas atkārtotu pārbaudi. Tas palielina pogu nospiešanas precizitāti un palīdz novērst troksni, kas izraisa Arduino. Jums tas nav jādara, lai gan tas ir ieteicams.

Kontroliera izveide

Tagad, kad viss ir savienots ar vadu un darbojas, ir pienācis laiks savākt pilnu kontrolieri.

Šajā piemērā katrai nospiestajai pogai tiks nosūtīts atšķirīgs CC ziņojums. Es to izmantoju, lai kontrolētu Ableton Live 9.6 operētājsistēmā OS X. Kods ir līdzīgs abiem iepriekš minētajiem pārbaudes paraugiem.

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

Piezīme - jūs nevarēsit izmantot Serial.println () ar MIDI izeju.

Ja vēlaties nosūtīt datora ziņojumu, nevis kopiju, vienkārši nomainiet:

midiOut.sendControlChange(42,127,1);

Ar:

midiOut.sendProgramChange(value, channel);

Darbībā

Tālāk ir parādīts kā kontrolieris Ableton Live ( Labākā DJ programmatūra katram budžetam ). Augšējā labajā stūrī ir redzami audio skaitītāji, bet augšējā vidū - ienākošie midi ziņojumi (izmantojot MIDI monitors operētājsistēmā OS X).

kā rakstīt slīprakstu facebook messenger

Vai esat izveidojis MIDI kontrolieri?

Pielāgotam MIDI kontrolierim ir daudz praktisku pielietojumu. Jūs varētu izveidot plašu ar kājām vadāmu vienību vai gludu studijas kontrolieri. Un, ja jūs interesē tāda iegāde, šeit ir labākie USB MIDI kontrolieri, kurus varat iegādāties.

Attēla kredīts: Kīts Džentrijs, izmantojot vietni Shutterstock.com

Mēs ceram, ka jums patīk mūsu ieteiktie un apspriestie priekšmeti! MUO ir saistītas un sponsorētas partnerattiecības, tāpēc mēs saņemam daļu no ieņēmumiem no dažiem jūsu pirkumiem. Tas neietekmēs jūsu maksājamo cenu un palīdzēs mums piedāvāt labākos produktu ieteikumus.

Kopīgot Kopīgot Čivināt E -pasts Vai ir vērts jaunināt uz Windows 11?

Windows ir pārveidots. Bet vai ar to pietiek, lai pārliecinātu jūs pāriet no Windows 10 uz Windows 11?

Lasīt Tālāk
Saistītās tēmas
  • DIY
  • DJ programmatūra
  • Arduino
  • Elektronika
  • PUSDIENA
Par autoru Džo Koburns(Publicēti 136 raksti)

Džo ir absolvējis datorzinātnes Linkolnas universitātē, Lielbritānijā. Viņš ir profesionāls programmatūras izstrādātājs, un, kad viņš nelido ar droniem un neraksta mūziku, viņu bieži var atrast, fotografējot vai veidojot video.

Vairāk no Džo Kobērna

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu
Kategorija Diy