Turn your APC40 into a step sequencer
Patterns
- Pattern click activates / deactivates note with current velocity
- While holding first note down, change note length by clicking a following note in the same key
- row 0x32 -> change pattern length
- row 0x30 -> change velocity level
- row 0x31 -> change zoom level
- bank select moves viewport in horizontally, also moving zoom indicator
- bank select moves viewport vertically
- Indicator shows in currently playing pattern
- Indicator should draw on reposition
- Indicator should draw on instrument / pattern selection
- Use playable selector as indicator of base note / octave offset in octaves while scrolling, switching back to selected pattern after a while.
- Notes in grid shouldn't be able to overlap, shorten previous note
- Record notes of keyboard & drumpad
- Update note grid in realtime on cycles with keyboard input
- Make cue knob navigate notes view
Phrases
- Render phrases
- Toggle phrases
- Handle changing pattern length in phrases by keeping pattern end around
- Play notes in pattern for PlayedPatterns that are longer as pattern
- Indicator shows progress in currently playing phrase
- Phrases shouldn't be able to overlap, shorten previous phrase
- Make phrases red instead of green
Instruments
- track selection row switches between instuments
- master switches between first & second group of 8 instuments
- scene lauch row selects patterns in pattern view
- scene lauch row selects phrases in phrase view
- Copy playables by holding playable key & clicking other playable key
- Shift + playable clears view of pattern / phrase
Sequences
- Sequences are played
- Pan, send A etc. show corresponding sequence
- Queue sequence by shift clicking sequence button
- Show active sequence by blinking sequence light in sequence grid
- Queued sequence starts after sequence hits a common denominator for all playing phrases
- row 0x32 -> instrument outputs yes/no
- Make indicator lights light up for notes played by instrument
- Queue sequence on shift click
Tempo
- Fix tap tempo
Effect knobs
- Send knobs input to output for channel of selected instrument
- Keep knob state around and dispatch to controller when plugin parameters change
- Record effect knobs into phrases
Improvements
- Create one playable abstraction for pattern / phrase so we dont have to write zoom / length / etc. code twice
- Don't check every note against the cycle
- Don't send same note on message multiple times to controller when grid is zoomed out on large patterns
- Save state to file
Patterns / Phrases
- We now have 5 phrases / patterns, 1 under every scene launch button, we could implement shift+up/down for scrolling through more of these
- Fold pattern grid to notes in key / all notes
- shift + row 0x31 -> move zoom viewport
- Do smart stuff with the octave indicator, like 6 on/6 off on octave 0, 7on/5off on octave 1, 5on/7off on octave -1
Velocity
- Add a way to change velocity of notes