跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
社群首页
帮助
希顶相关网站
希顶社区官网
希服维基
Nyoeghau翻译器
〇改希顶转写器
语圈山海经
搜索
搜索
外观
创建账号
登录
个人工具
创建账号
登录
查看“︁LNNBot/指令/musicjs*”︁的源代码
页面
讨论
不转换
不转换
简体
繁體
新加坡简体
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
←
LNNBot/指令/musicjs*
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于这些用户组的用户执行:
用户
、storagereadable
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
{{LNNBot指令信息 |别名= |属性=别名指令 |所属插件= |父级指令=musicjs |所需权限= }} '''<code>musicjs*</code>''' 是 {{LNNBot指令链接|musicjs}} 的衍生指令,提供了辅助函数用于更便捷地编写旋律。 == 用法 == <pre>musicjs* <code...></pre> 除 <code>musicjs</code> 提供的函数和变量之外,<code>musicjs*</code> 还提供一些由用户定义的函数用来用更简洁的语法编写旋律。 用户可以使用 <code>[[LNNBot/指令/evaluate|eval]]</code> 指令向 <code>musicjs*</code> 添加辅助函数,只需在对象 <syntaxhighlight inline lang="javascript">storage.musicjsX</syntaxhighlight> 上创建属性,名称建议与辅助函数名称相同,值为函数定义的 JavaScript 源代码。 === <code>aj()</code> === 辅助函数作者:{{LNN}} <code>aj()</code> 函数接受一个字符串作为乐谱,解析后使用 <code>musicjs</code> 提供的函数和变量进行演奏。 此辅助函数还定义了一个变量 <code>dd</code>,控制音符 <code>6</code> 与基准音(由 <code>baseFrequency</code> 定义,默认为 440 Hz)相差的半音数,初始为 0(即 1=C4),使用 <code>></code>、<code><</code> 会增减其值。例如使用 5 个 <code>></code> 可使 1=F4。 <code>aj()</code> 每次被调用时,会将 <code>gain</code> 设为 0.5,并将内部的“时值乘数”变量初始化为 1,它与 <code>bpm</code> 及圆括号的层数共同定义一“拍”的时长。 {| class="wikitable" |+ <code>aj()</code> 乐谱语法 ! 字符 !! 名称 !! 作用 |- | <code>1</code>–<code>7</code> | 音符 || 以当前的一拍为时值创建对应的简谱音符。 |- | <code>0</code> | 休止符 || 休止一拍。 |- | <code>,</code> | 低音点 || 将前一个音符降低一个八度。 |- | <code>'</code> | 高音点 || 将前一个音符升高一个八度。 |- | <code>.</code> | 附点 || 将前一个音符的时值延长半拍。<br>连用多个时,每个后续附点延长的时值是前一个附点的一半。 |- | <code>-</code> | 延音线 || 将前一个音符的时值延长一拍。可以跨过小节线甚至减时线的起止。 |- | <code><nowiki>|</nowiki></code> | 小节线 || 无作用,仅辅助阅读。 |- | <code>(</code> <code>)</code> | 减时线 || 括号内一拍的时长减半,可以嵌套。 |- | <code>b</code> | 降号 || 使下一个音符降低一个半音。不会影响后续的音符。 |- | <code>#</code> | 升号 || 使下一个音符升高一个半音。不会影响后续的音符。 |- | <code>[</code> <code>/</code> <code>]</code> | 分声部 || 方括号内由斜杠分隔的各部分将同时开始演奏。<br>顺序最后的一个部分演奏结束时,无论其他各部分是否演奏完毕,都会继续演奏方括号之后的乐谱。 |- | <code>></code> | 升调 || 升调一个半音。 |- | <code><</code> | 降调 || 降调一个半音。 |- | <code>p</code> | 力度:弱 || 将 <code>gain</code> 设为 0.33,若已经是 0.33 则设为 0.18。 |- | <code>m</code> | 力度:中 || 将 <code>gain</code> 设为 0.5。 |- | <code>f</code> | 力度:强 || 将 <code>gain</code> 设为 0.75,若已经是 0.75 则设为 1。 |- | <code>t</code> | 开始三连音或结束连音 || 如果当前时值乘数为 1,则将其设为 2 / 3;否则设为 1。 |- | <code>d</code>''N''<ref name="division-num">''M''、''N'' 可以是正整数或小数;在这些指令之后不可直接跟音符或休止符,需要加空格分隔开。</ref> | 开始 ''N'' 连音 || 若 ''N'' 是 2 的正整数次幂,则将时值乘数设为 0.75;否则设为 <math>\frac{2^{\lfloor\log_2N\rfloor}}N</math>。''N'' 为 1 时实际效果为结束连音。 |- | <code>r</code>''M''<code>:</code>''N''<ref name="division-num"/> | 开始 ''M'':''N'' 连音 || 将时值乘数设为 ''N'' / ''M''。 |- | <code>s</code> | 延长 || 将前一个音符实际播放的时间延长一拍,不影响下一个音符开始的时间。<br>可连用,可套在减时线内使用来延长更短的时长。 |} <references/> {{collapse|示例:《Somebody That I Used To Know》副歌| <syntaxhighlight lang="javascript">//musicjs* bpm=129 aj('>>>>>') // 1=F aj(`[f 0(5561'1'6)|4'.(3')3'-| 0(2'3'2'2'2'2'|5'5'5'5'4')3'(2')| 1'-(61'1'6)|4'.(3')3'(66)| (2'3'3'3'3'.(2')2'6)|655-| /pp 3''--0|00(5''--2''| -3''----)0|1''-(5'--2''| -3''----)0|00(5''--2''| -3''----02''|-1''-----2''|-) /m 6,,.(6,,)5,,.(5,,)|4,,.(4,,)5,,.(5,,)| 6,,.(6,,)5,,.(5,,)|4,,.(4,,)5,,.(5,,)| 6,,.(6,,)5,,.(5,,)|4,,.(4,,)5,,.(5,,)| 6,,.(6,,)5,,.(5,,)|4,,.(4,,)5,,.(5,,)| ]`) aj(`[f 0(5561'1'6)|4'.(3')3'-| 0(2'3'2'2'2'2'|5'5'5'5'4')3'(2')| 1'-(61'1'6)|3'.(2')2'-| (2'3'3'3'1'2'2'2')|2'1'1'-| /pp (03''----)0|00(5''--2''| -3''----)0|1''-(5'--2''| -3''----)0|00(5''--2''| -3''----02''|-1''-----2''|-) /m 6,,.(6,,)5,,.(5,,)|4,,.(4,,)5,,.(5,,)| 6,,.(6,,)5,,.(5,,)|4,,.(4,,)5,,.(5,,)| 6,,.(6,,)5,,.(5,,)|4,,.(4,,)5,,.(5,,)| 6,,.(6,,)5,,.(5,,)|4,,.(4,,)5,,.(5,,)| ]`) aj(`[f 0000|0000| (2'3'3'3'1'2'2'2')|2'1'1'-| 0000|0000| (2'3'3'3'1'2'2'(2'3'))|2'1'1'-| /p (50502'02'0|3'4'5'3')2'0| (1'01'07070|6060)50| (50502'02'0|3'4'5'3')2'0| (60)00(70)|(60)00((2'3')0)| /pp (03''----)0|00(5''--2''| -3''----)0|1''-(5'--2''| -3''----)0|00(5''--2''| -3''----02''|-1''----)0| /m 6,,.(6,,)5,,.(5,,)|4,,.(4,,)5,,.(5,,)| 6,,.(6,,)5,,.(5,,)|4,,.(4,,)5,,.(5,,)| 6,,.(6,,)5,,.(5,,)|4,,.(4,,)5,,.(5,,)| 6,,.(6,,)5,,.(5,,)|4,,.(4,,)5,,.(5,,)|6,, ]`) </syntaxhighlight>}} === <code>ip7()</code> === 辅助函数作者:{{U|6xL-Bro islptng}} <code>ip7()</code> 函数接受一个乐谱字符串和一个 BPM 数字。乐谱语法见此页面:[https://test.vudrux.site/islp/music.html ip7 music] === <code>tr3()</code> === 辅助函数作者:{{U|cycwin}} 待补充 == 轶闻 == * 除了 <code>b</code>、<code>p</code>、<code>m</code>、<code>f</code> 直接取自共识的乐谱记号外,<code>aj()</code> 乐谱语法中的几个字母指令字符 <code>t</code>、<code>d</code>、<code>r</code>、<code>s</code> 分别取自 '''t'''riplet / '''t'''uplet、irregular '''d'''ivision、'''r'''atio、'''s'''ustain。函数名 <code>aj</code> 是“'''A'''SCII '''简'''谱”的缩写。
该页面使用的模板:
Template:!!
(
查看源代码
)
Template:!-
(
查看源代码
)
Template:Collapse
(
查看源代码
)
Template:Infobox
(
查看源代码
)
Template:LNN
(
查看源代码
)
Template:LNNBot指令信息
(
查看源代码
)
Template:LNNBot指令链接
(
查看源代码
)
Template:U
(
查看源代码
)
Module:String
(
查看源代码
)
返回
LNNBot/指令/musicjs*
。