Mac 版 Logic Pro 使用手册
- 欢迎使用
- 
        
        
- 触控栏快捷键
- 
        
        
- 
        
        
- 录音室钢琴
 
- 词汇表
- 版权

在 Mac 版 Logic Pro 中创建脚本编辑器 MIDI 插件控制
本节概述了如何使用脚本编辑器来创建标准界面控制器,如脚本编辑器插件的滑块和菜单。只有“名称”是你必须为新参数定义的强制属性。这是基本滑块的默认值。另外,你可以使用更多属性来更改控制的类型和功能。
载入相应的 Tutorial 设置以在脚本编辑器中查看脚本。这有助于你理解语法结构以及代码和注释的布局。请参阅使用脚本编辑器。
可选属性
- 类型:键入以下一种字符串作为值: - “lin”:创建线性推子。 
- “log”:创建对数推子。 
- “momentary”:创建一个瞬时按钮。 
- “menu”:创建菜单。 - 菜单类型需要附加的 valueStrings 属性(显示在菜单中的一系列字符串)。请参阅 Tutorial 脚本 13。 
 
- defaultValue:键入一个整数或浮点数以设定默认值。如果未键入值,那么默认为 0.0。 
- minValue:键入一个整数或浮点数以设定最小值。如果未键入值,那么默认为 0.0。 
- maxValue:键入一个整数或浮点数以设定最大值。如果未键入值,那么默认为 1.0。 
- numberOfSteps:键入一个整数以定义步进数。 
- 单位:键入一个字符串作为插件控制中的单位描述。如果不键入值,则默认不显示单位。 
- text:键入文本以在插件 UI 中创建分隔器或标头。 
Tutorial 脚本 12:创建滑块
在 Logic Pro中,在脚本编辑器窗口中键入以下内容,以创建一个名为“Parameter x”的滑块,其默认范围为 0 到 1。滑块的中间点值设定为 0.5。
var PluginParameters = [{name:"Parameter x", defaultValue:0.5}];Tutorial 脚本 13:滑块范围
在 Logic Pro中,在脚本编辑器窗口中键入以下内容,以创建一个线性滑块类型,具有五个可能的位置(步进),其范围为 0 到 5。
var PluginParameters = [{name:"Octaves", defaultValue:3, minValue:0, maxValue:5, numberOfSteps:5, unit:"octaves", type:"lin"}];Tutorial 脚本 14:创建菜单
在 Logic Pro中,在脚本编辑器窗口中键入以下内容,以创建一个名为“范围”的菜单,此菜单选项包括“低”、“中”和“高”。
var PluginParameters = [{name:"Range", type:"menu", valueStrings:["Low", "Mid", "High"]}];动态隐藏或显示 MIDI 插件控制
在复杂的 Logic Pro 脚本中,动态隐藏或显示参数控制可能有所帮助。例如,对于一个菜单项,可让你选取要显示的一组控制。在脚本编辑器窗口中键入以下内容,以创建这些控制器类型。
- var PluginParameters = [{name:'uno'}, {name:'dos', hidden:true}];- 调用 - UpdatePluginParameters()以进行动态更改。
获取插件参数值
使用参数名称调用 GetParameter(),以使用参数的当前值返回一个值(数字对象)。GetParameter() 通常用在 HandleMIDI 函数或 ProcessMIDI 函数内。
在 Logic Pro中,此代码示例将调制事件转换为音符事件,并提供了一个用来确定音符长度的滑块。
- “/*”之后的文本显示解释 JavaScript 代码的注释。 - var PluginParameters = [{name:"Note Length", minValue:0, maxValue: 100, unit:"%"}]; /* create a slider (default range 0 - 100) */- function HandleMIDI(event) {- if(event instanceof ControlChange && event.number == 1) { /* if event is MIDI cc1 (modwheel) */- var note = new NoteOn; /* create a NoteOn object */- if(event.value == 0)- /* because modwheel range is 0-127 and pitch range is 1-127, convert a modwheel value of 0 to 1 */- event.value = 1;- note.pitch = event.value; /* use cc value as note pitch */- note.velocity = 100; /* use velocity 100 */- note.send(); /* send note on */- var off = new NoteOff(note); /* create a NoteOff object that inherits the NoteOn pitch and velocity values */- var delayInBeats = GetParameter("Note Length")/100 + 0.1; /* retrieve the parameter value of the slider you created (add 0.1 to guarantee note on and off are not simultaneous) */- off.sendAfterBeats(delayInBeats); /* send note off after the length in beats is set via the slider */- }- }