Skip to content
SammyIAm edited this page May 8, 2018 · 2 revisions

Why a new repo instead of a branch?

2.0 will involve significant rewrites of the majority of the code, and the new message protocol will not be compatible with existing Moppy projects. It didn't make sense to make this a "branch" of the legacy code if no future merging was possible / even made sense.

What's different?

The primary goal was to resolve some of the shortcomings in my first design that were highlighted as users tried to contribute their own features / improvements. In short, 2.0 should keep the out-of-the-box experience as easy or easier than the original version, but allow for significantly more advanced features to be added without compromising that experience.

Specific new features include:

  • Expanded messaging protocol to allow for arbitrary message payloads, and more than 16 drives (devices).
  • Javascript-able MIDI event mapping allowing for runtime re-programming of events (this should help solve a lot of the note/range feature requests)
  • Moved MIDI-note -> Period conversion logic to the Arduino code, which should make it easier to implement changes there for different types of devices (e.g. solenoid drum-sets and scanners)
  • Additional troubleshooting features like a startup sound, a ping command (to confirm communication between PC and Arduino), and an application log.

Will Moppy run on <Linux, Mac, Android, &c.>?

Probably (mostly) yes! The control software is written in Java with very few dependencies (basically just serial communication), so if it can run Java, it should run. I've tried to keep the core components in the MoppyLib library so if the included ControlGUI program isn't suitable for your target system (a headless system or Android phone for example), it should be relatively easy to leverage MoppyLib to write your own control scheme.

How about an <Arduino Mega/Leonardo/Nano, LattePanda, &c.>?

Also probably (mostly) yes! The floppy drive interface expects 5v TTL so any devices that run at 3.3v might need a transistor interface. Moppy uses the Arduino-targeted TimerOne library for interrupts as a central part of the note-generation process, so if you want to port this to a non-Arduino board, most of the lifting will probably be finding a substitute for that.

Can I...

Add feature X?

Absolutely! Hit that fork button, and play away! My primary concern when merging code back into the main repo is whether or not the new code will confuse / complicate the initial out-of-box experience, so consider adding your features with optional flags or as separate classes.

Modify and redistribute Moppy?

Sure! Be sure to read and abide by the LICENSE file when you do though

Get some help or ask a question?

You already have! 😛 But you can ask another one in the issues area. If you see a similar issue, feel free to jump into the thread but otherwise start a new issue for your new question.