Kuidas teha Arduino abil MIDI -kontrollerit

Kuidas teha Arduino abil MIDI -kontrollerit

Muusikuna, kes on kogunud muusikariistade ja mürakastide kogu, on alandlik Arduino ideaalne tööriist kohandatud MIDI -kontrolleri loomiseks. Kuigi Raspberry Pi võis asjade Interneti (IoT) projektide krooniks saada, on lihtsal Arduino Unol (millised on Arduino eri tüübid?) Selle projekti jaoks rohkem kui piisavalt jõudu.





Kas kasutate esimest korda Arduino? Ärge muretsege, meil on komplekt Arduino algajate juhend enne selle projektiga tegelemist läbi lugeda.





Mis on MIDI?

MIDI tähistab muusikariistade digitaalset liidest. See kirjeldab standardset viisi muusikaseadmete omavaheliseks suhtlemiseks. Kui teil on elektrooniline klaviatuur, on teil tõenäoliselt MIDI -liides. Kuigi MIDI rakendamisel on mõned tehnilised üksikasjad, on oluline meeles pidada, et MIDI ei ole heli! MIDI andmed on lihtsad juhised (ühte käsku nimetatakse sõnumiks), mida teine ​​seade võib rakendada erinevate helide või juhtparameetrite tegemiseks.





MIDI toetab 16 kanalit. See tähendab, et iga kaabel võib toetada 16 erinevat seadet, mis suhtlevad üksteisega iseseisvalt. Seadmed ühendatakse 5-kontaktilise DIN-kaabli abil. DIN tähistab 'Saksa standardiorganisatsiooni' ja on lihtsalt kaabel, mille pistiku sees on viis tihvti. 5-kontaktilise DIN-i asemel kasutatakse sageli USB-d või saab kasutada USB-MIDI-liidest.

MIDI-kaabel-isane



Kontrolli muutmist ja programmi muutmist

MIDI -teateid on kahte peamist tüüpi: kontrolli muutmine ja programmi muutmine.

Kontrolli muutmise (CC) teated sisaldavad kontrolleri numbrit ja väärtust vahemikus 0 kuni 127. CC -teateid kasutatakse sageli selliste sätete nagu helitugevus või helikõrgus muutmiseks. Seadmetel, mis aktsepteerivad MIDI -d, peaks kaasas olema juhend, mis selgitab, millised kanalid ja sõnumid on vaikimisi seadistatud ning kuidas neid muuta (tuntud kui MIDI -vastendus).





Programmi muutmise (PC) teated on lihtsamad kui CC -sõnumid. Arvutisõnumid koosnevad ühest numbrist ja neid kasutatakse seadme eelseadistuse või plaastri muutmiseks. Arvutiteateid nimetatakse mõnikord ka plaastri muutmiseks. Sarnaselt CC -sõnumitele peaksid tootjad esitama dokumendi, milles kirjeldatakse, milliseid eelseadeid konkreetne sõnum muudab.

Mida vajate

  • Arduino
  • 5-kontaktiline DIN pistikupesa
  • 2 x 220 oomi takistid
  • 2 x 10k oomi takistid
  • 2 x hetkelist lülitit
  • Haakimisjuhtmed
  • Leivalaud
  • MIDI kaabel
  • MIDI -seade või USB -liides
Vesi ja puit 5 tk DIN 5 tihvtiga PCB -pistikupesad arvuti klaviatuuri jaoks OSTA KOHE AMAZONILT

Ehita plaan

See projekt saab olema üsna lihtne. Loomulikult saate oma vajadustele lisada rohkem nuppe või riistvara. Peaaegu iga Arduino sobib - selle näite jaoks on vaja ainult kolme tihvti. See projekt koosneb kahest programmi juhtimise nupust, andmete saatmiseks mõeldud MIDI -pordist ja sõnumite vastuvõtmise seadmest. See vooluring on siin üles ehitatud leivaplaadile, kuid tugeva lahenduse saamiseks on võimalik see projektikasti ja joodetud pistikutega üle kanda.





Vooluahela kokkupanek

Arduino-Midi-kontrolleri ahel

MIDI ühendus

MIDI-pistikupesa

Ühendage oma MIDI -pistikupesa järgmiselt.

  • MIDI pin 5 Arduino Transmit (TX) 1 -le 220 oomi takisti kaudu
  • MIDI pin 4 kuni Arduino +5V 220 oomi takisti kaudu
  • MIDI tihvt 2 Arduino maapinnale

Nuppühendus

Nupud töötavad, muutes takistust, mida Arduino 'näeb'. Arduino tihvt läheb läbi lüliti otse maapinnale ( MADAL ) 10k oomise takisti kaudu (tõmbetakistus, tagades, et väärtus jääb madalaks). Nupu vajutamisel muutub vooluahela väärtus +5v ilma takistita ( KÕRGE ). Arduino saab selle muutuse tuvastada, kasutades digitalRead (tihvt) käsk. Ühendage nupud Arduino digitaalse sisendi/väljundi (I/O) kontaktidega 6 ja 7. Ühendage mõlemad nupud:

  • Nupu vasak pool kuni +5V
  • Nupu parem pool Arduino Groundi külge 10k oomise takisti kaudu
  • Nupu parem pool Arduino tihvtiga (6 või 7)

MIDI testimine

Nüüd, kui kogu riistvara on valmis, on aeg seda testida. Teil on vaja USB-MIDI liidest (seda saavad teha paljud heliliidesed) ja MIDI-kaablit. Leivalauale ühendatud MIDI -port saadab andmeid, seega on see väljund. Teie arvuti võtab andmeid vastu, seega on see sisend. See projekt kasutab suurepärast Arduino MIDI raamatukogu v4.2 Autor: Forty Seven Effects. Kui olete kogu installinud, saate selle oma koodi lisada, minnes aadressile Visand> Kaasa kogu> MIDI .

Teil on vaja ka programmi sissetulevate MIDI -andmete jälgimiseks:

Ühendage Arduino arvutiga ja laadige üles järgmine testkood (ärge unustage valida õige plaat ja port Tööriistad> Tahvel ja Tööriistad> Port menüüd).

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

See kood saadab CC -teate, oodake 1 sekund, saatke PC -sõnum ja oodake 1 sekund määramata aja jooksul. Kui kõik töötab õigesti, peaksite oma MIDI -kuvarile nägema teadet.

Kui midagi ei juhtu, ärge paanitsege! Proovige veaotsingut:

  • Veenduge, et kõik ühendused oleksid õiged
  • Kontrollige, kas MIDI -port on õigesti ühendatud - välisservadel peaks olema 2 varunõela
  • Kontrollige veel kord, kas ahel on õige
  • Veenduge, et vooluahel on ühendatud MIDI-kaabli abil USB-MIDI-liidesega
  • Kontrollige, kas teie MIDI -kaabel on ühendatud sisend USB-MIDI liideses
  • Veenduge, et Arduinol oleks võimsus
  • Installige oma USB-MIDI liidese jaoks õige draiver

Kui te olete ikka Probleemide korral tasub leiba vaadata. Odavad lauad võivad mõnikord olla väga ebajärjekindlad ja madala kvaliteediga-see juhtus minuga selle projekti kallal töötades.

Nuppude testimine

Nüüd on aeg testida, kas nupud töötavad õigesti. Laadige üles järgmine testkood. Selle osa testimiseks pole MIDI -d vaja ühendada.

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

}

Käivitage see kood (kuid hoidke USB -kaabel ühendatud) ja avage jadamonitor ( Üleval paremal> Seeriamonitor ). Kui vajutate nuppu, peaksite nägema 'Button One Works!' või 'Nupp kaks töötab!' olenevalt vajutatud nupust.

Sellest näitest tuleb välja võtta üks oluline märkus-tarkvara de-bounce. See on lihtne 10 millisekundiline (ms) viivitus nupu kontrollimise ja seejärel nupu uuesti kontrollimise vahel. See suurendab nupuvajutuse täpsust ja aitab vältida Arduino käivitamist. Te ei pea seda tegema, kuigi see on soovitatav.

Kontrolleri loomine

Nüüd, kui kõik on juhtmega ühendatud ja töötab, on aeg kogu kontroller kokku panna.

See näide saadab iga vajutatud nupu jaoks erineva CC -teate. Kasutan seda Ableton Live 9.6 juhtimiseks OS X -is. Kood sarnaneb mõlema ülaltoodud testprooviga.

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

Märkus - te ei saa seda kasutada Serial.println () MIDI väljundiga.

Kui soovite CC -i asemel saata arvutisõnumi, asendage see lihtsalt:

midiOut.sendControlChange(42,127,1);

Koos:

midiOut.sendProgramChange(value, channel);

Tegevuses

Allpool on näidis kontrollerina Ableton Live ( Parim DJ tarkvara iga eelarve jaoks ). Parempoolses ülanurgas on helimõõturid ja üleval keskel sissetulevad midi -sõnumid (via MIDI monitor OS X -is).

kuidas alla laadida sisseehitatud flash -videot

Kas olete teinud MIDI -kontrolleri?

Kohandatud MIDI -kontrolleri jaoks on palju praktilisi kasutusvõimalusi. Võite ehitada tohutu jalaga juhitava seadme või klanitud stuudiokontrolleri. Ja kui olete huvitatud selle ostmisest, siis siin on parimad USB -MIDI -kontrollerid, mida saate osta.

Pildikrediit: Keith Gentry Shutterstock.com kaudu

Loodame, et teile meeldivad esemed, mida soovitame ja arutame! MUO -l on sidus- ja sponsoreeritud partnerlussuhted, nii et saame osa teie ostude tulust. See ei mõjuta teie makstavat hinda ja aitab meil pakkuda parimaid tootesoovitusi.

Jaga Jaga Piiksuma E -post Kas tasub Windows 11 -le üle minna?

Windows on ümber kujundatud. Kuid kas sellest piisab, et veenda teid Windows 10 -lt Windows 11 -le üle minema?

Loe edasi
Seotud teemad
  • Isetegija
  • DJ tarkvara
  • Arduino
  • Elektroonika
  • KOLMAPÄEV
Autori kohta Joe Coburn(136 artiklit avaldatud)

Joe on lõpetanud arvutiteaduse Ühendkuningriigi Lincolni ülikoolis. Ta on professionaalne tarkvaraarendaja ja kui ta ei lennuta droonidega ega kirjuta muusikat, võib teda sageli leida pildistamas või videoid tootmas.

Rohkem Joe Coburnilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin