hello everyone,
I know the asm version of seq will not further be developed or changed - thats allright - and so please see my question only as an hobby trial
and not as a request:
For me i want an additional adaption for mbseq3 in the MUTE SCREEN - Maybe someone has some skills and can give me a hint or bit help therefor. My skills in asm are very low, but i want to try that a bit.
The goal for me:
I want change patterns up and down of a selected bank by using rotary encoder in mute screen, because i am using very often the mute options of tracks and I want to change patterns (for the one of the 4 groups) there too.
The normal way is: I have to go from MUTE SCREEN to PATTERN SCREEN, and change the patterns there and switch back to MUTE SCREEN, which could be a bit time consumption for live performance…
So my try here ( CS_M_MUTE.INC ):
1. part: i have to exchange the MUTE Option for rotary encoder to SELECT Option of groups (That works very well):
CS_M_MUTE_GP_Callback
;; do nothing if button has been depressed
btfsc MIOS_PARAMETER2, 0
return
;; part 1: use encoder for selecting groups (1..4: G1, 5..8: G2, 9..12: G3, 13..16: G4)
;; if incrementer != 0, encoder has been moved
SET_BSR SEQ_BASE
movf CS_MENU_ENC_INCREMENTER, W
bz CS_M_MUTE_GP_Callback_Go
CS_M_MUTE_GP_Callback_Enc
;; branch depending on button
movf MIOS_PARAMETER1, W
andlw 0x0f
JUMPTABLE_2BYTES_UNSECURE
rgoto CS_M_MUTE_GP_Callback_1
rgoto CS_M_MUTE_GP_Callback_2
rgoto CS_M_MUTE_GP_Callback_3
rgoto CS_M_MUTE_GP_Callback_4
rgoto CS_M_MUTE_GP_Callback_5
rgoto CS_M_MUTE_GP_Callback_6
rgoto CS_M_MUTE_GP_Callback_7
rgoto CS_M_MUTE_GP_Callback_8
rgoto CS_M_MUTE_GP_Callback_9
rgoto CS_M_MUTE_GP_Callback_10
rgoto CS_M_MUTE_GP_Callback_11
rgoto CS_M_MUTE_GP_Callback_12
rgoto CS_M_MUTE_GP_Callback_13
rgoto CS_M_MUTE_GP_Callback_14
rgoto CS_M_MUTE_GP_Callback_15
rgoto CS_M_MUTE_GP_Callback_16
CS_M_MUTE_GP_Callback_1
CS_M_MUTE_GP_Callback_2
CS_M_MUTE_GP_Callback_3
CS_M_MUTE_GP_Callback_4
movlw 0
rgoto CS_M_MUTE_GP_Callback_Cont
CS_M_MUTE_GP_Callback_5
CS_M_MUTE_GP_Callback_6
CS_M_MUTE_GP_Callback_7
CS_M_MUTE_GP_Callback_8
movlw 1
rgoto CS_M_MUTE_GP_Callback_Cont
CS_M_MUTE_GP_Callback_9
CS_M_MUTE_GP_Callback_10
CS_M_MUTE_GP_Callback_11
CS_M_MUTE_GP_Callback_12
movlw 2
rgoto CS_M_MUTE_GP_Callback_Cont
CS_M_MUTE_GP_Callback_13
CS_M_MUTE_GP_Callback_14
CS_M_MUTE_GP_Callback_15
CS_M_MUTE_GP_Callback_16
movlw 3
rgoto CS_M_MUTE_GP_Callback_Cont
CS_M_MUTE_GP_Callback_Cont
movwf MIOS_PARAMETER1
;; do nothing when button has been released
btfsc MIOS_PARAMETER2, 0
return
;; get selected track(s) of current group
SET_BSR SEQ_BASE
lfsr FSR1, SEQ_SELECTED_TRKS_G0
movf SEQ_SELECTED_GROUP, W, BANKED
movff PLUSW1, TMP1
;; clear all selections
movlw 0xf0
movwf SEQ_SELECTED_TRKS_G0, BANKED
movwf SEQ_SELECTED_TRKS_G1, BANKED
movwf SEQ_SELECTED_TRKS_G2, BANKED
movwf SEQ_SELECTED_TRKS_G3, BANKED
;; set new track group
movff MIOS_PARAMETER1, SEQ_SELECTED_GROUP
;; store selected tracks in new groups
lfsr FSR1, SEQ_SELECTED_TRKS_G0
movf SEQ_SELECTED_GROUP, W, BANKED
movff TMP1, PLUSW1
;; request display re-initialisation
bsf CS_STAT, CS_STAT_DISPLAY_INIT_REQ
clrf CS_MENU_ENC_INCREMENTER ; don't increment pattern number
;; part 2: get rotary direction (up or down?)
;; part 3: Change pattern for that group
return
CS_M_MUTE_GP_Callback_Go
Now the 2. part is to decide, whether the rotary encoder is rolled up or down, and at least the 3. part it have to change the pattern for that group.
Has someone an idea to solve the 2. and 3. part? thank you very much.
best regards,
rio