Having built a 16 Drive set of Musical Floppy Dives, which has been done before by other people I thought it might be fun to double up the drives and see if there would be any improvement in sound. So the plan is to use 32 Drives on 16 Channels, as far as I am aware this has not been done.... yet.
It also gives me an excuse to put up more youtube videos ;-)
Youtube Channel - Please Subscribe
Step 1: Videos
Before I go in to the how it was made part and listing all the materials I thought you might want to cut right to the fun bit, the videos of it playing music.
I chose a load of theme tunes to TV shows and Games mainly as they are recognizable and you can be slightly nostalgic.
Step 2: Parts
Prototype Circuit Board's
2 x Arduino Uno's
Male Header Pins
Female Jumper Wires
32 x Floppy Disk Drives
16 x Floppy connectors
Molex Power Splitters
PC Power Supply Unit
Soldering Iron, gas or electric
Soldering Iron Stand
Helping Hands with Magnifier
Step 3: Making the Connectors
Snap off the Header pins, you will need 6 sets of 4 pins.
I used a couple of pieces of Prototype Board to keep the pins lined up, 3 sets of pins next to each other, 1 set on their own and another 2 together.
Snap off a piece of prototype board about 9 columns wide, using a wire brush, brush the copper surface to remove the oxidized layer of copper. This will make it easier for the solder to stick.
Put the board on top of the pins and solder them tot he board.
Take a 3 pieces of wire and strip the insulation off them, we need to solder them on to the board to link the set of 3 lots of pins together and to link the 2 set of pins together.
we will be needing 16 of these connectors one for each channel.
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: Wiring It All Up
Split the jumper wires in to sets of 3, you will need 2 sets per drive so 64 sets of 3 in total. and 16 sets of 2 wires and 16 single jumper wires.
connect one set of 3 wires to the ground pins for the light, direction and step and connect the other end to the ground header pins.
connect the other set of 3 wires to the live pins for the Light direction and step.
take the wire for the direction and connect it to the center set of pins.
take the remaining 2 wires and connect them to the last set of pins which are the step pins.
take a single wire from the ground pins on the connector and connect them to the ground on the Arduino.
Take a pair of wires and connect one to the step pins and one to the direction pins, the other end you need to connect the step to pin 2 and the direction to pin 3 on the Ardunio. for the other connectors you will need to to connect them to the next pins along. The last 2 connectors will need to go on the analogue pins.
on each connector you need to run a wire from the ground pins to the next connector, so connector 1 is connected to the ground on the Arduino, and connector 2 is connected to connector 1 and so on.
Step 7: 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.