Introduction: Musical Floppy Drives

About: One day I shall own a Delorean.

Turn old tech in to music, that was the goal and it was achieved with some research on instructables and other websites.

this has been done a load of times before but I wanted to do it and try to explain it the best I can so that its easier for others to have some fun with old tech, the tutorials for making these that are on the internet are not very good. Hopefully this will resolve that ;-)

This is a fun thing to build but it can work out to be expensive as I found out, I was expecting to pick up loads of floppy drives for £1 each but it turned out that it was harder to get hold of them than I expected.

I was thinking I would go to the local large car boot sale and I would be tripping over them, nope! I had to get most if not all the drives from eBay for at least £5 each.

So just be prepared that If you don't have a load of floppy drives kicking around it may cost you more than you would think. Also when you run them it stressed the motors out and they can just give up so it's best to have some spares.

check out the Facebook page hit like ;-)

also check out the youtube channel and hit subscribe

the original instructable that inspired me to step it up a little is this one here

Step 1: Some Videos

Normally at this point I would go right to the equipment list but I thought It would be nice you you to see what these things can, they are fun. Here is a few videos of it in action, there are more videos at the end.

Jurassic Park Theme - In Memory of Richard Attenbrough 1923 - 2014, RIP







Step 2: More Videos

Some more vidoes, I didn't want to put them all at the start otherwise you would have to scroll through loads to get to how it was built. Enjoy!

I will be making more videos so subscribe to my YouTube channel CLICK HERE

As I am British I couldn't do something like this without doing the James Bond Theme

Step 3: Equipment Required


1 x Arduino Uno, you will need 2 of these if you want to do 16 drives

Female to Female Jumper Wires

1 x ATX Power Supply Unit

1 x ATX Power supply tester plug, keeps the ATX Power Supply Turned on

USB Cables for the Arduinos

Power Cable for the ATX Power Supply Unit, I would recommend 300w or more but it probably could be done with less as I doubt the floppy drives use much power.

4 x 4 pin Molex to 2 Floppy drive plug adapters, you will need 6-8 of these if you want to run 16

2 x 4 pin Molex splitters, this will turn one 4 pin Molex in to 2.

8 x 3 1/4" Floppy Disk Drives, or 16 drives, the max you can do with the Moppy software is 16.


Insulation Tape

Wire Cutters

Wire Strippers

PC With Windows


Arduino Software (here)

Timer1 Library for Arduino (here)

JDK 7u65 with NetBeans 8.0 (here)

RXTXcomm Serial Driver (here)

Moppy Software (here)

NOTE: some floppy drives are louder than others, so it might pay to try a couple out first before buying loads of them, Ideally you want loud drives but you want all of them to be loud. It will be no good if one drive is really loud and the others are quieter as the loud one will drown out the sound of the others.

Step 4: Floppy Drive Pin Out

So when you look at the pins on a floppy drive you will notice there are 2 rows, the bottom row are all ground pins and the top row is where current will be applied to perform an action.

Pin 12 (and its ground pin 11) is the drive select pin, this will light up the drives light when active, if you wired pin 12 directly to pin 11 the light would stay on. We will use the direct wire method in testing later on, but in the final wiring I wanted to make the light come on when the drive was active so I linked pin 12 to the same wire that runs the Step Pin so when the motor is engaged the light comes on.

Pin 18 (and its ground pin 17) Controls the direction of the step motor.

Pin 20 (and its ground pin 19) control the step, in other words it makes the motor move.

these are the only pins we are interested in when we want to make sounds from the floppy drives.

Step 5: Testing the Drives

First things first you will need your ATX supply to be always on, normally this requires a motherboard but you can buy a special testing socket that will plug in to the cable and ensure its constantly on. You can also put a piece of wire in to the plug and short 2 of the pins which will do the same thing. Personally I don't feel this is very safe as it could spark and cause a fire, So I won't be telling you which pins you need to short. If you are keen on burning your house down you can find this information on google.

To test the drive use a jumper wire to connect pin 12 to its ground pin, pin 11.

Plug the power in and turn on the power supply unit with the switch on the back of it, the light on the floppy drive should come on. if it does great the light works, now we need to test the stepper motor works in it.

Connect a jumper wire to Pin 18, the Direction pin, and also to its ground Pin 17.

Connect a Wire to Pin 19, the ground for the step Pin 20, do not plug the jumper wire in to pin 20 just yet.

Turn on the power supply and the floppy drive will light up, now connect the wire to pin 20 and you should hear the step motor go. It should go to the end of its available travel and stop. Remove the wire from Pin 20 and Pin 18 then reconnect the wire to Pin 20 and you will hear the motor go in the other direction.

Provided that you hear the motor and the light works you have a working floppy drive. Remove all the wires and test the next drive until you have tested them all and verified that they are all working.

Step 6: Preparing Your Wires

We need to prepare the wires we are going to as some will be clipped and linked together.

Pull off a set of 3 wires from the ribbon cable of jumper cables and cut off the plugs at one end and strip the insulation off. Twist the wires together and put to one side, you will need 1 set of 3 wires in this way for each floppy drive so do them all. These will be used for the ground pins, which will be be putting to the ground pin of the Arduino.

I used a connector block to link all the ground wires together and then had a single jumper wire from that connector block which I can then connect to the ground pin of the Arduino. You will have to twist some of the 3 wire setups together to do this.

the next set of wires we need to do is the one that will run the stepper motor and the light on the front. strip 2 wires together off the ribbon and cut the pugs off one end, strip the insulation and twist together. Now you will need a short wire with 1 plug on the end, I stripped a single wire from the ribbon and cut it directly in half, this gave me enough for 2 sets of wires. Strip the single wire and twist in to the double wire set and use insulation tap to secure it all in place and prevent shorting. you will need to make this 2 to 1 wire set for each floppy drive you intend to use.

You will also need a single jumper wire for the direction, no need to cut or strip this, you will need one of these for each floppy drive you intend to use.

Step 7: Wiring Up the Drives

Now we need to wire up the drives, this will be for one batch of 8, you do the same again if you are running 16.

Plug the single wire from the ground connector block to the GND pin on the Arduino, then take a set of 3 wires and plug them in to the following Pins on the floppy drive, 11, 17 and 19.

Take the 2 to 1 wire and plug the one plug of each from the double end in to pins 12 and 20, then plug the single end in to Pin 2 on the Ardunio.

Plug the single jumper wire you have in to pin 18 on the floppy drive and pin 3 on the Arduino.

We wont be using pins 0 and 1 on the Arduino as these are for serial communication.

Then you do the next drive but use pins 4 and 5, pin 4 being the stepper wire (pin 20 and 12 on the floppy) and pin 5 being the direction (pin 18 on the floppy)

just keep going in pairs until you get to pin 13, you now need to start using the Analog pins on the opposite side, starting with A0.

Don't forget to plug your floppy's in to the power using the cable splitters.

for those who are wondering what that red thing is on the white set of drives, thats a 3D printed stand I designed to hold the drives and keep them separate so the sound can escape better. I have attached the STL files to this step so you can print your own if you have a 3D printer. It's a universal part just print 2 of them for a stack of 4 drives.

Step 8: Installing All the Software and Plugins


Arduino Software (here)

Timer1 Library for Arduino (here)

JDK 7u65 with NetBeans 8.0 (here)

RXTXcomm Serial Driver (here)

Moppy Software (here) Instructions further down, just download it for now and copy the folder to your my documents,.

NOTE: to install the Timer1 library you will need to download it and copy to the Library folder in the Arduino software install folder, you can also click on

now you have downloaded all your software, installed it and you have done all the electronics now its time to upload the Moppy program to the Arduino, plus the USB in to the Arduino and open the Arduino software then open the Moppy.ino file in the Moppy software you downloaded.

Under Tools > Serial Port you should see some COM ports select the one that is not COM1, now click File > Upload and it will be sent to your Arduino. Make a note of the com port you will need it later on. If you are doing 16 Drives you will need to do this Bit again but using the Moppy.ino file I have attached to this step as its modified to cope with the additional channels.

Ok now the fun part, with your Arduinos plugged in to the USB and the power supply for the floppy's turned on, open NETBeans IDE 8.0, browse to the the Moppy folder and open the Moppydesk Project in the Java folder. Press the green play button.

On the right select the com port for the first 8 drives, if you have 16 do the other 8 to the other com port, and check the boxes next to the ones you want to use. Make sure they are all set to Moppy as well then click connect, all the drives should buzz. You are now connected to your floppy's.

Download the test files I have included in this step and open one by click the "load sequence" button, then click start. when its finished I always like to press the Stop/Reset button to put the drives back to their starting position. I'm probably just being a bit OCD.

The Moppy uses Midi files to play music, the reason is that Midi files have 16 channels so each channel can be assigned to a drive and that drive will play those notes.

Now you will notice if you start to download midi files and play them that some of them seem lame as only one or two drives at a time are playing a note not like mine where they are all dancing around. I did this by editing the midi using Speedy Midi a free midi editor. All i done was dump any channels not in use and dump channels that don't sound good on the drives then duplicate the ones that I want to play across multiple drives. Making sure to change the channel number, if you copy a channel to a new one it keeps its original channel number.

its worth noting that Moppy is limited in what it can play as the Stepper motors can only generate tones within a certain band so sometimes you will find it misses notes this can not be avoided but if you took the time you could move a note down a few octaves and make it work, I just haven;t been bothered to do that.

also Moppy will not play notes that go on for too long, so cut out long notes if you can.

Step 9: Song Requests

So I have had a couple of requests for songs which I decided I would do and put here, if you have a request then post it in the comments and I will try and do it. But remember that I cant do songs with long notes or with too high notes.

Tech Contest

First Prize in the
Tech Contest

Hand Tools Only Contest

Participated in the
Hand Tools Only Contest

Epilog Challenge VI

Participated in the
Epilog Challenge VI