Introduction: DIY Floppy Drive Piano (Floppiano)
There are many Instructables and videos on the internet showing how to build a musical floppy drive, but I have never seen anything about building a floppy drive piano. Because I like playing the piano and building electronics, I figured that building a Floppy drive piano would be the perfect project. This Instructable will show you how you can build your own Floppy drive piano and how to program it. Too see a working model of the floppy drive piano, watch the YouTube video below. Lets get started!
Step 1: Materials
For this project, you will need the following materials. Most of these materials can be salvaged from old computers and other outdated electronics.
- Floppy Drive
- Computer PSU(Power Supply)
- 2N3904 Transistor x2 (Almost any NPN transistor will work)
- Breadboard
- Connector wires
- Arduino(Almost all Arduinos will work for this project, I used an Arduino Uno)
- Momentary Pushbutton x10
- 10 Kilo-ohm resistors x12
- Popsicle sticks
- PLA Plastic Filiment
- Ribbon Cabling
Step 2: Tools
For this project, there are no special tools needed for this project except a 3D printer. Here are the tools needed:
- Soldering Iron
- Wire Srippers
- 3D Printer
- Hot Glue Gun
- Wire cutters
- Needle nose pliers
Step 3: Creating the Keyboard
To make a Floppy Drive piano, a keyboard is the most important part. You will need to 3D print the keys all separately and then the keyboard base as a whole. The keys and base should be printed in ABS plastic due to it's flexibility. The STL files are are included in this step. The keys will then be hot glued into their holes on the keyboard base. Momentary pushbuttons need to be inserted into the holes on the underside of the keyboard. Finally, Popsicle sticks need to be glued in place around the keyboard to prevent the electronics from touching the ground and to give the board structural support.
Step 4: Wiring the Keyboard
To wire the keyboard, use the above circuit diagram. Each button needs to have one pin going to 5 volts, and one pin going to one of the Arduino's digital pins. Each of the Arduino's digital pins need to be pulled down to ground by a 10k resistor to prevent false readings due to background electromagnetic radiation. ribbon cable can be used to connect the keyboard to the Arduino.
Step 5: Wiring the Floppy Drive
To wire the floppy drive, you need to use 2 NPN transistors, I used 2N3904's, but almost any NPN's will work. Wire pins 13 and 12 to the common ground. Wire pin 18 to the collector of one transistor and pin 20 to the collector of the other. Wire the emitter of each transistor to the ground of the floppy drive and the Arduino. Add a 10k resistor from the base of each transistor to Arduino pins 12 and 13 respectively. Finally, add a momentary switch between the resistor and the Arduino pin of the direction control circuit.
Step 6: Coding
To code, you will need to just run this code on your Arduino. It is embedded in Codebender below. Feel free to change and modify the code to your own desires.
Step 7: Playing Your Floppiano
To play your Floppiano, just upload the code and have fun! Use the pushbutton to switch direction of the floppy drive while you play it. You can remove the pushbutton and make the arduino switch directions for you, but I never got around to doing this. Feel free to comment any questions.
11 Comments
7 years ago
MIDI anybody? :D
7 years ago
I just made my first set of HDD stereo speakers that I've been using with my Nexus Q to drive them. What do you think about using HDDs for this instead of floppies? BenG30 I was totally thinking of the same thing for the direction switch, way to go, nice execution!
7 years ago
Great work..
Just a though to remove the direction switch..
First add the code start(outside the loop) make the drive head return to the start, by setting the direction pin output from the arduino low for 2-3 second(this will drive the head to the end of it's stop)
Add a variable called Direction, make it boolean(high or low/true or false)
Add a variable call count, integer
At the start of the If statements add(this is written in Pseudo code)
If Count >= 50 then
Count =0
Direction = Direction XOR True (this will change a true to a false and a false to a true, you may need to swap this to High)
digitalwrite (direction_pin, Direction)
Elseif..
This section will check how far the motor has moved and swap it's direction when it has moved enough, you will need to change the 50, via trial and error(keep increasing it until you hit the end stop
now go to your if statments
now in each of the key statements
delay (.1)
count = count +1
Now each time a key is pressed and the head moves, it increments the count for the check earlier in the code...
Hope you can use this idea... and can understand my pseudo code
Reply 7 years ago
Thanks for the help and the code(I understand your pseudo code)!! I have tried for a while to make the floppy drive reverse itself by itself, but I could never get it to work. I never considered using the code you suggested. I will try to add your code into my code to get the floppiano work. I will let you know if it works. Thank You!
Reply 7 years ago
If the code fails, let me know... I've got an idea for a relay latching system... uses two switches and a DPDT relay... this will work as it does what your switch deos already..
Reply 7 years ago
Also, if you remove the else statements(just lots of non nested If statements) you could play multiple keys at once in a, sortof making chords.... may not sound right.. but an idea nonetheless..
7 years ago
Nooooooooooo!!! XP this was my idea! XP. I wanna make a floppy drive organ, using an array of 100 floppy drives
Reply 7 years ago
YES!!!! DO IT..... One drive per note...
Reply 7 years ago
You should try making a floppy drive organ with 100 drives, that would sound awesome! Good Luck!
7 years ago
nice and a new idea
Reply 7 years ago
Thank you!