Just like me you probably have listened to the music produced by floppy disks/scanners/and other hardware containing stepper motors. I remember the first time i heard this was on the Amiga a long time ago. I got inspired by this and i thought it would be a good learning experience to create something similar using the Arduino. Some 5,25" and 3,25" drives where gathering dust at our hacking space and in my attic i found an old SCSI case with power supply and room for 4 5,25" devices. I thought it would be nice to create a sort of Jukebox which could play songs. I ended up with a Floppy Jukebox playing midi songs stored on an micro-sd card. A remote from a broken cd-player is used to select and play the songs.
Later i added an RGB led strip for some visuals and for the Gogbot 2011 OSC_Databending project i added an Ethernet port to control the Jukebox with OSC Messages.
From 23 may - until 9 june 2013 you can see the floppy jukebox at the Twente Biënnale For this i created a Euro sign with leds and connected it to the jukebox:
Floppy Jukebox with disco lights:
- Arduino Uno used as controller, later replaced by arduino ethernet for OSC_Databending
- 4 Floppy drives as instruments
- SD-card to store the songs
- IR sensor + remote to control playing
- A 4 x 5,25" device bay case with power supply
- RGB Led strip
- Optional: Ethernet shield for OSC
- Arduino 0022 software
- SD-FAT library to access the SD card
- IR library for remote controller
- I made a python midi decoder File:Midi2mmi-V0.7.zip that decodes and converts midi files to 1 track 'MMI' songs. Those can be more easily read by the Arduino.
- The main code File:Floppy-Jukebox-V1.0.zip on the arduino reads the songs from the sd-card and uses a ringbuffer and interrupt driven code to play a maximum of 4 notes simultaneously on the 4 drives. At the same time activity on drive 1 to 3 is also controlling the RGB values of the led strip creating a disco like effect. If no song is playing a slow color cycling routine drives the led strip. Trough the later added OSC interface a song can be selected or (when not playing) the lighting color can be set.
All these songs are converted MIDI songs. At this moment we have the following songs converted for the Floppy Jukebox:
- Willam Tell Overture - Rossini
- Pacman theme
- Can Can - Jacques Offenbach
- The Fifth Symphony - Beethoven
- Mario Brothers theme
- Starwars theme
- Bolero - Ravel
- Prelude in c major - JS Bach
- Opening sequence form Also Sprach Zarathustra - Richard Strauss
- Für Elise - Beethoven
- Moonlight Soneta - Beethoven
- Tocata - JS Bach
- O Fortuna - Carmina Burana
- The Liberty Bell march - Hohn Philip Sousa
- Axel F - Harold Faltermeyer
- Three's Company theme song
- Dr. Who theme song
- Nyan Cat song
Being worked on
MIDI using multicast UDP
Multicast is handy because several synthesizers can join a multicast IP address and respond to MIDI events simultaneously. The default arduino ethernet library doesn't support multicast, however the W5100 chip on the ethernet shield does support one multicast address per socket.
See on Arduino UDP multicast what to change to enable the Arduino UDP Multicast.