aardio 文档

aardio 范例: 合成并输出音乐

使用编程记谱法合成音乐 | 演奏起风了 | 圈住小猫音效

//合成并输出音乐
//使用编程记谱法合成音乐: https://www.aardio.com/zh-cn/doc/library-guide/std/sys/midiOut.html
//演奏起风了: https://www.aardio.com/zh-cn/doc/example/Media/Audio/TheWind.html
//圈住小猫音效: https://www.aardio.com/zh-cn/doc/example/plus/draw/trap-the-cat.html

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 在工作线程同步启动,在界面线程使用延时器异步启动
    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 */);  

    lyric.close();

},midiOut,lyric);
// 使用 midiOut.playAsync(notes,do,tempoMs) 则会自动创建工作线程播放音乐

win.loopMessage();
Markdown 格式