音组管理
如果一个乐器中有多个音组,通过下面的这些函数,用户可以通过代码控制音组:
disallow_group(<音组索引>) | 禁用特定的音组 |
allow_group(<音组索引>) | 激活特定的索引 |
find_group(<音组名>) | 返回特定音组的索引 |
group_name(<音组索引>) | 返回特定音组的名称 |
每个音组都有独立的索引。音组索引从0开始编号,到音组数量-1为止。如果用户不知道某一音组的索引,可以使用find_group()指令,在双引号内输入音组的名字,其索引就会被返回。group_name()的工作方式恰好相反。
默认情况下所有音组都处于激活状态。如果用户只想保留一个音组,最好是先使用disallow_group($ALL_GROUPS)。$ALL_GROUPS是内建变量,内编了所有音组的地址。所有音组都禁用之后,再使用allow_group()命令,例如激活第一组:allow_group(0)。
$ALL_GROUPS |
在disallow_group()和allow_group()函数中提供所有音组的地址 |
on note disallow_group($ALL_GROUPS) allow_group(find_group("piano_1")) end on
发生中的音组不能修改。
还有一个内建阵列也非常有用:%GROUPS_AFFECTED
%GROUPS_AFFECTED |
音组受到当前的音符输入或释放事件影响后,可以使用%GROUPS_AFFECTED调取这些音组的索引 |
此函数可以用于调取当前事件影响的音组数量:num_elements(%GROUPS_AFFECTED)。
$NUM_GROUPS也是一个十分有用的内建变量:
$NUM_GROUPS |
乐器的总音组数量 |
此变量返回乐器中的音组总数,若想声明一个下拉菜单,其中包含所有音组名,那么$NUM_GROUPS就非常有用了:
on init declare $count declare ui_menu $group_menu while ($count < $NUM_GROUPS) add_menu_item ($group_menu,group_name($count),$count) inc($count) end while end on
如果用户修改了音组的数目或者名称,这些改动不会立马体现。这时点击Apply按钮,或者保存后加载乐器可以应用改变。