函数速查
函数的参数、默认值和用法与当前版本保持同步。content 表示音符或花括号包裹的内容,label 表示已声明的标签,length 可使用 px 或 em。
没有匹配的函数。
@note@dash@bar@div@dot@tuplet@voice@voices@br@page@head@stack@up@down@arp@grace@tie@beam@dyn@box@volta@adjust@set@key@meter@tempo@program@text@symbol
@note
别名:@n
创建音符
| 参数 | 类型 | 默认值 |
|---|---|---|
name | string | 必填 |
acc | string | "" |
octave | number | 4 |
color | string | "#000" |
@note(name, acc, octave, color)
参数说明:
- name: [必填]音符名,可以是大写字母或者数字,不允许小写字母(会和降号冲突)。此参数写法有语法糖,见下。
其中 0 或 Z 是休止符,8 是隐形占位,9 或 X 是只打拍不发音的节拍记号(显示为 X),这三者都不显示升降号和八度点。
- acc: [可选]的额外升降号字符串,例如 "##" 表示再升两个半音,"b" 表示再降一个半音。
- octave: [可选]八度,类型为数字。如果 name 是字母,则此项代表绝对八度;如果是数字,则此项代表相对八度。
语法糖:[音名][升降号][八度] 音名和升降号可以交换
例:A3# === @note(A3#) === @note(A, #, 3)
也支持 A99##bn 的写法。可以设置 note.octave 改变默认的绝对八度
支持 数字音名, 此时 octave 为相对八度
支持使用数字音名时使用相对八度,如 "1,," 代表在当前基准音(由上下文属性"1=?"决定)的基础上降低两倍八度,"1'" 代表在当前基准音的基础上提高一个八度
例:1#' === @note(1#') === @note(1, #, 1)。此时支持升降号写音名前面,如 #1'
@dash
别名:@-
增时线
@dash() 创建一根增时线
语法糖: 一个 '-' 代表一个 @dash()
@bar
别名:@|
小节线
| 参数 | 类型 | 默认值 |
|---|---|---|
type | number | 0 |
length | length | 1.25em |
@bar(type, lengthEM) 创建一个小节线
语法糖:
- type0: '|' 普通小节线
- type1: '||' 终止小节线 左细右粗
- type2: '|:' 重复小节线 左粗右细
- type3: ':|'
- type4: ':|:' 左右反复
@div
别名:@/
减时线
| 参数 | 类型 | 默认值 |
|---|---|---|
第 1 个参数 | content | 必填 |
n | number | 1 |
autobeam | boolean | true |
@div(C1, 2): C1下方创建2根减时线
@/({C1 C2 @dash()}, 3): C1、C2和增时线下方创建3根减时线并连接
语法糖:在音符后加斜杠'/',可以多个
@div(C1, 2) === C1//
@div(C1 C2/ @dash(), 2) === {C1 C2/ @dash()}//
设置命名参数前缀: div
@dot
别名:@.
附点
| 参数 | 类型 | 默认值 |
|---|---|---|
第 1 个参数 | content | 必填 |
n | number | 1 |
@dot(C1, 2): C1右侧创建2个点 仅接收一个可接收元素
语法糖:在目标后加'.',可以多个
@dot(C1, 2) === C1..
{1^2}. === {1.^2}
@dot(C1 C2/ @dash(), 2) 报错 因为点只能接收一个可见时间元素
@tuplet
多连音
| 参数 | 类型 | 默认值 |
|---|---|---|
第 1 个参数 | content | 必填 |
normal | number | 必填 |
@tuplet({1/23}, 4): 内容含5个最短时值单位,压缩到4倍最短单位的总时长,所以是八分音符的五连音,总时长为二分音符@voice
别名:@v
声部
| 参数 | 类型 | 默认值 |
|---|---|---|
第 1 个参数 | content | 必填 |
name | string | "" |
支持额外参数(位置参数类型:string)。
@voice({}, name, 歌词1名=歌词1, 歌词2名=歌词2, ...)
第一个参数为音符内容,第二个参数为写在最左侧的声部名称(可不填);
命名参数为歌词左侧的名称和内容,可以任意多个。也可以是位置参数,表示不需要名称。
例:
@voice({C1 D1 E1}, 钢琴, 男=ha ha ha, 女=la la la)
@voice({C1 D1 E1}, , ha ha ha, 女="la la la") 表示音符和第一个歌词都没有名称
歌词可以被引号包裹,如果包含逗号等歧义字符一定需要引号
语法糖:
N(name): C1 D1 E1
L(name): ha ha ha...
L: ...
前面可以有任意空白,但最后换行表示结束。歌词此时允许有逗号而不加引号
如果一定要换行,最后加上'\'
英文歌词用空格和连字符'-'分词,用'@'占位
@voices
别名:@vs
多个声部
支持额外参数(位置参数类型:content)。
@voices(
@voice({C1 D1 E1}, 钢琴, 男=ha ha ha),
@voice({C2 D2 E2}, , "la la la")
)
语法糖:当多个 voice 用 voice 的语法糖写在一起时,会自动创建一个 voices 组件包裹它们。
例:
N(钢琴): C1 D1 E1
L(男): ha ha ha
N: C2 D2 E2
L: la la la
@br
换行
| 参数 | 类型 | 默认值 |
|---|---|---|
offset | number | 1 |
@br(offset=1): 在后续事件前偏移指定行数
@br() === @br(1)
@br(2): 空出一行后继续
语法糖: [仅限顶层]至少连续两个换行
@page
设置文档页面尺寸、边距、最小谱面行间距和页码
| 参数 | 类型 | 默认值 |
|---|---|---|
width | length | 794px |
height | length | 0px |
top | length | 45px |
bottom | length | 48px |
left | length | 40px |
right | length | 40px |
gap | length | 1em |
numbering | string | "" |
@page(width=794px, height=1123px, top=48px, bottom=48px, left=40px, right=40px, gap=1em, numbering="1/1")@head
提供左、中、右三块布局,常用于曲谱头部信息展示;也可用连续的 H.*: 行声明构造
| 参数 | 类型 | 默认值 |
|---|---|---|
left | content | "" |
center | content | "" |
right | content | "" |
gap | length | 5px |
@head(left={{@key(C) @meter(4,4)}}, center={@text(标题)}, right={@text(作者)})
语法糖:相邻的 H.*: 声明合并为一个 head,每条声明生成对应槽的一行;空行或普通内容结束组合
H.title: 标题 center 槽,预设大字号居中 Text
H.subtitle: 副标题 center 槽,预设小字号居中 Text
H.author: 作者 right 槽,预设小字号右对齐 Text
H.signature: 1=C 4/4 left 槽,同一行生成 Key 和 Meter
H.tempo: 94 left 槽,生成 Tempo
H.left: / H.center: / H.right: 接受对应槽的任意零时长 DSL 内容
以 @ 或 { 开头时按 DSL 解析,否则按该字段的裸文本规则生成 Text@stack
临时多声部
支持额外参数(位置参数类型:content)。
@stack(content1, content2, ...)
语法糖: &
{content1} & {content2} & ...
表示content1和content2在时间上完全重叠,通常用于和声等需要对齐的场景。可以有任意多个参数,至少需要两个参数。
@up
把同一时间位置的可见对象向上堆叠
支持额外参数(位置参数类型:content)。
@up(content1, content2, ...)
语法糖: ^
{content1} ^ {content2} ^ ...
第一个参数是宿主,其余依次叠在它的上方,常用于和弦、变速记号、音符注释。
全体成员折叠成一个事件、共享宿主的时值;需要各自独立时值的并行分支请用 & / @stack。
@down
把同一时间位置的可见对象向下堆叠
支持额外参数(位置参数类型:content)。
@down(content1, content2, ...)
语法糖: _
{content1} _ {content2} _ ...
第一个参数是宿主,其余依次叠在它的下方,常用于力度记号等写在音符下面的标记。
与 ^ 混写时全部绑到同一个宿主:1^2_3 表示 2 在上、3 在下。
@arp
别名:@arpeggio
琶音
| 参数 | 类型 | 默认值 |
|---|---|---|
content | content | 必填 |
direction | string | "" |
@arp({1 ^ 3 ^ 5}) 默认从低到高,无箭头
@arp({1 ^ 3 ^ 5}, direction=up) 从低到高,顶端带箭头
@arp({1 ^ 3 ^ 5}, direction=down) 从高到低,底端带箭头@grace
倚音
| 参数 | 类型 | 默认值 |
|---|---|---|
host | content | 必填 |
grace | content | 必填 |
side | string | "pre" |
支持额外参数。
前倚音: @grace(宿主, 倚音, side=pre) 后倚音: @grace(宿主, 倚音, side=post)
语法糖:'>' 与 '<',箭头永远指向宿主
2>1 前倚音:2 是 1 的倚音,画在 1 的左上角
1<2 后倚音:2 是 1 的倚音,画在 1 的右上角
{3 2}>1 多个倚音用大括号括起来
1>2>3 允许嵌套:1 是 2 的倚音,2 是 3 的倚音
倚音默认就是八分音符(自带一条减时线),再写 '/' 变成十六分音符@tie
连音线
支持额外参数(位置参数类型:label)。
@tie(label1, label2, ..., height=0.5em)
将端点依次连接;同行用一条弧线,跨行拆成分段连接;若不传端点则找最近的@beam
减时线连接
支持额外参数(位置参数类型:label)。
@beam(label1, label2, ...): 将多个已标记音符按顺序连接为减时线组@dyn
渐强渐弱
| 参数 | 类型 | 默认值 |
|---|---|---|
from | label | 必填 |
to | label | 必填 |
dv | number | 必填 |
@dyn(from, to, dv) 在两个标签之间线性改变力度
from、to 必须位于同一音轨且时间不同
dv 为正时渐强,为负时渐弱;变化量叠加在每个音符原有力度上
1 ^ $p 2@a 3 4@b
@dyn(a, b, 24)@box
给目标结构或对象加外框
| 参数 | 类型 | 默认值 |
|---|---|---|
第 1 个参数 | content | 必填 |
padding | length | 0em |
stroke | length | 1px |
width | length | -1px |
@box(content, padding=0.2em, stroke=0.08em, width=-1px)@volta
反复房子
| 参数 | 类型 | 默认值 |
|---|---|---|
from | label | 必填 |
to | label | 必填 |
pass | number | 必填 |
支持额外参数(位置参数类型:number)。
@volta(from, to, pass, ...) 只在指定遍数演奏的一段区间
from 和 to 是区间首末音符的标签,因此房子可以横跨谱面行
pass 是遍数:整段谱面演奏到第几遍时才播这里,必填正整数
再写几个遍数就是几遍共用一个房子,顺序随意,标签按升序写成 1.2.
|: 1 2 | 3@a 4@b :| 5@c 6@d | 7
@volta(a, b, 1) @volta(c, d, 2)@adjust
别名:@adj
微调目标的位置与占位
| 参数 | 类型 | 默认值 |
|---|---|---|
第 1 个参数 | content | 必填 |
dx | length | 0px |
dy | length | 0px |
dw | length | 0px |
dh | length | 0px |
@adjust(content, dx=0px, dy=0px, dw=0px, dh=0px)
dw/dh 在排版前增减占位,最终尺寸不小于 0;dw 按原左右占位比例分配,dh 调整下方;
dx/dy 在排版完成后平移目标,邻居不会让开,因此可以故意重叠。
括住的若是关系对象(连音线等)且其中没有对象,平移的就是这条关系对象@set
设置局部默认值
支持额外参数。
@set(fontSize=20) 则当前块内默认字体变为20px
可以设置其他函数的默认值: {函数名}.{属性}=值,例:
@set(note.octave=5, note.color=#f00)
注意:@set 作用域仅在其所处 '{}' 内、其出现之后。离开当前作用域会恢复为之前的设置。此设置和时序无关,类似于局部变量。
@key
别名:@1
设置时间线上的 1= 调性基准
| 参数 | 类型 | 默认值 |
|---|---|---|
tonality | string | 必填 |
size | length | 1em |
@1(C4) 或 @key(F#3)
它不会修改 parser 的局部变量,而是在时间固化阶段影响其后的数字音名解释
画出来的记号只含音名和升降号,不含八度;通常叠在音符上方书写:1 ^ @1(F#)@meter
设置拍号
| 参数 | 类型 | 默认值 |
|---|---|---|
num | number | 必填 |
den | number | 必填 |
size | length | 0.7em |
@meter(6, 8) 设置 6/8 拍号@tempo
设置时间线上的速度
| 参数 | 类型 | 默认值 |
|---|---|---|
bpm | number | 必填 |
size | length | 1em |
@tempo(96) 将其后的时间状态速度设置为 96 BPM@program
别名:@instrument
设置当前音轨的 MIDI 音色
| 参数 | 类型 | 默认值 |
|---|---|---|
program | number | 必填 |
@program(40) 将后续音符切换到 MIDI program 40@text
文本标记。括号内可直接换行,支持 left、center、right 对齐
| 参数 | 类型 | 默认值 |
|---|---|---|
第 1 个参数 | string | 必填 |
size | length | 1em |
lineheight | number | 1.25 |
align | string | "left" |
@text(进入主题)
语法糖:直接写双引号字符串,如 "进入主题";可跨行,引号未配对则不生效@symbol
别名:@$
创建一个乐谱符号
| 参数 | 类型 | 默认值 |
|---|---|---|
name | string | 必填 |
size | length | 0.5em |
@symbol(name, size)
语法糖: $name
内置:
$tr 颤音:本音与调内上方二度交替
$fermata 延长记号:覆盖区间速度减半,目标音实际时长翻倍
$prall 上波音:本音、调内上方二度、本音
$mordent 下波音:本音、调内下方二度、本音
$accent 重音
$ppp 极弱
$pp 很弱
$p 弱
$mp 中弱
$mf 中强
$f 强
$ff 很强
$fff 极强
$dc 从头反复:跳回曲首再演一遍
$ds 从记号处反复:跳回最近的 $segno
$segno 反复记号:D.S. 的回跳目标
$fine 终止记号:回跳之后经过这里就结束乐曲