This is my custom MIDI out version of the Arduinoboy.
https://github.com/ledfyr/ab-midiout-lite
Background:
I started out trying to slim down the original Arduinoboy code to the bare minimum needed to handle LSDJ MIDI out. The main motivation was to learn how the code worked and if possible solve an issue I'd had with notes dropping out.
I managed to solve the issue by removing a buffering/timeout handling of previously played notes. My solution keeps at most one previous note per channel instead of a list, and I got rid of the timeout handling. I never fully understood the intention of the original code in this area, but as far as I know my changes haven't broken anything. If anyone has ideas or knowledge about this, feel free to share.
Later I added some more functions, just because.
Functions:
- MIDI clock out (tap tempo control of BPM)
- Velocity
- Chords
- Channel switching (channels can be switched rapidly giving you access to 16 channels - though only 4 notes at a time)
- CC scaling 0-127 instead of 0-120
Gotcha #1: If you want to change between two different chords, you must kill the first note (chord) before changing and starting the next - otherwise notes from the first chord will be left hanging. So do it in this order: set chord, play note, kill note, set other chord, play note ... and so on.
Gotcha #2: All settings (channel switching etc) are lost when you power off the Arduinoboy. Keep a row in the top of your LSDJ songs with settings, play this row to "load" them before starting the song.
See readme in the link above for installation instructions and more info. This code should work with any Arduino based build following the original schematics by trash80.
Please let me know if anything is unclear and I'll try to help. Enjoy!