内联变量

本文档讲解在卡拉OK模板自动化时可用的内联变量$变量)。

如何使用内联变量(inline variables)

所有的内联变量头部都是一个$符号。内联变量只能用在template行,而不能用于code行。不过你可以在模板行的code区使用它们。

下面是一个在模板中使用内联变量的例子:

{\pos(**$x**,**$y**)\t(**$start**,**$end**,\bord0)}

高亮部分为内联变量。

当一个模板被应用时,首先要做的就是把所有的内联变量都找到,然后把它们替换成对应的值。例如在上面的模板中$x$y就被每个音节的位置属性(坐标x,y)替代, $start$end分别被音节的开始时间和结束时间替代。

字母的大小写对于内联变量的使用没有影响,$start, $START 或是 $StArT 都会起作用。

限制

内联变量并不“聪明”:无论你把它们放在哪或是如何使用它们,都只会生成同样的代码,它也不知道自己被用在了什么标签上。不是每个变量都能在所有的地方成功使用,某些变量的含义受用法的影响,例如 retime 函数。这些情况下,内联变量也许不适合使用,而你需要使用code区。

因为内联变量是在你应用模版时首先被赋值的,所以你无法通过任何方式来改变它的值。

对于做特效来说,使用内联变量是一个简便的方式,但对于多数高级特效来说,使用它们也许不是最好的选择。

所有的位置、大小内联变量(例如$y $right $width)都约取最近的数据(像素数取整),不像你通过code区从内部数据结构得到的值,可精确到亚像素精度。(即小数点后面有数字)

行(Line)变量和 音节(Syllable)变量

内联变量同时适用“line”和“syllable”两种模式。“line”模式时,变量为被处理行的信息,“syl”模式时,则为被处理的音节的信息。

内联变量中也有很多变量能够自动适应,它们既能变成line模式,也能变成syl模式,这取决于它们的template修饰语。 自适应变量只有在pre-line中,会自动为行变量,其它地方将自动为音节变量

变量

记忆方法:行变量开头是小写l,音节变量开头是小写s

行变量 Line variants

layer
行所在层数
lstart, lend, ldur, lmid
行的开始时间、结束时间、持续时间、中点时间(=0.5*[开始时间+结束时间]), 都以毫秒(ms)为单位
style
行的样式名称
actor
说话人名称
margin_l, margin_r
有效左边距和右边距(如该行值为非零数,否则将取决于样式)
margin_v, margin_t, margin_b
有效垂直边距、顶部和底部边距, 垂直边距和顶部边距含义相同
syln
行内音节的个数
li
行数(文件中的第一个自然行对应数值为1)
lleft, lcenter, lright
行的左边缘、水平中心和右边缘距离, 会将设置好的边距和对齐方式算在内, 取整数
ltop, lmiddle, lbottom
行的上边缘、垂直中心和下边缘距离,会将设置好的边距和对齐方式算在内,取整数
lx, ly
对\pos代码使用的x,y坐标(当对齐方式未被重写时)
lwidth, lheight
行的宽度和高度(以像素为单位), 这两个变量会被取整,所以也许和位置变量(positioning variables)不完全吻合

音节变量 Syllable variants

sstart, send, smid
音节(相对于行)的开始时间、结束时间、中点时间,适合配合\t和\move使用
sdur, skdur
音节的持续时间,前者以毫秒为单位,后者以厘秒为单位
si
该行的第几个音节
sleft, scenter, sright
音节的绝对的左边缘、水平中心和右边缘距离,从屏幕左边缘开始计算, 配合\pos和\move
sbottom, smiddle, stop
音节的绝对的下边缘、垂直中心和上边缘距离,从屏幕左边缘开始计算, 配合\pos和\move, 可根据假名定位进行调整
sx, sy
音节在默认对齐方式下的绝对位置(x,y),配合\pos和\move
swidth, sheight
音节的宽度和高度(以像素为单位)这两个变量会被取整,所以也许和位置变量不完全吻合

自适应变量 Automatic variants

start, end, mid
行或音节的开始时间、结束时间、中点时间,行是绝对时间,音节是相对行的时间(通用,自动进行判断)
dur, kdur
行或音节的持续时间,前者以1ms为单位1,后者以10ms为单位1
i
行数或音节数
left, center, right
行或音节的绝对的左边缘、水平中心和右边缘距离, 从屏幕左边缘开始计算
top, middle, bottom
行或音节的绝对的上边缘、垂直中心和下边缘距离,从屏幕左边缘开始计算
x, y
行或音节的默认对齐方式下的坐标(x,y)
width, height
行或音节的宽度和高度,这两个变量会被取整,所以也许和位置变量不完全吻合