音调 JS - Transport.stop();不适用于预定事件
Tone JS - Transport.stop(); does not work with scheduled events
我正在为一个项目使用 Tone JS,并且我正在使用它的 Transport.scheduleOnce to schedule events with the Sampler. Here is what I have so far, also here is a fiddle(您可能需要点击 运行 几次才能听到 fiddle 时的音频最初加载)
我的代码:
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)
})
我试图使用 Transport.stop()
方法在 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)
})
我正在为一个项目使用 Tone JS,并且我正在使用它的 Transport.scheduleOnce to schedule events with the Sampler. Here is what I have so far, also here is a fiddle(您可能需要点击 运行 几次才能听到 fiddle 时的音频最初加载)
我的代码:
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)
})
我试图使用 Transport.stop()
方法在 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)
})