标签: web-audio-api

Web Audio API从暂停状态恢复

我经常读到使用Web Audio API暂停/恢复音频文件是不可能的.
但现在我看到一个例子,他们实际上可以暂停和恢复它.我试图弄清楚他们是怎么做到的.我想也许source.looping = false是关键,但事实并非如此.
现在我的音频总是从一开始就重新播放.

这是我目前的代码

var context = new (window.AudioContext || window.webkitAudioContext)();

function AudioPlayer() {
  this.source = context.createBufferSource();
  this.analyser = context.createAnalyser();
  this.stopped = true;
}

AudioPlayer.prototype.setBuffer = function(buffer) {
  this.source.buffer = buffer;
  this.source.looping = false;
};

AudioPlayer.prototype.play = function() {
  this.source.connect(this.analyser);
  this.analyser.connect(context.destination);

  this.source.noteOn(0);
  this.stopped = false;
};

AudioPlayer.prototype.stop = function() {
  this.analyser.disconnect();
  this.source.disconnect();
  this.stopped = true;
};
Run Code Online (Sandbox Code Playgroud)

有人知道该怎么做,让它运作起来吗?

html javascript google-chrome html5-audio web-audio-api

12
推荐指数
5
解决办法
2万
查看次数

Web音频API中的自定义波形

我正在研究这篇很棒的文章:https://jackschaedler.github.io/circles-sines-signals/dft_introduction.html

我想使用Web Audio API的PeriodicWave对象来实现此演示: 在此输入图像描述

但是,当我使用这些设置设置周期波时:

 var real = new Float32Array([0,0,1,0,1]);
 var imag = new Float32Array(real.length);
 var customWave = context.createPeriodicWave(real,imag);
 osc.setPeriodicWave(customWave);
Run Code Online (Sandbox Code Playgroud)

我输出一个看起来像这样的波:

在此输入图像描述 以下是完整代码:http://jsbin.com/zaqojavixo/4/edit 要查看波形,请按几次播放声音.

我相信这些应该匹配,所以这是我的问题:

  1. 我在这里遗漏了一些关于理论的基本内容,还是我只是错误地实现了它?PeriodicWave对象应该做与文章中说明的相同的事情吗?
  2. 如果我采取错误的方法,我将如何在Web Audio API中实现此图?通过将两个不同频率的不同正弦波连接到同一个增益节点,我能够在下面进行匹配 - 这与使用PeriodicWave对象有何不同?
  3. 我是DSP和Web Audio API的新手 - 任何建议的阅读都将不胜感激!
  4. 其次,在我的例子中,我必须在将正确的数据绘制到画布之前按下"播放声音"按钮几次 - 分析器似乎在振荡器后面,即使在我之后调用analyser.getFloatTimeDomainData()启动振荡器任何关于这里发生了什么的想法?

编辑:如评论中所述,我的图表是颠倒的(在画布上0,0是左上角).

javascript audio signal-processing web-audio-api

12
推荐指数
1
解决办法
3142
查看次数

为什么nodejs不支持Web Audio API?

我理解Web Audio API是客户端功能,但nodejs基于ECMAScript的V8 Chrome客户端实现,其中包括Web Audio API.
为什么nodejs中没有完全支持Web Audio API
是因为AudioContext基于全局窗口对象吗?
我在这里错过了一点吗?
是否有计划在将来提供它?

javascript html5 node.js web-audio-api

12
推荐指数
1
解决办法
4140
查看次数

Web Audio Api:如何添加工作的卷积器?

我想学习/做的事情:如何使用脉冲响应在我的代码沙箱中设置一个简单的工作卷积器(混响).我认为这与设置过滤器类似,但事情似乎有很大不同.

我尝试过:与所有新技术一样,事情变化很快,因此很难知道哪种实现是正确的,哪些是不正确的.我看了无数的WebAudio Api Convolver Tutorials,很多都很老,其他人都在工作,但是太过"臃肿",让人很难理解发生了什么.我试图从mozilla文档中实现一些示例:

我已经看过了:https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode/buffer

我的问题:如何在下面的上下文中正确集成一个卷积器?正如你所看到的那样,我试过但是无法弄明白这一点.

 window.addEventListener('load', init, false);

function init() {
    setupWebAudio();
}

function setupWebAudio() {
    var audio = document.getElementById('music');
    var context = new AudioContext();
    var source = context.createMediaElementSource(audio);
    var filter = context.createBiquadFilter();
    var convolver = context.createConvolver();
    var inpulseRes = "hall.mp3";

    var hallBuffer = inpulseRes;
    soundSource = context.createBufferSource();
    soundSource.buffer = hallBuffer;
    convolver.buffer = hallBuffer;

    filter.type = 'lowpass';
    filter.frequency.value = 400;

var theParent = document.getElementById("test");
    theParent.addEventListener("mousedown", doSomething, false);
    function doSomething(e) {
        if (e.target …
Run Code Online (Sandbox Code Playgroud)

javascript web-audio-api

12
推荐指数
2
解决办法
1661
查看次数

播放AudioBufferSourceNode两次?

我应该能够使用相同AudioBufferSourceNode的声音多次播放声音吗?出于某种原因,noteGrainOn即使进行干预,第二次呼叫也不会播放音频noteOff.

此代码仅播放一次声音:

var node = audioContext.createBufferSource()
node.buffer = audioBuffer
node.connect(audioContext.destination)

var now = audioContext.currentTime
node.noteGrainOn(now, 0, 2)
node.noteOff(now + 2)
node.noteGrainOn(now + 3, 0, 2)
node.noteOff(now + 5)
Run Code Online (Sandbox Code Playgroud)

javascript web-audio-api

11
推荐指数
1
解决办法
6611
查看次数

如何使用Web音频API反向播放音频?

如何使用Web音频API反向播放音频?我似乎无法在API文档中找到任何内容......

javascript html5 google-chrome web-audio-api

11
推荐指数
2
解决办法
5216
查看次数

分析来自麦克风Javascript的音频输入

我打算在网站上创建一个音乐可视化工具.有些物体应该根据正在播放的当前音乐改变大小和形状(可能是非经典的多行歌曲,例如Do not Stop believe).我想至少能够知道音乐的音量,如果可能的话,任何可以拾取的音高(在Javascript中可以进行FFT吗?).是否有声音API可以让我在Javascript或至少在线执行此操作?

javascript web-audio-api

11
推荐指数
1
解决办法
1万
查看次数

Web Audio Api使用Decibels

我想了解如何在Web Audio API中使用分贝

这里我有一个连接到增益节点的音频缓冲区

var mybuffer = context.createBufferSource());
mybuffer.buffer = buffer; //an audio buffer

var gainNode=context.createGain();

mybuffer.connect(gainNode);
gainNode.connect(context.destination);
Run Code Online (Sandbox Code Playgroud)

增益音量是从0(静音)到n的范围,其中1是默认音量,但据我所知,音频通常与这样的音域无关,音量以分贝(Db)为单位,操作也以Db为单位.

我已经在这个答案中读到了一些有趣的东西,但它完全符合我的需求: 是否有办法从音频文件中获取分贝级别并将该信息转换为json数组?

我想知道如何确定音频节点的分贝,如何使用分贝编辑音量

audio html5 html5-audio web-audio-api

11
推荐指数
1
解决办法
4512
查看次数

getByteFrequencyData不适用于Safari中的实时流

如需现场演示,请访问:http://codepen.io/rrorg/pen/WxPjrz?edit = 0010

在Safari中播放HTTP音频直播流时,分析器会getByteFrequencyData使用零填充数组.

在所有其他浏览器中,这可以按预期工作,并且Safari正确填充静态文件的频率数据没有问题.

CORS标头设置正确,Apple文档没有提到特殊情况.

javascript safari stream html5-audio web-audio-api

11
推荐指数
1
解决办法
712
查看次数

使用Web Audio API隔离音频上下文的频率

我正在尝试使用WebAudio API并尝试构建一个分析器,用户可以与之交互并最终打开和关闭音乐中的不同频率,以隔离音轨内的不同节拍,即低音,踢等.

我正在使用Canvas可视化频率数据,并希望用户能够突出显示部分可视化和反过来的静音频率.

默认情况下,可视化将如下所示,用户将听到所有频率.

在此输入图像描述

但是当用户选择几个条形图时,灰色的条形图会使相关频率静音:

在此输入图像描述

我的想法是,我可以对frequencyData数组进行反向工程,并基本上将相关频率静音吗?

**更新**

所以我一直在玩几个串联biquadFilter类型的s notch,然后调整它们的频率和Q值.这有助于隔离音乐的拍摄,但不完全是我想要的.这是我到目前为止使用的代码......

const audioContext = new window.AudioContext();
const source = audioContext.createMediaElementSource(element);
const biquadFilter1 = audioContext.createBiquadFilter();
const biquadFilter2 = audioContext.createBiquadFilter();
const biquadFilter3 = audioContext.createBiquadFilter();
const analyser = audioContext.createAnalyser();

biquadFilter1.connect(analyser);
biquadFilter2.connect(analyser);
biquadFilter3.connect(analyser);
source
    .connect(biquadFilter1)
    .connect(biquadFilter2)
    .connect(biquadFilter3);
analyser.connect(audioContext.destination);
Run Code Online (Sandbox Code Playgroud)

我不确定我是否正确设置了它,但它确实允许我非常粗略地操纵频率,但感觉就像没有准确的科学这样做.

是我尝试的可能,如果是的话,任何建议真的很感激:)

javascript web-audio-api

11
推荐指数
2
解决办法
904
查看次数