;--------------------------------------
; general messages:

OUT    @m_mode_ce F0 42 30 36 4E 01 00 F7
OUT    @m_mode_c  F0 42 30 36 4E 00 00 F7
OUT    @m_par     F0 42 30 36 4E 01 00 F7 F0 42 30 36 41
OUT    @m_intro   @m_mode_ce P(10)

;--------------------------------------
; editor:

EDITOR "korg x5 combinations" @m_intro

;--------------------------------------
; lists:

INCLUDE "x5l"
INCLUDE "x5lk"
INCLUDE "x5lp"


;--------------------------------------
; combination page:

PAGE   @p_comb "combination edition" "combination page"


BOX    @b_prog  @p_comb "PROGS" 00d 00d 8d 10d "program: 0=off [1...100]=[A00...A99] [101...236]=[G001...G136]"

CHOICE @v_prog1 @b_prog "1:" @l_progs 0d 236d 0d 10d 4d ""
CHOICE @v_prog2 @b_prog "2:" @l_progs 0d 236d 0d 10d 4d ""
CHOICE @v_prog3 @b_prog "3:" @l_progs 0d 236d 0d 10d 4d ""
CHOICE @v_prog4 @b_prog "4:" @l_progs 0d 236d 0d 10d 4d ""
CHOICE @v_prog5 @b_prog "5:" @l_progs 0d 236d 0d 10d 4d ""
CHOICE @v_prog6 @b_prog "6:" @l_progs 0d 236d 0d 10d 4d ""
CHOICE @v_prog7 @b_prog "7:" @l_progs 0d 236d 0d 10d 4d ""
CHOICE @v_prog8 @b_prog "8:" @l_progs 0d 236d 0d 10d 4d ""

OUT    @ @m_par 0d 0 i(#v_prog1) F7
OUT    @ @m_par 1d 0 i(#v_prog2) F7
OUT    @ @m_par 2d 0 i(#v_prog3) F7
OUT    @ @m_par 3d 0 i(#v_prog4) F7
OUT    @ @m_par 4d 0 i(#v_prog5) F7
OUT    @ @m_par 5d 0 i(#v_prog6) F7
OUT    @ @m_par 6d 0 i(#v_prog7) F7
OUT    @ @m_par 7d 0 i(#v_prog8) F7

GLOBAL @v_bk1 ?(#v_prog1,+(1,/(@v_prog1,101d)),0) ""
GLOBAL @v_bk2 ?(#v_prog2,+(1,/(@v_prog2,101d)),0) ""
GLOBAL @v_bk3 ?(#v_prog3,+(1,/(@v_prog3,101d)),0) ""
GLOBAL @v_bk4 ?(#v_prog4,+(1,/(@v_prog4,101d)),0) ""
GLOBAL @v_bk5 ?(#v_prog5,+(1,/(@v_prog5,101d)),0) ""
GLOBAL @v_bk6 ?(#v_prog6,+(1,/(@v_prog6,101d)),0) ""
GLOBAL @v_bk7 ?(#v_prog7,+(1,/(@v_prog7,101d)),0) ""
GLOBAL @v_bk8 ?(#v_prog8,+(1,/(@v_prog8,101d)),0) ""


BOX    @b_lvl  @p_comb "LEVEL" 08d 00d 7d 10d "level: 0...127"

NUM    @v_lvl1 @b_lvl "1:" 0d 127d 0d 10d ""
NUM    @v_lvl2 @b_lvl "2:" 0d 127d 0d 10d ""
NUM    @v_lvl3 @b_lvl "3:" 0d 127d 0d 10d ""
NUM    @v_lvl4 @b_lvl "4:" 0d 127d 0d 10d ""
NUM    @v_lvl5 @b_lvl "5:" 0d 127d 0d 10d ""
NUM    @v_lvl6 @b_lvl "6:" 0d 127d 0d 10d ""
NUM    @v_lvl7 @b_lvl "7:" 0d 127d 0d 10d ""
NUM    @v_lvl8 @b_lvl "8:" 0d 127d 0d 10d ""

OUT    @ @m_par 08d 0 #v_lvl1 0 F7
OUT    @ @m_par 09d 0 #v_lvl2 0 F7
OUT    @ @m_par 10d 0 #v_lvl3 0 F7
OUT    @ @m_par 11d 0 #v_lvl4 0 F7
OUT    @ @m_par 12d 0 #v_lvl5 0 F7
OUT    @ @m_par 13d 0 #v_lvl6 0 F7
OUT    @ @m_par 14d 0 #v_lvl7 0 F7
OUT    @ @m_par 15d 0 #v_lvl8 0 F7


BOX    @b_midi  @p_comb "MIDI" 15d 00d 6d 10d "midi channel: 1...16"

NUM    @v_midi1 @b_midi "1:" 1d 16d 0d 4d ""
NUM    @v_midi2 @b_midi "2:" 1d 16d 0d 4d ""
NUM    @v_midi3 @b_midi "3:" 1d 16d 0d 4d ""
NUM    @v_midi4 @b_midi "4:" 1d 16d 0d 4d ""
NUM    @v_midi5 @b_midi "5:" 1d 16d 0d 4d ""
NUM    @v_midi6 @b_midi "6:" 1d 16d 0d 4d ""
NUM    @v_midi7 @b_midi "7:" 1d 16d 0d 4d ""
NUM    @v_midi8 @b_midi "8:" 1d 16d 0d 4d ""

OUT    @ @m_par 16d 0 -(#v_midi1,1) 0 F7
OUT    @ @m_par 17d 0 -(#v_midi2,1) 0 F7
OUT    @ @m_par 18d 0 -(#v_midi3,1) 0 F7
OUT    @ @m_par 19d 0 -(#v_midi4,1) 0 F7
OUT    @ @m_par 20d 0 -(#v_midi5,1) 0 F7
OUT    @ @m_par 21d 0 -(#v_midi6,1) 0 F7
OUT    @ @m_par 22d 0 -(#v_midi7,1) 0 F7
OUT    @ @m_par 23d 0 -(#v_midi8,1) 0 F7


BOX    @b_kmin  @p_comb "KMIN" 22d 00d 8d 10d "key window bottom: [0...127]=[C-1...G9]"

CHOICE @v_kmin1 @b_kmin "1:" @l_key 0d 127d 0d 12d 4d ""
CHOICE @v_kmin2 @b_kmin "2:" @l_key 0d 127d 0d 12d 4d ""
CHOICE @v_kmin3 @b_kmin "3:" @l_key 0d 127d 0d 12d 4d ""
CHOICE @v_kmin4 @b_kmin "4:" @l_key 0d 127d 0d 12d 4d ""
CHOICE @v_kmin5 @b_kmin "5:" @l_key 0d 127d 0d 12d 4d ""
CHOICE @v_kmin6 @b_kmin "6:" @l_key 0d 127d 0d 12d 4d ""
CHOICE @v_kmin7 @b_kmin "7:" @l_key 0d 127d 0d 12d 4d ""
CHOICE @v_kmin8 @b_kmin "8:" @l_key 0d 127d 0d 12d 4d ""

OUT    @ @m_par 32d 0 #v_kmin1 0 F7
OUT    @ @m_par 33d 0 #v_kmin2 0 F7
OUT    @ @m_par 34d 0 #v_kmin3 0 F7
OUT    @ @m_par 35d 0 #v_kmin4 0 F7
OUT    @ @m_par 36d 0 #v_kmin5 0 F7
OUT    @ @m_par 37d 0 #v_kmin6 0 F7
OUT    @ @m_par 38d 0 #v_kmin7 0 F7
OUT    @ @m_par 39d 0 #v_kmin8 0 F7


BOX    @b_kmax  @p_comb "KMAX" 30d 00d 8d 10d "key window top: [0...127]=[C-1...G9]"

CHOICE @v_kmax1 @b_kmax "1:" @l_key 0d 127d 127d 12d 4d ""
CHOICE @v_kmax2 @b_kmax "2:" @l_key 0d 127d 127d 12d 4d ""
CHOICE @v_kmax3 @b_kmax "3:" @l_key 0d 127d 127d 12d 4d ""
CHOICE @v_kmax4 @b_kmax "4:" @l_key 0d 127d 127d 12d 4d ""
CHOICE @v_kmax5 @b_kmax "5:" @l_key 0d 127d 127d 12d 4d ""
CHOICE @v_kmax6 @b_kmax "6:" @l_key 0d 127d 127d 12d 4d ""
CHOICE @v_kmax7 @b_kmax "7:" @l_key 0d 127d 127d 12d 4d ""
CHOICE @v_kmax8 @b_kmax "8:" @l_key 0d 127d 127d 12d 4d ""

OUT    @ @m_par 24d 0 #v_kmax1 0 F7
OUT    @ @m_par 25d 0 #v_kmax2 0 F7
OUT    @ @m_par 26d 0 #v_kmax3 0 F7
OUT    @ @m_par 27d 0 #v_kmax4 0 F7
OUT    @ @m_par 28d 0 #v_kmax5 0 F7
OUT    @ @m_par 29d 0 #v_kmax6 0 F7
OUT    @ @m_par 30d 0 #v_kmax7 0 F7
OUT    @ @m_par 31d 0 #v_kmax8 0 F7


BOX    @b_vmin  @p_comb "VMIN" 39d 00d 7d 10d "velocity window bottom: 0...127"

NUM    @v_vmin1 @b_vmin "1:" 0d 127d 0d 10d ""
NUM    @v_vmin2 @b_vmin "2:" 0d 127d 0d 10d ""
NUM    @v_vmin3 @b_vmin "3:" 0d 127d 0d 10d ""
NUM    @v_vmin4 @b_vmin "4:" 0d 127d 0d 10d ""
NUM    @v_vmin5 @b_vmin "5:" 0d 127d 0d 10d ""
NUM    @v_vmin6 @b_vmin "6:" 0d 127d 0d 10d ""
NUM    @v_vmin7 @b_vmin "7:" 0d 127d 0d 10d ""
NUM    @v_vmin8 @b_vmin "8:" 0d 127d 0d 10d ""

OUT    @ @m_par 48d 0 #v_vmin1 0 F7
OUT    @ @m_par 49d 0 #v_vmin2 0 F7
OUT    @ @m_par 50d 0 #v_vmin3 0 F7
OUT    @ @m_par 51d 0 #v_vmin4 0 F7
OUT    @ @m_par 52d 0 #v_vmin5 0 F7
OUT    @ @m_par 53d 0 #v_vmin6 0 F7
OUT    @ @m_par 54d 0 #v_vmin7 0 F7
OUT    @ @m_par 55d 0 #v_vmin8 0 F7


BOX    @b_vmax  @p_comb "VMAX" 46d 00d 7d 10d "velocity window top: 0...127"

NUM    @v_vmax1 @b_vmax "1:" 0d 127d 127d 10d ""
NUM    @v_vmax2 @b_vmax "2:" 0d 127d 127d 10d ""
NUM    @v_vmax3 @b_vmax "3:" 0d 127d 127d 10d ""
NUM    @v_vmax4 @b_vmax "4:" 0d 127d 127d 10d ""
NUM    @v_vmax5 @b_vmax "5:" 0d 127d 127d 10d ""
NUM    @v_vmax6 @b_vmax "6:" 0d 127d 127d 10d ""
NUM    @v_vmax7 @b_vmax "7:" 0d 127d 127d 10d ""
NUM    @v_vmax8 @b_vmax "8:" 0d 127d 127d 10d ""

OUT    @ @m_par 40d 0 #v_vmax1 0 F7
OUT    @ @m_par 41d 0 #v_vmax2 0 F7
OUT    @ @m_par 42d 0 #v_vmax3 0 F7
OUT    @ @m_par 43d 0 #v_vmax4 0 F7
OUT    @ @m_par 44d 0 #v_vmax5 0 F7
OUT    @ @m_par 45d 0 #v_vmax6 0 F7
OUT    @ @m_par 46d 0 #v_vmax7 0 F7
OUT    @ @m_par 47d 0 #v_vmax8 0 F7


BOX    @b_trans  @p_comb "TRANS" 54d 00d 7d 10d "transpose: -12...+24"

NUM    @v_trans1 @b_trans "1:" -12d 24d 0d 12d ""
NUM    @v_trans2 @b_trans "2:" -12d 24d 0d 12d ""
NUM    @v_trans3 @b_trans "3:" -12d 24d 0d 12d ""
NUM    @v_trans4 @b_trans "4:" -12d 24d 0d 12d ""
NUM    @v_trans5 @b_trans "5:" -12d 24d 0d 12d ""
NUM    @v_trans6 @b_trans "6:" -12d 24d 0d 12d ""
NUM    @v_trans7 @b_trans "7:" -12d 24d 0d 12d ""
NUM    @v_trans8 @b_trans "8:" -12d 24d 0d 12d ""

OUT    @ @m_par 56d 0 i(#v_trans1) F7
OUT    @ @m_par 57d 0 i(#v_trans2) F7
OUT    @ @m_par 58d 0 i(#v_trans3) F7
OUT    @ @m_par 59d 0 i(#v_trans4) F7
OUT    @ @m_par 60d 0 i(#v_trans5) F7
OUT    @ @m_par 61d 0 i(#v_trans6) F7
OUT    @ @m_par 62d 0 i(#v_trans7) F7
OUT    @ @m_par 63d 0 i(#v_trans8) F7


BOX    @b_detu  @p_comb "DETUN" 61d 00d 7d 10d "detune: -50...+50"

NUM    @v_detu1 @b_detu "1:" -50d 50d 0d 10d ""
NUM    @v_detu2 @b_detu "2:" -50d 50d 0d 10d ""
NUM    @v_detu3 @b_detu "3:" -50d 50d 0d 10d ""
NUM    @v_detu4 @b_detu "4:" -50d 50d 0d 10d ""
NUM    @v_detu5 @b_detu "5:" -50d 50d 0d 10d ""
NUM    @v_detu6 @b_detu "6:" -50d 50d 0d 10d ""
NUM    @v_detu7 @b_detu "7:" -50d 50d 0d 10d ""
NUM    @v_detu8 @b_detu "8:" -50d 50d 0d 10d ""

OUT    @ @m_par 64d 0 i(#v_detu1) F7
OUT    @ @m_par 65d 0 i(#v_detu2) F7
OUT    @ @m_par 66d 0 i(#v_detu3) F7
OUT    @ @m_par 67d 0 i(#v_detu4) F7
OUT    @ @m_par 68d 0 i(#v_detu5) F7
OUT    @ @m_par 69d 0 i(#v_detu6) F7
OUT    @ @m_par 70d 0 i(#v_detu7) F7
OUT    @ @m_par 71d 0 i(#v_detu8) F7


BOX    @b_prgch  @p_comb "PRGCH" 0d 10d 7d 10d "program change filter: 0=disable 1=enable"

CHOICE @v_prgch1 @b_prgch "1:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_prgch2 @b_prgch "2:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_prgch3 @b_prgch "3:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_prgch4 @b_prgch "4:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_prgch5 @b_prgch "5:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_prgch6 @b_prgch "6:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_prgch7 @b_prgch "7:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_prgch8 @b_prgch "8:" @l_ena 0d 1d 0d 1d 3 ""

OUT    @ @m_par 72d 0 #v_prgch1 0 F7
OUT    @ @m_par 73d 0 #v_prgch2 0 F7
OUT    @ @m_par 74d 0 #v_prgch3 0 F7
OUT    @ @m_par 75d 0 #v_prgch4 0 F7
OUT    @ @m_par 76d 0 #v_prgch5 0 F7
OUT    @ @m_par 77d 0 #v_prgch6 0 F7
OUT    @ @m_par 78d 0 #v_prgch7 0 F7
OUT    @ @m_par 79d 0 #v_prgch8 0 F7


BOX    @b_damp  @p_comb "DAMP" 7d 10d 7d 10d "damper pedal filter: 0=disable 1=enable"

CHOICE @v_damp1 @b_damp "1:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_damp2 @b_damp "2:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_damp3 @b_damp "3:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_damp4 @b_damp "4:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_damp5 @b_damp "5:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_damp6 @b_damp "6:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_damp7 @b_damp "7:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_damp8 @b_damp "8:" @l_ena 0d 1d 0d 1d 3 ""

OUT    @ @m_par 80d 0 #v_damp1 0 F7
OUT    @ @m_par 81d 0 #v_damp2 0 F7
OUT    @ @m_par 82d 0 #v_damp3 0 F7
OUT    @ @m_par 83d 0 #v_damp4 0 F7
OUT    @ @m_par 84d 0 #v_damp5 0 F7
OUT    @ @m_par 85d 0 #v_damp6 0 F7
OUT    @ @m_par 86d 0 #v_damp7 0 F7
OUT    @ @m_par 87d 0 #v_damp8 0 F7


BOX    @b_aftt  @p_comb "AFTCH" 14d 10d 7d 10d "aftertouch filter: 0=disable 1=enable"

CHOICE @v_aftt1 @b_aftt "1:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_aftt2 @b_aftt "2:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_aftt3 @b_aftt "3:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_aftt4 @b_aftt "4:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_aftt5 @b_aftt "5:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_aftt6 @b_aftt "6:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_aftt7 @b_aftt "7:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_aftt8 @b_aftt "8:" @l_ena 0d 1d 0d 1d 3 ""

OUT    @ @m_par 88d 0 #v_aftt1 0 F7
OUT    @ @m_par 89d 0 #v_aftt2 0 F7
OUT    @ @m_par 90d 0 #v_aftt3 0 F7
OUT    @ @m_par 91d 0 #v_aftt4 0 F7
OUT    @ @m_par 92d 0 #v_aftt5 0 F7
OUT    @ @m_par 93d 0 #v_aftt6 0 F7
OUT    @ @m_par 94d 0 #v_aftt7 0 F7
OUT    @ @m_par 95d 0 #v_aftt8 0 F7


BOX    @b_ctrl  @p_comb "CTRL" 21d 10d 7d 10d "control change filter: 0=disable 1=enable"

CHOICE @v_ctrl1 @b_ctrl "1:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_ctrl2 @b_ctrl "2:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_ctrl3 @b_ctrl "3:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_ctrl4 @b_ctrl "4:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_ctrl5 @b_ctrl "5:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_ctrl6 @b_ctrl "6:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_ctrl7 @b_ctrl "7:" @l_ena 0d 1d 0d 1d 3 ""
CHOICE @v_ctrl8 @b_ctrl "8:" @l_ena 0d 1d 0d 1d 3 ""

OUT    @ @m_par 096d 0 #v_ctrl1 0 F7
OUT    @ @m_par 097d 0 #v_ctrl2 0 F7
OUT    @ @m_par 098d 0 #v_ctrl3 0 F7
OUT    @ @m_par 099d 0 #v_ctrl4 0 F7
OUT    @ @m_par 100d 0 #v_ctrl5 0 F7
OUT    @ @m_par 101d 0 #v_ctrl6 0 F7
OUT    @ @m_par 102d 0 #v_ctrl7 0 F7
OUT    @ @m_par 103d 0 #v_ctrl8 0 F7


BOX    @b_pan  @p_comb "PAN" 0d 20d 7d 10d "panpot: [0...30]=[A15...B15] 15=CNT 31=PRG 32=OFF"

CHOICE @v_pan1 @b_pan "1:" @l_pan 0 32d 15d 5d 3 ""
CHOICE @v_pan2 @b_pan "2:" @l_pan 0 32d 15d 5d 3 ""
CHOICE @v_pan3 @b_pan "3:" @l_pan 0 32d 15d 5d 3 ""
CHOICE @v_pan4 @b_pan "4:" @l_pan 0 32d 15d 5d 3 ""
CHOICE @v_pan5 @b_pan "5:" @l_pan 0 32d 15d 5d 3 ""
CHOICE @v_pan6 @b_pan "6:" @l_pan 0 32d 15d 5d 3 ""
CHOICE @v_pan7 @b_pan "7:" @l_pan 0 32d 15d 5d 3 ""
CHOICE @v_pan8 @b_pan "8:" @l_pan 0 32d 15d 5d 3 ""

OUT    @ @m_par 104d 0 i(?(<(#v_pan1,32d),@v_pan1,-1)) F7
OUT    @ @m_par 105d 0 i(?(<(#v_pan2,32d),@v_pan2,-1)) F7
OUT    @ @m_par 106d 0 i(?(<(#v_pan3,32d),@v_pan3,-1)) F7
OUT    @ @m_par 107d 0 i(?(<(#v_pan4,32d),@v_pan4,-1)) F7
OUT    @ @m_par 108d 0 i(?(<(#v_pan5,32d),@v_pan5,-1)) F7
OUT    @ @m_par 109d 0 i(?(<(#v_pan6,32d),@v_pan6,-1)) F7
OUT    @ @m_par 110d 0 i(?(<(#v_pan7,32d),@v_pan7,-1)) F7
OUT    @ @m_par 111d 0 i(?(<(#v_pan8,32d),@v_pan8,-1)) F7


BOX    @b_sndc  @p_comb "SND C" 8d 20d 7d 10d "send C: 0...9 10=PRG"

CHOICE @v_sndc1 @b_sndc "1:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndc2 @b_sndc "2:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndc3 @b_sndc "3:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndc4 @b_sndc "4:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndc5 @b_sndc "5:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndc6 @b_sndc "6:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndc7 @b_sndc "7:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndc8 @b_sndc "8:" @l_snd 0 10d 0d 5d 3 ""

OUT    @ @m_par 112d 0 #v_sndc1 0 F7
OUT    @ @m_par 113d 0 #v_sndc2 0 F7
OUT    @ @m_par 114d 0 #v_sndc3 0 F7
OUT    @ @m_par 115d 0 #v_sndc4 0 F7
OUT    @ @m_par 116d 0 #v_sndc5 0 F7
OUT    @ @m_par 117d 0 #v_sndc6 0 F7
OUT    @ @m_par 118d 0 #v_sndc7 0 F7
OUT    @ @m_par 119d 0 #v_sndc8 0 F7


BOX    @b_sndd  @p_comb "SND C" 15d 20d 7d 10d "send D: 0...9 10=PRG"

CHOICE @v_sndd1 @b_sndd "1:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndd2 @b_sndd "2:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndd3 @b_sndd "3:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndd4 @b_sndd "4:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndd5 @b_sndd "5:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndd6 @b_sndd "6:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndd7 @b_sndd "7:" @l_snd 0 10d 0d 5d 3 ""
CHOICE @v_sndd8 @b_sndd "8:" @l_snd 0 10d 0d 5d 3 ""

OUT    @ @m_par 112d 0 #v_sndd1 0 F7
OUT    @ @m_par 113d 0 #v_sndd2 0 F7
OUT    @ @m_par 114d 0 #v_sndd3 0 F7
OUT    @ @m_par 115d 0 #v_sndd4 0 F7
OUT    @ @m_par 116d 0 #v_sndd5 0 F7
OUT    @ @m_par 117d 0 #v_sndd6 0 F7
OUT    @ @m_par 118d 0 #v_sndd7 0 F7
OUT    @ @m_par 119d 0 #v_sndd8 0 F7


BOX    @b_name   @p_comb "NAME" 27d 37d 12d 3d ""
STRING @v_name @b_name "" 20 7F 10d "noname    " ""


;--------------------------------------
; receive combination buffer:

BUFFER @buf 136d "combination buffer"

;--------------------------------------
; effects page:

GLOBAL @efofs 136d ""
GLOBAL @efofr 11d ""
INCLUDE "x5e"

;--------------------------------------
; build a combination dump:

OUT    @m_cb_dump \
       F0 42 30 36 49 {k \
; name (0-9)
       @v_name \
; reserved (10)
       0d \
; effects parameters (11-39)
       @m_ef \
; timbre 1-8 (40-51,...,124-135)
       -(@v_prog1,.(@v_bk1,0,1d,101d,101d)) @v_lvl1 @v_trans1 @v_detu1 j(@v_pan1,0,@v_pan1,32d,FF) n(@v_sndc1,0,@v_sndd1,4) @v_kmax1 @v_kmin1 @v_vmax1 @v_vmin1 n(@v_prgch1,0,@v_damp1,1,@v_aftt1,2,@v_ctrl1,3,3,4,>(@v_bk1,1),7) n(-(@v_midi1,1),0,=(@v_bk1,0),4) \
       -(@v_prog2,.(@v_bk2,0,1d,101d,101d)) @v_lvl2 @v_trans2 @v_detu2 j(@v_pan2,0,@v_pan2,32d,FF) n(@v_sndc2,0,@v_sndd2,4) @v_kmax2 @v_kmin2 @v_vmax2 @v_vmin2 n(@v_prgch2,0,@v_damp2,1,@v_aftt2,2,@v_ctrl2,3,3,4,>(@v_bk2,1),7) n(-(@v_midi2,1),0,=(@v_bk2,0),4) \
       -(@v_prog3,.(@v_bk3,0,1d,101d,101d)) @v_lvl3 @v_trans3 @v_detu3 j(@v_pan3,0,@v_pan3,32d,FF) n(@v_sndc3,0,@v_sndd3,4) @v_kmax3 @v_kmin3 @v_vmax3 @v_vmin3 n(@v_prgch3,0,@v_damp3,1,@v_aftt3,2,@v_ctrl3,3,3,4,>(@v_bk3,1),7) n(-(@v_midi3,1),0,=(@v_bk3,0),4) \
       -(@v_prog4,.(@v_bk4,0,1d,101d,101d)) @v_lvl4 @v_trans4 @v_detu4 j(@v_pan4,0,@v_pan4,32d,FF) n(@v_sndc4,0,@v_sndd4,4) @v_kmax4 @v_kmin4 @v_vmax4 @v_vmin4 n(@v_prgch4,0,@v_damp4,1,@v_aftt4,2,@v_ctrl4,3,3,4,>(@v_bk4,1),7) n(-(@v_midi4,1),0,=(@v_bk4,0),4) \
       -(@v_prog5,.(@v_bk5,0,1d,101d,101d)) @v_lvl5 @v_trans5 @v_detu5 j(@v_pan5,0,@v_pan5,32d,FF) n(@v_sndc5,0,@v_sndd5,4) @v_kmax5 @v_kmin5 @v_vmax5 @v_vmin5 n(@v_prgch5,0,@v_damp5,1,@v_aftt5,2,@v_ctrl5,3,3,4,>(@v_bk5,1),7) n(-(@v_midi5,1),0,=(@v_bk5,0),4) \
       -(@v_prog6,.(@v_bk6,0,1d,101d,101d)) @v_lvl6 @v_trans6 @v_detu6 j(@v_pan6,0,@v_pan6,32d,FF) n(@v_sndc6,0,@v_sndd6,4) @v_kmax6 @v_kmin6 @v_vmax6 @v_vmin6 n(@v_prgch6,0,@v_damp6,1,@v_aftt6,2,@v_ctrl6,3,3,4,>(@v_bk6,1),7) n(-(@v_midi6,1),0,=(@v_bk6,0),4) \
       -(@v_prog7,.(@v_bk7,0,1d,101d,101d)) @v_lvl7 @v_trans7 @v_detu7 j(@v_pan7,0,@v_pan7,32d,FF) n(@v_sndc7,0,@v_sndd7,4) @v_kmax7 @v_kmin7 @v_vmax7 @v_vmin7 n(@v_prgch7,0,@v_damp7,1,@v_aftt7,2,@v_ctrl7,3,3,4,>(@v_bk7,1),7) n(-(@v_midi7,1),0,=(@v_bk7,0),4) \
       -(@v_prog8,.(@v_bk8,0,1d,101d,101d)) @v_lvl8 @v_trans8 @v_detu8 j(@v_pan8,0,@v_pan8,32d,FF) n(@v_sndc8,0,@v_sndd8,4) @v_kmax8 @v_kmin8 @v_vmax8 @v_vmin8 n(@v_prgch8,0,@v_damp8,1,@v_aftt8,2,@v_ctrl8,3,3,4,>(@v_bk8,1),7) n(-(@v_midi8,1),0,=(@v_bk8,0),4) \
       }k F7

;--------------------------------------
; write/read synth ; load/save disk:

BOX     @b_wr   @p_comb "WRITE/READ" 0d 37d 27d 7d ""

REQ     @rq_cb_edit @m_mode_ce P(6) F0 42 30 36 19 F7
RECEIVE @r_cb_edit @b_wr "read from edit buffer" @rq_cb_edit &buf 2d 1d 5d 161d 'k' ""

OUT     @m_cb_edit @m_mode_ce P(6) @m_cb_dump
SEND    @s_cb_edit @b_wr "write to edit buffer" @m_cb_edit ""

NUM     @v_cb_nu @b_wr "combi num  = " 0d 99d 0d 10d "combi number"

REQ     @rq_cb_nu @m_mode_c P(10) C0 @v_cb_nu P(10) @rq_cb_edit
RECEIVE @r_cb_nu @b_wr "read from combi num" @rq_cb_nu &buf 4d 1d 5d 161d 'k' "Global/ProgramChangeFilter must be on ENA !"

OUT     @m_cb_nu  @m_mode_ce P(6) F0 42 30 36 1A 00 @v_cb_nu F7
SEND    @s_cb_nu  @b_wr "write to combi num" @m_cb_nu ""


BOX     @b_sl   @p_comb "SAVE/LOAD" 27d 40d 51d 4d ""

SAVE    @@save  @b_sl "save to file  :" 34d "c-noname.x5" @m_cb_dump ""
LOAD    @@load  @b_sl "load from file:" 34d "c-noname.x5" &buf 1d 1d 5d 161d 'k' ""
OUT     @ z(#@load) @m_cb_edit


;--------------------------------------
; change each parameters after
; receiving a dump:

CHGBUF @v_name #buf

; effects are changed in file x5e

; timbre 1
CHGNUM    &v_prog1  ?(t(:(#buf,51d),4),0,+(?(t(:(#buf,50d),7),101d,1),:(#buf,40d)))
CHGNUM     @v_lvl1  :(#buf,41d)
CHGNUM   @v_trans1  s(:(#buf,42d))
CHGNUM    @v_detu1  s(:(#buf,43d))
CHGNUM     @v_pan1  ?(=(;(#buf,44d),FF),32d,:(#buf,44d))
CHGNUM    @v_sndd1  c(:(#buf,45d),0,4)
CHGNUM    @v_sndc1  c(:(#buf,45d),4,4)
CHGNUM    @v_kmax1  :(#buf,46d)
CHGNUM    @v_kmin1  :(#buf,47d)
CHGNUM    @v_vmax1  :(#buf,48d)
CHGNUM    @v_vmin1  :(#buf,49d)
CHGNUM   @v_prgch1  t(:(#buf,50d),0)
CHGNUM    @v_damp1  t(:(#buf,50d),1)
CHGNUM    @v_aftt1  t(:(#buf,50d),2)
CHGNUM    @v_ctrl1  t(:(#buf,50d),3)
CHGNUM    @v_midi1  +(c(:(#buf,51d),0,4),1)

; timbre 2
CHGNUM    &v_prog2  ?(t(:(#buf,63d),4),0,+(?(t(:(#buf,62d),7),101d,1),:(#buf,52d)))
CHGNUM     @v_lvl2  :(#buf,53d)
CHGNUM   @v_trans2  s(:(#buf,54d))
CHGNUM    @v_detu2  s(:(#buf,55d))
CHGNUM     @v_pan2  ?(=(;(#buf,56d),FF),32d,:(#buf,56d))
CHGNUM    @v_sndd2  c(:(#buf,57d),0,4)
CHGNUM    @v_sndc2  c(:(#buf,57d),4,4)
CHGNUM    @v_kmax2  :(#buf,58d)
CHGNUM    @v_kmin2  :(#buf,59d)
CHGNUM    @v_vmax2  :(#buf,60d)
CHGNUM    @v_vmin2  :(#buf,61d)
CHGNUM   @v_prgch2  t(:(#buf,62d),0)
CHGNUM    @v_damp2  t(:(#buf,62d),1)
CHGNUM    @v_aftt2  t(:(#buf,62d),2)
CHGNUM    @v_ctrl2  t(:(#buf,62d),3)
CHGNUM    @v_midi2  +(c(:(#buf,63d),0,4),1)

; timbre 3
CHGNUM    &v_prog3  ?(t(:(#buf,75d),4),0,+(?(t(:(#buf,74d),7),101d,1),:(#buf,64d)))
CHGNUM     @v_lvl3  :(#buf,65d)
CHGNUM   @v_trans3  s(:(#buf,66d))
CHGNUM    @v_detu3  s(:(#buf,67d))
CHGNUM     @v_pan3  ?(=(;(#buf,68d),FF),32d,:(#buf,68d))
CHGNUM    @v_sndd3  c(:(#buf,69d),0,4)
CHGNUM    @v_sndc3  c(:(#buf,69d),4,4)
CHGNUM    @v_kmax3  :(#buf,70d)
CHGNUM    @v_kmin3  :(#buf,71d)
CHGNUM    @v_vmax3  :(#buf,72d)
CHGNUM    @v_vmin3  :(#buf,73d)
CHGNUM   @v_prgch3  t(:(#buf,74d),0)
CHGNUM    @v_damp3  t(:(#buf,74d),1)
CHGNUM    @v_aftt3  t(:(#buf,74d),2)
CHGNUM    @v_ctrl3  t(:(#buf,74d),3)
CHGNUM    @v_midi3  +(c(:(#buf,75d),0,4),1)

; timbre 4
CHGNUM    &v_prog4  ?(t(:(#buf,87d),4),0,+(?(t(:(#buf,86d),7),101d,1),:(#buf,76d)))
CHGNUM     @v_lvl4  :(#buf,77d)
CHGNUM   @v_trans4  s(:(#buf,78d))
CHGNUM    @v_detu4  s(:(#buf,79d))
CHGNUM     @v_pan4  ?(=(;(#buf,80d),FF),32d,:(#buf,80d))
CHGNUM    @v_sndd4  c(:(#buf,81d),0,4)
CHGNUM    @v_sndc4  c(:(#buf,81d),4,4)
CHGNUM    @v_kmax4  :(#buf,82d)
CHGNUM    @v_kmin4  :(#buf,83d)
CHGNUM    @v_vmax4  :(#buf,84d)
CHGNUM    @v_vmin4  :(#buf,85d)
CHGNUM   @v_prgch4  t(:(#buf,86d),0)
CHGNUM    @v_damp4  t(:(#buf,86d),1)
CHGNUM    @v_aftt4  t(:(#buf,86d),2)
CHGNUM    @v_ctrl4  t(:(#buf,86d),3)
CHGNUM    @v_midi4  +(c(:(#buf,87d),0,4),1)

; timbre 5
CHGNUM    &v_prog5  ?(t(:(#buf,99d),4),0,+(?(t(:(#buf,98d),7),101d,1),:(#buf,88d)))
CHGNUM     @v_lvl5  :(#buf,89d)
CHGNUM   @v_trans5  s(:(#buf,90d))
CHGNUM    @v_detu5  s(:(#buf,91d))
CHGNUM     @v_pan5  ?(=(;(#buf,92d),FF),32d,:(#buf,92d))
CHGNUM    @v_sndd5  c(:(#buf,93d),0,4)
CHGNUM    @v_sndc5  c(:(#buf,93d),4,4)
CHGNUM    @v_kmax5  :(#buf,94d)
CHGNUM    @v_kmin5  :(#buf,95d)
CHGNUM    @v_vmax5  :(#buf,96d)
CHGNUM    @v_vmin5  :(#buf,97d)
CHGNUM   @v_prgch5  t(:(#buf,98d),0)
CHGNUM    @v_damp5  t(:(#buf,98d),1)
CHGNUM    @v_aftt5  t(:(#buf,98d),2)
CHGNUM    @v_ctrl5  t(:(#buf,98d),3)
CHGNUM    @v_midi5  +(c(:(#buf,99d),0,4),1)

; timbre 6
CHGNUM    &v_prog6  ?(t(:(#buf,111d),4),0,+(?(t(:(#buf,110d),7),101d,1),:(#buf,100d)))
CHGNUM     @v_lvl6  :(#buf,101d)
CHGNUM   @v_trans6  s(:(#buf,102d))
CHGNUM    @v_detu6  s(:(#buf,103d))
CHGNUM     @v_pan6  ?(=(;(#buf,104d),FF),32d,:(#buf,104d))
CHGNUM    @v_sndd6  c(:(#buf,105d),0,4)
CHGNUM    @v_sndc6  c(:(#buf,105d),4,4)
CHGNUM    @v_kmax6  :(#buf,106d)
CHGNUM    @v_kmin6  :(#buf,107d)
CHGNUM    @v_vmax6  :(#buf,108d)
CHGNUM    @v_vmin6  :(#buf,109d)
CHGNUM   @v_prgch6  t(:(#buf,110d),0)
CHGNUM    @v_damp6  t(:(#buf,110d),1)
CHGNUM    @v_aftt6  t(:(#buf,110d),2)
CHGNUM    @v_ctrl6  t(:(#buf,110d),3)
CHGNUM    @v_midi6  +(c(:(#buf,111d),0,4),1)

; timbre 7
CHGNUM    &v_prog7  ?(t(:(#buf,123d),4),0,+(?(t(:(#buf,122d),7),101d,1),:(#buf,112d)))
CHGNUM     @v_lvl7  :(#buf,113d)
CHGNUM   @v_trans7  s(:(#buf,114d))
CHGNUM    @v_detu7  s(:(#buf,115d))
CHGNUM     @v_pan7  ?(=(;(#buf,116d),FF),32d,:(#buf,116d))
CHGNUM    @v_sndd7  c(:(#buf,117d),0,4)
CHGNUM    @v_sndc7  c(:(#buf,117d),4,4)
CHGNUM    @v_kmax7  :(#buf,118d)
CHGNUM    @v_kmin7  :(#buf,119d)
CHGNUM    @v_vmax7  :(#buf,120d)
CHGNUM    @v_vmin7  :(#buf,121d)
CHGNUM   @v_prgch7  t(:(#buf,122d),0)
CHGNUM    @v_damp7  t(:(#buf,122d),1)
CHGNUM    @v_aftt7  t(:(#buf,122d),2)
CHGNUM    @v_ctrl7  t(:(#buf,122d),3)
CHGNUM    @v_midi7  +(c(:(#buf,123d),0,4),1)

; timbre 8
CHGNUM    &v_prog8  ?(t(:(#buf,135d),4),0,+(?(t(:(#buf,134d),7),101d,1),:(#buf,124d)))
CHGNUM     @v_lvl8  :(#buf,125d)
CHGNUM   @v_trans8  s(:(#buf,126d))
CHGNUM    @v_detu8  s(:(#buf,127d))
CHGNUM     @v_pan8  ?(=(;(#buf,128d),FF),32d,:(#buf,128d))
CHGNUM    @v_sndd8  c(:(#buf,129d),0,4)
CHGNUM    @v_sndc8  c(:(#buf,129d),4,4)
CHGNUM    @v_kmax8  :(#buf,130d)
CHGNUM    @v_kmin8  :(#buf,131d)
CHGNUM    @v_vmax8  :(#buf,132d)
CHGNUM    @v_vmin8  :(#buf,133d)
CHGNUM   @v_prgch8  t(:(#buf,134d),0)
CHGNUM    @v_damp8  t(:(#buf,134d),1)
CHGNUM    @v_aftt8  t(:(#buf,134d),2)
CHGNUM    @v_ctrl8  t(:(#buf,134d),3)
CHGNUM    @v_midi8  +(c(:(#buf,135d),0,4),1)


