Innehållsförteckning:

Arduino Uno Midi Fighter: 5 steg
Arduino Uno Midi Fighter: 5 steg

Video: Arduino Uno Midi Fighter: 5 steg

Video: Arduino Uno Midi Fighter: 5 steg
Video: I built an Arcade DIY MIDI controller with an Arduino Pro Micro: The Fliper 2024, November
Anonim
Arduino Uno Midi Fighter
Arduino Uno Midi Fighter

Denna instruerbara skapades för att uppfylla projektkravet för Makecourse vid University of South Florida (www.makecourse.com)

Baserad på den populära MidiFighter av DJ Techtools, kan denna hemgjorda Arduino -drivna Musical Instrument Digital Interface (MIDI) -kontroller användas som en MIDI -enhet i alla Digital Audio Workstation (DAW) -programvara. En MIDI -controller kan skicka och ta emot MIDI -meddelanden från en dator och kan användas för att direkt styra vilken programvara som används. Dessutom är kontrollerna på en MIDI -kontroller helt anpassningsbara - vilket innebär att varje enskild knapp, reglage och vred kan mappas till valfri funktion i en DAW. Om du till exempel trycker på en knapp kan du spela en specifik ton eller programmeras för att växla tempot för ditt ljudprojekt.

github.com/jdtar/Arduino-Midi-Controller

Steg 1: Material

Nedan finns en lista över material och verktyg som används i detta projekt.

Arduino Uno

Bakbord

4051/4067 Multiplexer

Bygelkablar

Extra tråd

2x 10k ohm linjära glidpotentiometrar

16x Sanwa 24mm knappar

Värmekrympning

Lödkolv

Rakblad

4,7 kΩ motstånd

Akrylark (för lock)

Hus för knappar och Arduino

3d skrivare

Laserskärare

Steg 2: Design

Design
Design
Design
Design

Jag fick redan huset för min MIDI -controller innan jag startade projektet, så jag hånade en skiss för locket för att visualisera var allt skulle placeras. Jag visste att jag ville ha minst 16 knappar och ett par potentiometrar som en funktion, så jag försökte dela ut komponenterna så jämnt som möjligt.

Efter att ha gjort layouten för locket exporterade jag filen som en 1: 1 PDF och skickade den till en laserskärare för att skära ett ark akryl. För skruvhål markerade jag var jag ville att hålen skulle vara med markör och smälte akrylen med en het glödtråd.

Bifogad 1: 1 PDF som kan skrivas ut som 1: 1 och klippas med elverktyg om en laserskärare inte är tillgänglig.

Steg 3: Konstruktion och ledningar

Konstruktion och ledningar
Konstruktion och ledningar
Konstruktion och ledningar
Konstruktion och ledningar
Konstruktion och ledningar
Konstruktion och ledningar

Efter att ha klippt akryl, fick jag reda på att akrylen var för tunn för att tillräckligt stödja alla komponenter. Jag klippte sedan ut ett annat ark och limmade ihop dem som råkade fungera perfekt.

Kabeldragning av komponenterna tog lite försök och fel men resulterade i att Fritzing -skissen bifogades. Jag kopplade först upp jordtrådarna och motståndet på 4,7 kΩ, lödde och värme krympte anslutningarna på knapparna. Montering av de två glidpotentiometrarna krävde smälthål för skruvarna i akryl. Efter att de två potentiometrarna skruvats fast kopplades de upp till de analoga stiften A0 och A1. Efter att kabeldragningen var klar kom jag ihåg att det inte fanns några rattlock för mina faders så istället för att köpa dem skrev jag ut några rattlock med en 3D-skrivare genom att skissa ut det i Autodesk Fusion 360 och exportera till en STL-fil. De

Arduino Uno har bara 12 tillgängliga digitala ingångsstiften men 16 knappar skulle kopplas upp. För att kompensera för detta kopplade jag upp en 74HC4051 Multiplexer på en brödbräda som använder 4 digitala ingångsstiften och gör det möjligt för flera signaler att använda en delad linje, vilket resulterar i 8 tillgängliga digitala ingångsstift för totalt 16 digitala stift tillgängliga för användning.

Att koppla upp knapparna till rätt stift handlade helt enkelt om att skapa en 4x4 -matris och använda den i koden. Den knepiga delen var dock att den specifika multiplexern som köptes hade en specifik pin -layout som databladet hjälpte till och jag hade också en specifik notlayout i åtanke när jag kopplade upp knapparna som slutade se ut ungefär så här:

OBS MATRIX

[C2] [C#2] [D2] [D#2]

[G#2] [A1] [A#2] [B1]

[E1] [F1] [F#1] [G1]

[C2] [C#2] [D2] [D#2]

PIN -matris (M = MUX -ingång)

[6] [7] [8] [9]

[10] [11] [12] [13]

[M0] [M1] [M2] [M3]

[M4] [M5] [M6] [M7]

Steg 4: Programmering

Programmering
Programmering

När monteringen är klar är det bara att programmera Arduino. Manuset som bifogas är skrivet på ett sådant sätt att det är lätt att anpassa.

Skriptets början inkluderar MIDI.h -biblioteket och ett controllerbibliotek lånat från Notes and Volts -bloggen som båda ingår i zip -filen för koden. Med hjälp av controllerbiblioteket kan objekt för knappar, potentiometrar och multiplexknappar skapas som innehåller datavärden som inkluderar notnummer, kontrollvärden, nothastighet, MIDI -kanalnummer etc. MIDI.h -biblioteket möjliggör MIDI I/O -kommunikation på Arduino seriella portar som i sin tur tar data från controllerobjekten, konverterar dem till MIDI -meddelanden och skickar meddelandena till vilket midi -gränssnitt som är anslutet.

Tomrumsinställningsdelen av skriptet initierar alla kanaler som avstängda och initierar också en seriell anslutning vid 115200 baud, en hastighet snabbare än MIDI -signalerna utbyts.

Huvudslingan tar i huvudsak matriserna med knappar och multiplexknappar och kör en for -loop som kontrollerar om knappen har tryckts in eller släppts och skickar ut motsvarande databyte till midi -gränssnittet. Potentiometerslingan kontrollerar positionen för potentiometern och skickar motsvarande spänningsändringar tillbaka till midi -gränssnittet.

Steg 5: Inställning

Image
Image
Uppstart
Uppstart
Uppstart
Uppstart
Uppstart
Uppstart

När manuset laddades in på Arduino är nästa steg att plugga och spela. Det finns dock ett par steg innan den kan användas.

På OSX införlivade Apple en funktion för att skapa virtuella midi -enheter som kan nås via programmet Audio Midi Setup på Mac. När den nya enheten har skapats kan Hairless MIDI användas för att skapa en seriell anslutning mellan Arduino och den nya virtuella midi -enheten. Den seriella anslutningen från Arduino via Hairless MIDI fungerar med den överföringshastighet som definieras i tomrumsinställningsdelen av manuset och måste ställas in likvärdig i inställningarna för Hairless MIDI.

För teständamål använde jag Midi Monitor för att kontrollera om rätt data skickades trodde den seriella MIDI-anslutningen. När jag väl hade bestämt att alla knappar skickade över rätt data via rätt kanaler ställde jag in MIDI -signalen för att dirigera till Ableton Live 9 som en MIDI -ingång. I Ableton kunde jag kartlägga skivade ljudprover till varje knapp och spela varje prov.

Rekommenderad: