Welcome to my instructable for musical floppy drives.
You probably came here as a result of YouTube video's of your favorite songs being played on floppy drives. If not, I'll include a video of my own setup playing, and a brief explanation of how it works. Then you'll also immediately see what we're making.
So now that you know what we're making, lets summarize what we need.
Step 1: Requirements
To build this thing you will need:
1) Floppy drives (duh..), how many is up to you, the more you can get the more detail you can put into your songs. I use eight drives, mostly because the Arduino board (I'll get to that later) I have supports eight drives, plus eight drives is enough most of the time to get all the detail in a song. Also, if possible, try testing a few drives before taking them home (I'll tell you how), try to get the loudest you can find, and try to avoid big volume differences between your drives. Your setup will sound slightly less awesome when one or two drives are way louder than the rest, believe me, I know.
2) An Arduino board, for those who do not know what that is, it's like a small motherboard you can program yourself. Many creative people use this to prototype systems before building them for real. For more information on them check www.arduino.cc . Any Arduino board should work for our project, but I only know for sure it will definitely work on the Arduino UNO, and the Arduino YUN (The YUN uses slightly altered code, I'll provide it when we need it).
3) A power supply, the floppy drives need power, and the Arduino itself cannot provide enough for eight drives, barely enough even for one. So we need an extra power supply to power everything. If you have an old, unused computer lying around in the attic, get the power supply from that thing and that will work, otherwise look in thrift shops, they usually have plenty. do make sure it has the bunch of cables coming out of the back end because we need that to be able to power everything.
4) Wires, we'll need to connect everything so we need quite a few wires to make everything work. here is a list what wires we need and for what:
- To power up the drives we need floppy power cables (image 2), you need as many of these as you have drives. it does not really matter in what way you do it, as long as you can connect enough of these to your power supply.
- We need to be able to connect the floppy wires to the power supply, we can do that with Molex splitter cables (image 3 and 4), or - like I did - solder the necessary cables onto the existing cabling (I did this because I couldn't get the Molex cables very easily, I'd recommend using those. But I'll include an explanation of how to solder the cables together just in case)
- Ribbon cables (or another plug that converts the floppy input from male to female.
- Lots of male to male jump wires, preferable around 10 cm in length and in varying colors (to keep track of which wire does what).
5) Optional, a breadboard. Cable management can get a bit messy with a large amount of drives, you can organize it much more cleanly with a breadboard. However I did not use one in my final setup because there simply wasn't room in my case for the extra cables.
1) Arduino software. This is needed to write, edit and upload code for the Arduino board, you can download and install it here: https://www.arduino.cc/en/Main/Software.
2) "M(usical fl)oppy" or "Moppy" Arduino code and desktop application. You can download it here: https://github.com/SammyIAm/Moppy. The "Download ZIP" button on the right hand side will download the entire thing.
3) TimerOne Arduino code library. This is needed to make some of the code work, download the latest version here https://code.google.com/p/arduino-timerone/downloa...
4) JDK 7u80 with NetBeans 8.0.2. The desktop application we're using runs in this. You can download and install it here: http://www.oracle.com/technetwork/java/javase/down...
Step 2: Getting Your Power Supply Set Up.
A power supply normally doesn't stay on on its own, Its usually plugged into a motherboard that sends a signal when it needs to activate. We can't send that signal the same way, so we need to make it think it needs to stay on constantly.
As you can see in the picture I looped the green wire in the large plug on the power supply back to a black wire. It's very important you loop the green wire, making a mistake here might break the power supply. So once more just to be clear: loop the green wire back into any black wire.
If you plug in your power supply now, and activate it with the switch on the back, the fan should start turning. If it does you are ready to test your drives.
Step 3: Testing If Your Drive Works.
If you have a power supply similar to mine you'll already have a floppy plug attached to your power supply, in the rare case you don't, complete step 6 for at least one floppy connector and come back here.
We're going to do some wiring with the drives to test if the step motor reacts, and to make sure we have the right wires plugged into the right places.
I have made a photo of the ribbon cable we're using. You can see that in this ribbon cable a couple of wires have been twisted around, so we need to use different pins than you might have seen in other tutorials.
-As you can see I have marked the pins on the ribbon cable we need. The red wire pins need to be connected to each other to "select" the drive, this basically means that the drive is turned on, ready for use. If you loop a red wire between these pins, and you have your power supply plugged in and running, a light should light up on the drive, if it does not, check your power supply or your wires on the ribbon cable.
-If that's done connect and disconnect the green wire pin to a black wire pin it repeatedly, if it reacts you have the right pin. Now unplug the green wire.
-Now connect the blue wire pin to a black one it. try the green wire again, if the drive moves the in the opposite direction then it did before, it works perfectly.
If you're having trouble with this, or you're not using the same cabling that I do, the second image shows which pins take which wires. Analyze what you are using to connect the drives' wires and try to do the steps above with the connectors you're using.
If you got everything working the way it should, you can continue.
Step 4: Wiring Up Everything
The drives have power and work as intended, now we can wire it up to the Arduino so we can test the software.
If you have only one drive for this test the easiest way to test it is to connect the green wire to pin number 2 on the Arduino board, and the blue wire to pin number 3. these 2 pins form channel 1 (channels have to do with the music files we're going to use, i'll get to that later). If you have more drives to connect simultaneously, connect the second one's green wire to 4 and its blue one to 5, and keep counting up for the others.
When you reach the last numbered pin on your Arduino board, you can use the analog pins as well. With these we start counting at A0, so look closely where that pin is on your Arduino board.
If those are wired up we need to connect the ground - AKA black - wires to the GND pin on the Arduino. If you have only one drive, connect the black wire directly into the GND pin and you should be fine. If you have multiple, connect the black wire from one drive into a ground pin of another drive, then connect that one to the next, repeat this until you reached your last drive, then connect this one to GND pin of the Arduino.
You have everything wired up, now we can move onto the software.
Step 5: Setting Up the Arduino.
So you've tested at least one drive, wired it up, you've downloaded the necessary files and installed the Arduino and Netbeans software. Now we need to upload the necessary code to the Arduino board.
In the Moppy zip file you downloaded will be the code we need. Extract the zip in a new folder and go to "Moppy-moppy-advanced>Arduino>Moppy", in this folder you'll find "Moppy.ino". Open it using the Arduino software.
If you're using a Arduino UNO you can scroll down to the next part of this step, the default code will work just fine. If your using a Arduino YUN, or the default code does not work for your 7th and 8th drive, download and open the MoppyYUN.ino file I provided instead of the default file in the zip.
Now plug in your Arduino to your computer using a USB to micro USB cable (other connection cables that fit your Arduino should work just fine to). Inside the Arduino software program, go to "Tools>Board" and select the board you're using. Now go to "Tools>port", if your Arduino is plugged in, it should be available to select here, do so. Your Arduino is now connected to the program, if you press the upload button (the round button with the arrow pointing right) the code should upload to your Arduino. You'll know its uploading when the red light on the Arduino starts lighting up.
Up next we need the desktop application. Open Netbeans, go to "File>Open Project" then find the folder you extracted the Moppy-moppy-advanced.zip in and go to "Moppy-moppy-advanced>Java" and open MoppyDesk. Run it by pressing the green arrow button.
An application (see image) will appear on screen, here you can select your midi song and change some settings to your liking.
Select the channels you have drives connected to. If you have one connected to pin 2 and 3 activate channel 1, for 4 and 5 select channel 2 etc. Now press the connect button on the bottom. To quickly test if it worked, press "Stop/Reset", the drives should buzz loudly (don't worry if they reacted very loud, they're supposed to do that).
We're going to load a test midi that came with the ZIP. click "Load Sequence" and browse to your "Moppy-moppy-advanced" folder, now go to "Java>MoppyDesk>samplesongs" and select a song (I recommend Tetris as it is the most recognizable).
Press play and the drives should start playing.
NOTE: the Tetris test midi only has 4 channels, which means that if you have more than 4 drives selected, only the first 4 will play.
If it worked your practically done! Repeat the previous steps with the drives you have yet to wire up and you should be good. If you don't have the available floppy power connectors the next step will help you attach more.
Step 6: Attaching More Floppy Power Connectors
If you're power supply doesn't have enough floppy power connectors, you can attach more using either Molex splitter cables, or you could solder the power cables to the existing wiring. I'd recommend connecting everything with the Molex cables, but if you have no other option, this is what you need to do:
The floppy power cables all have a red wire, 2 black wires and a yellow wire. As you may assume, the red and yellow wires need to be soldered together. The black wires however, I payed more attention to since I don't know if it matters which one connects to which. I soldered the black wire next to the red wire to the same one on the power supply cables, and repeat the same thing for the yellow one.
Make sure that once your done, you isolate the exposed wiring with isolation tape or something similar. Shorting out these wires may destroy the power supply.
I'd recommend doing this with somebody who knows what he's doing, if you don't know it yourself.
Step 7: Enjoy Your Setup!
If everything went right, you now have a complete musical floppy drive setup.
Here is a small library of songs you could try and play on your setup: https://github.com/coon42/Floppy-Music--midis-.
Once downloaded and extracted somewhere, go to "midi>finished>MrSolidSnake745" and select the amount of drives you're using, or a number below the amount you're using. MrSolidSnake is a youtuber who has uploaded many floppy drive songs, these are some of the files he edited and used.
If you wan't to edit your own songs, you can using midi editing software, I use a combination of "Speedy midi"(free), "Anvil Studio"(free) and "Ableton Live" (costs money).
If you edit your own midi's make sure that each channel contains only 1 note at any given time during the song. Drives can't play multiple notes simultaneously. Additionally, you might want to work with low notes, as higher notes might not be displayed will by the drives.
Thank you for visiting my instructable. I hope it helped you.
Jeroen van Haperen