Sådan laver du en MIDI Controller med en Arduino

Som en musikal der har samlet en samling af musikinstrumenter og støjkasser, er den ydmyge Arduino det perfekte værktøj til at oprette en brugerdefineret MIDI controller.

Som en musikal der har samlet en samling af musikinstrumenter og støjkasser, er den ydmyge Arduino det perfekte værktøj til at oprette en brugerdefineret MIDI controller.
Reklame

Som en musikal der har samlet en samling af musikinstrumenter og støjkasser, er den ydmyge Arduino det perfekte værktøj til at oprette en brugerdefineret MIDI controller. Mens Raspberry Pi kan have taget kronen for ting af ting (IoT) Tingenes internet: 10 Nyttige produkter, du skal prøve i 2016 Tingenees internet: 10 Nyttige produkter, du skal forsøge i 2016 Tingene på Internettet raser op i 2016, men hvad betyder det præcist? Hvordan har du personligt nytte af tingets internet? Her er et par nyttige produkter til at illustrere. Læs mere projekter, en simpel Arduino Uno (hvad er de forskellige typer Arduino? Arduino Køb Guide: Hvilket stykke skal du få? Arduino Køb Guide: Hvilket bord skal du få? Der er så mange forskellige slags Arduino boards derude, du du skal tilgives for at være forvirret. Hvad skal du købe til dit projekt? Lad os hjælpe med denne Arduino købeguide! Læs mere) har mere end nok strøm til dette projekt.

Første gang du bruger en Arduino? Ingen bekymringer, vi har en komplet Arduino begynderguide. Kom godt i gang med Arduino: En nybegyndervejledning Kom godt i gang med Arduino: En nybegyndervejledning. Arduino er en open source elektronik prototypeplanlægning baseret på fleksibel, brugervenlig hardware og software. Det er beregnet til kunstnere, designere, hobbyister og alle interesserede i at skabe interaktive objekter eller miljøer. Læs mere for at læse igennem, inden du tager fat på dette projekt.

Arduino-Midi-Controller-Breadboard

Hvad er MIDI?

MIDI står for Musical Instrument Digital Interface. Det skitserer en standard måde for musikalske enheder at kommunikere med hinanden. Hvis du ejer et elektronisk tastatur, har du sandsynligvis en MIDI-grænseflade. Mens der er et par tekniske detaljer involveret i implementeringen af ​​MIDI, er det vigtigt at huske at MIDI ikke er lyd! MIDI-data er et enkelt sæt instruktioner (en instruktion kaldes en "meddelelse"), som en anden enhed kan implementere for at lave forskellige lyde eller kontrolparametre.

MIDI understøtter 16 kanaler. Dette betyder, at hvert kabel kan understøtte 16 forskellige enheder, der kommunikerer uafhængigt af hinanden. Enhederne er tilsluttet ved hjælp af et 5-bens DIN-kabel. DIN står for "German Institute for Standardization", og er simpelthen et kabel med fem stifter inde i stikket. USB bruges ofte i stedet for 5-pin DIN, eller en USB-MIDI interface kan bruges.

MIDI-kabel-Mand

Kontrolændring og programændring

Der er to hovedtyper af MIDI-besked: Kontrolændring og Programændring.

Kontrolændring (CC) -meddelelser indeholder et controllernummer og en værdi mellem 0 og 127. CC-meddelelser bruges ofte til at ændre indstillinger som volumen eller tonehøjde. Enheder, der accepterer MIDI, skulle komme med en manual, der forklarer, hvilke kanaler og meddelelser som standard er indstillet, og hvordan man ændrer dem (kendt som MIDI-kortlægning).

Programændring (PC) -meddelelser er enklere end CC-meddelelser. PC-beskeder består af et enkelt nummer og bruges til at ændre forudindstillet eller patch på en enhed. PC-meddelelser kaldes nogle gange som "Patch Change". På samme måde som CC-meddelelser skal producenterne fremlægge et dokument, der beskriver hvilke forudindstillinger der ændres af en bestemt meddelelse.

Hvad du skal bruge

  • Arduino
  • 5-bens DIN-stik
  • 2 x 220 ohm modstande
  • 2 x 10k ohm modstande
  • 2 x øjeblikkelige kontakter
  • Hook-up ledninger
  • breadboard
  • MIDI-kabel
  • MIDI-enhed eller USB-interface

Vand & Træ 5 stk. DIN 5-pin PCB-montering Kvindebeslag til pc-tastatur Vand og træ 5 stk. DIN 5-pin PCB-montering Kvindebeslag til pc-tastatur Køb nu hos Amazon $ 4.59

Build Plan

Dette projekt vil være ret simpelt. Du kan selvfølgelig tilføje flere knapper eller hardware, der passer til dine behov. Næsten enhver Arduino vil være egnet - kun tre stifter er nødvendige til dette eksempel. Dette projekt består af to knapper til styring af programmet, en MIDI-port for at sende data og en enhed til at modtage meddelelserne. Dette kredsløb er bygget på et brødbræt Begynderens elektronik: 10 færdigheder, du behøver at vide Begynderens elektronik: 10 færdigheder du behøver at vide Mange af os har aldrig engang rørt et loddejern - men at gøre ting kan være utrolig givende. Her er ti af de mest grundlæggende DIY elektronik færdigheder til at hjælpe dig med at komme i gang. Læs mere her, men det er muligt at overføre det til en projektkasse og loddeforbindelser til en robust løsning.

Circuit Assembly

Arduino-Midi-Controller-Circuit

MIDI-forbindelse

MIDI-Pinout

Træk din MIDI-stikket ud som følger:

  • MIDI pin 5 til Arduino Transmit (TX) 1 via en 220 ohm modstand
  • MIDI pin 4 til Arduino + 5V via en 220 ohm modstand
  • MIDI pin 2 til Arduino jorden

Knapforbindelse

Knapperne virker ved at ændre modstanden, som Arduino "ser". Arduino-stiften går gennem kontakten lige til jorden ( LOW ) via en 10k ohm modstand (en "pull down" modstand, der sikrer, at værdien forbliver lav). Når knappen trykkes, skifter den værdi, der ses af kredsløbet til + 5v uden en modstand ( HIGH ). Arduino kan registrere denne ændring ved hjælp af kommandoen digitalRead (pin) . Tilslut knapperne 6 og 7 på Arduino digital input / output (I / O). Forbind begge knapper:

  • Venstre side af knappen til + 5V
  • Højre side af knappen til Arduino Ground via en 10k ohm modstand
  • Højre side af knappen til Arduino pin (6 eller 7)

MIDI Testing

Nu da alt hardware er færdigt, er det tid til at teste det. Du skal bruge en USB-MIDI-grænseflade (mange lydgrænseflader kan gøre dette) og et MIDI-kabel. MIDI-porten koblet på brødbrættet sender data, så det er output. Din computer modtager dataene, derfor er det input. Dette projekt bruger det fremragende Arduino MIDI Library v4.2 med Forty Seven Effects. Når du har installeret biblioteket, kan du medtage det i din kode ved at gå til Sketch> Include Library> MIDI .

Du skal også have et program til at overvåge de indgående MIDI-data:

  • MIDI Monitor til OS X
  • MIDI-OX til Windows
  • KMidimon til Linux

Tilslut Arduino Kom godt i gang med dit Arduino Starter Kit - Installation af drivere og opsætning af bestyrelsen og porten Kom godt i gang med dit Arduino Starter Kit - Installation af drivere og opsætning af bestyrelsen og porten Så du har købt dig selv et Arduino startpakke, og muligvis nogle andre tilfældige cool komponenter - nu hvad? Hvordan kommer du faktisk i gang med at programmere denne Arduino ting? Hvordan stiller du op ... Læs mere på din computer og upload følgende testkode (glem ikke at vælge det rigtige kort og port fra Værktøjerne> Bestyr og Værktøjer> Portmenuer).

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

Denne kode sender en CC-besked, vent 1 sekund, send en pc-besked og vent derefter 1 sekund på ubestemt tid. Hvis alt fungerer korrekt, skal du se en besked i din MIDI-skærm.

Hvis der ikke sker noget, skal du ikke panikere! Prøv fejlfinding:

  • Sørg for at alle tilslutninger er korrekte
  • Kontrollér, at MIDI-porten er korrekt forbundet - der skal være 2 ekstra stifter på yderkanterne
  • Dobbeltkrydse kredsløbet er korrekt
  • Kontroller, at kredsløbet er forbundet til en USB-MIDI-grænseflade med et MIDI-kabel
  • Kontroller, at dit MIDI-kabel er forbundet til indgangen på din USB-MIDI-grænseflade
  • Sørg for, at Arduino har strøm
  • Installer den korrekte driver til din USB-MIDI-grænseflade

Hvis du stadig har problemer, kan det være værd at tjekke dit brødbræt. Billige bord kan undertiden være meget inkonsekvent og lav kvalitet - det skete for mig, mens jeg arbejder på dette projekt.

Button Testing

Nu er det tid til at teste, at knapperne fungerer korrekt. Upload følgende testkode. MIDI behøver ikke være forbundet for at teste denne del.

 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ør denne kode (men hold USB-kablet tilsluttet), og åbn Serial Monitor ( Top Right> Serial Monitor ). Når du trykker på en knap, skal du se "Button One Works!" Eller "Button Two Works!" Afhængigt af den knap du trykker på.

Der er en vigtig note til at tage væk fra dette eksempel - softwaren udløses. Dette er en simpel 10 millisekund (ms) forsinkelse mellem at tjekke knappen og derefter tjekke knappen igen. Dette øger nøjagtigheden af ​​knappen og hjælper med at forhindre støj, der udløser Arduino. Du behøver ikke at gøre dette, selv om det anbefales.

Oprettelse af controlleren

Nu, at alt er kablet og arbejder, er det på tide at samle hele controlleren.

Dette eksempel sender en anden CC-besked for hver knap, der trykkes. Jeg bruger dette til at kontrollere Ableton Live 9.6 på OS X. Koden svarer til begge testprøverne ovenfor.

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

Bemærk - du kan ikke bruge Serial.println () med MIDI output.
Hvis du vil sende en pc-besked i stedet for en CC, skal du blot erstatte:

 midiOut.sendControlChange(42, 127, 1); 

Med:

 midiOut.sendProgramChange(value, channel); 

I aktion

Nedenfor er der en demonstration som controller for Ableton Live (Bedste DJ-software til ethvert budget Den bedste DJ-software til ethvert budget Den bedste DJ-software til ethvert budget God blandingssoftware kan gøre hele forskellen i din ydeevne. Uanset om du bruger en Mac, Windows eller Linux, er alle niveauer af færdighed og budget taget i betragtning, hvis du vil starte DJing. Læs mere). Øverst til højre vises lydmålere, og øverste midten viser de indkommende midi-meddelelser (via MIDI Monitor på OS X).

Har du lavet en MIDI Controller?

Der er mange praktiske anvendelser til en brugerdefineret MIDI controller. Du kan bygge en stor fodstyret enhed eller en slank studio controller. Har du lavet en brugerdefineret MIDI controller? Lad mig vide i kommentarerne, jeg vil gerne se dem!

Billedkredit: Keith Gentry via Shutterstock.com

In this article