Append reverb effect to audio source.
This script is originally a spin out of sf2synth.js's reverb effect.
const reverb = new Reverb(ctx, {
/**
* Randam noise algorythm
* @see {@link https://github.com/thi-ng/umbrella/tree/develop/packages/random}
*/
randomAlgorithm: SYSTEM;
/**
* IR (Inpulse Response) colord noise algorithm (BLUE, GREEN, PINK, RED, VIOLET, WHITE)
* @see {@link https://github.com/thi-ng/umbrella/tree/develop/packages/colored-noise}
*/
noise: Noise.WHITE,
/** IR source noise scale */
scale: 1;
/** Number of IR source noise peaks */
peaks: 2;
/** Amount of IR decay. 0~100 */
decay: 5,
/** Delay time o IR. (NOT delay effect) 0~100 [sec] */
delay: 0,
/** Filter frequency. 20~5000 [Hz] */
filterFreq: 2200,
/** Filter Q. 0~10 */
filterQ: 1,
/**
* Filter type. 'bandpass' etc.
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode/type}
*/
filterType: 'lowpass',
/** Dry (Original Sound) and Wet (Effected sound) raito. 0~1 */
mix: 0.5,
/** Reverse IR. */
reverse: false,
/** Time length of IR. 0~50 [sec] */
time: 3,
});
// Setup Audio Context
const ctx = new window.AudioContext();
// iOS fix.
document.addEventListener('touchstart', initAudioContext);
function initAudioContext() {
document.removeEventListener('touchstart', initAudioContext);
// wake up AudioContext
const emptySource = ctx.createBufferSource();
emptySource.start();
emptySource.stop();
}
// Setup Reverb Class
const reverb = new Reverb(ctx, {});
// put Audio data to audio buffer source
const sourceNode = ctx.createBufferSource();
sourceNode.buffer = [AudioBuffer];
// Connect Reverb
reverb.connect(sourceNode);
sourceNode.connect(ctx.destination);
// fire
sourceNode.play();
Not really intended for use with a CDN.
The dependent libraries @thi.ng/colored-noise, @thi.ng/random and @thi.ng/transducers need to be loaded separately.
©2019-2024 by Logue. Licensed under the MIT License.