Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态设置WebAudio振荡器的PeriodicWave(),该';在玩什么?_Javascript_Signal Processing_Web Audio Api_P5.js - Fatal编程技术网

Javascript 动态设置WebAudio振荡器的PeriodicWave(),该';在玩什么?

Javascript 动态设置WebAudio振荡器的PeriodicWave(),该';在玩什么?,javascript,signal-processing,web-audio-api,p5.js,Javascript,Signal Processing,Web Audio Api,P5.js,尝试做一些基本的波形表合成(开发一个附加组件),想知道是否有可能在振荡器播放时动态改变其波形(恒定音调而不是音符持续时间)?在我的基本测试中,必须先调用setPeriodicWave()函数,然后再将振荡器连接到AudioContext输出,然后再启动。希望做一些动态波形表合成器(带有两个硬平移通道),用于输入示波器的X-Y模式(用于基于音频信号的矢量视觉)。上面的工作流程,随着每个波表的变化不断地创建一个新的振荡器,会导致大量的伪影和相移问题。。。如果我能启动两个振荡器并更新它们的波形,那就太

尝试做一些基本的波形表合成(开发一个附加组件),想知道是否有可能在振荡器播放时动态改变其波形(恒定音调而不是音符持续时间)?在我的基本测试中,必须先调用
setPeriodicWave()
函数,然后再将振荡器连接到AudioContext输出,然后再启动。希望做一些动态波形表合成器(带有两个硬平移通道),用于输入示波器的X-Y模式(用于基于音频信号的矢量视觉)。上面的工作流程,随着每个波表的变化不断地创建一个新的振荡器,会导致大量的伪影和相移问题。。。如果我能启动两个振荡器并更新它们的波形,那就太好了。关于这样做的工作流程有什么提示吗?我的抽象工作流:

  • 创建具有“自定义”类型的振荡器(用平波/无声波初始化)
  • 自定义
    setWavetable()
    ,它使用到的函数
    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
      

      啊哈-谢谢这个超级清晰的例子!哎呀,问题肯定出在我的执行上。奇怪的是,它产生的信号是交流耦合(摆动/居中)与直流耦合(使用直流耦合DAC+测试)-但这也必须在实现库或使用dsp.js将(-1.0,1.0)值的简单数组转换为周期波时实现。。。和我的一样。。需要振荡器功能(freq/pan)+从阵列进行波表整形。。。搜索仍在继续