;-------------------------------------
; editor for standard MIDI messages:

EDITOR "midi messages"

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

LISTDEF @l_ono
0 "off"
1 "on"
LISTEND


;-------------------------------------
; main page:

OUT @m_arpegio 90 60 7F P(3) 64 7F P(3) 67 P(3) 7F 72 P(20) 80 60 7F 64 7F 67 7F 72
PAGE @p_main "" "PAGE: play with usual midi messages" @m_arpegio

;-------------------------------------
; general parameters box:

BOX @b_gen @p_main "[general]" 16 4 12d 4d "BOX: general midi parameters"

SEPARATOR @b_gen "  "
NUM @ch @b_gen "channel=" 0 F 0 1 "VAR: midi channel (0-15)"

GLOBAL @ctrlcmd +(B0,#ch) "command byte to change a controller"
GLOBAL @notecmd +(90,#ch) "command byte to play a note"

;-------------------------------------
; notes box:

BOX @b_note @p_main "[notes]" 8d 10d 13d 7d "BOX: play notes"

SEPARATOR @b_note "  "
NUM @note @b_note "note=" 0d 127d 64d 12d "VAR: note (0-127)"
NUM @velo @b_note "velo=" 0d 127d 100d 10d "VAR: note velocity (0-127)"

OUT  @m_note @notecmd @note @velo
SEND @play @b_note "play on/off" @m_note ""
CHGNUM @notecmd +(?(=(@notecmd,80),90,80),@ch,z(#play))

SEND @playarp @b_note "arpegio" @m_arpegio ""

;-------------------------------------
; programs box:

BOX @b_prog @p_main "[programs]" 22d 10d 12d 5d "BOX: change programs ans banks"

SEPARATOR @b_prog "  "
NUM @prog @b_prog "prog=" 0d 127d 0d 10d "VAR: send program change (0-127)"
NUM @bank @b_prog "bank=" 0d 16383d 0d 10d "VAR: send bank change (0-16383)"

OUT  @m_prog +(C0,@ch) #prog

;-------------------------------------
; controllers box:

BOX @b_ctrl @p_main "[controllers]" 35d 10d 15d 12d "BOX: change controllers"

SEPARATOR @b_ctrl     "  "
SEPARATOR @b_ctrl     "predefined:"
NUM @vol @b_ctrl      "   level=" 0d 127d 0d 10d "VAR: level (0-127)"
NUM @pan @b_ctrl      "     pan=" -64d 63d 0d 10d "VAR: pan (-64..63)"
CHOICE @local @b_ctrl "   local=" @l_ono 0 1 0 1 3 "VAR: local control (on/off)"

OUT  @m_alloff @ctrlcmd 123d 0d
SEND @alloff @b_ctrl  "send all off" @m_alloff "VAR: send all notes off"

SEPARATOR @b_ctrl     ""
SEPARATOR @b_ctrl     "others:"
NUM @ctrlnum @b_ctrl  "  number=" 0d 127d 0d 10d "VAR: controller number (0..127)"
TABLE/N @ctrlvl @b_ctrl "value(n)=" @ctrlnum 0d 128d 0d 127d 0d 10d "VAR: corresponding controller value (0..127)"

OUT  @m_bank @ctrlcmd 0 B(#bank) @ctrlcmd 20 b(#bank)
OUT  @m_vol @ctrlcmd 7d #vol
OUT  @m_pan @ctrlcmd 10d +(64d,#pan)
OUT  @m_local @ctrlcmd 122d ?(#local,127d,0d)
OUT  @m_ctrl @ctrlcmd @ctrlnum v(#ctrlvl)


