Kuinka tehdä MIDI -ohjain Arduinolla

Kuinka tehdä MIDI -ohjain Arduinolla

Muusikkona, joka on kerännyt kokoelman soittimia ja kohinalaatikoita, nöyrä Arduino on täydellinen työkalu mukautetun MIDI -ohjaimen luomiseen. Vaikka Raspberry Pi on saattanut ottaa kruunun esineiden internet (IoT) -projekteihin, yksinkertaisella Arduino Unolla (mitkä ovat erilaiset Arduinon tyypit?) On enemmän kuin tarpeeksi voimaa tähän projektiin.





Käytitkö ensimmäistä kertaa Arduinoa? Ei hätää, meillä on täydellinen Arduinon aloittelijan opas lukea läpi ennen kuin ryhdyt tähän projektiin.





Mikä on MIDI?

MIDI tarkoittaa Musical Instrument Digital Interface. Se hahmottaa tavanomaisen tavan, jolla musiikkilaitteet voivat kommunikoida keskenään. Jos omistat elektronisen näppäimistön, sinulla on todennäköisesti MIDI -käyttöliittymä. Vaikka MIDI: n käyttöönottoon liittyy muutamia teknisiä yksityiskohtia, on tärkeää muistaa, että MIDI ei ole ääni! MIDI -data on yksinkertainen ohjejoukko (yhtä käskyä kutsutaan sanomaksi), jonka toinen laite voi toteuttaa eri äänien tai ohjausparametrien tuottamiseksi.





MIDI tukee 16 kanavaa. Tämä tarkoittaa, että jokainen kaapeli voi tukea 16 eri laitetta, jotka kommunikoivat itsenäisesti keskenään. Laitteet kytketään 5-nastaisella DIN-kaapelilla. DIN tarkoittaa 'German Institute for Standardization', ja se on yksinkertaisesti kaapeli, jossa on viisi nastaa liittimen sisällä. USB: tä käytetään usein 5-nastaisen DIN: n sijasta, tai voidaan käyttää USB-MIDI-liitäntää.

MIDI-kaapeli, uros



Hallitse muutosta ja ohjelman muutosta

MIDI -viestejä on kahta päätyyppiä: Control Change ja Program Change.

Control Change (CC) -viestit sisältävät ohjaimen numeron ja arvon välillä 0 - 127. CC -viestejä käytetään usein asetusten, kuten äänenvoimakkuuden tai äänenvoimakkuuden muuttamiseen. Laitteiden, jotka hyväksyvät MIDI: n, tulee olla käsikirja, jossa kerrotaan, mitkä kanavat ja viestit on oletusarvoisesti asetettu ja miten niitä muutetaan (tunnetaan nimellä MIDI -kartoitus).





Ohjelmamuutosviestit (PC) ovat yksinkertaisempia kuin CC -viestit. PC -viestit koostuvat yhdestä numerosta, ja niitä käytetään laitteen esiasetuksen tai korjaustiedoston muuttamiseen. PC -viestit tunnetaan joskus nimellä 'Patch Change'. Kuten CC -viestit, valmistajien on toimitettava asiakirja, jossa esitetään, mitä esiasetuksia tietty viesti muuttaa.

Mitä tarvitset

  • Arduino
  • 5-napainen DIN-naarasliitin
  • 2 x 220 ohmin vastukset
  • 2 x 10 k ohmin vastukset
  • 2 x hetkellinen kytkin
  • Liitäntäjohdot
  • Leipälauta
  • MIDI -kaapeli
  • MIDI -laite tai USB -liitäntä
Vesi ja puu 5 kpl DIN 5 -nastainen PCB -kiinnitysnaarasliitin PC -näppäimistölle OSTA NYT AMAZONISTA

Rakenna suunnitelma

Tämä projekti tulee olemaan melko yksinkertainen. Voit tietysti lisätä lisää painikkeita tai laitteistoa tarpeidesi mukaan. Lähes mikä tahansa Arduino on sopiva - tähän esimerkkiin tarvitaan vain kolme nastaa. Tämä projekti koostuu kahdesta painikkeesta ohjelman ohjaamiseksi, MIDI -portista tietojen lähettämiseksi ja laitteesta viestien vastaanottamiseksi. Tämä piiri on rakennettu leipälevylle täällä, mutta se on mahdollista siirtää projektikoteloon ja juotosliittimiin kestävän ratkaisun saamiseksi.





Piirikokoonpano

Arduino-Midi-ohjainpiiri

MIDI -yhteys

MIDI-Pinout

Kytke MIDI -pistorasia seuraavasti:

  • MIDI -nasta 5 Arduino Transmit (TX) 1: een 220 ohmin vastuksen kautta
  • MIDI -nasta 4 Arduinoon +5 V 220 ohmin vastuksen kautta
  • MIDI -nasta 2 Arduinon maahan

Painikeyhteys

Painikkeet toimivat muuttamalla vastusta, jonka Arduino 'näkee'. Arduino -tappi menee kytkimen läpi suoraan maahan ( MATALA ) 10 k ohmin vastuksen kautta (`` vedä alas '' vastus, joka varmistaa arvon pysymisen alhaisena). Kun painiketta painetaan, piirin näkemä arvo muuttuu arvoon +5v ilman vastusta ( KORKEA ). Arduino voi havaita tämän muutoksen käyttämällä digitalRead (nasta) komento. Liitä painikkeet Arduinon digitaalisen tulon/lähdön (I/O) nastoihin 6 ja 7. Yhdistä molemmat painikkeet:

  • Napin vasen puoli +5V
  • Napin oikea puoli Arduino Groundiin 10 k ohmin vastuksen kautta
  • Napin oikea puoli Arduino -nastaan ​​(6 tai 7)

MIDI -testaus

Nyt kun kaikki laitteet on valmis, on aika testata sitä. Tarvitset USB-MIDI-liitännän (monet ääniliitännät voivat tehdä tämän) ja MIDI-kaapelin. Leipälevylle kytketty MIDI -portti lähettää dataa, joten se on lähtö. Tietokoneesi vastaanottaa tietoja, joten se on tulo. Tässä projektissa käytetään erinomaista Arduinoa MIDI -kirjasto v4.2 Kirjailija: Forty Seven Effects Kun olet asentanut kirjaston, voit sisällyttää sen koodiin siirtymällä kohtaan Luonnos> Sisällytä kirjasto> MIDI .

Tarvitset myös ohjelman tulevien MIDI -tietojen seurantaan:

Liitä Arduino tietokoneeseen ja lataa seuraava testikoodi (älä unohda valita oikeaa levyä ja porttia Työkalut> Hallitus ja Työkalut> Portti valikot).

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

Tämä koodi lähettää CC -viestin, odota 1 sekunti, lähetä PC -viesti ja odota 1 sekunti loputtomiin. Jos kaikki toimii oikein, sinun pitäisi nähdä viesti MIDI -näytössä.

Jos mitään ei tapahdu, älä panikoi! Kokeile vianetsintää:

  • Varmista, että kaikki liitännät ovat oikein
  • Tarkista, että MIDI -portti on kytketty oikein - ulkoreunoissa on oltava 2 varatappia
  • Tarkista vielä kerran, että piiri on oikea
  • Varmista, että piiri on kytketty USB-MIDI-liitäntään MIDI-kaapelilla
  • Tarkista, että MIDI -kaapelisi on kytketty tulo USB-MIDI-liitännässäsi
  • Varmista, että Arduinolla on virtaa
  • Asenna oikea ohjain USB-MIDI-liitäntään

Jos olet edelleen Jos sinulla on ongelmia, kannattaa ehkä tarkistaa leipälauta. Halvat levyt voivat joskus olla hyvin epäjohdonmukaisia ​​ja heikkolaatuisia-se tapahtui minulle tämän projektin parissa.

Painikkeiden testaus

Nyt on aika testata, toimivatko painikkeet oikein. Lataa seuraava testikoodi. MIDI: tä ei tarvitse liittää tämän osan testaamiseen.

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

}

Suorita tämä koodi (mutta pidä USB -kaapeli kytkettynä) ja avaa sarjamonitori ( Ylhäällä oikealla> Sarjamonitori ). Kun painat painiketta, näet 'Button One Works!' tai 'Painike kaksi toimii!' painamastasi painikkeesta riippuen.

Tässä esimerkissä on yksi tärkeä huomautus-ohjelmiston poistuminen käytöstä. Tämä on yksinkertainen 10 millisekunnin (ms) viive painikkeen tarkistamisen ja painikkeen tarkistamisen välillä. Tämä lisää painikkeen painamisen tarkkuutta ja auttaa estämään kohinaa, joka laukaisee Arduinon. Sinun ei tarvitse tehdä tätä, vaikka se on suositeltavaa.

Ohjaimen luominen

Nyt kun kaikki on kytketty ja toimii, on aika koota koko ohjain.

Tämä esimerkki lähettää eri CC -viestin jokaiselle painetulle painikkeelle. Käytän tätä Ableton Live 9.6: n hallintaan OS X: ssä. Koodi on samanlainen kuin molemmat yllä olevat testinäytteet.

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

Huomaa - et voi käyttää Serial.println () MIDI -lähdöllä.

Jos haluat lähettää PC -viestin CC: n sijaan, vaihda:

midiOut.sendControlChange(42,127,1);

Kanssa:

midiOut.sendProgramChange(value, channel);

Toiminnassa

Alla on esittely ohjaimena Ableton Live ( Paras DJ -ohjelmisto jokaiseen budjettiin ). Oikeassa yläkulmassa näkyvät äänimittarit ja ylhäällä keskellä tulevat midi -viestit (kautta MIDI -näyttö OS X: ssä).

kuinka rajata tekstiä Photoshopissa

Oletko tehnyt MIDI -ohjaimen?

Mukautetulle MIDI -ohjaimelle on paljon käytännön käyttötarkoituksia. Voit rakentaa suuren jalkaohjattavan yksikön tai tyylikkään studio-ohjaimen. Ja jos olet kiinnostunut ostamaan sellaisen, tässä ovat parhaat USB -MIDI -ohjaimet, joita voit ostaa.

Kuvaluotto: Keith Gentry Shutterstock.comin kautta

Toivomme, että pidät suosittelemistamme ja keskusteltavista kohteista! MUOlla on kumppanuus- ja sponsoroituja kumppanuuksia, joten saamme osan joidenkin ostojesi tuloista. Tämä ei vaikuta maksamaasi hintaan ja auttaa meitä tarjoamaan parhaat tuotesuositukset.

Jaa Jaa Tweet Sähköposti Kannattaako päivittää Windows 11: een?

Windows on suunniteltu uudelleen. Mutta riittääkö se vakuuttamaan sinut siirtymään Windows 10: stä Windows 11: een?

Lue seuraava
Liittyvät aiheet
  • tee-se-itse
  • DJ -ohjelmisto
  • Arduino
  • Elektroniikka
  • KESKIPÄIVÄ
Kirjailijasta Joe Coburn(136 artikkelia julkaistu)

Joe on valmistunut tietojenkäsittelytieteestä Lincolnin yliopistosta Iso -Britanniasta. Hän on ammattimainen ohjelmistokehittäjä, ja kun hän ei lentä droneilla tai kirjoita musiikkia, hänet voidaan usein ottaa valokuvista tai videoista.

Lisää Joe Coburnilta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi