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

OUT    @m_mode_g  F0 42 30 36 4E 05 00 F7
;OUT    @m_par     F0 42 30 36 4E 05 00 F7 P(6) F0 42 30 36 53 00
OUT    @m_par     F0 42 30 36 53 00
OUT    @m_intro   @m_mode_g P(6)

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

EDITOR "korg x5 drum kits" @m_intro

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

INCLUDE "x5l"
INCLUDE "x5lk"
INCLUDE "x5ld"

;--------------------------------------
; drum page:

PAGE   @p_drum "drum kit edition" ""

BUFFER @buf 840d "drum buffer"

BOX    @b_drum @p_drum "INSTRUMENT" 00d 00d 64d 19d ""

REQ     @rq_drum @m_mode_g P(6) F0 42 30 36 0D 00 F7
RECEIVE @r_drum @b_drum "receive user drum kits" @rq_drum &buf 2d 1d 6d 965d 'k' "receive both user drumkits"

OUT     @m_drum @m_mode_g P(6) F0 42 30 36 52 00 {k @buf }k F7
SEND    @s_drum @b_drum "send user drum kits" @m_drum "send both user drumkits"

SAVE    @@save @b_drum "save drumlits to file  :" 38d "d-noname.x5" @m_drum ""
LOAD    @@load @b_drum "load drumkits from file:" 38d "d-noname.x5" &buf 1d 1d 6d 965d 'k' ""

SEPARATOR @b_drum ""

NUM    @v_dk    @b_drum "User drumkit = " 1d 2d 1d 1d "user kit: 1 or 2"
NUM    @v_index @b_drum "Index        = " 0d 59d 0d 10d "index: 0-59"

GLOBAL #v_index2 +(.(#v_dk,0,0,60d),#v_index) "total index"
GLOBAL #offset +(.(#v_dk,0,0,420d),*(7d,#v_index)) "total offset"

SEPARATOR @b_drum ""

CHOICE @v_ins @b_drum  "instrum = " @l_soundsd -1d 163d 0d 10d 10d "instrument: -1:off [0...163]"
CHOICE @v_key @b_drum  "key     = " @l_key 24d 126d 64d 12d -4d "key: [C1...F#9], cannot be the same for 2 indexes!"
NUM    @v_tune @b_drum "tune    = " -120d 120d 0d 10d "Tune: -120...+120"
NUM    @v_lvl  @b_drum "level   = " -99d 99d 0d 10d "Level: -99...+99"
NUM    @v_dec  @b_drum "decay   = " -99d 99d 0d 10d "Decay: -99...+99"
CHOICE @v_ex  @b_drum  "exclu gp= " @l_exclu 0 7 0 4 7d "exclusion groups"
CHOICE @v_pan @b_drum  "A:B pan = " @l_pandrum 0 1F F 5d 3d "A:B pan"
NUM    @v_sndc @b_drum "send C  = " 0d 9d 0d 5d "send C"
NUM    @v_sndd @b_drum "send D  = " 0d 9d 0d 5d "send D"


CHGNUM @v_ins -(:(#buf,+(#offset,0)),1)
CHGNUM @v_key +(12d,:(#buf,+(#offset,1)))
CHGNUM @v_pan c(:(#buf,+(#offset,2)),0,5)
CHGNUM @v_ex  c(:(#buf,+(#offset,2)),5,3)
CHGNUM @v_tune s(:(#buf,+(#offset,3)))
CHGNUM @v_lvl s(:(#buf,+(#offset,4)))
CHGNUM @v_dec s(:(#buf,+(#offset,5)))
CHGNUM @v_sndd c(:(#buf,+(#offset,6)),0,4)
CHGNUM @v_sndc c(:(#buf,+(#offset,6)),4,4)

CHGBUF @buf S(@buf,0,+(@offset,0)) +(#v_ins,1)
CHGBUF @buf S(@buf,0,+(@offset,1)) -(#v_key,12d)
CHGBUF @buf S(@buf,0,+(@offset,2)) n(#v_pan,0,#v_ex,5)
CHGBUF @buf S(@buf,0,+(@offset,3)) #v_tune
CHGBUF @buf S(@buf,0,+(@offset,4)) #v_lvl
CHGBUF @buf S(@buf,0,+(@offset,5)) #v_dec
CHGBUF @buf S(@buf,0,+(@offset,6)) n(#v_sndd,0,#v_sndc,4)

OUT @ @m_par #v_index2 0 i(@v_index) F7
OUT @ @m_par @v_index2 1 i(+(#v_ins,1)) F7
OUT @ @m_par @v_index2 2 i(-(#v_key,12d)) F7
OUT @ @m_par @v_index2 3 i(#v_tune) F7
OUT @ @m_par @v_index2 4 i(#v_lvl) F7
OUT @ @m_par @v_index2 5 i(#v_dec) F7
OUT @ @m_par @v_index2 7 i(#v_ex) F7
OUT @ @m_par @v_index2 6 i(#v_pan) F7
OUT @ @m_par @v_index2 8 i(#v_sndc) F7
OUT @ @m_par @v_index2 9 i(#v_sndd) F7

