Indholdsfortegnelse:

Arduino Uno Midi Fighter: 5 trin
Arduino Uno Midi Fighter: 5 trin

Video: Arduino Uno Midi Fighter: 5 trin

Video: Arduino Uno Midi Fighter: 5 trin
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

Denne instruerbare blev oprettet for at opfylde projektkravet fra Makecourse ved University of South Florida (www.makecourse.com)

Baseret på den populære MidiFighter af DJ Techtools kan denne hjemmelavede Arduino -drevne Musical Instrument Digital Interface (MIDI) controller bruges som en MIDI -enhed på tværs af enhver Digital Audio Workstation (DAW) software. En MIDI -controller kan sende og modtage MIDI -meddelelser fra en computer og kan bruges til direkte at styre, hvilken software der bruges. Derudover kan kontrollerne på en MIDI -controller fuldt ud tilpasses - hvilket betyder, at hver enkelt knap, skyder og knap kan knyttes til enhver funktion i en DAW. For eksempel kan et tryk på en knap afspille en bestemt note eller programmeres til at skifte tempoet i dit lydprojekt.

github.com/jdtar/Arduino-Midi-Controller

Trin 1: Materialer

Nedenfor er en liste over materialer og værktøjer, der bruges i dette projekt.

Arduino Uno

Brødbræt

4051/4067 Multiplexer

Jumper ledninger

Ekstra ledning

2x 10k ohm lineære objektglaspotentiometre

16x Sanwa 24mm knapper

Varme krympe

Loddekolbe

Barberblad

4,7 kΩ modstand

Akrylark (til låg)

Hus til knapper og Arduino

3D-printer

Laserskærer

Trin 2: Design

Design
Design
Design
Design

Jeg fik allerede huset til min MIDI -controller, før jeg startede projektet, så jeg lagde en skitse til låget for at visualisere, hvor alt skulle placeres. Jeg vidste, at jeg ville have mindst 16 knapper og et par potentiometre som en funktion, så jeg forsøgte at placere komponenterne så jævnt som muligt.

Efter at have udarbejdet layoutet til låget eksporterede jeg filen som en 1: 1 PDF og sendte den til en laserskærer for at skære et ark akryl. Ved skruehuller markerede jeg, hvor jeg ville have, at hullerne skulle være med markør og smeltede akrylen med en varm filament.

Vedhæftet er 1: 1 PDF -filen, der kan udskrives som en 1: 1 og skæres med elværktøj, hvis der ikke er en laserskærer.

Trin 3: Konstruktion og ledninger

Konstruktion og ledninger
Konstruktion og ledninger
Konstruktion og ledninger
Konstruktion og ledninger
Konstruktion og ledninger
Konstruktion og ledninger

Efter at have skåret i akrylen, fandt jeg ud af, at akrylen var for tynd til tilstrækkeligt at understøtte alle komponenterne. Jeg skar derefter et andet ark ud og limede dem sammen, som tilfældigvis fungerede perfekt.

Tilslutning af komponenterne tog en del forsøg og fejl, men resulterede i vedhæftede Fritzing -skitse. Jeg ledte først jordledningerne og 4,7 kΩ modstanden, loddet og varme krympet forbindelserne på knapperne. Montering af de to glidepotentiometre krævede smeltehuller til skruerne i akrylen. Efter at de to potentiometre var skruet i, blev de forbundet til A0 og A1 analoge ben. Efter at ledningerne var færdige, huskede jeg, at der ikke var knapper til mine fadere, så i stedet for at købe dem, printede jeg nogle knopdæksler ved hjælp af en 3D-printer ved at skitsere det i Autodesk Fusion 360 og eksportere til en STL-fil. De

Arduino Uno har kun 12 tilgængelige digitale indgangsstifter, men 16 knapper skulle forbindes. For at kompensere for dette tilsluttede jeg en 74HC4051 Multiplexer på et brødbræt, der bruger 4 digitale indgangsstifter og gør det muligt for flere signaler at bruge en delt linje, hvilket resulterer i 8 tilgængelige digitale indgangsstifter til i alt 16 digitale ben til rådighed til brug.

Tilslutning af knapperne til de korrekte ben var simpelthen et spørgsmål om at oprette en 4x4 -matrix og bruge den i koden. Den vanskelige del var imidlertid, at den specifikke multiplexer, der blev købt, havde et specifikt pinlayout, som databladet hjalp med, og jeg havde også et specifikt notelayout i tankerne, når jeg tilsluttede knapperne, hvilket endte med at se lidt sådan ud:

BEMÆRK 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 MATRIX (M = MUX INPUT)

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

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

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

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

Trin 4: Programmering

Programmering
Programmering

Når samlingen er fuldført, er det alt, hvad der er tilbage, programmering af Arduino. Det vedhæftede script er skrevet på en sådan måde, at det let kan tilpasses.

Begyndelsen af scriptet inkluderer MIDI.h -biblioteket og et controller -bibliotek lånt fra Notes and Volts -bloggen, som begge er inkluderet i zip -filen til koden. Ved hjælp af controllerbiblioteket kan der oprettes objekter til knapper, potentiometre og multipleksede knapper, der indeholder dataværdier, der inkluderer notenummer, kontrolværdier, notehastighed, MIDI -kanalnummer osv. MIDI.h -biblioteket muliggør MIDI I/O -kommunikation på Arduino serielle porte, som igen tager dataene fra controllerobjekterne, konverterer dem til MIDI -meddelelser og sender meddelelserne til det midi -interface, der er forbundet.

Tomrumsopsætningsdelen af scriptet initialiserer alle kanaler som slukket og starter også en seriel forbindelse med 115200 baud, en hastighed hurtigere end MIDI -signalerne udveksles.

Hovedløkken tager i det væsentlige arrays af knapper og multipleksede knapper og kører en for loop, der kontrollerer, om knappen er blevet trykket eller frigivet og sender de tilsvarende databyte ud til midi -grænsefladen. Potentiometerløkken kontrollerer positionen af potentiometeret og sender de tilsvarende spændingsændringer tilbage til midi -interfacet.

Trin 5: Opsætning

Image
Image
Opsætning
Opsætning
Opsætning
Opsætning
Opsætning
Opsætning

Når scriptet var indlæst på Arduino, er det næste trin at tilslutte og afspille. Der er dog et par trin, før det kan bruges.

På OSX har Apple indarbejdet en funktion til at oprette virtuelle midi -enheder, som kan tilgås via programmet Audio Midi Setup på Mac'er. Når den nye enhed er blevet oprettet, kan Hairless MIDI bruges til at oprette en seriel forbindelse mellem Arduino og den nye virtuelle midi -enhed. Den serielle forbindelse fra Arduino gennem Hairless MIDI fungerer med den baudhastighed, der er defineret i den ugyldige opsætningsdel af scriptet og skal angives ækvivalent i Hairless MIDI -præferencer.

Til testformål brugte jeg Midi Monitor til at kontrollere, om de korrekte data blev sendt, troede den serielle MIDI-forbindelse. Når jeg havde fastslået, at alle knapper sendte de korrekte data via de korrekte kanaler, konfigurerede jeg MIDI -signalet til at rute til Ableton Live 9 som et MIDI -input. I Ableton kunne jeg kortlægge udskårne lydprøver til hver knap og afspille hver prøve.

Anbefalede: