gpt4 book ai didi

javascript - 单击一个按钮在 tone.js 中播放两个音符

转载 作者:行者123 更新时间:2023-11-30 06:24:23 29 4
gpt4 key购买 nike

我正在开发一个网络游戏,点击一个按钮应该连续播放两个音符。我可以使用上传的音频文件和 audio.onended 回调来完成。

function playMusic(){
audio.src = music_array[music_counter++];
audio.play();
audio.onended = function(){
playMusic();
};
}

我可以使用上面的代码块来播放整首歌曲。但是,使用这种方法我需要事先将所有音频文件上传到 html,我认为这不是一个好方法。所以,我正在调查 tone.js出于同样的目的,但我无法一个接一个地演奏音符。我试过像这样使用 for 循环:

music = ["C4;4n", "D4;4n", ...... , "G5;8n"];
for(var i=0; i<range; i++){
parts = music[music_counter++].split(';');
synth.triggerAttackRelease(parts[0], parts[1]);
}

for(var i=0; i<range; i++){
playNote();
}

playNote(){
parts = music[music_counter++].split(';');
synth.triggerAttackRelease(parts[0], parts[1]);
}

运气不好。我也查看了他们的文档和其他 stackoverflow 帖子。我一直无法找出解决方案。有人知道如何实现这一点吗?

最佳答案

我终于想出了办法。

var synth = new Tone.Synth().toMaster();

var music = [{"time": 0, "note": "A4", "duration": "16n"},
......
{"time": 23.5, "note": "A4", "duration": "8n"},
{"time": 24, "note": "G4", "duration": "4n"}];

function playMusic(){
var part = new Tone.Part(function(time, note){
//the notes given as the second element in the array
//will be passed in as the second argument
console.log(note);
synth.triggerAttackRelease(note.note, note.duration, time);
}, music).start(0);

Tone.Transport.start();
}

关于javascript - 单击一个按钮在 tone.js 中播放两个音符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51364039/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com