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 2016Tingenes Internet rykker op i 2016, men hvad betyder det nøjagtigt? Hvordan drager du personlig fordel af tingenes internet? Her er et par nyttige produkter at illustrere. Læs mere projekter, en enkel Arduino Uno (hvad er de forskellige typer Arduino? Arduino Købsvejledning: Hvilket bord skal du få?Der er så mange forskellige slags Arduino-tavler derude, du vil blive tilgitt for at blive forvirret. Hvilket skal du købe til dit projekt? Lad os hjælpe med denne Arduino-købsguide! 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 begyndervejledning Kom godt i gang med Arduino: En begynderguideArduino er en open source-elektronikprototypeplatform baseret på fleksibel, letanvendelig hardware og software. Det er beregnet til kunstnere, designere, hobbyister og enhver, der er interesseret i at skabe interaktive objekter eller miljøer.

instagram viewer
Læs mere at læse igennem, inden du tackle dette projekt.

Arduino-Midi-Controller-Breadboard

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 simpelt sæt instruktioner (en instruktion kaldes en "meddelelse"), 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 “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 et USB-MIDI-interface kan bruges.

MIDI-kabel-Mand

Kontroller ændring og programændring

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

Control Change (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 opsættes som standard, og hvordan man ændrer dem (kendt som MIDI-kortlægning).

Programskift (PC) -meddelelser er enklere end CC-meddelelser. PC-meddelelser består af et enkelt nummer og bruges til at ændre forudindstillingen eller programrettelsen 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 kontrol af programmet, en MIDI-port til at sende dataene og en enhed til at modtage meddelelserne. Dette kredsløb er bygget på en breadboard Begynderelektronik: 10 færdigheder, du har brug for at videMange 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. Læs mere her er det dog muligt at overføre det til en projektboks og loddede stik til en robust løsning.

Kredsløb

Arduino-Midi-Controller-Circuit

MIDI-forbindelse

MIDI-Pinout

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 den modstand, Arduino ”ser”. Arduino-stiften går gennem kontakten lige til jorden (LAV) via en 10k ohm-modstand (en “pull down” -modstand, der 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 digital læse (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 den 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 skærm til OS X
  • MIDI-OX Til Windows
  • KMidimon til Linux

Forbind Arduino Kom godt i gang med dit Arduino Starter Kit - Installation af drivere og opsætning af bord og havnSå du har købt dig et Arduino-startpakke og muligvis nogle andre tilfældige, coole komponenter - hvad nu? Hvordan kommer du faktisk i gang med programmeringen af ​​denne Arduino-ting? Hvordan konfigurerer du det ... Læs mere til din computer og upload følgende testkode (glem ikke at vælge det rigtige kort og port fra Værktøjer> Tavle og Værktøjer> Port menuer).

#omfatte 
#omfatte 
#omfatte 
#omfatte 
#omfatte  MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // oprette et MIDI-objekt kaldet midiOut void setup () {Serial.begin (31250); // opsætningsserie til 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 tilsluttet korrekt - der skal være 2 reserveben 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 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 plader 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 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 knapestiften til variablen. 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); // opsætningsknap 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 ("Knap én fungerer!"); // 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 fungerer!" afhængigt af den knap, du har trykket på.

Der er en vigtig bemærkning 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.

#omfatte 
#omfatte 
#omfatte 
#omfatte 
#omfatte const int-knapOne = 6; // Tildel knapestiften til variablen. 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); // opsætning af MIDI-output. } void loop () {if (digitalRead (buttonOne) == HØJ) {// kontroller tastens forsinkelse (10); // software afbryde, hvis (digitalRead (buttonOne) == HIGH) {// 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 afbryde hvis (digitalRead (knapTo) == HØJ) {// kontroller knapstilstand 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-meddelelse i stedet for en CC, skal du blot udskifte:

midiOut.sendControlChange (42.127,1);

Med:

midiOut.sendProgramChange (værdi, kanal); 

I aktion

Nedenfor er en demonstration som en controller for Ableton Live (Bedste DJ-software til ethvert budget Den bedste DJ-software til ethvert budgetGod 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. Læs mere ). Øverst til højre viser lydmålerne, og den øverste midten viser de indgående midi-meddelelser (via MIDI skærm 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 musikerePå udkig efter en USB MIDI-controller? Her er de bedste MIDI-controllere, du kan købe lige nu, uanset budget. Læs mere du kan købe.

Billedkredit: Keith Gentry via Shutterstock.com

Joe er uddannet inden for datalogi fra University of Lincoln, UK. Han er en professionel softwareudvikler, og når han ikke flyver droner eller skriver musik, kan han ofte findes, når han tager billeder eller producerer videoer.