Introduction: How to Make Musical Floppy Drives

My brother posted a video about this on facebook almost a year ago. Some old floppy drives playing Bach's masterpiece Toccata & Fugue and it got me really interested. So I read about it when the author posted a how-to on his blog and did a couple of tweaking using SammyIAm's Musical Floppy program when the project gained a lot of attention.

WHAT YOU NEED

1) Arduino - Ideally, you need the Arduino UNO but any Arduino would work. You just need to tweak something in the program with the pin assignments. In this mini-project however, I used Duemilanove. It works almost accurately as Arduino UNO and I didn't have to tweak anything.

2) Floppy Drives/Disks - Any floppy drive would work but it's a lot easier to use the 34-pin simply because it's common. Other than that, you would only be needing to determine 3 pins from your floppy. Pin assignments are available online, particularly here. Furthermore, I was trying to acquire a 5.25 floppy drive but to no avail, and ebay sells them around $20 so I said never mind about that. As a result, this project is composed only of the 3.25 floppy disk drives. You also need some floppy diskettes for this project.

3) Power Supply - Again, it depends on you. You can use any 5-volt power supply available but since an ATX power supply is just lying around at home, I conveniently used it instead.

4) CAT5 UTP Cable - Only because of the wires. I want my wires to be color-coded.

5) Breadboard - If you want a solderless-free project.

6) Soldering Iron/Lead - For soldering the pins you would need to connect your CAT5 UTP cable to, but if you still have the flat ribbon cable then good for you. Might as well use that to make it easier.

7) Cutter, Phillips/Flathead screwdrivers - For dismantling purposes.

Step 1: Prepare Your Power Supply.

Again, it depends on you. You can use any 5-volt power supply available but since an ATX power supply is just lying around the house, it would be pretty convenient to use it here. However, if you just have the power supply (without a motherboard), to activate it you need to short two wires, BLACK and GREEN as shown on the image. Connect these two wires and your power supply is then activated.

Step 2: Determine the Needed Pins for Your Floppy Drives.

Like what I said earlier, you only need to determine 3 pins to make the floppy drive sing. If you look at the back of your floppy drive you would see these 34 pins. Just check on the image to determine which is pin 1 and so on. The top pins are the even pins the bottom pins are the odd pins which is the ground. The even-numbered pins are activated by grounding them. Basically, computers have up to two floppy drives A and B. Doesn't really matter which drive you connect your wires to. If you want to set your floppy drive to drive B, then connect wires to pins 12, 11 for the ground. If you want to set your floppy drive to drive A, then connect wires to pins 14, 13 for the ground. But to avoid further complications, just select drive B, pin 12 and 11.

Another pin that we are interested in is the direction pin 18, 17 for the ground. Direction pin determines which direction to move, forward or backward. This movement is actually the one causing the low-note and high-note sound coming out of the floppy drive.

Finally, the last pins we need to connect wires to is the step pin 20, 19 for the ground which basically activates the stepper motor to move.

NOTE: If you still have the flat ribbon cable then I suggest that you use it instead of soldering wires directly to the pins of your floppy drive. Soldering them could fry the boards of your floppy but since I don't have any flat ribbon cables and connector I soldered mine. Solder at your own risk.

Step 3: Test Your Floppy Drives.

Connect your floppy to your power supply and test the stepper motor. Notice that if you connect your floppy drive to the power supply nothing is happening, that is because you need to connect pins 11 and 12 to activate it. To activate your floppy, you need to permanently connect the drive select pins 11 and 12, so you can go on twist those wires or solder them. You can easily determine if you have the wires connected. Once you connect the wires attached to pins 11 and 12, the light of the floppy drive should turn on.

Next thing you need to do is check on the direction and step pins. Connecting the green wires together pins 17 and 18 would make your stepper move forward. To activate the stepper motor you just need to tap the blue wires which is connected to the step pins. Moving the stepper motor backward, all you need to do is disconnect your green wires then activate your stepper by tapping the blue wires.

Step 4: Connect Your Floppy to Your Arduino.

Connect pins 11 and 12 (Drive Select) to activate your floppy drive. Connect pins 17 and 19 (ground pins for the direction and step of your floppy drive) to the ground of your Arduino. Connect direction pin 18 to pin 3 and step pin 20 to pin 2 of your Arduino.

For the second drive, all you need to do is connect the direction pin 18 to pin 5 and step pin 20 to pin 4. Third drive's pin 18 to pin 7 and step pin 20 to pin 6 and so on...

Step 5: Prepare the Sofwares.

WHAT YOU NEED

1) Arduino Software - You can download the software on their website.
2) Timer1 - You can download the following here. Once done with the download, you need to copy this to the library folder under Arduino.
3) JDK 7u4 with NetBeans 7.1.2 - You can download the following here.
4) Moppy Software (Java/Arduino Code) - Program developed by SammyIAm. You can check it out here.
5) RXTXcomm Serial Driver - Download the following here.

Step 6: Establish a Connection to Your Arduino.

Once you're done downloading and installing everything, especially the Arduino software, Java with Netbeans, establish a communication between your Arduino and computer. You may also need to set-up everything on the hardware side. Connect your floppy drives and power supply.

Before copying the code, make sure that the Timer1 file is saved to the library folder of your Arduino.

Step 7: Open NetBeans.

Open your NetBeans and load-up the MoppyDesk project developed by SammyIAm. You can choose to open it through his github or just download the file below. Just make sure that once you download the following file, copy the file to the NetBeansProjects folder usually located at My Documents for Windows. Once you have the MoppyDesk project open, run it by clicking on the green play button. This is where you would encounter the RXTX problem, if not then good for you a new window should appear. However, if you do encounter it, download the RXTXcomm,jar and the rxtxParallel.dll / rxtxSerial.dll files via this website. After downloading, just be sure that you copy the following to its respective folders:

RXTXcomm.jar goes in \jre\lib\ext (under java)
rxtxSerial.dll goes in \jre\bin (under java)

If you still encounter the problem, just message me and we'll try to sort it out or you could just google rxtx issues. I'm sure you'll find solutions on this online.

If all goes well, a new window will appear. The MoppyDesk window will then ask for the Arduino port. Just choose the correct port for your Arduino, load the midi file and hit on START.

Congratulations!!! You have now a musical floppy...

Some tips on midi file:

Choose the simplest midi file as possible. It would be ideal to choose something which is moderate at speed and something that does not sustain a note for too long.

Also, you may want to remove the cover of your floppy drives to make it a bit louder. Some latest manufactured floppy drives designed to make less noise, so if you encounter such, I suggest that you remove the cover or set-up a microphone. You may also choose to edit the audio and amplify it a bit and reducing the background noise helps too.

Comments

author
PatrickA115 (author)2017-06-01

Hey, i've got some problem i haven't read of yet. My drives are running just fine, but when the parts get more elaborate and 2 or more drives are running i always get extreme stuttering in some drives. The problem is not the drive itself since i switched them. And can't be the powersource since that is extremely oversized for the task. Does anybody have an idea or discovered the same problem?

author
DanielkoT (author)2017-03-12

i have a problem with it, it dosent work, im getting serial to my arduino and to the floppy drive and it dosent do anything

please help

author
DubstepK (author)DanielkoT2017-03-14

Have you got Netbeans working?

author
DanielkoT (author)DubstepK2017-03-14

I checked the signals on floppy connector from arduino (i made it to a conector) and there were signals at the correct pins and also the floppy drive led is on

author
DubstepK (author)DanielkoT2017-03-17

Just so you know someone in the comments said the pin diagram was wrong, that might of been the case. read the comment!

author
druchivld made it! (author)2015-08-10

It was a easy build. Nice instructible, one problem tho, the pin diagram is wrong, those are not the pins. other than that a job well done.
i built mine with 4 drives. by far the biggest probl em was conecting all the drives to the power supply because I lacked adaptor cables ( molex to floppy molex aka 4 pin )

temp_-3817201.jpg
author
RobertoC46 (author)druchivld2017-02-06

Hey man so the pin diagram is wrong or what??? I really wanna make this proyect so if you could plase tell me what is wrong whit the diagram i will be very thankful.

author
Alex2004 (author)RobertoC462017-02-14

The two red wires on the diagram are wrong. You need to connect pin 11 with pin 12. (NOT PIN 13 WITH 14.)

author
RobertoC46 (author)Alex20042017-02-25

Nice dude,I really thank you, this will be my final proyect on IT class

author
Alex2004 (author)2017-02-14

It is 1AM. Now I found my mistake. Where did you get the Arduino code from?

author
DavidC1081 made it! (author)2017-02-11

nice build! i plan on doing a 6 floppy set up, its by far less confusing to solder due to the twist in the ID34 cable, but then again, with cable its less mess!

DSC_0050.JPG
author
jackemled (author)2017-01-08

Could I do this using a Raspberry Pi instead of an Arduino?

author
vallai (author)jackemled2017-01-11

I think you can, but the Moppy software is designed for Arduino. The first 3 steps will be identical, but then you have to find a program for Raspberry Pi or make your own

author
jackemled (author)vallai2017-01-30

Ok, thank you.

author
PixelGeek (author)2016-06-20

Arduino: 1.6.5 (Windows 8.1), Board: "Arduino Duemilanove or Diecimila, ATmega328"

sketch_jun20b.ino:1:22: fatal error: TimerOne.h: No such file or directory

compilation terminated.

Error compiling.

This report would have more information with

"Show verbose output during compilation"

enabled in File > Preferences.

please help... where is it supposed to go?

Also, NOTHING WORKS. (except the drive) i started this project about a year ago, and i still cant make it work. nothing on the software side is working, and im sure its my fault. ive never done anything like this before. and a bought the Arduino board just to do this project. Please, SEND HELP!

Screenshot (1).pngScreenshot (2).pngScreenshot (4).pngScreenshot (5).png
author
housamz (author)PixelGeek2017-01-14

I got the same error, the solution was that you need to create a folder/directory with the name "TimerOne" in "libraries", and then put all the files from the zip file inside that direcoty.

author
vallai (author)2017-01-11

Thanks a lot ! It has been a long time I wanted to do this project.

If like me you have trouble using Moppy, there are instructions here : https://github.com/SammyIAm/Moppy#configuration-and-use

author
Albertthecomputerguy (author)2016-10-16

Amazing! I finally got it to work :D

author
paulrobert27 (author)2016-07-21

Good Night.

I have a question: I haven't a power supply of PC, however I'd like to use a power 5v dc, actually, a battery 5v cc. The issue is: What electric current is it takes to feed a step motor of the floppy drive? Thanks in advance.

author
Quifisto (author)2016-06-03

This is so coooool!!!

I spent an entire afternoon trying to get this to work on the software side, because the drives didn't even move. At 1AM I discovered I had the ground and Step/Direction wires the wrong way around. Eventually I got it all working and added a second drive. It works great!

Thanks for this great instructable.

author
Mike Fury 2 (author)2016-01-04

Wow! Really Cool! imagine a giant piano organ full of floopy drives :D linked to the piano keys for manual playing or automated by arduino. Nice Job.

author
pvoss1 (author)Mike Fury 22016-05-26

Yes, was thinking similarly, in terms of a MIDI controller. :)

author
pvoss1 (author)Mike Fury 22016-05-26

Yes, was thinking similarly, in terms of a MIDI controller. :)

author
pvoss1 (author)2016-05-26

Has anyone interfaced these with a MIDI controller, corresponding to notes on the chromatic scale? n-note polyphony, where n is the number of drives used. :) Would be cool.

author
AlexC183 (author)2016-01-03

WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.8.0_05\jre\bin\rxtxSerial.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform thrown while loading gnu.io.RXTXCommDriver
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.8.0_05\jre\bin\rxtxSerial.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform

author
RyanS223 (author)AlexC1832016-05-08

It's pretty late, but I had this error too. If you're on Windows (the only way I know how to fix this) open Start and type in "regedit" Go to HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft and make a new folder called "Prefs" and you're done.

author
RyanS223 (author)AlexC1832016-05-08

It's pretty late, but I had this error too. If you're on Windows (the only way I know how to fix this) open Start and type in "regedit" Go to HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft and make a new folder called "Prefs" and you're done.

author
JasonC224 (author)2016-03-31

EVERYONE WHOS REPORTING BUGS, please raise the issues on github. thanks.

i dont maintain this project, but as a github-er that writes other projects, this is the most direct and effective way to sort issues. link here:

https://github.com/SammyIAm/Moppy/issues

author
shadowdragon2108 (author)2016-03-10

I'm getting an error on NetBeans saying that gnu.io does not exist.

author

run it on linux!

author
ocotran (author)2016-01-29

Keep getting this error message and I saved TimeOne in library:

Arduino: 1.6.7 (Windows 10), Board: "Arduino/Genuino Uno"

C:\Users\Oscar\Documents\Arduino\Moppy\Moppy.ino:1:22: fatal error: TimerOne.h: No such file or directory

#include <TimerOne.h>

^

compilation terminated.

exit status 1

Error compiling.

This report would have more information with

"Show verbose output during compilation"

enabled in File > Preferences.

author
imazzoli (author)ocotran2016-02-01

Have you installed the library?

author
AlexC183 (author)2016-01-03

I have this problem when I run the MoppyDrive and I relly need help!!

WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.8.0_05\jre\bin\rxtxSerial.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform thrown while loading gnu.io.RXTXCommDriver
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.8.0_05\jre\bin\rxtxSerial.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform

thanks for helping me!!

author
GeorgeTsak (author)2015-06-28

I would like to ask, if putting a floppy disk into the the floppy drive is required or optional. No music will be played if the floppy disk is not inserted? Thanks.

author
JurajB (author)GeorgeTsak2015-10-10

It's optional

author
JurajB (author)2015-10-10

I made it and played some songs as other youtubers, but I don't see that someone uploaded Sweet Child o' Mine so here it is https://www.youtube.com/watch?v=Zr24s9YTMAk

author
UlliE1 (author)2015-05-15

author
edbb (author)2015-05-08

Hi

I am getting the following error message, i copied rxtxparallel.dll and rxtxserial.dll under bin and rxtxcomm under ext..

please let me know what can i do to fix it see below the error:

ant -f "C:\\Users\\Ed\\Downloads\\Darth Vador Musical Floppy\\MoppyDesk\\MoppyDesk" -Dnb.internal.action.name=run run

init:

Deleting: C:\Users\Ed\Downloads\Darth Vador Musical Floppy\MoppyDesk\MoppyDesk\build\built-jar.properties

deps-jar:

Updating property file: C:\Users\Ed\Downloads\Darth Vador Musical Floppy\MoppyDesk\MoppyDesk\build\built-jar.properties

compile:

run:

java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path

at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)

at java.lang.Runtime.loadLibrary0(Runtime.java:849)

at java.lang.System.loadLibrary(System.java:1088)

at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:123)

at moppydesk.MoppyMainWindow.updateComSelectionMenu(MoppyMainWindow.java:55)

at moppydesk.MoppyMainWindow.<init>(MoppyMainWindow.java:43)

at moppydesk.MoppyUI.startup(MoppyUI.java:19)

at org.jdesktop.application.Application$1.run(Application.java:171)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)

at java.awt.EventQueue.access$300(EventQueue.java:103)

at java.awt.EventQueue$3.run(EventQueue.java:706)

at java.awt.EventQueue$3.run(EventQueue.java:704)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

author
Pinkam (author)2015-02-25

how would i hook up 8 i have a bread board an uno and a working power supply

author
daniele.massai.7 (author)2015-01-30

i'm using arduino for the power supply.. it works.. why i must take an external power supply? and u have done a mistake for the red wire. it must be connected on 12-11 and not on 13-14. sorry for my english

author

The Arduino's 5v regulator is designed to provide power for the ATMega and communication, but no recommended for driving motors. It may work, but you're risking burning out your Arduino.

The red wire needs to be connected to 12 if your floppy is set to "Drive B", but 14 if it's set to "Drive A". (The tutorial is a little confused on this point though)

author
mikec3 (author)2015-02-04

Do i need to worry about the twist in the ide cable i am using? it changes where pins go on the other side.

author
Sammy1Am (author)mikec32015-02-20

The twist only really affects where the "Drive Select" pins are located. The STEP and DIRECTION pins should still be the same. You might have to poke around a bit to find the drive select pins, but the LED on the drive should come on when you've found them.

author
timfrans (author)2015-01-10

why do you use a cat5 UTP cable? why not for example cat3?

author
nik.man.54 (author)2014-11-16

are you sure about the connections you wrote in the article? I connected many times and I've tried avery combination, the arduino code compiled, if i manually connect the drive wire the servo move a bit but if i connect everything to the arduino nothing moves.

author
dj505Gaming (author)nik.man.542014-12-26

In the arduino program, have you selected the proper board under "tools" and "board"?

author
furrysalamander (author)2014-10-12

The motor only briefly spins when I connect the power, then stops. If I sit there, plugging, and unplugging the power, it will *kind of* work, but I have no idea what's going on.

author

It properly resets the drive when you plug it in, but it doesn't play music.

author

Aha! It seems to be a problem with the direction set pin. It will work in one direction, but it doesn't flip.

author

I have no idea why I can't get my drive to reverse the motor.

About This Instructable

383,093views

304favorites

License:

Bio: I love internet reading. I think I have acquired more knowledge from the internet than I have and probably ever will from a standard institution ... More »
More by Analogue-Chick:Make Your Images Interesting with Galaxy OverlayControl Arduino Wirelessly with MATLABSteampunk Bonsai
Add instructable to: