Orbital- A circular drum machine

 

The origin

IMG_1395.JPG

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.

The concept

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!

anything sexier than that?

 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.

IMG_1380.JPG

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?

Transient

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 view of our test software

a view of our test software

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.

On this cube, the central colours of the upper and the front sides appear brown and orange respectively. They are in fact the same.

On this cube, the central colours of the upper and the front sides appear brown and orange respectively. They are in fact the same.

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.

the PixArt sensor

the PixArt sensor

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

Capture d’écran 2013-02-13 à 16.35.21.png

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

it would have been cool though

it would have been cool though

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.

a bit messy but it works!

a bit messy but it works!

Capture d’écran 2013-02-13 à 17.09.22.png

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.

IMG_1433.JPG

The shield makes the I2C conversion and interfaces the motor control with a potentiometer. Schematics here.

IMG_1443.JPG

The software

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.

Capture d’écran 2013-02-13 à 17.45.21.png

Conclusion

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.

IMG_1389.JPG

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. tracking solution).
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.

Benjamin Poilvé


 

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.