标签: web-audio-api

如何使用Web Audio API访问输出缓冲区?

我想访问输出/ 目标缓冲区中的音频数据.具体来说,我想将数据保存到文件中.我还想添加自定义效果作为AudioNode.

如何使用Web Audio API实现此目的?我没有看到AudioDestinationBuffer接口或在规范中添加自定义AudioNode的方法.

javascript audio html5 web-audio-api

3
推荐指数
1
解决办法
2262
查看次数

Web Audio Api输出

我正在开发一个基于社区的Internet Radio,用户可以在其中录制自己的消息.

我希望我的用户能够为他们的录音添加效果(比如Biquad Filters,Reverb aso ..)

是否可以将最终混音(包括效果)处理为单个PCM输出(例如音频标签src="data:audio/wav;base64"),以便我可以通过帖子将混音发送到服务器?

我试过这个:

recorder.locals.filter1.connect(recorder.locals.filter3);
recorder.locals.filter3.connect(recorder.locals.filter2);
recorder.locals.filter2.connect(context.destination); 
recorder.locals.source.noteOn(0); 
context.oncomplete = function(e) { var buffer = e.renderedBuffer; }; 
context.startRendering(); 
Run Code Online (Sandbox Code Playgroud)

但它没有给我任何东西.

javascript api html5 web-audio-api

3
推荐指数
1
解决办法
2728
查看次数

停止Web Audio API中的所有声音

我同时加载并播放了多个带有网络音频API的声音.有没有办法阻止所有声音?

例如:现在停止所有声音的按钮.

由于我有超过10个声音同时播放,我不想手动使用noteOff(0)(或停止(0))为每个声源.

web-audio-api

3
推荐指数
1
解决办法
1247
查看次数

使用Web音频API构建HTML5音频播放器

<audio>标签流输入和播放.当我们必须同步多个音频时,这不适合.在这里解释回答/sf/answers/1154902101/

因此,我想构建一个音频播放器,它不会传输音频,而是下载或使用网络音频API.我知道如何使用API​​加载音频,但不知道如何使用搜索功能与进度条挂钩.

html5 web-audio-api

3
推荐指数
1
解决办法
3770
查看次数

将数据追加到已经存在的AudioBuffer对象

我期待数据追加到已经存在的AudioBuffer正在被使用的网络音频播放。


接收到要播放的音频数据后,我将创建一个AudioBuffer,然后将数据分配给ArrayBuffer响应。

    var audioBuffer = context.createBuffer(1, audioToPlay.length, 16000);
    audioBuffer.getChannelData(0).set(audioToPlay);
Run Code Online (Sandbox Code Playgroud)

然后,我创建一个缓冲区源节点,并将音频缓冲区连接到Web音频上下文。

    var source = context.createBufferSource();
    source.buffer = audioBuffer;
    source.connect(context.destination);
    source.start(0);
Run Code Online (Sandbox Code Playgroud)

现在,我想做的是将更多数据(另一个ArrayBuffer)追加到当前正在播放的缓冲区中,同时避免必须使用onended回调来创建新的缓冲区。

有什么办法吗?据我所知,这似乎不受支持。

javascript audio web-audio-api

3
推荐指数
1
解决办法
1070
查看次数

Web Audio onaudioprocess适用于Firefox,JSFiddle in Chrome,但不适用于Chrome本身

我在WebAudio/WebMIDI应用上使用Chrome 39.0.2171.71(64位).我安装了jazz-soft webmidi插件.

我无法让onaudioprocess开火.我已经删除了最基本的代码:

<!DOCTYPE html>
<html lang="en">
    <head></head>
    <body>
        Page Loaded.
        <script>
             var context;
             if (window.AudioContext) {
                 context = new AudioContext(); 
             } else {
                 context = new webkitAudioContext(); 
             }
             console.log('Javascript is working.');

             oscillator = context.createOscillator();
             oscillator.start(0);

             myscriptnode = context.createScriptProcessor(4096, 1, 1);
             myscriptnode.onaudioprocess = function(event) {
                  console.log('ONAUDIOPROCESS works!');
             };

             oscillator.connect(myscriptnode);
         </script>
     </body>
</html>
Run Code Online (Sandbox Code Playgroud)

这适用于Firefox.事实上,我一直在玩的大部分内容都适用于Firefox,但不适用于Chrome.但是,以下两个示例适用于在Chrome中运行的JSFiddle:

http://jsfiddle.net/78yKV/3/ (这个例子运行但是onaudioprocess回调似乎很慢/不稳定,它有时会被删除,需要重新启动.)

http://jsfiddle.net/99rxd/ (对于这个例子,我必须添加function(){console.log('error');}的第三个参数到getUserMedia()以使其运行.这给了我一个当我启动它时,未定义的引用错误是未定义的,但它随后运行并且onaudioprocess回调可靠地工作.)

我试过的事情

我进行了详尽的搜索,看起来像createScriptProcessor存在一些Chrome范围问题.我已经尝试了一切将我的流程范围扩展到全局(在顶部声明它,声明没有'var',设置myscriptnode.onaudioprocess = window.audioProcess = function(event))并且没有任何工作.一切都在Firefox中有效.

我坚持希望的唯一原因是因为JSFiddle的工作原理.似乎代码在JSFiddle中工作的主要原因而不是在浏览器中与等待DOM加载有关.我怀疑这是问题,但我尝试将我的javascript放入(function(/ code /)();,将oninit()函数添加到body标签并将我的代码放入函数init(){}等中.没运气.

我不知道发生了什么事.如果它在JSFiddle中工作,我不应该能够在浏览器中工作吗?是否有另一种方法来改变范围,以便我的事件处理程序不会被垃圾收集(这是我假设的问题)...或者是否存在更基本的错误?我还没有看到使用浏览器中的onaudioprocess工作的一个回调,这让我觉得它可能比范围/垃圾收集问题更基本.它可能是爵士软件插件吗?

谢谢您的帮助!

javascript google-chrome jsfiddle web-audio-api

3
推荐指数
1
解决办法
590
查看次数

Web Audio API,设置高音和低音

我正在努力学习如何正确使用网络音频api,我遇到了一些困惑.

在我的项目中,我试图复制1982年的Harman/Kardon接收器的功能.(点击链接查看图片)

该接收器具有用于高音和低音控制的独立拨盘.我只想处理这个问题的高音.一旦我指向正确的方向,我相信我能算出低音效果.

在初始化函数中,我创建了上下文和过滤节点.

window.AudioContext = window.AudioContext || window.webkitAudioContext;
    context = new AudioContext();
    source = context.createMediaElementSource(document.getElementById('audio'));
    gainNode = context.createGain();

//filter nodes
bassTurnoverFilter = context.createBiquadFilter();
trebleTurnoverFilter = context.createBiquadFilter();
loudnessTrebFilter = context.createBiquadFilter();
loudnessBassFilter = context.createBiquadFilter();
trebleLevelFilter = context.createBiquadFilter();
bassLevelFilter = context.createBiquadFilter();
Run Code Online (Sandbox Code Playgroud)

我目前正在使用jogDial插件来控制拨号.表盘工作正常,当刻度盘从0%变为100%时,我可以获得0到1之间"高音"变量的范围.

这是我用于高音拨号的当前mousemove功能:

.on("mousemove", function(event){

var treble = (event.target.rotation + 140) / 280;

    if(trebleLevelFilter !== undefined){
        trebleLevelFilter.disconnect();
    }
    source.connect(trebleLevelFilter); 
    trebleLevelFilter.type = "highshelf"; 
    trebleLevelFilter.frequency.value = 200; 
    trebleLevelFilter.gain.value = treble; 
    trebleLevelFilter.connect(context.destination);
});
Run Code Online (Sandbox Code Playgroud)

我的问题或多部分问题是...... 我应该使用哪6 种类型("低通","高通","带通","lowshelf","highshelf","峰值","缺口","全通")我猜它是高通或高通. …

javascript web-audio-api

3
推荐指数
1
解决办法
1941
查看次数

web音频API中analyser.getByteFrequencyData返回的值的范围是多少?

我想在使用网络音频API进行一些FFT时使用百分比.

为此,我需要知道analyser.getByteFrequencyData返回值的范围.

我找不到任何相关的东西,也许有人知道吗?

谢谢

javascript fft web-audio-api

3
推荐指数
1
解决办法
2806
查看次数

网络音频api:乘波

Web Audio API允许我在指定的频率信号中创建一个恒定的正弦波,如下所示:

var actx = new AudioContext();
var osc = actx.createOscillator();

osc.frequency.value = 500;
osc.connect(actx.destination);
osc.start();
Run Code Online (Sandbox Code Playgroud)

如何将此波乘以另一波以便"塑造"它.例如,我怎么能将它乘以200 Hz的另一个正弦波.

像这样:

在此输入图像描述

javascript web-audio-api

3
推荐指数
1
解决办法
433
查看次数

用javascript播放PCM

我在浏览器上播放PCM Audio时遇到了一些问题.PCM音频来自具有udp协议的Android设备,并以*.raw保存在服务器上

我在webaudioapi的帮助下试图播放这个保存的文件失败了.使用以下代码,播放一些带有白噪声的令人毛骨悚然的声音:

var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
audioCtx.sampleRate = 16000;


// Stereo
var channels = 1;
// Create an empty two second stereo buffer at the
// sample rate of the AudioContext
var frameCount = audioCtx.sampleRate * 10.0;

var myAudioBuffer = audioCtx.createBuffer(channels, frameCount, audioCtx.sampleRate);


var req = new XMLHttpRequest();
req.open('GET', "example.raw", false);
req.overrideMimeType('text\/plain; charset=x-user-defined');
req.send(null);

function play(){
    for (var channel = 0; channel < channels; channel++) {

        var nowBuffering = myAudioBuffer.getChannelData(channel,16,16000);
        for (var i = 0; i …
Run Code Online (Sandbox Code Playgroud)

javascript audio wav web-audio-api

3
推荐指数
1
解决办法
3655
查看次数

标签 统计

web-audio-api ×10

javascript ×8

audio ×3

html5 ×3

api ×1

fft ×1

google-chrome ×1

jsfiddle ×1

wav ×1