diff options
Diffstat (limited to 'src/sequencer.c')
-rw-r--r-- | src/sequencer.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/sequencer.c b/src/sequencer.c index 8addefd..632a777 100644 --- a/src/sequencer.c +++ b/src/sequencer.c | |||
@@ -755,6 +755,7 @@ handle_right_col_selection(void) { | |||
755 | 755 | ||
756 | void | 756 | void |
757 | handle_pattern_chain(void) { | 757 | handle_pattern_chain(void) { |
758 | static int previous_loc = 0; | ||
758 | if (key_tap(KEY_A)) { | 759 | if (key_tap(KEY_A)) { |
759 | input_handler = handle_pattern_selection; | 760 | input_handler = handle_pattern_selection; |
760 | } else if (key_tap(KEY_LEFT)) { | 761 | } else if (key_tap(KEY_LEFT)) { |
@@ -781,10 +782,13 @@ handle_pattern_chain(void) { | |||
781 | } | 782 | } |
782 | } else if (key_tap(KEY_UP)) { | 783 | } else if (key_tap(KEY_UP)) { |
783 | if (param_selection_loc >= 0 && param_selection_loc <= 2) { | 784 | if (param_selection_loc >= 0 && param_selection_loc <= 2) { |
785 | previous_loc = param_selection_loc; | ||
784 | param_selection_loc = 16; | 786 | param_selection_loc = 16; |
785 | } else if (param_selection_loc >= 3 && param_selection_loc <= 4) { | 787 | } else if (param_selection_loc >= 3 && param_selection_loc <= 4) { |
788 | previous_loc = param_selection_loc; | ||
786 | param_selection_loc = 17; | 789 | param_selection_loc = 17; |
787 | } else if (param_selection_loc >= 5 && param_selection_loc <= 7) { | 790 | } else if (param_selection_loc >= 5 && param_selection_loc <= 7) { |
791 | previous_loc = param_selection_loc; | ||
788 | param_selection_loc = 18; | 792 | param_selection_loc = 18; |
789 | } else if (param_selection_loc >= 8 && param_selection_loc <= 15){ | 793 | } else if (param_selection_loc >= 8 && param_selection_loc <= 15){ |
790 | param_selection_loc -= 8; | 794 | param_selection_loc -= 8; |
@@ -793,11 +797,11 @@ handle_pattern_chain(void) { | |||
793 | if (param_selection_loc <= 7) { | 797 | if (param_selection_loc <= 7) { |
794 | param_selection_loc += 8; | 798 | param_selection_loc += 8; |
795 | } else if (param_selection_loc == 16){ | 799 | } else if (param_selection_loc == 16){ |
796 | param_selection_loc = 1; | 800 | param_selection_loc = previous_loc; |
797 | } else if (param_selection_loc == 17){ | 801 | } else if (param_selection_loc == 17){ |
798 | param_selection_loc = 3; | 802 | param_selection_loc = previous_loc; |
799 | } else if (param_selection_loc == 18){ | 803 | } else if (param_selection_loc == 18){ |
800 | param_selection_loc = 5; | 804 | param_selection_loc = previous_loc; |
801 | } | 805 | } |
802 | } else if (key_tap(KEY_B)) { | 806 | } else if (key_tap(KEY_B)) { |
803 | switch (param_selection_loc) { | 807 | switch (param_selection_loc) { |