如何解决音调JS-Transport.stop;不适用于预定事件
我正在使用Tone JS进行项目,并且正在使用Transport.scheduleOnce与Sampler安排事件。这是我到目前为止的内容,也是其中的fiddle(您可能需要单击“运行”几次才能听到小提琴最初加载时音频通过)
我的代码:
\w++
我正在尝试使用const sound = 'https://archive.org/download/testmp3testfile/mpthreetest.mp3';
let samplerBuffer;
const sampler = new Promise((resolve,reject) => {
samplerBuffer = new Tone.Sampler(
{
A1: sound
},{
onload: () => {
resolve()
}}
).toMaster();
})
sampler.then(() => {
Tone.Transport.scheduleOnce(() => {
samplerBuffer.triggerAttack(`A1`,`0:0`)
});
Tone.Transport.start();
setTimeout(() => {
console.log('Now should be stopping');
Tone.Transport.stop();
},1000)
})
方法在1秒钟后停止播放音频,但是似乎不起作用。我想我应该按照文档进行操作,所以哪里出问题了?
解决方法
Tone.Transport
正在触发您的样本。
如果您只想播放“自动点唱机”之类的声音,则可以使用Tone.Player
。
如果您确实需要一个采样器,则应研究Envelopes,因为采样器使用了一个采样器。
简而言之:Tone.Transport
就像音乐会中的指挥家一样。 Transport
仅设置时间(仅设置BPM而不设置播放速度)。 Tone.Transport.start()
将触发所有已注册的乐器(在您的情况下为采样器)开始执行您对其进行的编程设置。如果要停止在此模式下播放采样器。您可以执行samplerBuffer.releaseAll()
const sound = 'https://archive.org/download/testmp3testfile/mpthreetest.mp3';
let samplerBuffer;
const sampler = new Promise((resolve,reject) => {
samplerBuffer = new Tone.Sampler(
{
A1: sound
},{
onload: () => {
resolve()
}}
).toMaster();
})
sampler.then(() => {
Tone.Transport.scheduleOnce(() => {
samplerBuffer.triggerAttack(`A1`,`0:0`)
});
Tone.Transport.start();
setTimeout(function() {
console.log('Now should be stopping');
samplerBuffer.releaseAll();
// samplerBuffer.disconnect();
},1000)
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。