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


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


// main processor // main processor
WAB.processor = WAB.audioContext['createScriptProcessor'](realBufferSize, numInputs, numOutputs); WAB.processor = WAB.audioContext['createScriptProcessor'](realBufferSize, numInputs, numOutputs);
WAB.processor['onaudioprocess'] = function (e) { WAB.processor['onaudioprocess'] = function (e) {
// var timestamp = performance.now(); // 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 k = 0; k < divider; ++k) {
for (var i = 0; i < numInputs; ++i) { for (var i = 0; i < numInputs; ++i) {
var buffer = e['inputBuffer']['getChannelData'](i); var buffer = e['inputBuffer']['getChannelData'](i);
for (var j = 0; j < bufferSize; ++j) { 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]; HEAPF32[$3 + (((bufferSize * i) + j) << 2) >> 2] = buffer[bufferSize * k + j];
} }
} }
@@ -236,24 +245,28 @@ struct WebBridge : NativeBridge {
constraints['googAutoGainControl'] = false; constraints['googAutoGainControl'] = false;


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


// try to force as much as we can // 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 = WAB.audioContext['createMediaStreamSource'](stream);
WAB.captureStreamNode.connect(WAB.processor); WAB.captureStreamNode.connect(WAB.processor);


Loading…
Cancel
Save