DIDI was my final year project for my undergraduate degree in Music Technology and Applied Electronics at The University of York. My challenge was to create a piece of wearable music technology. Having had experience with DJing in the past, I thought it would be interesting to create a new control mechanism. Typical control systems come in the form of large MIDI deck interfaces. Although they offer a plethora of control and have remarkably slow latencies, they are complicated, cumbersome, and quite expensive to buy.
Looking at wearable solutions, the most successful I have seen to date is the 'djay' control app for the Apple Watch. Paired with an iPhone, it allows the user to remotely control the app and puts fundamental controls directly on the user's wrist. Despite the app being useful, it is fairly unresponsive due to the latency involved with bluetooth communication. Despite this being relatively small (approximately less than 500ms), it is noticeable and restricts its use in a creative context and so many DJs would not rely on it for live mixing.
DIDI takes the best of both worlds by putting wired physical controls directly onto a user's wrists. Theoretically, by not using wireless technologies to communicate with the target software, the end result should be an extremely responsive system that is cheaper, more portable and much simpler than its traditional counterparts.
The resulting system is extremely intuitive and works brilliantly.
What can it do?
The project consists of two wrist-mounted circuits. In this first iteration of DIDI, each circuit has two buttons and two potentiometers. These have been mapped within DJ software to toggle the Play/Pause or Fx Enable button, or to adjust a Filter or Fx wet/dry control.
What you will need:
- An Arduino Mega 2560 board (£35)
- A prototyping shield (£5)
- Two 3x4cm pieces of veroboard (£2)
- Two 1m lengths of 6-core cable (<£1)
- Two straps (£20)
- Four 500k potentiometers (<£1)
- Four push buttons (<£1)
- A 220 ohm resistor (<£1)
- A MIDI out female connector (<£1)
- Plenty of single-core wire (<£1)
- Soldering equipment
Approximate Cost: £68*
*This is an overestimation so that there are no unexpected costs for you.
Step 1: Building the MIDI Shield
The outcome of this section is very much down to personal choice. Depending on the prototyping shield you use, you may approach this section quite differently to the way I did.
Looking at my board, I chose to put my MIDI connector on the lower-right side (facing outwards).
The Arduino website (https://www.arduino.cc/en/Tutorial/Midi) provides a good breakdown of the key connections required here, but in a nutshell, you will need:
- MIDI jack pin 5 connected to Digital pin 1 (Tx).
- MIDI jack pin 2 connected to ground.
- MIDI jack pin 4 connected to +5V through a 220 ohm resistor.
Consider which rails of your prototyping shield will be connected to 5V and ground. You should also consider where the breaks in each track will need to be made in order to isolate your analogue signals from the MIDI connector. Undesired connections would cause extremely erratic behaviour.
The Arduino site also provides some sample code that can be used to test that your MIDI shield works correctly.
Step 2: Building the Worn Circuitry
If you are familiar with electronics, you will notice that these circuits utilise extremely simple principles and components in order to function. If you are not familiar with the principles, you should find them easy to grasp regardless of your background knowledge.
The design was refined into the above diagram. The board takes in 5V and ground connections. These are then distributed around the board appropriately. The output signals from the components are then sent back to the Arduino board. The button signal is essentially 0 or 5V depending on whether or not the button is pressed, thus allowing power to flow. The potentiometer is also a simple component to work with; Arduino have produced a simple explanation of how it functions. 500k potentiometers were used here.
The diagram also shows where breaks in the veroboard's copper tracks have to be made to isolate two signals. If these are made, the circuits will notfunction correctly.
It is useful to solder in the wire connections before adding the buttons and potentiometers, especially if you have larger hands.
You may also want to consider marking where the components will sit, this should aid in reducing mistakes in construction.
Step 3: Connecting the Control Circuits to the Arduino
As mentioned earlier, a wired approach was used due to its low-latency nature and reliability. In addition, it keeps project costs down as transmission equipment and battery modules would otherwise have to be added.
As seen above, 6-core cable connects each control circuit to the Arduino's MIDI shield. For my particular shield, the holes connected to Analogue pins had to be connected to the tracks with small pieces of wire. Your prototyping shield may already have the analogue pins routed to separate tracks. These should be isolated with breaks in the track if any other circuitry (your MIDI connector!) is soldered to any of the tracks.
If you haven't already, you may find it useful to create dedicated ground and 5V tracks closer to the analogue input tracks. This means that the internal wires of the 6-core cables will have to cover less distance across your board, and the result will look much neater.
When connecting your wires, make sure they are connected to the Analogue pins like this:
A0: Left-wrist play (white wire)
A1: Left-wrist filter (green wire)
A2: Left-wrist Fx enable (yellow wire)
A3: Left-wrist Fx wet/dry (blue wire)
A4: Right-wrist play (white wire)
A5: Right-wrist filter (green wire)
A6: Right-wrist Fx enable (yellow wire)
A7: Right-wrist Fx wet/dry (blue wire)
Depending on which wrist the circuit is being worn on, the wires will have to approach the board from different sides. The comparison photo above shows the wire connections to the right and left boards.
Step 4: Transmitting MIDI From Your Board
With the circuitry complete, the next step is to upload the Arduino code which will translate the project's electronic signals into meaningful MIDI data. The code has been attached and can be downloaded.
Once this has been done, your project should be outputting MIDI data. You can test this by connecting the MIDI port to your computer and using MIDI monitor software to see the individual messages being transmitted.
On Mac, I use MIDI Monitor. It is a free application that can be downloaded at https://www.snoize.com/MIDIMonitor/.
I have tested the project in 'djay pro' for mac but thanks to the flexibility of the MIDI standard, the project should work in almost any musical context.
Once you are confident that your messages are sending correctly, you can map them to software parameters to begin using the project creatively.
Step 5: Make It Wearable!
This last section is down to personal preference. I found a wonderful strap design on Thingiverse that was appropriate for the project. This was originally for an iPod Nano to be clipped to, but the flat platform was a perfect size for the control circuits used in this project.
The design can be found here:
Thingiverse allows for customisation of the design so you can make the strap longer or winder, depending on the size of your wrist.
You may want to consider designing your own strap. This could be a design for 3D printing or fabric based, depending on your preferences.
If you do use a 3D printable design, I recommend using 3Dhubs.com to locate a 3D printing company that can print your design and mail it to you. Including shipping, two straps cost me £18.50.
Regardless of which route you take, you must ensure that the board is attached to your strap securely and in a manner that isolates electric current form your skin. We are not working with dangerously high voltages, but isolating the circuit also ensures it contains as little interference as possible.
I used Blu Tack and Loctite super-glue to attach and isolate the components.
Step 6: DIDI's Done!
That's it, you've finished building DIDI!
The embedded demo video scratches the surface of what can be done with the project.
It is responsive, intuitive, and more importantly, a helluva lot easier to use than a cumbersome DJ deck.
I hope you enjoy building DIDI, and I can't wait to see how you use it!