MAKE YOUR OLD FLOPPY DRIVES PLAY MUSIC
An old floppy drive has a small stepper motor that moves the read head. Pulse it at the right speed and it buzzes a note. Moppy 2 turns a stack of drives into a MIDI instrument.
by Sammy1Am
AudioWorkshop
Built withESP8266Arduino
- difficulty
- ●●○○○
- time
- an evening
- license
- Apache-2.0
- repo
- repo ACTIVE331 stars
●●○○○ · an evening · Apache-2.0 · 331 stars · repo ACTIVE
WHAT YOU’LL NEED
Jump to section
COMPAREE VERDICT
Moppy 2 plays MIDI songs on old floppy drives. An Arduino sends pulses to the drive's stepper motor; the signal is basically a square wave at the frequency of the note, so the motor buzzes at that pitch. One drive plays one note at a time, so more drives give you chords. The basic build from the tutorial is simple: an internal 3.5 inch floppy drive, an Arduino Uno, a few jumper wires and a 5 V power supply. Sammy1Am uses an old ATX computer power supply because it already has a floppy power plug. You connect the drive select pin to ground, the step pin (20) to Arduino pin 2, the direction pin (18) to Arduino pin 3, and a ground pin to the Arduino. When the drive plays its startup tones, the hardware is done. Then you load a MIDI file in the Java control app; it even ships with sample songs like Tetris. The sound is lo-fi and buzzy, and that is the fun of it. Safety: the ATX power supply plugs into the mains. Do not open it, and keep the jumper on its green wire tidy.
IN THE REPO
GOOD TO KNOW
- —Licence: Apache-2.0, with an extra condition that any redistribution or derivative work must link back to the main Moppy repository (git.io/moppy).
- —The repo has the Arduino code (Moppy2-Arduino) and the Java control app (MoppyControlGUI) with sample MIDI songs; ready builds are on the Releases page.
- —Parts and pin connections are listed in the wiki's Getting Started guide and shown in the tutorial video.
- —No PCB or 3D files are needed; the basic build is just jumper wires.
- —The Arduino code also supports other instruments, such as L298N stepper drivers and shift registers.
Parts to buy
3 itemsFrom our check of the build. Exact quantities and part numbers are in the creator’s BOM.
Can I build this?
Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.
Videos
Make Your Own Musical Floppy Drives (Moppy Tutorial 2.0)10:59
Sammy1Am's tutorial (11 min, June 2020): parts, wiring one drive to an Arduino Uno, troubleshooting at 4:36 and ideas for more drives at 8:42.
More builds like this
All projectsGallery
Start here
Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.
- 1.Watch the tutorial video. (It shows the parts, every connection and the troubleshooting steps.)
- 2.Read the Getting Started guide. (Parts list, pin setup and how to program the board with the Arduino IDE or PlatformIO.)
- 3.Upload the Arduino code. (Install the TimerOne library, open Moppy2-Arduino.ino and upload. With the drive powered, you should hear startup tones on reset.)
- 4.Run the control app and play a song. (Pick the Arduino's COM port, load a MIDI file from the samplesongs folder and hit play.)
Resources
Documentation, files and community threads for this build — we link straight to the original sources and never rehost the creator’s files.
KNOWN ISSUES
- Using the wrong drive. You need an internal drive with the 34-pin connector; USB drives and internal drives from older Macs probably won't work.
- Powering the drive from the Arduino. The wiki says to use a separate 5 V supply (at least about 500 mA per drive) and not run the motor from the Arduino.
- The ATX supply won't turn on. You have to connect its green wire to a black ground wire, as shown in the tutorial.
- No light on the drive. The drive select pin is not grounded, or your drive wants the other drive select pin. The tutorial shows how to find it.
- Forgetting the shared ground. Connect one of the drive's odd-numbered ground pins to the Arduino's GND, or the signals may not be clear.
- Missing upload errors. Watch the console at the bottom of the Arduino IDE; it does not always make errors obvious.
Do I need floppy disks?
No. The sound comes from the stepper motor that moves the read head, so the drive can stay empty.
Which floppy drive works?
An internal 3.5 inch drive with the 34-pin connector on the back. In the tutorial Sammy1Am says internal drives from older Macintosh computers and external USB drives probably won't work with this method.
How many drives can one Arduino run?
One drive plays one note at a time. Per the tutorial, an Arduino Uno can easily run up to 9 drives, and up to 16 with small changes or a board with more pins.
Can I use a different microcontroller?
Yes. The wiki recommends an Arduino Uno or ESP8266, and any board that supports the Arduino framework should work. The ESP8266 can receive music over Wi-Fi. 3.3 V boards may need a transistor interface, because the drive expects 5 V signals.
Does the control app run on my computer?
The control app is written in Java, so it should run on Windows, Mac and Linux. The release includes a .bat file for Windows and a launcher for everything else.
Community builds
No community builds yet — be the first, we feature the best ones.
Discussion1
FROM THE COMPAREE TEAM
The control app comes with Tetris, Kirby's theme and a Portal song as samples. What would you play first on a stack of floppy drives?
Sammy1Am
Sammy1Am made the original Moppy (Musical flOPPY controller), now kept as MoppyClassic, and later rewrote it as Moppy 2. The GitHub account has since moved to samphonic; the old github.com/Sammy1Am/Moppy2 link redirects there. Sammy1Am's YouTube channel has the tutorial and floppy drive music videos, including a stack of RGB-lit drives playing 'Do You Want to Build a Snowman'.
DISCLAIMER
- Comparee is not the author of the projects featured here. All rights to each project belong to its creator — every page links to the original source, and we never host creators’ files.
- Information is provided without warranty and may become outdated as projects evolve. Prices are indicative bands only — always check the creator’s parts list for current costs.
- Building and operating any project is at your own responsibility. Protective equipment, safe workshop practice and compliance with local regulations are the builder’s responsibility.
CompareeTEAM12h ago
Practical notes from our check: the code is still maintained (the latest commit, June 2026, fixed compatibility with newer Java versions), and the wiki and both videos are live. The GitHub account was renamed from Sammy1Am to samphonic, so older links redirect. If you share your own build or a fork, the licence asks you to link back to the main Moppy repo.