Fun with code (since 2006)

Adidas Megalizer – Behind the scenes


03.25.11 Posted in Actionscript 3, AIR, ByteArray by

In the following article, I am going to outline a project that we have been working on for Adidas to help them promote the release of their sneaker collection MEGA. We've basically created a system that would allow dancers to create their own beat or music with their shoes. Some sort of modern tap dancing :)

Aside from this film, we've also build a real interactive installation in several Shops in France to allow real people to test and play with the Megalizer.

Requirements

We had to meet the following requirements :

  • the system needs to be wireless, worn by the dancer and should not embarrass him in any way
  • the system needs to be placed on each shoe (no cable running on the dancer’s leg, or belt case)
  • the system should remain efficient at a 6-7 meter range from the speakers
  • a very low latency is critical (max 30ms)
  • the whole system should handle up to 6 shoes simultaneously
  • no fake: the sound should be genuinely generated by the dancers’ steps

Hardware and assembly

The concept is rather straightforward: I needed two force sensors for each shoe (one for the heel and one for the toe), and a wireless transmitter per shoe to capture the pressure applied on each of the sensors.

I used the Force Sensitive Resistor from Interlink [http://www.sparkfun.com/products/9376]. They have the right square size, are super-thin, and accurate enough to sense the pressure of a dancer’s foot on the ground.

As for the transmitter, I just had a size constraint: I wanted something really small, capable of handling two analogical inputs: one for the heel and one for the toe.

Only thin components such as the sensors can be placed under the internal sole of the shoe.

The first transmitter prototype I built was using a BlueTooth chip (class 3). Although the result was satisfactory at half-a-meter distance from the receiver, the latency increased with the distance. At 7 meters, the latency went as much as 1/8th second.

Then I gave XBee technology a try: these wireless modules have very narrow settings, a low power consumption, and I was confident I could reach a minimum latency at a decent distance.

Once I had solved the range / latency issue, one of the major challenges was to make the XBee module so small as to be wearable on a shoe. As we didn’t have the budget to industrialize the process, all of the assembly was made by hand ;)

Below the two final prototypes before and after building optimization :

On each shoe, the module included:

  • A 6-pin dock to connect the sensors and charge the battery
  • A status LED
  • A switch
  • A 110 mah liPo battery
  • A voltage regulator
  • A XBee chip
  • Some resistors

Finally, a receiver is connected to the computer to gather the signals from all the XBee chips.

The XBee chip (the emitter) can be programmed so that it emits on its own at a certain frequency both analogical inputs to another XBee chip (the receiver).

The receiver is a XBee chip plugged on a USB dongle. At the beginning, I had a single Xbee chip to handle the signal of the 6 emitters. I became quickly aware of  performance and latency issues, due to colliding packets. To solve this, I put three XBee chips as receivers. Each chip was in charge of handling two emitters and the collision/latency issue was gone.

The software

As for the software, two separate programs had to be developed:

  • a server processing the receivers’ inputs (Processing)
  • an AIR application that interprets the signals, chooses and play the sounds.

The communication between the processing server and the air application is achieved by a socket server hosted by the processing server.

The signal analysis was not an easy task. My intention was to assess when the heel or the toe was hit. The major difficulty is that when the dancer dances or even stands, there can be significant shifts of balance from one sensor to another, without an actual impact having really happened.

I created a rather simple algorithm, which you’ll find the basics below:

  • evaluate the average pressure applied on the sensor during the last second
  • evaluate the slope between the current average pressure and the average pressure applied ‘n’ milliseconds ago
  • if the slope matches a specific percentage, assume a positive impact
  • lock the sensor during ‘n’ milliseconds to avoid any duplicates

The application offered the following options:

  • loop a sound after one single impact
  • the ability to stop the sound of sensor X when sensor Y was triggered
  • mute the whole shoe when two sensors were hit simultaneously (for a short duration).

To design the frontend of the AIR application, I used the Minimal Components of Keith Peters.

Photos

 

 

 

 

Conclusion

I did face loads of technical and hardware problems during the production and tests. Generating live music requires very low latency, and creating a shoe-wearable wireless system was a real challenge.

The dancers that operated on the video clip did train a lot to succeed in synchronizing to play the actual song.

Aside from the technical standpoint, it has been for me a great and fulfilling experience to discover the dance environment.

Credits

Film : YAK Films

Dancers &  Singer : Lamine, Laurent & Larry (Twins), Mounir, La Fouine.

Thanks to Keith Petters Minimal Components [http://www.minimalcomps.com/]

Thanks to my brothers Fabien & Fabrice for their help.

If you have any questions on programming XBees, on the processing server or anything else, share them with me in the comments: I am no electronics expert, but I did learn a few things on that project :)

Links

Sparkfun shopping list  : http://www.sparkfun.com/wish_lists/13870

Making-of full res photos pack : http://sidlee.didierbrun.com/adidas/megalizer_photos.zip

Emitter electronic scheme PDF  : http://sidlee.didierbrun.com/adidas/megalizer_electronic_scheme.pdf

Processing server sources : http://sidlee.didierbrun.com/adidas/megalizer_processing_sources.zip



70 Responses to “Adidas Megalizer – Behind the scenes”

  1. [...] Adidas Megalizer é um tênis adaptado por Sid Lee, que colocou sensores na sola do tênis, um na parte da frente e outro na de trás, [...]

     
  2. [...] allowing dancers to create music on the fly.  Check out the video below, or see Didier’s behind the scenes details on how it was [...]

     
  3. [...] Para os mais informações sobre a tecnologia que envolve o software e hardware. Acessem o site abaixo: http://www.bytearray.org/?p=2886#more-2886 [...]

     
  4. [...] música com os movimentos dos pés (parece surreal, mas é verdade. aqui tem um post mostrando o backstage da [...]

     
  5. Great work, I love it!

  6. [...] a little bit of French coding, pressure sensors combined with wireless technology Didier Brun has come up with something fun and interactive- musical dancing shoes. Dancers can make beats and [...]

     
  7. [...] a little bit of French coding, pressure sensors combined with wireless technology Didier Brun has come up with something fun and interactive- musical dancing shoes. Dancers can make beats and [...]

     
  8. [...] info, y making of del proyecto: http://www.bytearray.org/?p=2886 En: Arte y experimentación, Publicidad Exterior Por: J Galaron – 21 abr 2011 0 [...]

     
  9. Binh says:

    Hello, would you happen to have most of the source code for the AIR app? I have decided to use this mechanism for my talent show, but I’m a little bit clueless in regards to software. Please reply mysticcatastrophe@gmail.com

  10. [...] sans la nouveauté du « son », vous trouverez d’amples informations via son lien. [...]

     
  11. [...] now. Needless to say I was impressed. Sure, Adidas gets credit for being the brand behind it but… Didier Brun gets the credit for being the McGuyver behind making it happen. For more details on how this thing [...]

     
  12. [...] Originals – MEGALIZER FEATURING LES TWINS Auf die Hacken fertig los! Zum Making of geht´s hier > Share 26. April [...]

     
  13. aashka says:

    Hi, I am trying to go through your schema diagrams and photos. I am unable to understand the connection properly. The duck which mentioned in you sparksfun shopping list and the one shown in schema is same? because in schema duck is having 5 legs!which xbee out of two shown in shopping list you have used in schema?
    which LDO ? sparkfun one?

  14. aashka says:

    Hi, I am trying to go through your scheme diagrams and photos. I am unable to understand the connection properly. The duck which mentioned in you sparksfun shopping list and the one shown in scheme is same? because in scheme duck is having 5 legs!which xbee out of two shown in shopping list you have used in scheme?
    which LDO ? sparkfun one?

  15. atomos says:

    thx a lot for the project!
    __
    ouu.. where can i download AIR application for the megalizer? (very interestion to see it)

  16. Hello,

    My name is Callum Mireault and I just had a couple of questions about the megalizer system. My brother is a devoted tap and ballet dancer and wants to add something unique and different to his routines, so I am teaming up with my friend who is a DJ to help him. We saw the video of the megalizer in use and I have to admit it makes me want to get back into dancing.

    So my question is, what other tools do you need other than the materials you posted in order to make this?

    Also do you have a recommended operating system for running the servers? And what other computer programs are needed to bring this project to life.

    Thanks for your time,

    Sincerely,

    Callum Mireault

  17. julanimtic says:

    Bonjour,

    Votre installations est géniale et j’aimerai avoir la possibilité de la tester. Envisagez-vous de remettre en ligne le contenu ?
    Je suis responsable multimédia d’une collectivité en Essonne et nous organisons au mois de février un festival sur les cultures numériques. Une telle installation y aurait toute sa place vous est-il possible de m’envoyer un devis ?
    Merci de me contacter par mail devriendtjulien{@}gmail.com

Leave a Reply

Open Sort Options

Sort comments by:
  • * Applied after refresh

ByteArray.org
Fun with code since 2006.