Inhoudsopgave:

Arduino Uno Midi Fighter - Ajarnpa
Arduino Uno Midi Fighter - Ajarnpa

Video: Arduino Uno Midi Fighter - Ajarnpa

Video: Arduino Uno Midi Fighter - Ajarnpa
Video: Arduino MIDI Fighter Build, Part 2 2024, Mei
Anonim
Arduino Uno Midi Fighter
Arduino Uno Midi Fighter

Deze instructable is gemaakt om te voldoen aan de projectvereiste van de Makecourse aan de University of South Florida (www.makecourse.com)

Gebaseerd op de populaire MidiFighter van DJ Techtools, kan deze zelfgemaakte Arduino-aangedreven Musical Instrument Digital Interface (MIDI)-controller worden gebruikt als een MIDI-apparaat in elke Digital Audio Workstation (DAW)-software. Een MIDI-controller kan MIDI-berichten verzenden en ontvangen van een computer en kan worden gebruikt om direct te controleren welke software wordt gebruikt. Bovendien zijn de bedieningselementen op een MIDI-controller volledig aanpasbaar - wat betekent dat elke afzonderlijke knop, schuifregelaar en knop kan worden toegewezen aan elke functie in een DAW. Als u bijvoorbeeld op een knop drukt, kunt u een specifieke noot spelen of worden geprogrammeerd om het tempo van uw audioproject te wijzigen.

github.com/jdtar/Arduino-Midi-Controller

Stap 1: Materialen

Hieronder vindt u een lijst met materialen en gereedschappen die in dit project zijn gebruikt.

Arduino Uno

Breadboard

4051/4067 Multiplexer

Doorverbindingsdraden

Extra draad

2x 10k ohm lineaire schuifpotentiometers

16x Sanwa 24mm knoppen

Krimpkous

Soldeerbout

Scheermesje

4,7 kΩ weerstand

Acrylplaat (voor deksel)

Behuizing voor knoppen en Arduino

3D-printer

Lasersnijder

Stap 2: Ontwerp

Ontwerp
Ontwerp
Ontwerp
Ontwerp

Ik kreeg al de behuizing voor mijn MIDI-controller voordat ik met het project begon, dus ik maakte een schets voor het deksel om te visualiseren waar alles moest worden geplaatst. Ik wist dat ik ten minste 16 knoppen en een paar potentiometers als functie wilde hebben, dus ik probeerde de componenten zo gelijkmatig mogelijk te verdelen.

Nadat ik de lay-out voor het deksel had opgesteld, exporteerde ik het bestand als een 1:1 PDF en stuurde het naar een lasersnijder om een acrylplaat te snijden. Voor schroefgaten markeerde ik waar ik de gaten wilde hebben met een marker en smolt het acryl met een hete gloeidraad.

Bijgevoegd is de 1:1 PDF die kan worden afgedrukt als een 1:1 en kan worden gesneden met elektrisch gereedschap als er geen lasersnijder beschikbaar is.

Stap 3: Constructie en bedrading

Constructie en bedrading
Constructie en bedrading
Constructie en bedrading
Constructie en bedrading
Constructie en bedrading
Constructie en bedrading

Na het snijden van het acryl, kwam ik erachter dat het acryl te dun was om alle componenten voldoende te ondersteunen. Ik knipte toen nog een vel uit en plakte ze aan elkaar, wat toevallig perfect werkte.

Het bedraden van de componenten kostte wat vallen en opstaan, maar resulteerde in de bijgevoegde Fritzing-schets. Ik heb eerst de aardingsdraden en de weerstand van 4,7 k aangesloten, de verbindingen op de knoppen gesoldeerd en met warmte gekrompen. Het monteren van de twee schuifpotentiometers vereiste smeltgaten voor de schroeven in het acryl. Nadat de twee potentiometers waren ingeschroefd, werden ze aangesloten op de analoge pinnen A0 en A1. Nadat de bedrading was voltooid, herinnerde ik me dat er geen knopdoppen voor mijn faders waren, dus in plaats van ze te kopen, drukte ik enkele knopdoppen af met een 3D-printer door ze te schetsen in Autodesk Fusion 360 en te exporteren naar een STL-bestand. de

De Arduino Uno heeft slechts 12 beschikbare digitale ingangspinnen, maar 16 knoppen moesten worden aangesloten. Om dit te compenseren, heb ik een 74HC4051 Multiplexer aangesloten op een breadboard die 4 digitale ingangspinnen gebruikt en meerdere signalen in staat stelt om een gedeelde lijn te gebruiken, wat resulteert in 8 beschikbare digitale ingangspinnen voor een totaal van 16 digitale pinnen die beschikbaar zijn voor gebruik.

Het aansluiten van de knoppen op de juiste pinnen was gewoon een kwestie van een 4x4-matrix maken en die in de code gebruiken. Het lastige was echter dat de specifieke multiplexer die werd gekocht een specifieke pinlay-out had waarmee de datasheet hielp en ik had ook een specifieke notitielay-out in gedachten bij het bedraden van de knoppen, die er uiteindelijk een beetje zo uitzag:

OPMERKING 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-INGANG)

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

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

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

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

Stap 4: Programmeren

Programmeren
Programmeren

Zodra de montage is voltooid, hoeft u alleen nog maar de Arduino te programmeren. Het bijgevoegde script is zo geschreven dat het gemakkelijk aanpasbaar is.

Het begin van het script bevat de MIDI.h-bibliotheek en een controllerbibliotheek die is geleend van de Notes- en Volts-blog, die beide zijn opgenomen in het zipbestand voor de code. Met behulp van de controllerbibliotheek kunnen objecten voor knoppen, potentiometers en gemultiplexte knoppen worden gemaakt die gegevenswaarden bevatten, waaronder het nootnummer, besturingswaarden, nootsnelheid, MIDI-kanaalnummer, enz. De MIDI.h-bibliotheek maakt MIDI I/O-communicatie op de Seriële Arduino-poorten die op hun beurt de gegevens van de controller-objecten nemen, ze omzetten in MIDI-berichten en de berichten verzenden naar welke midi-interface dan ook is aangesloten.

Het void setup-gedeelte van het script initialiseert alle kanalen als uit en initieert ook een seriële verbinding op 115200 baud, een snelheid die sneller is dan de MIDI-signalen die worden uitgewisseld.

De hoofdlus neemt in wezen de reeksen knoppen en gemultiplexte knoppen en voert een for-lus uit die controleert of de knop is ingedrukt of losgelaten en de bijbehorende databytes naar de midi-interface stuurt. De potentiometerlus controleert de positie van de potentiometer en stuurt de bijbehorende spanningsveranderingen terug naar de midi-interface.

Stap 5: Instellen

Image
Image
Opstelling
Opstelling
Opstelling
Opstelling
Opstelling
Opstelling

Nadat het script op de Arduino is geladen, is de volgende stap plug-and-play. Er zijn echter een paar stappen voordat het kan worden gebruikt.

In OSX heeft Apple een functie ingebouwd om virtuele midi-apparaten te maken die toegankelijk zijn via de toepassing Audio Midi Setup op macs. Zodra het nieuwe apparaat is gemaakt, kan Hairless MIDI worden gebruikt om een seriële verbinding te maken tussen de Arduino en het nieuwe virtuele midi-apparaat. De seriële verbinding van de Arduino via Hairless MIDI werkt met de baudrate die is gedefinieerd in het ongeldige setup-gedeelte van het script en moet equivalent worden ingesteld in de Hairless MIDI-voorkeursinstellingen.

Voor testdoeleinden gebruikte ik Midi Monitor om te controleren of de juiste gegevens werden verzonden via de seriële MIDI-verbinding. Toen ik eenmaal had vastgesteld dat alle knoppen de juiste gegevens via de juiste kanalen hadden verzonden, stelde ik het MIDI-signaal in om naar Ableton Live 9 te leiden als een MIDI-invoer. In Ableton was ik in staat om gesegmenteerde audiosamples toe te wijzen aan elke knop en elke sample af te spelen.

Aanbevolen: