The next generation of Music Cubes is called Aerial Tunes and can be seen here.
Briefly about the project
Music Cubes functionality
- Rocker: start/turn on and stop/turn off Music cubes
- Play button: start or stop playing the sequence of tones
- Loop button: turn looping of the sequence on or off
- Play speed slider: control the play speed of the sequence
- Rotary switch: change the volume
How to use Music Cubes
The controller and the connected Music Cubes is turned on by switching the rocker to “on”. When this is done the cubes will calibrate their airflow and when they are done a sound will be played to indicate that they are now ready to be used. After the calibration the balls can be positioned in different heights in the air, just by grabbing a ball and holding it in the desired height. When you are holding a ball in the air stream, the tone according to the height is played as you change the height (this function is however not yet implemented in the prototype). When you want to play all the Music Cubes that are connected to the controller you can push the play button. By doing so the tones are played one by one in the order that the cubes are connected in, starting from the controller. When the last cube has been played or if the play button is pushed again the playing is stopped. However if looping is activated the sequence is restarted at the end of the playing. Furthermore the play speed can be adjusted, that is for how long the tones will be before the next tone is played. And the volume of the sound can be adjusted with the volume control.
All functions, besides loop on and off, can be used while the tones are being played, which makes the interaction very fluent. For example you can adjust the height of a ball/tone just after it has been played and thereby make a new sound the next time the playing reaches that same ball. This makes it possible to make melodies if you are musically skilled and fast enough to change the tones accordingly to the melodi.
Below is a video of the current Music Cubes prototype in action, where the functions implemented is demonstrated.
The flying balls in Music Cubes is to be taken as direct representation of notes. Just like notes the sound is affected by how heigh or low the node is. Which means that if the note or the ball is high a high note is played meanwhile a low note/ball will be played as a low note. This metaphor is used to give a visualization to how music can be expressed and it allows the user to learn something about how the height affects the sound. The round shape of the ball can also be seen as the circle of a note, which also enhances the symbolic connection between ball and note.
The story behind
The idea for the innovative interaction came from the demand for the project, which was that the product had to be physical and therefore we chose to look at TUI as our starting point (TUI = Tangible User Interface, see our Bachelorproject, which will be uploaded soon, for more information about TUI and what it is). After reading a lot of articles we found a new term called “Blow displays”, in an article called “Collaborative Ambient Systems by Blow Displays” by Minakuchi and Nakamura. In this article they research how blowers and wind can be used as an Ambient Display (which is a display for showing information from something electronic hidden in the environment). Based on this term from the article we started looking for implementations of blow displays or things inspired by it. We found a video of a prototype where balls are kept in the air by wind from blowers and where the height can be controlled individually for each ball. The video can be seen here: ttp://vimeo.com/13059978. This new (for us) kind of display got our attention and with inspiration from that we made a smaller brainstorm on how this could be used in a TUI product where the balls’ height can be manipulated directly through physical contact. Through this brainstorm we discovered the main interaction of Music Cubes, which is also the most interesting part of Music Cubes from an innovative point of view.
Description of Music Cubes
Since Music Cubes was developed in the course Advanced Physical Computing we also had a lot of focus on the technical aspect of Music Cubes. Below you can read about what Music Cubes consists of.
The controller consists of the following elements:
The main board mainly consists of an ATMEGA8 MCU from atmel, and works as a central for communication through a rs223 serial connection to the soundcard and the cubes. Through this connection the controller handles the cubes and sends the signals to the sound card. The main board gets inputs from the controlpanel where the buttons; on/off and play/stop is connected to the MCU’s external interrupts and the volume and speed regulators are connected to the MCU’s analog/digital converter ports.
The sound card receives information about the height of each ball and converts this information into a tone. To get the best possible sound from Music Cubes we have programmed the sound card such that it with a DAC0808 digital/analog can generate sound waves following a sinus curve. Since trigonometric calculations are very demanding for a small 8Hz MCU, we have made the sinus curves first and transfered them to the MCU as a lookup table.
The sound card has a lineout with an output voltage between 0 and 0,7 V and an extra fuse in the form of Zener diodes which makes sure that the output voltage does not exceed 2V.
The power supply is a regular ATX computer power supply which can deliver GND, 5V, 12V and -12V. However to make it work without being connected to a regular computer we have modified it a bit.
On the topside of the box the input buttons can be found, which has been descriped previously.
The Music Cubes cubes consists of the following elements:
The cubes with blowers is shaped in the same way as the controller, which is cubes of the size of 27 cm. In the top of the box there is a nozzle, which makes the air to be blown out in an even stream. On the back of the box there is two connectors – an input and an output that allows the cubes to be connected serially. The external connectors have 5V, GND, +/- 12V and a serial RX and TX. Besides all that there is holes in the box for the blowers aspiration.
The ball which is blown into the air is made of foamed polystyren. This material is chosen to make the ball as light as possible, while maintaning a firm shape.
In each of the cubes there is a main board, almost like the one in the controller. On the cubes’ mainboards there is also an and-gate, which allows all the cubes to write to the controller. The and-gate is necessary since all the communication from the cubes to the controller is through the same connection and the signal is low when a message is being sent.
We have written software for the ATMEGA8 MCU which automatically calibrates the blowers in relation to voltage vs. air flow, which makes us able to set the exact height the ball should be kept in by the air flow. More precisely this works by making a lookup table during the calibration where height is mapped with the voltage delivered to the blower. So when the blower needs to set the ball in a given height the software looks the height up in the table and finds the best fitting voltage. The found value is then converted to a 8 bit binary value which is sent to the motor control.
The motor control consists of a DAC0808 digital to analog converter. This uses the 8 bit binary value, which the MCU provides, and transforms it into an analog signal which in our circuit is between -12 and 0 V. In order to invert this current into positive current we have connected an operational amplifier. Since this signal isn’t very powerful and since we wish to control our 12V 1A motor, the signal is used to control a LM317 adjustable current regulator, through which we run the blower. In order to stop this component from overheating we have calculated that a heatsink with a heatresistance between heatsink and air on max 11 C/W have to be mounted.
To blow our balls up to a height of about 22 cm, we have used a TMC-0370105 12V engineventilator. This blower has a capacity of 90 CFM and is of the type radial blower, which makes the air stream more even than most other types of blower and ventilators (we have tried a lot of other types that didn’t work!). The blower can be adjusted from 5 to 12V and does max 1 amp.
In this interval of current the blower can, with a proper nozzle, blow the ball to a height from 0 to 22 cm.
In the first prototype, and as can be seen in the video, we have used a “PING))) Ultrasonic Sensor“ from parallax to measure the distance from the cube to the ball. The distance is measured by making calculations using the time it takes for an ultrasonic signal to go from the sensor, to the ball and back again.
In the future this sensor might be replaced with an IR distance sensor (GP 2D120J000F) from SHARP and more permanently integrated to the box.
Two blue power LED’s are mounted on the nozzle in the box, which can be used to indicate when the cube is being played. During the calibration phase this light is also used to indicate status.