codeformat

This commit is contained in:
Felix Roos 2023-10-01 23:20:05 +02:00
parent 1909caf769
commit 6ca99e33ab
4 changed files with 24 additions and 45 deletions

View file

@ -2,13 +2,7 @@ import reverbGen from './reverbGen.mjs';
if (typeof AudioContext !== 'undefined') { if (typeof AudioContext !== 'undefined') {
AudioContext.prototype.generateReverb = reverbGen.generateReverb; AudioContext.prototype.generateReverb = reverbGen.generateReverb;
AudioContext.prototype.createReverb = function( AudioContext.prototype.createReverb = function (audioContext, duration, fade, revlp, revdim) {
audioContext,
duration,
fade,
revlp,
revdim
) {
const convolver = this.createConvolver(); const convolver = this.createConvolver();
convolver.setDuration = (d, fade, revlp, revdim) => { convolver.setDuration = (d, fade, revlp, revdim) => {
this.generateReverb( this.generateReverb(
@ -23,7 +17,7 @@ if (typeof AudioContext !== 'undefined') {
}, },
(buffer) => { (buffer) => {
convolver.buffer = buffer; convolver.buffer = buffer;
} },
); );
convolver.duration = d; convolver.duration = d;
convolver.fade = fade; convolver.fade = fade;

View file

@ -12,9 +12,6 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
"use strict";
var reverbGen = {}; var reverbGen = {};
/** Generates a reverb impulse response. /** Generates a reverb impulse response.
@ -42,7 +39,7 @@ reverbGen.generateReverb = function(params, callback) {
chan[j] = randomSample() * Math.pow(decayBase, j); chan[j] = randomSample() * Math.pow(decayBase, j);
} }
for (var j = 0; j < fadeInSampleFrames; j++) { for (var j = 0; j < fadeInSampleFrames; j++) {
chan[j] *= (j / fadeInSampleFrames); chan[j] *= j / fadeInSampleFrames;
} }
} }
@ -71,7 +68,7 @@ reverbGen.generateGraph = function(data, width, height, min, max) {
gc.fillRect(i * xscale, height - (data[i] - min) * yscale, 1, 1); gc.fillRect(i * xscale, height - (data[i] - min) * yscale, 1, 1);
} }
return canvas; return canvas;
} };
/** Saves an AudioBuffer as a 16-bit WAV file on the client's host /** Saves an AudioBuffer as a 16-bit WAV file on the client's host
file system. Normalizes it to peak at +-32767, and optionally file system. Normalizes it to peak at +-32767, and optionally
@ -124,7 +121,7 @@ reverbGen.saveWavFile = function(buffer, name, opt_minTail) {
dataView.setUint32(4, fileBytes - 8, true); // file length dataView.setUint32(4, fileBytes - 8, true); // file length
dataView.setUint32(8, 1163280727, true); // "WAVE" dataView.setUint32(8, 1163280727, true); // "WAVE"
dataView.setUint32(12, 544501094, true); // "fmt " dataView.setUint32(12, 544501094, true); // "fmt "
dataView.setUint32(16, 16, true) // fmt chunk length dataView.setUint32(16, 16, true); // fmt chunk length
dataView.setUint16(20, 1, true); // PCM format dataView.setUint16(20, 1, true); // PCM format
dataView.setUint16(22, numChannels, true); // NumChannels dataView.setUint16(22, numChannels, true); // NumChannels
dataView.setUint32(24, sampleRate, true); // SampleRate dataView.setUint32(24, sampleRate, true); // SampleRate
@ -136,11 +133,10 @@ reverbGen.saveWavFile = function(buffer, name, opt_minTail) {
dataView.setUint32(40, sampleDataBytes, true); dataView.setUint32(40, sampleDataBytes, true);
for (var j = 0; j < numSampleFrames; j++) { for (var j = 0; j < numSampleFrames; j++) {
for (var i = 0; i < numChannels; i++) { for (var i = 0; i < numChannels; i++) {
dataView.setInt16(44 + j * bytesPerSampleFrame + i * bytesPerSample, dataView.setInt16(44 + j * bytesPerSampleFrame + i * bytesPerSample, Math.round(scale * channels[i][j]), true);
Math.round(scale * channels[i][j]), true);
} }
} }
var blob = new Blob([arrayBuffer], { 'type': 'audio/wav' }); var blob = new Blob([arrayBuffer], { type: 'audio/wav' });
var url = window.URL.createObjectURL(blob); var url = window.URL.createObjectURL(blob);
var linkEl = document.createElement('a'); var linkEl = document.createElement('a');
linkEl.href = url; linkEl.href = url;
@ -173,7 +169,7 @@ var applyGradualLowpass = function(input, lpFreqStart, lpFreqEnd, lpFreqEndAt, c
lpFreqStart = Math.min(lpFreqStart, input.sampleRate / 2); lpFreqStart = Math.min(lpFreqStart, input.sampleRate / 2);
lpFreqEnd = Math.min(lpFreqEnd, input.sampleRate / 2); lpFreqEnd = Math.min(lpFreqEnd, input.sampleRate / 2);
filter.type = "lowpass"; filter.type = 'lowpass';
filter.Q.value = 0.0001; filter.Q.value = 0.0001;
filter.frequency.setValueAtTime(lpFreqStart, 0); filter.frequency.setValueAtTime(lpFreqStart, 0);
filter.frequency.linearRampToValueAtTime(lpFreqEnd, lpFreqEndAt); filter.frequency.linearRampToValueAtTime(lpFreqEnd, lpFreqEndAt);

View file

@ -109,20 +109,12 @@ function getDelay(orbit, delaytime, delayfeedback, t) {
let reverbs = {}; let reverbs = {};
function getReverb(orbit, duration = 2, fade, revlp, revdim) { function getReverb(orbit, duration = 2, fade, revlp, revdim) {
// If no reverb has been created for a given orbit, create one // If no reverb has been created for a given orbit, create one
if (!reverbs[orbit]) { if (!reverbs[orbit]) {
const ac = getAudioContext(); const ac = getAudioContext();
const reverb = ac.createReverb( const reverb = ac.createReverb(getAudioContext(), duration, fade, revlp, revdim);
getAudioContext(),
duration,
fade,
revlp,
revdim,
);
reverb.connect(getDestination()); reverb.connect(getDestination());
reverbs[orbit] = reverb; reverbs[orbit] = reverb;
console.log(reverbs[orbit]);
} }
if ( if (
@ -131,14 +123,11 @@ function getReverb(orbit, duration = 2, fade, revlp, revdim) {
reverbs[orbit].revlp !== revlp || reverbs[orbit].revlp !== revlp ||
reverbs[orbit].revdim !== revdim reverbs[orbit].revdim !== revdim
) { ) {
reverbs[orbit] = reverbs[orbit].setDuration( reverbs[orbit] = reverbs[orbit].setDuration(duration, fade, revlp, revdim);
duration, fade, revlp, revdim
);
reverbs[orbit].duration = duration; reverbs[orbit].duration = duration;
reverbs[orbit].fade = fade; reverbs[orbit].fade = fade;
reverbs[orbit].revlp = revlp; reverbs[orbit].revlp = revlp;
reverbs[orbit].revdim = revdim; reverbs[orbit].revdim = revdim;
} }
return reverbs[orbit]; return reverbs[orbit];