预计算Web音频API时域和频谱图可视化

Precomputed Web Audio API Time Domain and spectrogram Visualization

本文关键字:可视化 时域 计算 Web 音频 API      更新时间:2023-09-26

我正在使用各种振荡器/滤波器通过web音频api合成声音,并具有时域和频谱图可视化,当振荡器播放时实时运行(类似于这里和这里)。

然而,我希望能够创建一个基于音频网络的初始预计算可视化,在它运行一段时间之前,这样用户就可以在播放它之前查看网络的声音。这是可能的还是有一种方法可以加快时间来快速生成可视化?

使用OfflineAudioContext,这将异步地为您提供一个PCM缓冲区。计算窗口的RMS值(或者只是使用时域,取决于你想做什么),并把它放在一个或其他。

OfflineAudioContext可以让你像机器运行一样快地运行一个图形,并且是AudioContext的一个临时替代品,除了三个节点,不能使用(MediaStreamAudioDestinationNode, MediaStreamSourceNode和MediaElementAudioSourceNode),因为MediaStream是实时对象:它们在不实时渲染时没有意义。

它是这样的:

   var off = new OfflineAudioContext(2 /* stereo */,
                                     44100 /* length in frames */,
                                     44100 /* samplerate */);
   /* do your thing: setup your graph as usual */
   off.createOscillator(...);
   ...
   ...
   /* This is called when the graph has rendered one
    * second of audio, here: 44100 frames at 44100 frames per second */
   off.oncomplete = function(e) {
     e.renderedBuffer; /* is an AudioBuffer that contains the PCM data */
   };
   /* kick off the rendering */
   off.startRendering();