问题标签 [tone.js]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 使用 Tone.js 网络音频框架播放加载的音频文件
您好我正在创建一个简单的上传页面,用户可以在其中加载本地文件并进行播放。一个小时以来,我没有上传到服务器,只是想创建一个文件输入,然后用 Tone.js 播放音频文件(如果可能的话)。
我正在使用这个测试 P5.js 库和 Tone.js 音频框架,代码如下:
目前,什么都没有发生,我想了解为什么以及如何进行此操作。谢谢!
javascript - 使用 Tone.js 向现有音频流添加过滤器
我能够使用 biquadfilter 将过滤器添加到现有的音频流,但有兴趣尝试使用 Tone.js。但是我在将所有内容连接在一起时遇到了问题。尝试将过滤器连接到 audioContext 时,我不断收到 DomException。
当我尝试将过滤器连接或链接到 audioCtx.destination 时,错误消息只是 DomException。这似乎遵循我在网上找到的大多数其他示例,所以我不确定为什么会抛出异常。
*编辑:包括来自开发控制台的堆栈跟踪
javascript - 没有听到 Tone.js 音频过滤器
我正在尝试将滤镜效果添加到我在我的网站上播放的音频流中。我能够将 Tone.js 库连接到音频流,但我没有听到网站上播放的音频流有任何变化。我在控制台中没有看到任何错误,我尝试将过滤器从 50 调整到 5000,但似乎对音频没有任何影响。我是否需要设置new Tone.Player()
才能真正听到音频?如果是这样,如果现有音频元素没有 src,您将如何设置播放器。
我尝试修改的音频流是通过 JsSip 调用设置的。启动流的代码如下:
我在通话开始后单击测试按钮,以便在初始化 Tone.js 过滤器之前知道音频流存在
javascript - Tone.js:实时调整合成器参数时得到意想不到的结果(例如失谐、调制指数、攻击等)
我从事 Tone.js 合成器项目已经有一段时间了。
作为记录,我将包括链接: 回购 部署 (它仍在开发中,因为我遇到了这个问题)
我遇到了一个我无法解决的严重问题。我将 PolySynth 与 FMSynth 一起使用,但我尝试过的所有其他合成器类型都遇到了同样的问题。
每当我尝试实时调整合成器的参数时(例如失谐、调制指数、幅度包络等),我都会得到意想不到的行为:
大多数情况下,当我更改参数的值时,它会立即起作用,因此声音会根据我所做的更改进行修改,但即使我不断更改值,声音也会停留在第一个修改后的值上的参数。
然后有时我每在合成器上演奏一个音符时就会得到修改后的声音。一次我得到修改后的声音,然后下一次得到没有任何修改的原始声音,然后再次获得修改后的声音,依此类推。
有时它可以工作,但我仍然坚持第一次修改。
有时它会在先弹奏一些音符后随机工作。
有时它会立即起作用,但随后一些特定的音符会产生未经修改的原始声音,而不管我的修改如何(并且合成器仍然停止响应任何进一步的参数更改)。
除了volume:volume每次都按预期工作时,每个参数都会发生这种情况。
让我们以调制指数为例(失谐、谐波和起音也是如此——这些是我暂时实现的参数)。最初,我使用 NexusUI 组件,但为此我将使用常规的 HTML 滑块(以证明 NexusUI 不是问题)。它可以在我提供的部署网站和 repo 中找到。这是我的代码:
在主 JavaScript 文件中,我创建了合成器并将其发送到目的地:
在 HTML 文件中,我创建了一个简单的滑块:
每次表盘移动时,我都会相应地更改调制指数值:
如您所见,我正在使用以下方法设置新的调制指数值:
我对其他参数遵循完全相同的方法,例如。
等等。
我在 Ubuntu 上使用 Tone.js 14.8.37,使用 CDN、Chrome 98-99。
非常感谢任何可能提供帮助的人:-)
PS我也就此问题提出了一个问题,可以在这里找到
ios - Tone.js 不在 iOS 上播放音频
我有一个使用 Tone.js 的应用程序,我专门使用 GrainPlayer 对象。它可以在不同操作系统和设备的不同浏览器上完美运行......除了 iOS。我个人没有 iOS 设备,但客户告诉我 iOS 没有播放音频。它也不限于野生动物园;他们设备上的其他浏览器也不会播放音频。
我知道这是一个特定于 Tone.js 的问题,因为我还使用 Howler.js 处理一些不需要 Tone GrainPlayer 类的声音,并且这些声音有效。一般来说,这也不是 AudioContext 问题,因为我有以下代码:
Tone.setContext(Howler.ctx);
这确保了 Tone 的 AudioContext 通过 Howler 的 AudioContext 路由。
有没有办法让它玩?我需要继续使用 GrainPlayer,因为它具有独特的属性和功能,因此不幸的是,将其作为解决方案对我来说不起作用。我无法从开发人员的角度诊断它,因为我没有 iOS 设备,即使那样他们也没有办法打开开发人员控制台......但它似乎没有破坏代码或任何东西,似乎它“忽略”了播放的声音,然后继续前进。
有问题的声音是这样创建的:
standardChord[0] = new Tone.GrainPlayer('/A.flac').connect(Howler.masterGain);
然后当它们需要播放时:
standardChord[0].start();
就像我说的在其他设备上运行良好。
最后,不确定这是否重要,但它是我正在运行的 Meteor 应用程序,捆绑到 Node.js 中进行部署。