首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Tone.js向现有音频流添加筛选器

使用Tone.js向现有音频流添加筛选器
EN

Stack Overflow用户
提问于 2022-02-16 16:56:17
回答 1查看 349关注 0票数 0

我能够使用双四分机将过滤器添加到现有的音频流中,但对尝试使用Tone.js很感兴趣。但我有问题把一切联系在一起。当我试图将过滤器连接到一个DomException时,我一直得到一个audioContext。

代码语言:javascript
复制
function addFilter(fq) {

    var audioCtx = new (window.AudioContext || window.webkitAudioContext);
    var mediaElem = document.getElementById('myAudioElement');

    //Tone.context = audioCtx;
    Tone.context.createMediaElementSource(mediaElem)

    const bqfilter = new Tone.Filter(fq, 'lowpass').toDestination();

    Tone.connect(bqfilter, audioCtx.destination);
    //bqfilter.chain(audioCtx.destination)
});

当我试图将过滤器连接或链接到DomException时,错误消息仅为audioCtx.destination。这似乎跟我在网上找到的大多数其他例子一样,所以我不知道为什么会抛出异常。

*编辑:包括来自dev控制台的堆栈跟踪

代码语言:javascript
复制
Uncaught DOMException                 Tone.js:formatted:2181 
connect     @ Tone.js:formatted:2181
To          @ Tone.js:formatted:8710
(anonymous) @ audiocontrols:983
dispatch    @ jquery.min.js:2
v.handle    @ jquery.min.js:2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-16 17:47:25

您不需要创建自己的AudioContext。您可以只使用Tone.js中的一个。事实上,这甚至是必需的。否则,您自己的AudioNode无法连接到Tone.js创建的那个。

下列措施应能发挥作用:

代码语言:javascript
复制
function addFilter(fq) {
  const audioElement = document.getElementById('myAudioElement');
  const mediaElementSource = Tone.context.createMediaElementSource(audioElement);
  const filter = new Tone.Filter(fq, 'lowpass').toDestination();

  Tone.connect(mediaElementSource, filter);
});

请不要让浏览器的自动播放策略阻止AudioContext,如下所述:https://github.com/Tonejs/Tone.js#starting-audio

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71146061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档