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.
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 converted the midi files to 1 track songs with a python program which i programmed for this task.
- The main code 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 activaty 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 ledstrip. 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 (with own software). 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.