Teensy 16 step sequencer update

Here is a video of progress so far. The step sequencer is being used as a four voice fugue.

I got inspired by alexandernaut and the fugue machine, particularly the way Elinch used it for the modular shades track (thanks alexandernaut!). So I built a four voice Fugue maschine / step sequencer.
A fugue is a short melody that is started by one voice, and then taken on by other voices. This can be faster or slower, backwards or forwards. The idea is that the melody/theme is created in a way that allows harmonies to develop by the different notes contained within the single melody coming together in various forms. (well, hopefully… better go and read up on it..)
This is a really simple four voice 16 step fugue built around a Teensy micro controller programmed on the Arduino IDE. The teensy is running the everything; the screen, the 16 rotary knobs with push buttons and leds, the tactile button grid with leds, and sending the usb MIDI signals. (it is also controlling gate, pitch and cutoff for analogue- but not used today)
The step sequencer in this instance is sending usb MIDI signals to four seperate Ableton tracks using one channel per track / voice. I wanted to keep the video short, so we go through the development quickly.
All four voices go forwards in this tune, and the patch is preset and called from memory bank at the start of the sequence. The data for the patch is stored on an SD card mounted in the Teensy onboard SD card slot. The patch was set using the 16 rotary controllers to select the notes and then using the rotary integrated push button to switch the note on or off. The button pads to the top are set to either momentary or latching. I use a pair of momentary buttons to move the notes up and down scales during this tune, major to minor.
At the end of the track I just play around with a repeater button on the button pad that is set up to latch to a chosen step in the 16 step sequence, and this then plays that note when switched on.
BPM is changed at the very start of the track, increasing 1bpm per button push. The screen gives feedback on button push parameters.