Sådan laves en MIDI-controller med en Arduino

  • Peter Holmes
  • 0
  • 3512
  • 832
Reklame

Som en musiker, der har samlet en samling musikinstrumenter og støjbokse, er den ydmyge Arduino det perfekte værktøj til at skabe en brugerdefineret MIDI-controller. Mens Raspberry Pi muligvis har taget kronen for Internet of Things (IoT) Tingenes Internet: 10 Nyttige produkter, du skal prøve i 2016 Internet of Things: 10 Nyttige produkter, du skal prøve i 2016 Internet of Things går i gang 2016, men hvad betyder det nøjagtigt? Hvordan drager du personlig fordel af tingenes internet? Her er et par nyttige produkter at illustrere. projekter, en simpel Arduino Uno (hvad er de forskellige typer Arduino? Arduino Købsguide: Hvilket bord skal du få? Arduino Købsguide: Hvilket bord skal du få? Der er så mange forskellige slags Arduino-tavler derude, ville du blive tilgivet for at blive forvirret. Hvilket skal du købe til dit projekt? Lad os hjælpe med denne Arduino-købsguide!) 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 begynderguide Kom godt i gang med Arduino: En begynderguide Arduino er en open source-elektronik-prototyperplatform baseret på fleksibel, brugervenlig hardware og software. Det er beregnet til kunstnere, designere, hobbyister og enhver der er interesseret i at skabe interaktive objekter eller miljøer. at læse igennem, inden du tackle dette projekt.

Hvad er MIDI?

MIDI står for Musical Instrument Digital Interface. Den skitserer en standardmåde for musikanordninger til at kommunikere med hinanden. Hvis du ejer et elektronisk tastatur har du sandsynligvis en MIDI-interface. Selvom der er nogle få 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 a “besked”), som en anden enhed kan implementere til 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 med hinanden. Enheder tilsluttes ved hjælp af et 5-polet DIN-kabel. DIN står for “Tysk Institut for Standardisering”, og er simpelthen et kabel med fem stifter inde i stikket. USB bruges ofte i stedet for 5-pin DIN, eller et USB-MIDI-interface kan bruges.

Kontroller ændring og programændring

Der er to hovedtyper af MIDI-meddelelse: Control Change og Program Change.

Kontrolændringsmeddelelser (CC) -meddelelser indeholder et kontrolnummer og en værdi mellem 0 og 127. CC-meddelelser bruges ofte til at ændre indstillinger som lydstyrke eller tonehøjde. Enheder, der accepterer MIDI, skal leveres med en manual, der forklarer, hvilke kanaler og meddelelser der er opsat som standard, og hvordan man ændrer dem (kendt som MIDI-kortlægning).

Programskiftmeddelelser (PC) -meddelelser er enklere end CC-meddelelser. PC-meddelelser består af et enkelt nummer og bruges til at ændre forudindstillingen eller patch'en på en enhed. PC-meddelelser er undertiden kendt som “Patch Change”. I lighed med CC-meddelelser skal producenter fremlægge et dokument, der beskriver, hvilke forudindstillinger der ændres af en bestemt meddelelse.

Hvad du har brug for

  • Arduino
  • 5-polet DIN-stikkontakt
  • 2 x 220 ohm-modstande
  • 2 x 10k ohm-modstande
  • 2 x momentante afbrydere
  • Tilslutningsledninger
  • breadboard
  • MIDI-kabel
  • MIDI-enhed eller USB-interface

Byg plan

Dette projekt vil være ganske enkelt. 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 ben er nødvendige til dette eksempel. Dette projekt består af to knapper til at kontrollere programmet, en MIDI-port til at sende dataene og en enhed til at modtage meddelelserne. Dette kredsløb er bygget på en brødbræt Begynderelektronik: 10 færdigheder, du har brug for at kende Begynderelektronik: 10 færdigheder, du har brug for at vide Mange af os har aldrig engang rørt ved et loddejern - men at gøre ting kan være utroligt givende. Her er ti af de mest basale DIY-elektronikfærdigheder, der hjælper dig med at komme i gang. her er det dog muligt at overføre det til en projektboks og loddetilslutninger for en robust løsning.

Kredsløb

MIDI-forbindelse

Tilslut din MIDI-stikket som følger:

  • MIDI-stift 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 fungerer ved at ændre modstanden Arduino “ser”. Arduino-stiften går gennem kontakten lige til jorden (LAV) via en 10k ohm-modstand (a “træk ned” modstand, hvilket sikrer, at værdien forbliver lav). Når der trykkes på knappen, ændres værdien af ​​kredsløbet til + 5v uden en modstand (HØJ). Arduino kan registrere denne ændring ved hjælp af DigitalLæs (pin) kommando. Forbind knapperne til ben 6 og 7 på Arduino digital indgang / udgang (I / O). Tilslut 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-stiften (6 eller 7)

MIDI-test

Nu hvor al hardware er færdig, er det tid til at teste det. Du har brug for en USB-MIDI-interface (mange lydgrænseflader kan gøre dette) og et MIDI-kabel. MIDI-porten, der er tilsluttet 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 af Forty Seven Effects. Når du har installeret biblioteket, kan du inkludere det i din kode ved at gå til Skitse> Inkluder bibliotek> MIDI.

Du har også brug for et program til at overvåge de indkommende 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 tavlen og havnen Kom godt i gang med dit Arduino Starter Kit - Installation af drivere og opsætning af Board & Port Så du har købt dig selv et Arduino starter kit, og muligvis nogle andre tilfældige seje komponenter - hvad nu? Hvordan kommer du faktisk i gang med programmeringen af ​​denne Arduino-ting? Hvordan konfigurerer du det… til din computer og uploader følgende testkode (glem ikke at vælge det rigtige kort og port fra Værktøjer> Tavle og Værktøjer> Port menuer).

#include #include #include #include #include MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // oprette et MIDI-objekt kaldet midiOut void setup () Serial.begin (31250); // setup serial for MIDI void loop () midiOut.sendControlChange (56.127,1); // send en MIDI CC - 56 = note, 127 = hastighed, 1 = kanalforsinkelse (1000); // vent 1 sekund midiOut.sendProgramChange (12,1); // send en MIDI PC - 12 = værdi, 1 = kanalforsinkelse (1000); // vent 1 sekund

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

Hvis der ikke sker noget, skal du ikke få panik! Prøv fejlfinding:

  • Sørg for, at alle forbindelser er korrekte
  • Kontroller, at MIDI-porten er korrekt tilsluttet - der skal være 2 ekstra ben på yderkanterne
  • Dobbeltkontrol af kredsløbet er korrekt
  • Kontroller, at kredsløbet er tilsluttet en USB-MIDI-interface med et MIDI-kabel
  • Kontroller, at dit MIDI-kabel er tilsluttet til input på din USB-MIDI-interface
  • Sørg for, at Arduino har magt
  • Installer den korrekte driver til din USB-MIDI-interface

Hvis du er stadig hvis du har problemer, kan det være værd at kontrollere din brødbræt. Billige tavler kan undertiden være meget inkonsekvente og af lav kvalitet - det skete mig, mens jeg arbejdede på dette projekt.

Knapprøvning

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

const int-knapOne = 6; // tildel knapnål til variabel const int-knapTo = 7; // tildel knapnål til opsætning af variabelt tomrum () Serial.begin (9600); // opsætningsserie for tekst pinMode (buttonOne, INPUT); // setup-knap som input pinMode (buttonTwo, INPUT); // setup-knap som input void loop () if (digitalRead (buttonOne) == HØJ) // kontroller tastens forsinkelse (10); // software afbrydes, hvis (digitalRead (buttonOne) == HØJ) // kontroller knapstilstand igen Serial.println ("Button One Works!"); // logresultatforsinkelse (250);  if (digitalRead (knapTo) == HØJ) // Kontroller forsinkelse af knaptilstand (10); // software afbrydes hvis (digitalRead (buttonTwo) == HIGH) // kontroller knapstilstand igen Serial.println ("Knap to fungerer!"); // logresultatforsinkelse (250);  

Kør denne kode (men hold USB-kablet tilsluttet) og åbn Serial Monitor (Øverst til højre> Seriel skærm). Når du trykker på en knap, skal du se “Knap én fungerer!” eller “Knap To værker!” afhængigt af den knap, du har trykket på.

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

Oprettelse af controller

Nu hvor alt er tilsluttet og fungerer, er det tid til at samle den fulde controller.

Dette eksempel sender en anden CC-meddelelse for hver knap, der trykkes på. 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; // tildel knapnål til variabel const int-knapTo = 7; // tildel knapnål til variabel MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // oprette et MIDI-objekt kaldet midiOut void setup () pinMode (buttonOne, INPUT); // setup-knap som input pinMode (buttonTwo, INPUT); // setup-knap som input Serial.begin (31250); // setup MIDI output void loop () if (digitalRead (buttonOne) == HØJ) // kontroller tastens statusforsinkelse (10); // software afbryde hvis (digitalRead (buttonOne) == HØJ) // kontroller knapstilstand igen midiOut.sendControlChange (56,127,1); // send en MIDI CC - 56 = note, 127 = hastighed, 1 = kanalforsinkelse (250);  if (digitalRead (knapTo) == HØJ) // Kontroller forsinkelse af knaptilstand (10); // software afbrydes hvis (digitalRead (knapTo) == HØJ) // kontroller knaptilstand igen midiOut.sendControlChange (42,127,1); // send en MIDI CC - 42 = note, 127 = hastighed, 1 = kanalforsinkelse (250);  

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

midiOut.sendControlChange (42,127,1);

Med:

midiOut.sendProgramChange (værdi, kanal); 

I aktion

Nedenfor vises 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 ydelse. Uanset om du bruger en Mac , Windows eller Linux, er der taget højde for ethvert niveau af dygtighed og budget, hvis du vil starte DJing.). Øverst til højre viser lydmålerne, og den øverste midten viser de indgående 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 enorm fodstyret enhed eller en slank studiocontroller. Og hvis du er interesseret i at købe en, her er de bedste USB MIDI-controllere De 9 bedste USB MIDI-controllere til musikere De 9 bedste USB MIDI-controllere til musikere På udkig efter en USB MIDI-controller? Her er de bedste MIDI-controllere, du kan købe lige nu, uanset budget. du kan købe.

Billedkredit: Keith Gentry via Shutterstock.com




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.