Sådan laver du en MIDI -controller med en Arduino

Sådan laver du en MIDI -controller med en Arduino

Som musiker, der har samlet en samling musikinstrumenter og støjbokse, er den ydmyge Arduino det perfekte værktøj til at oprette en brugerdefineret MIDI -controller. Selvom Raspberry Pi muligvis har taget kronen for Internet of Things (IoT) -projekter, har en simpel Arduino Uno (hvad er de forskellige typer Arduino?) Mere end nok strøm til dette projekt.





Første gang du bruger en Arduino? Ingen bekymringer, vi har en komplet Arduino begynderguide at læse igennem, før du tager fat på dette projekt.





Hvad er MIDI?

MIDI står for Musical Instrument Digital Interface. Det skitserer en standardmåde for musikalske enheder til at kommunikere med hinanden. Hvis du ejer et elektronisk tastatur har du sandsynligvis et MIDI -interface. Selvom 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 simpelt sæt instruktioner (en instruktion kaldes en 'besked'), som en anden enhed kan implementere for at lave forskellige lyde eller styre parametre.





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

MIDI-kabel-han



Kontroller ændring og programændring

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

Control Change (CC) -meddelelser indeholder et controller -nummer og en værdi mellem 0 og 127. CC -meddelelser bruges ofte til at ændre indstillinger som f.eks. Lydstyrke eller tonehøjde. Enheder, der accepterer MIDI, bør komme med en manual, der forklarer, hvilke kanaler og meddelelser der er konfigureret som standard, og hvordan de ændres (kendt som MIDI -kortlægning).





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

Hvad du får brug for

  • Arduino
  • 5-polet DIN hunstik
  • 2 x 220 ohm modstande
  • 2 x 10k ohm modstande
  • 2 x kortvarige kontakter
  • Tilslutningskabler
  • Brødbræt
  • MIDI kabel
  • MIDI -enhed eller USB -interface
Vand og træ 5 stk DIN 5 -pins PCB -monteringskontakter til PC -tastatur KØB NU PÅ AMAZON

Byg plan

Dette projekt vil være ganske enkelt. Du kan naturligvis 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 til at sende dataene og en enhed til at modtage beskederne. Dette kredsløb er blevet bygget på et brødbræt her, men det er muligt at overføre det til en projektboks og lodde stik for en robust løsning.





Kredsløbssamling

Arduino-Midi-Controller-kredsløb

MIDI -forbindelse

MIDI-Pinout

Tilslut din MIDI -stikdåse 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 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, der ses af kredsløbet, til +5v uden modstand ( HØJ ). Arduino kan registrere denne ændring ved hjælp af digitalRead (pin) kommando. Tilslut knapperne til ben 6 og 7 på Arduino digital input/output (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 pin (6 eller 7)

MIDI -test

Nu hvor al hardware er færdig, er det tid til at teste det. Du skal bruge et USB-MIDI-interface (mange lydgrænseflader kan gøre dette) og et MIDI-kabel. MIDI -porten, der er forbundet til brødbrættet, sender data, så det er output. Din computer modtager dataene, derfor er det input. Dette projekt bruger den fremragende Arduino MIDI -bibliotek v4.2 af førti syv effekter. Når du har installeret biblioteket, kan du inkludere det i din kode ved at gå til Skitse> Inkluder bibliotek> MIDI .

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

Tilslut Arduino til din computer, og upload følgende testkode (glem ikke at vælge det korrekte kort og port fra Værktøjer> Board og Værktøjer> Port menuer).

#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, venter 1 sekund, sender en pc -besked og venter derefter 1 sekund på ubestemt tid. Hvis alt fungerer korrekt, skal du se en meddelelse på din MIDI -skærm.

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

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

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

Knap test

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 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 behold USB -kablet tilsluttet), og åbn Serial Monitor ( Øverst til højre> Seriel skærm ). Når du trykker på en knap, skal du se 'Button One Works!' eller 'Knap to virker!' afhængigt af den knap, du har trykket på.

Der er en vigtig bemærkning at tage væk fra dette eksempel-softwaren de-bounce. Dette er en simpel forsinkelse på 10 millisekunder (ms) mellem kontrol af knappen og derefter kontrol af 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 controlleren

Nu hvor alt er kablet 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 styre Ableton Live 9.6 på OS X. Koden ligner 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 vil ikke kunne bruge Serial.println () med MIDI -udgang.

Hvis du ville 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 en demonstration som controller for Ableton Live ( Bedste DJ -software til ethvert budget ). Øverst til højre viser lydmålere, og øverste midten viser de indgående midi -meddelelser (via MIDI -skærm på OS X).

hvordan man sætter pins på google maps

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 lækker studiekontroller. Og hvis du er interesseret i at købe en, er her de bedste USB MIDI -controllere, du kan købe.

Billedkredit: Keith Gentry via Shutterstock.com

Vi håber, at du kan lide de ting, vi anbefaler og diskuterer! MUO har tilknyttede og sponsorerede partnerskaber, så vi modtager en andel af omsætningen fra nogle af dine køb. Dette påvirker ikke den pris, du betaler, og hjælper os med at tilbyde de bedste produktanbefalinger.

Del Del Tweet E -mail Er det værd at opgradere til Windows 11?

Windows er blevet redesignet. Men er det nok til at overbevise dig om at skifte fra Windows 10 til Windows 11?

Læs Næste
Relaterede emner
  • gør det selv
  • DJ -software
  • Arduino
  • Elektronik
  • MIDDAG
Om forfatteren Joe Coburn(136 artikler udgivet)

Joe er uddannet i datalogi fra University of Lincoln, UK. Han er en professionel softwareudvikler, og når han ikke flyver med droner eller skriver musik, kan han ofte findes tage fotos eller producere videoer.

Mere fra Joe Coburn

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere