tests: reverb

This commit is contained in:
Vasilii Milovidov
2023-10-07 19:11:35 +04:00
parent c0411c389f
commit 9d22a9f9ba
2 changed files with 2 additions and 66 deletions
-63
View File
@@ -120,69 +120,6 @@ impl Reverb {
}
}
pub struct ReverbGen {
pub generated_ir: Option<GeneratedIR>,
pub sample_ir: Option<SampleIR>,
}
pub struct SampleIR {
pub buffer: AudioBuffer,
pub convolver: ConvolverNode,
pub room: Option<f32>,
pub roomsize: Option<f32>,
}
pub struct GeneratedIR {
pub buffer: AudioBuffer,
pub convolver: ConvolverNode,
pub room: Option<f32>,
pub roomsize: Option<f32>,
pub roomfade: Option<f32>,
pub roomlp: Option<f32>,
pub roomdim: Option<f32>,
}
impl GeneratedIR {
pub fn new(context: &AudioContext, room: Option<f32>, roomsize: Option<f32>, roomfade: Option<f32>, roomlp: Option<f32>, roomdim: Option<f32>, compressor: &DynamicsCompressorNode) -> Self {
let mut convolver = context.create_convolver();
let buffer = context.create_buffer(2, 44100, 44100.0);
convolver.set_buffer(buffer.clone());
convolver.connect(compressor);
Self { buffer, convolver, room, roomsize, roomfade, roomlp, roomdim }
}
}
pub trait IR {
fn set_ir(&mut self, context: &AudioContext, ir: &AudioBuffer);
fn set_params(&mut self, room: Option<f32>, roomsize: Option<f32>, roomfade: Option<f32>, roomlp: Option<f32>, roomdim: Option<f32>);
fn set_convolver(&mut self, context: &AudioContext, compressor: &DynamicsCompressorNode);
fn set_convolver_buffer(&mut self, context: &AudioContext, compressor: &DynamicsCompressorNode, ir: &AudioBuffer);
}
impl IR for SampleIR {
fn set_ir(&mut self, context: &AudioContext, ir: &AudioBuffer) {
self.buffer = ir.clone();
self.convolver.set_buffer(ir.clone());
}
fn set_params(&mut self, room: Option<f32>, roomsize: Option<f32>, roomfade: Option<f32>, roomlp: Option<f32>, roomdim: Option<f32>) {
self.room = room;
self.roomsize = roomsize;
}
fn set_convolver(&mut self, context: &AudioContext, compressor: &DynamicsCompressorNode) {
self.convolver.connect(compressor);
}
fn set_convolver_buffer(&mut self, context: &AudioContext, compressor: &DynamicsCompressorNode, ir: &AudioBuffer) {
self.convolver.set_buffer(ir.clone());
self.convolver.connect(compressor);
}
}
pub struct Synth {
pub oscillator: OscillatorNode,
pub envelope: GainNode,
+2 -3
View File
@@ -21,11 +21,10 @@ use web_audio_api::{
node::AudioNode,
};
use web_audio_api::context::OfflineAudioContext;
use web_audio_api::node::{ConvolverNode, ConvolverOptions, DelayNode, DynamicsCompressorNode};
use crate::reverbgen::{create_impulse_response, generate_coefficients_lp, write_to_buffer, write_to_wav};
use web_audio_api::node::{DynamicsCompressorNode};
use crate::reverbgen::{create_impulse_response, generate_coefficients_lp, write_to_buffer};
use crate::superdough::{ADSRMessage, apply_filter_adsr, BPFMessage, DelayMessage, Delay, FilterADSRMessage, HPFMessage, LoopMessage, LPFMessage, Sampler, Synth, WebAudioInstrument, ReverbMessage, Reverb};
#[derive(Debug, Clone)]
pub struct WebAudioMessage {
pub note: f32,