Innholdsfortegnelse:

Arduino Uno Midi Fighter: 5 trinn
Arduino Uno Midi Fighter: 5 trinn

Video: Arduino Uno Midi Fighter: 5 trinn

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

Denne instruksen ble opprettet for å oppfylle prosjektkravet til Makecourse ved University of South Florida (www.makecourse.com)

Basert på den populære MidiFighter av DJ Techtools, kan denne hjemmelagde Arduino -drevne Musical Instrument Digital Interface (MIDI) -kontrolleren brukes som en MIDI -enhet på tvers av alle digitale lydarbeidsstasjoner (DAW). En MIDI -kontroller kan sende og motta MIDI -meldinger fra en datamaskin og kan brukes til direkte kontroll av hvilken programvare som brukes. I tillegg er kontrollene på en MIDI -kontroller fullt tilpassbare - noe som betyr at hver enkelt knapp, glidebryter og knott kan tilordnes hvilken som helst funksjon i en DAW. For eksempel kan du trykke på en knapp for å spille en bestemt tone eller bli programmert til å veksle tempoet i lydprosjektet.

github.com/jdtar/Arduino-Midi-Controller

Trinn 1: Materialer

Nedenfor er en liste over materialer og verktøy som brukes i dette prosjektet.

Arduino Uno

Brødbrett

4051/4067 Multiplexer

Jumper ledninger

Ekstra ledning

2x 10k ohm lineære lysbildepotensiometre

16x Sanwa 24mm knapper

Varmekrymping

Loddejern

Barberblad

4,7 kΩ motstand

Akrylark (for lokk)

Hus for knapper og Arduino

3D-skriver

Laserskærer

Trinn 2: Design

Design
Design
Design
Design

Jeg fikk allerede huset til MIDI -kontrolleren min før jeg startet prosjektet, så jeg hånet på en skisse for lokket for å visualisere hvor alt skulle plasseres. Jeg visste at jeg ønsket minst 16 knapper og et par potensiometre som en funksjon, så jeg forsøkte å dele ut komponentene så jevnt som mulig.

Etter å ha laget layouten for lokket, eksporterte jeg filen som en 1: 1 PDF og sendte den til en laserskjærer for å kutte et ark akryl. For skruehull merket jeg hvor jeg ville at hullene skulle være med markør og smeltet akrylen med en varm filament.

Vedlagt er 1: 1 PDF -filen som kan skrives ut som 1: 1 og kuttes med elektroverktøy hvis en laserskjærer ikke er tilgjengelig.

Trinn 3: Konstruksjon og ledninger

Konstruksjon og ledninger
Konstruksjon og ledninger
Konstruksjon og ledninger
Konstruksjon og ledninger
Konstruksjon og ledninger
Konstruksjon og ledninger

Etter å ha kuttet akryl, fant jeg ut at akrylen var for tynn til å støtte alle komponentene tilstrekkelig. Jeg klippet deretter ut et annet ark og limte dem sammen som tilfeldigvis fungerte perfekt.

Kabling av komponentene tok litt prøving og feiling, men resulterte i Fritzing -skissen vedlagt. Jeg koblet først jordledningene og motstanden på 4,7 kΩ, loddet og varme krympet tilkoblingene på knappene. Montering av de to glidepotensiometrene krevde smeltehull for skruene i akryl. Etter at de to potensiometrene ble skrudd inn, ble de koblet til de analoge pinnene A0 og A1. Etter at ledningene var fullført, husket jeg at det ikke var noen knotthetter for faderne mine, så i stedet for å kjøpe dem, skrev jeg ut noen knapper med en 3D-skriver ved å skissere den i Autodesk Fusion 360 og eksportere til en STL-fil. De

Arduino Uno har bare 12 tilgjengelige digitale inngangspinner, men 16 knapper skulle kobles til. For å kompensere for dette, koblet jeg opp en 74HC4051 Multiplexer på et brødbrett som bruker 4 digitale inngangspinner og gjør det mulig for flere signaler å bruke en delt linje, noe som resulterer i 8 tilgjengelige digitale inngangspinner for totalt 16 digitale pinner tilgjengelig for bruk.

Å koble knappene til de riktige pinnene var ganske enkelt et spørsmål om å lage en 4x4 -matrise og bruke den i koden. Den vanskelige delen var imidlertid at den spesifikke multiplexeren som ble kjøpt, hadde en bestemt pin -layout som databladet hjalp med, og jeg hadde også et bestemt notatoppsett i tankene når jeg koblet til knappene, som endte med å se litt slik ut:

MERK 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 INNGANG)

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

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

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

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

Trinn 4: Programmering

Programmering
Programmering

Når monteringen er fullført, er det bare å programmere Arduino. Skriptet som er vedlagt er skrevet på en slik måte at det er lett å tilpasse.

Begynnelsen på skriptet inkluderer MIDI.h -biblioteket og et kontrollerbibliotek lånt fra Notes and Volts -bloggen, som begge er inkludert i zip -filen for koden. Ved hjelp av kontrollerbiblioteket kan objekter for knapper, potensiometre og multipleksede knapper opprettes som inneholder dataverdier som inkluderer notenummer, kontrollverdier, notathastighet, MIDI -kanalnummer, etc. MIDI.h -biblioteket muliggjør MIDI I/O -kommunikasjon på Arduino serielle porter som igjen tar dataene fra kontrollerobjektene, konverterer dem til MIDI -meldinger og sender meldingene til det midi -grensesnittet som er koblet til.

Hulloppsettsdelen av skriptet initialiserer alle kanaler som av og starter også en seriell tilkobling på 115200 baud, en hastighet som er raskere enn MIDI -signalene blir utvekslet.

Hovedløyfen tar i hovedsak matriser med knapper og multipleksede knapper og kjører en for -sløyfe som sjekker om knappen er trykket eller sluppet og sender ut de tilsvarende databyte til midi -grensesnittet. Potensiometerløkken sjekker posisjonen til potensiometeret og sender de tilsvarende spenningsendringene tilbake til midi -grensesnittet.

Trinn 5: Oppsett

Image
Image
Oppsett
Oppsett
Oppsett
Oppsett
Oppsett
Oppsett

Når skriptet var lastet inn på Arduino, er neste trinn å plugge og spille. Det er imidlertid et par trinn før den kan brukes.

På OSX innlemmet Apple en funksjon for å lage virtuelle midi -enheter som du kan få tilgang til via programmet Audio Midi Setup på Mac. Når den nye enheten er opprettet, kan Hairless MIDI brukes til å opprette en seriell forbindelse mellom Arduino og den nye virtuelle midi -enheten. Den serielle tilkoblingen fra Arduino gjennom Hairless MIDI opererer med overføringshastigheten som er definert i oppsettdelens tomrom -oppsett -del av skriptet og må settes tilsvarende i Hairless MIDI -preferansens innstillinger.

For testformål brukte jeg Midi Monitor for å sjekke om de riktige dataene ble sendt trodde den serielle MIDI-tilkoblingen. Når jeg bestemte meg for at hver knapp sendte de riktige dataene gjennom de riktige kanalene, satte jeg opp MIDI -signalet for å rute til Ableton Live 9 som en MIDI -inngang. I Ableton kunne jeg kartlegge skivede lydprøver til hver knapp og spille hver prøve.

Anbefalt: