I started working on this project about a week ago. The end goal of it is to be able to use a MIDI controller of any kind and have it send output to floppy disk drives to be “played.” The principle behind it is the idea of moving a stepper motor at a certain frequency to obtain an audible note. Using a MIDI keyboard to “play” stepper motors is not a new idea, but I’d like to try it out to learn some new things along the way.
I will be basing this project off of the work done by SammyIAm in his Moppy project. The first thing that I have done so far is to reproduce in hardware what he has done on his end. This part was made simple both by forking his code from GitHub and by following along in this instructional video that he has posted to his YouTube account. Next up, I started collecting drives from my house, the hackerspace that I am a member of, and from kind donations from individuals (thanks, jedijf!). I then got to work making some custom cables with 34 pin IDC connectors and cat5 cabling. That was nothing short of a pain in the ass to make 8 cables, but it sure looks pretty! I then had the idea of throwing all of these cables into a custom interface board, kind of Arduino sheild-ish, to make a really clean build. This is where things started to get hairy, but I didn’t know what I was setting myself up for.
So, being that I wanted to have a MIDI controller hooked up to this, I thought that I would bust out my trusty MIDI shield from SparkFun to connect from controller to Arduino. I could have used an Arduino Uno, but I thought a Mega would be better suited for more drives and a custom interface board. Well, I added some headers to my interface board and they fit in just fine at the end of the Mega in the even numbered row of pins 22-53.
Now, the way that the original Moppy software is written assumes that you’ll be using 8 drives connected to pins 2-17 and that the even numbered pins are connected to the step control pin on the drive, while the odd numbered ones control the direction the drive head will be moving. Not only am I just using the even numbered pins from 22-53 for both functions of the 8 drives, but I have my direction pins coming before the step control pins. This all adds up to a large re-write of code. I plan on re-vamping a lot of it by moving chunks off into their own library so that the user can decide any which way to wire up the Arduino board with any number of drives their mcu can accept.
At this point, I believe that I have my Arduino code up to date and ready to rock (ha ha), but I can’t test it yet because the Java side of things is supposed to be telling the Arduino which pins to be toggling for playback. Enter large problem number two: I do not yet know Java. This hasn’t proved too difficult though, because I have a pretty good grasp on general programming theory, so I can read it confidently and know how to look for answers via google if I run in to questions.
I can say that I am learning a good deal of information while taking on this project and I’m not even back at the point where I was about a week ago when I tested the software for the first time. Gotta get this custom/rearranged hardware up and running, then rewrite the code into a library, touch up the Java to work with new Arduino code, and then I can start messing with playing these drives live.
Think I can get it done in a month’s time??