Skip to main content

wavecraft_processor

Macro wavecraft_processor 

Source
macro_rules! wavecraft_processor {
    ($name:ident => Gain) => { ... };
    ($name:ident => Passthrough) => { ... };
}
Expand description

wavecraft_processor! — creates a named wrapper around a built-in DSP processor.

This macro generates a newtype struct that wraps a built-in processor type and delegates the Processor trait implementation to the inner type.

§Syntax

wavecraft_processor!(MyGain => Gain);

§Generated Code

pub struct MyGain(wavecraft_dsp::builtins::GainDsp);

impl Default for MyGain {
    fn default() -> Self {
        Self(wavecraft_dsp::builtins::GainDsp::default())
    }
}

impl wavecraft_dsp::Processor for MyGain {
    type Params = <wavecraft_dsp::builtins::GainDsp as wavecraft_dsp::Processor>::Params;

    fn process(&mut self, buffer: &mut [&mut [f32]], transport: &wavecraft_dsp::Transport, params: &Self::Params) {
        self.0.process(buffer, transport, params)
    }
}

§Built-in Processor Types

  • Gainwavecraft_dsp::builtins::GainDsp
  • Passthroughwavecraft_dsp::builtins::PassthroughDsp

§Example

use wavecraft_core::wavecraft_processor;
use wavecraft_dsp::{Processor, Transport};

wavecraft_processor!(InputGain => Gain);
wavecraft_processor!(OutputGain => Gain);

let mut input = InputGain::default();
let mut output = OutputGain::default();