Learn more
Please note that GitHub no longer supports Internet Explorer versions 7 or 8.

We recommend upgrading to the latest Internet Explorer, Google Chrome, or Firefox.

If you are using IE 9 or later, make sure you turn off "Compatibility View".

Musical controller for an Arduino-floppy drive set up.

branch: moppy-advanced
Switch branches/tags
Nothing to show
README.txt
                                  _       _                               _ 
  /\/\   ___  _ __  _ __  _   _  /_\   __| |_   ____ _ _ __   ___ ___  __| |
 /    \ / _ \| '_ \| '_ \| | | |//_\\ / _` \ \ / / _` | '_ \ / __/ _ \/ _` |
/ /\/\ \ (_) | |_) | |_) | |_| /  _  \ (_| |\ V / (_| | | | | (_|  __/ (_| |
\/    \/\___/| .__/| .__/ \__, \_/ \_/\__,_| \_/ \__,_|_| |_|\___\___|\__,_|
             |_|   |_|    |___/                                             

by Sammy1Am

Moppy is a M_usical Fl_oppy controller program built for the Ardiuno UNO.

This version attempts to improve upon the original Moppy by adding additional functionality including:

- MIDI-IN support
- Per-channel output control
- Support for multiple Arduinos/MIDI devices



        __  ___                     ___    __       
| |\ | /__`  |   /\  |    |     /\   |  | /  \ |\ | 
| | \| .__/  |  /~~\ |___ |___ /~~\  |  | \__/ | \| 
                                                    
                                          
The Arduino code requires the TimeOne library available here: http://www.arduino.cc/playground/Code/Timer1

You will need to follow the directions in the appropriate Java/SerialDrivers folder for your system to install the serial drivers prior to running Moppy.

Upload the included Arduino code to the Arduino of your choice, and open up the included Java code in your favorite IDE.  This code includes a NetBeans project for your convenience, so you should be able to open the project directly in NetBeans.


           __   __             __   ___ 
|__|  /\  |__) |  \ |  |  /\  |__) |__  
|  | /~~\ |  \ |__/ |/\| /~~\ |  \ |___ 
                                        

I built Moppy using an Arduino UNO, though it should work just fine on most Arduinos.  The pins are connected in pairs to floppy drives as follows: Even pins (2,4,6...) are connected to each drive's STEP pin, the matching odd pins (3,5,7...) are connected to the each drive's DIRECTION control pin.  So the first floppy would be connected to pin 2 & 3, the second floppy to 4 & 5, and so on.

Some pinout information can be found here: http://pinouts.ru/Storage/InternalDisk_pinout.shtml

Make sure you ground the correct drive-select pin, or the drive won't respond to any input (just connect the drive-select pin on the floppy to the pin directly below it).  You can tell when you have the right drive selected, because the light on the front of the drive will come on.  

Also, it's VERY IMPORTANT that your Arduino is grounded with the drives, or the drives will not register the pulses correctly.  To do this, make sure that the GND pin on the Arduino is connected to the odd-numbered pin below the STEP pin on the floppy (i.e. if the STEP pin is 20, connect the Audnio's GND pin to Floppy-pin 19).  You might need to do this for the DIRECTION pin as well (I did it for both, but I don't know if it's required).


 __   __        ___    __        __       ___    __       
/  ` /  \ |\ | |__  | / _` |  | |__)  /\   |  | /  \ |\ | 
\__, \__/ | \| |    | \__> \__/ |  \ /~~\  |  | \__/ | \| 
                                                          

- Open up the code in NetBeans (or your favorite IDE) and run it.  Alternatively, you can build the MoppyDesk.jar file and run that.
- Select the COM port that the Arduino is hooked up to from the "Arduino Port" drop-down.  You will need to have this configured before you launch MoppyDesk.
- Click the "Connect" button to create a new Sequencer connected to the specified COM port.
- Click the "Load Sequence" button and select a suitable MIDI file (see below).
- Click "Start" to start playback (if all goes well).  
- The Stop/Reset button will stop playback and reset the drives.  Pressing "Start" again will resume from where the sequencer left off.  You will need to reload the MIDI to start from the beginning.


         __       ___    __   __  
 |\/| | |  \ |     |  | |__) /__` 
 |  | | |__/ |     |  | |    .__/ 
                                  

- MIDI files should have one MIDI channel for each controller pin on the Arduino.  Channel 1 will be sent to pin2, channel 2 to pin4, &c.
- Each drive can only play a single note at a time.
- The software will only attempt to play notes between C1 and B4.  Floppy drives don't seem to respond well to notes outside of this range (especially higher).
- Generally shorter notes tend to sound better, as longer notes are marred by the read-heads changing directions repeatedly.




Cross your fingers, and enjoy!

--HELP/CONTRIBUTIONS--

https://github.com/SammyIAm/Moppy


Markdown Cheat Sheet

Format Text

Headers

# This is an <h1> tag
## This is an <h2> tag
###### This is an <h6> tag

Text styles

*This text will be italic*
_This will also be italic_
**This text will be bold**
__This will also be bold__

*You **can** combine them*

Lists

Unordered

* Item 1
* Item 2
  * Item 2a
  * Item 2b

Ordered

1. Item 1
2. Item 2
3. Item 3
   * Item 3a
   * Item 3b

Miscellaneous

Images

![GitHub Logo](/images/logo.png)
Format: ![Alt Text](url)

Links

http://github.com - automatic!
[GitHub](http://github.com)

Blockquotes

As Kanye West said:

> We're living the future so
> the present is our past.

Code Examples in Markdown

Syntax highlighting with GFM

```javascript
function fancyAlert(arg) {
  if(arg) {
    $.facebox({div:'#foo'})
  }
}
```

Or, indent your code 4 spaces

Here is a Python code example
without syntax highlighting:

    def foo:
      if not bar:
        return true

Inline code for comments

I think you should use an
`<addr>` element here instead.
Something went wrong with that request. Please try again.