--------- concept


The program names are associated with MIDI messages Program Change and Bank select MSB and LSB.

The program names appear as a popup menu with (optional, if group level >1) submenues.

The program names can be put into groups of different levels.

Root level is 1.

Programs defined at level one can be selected direct from the main popup menu.

Higher levels can only be accessed via submenues.

It is allowed to define program names more than once, for flexible menu architecture.

The defined key names appear, when the drum edit is opened on a midi part, which is set to a program that 

has defined key names.

One script could contain different modes, which can be associated to midi channels (for cases like: drumchannel,

FX channel, performance channel, ...).

The first defined mode without channel ("[mode]%s") is the default mode for all channels, which does not 

have a specific channel mode ("[mode%n]%s").

The script can be changed during runtime and will be updated, when the user wants to select a sound of that script.


--------- commands

only 1 command per line!

%n: means number (unsigned integer beginning with 0)

%L: means group level (unsigned integer beginning with 1)

%s: means string (ends at line end)


>>comments

[comment]%s				//can be inserted anywhere


>>header

[cubase parse file]				//first command

[parser version %n]				//second command. actual %n is 0001

[creators first name]%s			//used to identify the script

[creators last name]%s			//used to identify the script

[device manufacturer]%s			//used to identify the script

[device name]%s				//used to identify the script

[script name]%s				//used to identify the script and is displayed

[script version]%s				//used to identify the script


>>optional settings

[bank: do swap value bytes]			//swap MSB and LSB ("Roland" style)

[bank: don't swap value bytes]

[bank: do send msb first]

[bank: don't send msb first]

[bank: do send only one byte]		//send only first byte (interacts with [bank: do send msb first])

[bank: don't send only one byte]

[bank: do send as program change]		//send bank select as several Program changes

[bank: don't send as program change]


>>name definition bulk

[define patchnames]			//start of name definition bulk

[mode]%s				//define topmost grouplevel like "XG Voices" and "XG Drumkits"

					//	to distinguish different modes of a single device

[mode%n]%s				//as above, but mode is associated with midi channel %n [1 - 16]

					//	eg: [mode 10] XG Drumkits

[g%L]%s					//define group: %L level [1 - 9], %s name

[sorted]					//following program name entries in that group will be 

					//	shown sorted alphabetically

[p%L,%n,%n,%n]%s			//define program name: %L level [1 - 9], %n program change [0 - 127], 

					//	%n bank MSB [0 - 127], %n bank LSB [0 - 127], %s program name

[p%L,%n,%n]%s				//define program name: %L level [1 - 9], %n [0 - 127] program change,

					//	%n bank (14 bit) [0 - 16383], %s program name

[k%n]%s					//define key name (for the previously defined program):

					//	%n key number [0 - 127], %s key name


>>end of script

[end]					//last command

