标签: audiocontext

AudioContext.decodeAudioData(...)在iPhone上不起作用,但在其他地方都起作用

我有以下非常基本的代码,这是更复杂的问题的一部分。

我的问题是该功能:context.decodeAudioData(arrayBuffer)不能在iPhone(尝试过SafariChrome)或Mac(Safari)上运行,但不能在其他地方(AndroidWindows 10(所有浏览器)上使用),甚至不能在Mac(Chrome)上运行。

Mac(Safari)上,出现以下错误:

Unhandled Promise Rejection: TypeError: Not enough arguments
Run Code Online (Sandbox Code Playgroud)

这是代码:

Unhandled Promise Rejection: TypeError: Not enough arguments
Run Code Online (Sandbox Code Playgroud)
window.AudioContext = window.AudioContext || window.webkitAudioContext;
const context = new AudioContext();
window.addEventListener('load', function() {
  const button_option_1 = document.querySelector('.button_option_1');
  const button_option_1_play = document.querySelector('.button_option_1_play');
  button_option_1_play.disabled = true;
  button_option_1.addEventListener('click', async function() {
    log('', false);
    let buffer;
    button_option_1_play.disabled = true;
    button_option_1_play.onclick = () => playBuffer(buffer);
    let time_start = …
Run Code Online (Sandbox Code Playgroud)

javascript html5 audiocontext web-audio-api ecmascript-2017

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

如何在使用网络音频 API 播放曲目时向前跳过 n 秒?

使用 Web Audio API,我正在尝试构建具有“向前跳过 15 秒”功能的 mp3 播放器。

我能够使用源缓冲区加载 mp3,并可以让它开始播放。我想做这样的事情,虽然我知道 currentTime 不是一个可设置的属性:

context.currentTime += 15
Run Code Online (Sandbox Code Playgroud)

一旦歌曲已经播放,你如何向前跳过 n 秒?

audiobuffer audiocontext web-audio-api

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

AudioContext() 的多个来源

我有两个一秒音频源,如下所示:

var context = system.AudioContext();
var source = context.createBufferSource();

var audioBuffer1 = context.createBuffer(1, float32Array_1.length, context.sampleRate);
audioBuffer1.getChannelData(0).set(float32Array_1);

var audioBuffer2 = context.createBuffer(1, float32Array_2.length, context.sampleRate);
audioBuffer2.getChannelData(0).set(float32Array_2);
Run Code Online (Sandbox Code Playgroud)

现在我想在它们之间没有延迟地播放这两个音频源。对于单个源,我可以使用以下代码播放音频:

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

我如何附加第二个源,以便它们之间没有延迟。

javascript firefox google-chrome audiocontext web-audio-api

0
推荐指数
1
解决办法
3060
查看次数

AudioContext:将音量增加 x 分贝

我正在使用 AudioContext() 进行听力测试,我想知道如何将音量提高/降低 x dB。甚至有可能吗?

目前,我有一个 GainNode 连接到我的 AudioContext,它看起来(简而言之)如下:

var context = new AudioContext(), gainNode;
context.decodeAudioData(req.target.response, function(buffer) {
    gainNode = context.createGain();
    ...
}
Run Code Online (Sandbox Code Playgroud)

要更改音量,我这样做:

gainNode.gain.value = {-1 to 1}
Run Code Online (Sandbox Code Playgroud)

在这里,我没有机会准确定义 dB 值。还有其他方法吗?

我认为问题是,浏览器永远不知道扬声器发出的声音的确切音量,因此没有计算新的 dB 音量的基础。

确定当前 dB 值的一种方法是通过 2 个声音的差异,例如测试声音(白噪声)和语音数字。为了计算差异,我找到了公式:

20 * Math.log10(gainNoise / gainSpeech);
Run Code Online (Sandbox Code Playgroud)

然后我有一个基数,例如 -6 dB,当语音是 -0.6 并且噪音是 -0.3 时。但是如何将这个值提高一个特定的 dB 值?

示例:我将 -6 dB 提高 5 dB 至 -1 dB。如何重新计算语音/噪音?

html javascript math audio audiocontext

0
推荐指数
1
解决办法
1545
查看次数

React 和 HowlerJS:Howler.ctx 为 null

我试图在全局中公开 AudioContext apiHowler并将其分配给一个变量,但是我无法弄清楚如何Howler.ctx不为空。

const CTX = Howler.ctx ; // Howler.ctx is returning null
Run Code Online (Sandbox Code Playgroud)

howler.js reactjs audiocontext

0
推荐指数
1
解决办法
926
查看次数

如何在 Tone.js 中移动音频缓冲区?

我想在 Javascript 中对音频进行音调,我认为最简单的方法是 Tone.js ( https://tonejs.github.io/docs/r13/PitchShift ),但我的实现没有播放任何声音,但没有错误. 我究竟做错了什么?

HTML(加载音频文件)

<html>
<div id="wrapper">
    <button onclick="loadTheTrack()"></button>
</div>
<script src="Tone.js"></script>
<script src="seebelow.js"></script>
</html>
Run Code Online (Sandbox Code Playgroud)

Javascript

var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();
Tone.setContext(audioCtx);
var audioDatas=[];

function loadTheTrack() {
    var input = document.createElement('input');
    input.type = 'file';
    input.style = "display:none";
    input.onchange = function (e) {
        var file = e.target.files[0];
        console.log(file);
        var reader = new FileReader();
        reader.onload = function () {
            console.log("decoding audio data with" + this.result);
            audioCtx.decodeAudioData(this.result, (decodedData) => {
                // note: …
Run Code Online (Sandbox Code Playgroud)

javascript html5-audio pitch-shifting audiocontext tone.js

0
推荐指数
1
解决办法
1137
查看次数