Orbital- A circular drum machine
It all started about a year ago. I was in the middle of my first year at engineering school and I heard about this dual-diploma program my school had with a design school. Having never heard of this school, I asked a good friend of mine if he knew it, and if it was any good (the name of the school is ENSCI). As he turned out, it is a pretty good school and after a bit of research on their website my mind was set: I had to be in that school.
Unfortunately, I was used to the classical written exam pre-selection/oral exam selection routine of the engineering schools and (at least in France), art and creative schools don't really work that way. You have to present a portfolio to prove your creative ability. So I was, about two month away from the application deadline and I had nothing. Usually those portfolio are a way to show your previous work, but as an science student, I didn't really had any previous work. I had to come up with something.
I took it as an opportunity to carry out something that have been in my mind for quite a while. I always really liked electronics instruments. I love the way they act a interfaces between our physical world and the musical world. I have always been a little upset by the way C.A.M. (computer-assisted music) stole the thunder of those instruments!
Its true that its more efficient, and cheaper but there is something missing. We have a need for tangible things, for physical contact with objects, and the computer, uniting all of our appliance into one grey box, with a single interface clearly cut this physical bound. I wanted to explore the way I could design an electronic instrument recreating this contact (and I am not the only one , see here).
So I came up with this idea. Representing each sound with a block, that you put on a circular board, you can create a looped rhythm. On the centre, a rotating sensor would be needed to detect those cubes, his speed would define the tempo. This design has the advantage to really give a physical counterparts to musical concepts. What's more, the visual aspect simplify the creation and reproduction of rhythms, even if you on't have a great ear for music. And as many people as you want can contribute to the musical piece! I build a scaled model, made a brochure and presented this project.
The next year (I have been admitted if you have been kind enough to wonder), I had to finish my semester at my engineering school. I took it as the opportunity to realize my concept. I created a team with two of my friend which aim was to create a working prototype of my idea. My two friends are Mathieu Garivet and Paul Dib.
Long story short, we made it! Our prototype still has a few flaws but it is at least the proof it's not impossible to make. I really would like to thanks the Lisa Laboratory, especially Didier and Hanane and our tutor Philippe Boutin.
I would really love to improve this design and maybe make kits to build your own, but though the doubt about the feasibility are removed, the real question is whether or not there is any demand for this object.
Here it is for our final result, now for the best part: how we went from a concept and a lifeless scale model to a working prototype.
What sensor to choose?
The main problem was here. At first, when I presented the project, I optimistically wrote that four I.R reflectance sensors would be enough to detect the four types of blocks. Unfortunately, all the sensors that we found had a far too wide angle. It wouldn't be precise enough to allow a precise detection of the angular position of the blocks on the board. The only solution was to use a sensor with better optical characteristics: a camera. But then, the processing capability of a prototyping board like the Arduino weren't enough to process a video stream so we decides to use a Raspberry Pi.
A Raspberry Pi is basically a single-board computer running Linux. It took us a little while to get used to Linux, then we started to make so test using a webcam and the openCV library. We came across some complications. First, though our program could give some very good results with a high ambient luminosity, if the conditions changed, then the quality of the results would drop.
It turns out it is pretty hard to do colours recognition. We might not feel it but our eyes does a lot of colours adjustments to help us identify the colours. It use the background and geometrical property of the objects we see to adjust our perception (see example on hover). What's more, even for the raspberry, a data stream wasn't easy to process, and our test results suggested that it wouldn't be fast enough for the application that we wanted.
It started to become obvious that we were in a dead end. Luckily at that point I remembered a video that I had seen a few years ago of a head tracking hack of the Nitendo Wiimote. If you want to see this, it's pretty impressive and it was made by Johnny Chung Lee. I made a little research on the specs of this camera and it was just perfect!
The PixArt Wiimote sensor
Basically when you use your Wii, the localisation off your Wiimote works this way: in the sensor bar there is two I.R leds, one at each ends and a little I.R. camera in your Wiimote. By detecting the position of the leds, your Wiimote can calculate it's position (it's the magic of trigonometry). But the Wiimote can't process a full video stream so Nitendo uses a sensor made by PixArt.
It's a video camera with built-in blob detection (I really wish I'd know how that works but I have no idea). It can detect up to 4 blobs (the brightest points), communicate through I2C (and the Arduino can understand that) and just needs a 24mhz clock to work. What's more, since it's already been reverse-engineered, we know exactly how to talk to it!
The two drawbacks are that you can't buy this sensors. You have to crack open a Wiimote and unsolder it yourself. It's still cheaper that 4 I.R. sensors but it's a little tricky to unsolder without damaging it. Another problem is that you have to convert the I2C tension from 3.3v to 5v to get it to work with the Arduino
We had our basic structure: an I.R. led and the sensor in the head. The sensor would detect the relexion of the led on the reflective tape on the top of each block and the arduino would use the height of the reflected point to determine which MIDI signal to send to the computer, any MIDI enabled software could then interpret it and map the chosen sounds.
The build-Mechanical parts
At first, I wanted to build the frame all in one piece of CNC-drilled wood. I made a 3D model and then asked a guy who had worked with CNC before if he could help me with it. He told me it was way too complicated for me to learn it in the few weeks I had before the end of the term so we dropped it and decide to build it the same way I did for the scale model.
So we build a wooden board and I machined a few holders for the Arduino board, the motor and the ball bearing wich would support the head. To make the connection between the rotating part and the board, we used a I2C-compliant Slip ring. The motor use a driving belt to drive the head. The motor itself is powered by the PWM output of the Arduino. A potentiometer is used to control it.
We made a 3D model of the head and printed it a the school Lab. The lower part rest on the ball bearing and is used as a pulley. The upper part is where is located the PCB, the camera and the head. They stick together thanks to 4 magnets.
The build-Electronic parts
The electronics is separated on two PCBs, one in the head and the other one as a shield for the Arduino
The one in the head is used to power the I.R. led and make a 24mhz clock for the sensor. See schematics here.
The software that runs in the Arduino is pretty simple. We used the PVision Arduino library to interface the sensor (great library, written by Stephen Hobley). The sensor ouptuts for sets of coordinates that triggers a midi signal send through serial. A system of flags is used to avoid multiple Midi signals caused by one block. The flag duration depends of the motor speed (we know it's speed thanks to the potentiometer input). The PWN rates also depends of that input.
So here it is: orbital is working. It still has a lot of flaws, but mostly they are easy to fix. Making a body with a CNC would really be an improvement, using industrial-grade reflective tape and a stronger I.R. led could help avoid the detection errors in high luminosity, the motor could be a little less noisy.. But the principle works.
It is really something that amazes me! Using only low-ends component we managed to make something different, to make a concept come alive. We learnt a lot in the process and it is important to say that we didn't really used any prior knowledge. Sure it helps having a basic understanding of how electronics work, but all that we needed to know was on the internet! This ability that is given to us to make about anything really is a great gift. It really frees our creativity, making the only real value, and not the technical knowledge, as it used to.
So what would be the next step? I
am thinking about redesigning the whole thing to make it
manufacturable. Maybe as a kit, or something like that.. But I am still
stumbling over two issues. First the use of a proprietary sensor is a
problem. Since you can't buy it, how would the manufacturing work?
Buying a stock of Wiimote and cracking them open? Not very ecological.
Selling the whole kit excepted the sensor and ask the buyer to solder it
himself? As I said, it not very easy.. A solution would be to
understand how hardware blop detection works and make an shield that
could interface a standard webcam. If you have any leads about how to do
that, I would be happy to hear it (I think a lot of people would, I
came across DIY drone forum posts desperately searching for an I.R.
The second issue is more of a question. Before investing more time in this project, I need to know if some people are interested in it. That's partly why I made that page. I thought of it as the kind of musical toy adults would like to have, a little geeky but a real object too. Now I have mine.. Does anybody else want one? Our tutor suggested that it could be used in music school to teach kids the basics of rhythm and bar. Anyway, if you have any suggestion, if this project interests you, please feel free to contact me.
PS: I intend to put all the files you need to make your own online, but I don't have them with me right but I will later.