javascript - 正在播放的 WebAudio Oscillator 的动态 setPeriodicWave()?
问题描述
尝试做一些基本的波表合成(为p5.sound开发一个插件)——并且想知道是否可以在播放时动态改变振荡器的波形(恒定音调而不是音符持续时间)?在我的基本测试中,setPeriodicWave()
必须在振荡器连接到 AudioContext 输出然后启动之前调用该函数。希望做一些动态波表合成器(带有两个硬平移通道),用于输入示波器的 XY 模式(用于基于音频信号的矢量视觉效果)。上面的工作流程,每次波表变化都会不断创建一个新的振荡器,这会导致很多伪影和相移问题……如果我可以启动两个振荡器并更新它们的波形,那就太好了。关于这样做的工作流程的任何提示?我的抽象工作流程:
- 创建具有“自定义”类型的振荡器(以平波/无声波启动)
setWavetable()
使用dsp.js中的函数到createPeriodicWave()
数组值的自定义- 用这个波重新初始化振荡器(停止振荡器,断开/垃圾振荡器,用波形初始化新振荡器,连接 + 启动振荡器)
解决方案
你有什么问题?例如,这对我有用。我可以清楚地听到声音的变化:
let c = new AudioContext();
let s = new OscillatorNode(c, {type: "sawtooth"});
s.connect(c.destination);
// Some random custom wave form
let w = new PeriodicWave(c, {real: [0, 1], imag: [0, 1]});
s.start();
// Wait a bit
s.setPeriodicWave(w);
// Sound changes
推荐阅读
- awk - 通过 bash AWK 将列十进制转换为二进制
- java - 用于 USER 而不是 BOT 的电报 API
- reporting-services - SSRS 报告中的绝对值
- java - 无法访问其他类中的方法(Android Studio)
- python - 如何删除“www”。从原始 URL 通过 [urllib] 在 python 中解析?
- visual-studio - 如何下载 Visual Studio 社区 16.10.2 或任何其他旧版本
- javascript - jquery.jeditable.js 选项,用于通过单击从 true 切换到 false 并发送到 php 文件
- python-3.x - 将列表的长度与列表理解 Python 进行比较
- c# - 在 Docker 容器中运行 .Net 5 API 时无法连接到 Postgres
- sql - 如何在 BigQuery 中对数周进行滚动求和?