VDJPedia

Quick Sign In:  


 VDJ8scriptcn

VIRTUALDJ脚本模板

VirtualDJ 8 脚本说明



VDJ脚本是VIRTUALDJ 8 中编译操作命令的语言,
可用于皮肤、键盘热键或控制设备映射

其被设计的及其简单和短小 用于实现即便利又功能全面的操作,你可以通过多个脚本命令组合复杂的操作。
最基本的操作命令可以编写例如:
播放、暂停、跳至切点1、音量设为70%、速度增加0.5%
"play"、"pause"、"goto_cue 1"、"volume 70%"、"pitch +0.5%"

当然也可以编写复杂的组合命令,例如:
播放时交叉推子右移12.3%并启用Flanger效果
"play ? crossfader +12.3% & effect_active 'flanger' : deck 2 loop 4 & set '$myvar' 42"



Verbs|动作短语

基础元素是Verbs|动作短语你可以通过动作动词短语目录或软件设置内的控制窗口了解VirtualDJ动作短语
您也可以打开位于文档/VirtualDJ/Language文件夹的Chinese.xml文件,在<action>中查看全部Verb|动作短语命令及其含义。

Commands|命令定义

最基本的命令仅包含一个动作短语,例如播放或暂停|"play"或"pause"
根据不同的使用环境和情况 动作短语 也可以附加不同的修饰符和参数:

  • deck|指定碟盘: 在动作短语命令前面添加 "deck xx" 指定应用的碟盘。 xx 可以是"1","2","3","4"等等、音频左右侧|"left","right"、视频左右侧|"leftvideo","rightvideo"、默认或当前碟盘"default"或"active"。如果未指定,动作短语将应用到默认或由控制器映射或皮肤元素指定的所选碟盘。
  • parameters|附加参数: 动作短语可以定义一个或多个参数,这些参数的功能根据动作短语命令而定,参数可以是字符串、百分比、布尔值、时间、整数数值或十进制数值,例如
    启用Flanger效果、效果推子1的第二个参数设为100%、启用第二个采样鼓垫、将第三个采样音量设为100%
    "effect_active 'flanger'"、"effect_slider 1 2 100%"、"sampler_pad 2"、"sampler_volume 3 100%"

  • temporary|临时操作: 在末尾附加"while_pressed"让指定的动作短语仅在按钮按下时执行操作例如:
    按下时音量设为100%
    volume 100% while_pressed

完整的命令语法结构是:
[deck [deck]] 动作短语 [param1] [param2] .. [paramN] [while_pressed]

( [...] 表示可选 )


&|相联命令

如需编译较多复杂的操作命令,可以使用关联符号"&"串联命令,或者使用小写的问号"?" 和 冒号":" 编译条件状态运算的独立命令
使用 "命令1 & 命令2 & 命令3" 表示执行完命令1、然后执行命令2、最后执行命令3
使用 "命令1 ? 命令2 : 命令3" 表示查询命令1的条件状态,如果状态结果相符执行命令2,如果不符执行命令3

例如:
使用 "action_deck 1 ? 命令1 : 命令2" 如果按钮定义到控制器碟盘deck1上执行命令1,如果按钮定义到碟盘deck2上执行命令2 *查看"definition"xml 文件


操作或查询

命令可以定义为操作使用也可以定义为查询使用,根据语法环境和内容而定。
例如使用键盘热键执行播放|"play"则代表操作使用,执行后会开始播放;
将播放|"play"定义到控制设备映射LED指示灯时则代表查询使用, 如果正在播放将会亮灯,如果未在播放则会 灭灯

某些命令可以使用布尔或数值查询状态,根据参数而定:
- "crossfader" | 交叉推子用于查询时显示0.0至1.0之间的数值,如果数值大于0.5亮灯 小于0.5灭灯
- "crossfader 42%" | 交叉推子位于42%位置时亮灯,否则灭灯
某些命令可以显示字符串或数字,根据动作短语而定 *通常在动作短语开头添加get_
- "get_time_ms" 显示载入音轨的毫秒整数时间
- "get_artist" 显示载入音轨的艺术家信息

在关联命令中使用查询时,显示的结果由第一个操作而定。例如 play & loop | 播放&循环将会只显示碟盘正在播放,忽略循环的状态。
如果使用双关联符号 && 而非 &,表示查询的命令只有两个操作全部相符时才会亮灯
例如 play && loop | 播放&&循环只有两个命令全部相符时(碟盘正在播放且循环正在播放)时才会亮灯,其它时候均灭灯。


Parameters|参数类型

VDJ脚本支持六种参数类型:
- text: 文本需要用单引号 (') 或 双引号 (")括起来:载入'中国.mp3'文件 | "load '中国.mp3'"
- boolean: 定义关键词开、关、切换 | "on"、"off"、"toggle" *一般相当于1, 0 和 -1 *例如:关闭智能播放 | "smart_play off"
- time: 设定附加的毫秒参数"ms":前移100毫秒 | "nudge +100ms"
- integer: 整数:选择下一个效果 | "effect_select +1"
- decimal: 小数:交叉推子移动0.5 | "crossfader 0.5"
- percentage: 百分数:交叉推子移至百分之50 | "crossfader 50%"

大多数情况下小数和百分数的作用是相通的 *即除以100以后的值。
但也存在个别例外情况,比如动作短语调速 | "pitch", "pitch 100%"代表将调速推子移至中间,而"pitch 1.0"代表将调速推子调整到最大位置。

记住 "nudge +1" 和 "nudge +1.0" 也不一样,第一个是从第一拍开始移动,第二个相当于"nudge +100%"表示在歌曲末尾移动,通常情况下,应该使用百分数而非小数。


隐式参数

当动作命令被用于推子、旋钮、转盘等时,推子的数值将被添加为隐式参数。

隐式参数需要添加到命令末尾,作为现有参数之后的参数。
因此如果你的命令是音量 | "volume" 并且将其映射到推子,那么当你将推子移到 42% 位置时,命令反馈信息也将变为 "volume 0.42"
但如果你的命令是 "volume +10%", 那么该操作将反馈为 "volume +10% 0.42" 并且第二个参数0.42会被忽略因为动作短语音量仅支持一个。

如需修改隐式参数,可以使用一些动作短语像相乘参数、相加参数 | "param_multiply"、"param_add",等等...
因此 "param_multiply 0.1 & volume" 会将音量设为4.2%

如果需要将组合命令中的每一组独立子命令都附加隐式参数
例如编译 "crossfader & loop" 映射后,你将推子移动到 42%,操作将反馈为 "crossfader 0.42 & loop 0.42"
如果需要防止隐式参数在某些命令上执行,你可以使用关键词 "value" 指定隐式参数的运行
添加后 "crossfader value & loop" 将会反馈为 "crossfader 0.42 & loop"
(你可以在组合命令中附加无限数量的 "value" 每一个都可以被隐式参数替换)

另外,我们还需要知道推子|Slider需要附加一个小数参数, ("crossfader" -> "crossfader 0.42"),机械转盘|Jogwheel需要附加相对小数 ("crossfader" -> "crossfader +0.42", +1.0 代表转盘完整旋转一圈),而编码器|Encoder需要添加一个附加整数参数 ("crossfader" -> "crossfader +1")
如果你需要为动作短语推子|Slider使用编码器,这个整数会被自动转换为除以32的小数(因此将推子从0% 移动到 100%需要编码器32步)。因此在前面的例子中, "crossfader +1" 等同于 "crossfader +0.03125",如需其它解决方案你可以使用相乘参数 | "param_multiply"



Variables|变量类型

VDJ脚本可以在内部变量中存储状态或数字

  • Global : 如果变量的名称开头是 $ (像 "set $myvar"), 那么该变量将是两侧碟盘的全局变量
  • Local : 如果变量的名称开头是 % (像 "set %myvar") 或者 (像 "set 'myvar'"), 那么该变量是当前碟盘的局部变量 (如果用于其它碟盘可以有不同的数值).
  • Persistent Global : 如果变量的名称开头是 @$ (像 "set @$myvar"), 那么该变量为两侧碟盘的固定全局'global' 变量并且该值会在交叉会话中存储
  • Persistent Local : 如果变量的名称开头是 @% (像 "set @%myvar") 或者 @ (像 "set '@myvar'"), 那么该变量是当前碟盘的固定局部'local'变量 (如果用于其它碟盘可以有不同的数值) 并且该值会在交叉会话中存储

VirtuaDJ保持运行期间所有类型的变量都是固定的(他们并非控制器或皮肤本地指定的)

如需设置变量可以使用设定、切换、轮循 | "set"、"toggle"、"cycle"
如需读取变量可以使用变量、变量等于、变量小于 | "var"、"var_equal"、"var_smaller",等等...
使用变量的典型例子 "set '$myshift' 1 while_pressed" 位于SHIFT按钮,和 "var $myshift ? 命令1 : 命令2" 位于其它按钮


*网页制作:李明杰VIP - VIRTUALDJ中国官方总群:211360021

相关话题 :

FAQ VIRTUALDJ脚本应用实例
Wiki VIRTUALDJ脚本模板




VIRTUALDJ中国