===== Pattern Play Mode ===== ==== Initialization ==== (fill in here) ==== Pattern Play Loop ==== The pattern play loop looks like this: - Read any input from the switches - If the function has changed, stop and exit - If we are in master sync mode, handle tap tempo - Start a new chain if the chain key was just pressed - Finalize chain mode once chain is released - Display Somthing... - If we are in the middle of chain mode, then display the current chain and add patterns/tracks **OR** -If up/down is pressed handle pitch shift **OR** -Display the current data - Or Handle Playback - If the pitch shift keys are released, stop blinking the leds - If they changed the pattern/track build a chain one pattern long to the new pattern/track - Display the current (and next if applicable) track - If we are playing and have midi or din sync handle the sync through clock ticks and play the note with [[do_tempo]] - if we get a Midi Song Select message, set it to the current pattern/track - if we get a stop message (midi, dyn, r/s) then stop - if we get a go message then start playing - toggle slide if slide button pressed - toggle accent if accent button pressed - toggle rest if rest button pressed CodeRefactoring: This function seems rather smelly (large method, lots of complex conditionals). From a maintainability and readability standpoint it would be nice to do the "Replace conditional with function" and "Decompose Function" on this monster function to turn it into a bunch of small pieces.