Using a 5.25″ Floppy as a MIDI instrument

A friend and I recently uncovered a 1992-ish PC, boasting 4MB of RAM, a nearly 500MB hard disk (aftermarket, we believe), and a dual 5.25/3.5″ floppy drive! Stymied by the lack of a compatible mouse (as this was well before the era of USB devices), we could boot from it, but not operate it. So after wondering for a bit what we could possibly do with it, we decided to take out the floppy and try to adapt it for a modern computer.

Of course, there do exist USB floppy controllers; however, as any enterprising computer science students would, we wanted to build our own.

We started by breadboarding some circuitry along the breakout of the floppy ribbon cable.

Bench with Floppy Circuit
Bench with Initial Breadboarded Floppy Circuit

With some knowledge of the pinout (and the fabulous documentation available at http://www.hermannseib.com/documents/floppy.pdf), we started building the simplest circuit we could. Since we didn’t have an actual floppy on hand, as far as we can tell we couldn’t run the drive motor. (If this isn’t the case, drop us a line!) Instead, we found we could step the head in and out one track at a time using only the “Drive Select”, “Step”, and “Direction” pins. After we figured this out using buttons, we wanted to push the limits of this technology. We wrote a quick Arduino sketch that started at 1 track per second and increased the frequency with a button press.

We found that the drive would work fine in excess of 400 tracks per second. But what we also found was that (possibly unsurprisingly) it would emit tones at the frequency it was being pulsed. So a plan was born.

This uses the MIDI Arduino board I’ve used for a few other projects. It takes MIDI in, over USB* and if it’s in the range it handles, plays the floppy drive, one note at a time. (Ideas on polyphony, anybody?)

* We initially started this project using hardware midi so we could hook this up to any MIDI controller (the Pedalboard perhaps?) to make music. However, we determined there are likely hardware issues with the board that prevent us from doing this. We’re still attempting, so look for it in a future iteration.

Since we use USB, we use SendMIDI to, well, send MIDI to the device to play. Currently, we send single track MIDI to play melodies like this recognizable one:

For this project, we took great inspiration from this writeup—I highly recommend you read it; it’s great!

Leave a Reply

Your email address will not be published. Required fields are marked *