Hi there. I am currently a second year Music Technology student. The goal of this project was to design a new instrument of some form.
Ultimately, it is an electronic interface and can be re-mapped to a variety of purposes, but the physical design primarily tailors towards sample triggering and manipulation. This guide will demonstrate how to build, set up and use the box for this purpose.
This device, in theory, should be compatible on both Windows and Mac systems, though has only been tested on Mac.
Note: You WILL need a working copy of Ableton
If you want to see the instrument in action first, check out the embedded video in the final step.
Step 1: The Box
First, we'll need a box to fit everything into. I used a pre-built MDF craft box bought from Bunnings (shown in the picture), but it's easy enough to build your own.
What You'll Need
Either 1x pre-built MDF box of approximately 200mm x 150mmm x 70mm - $13 from Bunnings
1x sheet of MDF of at least 440mm x 270mm
This sheet needs to be large enough for
- Two pieces sized 200mm x 150mm
- Two pieces sized 200mm x 70mm
- Two pieces sized 150mm x 70mm
1x Saw (any cheap handsaw or jigsaw should do) -
~8x Nails or Wood Glue
2x Hinges (no larger than the depth of the MDF sheet) - optional
1x Latch - optional
The hinges and latch are not entirely necessary. They do, however, help keep the lid on the box and allow for easier access to the circuitry after assembly. There are likely other ways to achieve this, but this is the simplest.
Otherwise, feel free to be creative and choose any suitable material for building the device. I have seen shoeboxes and polystyrene boxes used, for example. These are likely to save on cost for not only the materials but the tools for construction (ie a shoebox will only need a blade rather than a drill and a multitude of bits).
Finally, for the construction;
- A drill of some sort (hand, bench, press etc.), whatever may be available that can use different sized bits. If available, a drill press is the best option for keeping the holes for the potentiometers as exact as possible.
- 1x 6.5mm drill bit.
- 1x 8mm drill bit.
- 1x 12mm drill bit.
- 1x 16mm spade bit.
- 1x 32mm hole saw.
- Epoxy glue or a similar adhesive OR blu tack (if the build doesn't need to be particularly durable). Blu tack is good for temporary builds as it does do the job quite well and is far easier to correct if a mistake is made. If you will be using a stronger adhesive, coat the moving part of the relevant components with some kind of wax or oil.
Step 2: Software
On the digital end of things, you will need:
Arduino v1.0.6. This is a coding environment similar to Java and C++ designed to send code to any supported Arduino board. Downloadable from http://www.arduino.cc/en/Main/OldSoftwareReleases#...
MAKE SURE YOU DOWNLOAD V1.0.6, as the MaKeyMaKey is not compatible with the newer versions.
Hairless MIDI, a wonderful piece of software that converts serial data input to MIDI data. Free download from http://projectgus.github.io/hairless-midiserial/
A working copy of Ableton. This is important, and probably the most difficult to source. Since the unit is not a hardware synth or sampler but an interface, it is merely sending data into Ableton. Hence, the box won't do anything without it. Make sure you download the attached 'Instrument Project' file, which contains the Ableton project, including samples, effects and mapping.
Step 3: Arduino Setup
To ensure your Arduino can detect the MaKeyMaKey and the relevant sketch, you will need to spend a moment setting up some folders.
- Create a folder anywhere in your computer (preferably somewhere easy to find, such as the desktop or documents) named 'Arduino'.
- Inside this folder, create another named 'Sketchbook'.
- In here, extract the 'hardware', 'libraries' and 'Instrument' zips. Delete the zipped files after extraction.
Once the folder structure is set up, launch Arduino.
- Once Arduino is open, go to File > Preferences, or press Command+,
- Under 'Sketchbook Location', press Browse and located the 'Sketchbook' folder inside your new Arduino directory and press 'Choose'.
- Now, in Arduino, go to File > Sketchbook and a sketch called 'Instrument-Proj_v2_complete' should be available.
- Plug in your MaKeyMaKey (you don't need anything attached to it, just the board).
- In Arduino, go to Tools > Board. Your MaKeyMaKey should appear at the bottom.
- Then, go to Tools > Port and select '/dev/tty.usbmodem'. This may be followed by a series of numbers. As long as the port name contains tty.usbmodem it should be good to go.
Your Arduino will now be configured to upload the sketch to the MaKeyMaKey, but we'll wait until the end for that.
Step 4: Hardware
We'll stick to getting all the gear we need for now.
Up next is the electronic components we'll need to get the box running. This is the most expensive stage of construction and the list is relatively long. If you can source parts elsewhere for cheaper, feel free to do so.
What You Need
1x MaKeyMaKey board - Ranges from $57 - $76 from Little Bird Electronics' online store, depending on what kit you get.
1x Breadboard (I recommend at least 400 points and very strongly recommend one that includes power and ground rails) - $5 from Little Bird, can be found cheaper on eBay or Ali Express, and can often be found at any good electronics store.
Either ~55x breadboard jumper wires - easily found at low prices on eBay and Ali Express, often bundled with breadboards for cheaper. The Deluxe MaKeyMaKey kit includes 30 of these. You only need to use 35 if you replace all the 5V and ground ties with short ethernet cuts, which I recommend.
Or 1m length of CAT5 ethernet cable - The core is made up of 8 single-core insulated copper wires which can be cut to length and stripped at the connection ends. This option is generally cheaper and allows for more flexibility in terms of wire length. I strongly recommend using this at least to connect component circuits to the breadboard rails. $1.37/m from Jaycar, which ultimately gives you 8m of wiring.
Note: If you go with the CAT5 cable, you will also need a pair of basic wire cutters for trimming and stripping. Can be found as cheap as $5.
A soldering iron and some solder. An iron with a temperature control will be ideal (soldering at 280-320 degrees celsius). These can range from $10 to in excess of $100. The one I used for this project was a basic variable temperature iron for $30. You may wish to purchase a stand. Solder tends to be no more than $15 for a large coil.
4x single-gang B50K linear potentiometers - $2.50 from Jaycar.
1x single-pole rotary switch (with at least 3 throw points, but you can have as many as you like) - $3.95 from Jaycar.
1x button (I chose the springiest one I could source, though I can't find the supplier).
DPDT two-throw toggle switch (any similar two-throw switch should work) - $2.95 from Jaycar.
2x steel washers, 16mm outside diameter, 7mm inside OR just large enough to fit over the top thread on your switches (this part is used to secure the switches in place on the box) - a few cents from any hardware store.
An 8mm spanner or a shifter.
5x knobs able to fit onto the potentiometers and rotary switch - Check any local electronics store and compare sizes there. I got mine for $1 each.
6x 10 ohm 0.5W resistors - $0.55 for an 8 pack from Jaycar.
Step 5: Drilling the Box
This step will likely need a number of measurements made. If you've purchased identical components to the ones mentioned in this guide, the same size holes will work sufficiently.
- Draw up where you would like each component to be placed. The second picture shows the top side of the box, and matches up to the position of each control in the finished product.
- If using the same model potentiometers, use a 6.5mm drill bit. If drilled perfectly, you can secure the potentiometer to the box by inserting the dial into the hole and hand-screwing the thread into the MDF until firm. Don't worry if it's not perfect, we will be talking about adhesive for these later.
- Drill one more hole for a potentiometer on the bottom side of the box (or into a corner, or a different side, doesn't matter too much). This is a fourth potentiometer I've used for master volume, to get a bit more dynamic control.
- One more hole on the top side (opposite the fourth potentiometer). This is for the cable to enter the box and reach the MaKeyMaKey. I used a 10mm for this, but it's rather tight, so I'd suggest using a 12mm bit.
- The rotary switch uses an 8.5mm drillbit, countersunk on the reverse side with a 16mm spade bit. This countersinking allows the washers to sit in the space, which makes the part easier to secure with adhesive.
- The button used in this project was placed in a 32mm hole. The size and design of the button allows it to be snapped into this space without needing any other adhesive.
- The switches sit in a 12mm space, which is then then countersunk on the reverse side (like the rotary switch) with a 16mm spade bit. Make sure the countersink is deep enough to allows a plentiful amount of the thread on the switch to show through.
We'll go through the process of securing the switches next to ensure the holes are the correct size.
Step 6: Configuring Your Rotary Switch
Because the rotary switches used are 12-throw, you'll want to limit how far it can turn, since you're not using all 12 points and having them open will cause problems.
Fortunately, it's easily fixed with nothing but a spanner.
- Undo the top nut on the switch and remove the first washer.
- Take out the second washer. Note the small peg facing down on one side of the washer.
- Looking at where the washer was on the switch, you will see a series of holes, marked with a number.
- Replace the first washer, with the peg placed into the second hole. This will limit the switch to three positions (the first one is always open, so it has no hole). You can change this value to anything from 2 to 12.
- Replace the other washer and the nut and twist your switch to see the result.
If the switch is not being limited in its range after replacing both washers and the nut, undo all the washers again, ensure it is turned fully anti-clockwise and repeat steps 4 and 5.
Step 7: Securing the Switches
To save from realising later in the process that the holes might not be ideal, we'll cover this step now.
To secure the switches, you'll need the switches and the 16mm washers, as well as an 8mm spanner, though a shifter works too.
Take the spanner and undo the top nut on the switch head. It can be easily removed by hand after being loosened by the spanner.
Insert the switch into the hole, ensuring the two washers on the switch remain in place and the base of the switch is sitting in the countersink.
Place the washer over the top of the switch, keeping it as centred as possible.
Replace the nut you removed over the top of the washer and screw on until tight.
Simple as that!
Step 8: Stripping Your Cables
If you have chosen to use jumper wires for your assembly, I suggest also getting a short length of CAT5 ethernet wire, as the ability to keep it short can significantly neaten your power and ground rail connections.
ONLY DO THE FOLLOWING STEP IF YOU ARE USING CAT5 CABLE FOR BREADBOARDING
After cutting a desired length of cable and untangling the two cores, gently press the cutters into the wire, release, rotate the wire and repeat. Repeat this process until you can use the cutters to pull off the stripped length of insulation.
Note: If you cut too deep into the insulation, you will weaken the core, making it easier to snap. This can result in broken solder joints and broken pieces of copper core getting stuck inside the breadboard or MaKeyMaKey ports. This process takes some practice to do cleanly, so feel free to buy extra cable if needed.
The stripped length should be about 5mm for joints being connected to the breadboard or MaKeyMaKey, and around 2mm for joints being soldered to components, to prevent the core from snapping outside of the solder.
Step 9: Soldering
Soldering the connections at this stage will make the circuit easier to assemble, so let's get the components ready to go.
There's a plethora of quality guides for soldering on the internet, so I won't go into the details of that to save some time.
This step is quite straightforward, and can be completed quite easily without a great deal of soldering experience.
First of all, for greater strength in the connection if you are using ethernet core, make sure the end you're soldering to the component has a much shorter amount of copper exposed. This will significantly reduce the chance of the copper breaking from the joint during construction.
Simply solder three wires to the three pins of the potentiometer. I find it helpful to colour code these where possible.
Take two wires. Solder one to one of the outside terminals and one to the central terminal. It doesn't matter which side is soldered, though this may vary if using a different type of switch. Be sure to understand the circuit flow in your component.
Take two wires. Solder each to one of the available terminals. It doesn't matter which if you use the same type of button shown in this guide. Again, make sure you understand how your components carry the voltage flow.
This is the most complex connection, though it is still quite straightforward. If you are using a single-pole rotary switch, solder one wire to the pin in the middle. If there is more than one middle pin (indicating a multi-pole switch), solder the wire to the A connection (the A should be written next to the relevant pin).
Then, we identify the outside pins. Find the pins marked 1, 2 and 3 and solder a wire to each of those. If you wish to change the number of different samples you can select, solder additional wires to points 4 and onwards as desired.
Step 10: Circuitry 1: Potentiometers
You may want to download the sketches from the 'Troubleshooting' st
For the breadboard, we are attaching all components in a parallel system and sending a manipulated signal into the analog or digital ports, depending on the component.
Attach a point on your breadboard's power rail to the 5V output on the MaKeyMaKey, and a point on your ground rail to either the GND port next to 5V or any of the EARTH points at the bottom of the board.
- We'll start with preparing the groundwork for the potentiometer circuits. First, take a short piece of cable and connect the power rail to point a1.
- Take a longer wire from a2 and connect it to the A0 port on the MaKeyMaKey, on the right side.
- Finally, take another short wire from a3 and connect it to the ground rail. This will close the circuit.
- The potentiometer will then be attached to the breadboard in rows 1, 2 and 3. When the dial is facing towards you, take the connection from the pin on the right and attach it to e1 on the breadboard. The middle pin will run to e2 and the left pin to e3.
The position of the left and right pin of the potentiometer will determine which point of the dial is minimum and maximum. So if the dial operates backwards, switch the outer connections on the breadboard.
We then repeat this process for the other three potentiometers, going down the rows of the breadboard (ie a4-a6, a7-a9, a10-a12).
The attached diagram shows a simulation of the circuit path in a closed section with all four potentiometers attached.
Step 11: Circuitry 2: Switches
All of the other components are set up into a circuit very similar to the potentiometers with a few key differences.
- In the same way you used the short wires to attach 5V and ground from the rails to the breadboard, do this again at another point for the switches, leaving one row in between.
- Plug the wire from the middle terminal of the switch into the row being fed 5V (shown in row 18).
- Plug the other wire into the next row which we have left blank (shown in row 19).
- Run a longer wire to the D1 port on the left side of the MaKeyMaKey (from a19 and a23 in the picture).
- Insert a resistor going from the previously blank row to the row being run to ground (row 19 to 20).
The switch is designed to only allow voltage through when thrown in one direction.
The resistor in this, and the following, circuits is very important. No resistor causes an open circuit, which will send an unrestricted voltage to the MaKeyMaKey, resulting in noise capable of freezing or crashing computers if ran into a serial monitor for a long duration. In the potentiometer circuits, the potentiometer itself acted as this resistor, matching the voltage after the middle terminal to the ground.
Create this circuit again in a new set of rows with your other switch and one more resistor.
The diagram attached shows the new circuit, including the switches and potentiometers. Keep in mind the switches run to the digital output, not the analog.
Step 12: Circuitry 3: Button
This is the easiest part of the circuitry so we'll dive right in.
- Set up the 5V and ground ties exactly the same as the other components (with a blank row in between).
- Take either of the wires from the button and run it from the first row powered with 5V (28 in the image).
- Take the other wire from the button and send it to the second row (the one left blank, 29).
- Grab a longer wire a run it from the second row to the D0 pin on the MaKeyMaKey.
- Take a resistor and run it from the second row into the third (ground) row (rows 29 and 30 in the picture).
In this instance, the button simply completes the circuit and the script in Arduino reads whether the signal in the D0 pin is on or off.
Step 13: Circuitry 4: Rotary Switch
This is the harder part.
The rotary switch works by sending the signal (5V in this case) into the central pin, then sending the signal to whichever pin has been selected by the switch. Here's how it runs on the breadboard.
- We'll start this out by laying out the groundwork. Set up a bridge from the first 5V rail into the second one. Do the same for the ground. On this setup, this is done at the opposite end of the breadboard with a medium length wire, simply because it was the most convenient position.
- Now that both rails are connected to 5V and ground, let's get the circuit running. Make a connection from 5V into the first row on the breadboard, shown on the left side.
- Make a connection to ground further down (the brown wire in row 11 does this in the picture).
- Place three resistors going from three different rows to ground. This will allows three different inputs. If you want to have more samples to work with, use more of these points. (Note: the number of samples is limited in this setup by the number of available digital ports).
- From the top of each of these resistors (the side that isn't connected to ground), run a wire from each into the three remaining digital pins on the MaKeyMaKey.
- Now, we'll hook up the switch itself. Run the wire connected to the middle pin into the row powered with 5V (the first row). This is shown in the second image.
- Connect each of the three pins to the top row of the three resistors, in the same rows where the signal is sent to the digital pins (refer to image 3 and 4).
Note: The circuit diagram only uses two points in the rotary switch. However, the concept is still the same, just with more connections.
Step 14: Securing the Components
Now that we understand how the circuit comes together, it's time to prepare for the final construction stage.
For this, we will securely attach each component to the box lid so that they don't move around freely while being controlled from the outside.
There is a variety of ways to do this. As mentioned in step 5, the potentiometers can be hand-screwed into the MDF by the thread at the base of the dial. This is the most secure way, but it is unlikely that all the holes will be the perfect size if any type of hand drill was used.
Construction adhesive or blu tack can be used for securing just about everything else, depending on which way you want to go.
- Potentiometers: As mentioned, screw them in where possible. Otherwise, insert the dial end, cap a knob over the end and apply adhesive or blu tack around the thread on the underside, avoiding as much of the moving part as possible. Ensure the contact is firm and, if using wet adhesive, allow to set for the necessary time. A loosely screwed part can be further supported by an adhesive if need be.
- Switches: Discussed in step 6. If a different type of switch has been used, using adhesive may be an option. Keep this in mind when purchasing your switches.
- Button: As mentioned earlier, the button style shown in step 4 fits perfectly into the 32mm hole. Just push it into place and it will sit quite comfortably if it's a neat drill. Otherwise, countersinking and/or adhesive may be required, depending on the button shape, size and style.
- Rotary Switch: Insert the dial part into the hole, allowing the base to sit in the countersink, and cap the end with a knob. Apply adhesive, check that the connection is firm and, if wet adhesive is used, allow to set. You may want to experiment with a countersunk hole approximately 1.5-2mm larger than the original and screwing the thread of the switch in.
The box should be looking pretty nifty now.
Step 15: Assembling the Circuit in the Box
This step is largely freeform and can be rather challenging, simply due to the number of connections and having to work around the sides and top of the box. It is made easier by using jumper wires instead of ethernet core for the most part, as the flexible wires are easier to control in the small space.
For this stage, I very, very strongly suggest finding a pair of long-nose pliers to grab onto the component wires inside the box.
- To start out, set up the breadboard so that all the 5V, ground, analog and digital connections and resistors are in.
- Get some blu tack (or your adhesive of choice) onto the bottom of the MaKeyMaKey and around the edges of the breadboard. This will secure it in place on the base of the box, which will stop a lot of things from breaking down the track. I chose to use blu tack, again, since it is much easier to remove and the MaKeyMaKey is a fairly costly piece of hardware.
- Now for the difficult part. From here, we build the circuit now that everything's in place. Following the directions in the Circuitry steps, wire up all your components into the breadboard. This may require a fair degree of patience, dexterity and care. I recommend having the lid of the box loose (if there are hinges attached, undo them), allowing access at all sides. Use the pliers if available to help manoeuvre wires into their positions.
If all has gone well, the box will be fully functional and ready to roll.
Step 16: Sending Signal Through Arduino, Hairless and Ableton
Now comes the fun part.
- Firstly, plug in the board to your computer, ensure the board and port are selected in Arduino under Tools and press Upload in the top left corner. This will load the script into the MaKeyMaKey board. You may wish to open the serial monitor at this point (top right corner) to check the various inputs.
- To get Hairless MIDI receiving signal, we'll have to do a bit of tweaking. This section has not been tested on a Windows computer, so an alternate method may have to be found. Go to Applications > Utilities and open Audio MIDI Setup.
- On the toolbar, go to Window > MIDI Studio. There should be an option for IAC Driver. Double-click to open. Once it opens, tick the 'Device is online' box and close Audio MIDI Setup.
- Open Hairless MIDI, set 'Serial Port' to IAC Driver. Hairless should now be able to receive MIDI data. Note: Only the potentiometers are sending MIDI data, the rest operate on key presses.
- Open Ableton. Go to File > Preferences (or Command+,), select the MIDI Sync tab, and underneath the Control Surfaces section, you should see an Input and Output option for 'IAC Driver (Bus 1)'. Set 'Track' and 'Remote' to On.
- Now, we open 'Instrument Project.als' which was in the zip file in step 2. Samples, effects and mapping should be pre-loaded, though I advise you double-check all the MIDI mapping. This is covered in the troubleshooting step, and should only be done if the MIDI messages are going through but not changing anything.
Step 17: Troubleshooting
If all has not gone well, here's a few methods to figuring out the problem and coming to a solution.
If your issue is not covered here, please leave a comment and I'll do what I can to help find a solution.
- Download the zip attached to this step. These are Arduino scripts designed to test each component set.
- Use a multimeter (simple ones can be bought for $10, sometimes less online) to check the voltage levels at each point in the circuit. This helps to ensure soldering has produced a good contact point and that no wires or components are faulty.
- If you've built a trial circuit and it's not running well, here's a few pointers.
- An endless stream of noise coming in when the serial monitor in Arduino is open is often due to an open circuit. Check all of your connections and make sure all the rows line up. If this is occurring, be careful and don't let the serial monitor run very long. Depending on the severity of the issue, it can freeze a computer quite easily due to the dump of data.
- Periodic bits of noise are likely to be interference caused by the components and wires being so exposed and handled directly.
- If noise is coming through to a single pin, a green light will appear above either the digital or analog pins on the MaKeyMaKey board, indicating which is receiving signal. This will help troubleshooting.
- If the sample selector is highlighting tracks randomly, turn off all tracks and enable only the one that the rotary switch position is set to. It should function fine from here.
- If none of the dials are working, you may need to re-map the MIDI controls.
- To map the MIDI, go to any of the audio tracks and open the Clip Overview (bottom right). Press Command+M (everything will turn a blue-purple colour), click on 'Transpose' and move the knob you want to assign to pitch/speed control. Once a pair of numbers appears on the control, press Command+M again to turn off MIDI mapping.
- Repeat this process for the Dry/Wet control on the Reverb and Delay (in Send A and B), as well as the Master volume, with each respective knob.
- If the button or switches aren't working, double check all the keyboard mapping. Press Command+K (turning everything orange) and repeat the MIDI process with respective keys and functions.
The 'Instructable Sketches' file attached here contains the master project script as well as a script for each component set. Move these into your sketchbook and load them up. Remember to upload each one before use.
Step 18: All Done!
Congratulations! Your interface should now be fully functional. Feel free to experiment with different samples, effects, controls and sketches, if that's your thing. Have fun!
I'd love to hear about any cool tweaks, experimentations or performances if anyone out there does try getting different results.