Hvordan lage en MIDI-kontroller med en Arduino
Som en musiker som har samlet en samling av musikinstrumenter og støybokser, er den ydmyke Arduino det perfekte verktøyet for å skape en tilpasset MIDI-kontroller. Selv om Raspberry Pi kan ha tatt kronen for ting til Internett (IoT) Tingenes internett: 10 Nyttige produkter du må prøve i 2016 Tingenes internett: 10 Nyttige produkter du må prøve i 2016 Internettet på ting er på vei opp i 2016, men hva betyr det egentlig? Hvordan har du personlig nytte av tingets internett? Her er noen nyttige produkter å illustrere. Les flere prosjekter, en enkel Arduino Uno (hva er de forskjellige typene Arduino? Arduino Kjøpsguide: Hvilket styre bør du få? Arduino Kjøpeguide: Hvilket styre bør du få? Det er så mange forskjellige typer Arduino boards der ute, du Du må tilgis for å være forvirret. Hva skal du kjøpe for prosjektet? La oss hjelpe, med denne Arduino kjøpeguide! Les mer) har mer enn nok kraft til dette prosjektet.
Første gang du bruker en Arduino? Ingen bekymringer, vi har en komplett Arduino nybegynnersguide. Komme i gang med Arduino: En nybegynnersveiledning Komme i gang med Arduino: En nybegynnersveiledning Arduino er en open source elektronikk prototyping plattform basert på fleksibel, brukervennlig maskinvare og programvare. Det er ment for kunstnere, designere, hobbyister, og alle som er interessert i å lage interaktive objekter eller miljøer. Les mer for å lese gjennom før du takler dette prosjektet.
Hva er MIDI?
MIDI står for Musical Instrument Digital Interface. Det skisserer en standard måte for musikalske enheter å kommunisere med hverandre. Hvis du eier et elektronisk tastatur, har du sannsynligvis et MIDI-grensesnitt. Mens det er noen tekniske detaljer involvert i implementeringen av MIDI, er det viktig å huske at MIDI ikke er lyd! MIDI-data er et enkelt sett med instruksjoner (en instruksjon kalles a “budskap”) som en annen enhet kan implementere for å lage forskjellige lyder eller kontrollparametere.
MIDI støtter 16 kanaler. Dette betyr at hver kabel kan støtte 16 forskjellige enheter som kommuniserer uavhengig med hverandre. Enheter er koblet til med en 5-bens DIN-kabel. DIN står for “Tysk institutt for standardisering”, og er bare en kabel med fem pinner i kontakten. USB brukes ofte i stedet for 5-pin DIN, eller et USB-MIDI-grensesnitt kan brukes.
Kontroll Endre og Program Endre
Det er to hovedtyper av MIDI-melding: Kontrollendring, og Programendring.
Control Change (CC) meldinger inneholder et kontroller nummer og en verdi mellom 0 og 127. CC meldinger brukes ofte til å endre innstillinger som volum eller tonehøyde. Enheter som godtar MIDI, bør komme med en håndbok som forklarer hvilke kanaler og meldinger som er satt opp som standard, og hvordan de kan endres (kjent som MIDI-kartlegging).
Program Endring (PC) meldinger er enklere enn CC-meldinger. PC-meldinger består av et enkelt nummer, og brukes til å endre forhåndsinnstillingen eller oppdateringen på en enhet. PC-meldinger er noen ganger kjent som “Patch Change”. I likhet med CC-meldinger, bør produsentene gi et dokument som beskriver hvilke forhåndsinnstillinger som endres av en bestemt melding.
Hva du trenger
- Arduino
- 5-pinners DIN-hunnkontakt
- 2 x 220 ohm motstander
- 2 x 10k ohm motstander
- 2 x kortvarige brytere
- Hook-up ledninger
- bread~~POS=TRUNC
- MIDI-kabel
- MIDI-enhet eller USB-grensesnitt
Vann og tre 5 stk. DIN 5-pin PCB-montering Hunnkrok for PC-tastatur Vann og tre 5 stk. DIN 5-pin PCB-montering Kvinnelige stikkontakter for PC-tastatur Kjøp nå På Amazon $ 2,79
Bygg Plan
Dette prosjektet vil være ganske enkelt. Du kan selvfølgelig legge til flere knapper eller maskinvare som passer dine behov. Nesten noen Arduino vil være egnet - bare tre pins er nødvendig for dette eksempelet. Dette prosjektet består av to knapper for å styre programmet, en MIDI-port for å sende dataene, og en enhet for å motta meldingene. Denne kretsen er bygget på et brettbrett Beginners Electronics: 10 ferdigheter du trenger å vite Begynnerens elektronikk: 10 ferdigheter du trenger å vite Mange av oss har aldri engang rørt et loddejern - men å gjøre ting kan være utrolig givende. Her er ti av de mest grunnleggende DIY elektronikk ferdighetene for å hjelpe deg med å komme i gang. Les mer her, men det er mulig å overføre den til en prosjektboks og loddeplugg for en robust løsning.
Kretskort
MIDI-tilkobling
Koble til MIDI-kontakten på følgende måte:
- MIDI pin 5 til Arduino Transmit (TX) 1 via en 220 ohm motstand
- MIDI pin 4 til Arduino + 5V via en 220 ohm motstand
- MIDI pin 2 til Arduino bakken
Knappforbindelse
Knappene fungerer ved å endre motstanden Arduino “ser”. Arduino pin går gjennom bryteren rett til bakken (LAV) via en 10k ohm motstand (a “trekke ned” motstand, slik at verdien forblir lav). Når knappen trykkes, endres verdien som ses av kretsen til + 5v uten motstand (HØY). Arduino kan oppdage denne endringen ved hjelp av DigitalLes (pin) kommando. Koble til knappene 6 og 7 på Arduino digital inngang / utgang (I / O). Koble begge knappene:
- Venstre side av knappen til + 5V
- Høyre side av knappen til Arduino Ground via en 10k ohm motstand
- Høyre side av knappen til Arduino pin (6 eller 7)
MIDI Testing
Nå som all maskinvare er ferdig, er det på tide å teste det. Du trenger et USB-MIDI-grensesnitt (mange lydgrensesnitt kan gjøre dette) og en MIDI-kabel. MIDI-porten som er koblet opp på breadboard, sender data, så det er utgangen. Datamaskinen din mottar dataene, derfor er det inngangen. Dette prosjektet bruker det ypperlige Arduino MIDI Library v4.2 av Forty Seven Effects. Når du har installert Biblioteket, kan du inkludere det i koden din ved å gå til Skisse> Inkluder bibliotek> MIDI.
Du trenger også et program for å overvåke innkommende MIDI-data:
- MIDI Monitor for OS X
- MIDI-OX for Windows
- KMidimon for Linux
Koble Arduino Komme i gang med Arduino Starter Kit - Installere drivere og sette opp styret og porten Komme i gang med Arduino Starter Kit - Installere drivere og sette opp styret og porten Så du har kjøpt deg en Arduino startpakke, og muligens noen andre tilfeldige, kule komponenter - nå hva? Hvordan kommer du faktisk i gang med programmering av denne Arduino-tingen? Hvordan stiller du opp ... Les mer på datamaskinen din og last opp følgende testkode (ikke glem å velge riktig kort og port fra Verktøy> Styret og Verktøy> Port menyer).
#inkludere #inkludere #inkludere #inkludere #inkludere MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // lage et MIDI-objekt som heter midiOut void setup () Serial.begin (31250); // setup seriell for MIDI tomromsløyfe () midiOut.sendControlChange (56,127,1); // send en MIDI CC - 56 = notat, 127 = hastighet, 1 = kanalforsinkelse (1000); // vent 1 sekund midiOut.sendProgramChange (12,1); // send en MIDI PC - 12 = verdi, 1 = kanalforsinkelse (1000); // vent 1 sekund
Denne koden vil sende en CC-melding, vent 1 sekund, send en PC-melding og vent deretter et sekund på ubestemt tid. Hvis alt fungerer riktig, bør du se en melding som vises i MIDI-skjermen.
Hvis ingenting skjer, ikke panikk! Prøv feilsøking:
- Kontroller at alle tilkoblingene er riktige
- Kontroller at MIDI-porten er koblet riktig - det skal være 2 ekstra pinner på utsiden
- Dobbeltklikk kretsen er riktig
- Kontroller at kretsen er koblet til et USB-MIDI-grensesnitt med en MIDI-kabel
- Sjekk at MIDI-kabelen er koblet til inngang på USB-MIDI-grensesnittet
- Pass på at Arduino har strøm
- Installer riktig driver for USB-MIDI-grensesnittet
Hvis du er fortsatt Å ha problemer kan det være verdt å sjekke brødbrettet ditt. Billige brett kan noen ganger være svært inkonsekvent og lav kvalitet - det skjedde med meg mens jeg jobbet med dette prosjektet.
Knapptesting
Nå er det på tide å teste at knappene fungerer som de skal. Last opp følgende testkode. MIDI trenger ikke å være koblet til å teste denne delen.
const int buttonOne = 6; // tilordne knappestift til variabel const int knappTwo = 7; // tilordne knappestift til variabelt tomromoppsett () Serial.begin (9600); // oppsett seriell for tekst pinMode (buttonOne, INPUT); // oppsettknappen som input pinMode (buttonTwo, INPUT); // oppsettknappen som input void loop () if (digitalRead (buttonOne) == HIGH) // kontroller forsinkelsestasten (10); // software de-bounce hvis (digitalRead (buttonOne) == HIGH) // sjekk knappen tilstand igjen Serial.println ("Button One Works!"); // loggresultatforsinkelse (250); hvis (digitalRead (buttonTwo) == HØY) // sjekk knappen forsinkelse (10); // software de-sprett hvis (digitalRead (buttonTwo) == HIGH) // sjekk knappen tilstand igjen Serial.println ("Button Two Works!"); // loggresultatforsinkelse (250);
Kjør denne koden (men hold USB-kabelen tilkoblet) og åpne den serielle skjermen (Høyre Høyre> Seriell Skjerm). Når du trykker på en knapp, bør du se “Button One Works!” eller “Button Two Works!” avhengig av knappen du trykket på.
Det er et viktig notat å ta bort fra dette eksemplet - programvaren avvises. Dette er en enkel 10 millisekond (ms) forsinkelse mellom å sjekke knappen og deretter sjekke knappen igjen. Dette øker nøyaktigheten av knappetrykket og bidrar til å forhindre at støy utløses av Arduino. Du trenger ikke å gjøre dette, selv om det anbefales.
Opprette kontrolleren
Nå som alt er koblet og arbeider, er det på tide å montere hele kontrolleren.
Dette eksemplet vil sende en annen CC-melding for hver knapp som trykkes. Jeg bruker dette til å kontrollere Ableton Live 9.6 på OS X. Koden ligner begge testeksemplene ovenfor.
#inkludere #inkludere #inkludere #inkludere #inkludere const int buttonOne = 6; // tilordne knappestift til variabel const int knappTwo = 7; // tilordne knappestift til variabel MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // lage et MIDI objekt kalt midiOut void setup () pinMode (buttonOne, INPUT); // oppsettknappen som input pinMode (buttonTwo, INPUT); // oppsettknappen som input Serial.begin (31250); // oppsett MIDI-utgang tomromsløyfe () hvis (digitalRead (buttonOne) == HIGH) // kontroller forsinkelsestasten (10); // software de-sprett hvis (digitalRead (buttonOne) == HIGH) // sjekk knappen tilstand igjen midiOut.sendControlChange (56,127,1); // send en MIDI CC - 56 = notat, 127 = hastighet, 1 = kanalforsinkelse (250); hvis (digitalRead (buttonTwo) == HØY) // sjekk knappen forsinkelse (10); // software de-bounce hvis (digitalRead (buttonTwo) == HIGH) // sjekk knappen tilstand igjen midiOut.sendControlChange (42,127,1); // send en MIDI CC - 42 = notat, 127 = hastighet, 1 = kanalforsinkelse (250);
Merk - du vil ikke kunne bruke Serial.println () med MIDI-utgang.
Hvis du vil sende en PC-melding i stedet for en CC, erstatter du bare:
midiOut.sendControlChange (42,127,1);
Med:
midiOut.sendProgramChange (verdi, kanal);
I aksjon
Nedenfor er en demonstrasjon som kontroller for Ableton Live (Best DJ-programvare for hvert budsjett. Den beste DJ-programvaren for hvert budsjett. Den beste DJ-programvaren for hvert budsjett. God blandingsprogramvare kan gjøre hele forskjellen i ytelsen. Enten du bruker en Mac , Windows eller Linux, er alle nivåer av dyktighet og budsjett tatt i betraktning hvis du vil starte DJing. Les mer). Øverst til høyre vises lydmålere, og øverste midten viser innkommende midi-meldinger (via MIDI Monitor på OS X).
Har du laget en MIDI-kontroller?
Det er mange praktiske bruksområder for en tilpasset MIDI-kontroller. Du kan bygge en stor fotstyrt enhet eller en slank studiokontroll. Har du laget en egendefinert MIDI-kontroller? Gi meg beskjed i kommentarene, jeg vil gjerne se dem!
Bilde Kreditt: Keith Gentry via Shutterstock.com
Utforsk mer om: Arduino, DJ Software, Elektronikk, MIDI.