音调JS-过滤器不适用于采样器

问题描述

我正在使用Tone JS发出声音,我想为我的Sampler乐器添加一个过滤器,据文档了解,我可以通过在Sampler上使用connect方法并传入过滤器作为参数:

const filter = new Filter(20000,"highpass").toDestination();
this.sampler = new Sampler({
  urls: { C1: 'C1.wav' },baseUrl: "/static/samples/piano/",})
  .connect(filter)
  .toDestination();

在播放声音时,以上内容不适用滤镜效果,我不确定为什么吗?

解决方法

使用chain命令将采样器连接到过滤器,然后再连接到目标。然后使用onload回调开始声音。

尝试一下:

const filter = new Tone.Filter(20000,"highpass");
const sampler = new Tone.Sampler({
  urls: { C1: 'C1.wav' },baseUrl: "/static/samples/piano/",onload: () => {
    sampler.chain(filter,Tone.Destination);
    sampler.triggerAttackRelease(["D4"],3);
});