aardio 文档

aardio 范例: 合成并输出音乐

//合成并输出音乐
//教程链接:  https://mp.weixin.qq.com/s/Feq3dT7r7G6F0cXlpXpRZQ
import win.util.lyric;
var lyric = win.util.lyric();
lyric.show();

//打开播放设备
import sys.midiOut;
var midiOut = sys.midiOut();

/*
可以在主线程里直接演奏音乐。
也可以将 midiOut 对象传入一个或多个独立线程,
要注意 close 函数会同时关闭所有线程的同一设备对象。
*/
thread.invoke( function(midiOut,lyric){

    //指定字幕回显函数
    midiOut.log = function(v) lyric.text = v;

    //不同线程指定不同通道,就可以轻松实现多乐器同时合奏。
    midiOut.channel = 1;

    //切换乐器,默认设置当前通道(不要用参数@2指定其他通道)
    midiOut.changeInstrument(12);

    midiOut.play("
        两只老虎,
        1__,2__,3__,1__
        两只老虎,
        1__,2__,3__,1__
        跑得快,
        3__,4__,5__,__
        跑得快,
        3__,4__,5__,__
        一只没有耳朵
        5_,6_,5_,4_,3__,1__
        一只没有尾巴,
        5_,6_,5_,4_,3__,1__
        真奇怪
        2__,'5__,1__,__
    ","C4"/* 1=C */,250/* ♩=120 */);  

    /*
    所有音符、指令、字幕使用逗号、竖线、换行(兼容任何换行符格式)之一分隔。
    忽略空格、制表符。
    支持 sys.midiOut.notes 名字空间指定的全部 SPN 音名,SPN音名中的 -1 必须省略,并用小写 s 代替升音符 ♯(Sharp)。
    支持简谱数字音符记号:1 2 3 4 5 6 7
    数字音符后可加1~5个单引号以提升 1~5 个八度音高,例如: 1' 2' 3' 4' 5' 6' 7' 
    数字音符前可加1~5个单引号以降低 1~5 个八度音高,例如:'1 '2 '3 '4 '5 '6 '7 
    可在音符前加 # 号表示升高半个音,例如:"#1,__,#'5___,#6'___"
    0 或 REST 为休止符
    可选在上面用参数 @2 指定音符 1 的实际音高,该参数可用字符串指定 sys.midiOut.notes 定义的音名。
    一个下划线表示表示一个延时单位:可选在上面用参数 @3 指定延时单位的毫秒数,默认为 250 毫秒
    前面的音符(或下划线)与后面的下划线可以连起来写,例如 "5,__,_,5___"
    双下划线 ‗ 表示半个下划线表示的延时,例如"5,‗,5‗",多个 ‗ 不允许连着写。
    音符前加前面加负号表示消音(停止演奏指定音符),例如:"5___,-5,#'5___,-#'5"
    可以直接写函数,函数名后必须有括号 () 且必须有参数,例如:"changeInstrument(10),1__,2__,3__"
    直接写其他字符串表示字幕。
    */

    lyric.close();

},midiOut,lyric);

win.loopMessage();
Markdown 格式