Browse Source

wasm audio: log unexpected values used for processing

Signed-off-by: falkTX <falktx@falktx.com>
pull/421/head
falkTX 2 years ago
parent
commit
49d447b436
1 changed files with 30 additions and 17 deletions
  1. +30
    -17
      distrho/src/jackbridge/WebBridge.hpp

+ 30
- 17
distrho/src/jackbridge/WebBridge.hpp View File

@@ -1,6 +1,6 @@
/*
* Web Audio + MIDI Bridge for DPF
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2023 Filipe Coelho <falktx@falktx.com>
*
* Permission to use, copy, modify, and/or distribute this software for any purpose with
* or without fee is hereby granted, provided that the above copyright notice and this
@@ -113,7 +113,7 @@ struct WebBridge : NativeBridge {

bufferSize = EM_ASM_INT({
var WAB = Module['WebAudioBridge'];
return WAB['minimizeBufferSize'] ? 256 : 2048;
return WAB['fakeSmallBufferSize'] ? 256 : 2048;
});
sampleRate = EM_ASM_INT_V({
var WAB = Module['WebAudioBridge'];
@@ -128,18 +128,27 @@ struct WebBridge : NativeBridge {
var bufferSize = $2;
var WAB = Module['WebAudioBridge'];

var realBufferSize = WAB['minimizeBufferSize'] ? 2048 : bufferSize;
var realBufferSize = WAB['fakeSmallBufferSize'] ? 2048 : bufferSize;
var divider = realBufferSize / bufferSize;

// main processor
WAB.processor = WAB.audioContext['createScriptProcessor'](realBufferSize, numInputs, numOutputs);
WAB.processor['onaudioprocess'] = function (e) {
// var timestamp = performance.now();
if (e['inputBuffer'].length != e['outputBuffer'].length || e['inputBuffer'].length != bufferSize) {
console.log("invalid buffer size!", e['inputBuffer'].length, e['inputBuffer'].length, bufferSize);
}
if (e['inputBuffer'].numberOfChannels != numInputs) {
console.log("invalid number of input channels!", e['inputBuffer'].numberOfChannels, numInputs);
}
if (e['outputBuffer'].numberOfChannels != numOutputs) {
console.log("invalid number of output channels!", e['outputBuffer'].numberOfChannels, numOutputs);
}
for (var k = 0; k < divider; ++k) {
for (var i = 0; i < numInputs; ++i) {
var buffer = e['inputBuffer']['getChannelData'](i);
for (var j = 0; j < bufferSize; ++j) {
// setValue($3 + ((bufferSize * i) + j) * 4, buffer[j], 'float');
// setValue($3 + ((bufferSize * i) + j) * 4, buffer[bufferSize * k + j], 'float');
HEAPF32[$3 + (((bufferSize * i) + j) << 2) >> 2] = buffer[bufferSize * k + j];
}
}
@@ -236,24 +245,28 @@ struct WebBridge : NativeBridge {
constraints['googAutoGainControl'] = false;

var success = function(stream) {
var track = stream.getAudioTracks()[0];
var tracks = stream.getAudioTracks();

// try to force as much as we can
track.applyConstraints({'autoGainControl': { 'exact': false } })
.then(function(){console.log("Mic/Input auto-gain control has been disabled")})
.catch(function(){console.log("Cannot disable Mic/Input auto-gain")});
for (var i in tracks) {
var track = tracks[i];

track.applyConstraints({'echoCancellation': { 'exact': false } })
.then(function(){console.log("Mic/Input echo-cancellation has been disabled")})
.catch(function(){console.log("Cannot disable Mic/Input echo-cancellation")});
track.applyConstraints({'autoGainControl': { 'exact': false } })
.then(function(){console.log("Mic/Input auto-gain control has been disabled")})
.catch(function(){console.log("Cannot disable Mic/Input auto-gain")});

track.applyConstraints({'noiseSuppression': { 'exact': false } })
.then(function(){console.log("Mic/Input noise-suppression has been disabled")})
.catch(function(){console.log("Cannot disable Mic/Input noise-suppression")});
track.applyConstraints({'echoCancellation': { 'exact': false } })
.then(function(){console.log("Mic/Input echo-cancellation has been disabled")})
.catch(function(){console.log("Cannot disable Mic/Input echo-cancellation")});

track.applyConstraints({'googAutoGainControl': { 'exact': false } })
.then(function(){})
.catch(function(){});
track.applyConstraints({'noiseSuppression': { 'exact': false } })
.then(function(){console.log("Mic/Input noise-suppression has been disabled")})
.catch(function(){console.log("Cannot disable Mic/Input noise-suppression")});

track.applyConstraints({'googAutoGainControl': { 'exact': false } })
.then(function(){})
.catch(function(){});
}

WAB.captureStreamNode = WAB.audioContext['createMediaStreamSource'](stream);
WAB.captureStreamNode.connect(WAB.processor);


Loading…
Cancel
Save