跳转到内容

LNNBot/指令/musicjs*:修订间差异

此后如竟没有炬火,我便是唯一的光。
DGCK81LNN留言 | 贡献
无编辑摘要
DGCK81LNN留言 | 贡献
无编辑摘要
第38行: 第38行:
|-
|-
| <code>-</code>
| <code>-</code>
| 延音线 || 将前一个音符的时值延长一拍。
| 延音线 || 将前一个音符的时值延长一拍。可以跨过小节线甚至减时线的起止
|-
|-
| <code><nowiki>|</nowiki></code>
| <code><nowiki>|</nowiki></code>

2025年9月20日 (六) 22:28的版本

musicjs*
属性 别名指令
父级指令 musicjs

musicjs*musicjs 的衍生指令,提供了一个 aj() 函数用于以简谱编写旋律。

用法

musicjs* <code...>

musicjs 提供的函数和变量之外,musicjs* 提供了一个 aj() 函数,接受一个字符串作为乐谱,解析后使用 musicjs 提供的函数和变量进行演奏。

musicjs* 还会定义一个 dd 变量,初始为 0,控制音符 6 与基准音(由 baseFrequency 定义)相差的半音数,使用 >< 会增减其值。

aj() 每次被调用时,内部的“时值乘数”变量会被初始化为 1,它与 bpm 及圆括号的层数共同定义一“拍”的时长。

aj() 乐谱语法
字符 名称 作用
17 音符 以当前的一拍为时值创建对应的简谱音符。
0 休止符 休止一拍。
, 低音点 将前一个音符降低一个八度。
' 高音点 将前一个音符升高一个八度。
. 附点 将前一个音符的时值延长半拍。
连用多个时,每个后续附点延长的时值是前一个附点的一半。
- 延音线 将前一个音符的时值延长一拍。可以跨过小节线甚至减时线的起止。
| 小节线 无作用,仅辅助阅读。
( ) 减时线 括号内一拍的时长减半,可以嵌套。
b 降号 使下一个音符降低一个半音。不会影响后续的音符。
# 升号 使下一个音符升高一个半音。不会影响后续的音符。
[ / ] 分声部 方括号内由斜杠分隔的各部分将同时开始演奏。
顺序最后的一个部分演奏结束时,无论其他各部分是否演奏完毕,都会继续演奏方括号之后的乐谱。
> 升调 升调一个半音。
< 降调 降调一个半音。
f 力度:强 gain 设为 0.75,若已经是 0.75 则设为 1。
m 力度:中 gain 设为 0.5。
p 力度:弱 gain 设为 0.33,若已经是 0.33 则设为 0.18。
t 开始三连音或结束连音 如果当前时值乘数为 1,则将其设为 ;否则设为 1。
d[1] 开始 连音 是 2 的整数次幂,则将时值乘数设为 0.75;否则设为
r:[1] 开始 连音 将时值乘数设为
s 延长 将前一个音符实际播放的时间延长一拍,不影响下一个音符开始的时间。
可连用,可套在减时线内使用来延长更短的时长。
  1. 1.0 1.1 可以是正整数或小数;在这些指令之后不可直接跟音符或休止符,需要加空格分隔开。

轶闻

  • 除了 bpmf 直接取自共识的乐谱记号外,乐谱语法中的几个字母指令字符 tdrs 分别取自 triplet / tuplet、irregular division、ratio、sustain。