MIDI XY Pad With Arduino Leonardo

by Japter in Circuits > Arduino

436 Views, 2 Favorites, 0 Comments

MIDI XY Pad With Arduino Leonardo

image_2024-03-27_135253437.png
image_2024-04-01_025730961.png
MIDI CONTROLLER XY PAD

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

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.

Assembling the Outer Panels

20240325_204528.jpg
20240325_204546.jpg
image_2024-03-31_180658656.png

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.

Assembling the Inner Sliding Mechanism

20240325_203807.jpg
20240325_203819.jpg
20240325_203824.jpg
20240325_203831.jpg
20240325_210205.jpg
image_2024-03-31_181228976.png
image_2024-03-31_181312007.png
image_2024-03-31_181438461.png
image_2024-03-31_210908291.png

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.

Lower Components

20240326_222843.jpg
20240326_230901.jpg
20240327_153736.jpg

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.

Upper Components

20240327_153741.jpg
20240327_153748.jpg
20240327_175100.jpg

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.

Securing

20240327_175103.jpg
20240327_175104.jpg

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.

Closing

image_2024-03-31_181650005.png
image_2024-04-01_011943276.png
image_2024-04-01_012001469.png
20240331_204459.jpg
20240331_204446.jpg
20240331_204442.jpg
20240331_204437.jpg

Attach the back panel, and glue it in place. Make sure you've soldered all your components before you do so.

Code

Upload the following code to the Arduino. You're done!

Downloads

Reflectie

20240309_162212.jpg

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:

  1. Té nauwe marges in mijn 3d design.
  2. 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.
  3. 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.
  4. Ik had veel minder ruimte voor printplaatjes dan ik dacht.
  5. Solderen
  6. 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.
  7. 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.