After hearing music being played on retro hardware, we decided to create our own instrument.
What it does
Our project takes 10 floppy drives and uses them to produce sounds. This happens due to the motor oscillating frequency resonating to create a sound wave. We harness this capability to produce different notes by moving the motor at set frequencies and intern are able to produce music.
How we built it
Our project was divided into 2 distinct groups. Josh and Tim took on the hardware construction. Jake and Justin worked on the software.
Hardware: In order properly amplify the sound from the floppy drives, we had to figure out the structure that the floppys would sit on. This brought us to the Helmholtz resonance equation, which gave us a relationship between frequency resonated, volume of the box and the port opening of the box. We had a range of frequencies that were expected. From there, we bracketed the volume of the box so that it would not be huge but that there still was enough room for the drives to sit properly. The calculations yielded some surprising results. The area of the port hole had to be of reasonable size or the volume had to be of reasonable size. As it turns out, we were calculating frequencies higher than what the drives ended up creating. This allowed for more reasonable dimensions. Instead of trying to have multiple port holes or some weird shape port hole, we came up with a radial design. This allows for simpler calculations, as well as making it more like an acoustic guitar.
Our first challenge came when going to Lowe's to source material. We could not find a thin enough plywood that would bend easily to wrap as the outside of the enclosure. We settled on some 1/8th inch oak plywood and attempted to "steam" the it, in order to make it more malleable. This failed twice before we switched gears. The wood just did not want to be bend to the radius we needed. Since it was late into the night, we just needed a solution. Therefore, we just cut the piece that was supposed to be wrapped around into slats that would still give a circular profile and structural support.
Once the enclosure was assembled, it was glued for more rigidity over night. It was cleaned up with a nice sanding to smooth out the rough edges and clean up the overall appearance. Next, we stained the whole thing to give it a protective coating and enhance the natural color of the beautiful oak wood.
Floppy drives were cleaned and prepped for their installation while the stain was drying. They were given some glue and secured further with the zip ties. We found that the tighter bond that the floppy had with the wood, the better sound that we could get from it. This is the reason for all the security of the drives to the top surface.
Next was to wire up the drives with power and input signals. This proved tedious because each drive needed a +5 volt source, ground, step signal input, direction signal input, and a jumper for the front LEDs to turn on. With great caution, we soldered the wires right to the pins and ran each bundle of wires underneath the top with the help of the zip ties that were already in place. Then, all the common grounds and +5 volts were soldered together. The input signals were soldered to the TI M4123G board. Banana plug connectors were added for a cleaner connection to the power supply and a hole was drilled for the micro-USB cable to pass through for easy hook up to a computer. Troubleshooting the code began and a final debug was under way.
Software: We used C for the ARM chip controlling the floppy drives and Python to decode midi files and transmit them from a computer to the device over a serial port. The device software generates 10 independent square waves for the stepper motors inside the floppy drives. By toggling an output pin of the micro controller at certain frequency, different notes can be achieved as the floppy drive motor resonates and amplifies through the resonator box. The communication with the commanding PC is done through two bytes commands. The first byte represents the pitch of the note and second byte represents which drive is supposed to play the note and also general mute/unmute bit.
Decoding the midi files took two versions. It took a lot of research on how the files were structured. In the first version, we tried reading the file byte by byte which made it hard to achieve all the necessary data in the given time. For that reason, we decided to use an API which helped acquire the contents from the midi files more efficiently.
Challenges we ran into
Parsing MIDI flies were a difficult task. The files are stored in big endian format while most modern architectures are little endian. While building the resonation chamber we initially planned on creating a circle by bending a small piece of plywood. Unfortunately it kept cracking and we had to rebuild using narrow strips to get our circle shape.
Accomplishments that we're proud of
In the end we were able to decode a MIDI file and play it on 10 floppys.
What we learned
Wood doesn't bend easily. MIDI music file structure.
What's next for Flopper
Tons of youtube videos playing songs on request. Adding more LED lights. Voice syntonization. Hard Drive Drum. 8 bit concerts.