Innehållsförteckning:

Bygga en Arduino MIDI -kontroller: 9 steg (med bilder)
Bygga en Arduino MIDI -kontroller: 9 steg (med bilder)

Video: Bygga en Arduino MIDI -kontroller: 9 steg (med bilder)

Video: Bygga en Arduino MIDI -kontroller: 9 steg (med bilder)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, November
Anonim

Denna instruerbara publicerades ursprungligen på min blogg den 28 juni 2020

Jag tycker om att bygga saker som innehåller elektronik, och jag har alltid velat bygga något med Arduino.

En av de vanligaste versionerna för nybörjare som jag hittade var en MIDI -controller. En MIDI -kontroller är all hårdvara som skickar MIDI -data (Musical Instrument Digital Interface) till en enhet för att utlösa ljud och göra musik.

Jag fann att många implementeringar är komplicerade, även de som är för nybörjare. Det var mycket frustrerande att upptäcka att jag behöver använda hundratals rader med oläslig kod. Eller att jag behöver lödda ett motstånd i vissa fall, bland andra exempel.

Projektet

Genom att bygga min egen Arduino MIDI Controller var min avsikt att göra ett roligt projekt och hålla bullret på det lägsta. Något alla nybörjare kan följa. För att uppnå det använde jag MIDI Fighter 3D som basinspiration och tog bort alla icke-väsentliga funktioner.

Den totala kostnaden för mitt projekt var under $ 30, och materiallistan var riktigt kort (affiliate -länkar):

  • Arduino Leonardo (eller klon): mellan $ 10 och $ 20.
  • 16 x Sanwa -knappar 24 mm (eller klon): mellan $ 1 och $ 2,50 per knapp.
  • Lödkolv
  • 22 AWG elektrisk ledning

Arduino Board

När jag startade det här projektet fann jag att det finns ett gäng nya Arduino -modeller (exklusive hundratals kompatibla kort). Och alla erbjuder lite olika funktioner.

Jag behövde skicka MIDI -signaler till en dator och det enklaste sättet att göra det är via USB. Alla Arduino-kort baserade på ATmega32u4 mikrokontroller har inbyggd USB-kommunikation.

De officiella Arduino -korten med inbyggt USB -stöd är Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Dessa kort har integrerat USB -stöd vilket innebär att de kan fungera som en USB MIDI -enhet.

Jag bestämde mig för att gå med en klon av Arduino Leonardo. Den har tillräckligt med ingångar för det här projektet och den innehåller också rubriker, vilket gör det enklare att koppla in/ur ledningarna.

Första stegen

Även om jag förklarar steg för steg hur jag implementerade koden för detta projekt, kan du ladda ner den slutliga versionen.

För att ladda upp kod till kortet måste du använda Arduino IDE. De har också en webbredigerare som är mycket användbar men de har en begränsad kvot på tider per dag som du kan kompilera kod.

Steg 1: Blinkar den inbyggda lysdioden

Det är roligt hur "Hello World" i hårdvaruvärlden blinkar med en LED.

Det var en trevlig överraskning för mig att upptäcka att Arduino Leonardo har en inbyggd LED som du kan blinka för att testa din kod. På så sätt behöver du inte bygga en extern krets på en brödbräda med en LED och ett motstånd.

Kod:

Steg 2: blinkar lysdioden vid manuell ingång

Nästa logiska steg var att blinka samma lysdiod när jag skickar en signal. Jag tog bort plastkåpan på ena änden av 2 Dupont -trådar och kopplade den andra änden till kortet:

  • Stift nummer 2: En av de digitala ingångarna (positiv). Det kan vara vilken digital pin som helst.
  • Stift GND: Varje marknål (negativ).

Nu, varje gång jag går med i de utsatta ändarna av ledningarna stänger jag kretsen och därmed kan jag köra kod i följd

Var och en av de 20 digitala stiften på Leonardo har ett internt motstånd (frånkopplat som standard) som kan aktiveras med INPUT_PULLUP. Tänk på att en pull-up-ingång betyder att knapptillståndet är inverterat:

  • HÖG när kretsen är öppen (knappen är INTE nedtryckt).
  • LÅG när kretsen är stängd (knappen trycks in).

Kod:

Steg 3: Installera MIDIUSB -biblioteket

Detta bibliotek tillåter ett Arduino -kort med USB -funktioner att fungera som ett MIDI -instrument över USB. Se den officiella dokumentationen för mer information.

Med Arduino IDE kan du installera extra Arduino -bibliotek med Library Manager:

  1. Öppna IDE och klicka på "Sketch" -menyn, sedan "Inkludera bibliotek" och sedan "Hantera bibliotek".
  2. Sök efter MIDIUSB och klicka på Installera.
  3. När den är klar ska en installerad tagg visas bredvid MIDIUSB -biblioteket.
  4. Stäng bibliotekshanteraren.

Nu kan Leonardo skicka MIDI -meddelanden via USB! Men först behövs lite insikt om hur MIDI fungerar.

Hur MIDI fungerar

"MIDI (Musical Instrument Digital Interface) är ett standardkommunikationsprotokoll som ansluter elektroniska musikinstrument, datorer och relaterade ljudenheter för att spela musik." - Wikipedia

Det hanterar händelsemeddelanden med data om tonhöjden och hastigheten för den spelade noten, bland annat instruktioner

I detta specifika projekt skickar ingången från de 16 knapparna olika meddelanden via USB. Dessa meddelanden kan konverteras till ljud på en dator med hjälp av lämplig programvara som GarageBand eller Ableton Live.

Anatomi av ett MIDI -meddelande

För att skicka ett MIDI -meddelande använde jag metoden sendMIDI () från MIDIUSB -biblioteket som jag installerade i steg 3.

Denna metod kan ta emot fyra parametrar:

  • Händelsestyp: Det kan vara 0x09 för note On (play note) eller 0x08 för note Off (sluta spela note).
  • Obs På/Av: Händelsestypen kombinerad med MIDI-kanalen (1-16). Jag använder bara kanal 1 så det är antingen 0x90 för anteckning på eller 0x80 för not av.
  • Notnummer: Varje ton har en tillhörande numerisk tonhöjd (frekvensskala).
  • Hastighet: Från 0 (ingen hastighet) till 127 (snabbast).

Steg 4: Skicka ett MIDI -meddelande

Jag inkluderade MIDIUSB-biblioteket och istället för att blinka den inbyggda lysdioden skickade jag en anteckning.

Kod:

⚠ Viktigt: Från detta steg och framåt förvandlas Arduino till en MIDI USB -kontroller, och den slutar ta emot kod via USB.

När du fastnar i en position där Arduino inte längre kan programmeras, följ dessa steg:

  1. Håll ned den rundade återställningsknappen på Arduino -kortet.
  2. Klicka på Ladda upp på Arduino IDE.
  3. Släpp återställningsknappen.
  4. Den uppdaterade koden laddas upp till tavlan.

Steg 5: Skicka ett MIDI -meddelande från varje knapp

Skickar ett MIDI -meddelande från varje knapp
Skickar ett MIDI -meddelande från varje knapp

Det sista steget var att mappa varje tonhöjd till en knapp. För de 16 knapparna definierade jag en skala från C2 till E3b, som är tonhöjden från 36 till 51 i en sekvens från botten till toppen och från vänster till höger. Kolla in den här filen från Arduino Tutorials för att se vilken tonhöjd som motsvarar varje anteckning.

Jag använde digitala stift från 2 till 12 och analoga stift (använder dem som digitaler) från A0 till A4.

Och så här ser den slutliga koden ut

Steg 6: Konfigurera kanaler eller banker (valfritt)

Konfigurera kanaler eller banker (valfritt)
Konfigurera kanaler eller banker (valfritt)

Om du vill lägga till fler knappar med möjlighet att byta kanal eller bank, som i MIDI Fighter 3D (se bild), har Arduino Leonardo ytterligare fyra stift som du kan använda. Arduino Leonardo har 20 digitala in-/utgångspinnar, varav endast 16 används för att spela noter.

Du kan använda de extra knapparna för att uppdatera en variabel i koden och skicka dess värde som en parameter till metoden MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Steg 7: Fallet

Fallet
Fallet
Fallet
Fallet

För att hålla det här projektet enkelt var jag extremt noga med att välja vilka funktioner som inkluderar.

  • Endast knappar: 16 Sanwa-liknande arkadknappar, i ett 4x4-rutnät. Inga rattar, inga reglage, inga faders eller någon annan analog ingång.
  • Unibody -fodral: Använd inga skruvar, muttrar, bultar eller lim för höljet eller för att hålla i Arduino -kortet.
  • Vardagsverktyg: Till exempel lödde jag trådarna istället för att köpa en specifik trådklippare för arkadknapparna.

Unibody Design

En av utmaningarna jag mötte var att designa ett fodral så enkelt att det inte behöver monteras och kan skrivas ut i 3D i en enda körning.

För att undvika att använda skruvar eller lim behövde jag designa ett hölje som ger minsta åtkomst till elektroniken. Min största inspiration för höljet var Mac Mini, som har ett cirkelformat hål i botten. Jag ville också designa ett skruvbart lock för det, men jag bestämde mig för att låta det öppna för att avslöja elektroniken.

Ladda ner det 3D -skrivbara fodralet (322 KB). Rekommenderade inställningar: PLA, 0,15 mm lager, 20% fyllning, stödhanterare åtminstone för det rundade bottenhålet, Arduino -hållarna och mikro -USB.

Håller en Arduino utan skruvar

Leonardo har 4 hål för att skruva in brädan i valfritt passande fodral, men min idé var att göra det enkelt att lägga till och ta bort brädet från fodralet.

Att hitta en klipphållare för Arduino på Thingiverse var enkelt, och det tog mig 5 iterationer att integrera den hållaren i unibody desing. Den svåraste delen var att göra benen för att undvika hålen för knapparna och att få mikro -USB -enheten att vara centrerad i linje med fodralet.

Steg 8: Monteringen

Församlingen
Församlingen
Församlingen
Församlingen
Församlingen
Församlingen

Efter att ha satt in alla knappar på plats, lodde jag korta svarta trådar som förenade alla negativa ben på knapparna mellan dem.

Sedan lödde jag långa röda trådar från varje positivt ben för att ansluta direkt till brädet.

För att ansluta ledningarna till Arduino klippte jag och lodde några Dupont-ändar och täckte dem med värmekrympslang.

Jag kopplade ledningarna till kortet enligt samma ordning som i MIDI Fighter. Nedifrån och uppifrån och från vänster till höger

Steg 9: Använda MIDI -kontrollen

Använda MIDI Controller
Använda MIDI Controller

Vilken musikprogramvara som helst (eller lämplig hårdvara) kan användas för att ta emot MIDI och göra lite musik. De mest rekommenderade är Garage Band, Ableton Live, och jag vet att det finns ett gäng appar att installera på en telefon.

Alla dessa verktyg är användbara för att ladda fördefinierade ljud för fingertrummning, men de gjordes för större ändamål. Dessa verktyg kan vara svåra för nybörjare att installera.

MIDI i webbläsaren

För att göra något mer anpassat till detta projekt och dess enkelhet, byggde jag ett webbverktyg helt fokuserat på MIDI -styrenheter.

Punchy: WebMIDI- och WebAudio -implementering för MIDI -kontroller.

Den kan läsa MIDI -meddelanden i alla webbläsare som stöder WebMIDI JavaScript API. Sedan spelar det ljud i en synthesizer (med hjälp av WebAudio API) eller i en sampler och laddar anpassade ljud från valfritt ljudpaket.

Ställ in Ableton Live

För att få MIDI Controller att fungera med Ableton Live, följ dessa enkla steg från deras officiella dokumentation.

Gå till Inställningar → Länka MIDI och se till att "Ingång" har "Spår" och "Fjärrkontroll" PÅ och att utgången har "Fjärrkontroll" PÅ så som nämns i guiden:

Rekommenderad: