Introduction: MIDI XY Pad With Arduino Leonardo
In this instructable I will explain the process of creating an XY pad MIDI controller using an Arduino Leonardo. You can use this MIDI controller to send MIDI information to a DAW, like FL Studio, Ableton Live, Reaper, etc. I've attached an stl file, so you can pan around the controller for more detailed information on placing. NOTE: In the diagram, the connections to the Analog In inputs isn't the same as in the following steps. Make sure to use the ones I describe in the steps, OR alter the code yourself to use the inputs you chose.
Supplies
1x 3mm black MDF panel, 60cm x 40cm
1x 4mm MDF panel, 20cm x 40cm
1x Arduino Leonardo
1x Micro-USB cable
2x Linear Slide Potentiometer
2x Rotational Potentiometer 10kΩ
2x Small Printboard
2x Blue LED
Wood Glue, Soldering Iron, Saw, File, Screwdriver
Step 1: Cutting the Panels
To get the paneling to fit perfectly, you'll have to laser cut it. I've attached the vector files here to use in the lasercutter. (You'll have to convert them to usable files yourself, I couldn't get .dxf files to upload.) It is important to get the scaling right. The 3mm panel is 50x35cm. I've added a surrounding rectangle with those dimensions to get the size correct in the lasercutting software. The 4mm panel is 16x20cm. The same kind of rectangle is used.
Attachments
Step 2: Assembling the Outer Panels
Assemble the outer paneling according to the provided image. Exclude the back panel for now, we'll use the space for organizing internal components later. Make sure to correctly mount the inner support for the rotational potentiometers. You'll want to mount those in this step as well.
Step 3: Assembling the Inner Sliding Mechanism
Assemble the inner sliding mechanism according to the images. Make sure to correctly orient the individual pieces. The supports on the bottom are made up of 2 4mm rectangles stacked on top of each other. (I only have 3 supports, due to an error in lasercutting.) We'll be inserting the lower slide potentiometer here as well, because for now it's easy. I cut off the top of the potentiometers stick, so it wouldn't hit the upper pot we'll be adding soon.
Step 4: Lower Components
Here, I'm arranging the lower set of components. I've added the LEDs and wired up the components I have. I'm using printboards to split my 5V and my GND connections over my components. Make sure to wire the potentiometers ALL in the same direction, or you'll get strange results in your DAW. These potentiometers will go into the A3 and A4 analog inputs on the Arduino Leonardo.
Step 5: Upper Components
Here, I've added the second slide potentiometer into the inner mechanism, and connected them with the 5V and GND boards. These slide pots will be routed into A0 and A2.
Step 6: Securing
Here, I'm glueing the inner sliding mechanism to the bottom panel. Make sure to align the outer ranges of the slide potentiometers with the cutout in the top panel. Not doing so will cause you to be unable to finish the project.
Step 7: Closing
Attach the back panel, and glue it in place. Make sure you've soldered all your components before you do so.
Step 8: Code
Upload the following code to the Arduino. You're done!
Attachments
Step 9: Reflectie
Ik wilde voor mijn project vanaf het begin al meteen een MIDI-controller maken. Ik ging kijken naar MIDI-controllers die al door andere mensen waren gemaakt, en ik zag dat een XY-pad, een redelijk veelvoorkomende controle-systeem, vrijwel nooit eerder was gedaan. Ik wilde mijn versie dan ook mechanisch namaken, want alleen een touch-screen leek me te makkelijk.
Ik maakte eerst een prototype van LEGO. Ik had mijn slide-pots eerst horizontaal aan de zijkanten van mijn rail-systeem geplaatst, maar dit systeem was te complex om überhaupt van LEGO te maken, dus van hout zou ik ook nergens gekomen zijn.
Ik ben toen overgegaan op een systeem dat beide slide-pots in het midden van het slide-systeem zet. Zo behoud ik zo veel mogelijk van de kracht die de gebruiker uitoefent op de knob in het horizontaal heen en weer verplaatsen van de slide-pots, in plaats van dat ze draaien. Ik ben in dit systeem wel veel ruimte gaan moeten maken in de verticaliteit, maar ik heb mijn uiterste best gedaan om het in toom te houden.
Ik merkte in mijn eigen tests dat 2 pots toch niet veel was als je iets muzikaals wilt doen, dus ik heb toen in mijn prototype een draaiende potentiometer toegevoegd, wat ik in het uiteindelijke project in 2 heb veranderd.
Ik zat een tijd vast op het omzetten van een LEGO prototype naar een versie waar zo min mogelijk LEGO in zat, maar toen iemand me vertelde dat het vooral gaat om iéts qua design neer te krijgen opende ik mijn software of choice, Blender, en begon ik met het uitwerken van de problemen die ik tegenkwam bij het designen van mijn prototype. Ik heb me tijdens dit proces gehouden aan de plaatdiktes die in de Makerspace beschikbaar zijn, zodat ik daarna alle panelen die ik had gemaakt makkelijk om kon zetten tot vectorbestanden, en kon lasersnijden.
Ik ben persoonlijk heel positief verrast met hoe goed het slider-systeem werkt. Ik heb met Ferdy gesproken over wat mijn best plan van aanpak was á la schuifsysteem, en daaruit maakte ik op dat een houten systeem veel te wensen over zou laten rondom gemak met schuiven. Dit was echter geen enkel probleem.
De dingen waar ik het meest tegenaan ben gelopen zijn:
- Té nauwe marges in mijn 3d design.
- De bovenste slide-pot kwam te hoog uit voor het paneel erboven, ik heb de opening moeten vergroten, en heb groeven gemaakt in het paneel waar de slider op ligt.
- De hoogte van het frame voor de onderste slide-pot ligt te laag. Ik had in mijn originele design niet meegerekend dat de lijm onder de Arduino zoveel hoogte zou toevoegen.
- Ik had veel minder ruimte voor printplaatjes dan ik dacht.
- Solderen
- Mijn soldeerbout thuis is al gauw twee keer zo oud als ik, en de kleine nooks en crannies waar ik in probeerde te solderen waren niet ideaal.
- Ik had geen reliable manier om soldeertin te verwijderen.
Al met al ben ik erg blij met het resultaat wat ik eruit heb gekregen. Dit project heeft me ook (zoals gehoopt) een heel leuk apparaat opgeleverd wat ik vanaf nu kan gebruiken in mijn muzikale escapades.