内联变量
本文档讲解在卡拉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
- 行或音节的宽度和高度,这两个变量会被取整,所以也许和位置变量不完全吻合