Tone.PitchShift 和 Howler.js 问题

2024-03-23

我喜欢在我的 (Meteor) 应用程序中使用 Howler.js。然而,播放速率功能导致了我不想要的音调变化(我只想延长时间,并保持音调)。因此,我的解决方案是对其进行音调变换以“纠正”音调。看起来很简单,这就是我选择使用的原因https://tonejs.github.io/ https://tonejs.github.io/

唯一的问题是,我一生都无法让它正常工作。经过几个小时的阅读 Web Audio API、Tone.js 文档以及在线讨论/故障排除论坛后,我得到的最接近潜在解决方案的东西是这样的(在我的应用程序的渲染期间调用,以防万一问题必须解决)提前加载):

Tone.setContext(Howler.ctx); //set tone's context to the Howler.js audiocontext
var pShift = new Tone.PitchShift(3); //create the PitchShift effect, +3 semi-tones transposition
pShift.context = Howler.ctx; //set the PitchShift's context to the Howler.js audiocontext
pShift.connect(Howler.ctx.destination); //connect the PitchShift's output to the Howler's destination
Howler.masterGain.connect(pShift); //connect the Howler's master GainNode output to the PitchShift effect

//For debugging purposes:
console.log(Howler.masterGain)
console.log(pShift);

当我运行此命令时,我收到此错误消息:

Tracker afterFlush 函数的异常: meteor.js?hash=857dafb4b9dff17e29ed8498a22ea5b1a3d6b41d:1059 TypeError: 无法在“AudioNode”上执行“connect”:重载解析失败。

我还注意到下面的 console.log() 命令甚至没有显示在控制台中,很奇怪。然而,当我删除最后一行(mastergain.connect 到 pShift)时,它们会这样做。

我尝试了一些其他技术,例如https://github.com/mmckegg/soundbank-pitch-shift/ https://github.com/mmckegg/soundbank-pitch-shift/(这有效,但无论我将其设置为何种设置,它都会播放音调变化的声音和非音调变化的声音), 或者简单地使用 AudioBufferSourceNode.detune (我不知道如何让它与 Howler.js 一起工作,因为 Howler 只有可以公开 GainNode 和 AudioContext 的函数,无法弄清楚如何从那里读取输出同时仍然使用咆哮)。

任何帮助/线索将不胜感激!


我认为您不需要代码片段中的第三行。由于您的第一行告诉 Tone.js 使用AudioContext已经由 howler.js 创建。所以pShift.context应该等于Howler.ctx。但仔细检查可能是有意义的。

console.assert(pShift.context === Howler.ctx);

The masterGainhowler.js 公开的是一个原生音频节点。这意味着它无法直接连接到使用 Tone.js 创建的节点,因为这些节点不是本机音频节点。但 Tone.js 提供了一个帮助器来做到这一点。

Tone.connect(Howler.masterGain, pShift);

我想你还需要打电话disconnect() on the masterGain删除任何现有的连接。

下面的代码片段应该可以工作。

Tone.setContext(Howler.ctx);

const pShift = new Tone.PitchShift(3);

Howler.masterGain.disconnect();

Tone.connect(Howler.masterGain, pShift);
pShift.toDestination();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tone.PitchShift 和 Howler.js 问题 的相关文章

随机推荐

  • g++ 找不到标头,但我确实包含了它们

    我开始使用 c 并且已经出错了 我正在尝试编译 levelDB 的一个小测试 include
  • Set.toString() 是如何实现的?

    The toString 方法未被覆盖Set或其层次结构 那么元素是如何打印的呢 import java lang Math import java util HashSet class Hello public String name H
  • 通过wicket动态编写脚本src

    我希望我的页面能够动态加载 javascriptbody 我正在使用检票口1 4版所以JavaScriptResourceReference 在我的版本中不存在 据我检查 事实并非如此 我该如何解决这个问题 提前致谢 我将我的评论指定为答案
  • 如何在 TypeScript 中处理 ISO 日期字符串?

    我是打字稿的新手 所以我正在努力掌握它的窍门 网络请求将返回一个 JSON 对象 其中包含 ISO 日期字符串格式的字段 data Data when 2016 07 13T18 46 01 933Z 当我为此接口创建类型签名时 是否有任何
  • Clozure Common Lisp - TCP 套接字编程 - 发送回复

    我有一个非常小的程序 它打开一个套接字并接受一个连接 然后它会获取远程 IP 和端口 我想向远程计算机 telnet 发送一条短信并关闭连接 我无法确定哪个函数用于向 telnet 客户端发送消息 The Clozure手册 http cc
  • Matplotlib AttributeError:“模块”对象没有属性“popall”

    当尝试使用 pyplot 绘制图表时 我运行以下代码 from matplotlib import pyplot as plt x 6 5 4 y 3 4 5 plt plot x y plt show 这将返回以下错误 Attribute
  • 谷歌新闻,左导航 CSS 技巧?或 jQuery 技巧

    我对此很陌生 查看 Google 新闻 上下滚动页面时请注意左侧导航 看看是如何滚动一小段 然后在消失之前粘在页面顶部的吗 关于如何做到这一点有什么想法吗 jQuery 和 CSS 可以复制这一点吗 如果是这样 有什么建议吗 YouTube
  • 未找到 NetBeans 10 JUnit Jar

    我新安装了 NetBeans 10 尝试运行我刚刚创建的一些初始单元测试时 出现以下错误 The
  • Ellipsize 不适用于自定义 listView 内的 textView

    我有一个 listView 其中包含由下面的 xml 布局定义的自定义对象 我希望 id 为 info 的 textView 在一行上省略 并且我尝试使用属性 android singleLine true android ellipsiz
  • jenkinsfile 管道按代理分组阶段

    我有什么 我正在尝试使用两种不同的代理来运行我的詹金斯管道 我想在同一个代理上执行某些流程 但到目前为止我无法执行此操作 因为代理定义只有 2 个选项 我可以在管道顶部执行 或者我可以将代理定义到每个阶段 我有这个 pipeline age
  • 用 CSS 使图像变灰?

    使用 CSS 让图像显示为 灰色 的最佳方法 如果有 是什么 即不加载单独的灰色图像版本 我的上下文是 表格中的行在最右侧的单元格中都有按钮 并且某些行需要看起来比其他行更亮 因此 我当然可以轻松地使字体变亮 但我也希望使图像变亮 而不必管
  • Python pandas系列:将浮点数转换为字符串,保留空值

    转换为字符串后如何保留空值 我正在处理社会安全号码 需要在浮点数和字符串之间来回切换 import pandas as pd import numpy as np x pd Series np nan 123 np nan 456 dtyp
  • 如何使用phpmyadmin导出所有数据库

    可以使用phpMyadmin一次性导出所有数据库吗 如果不是 最好的方法是什么 提前致谢 以下是使用 phpMyAdmin 导出所有 mySQL 数据库的步骤 2015 年 12 月 随着 phpMyAdmin 的发展 添加了新功能 打开
  • 当 setup.py 使用 Python 版本 3 解释器运行时,如何构建 py2 轮包?

    我有一个应该是 Python 的包仅版本 2但需要构建运行版本 3 解释器 The setup py这个包的内容看起来像点击 from setuptools import setup setup python requires lt 3 0
  • “编辑前 200 行”不适用于 SQL Server 16.0 - Express Edition

    我正在尝试在 SQL Server Express 版本中 编辑前 200 行 但它返回的是空白文件 如下所示 显示带有禁用工具的空白文件 https i stack imgur com CvpH7 png 我已经在本地安装了这个 SQL
  • 将渐变效果应用于模糊视图

    如何在 Swift 中添加具有模糊效果的渐变视图 我可以很轻松地向视图添加渐变层 CAGradientLayer 我还可以单独添加模糊视图 UIVisualEffectView 如何将两者结合起来创建一个模糊视图 该视图还具有渐变元素 其中
  • 当我单击画布并拖动鼠标时,光标会变为文本选择光标。我怎样才能防止这种情况发生?

    这是一个小提琴 http jsfiddle net MZ9Xm http jsfiddle net MZ9Xm 注意 以下情况发生在 Chrome 22 0 1221 1 中 但不会发生在 Firefox 14 0 1 中 Ubuntu l
  • Java 随机崩溃(可能的罪魁祸首:ntdll.dll?)

    我有一个用 Java 编写的程序 并使用 Windows 任务计划程序设置为每 5 分钟运行一次 它执行 C Program Files Java jre7 bin javaw exe 并传递 jar 文件和所有命令行参数 在大多数情况下
  • 如何安全地镜像 git 存储库?

    我想通过后台作业镜像一些 git 存储库 git clone mirror and git remote update不会保留通过强制推送未引用的对象 但我也想保留这些对象以防黑客攻击 有没有什么工具可以执行安全的 git 镜像 虽然缺少
  • Tone.PitchShift 和 Howler.js 问题

    我喜欢在我的 Meteor 应用程序中使用 Howler js 然而 播放速率功能导致了我不想要的音调变化 我只想延长时间 并保持音调 因此 我的解决方案是对其进行音调变换以 纠正 音调 看起来很简单 这就是我选择使用的原因https to