euphony-dsp 0.1.1

implementation of euphony's signal processing nodes
Documentation
#[rustfmt::skip]
use euphony_node::{BoxProcessor, Error, ParameterValue as Value};

#[rustfmt::skip]
#[inline]
pub fn load(processor: u64) -> Option<BoxProcessor> {
    match processor {
        1 => Some(crate::unary::Abs::spawn()),
        2 => Some(crate::unary::Acos::spawn()),
        3 => Some(crate::unary::Acosh::spawn()),
        4 => Some(crate::unary::Asin::spawn()),
        5 => Some(crate::unary::Asinh::spawn()),
        6 => Some(crate::unary::Atan::spawn()),
        7 => Some(crate::unary::Atanh::spawn()),
        8 => Some(crate::unary::Cbrt::spawn()),
        9 => Some(crate::unary::Ceil::spawn()),
        10 => Some(crate::unary::Cos::spawn()),
        11 => Some(crate::unary::Cosh::spawn()),
        12 => Some(crate::unary::Exp::spawn()),
        13 => Some(crate::unary::Exp2::spawn()),
        14 => Some(crate::unary::ExpM1::spawn()),
        15 => Some(crate::unary::Floor::spawn()),
        16 => Some(crate::unary::Fract::spawn()),
        17 => Some(crate::unary::Ln::spawn()),
        18 => Some(crate::unary::Ln1p::spawn()),
        19 => Some(crate::unary::Log10::spawn()),
        20 => Some(crate::unary::Log2::spawn()),
        21 => Some(crate::unary::Norm::spawn()),
        22 => Some(crate::unary::Recip::spawn()),
        23 => Some(crate::unary::Round::spawn()),
        24 => Some(crate::unary::Signum::spawn()),
        25 => Some(crate::unary::Sin::spawn()),
        26 => Some(crate::unary::Sinh::spawn()),
        27 => Some(crate::unary::Sqrt::spawn()),
        28 => Some(crate::unary::Tan::spawn()),
        29 => Some(crate::unary::Tanh::spawn()),
        30 => Some(crate::unary::ToDegrees::spawn()),
        31 => Some(crate::unary::ToRadians::spawn()),
        32 => Some(crate::unary::Trunc::spawn()),
        33 => Some(crate::unary::Neg::spawn()),
        34 => Some(crate::unary::Pass::spawn()),
        50 => Some(crate::binary::Add::spawn()),
        51 => Some(crate::binary::Atan2::spawn()),
        52 => Some(crate::binary::Copysign::spawn()),
        53 => Some(crate::binary::Div::spawn()),
        54 => Some(crate::binary::DivEuclid::spawn()),
        55 => Some(crate::binary::Hypot::spawn()),
        56 => Some(crate::binary::Log::spawn()),
        57 => Some(crate::binary::Max::spawn()),
        58 => Some(crate::binary::Min::spawn()),
        59 => Some(crate::binary::Mul::spawn()),
        60 => Some(crate::binary::Powf::spawn()),
        61 => Some(crate::binary::Powi::spawn()),
        62 => Some(crate::binary::Rem::spawn()),
        63 => Some(crate::binary::RemEuclid::spawn()),
        64 => Some(crate::binary::Sub::spawn()),
        75 => Some(crate::tertiary::AddMul::spawn()),
        76 => Some(crate::tertiary::Clamp::spawn()),
        77 => Some(crate::tertiary::MulAdd::spawn()),
        78 => Some(crate::tertiary::Select::spawn()),
        100 => Some(crate::osc::Sine::spawn()),
        101 => Some(crate::osc::SineFast::spawn()),
        102 => Some(crate::osc::SineFaster::spawn()),
        103 => Some(crate::osc::Pulse::spawn()),
        104 => Some(crate::osc::Sawtooth::spawn()),
        105 => Some(crate::osc::Triangle::spawn()),
        106 => Some(crate::osc::Silence::spawn()),
        107 => Some(crate::osc::Phase::spawn()),
        108 => Some(crate::osc::nes::Pulse::spawn()),
        109 => Some(crate::osc::nes::Triangle::spawn()),
        110 => Some(crate::osc::noise::White::spawn()),
        111 => Some(crate::osc::noise::Mls::spawn()),
        112 => Some(crate::osc::noise::Pink::spawn()),
        113 => Some(crate::osc::noise::Brown::spawn()),
        114 => Some(crate::osc::wave::Wave::spawn()),
        115 => Some(crate::osc::wave::Morph::spawn()),
        200 => Some(crate::env::Linear::spawn()),
        300 => Some(crate::filter::Butterpass::spawn()),
        301 => Some(crate::filter::Lowpole::spawn()),
        302 => Some(crate::filter::Allpole::spawn()),
        303 => Some(crate::filter::Highpole::spawn()),
        304 => Some(crate::filter::Resonator::spawn()),
        305 => Some(crate::filter::Moog::spawn()),
        306 => Some(crate::filter::Morph::spawn()),
        307 => Some(crate::filter::Pinkpass::spawn()),
        308 => Some(crate::filter::Lowpass::spawn()),
        309 => Some(crate::filter::Highpass::spawn()),
        310 => Some(crate::filter::Bandpass::spawn()),
        311 => Some(crate::filter::Notch::spawn()),
        312 => Some(crate::filter::Peak::spawn()),
        313 => Some(crate::filter::Allpass::spawn()),
        314 => Some(crate::filter::Bell::spawn()),
        315 => Some(crate::filter::Lowshelf::spawn()),
        316 => Some(crate::filter::Highshelf::spawn()),
        317 => Some(crate::osc::wave::Shaper::spawn()),
        500 => Some(crate::buffer::Play::spawn()),
        _ => None,
    }
}

#[rustfmt::skip]
#[inline]
pub fn name(processor: u64) -> Option<&'static str> {
    match processor {
        1 => Some("Abs"),
        2 => Some("Acos"),
        3 => Some("Acosh"),
        4 => Some("Asin"),
        5 => Some("Asinh"),
        6 => Some("Atan"),
        7 => Some("Atanh"),
        8 => Some("Cbrt"),
        9 => Some("Ceil"),
        10 => Some("Cos"),
        11 => Some("Cosh"),
        12 => Some("Exp"),
        13 => Some("Exp2"),
        14 => Some("ExpM1"),
        15 => Some("Floor"),
        16 => Some("Fract"),
        17 => Some("Ln"),
        18 => Some("Ln1p"),
        19 => Some("Log10"),
        20 => Some("Log2"),
        21 => Some("Norm"),
        22 => Some("Recip"),
        23 => Some("Round"),
        24 => Some("Signum"),
        25 => Some("Sin"),
        26 => Some("Sinh"),
        27 => Some("Sqrt"),
        28 => Some("Tan"),
        29 => Some("Tanh"),
        30 => Some("ToDegrees"),
        31 => Some("ToRadians"),
        32 => Some("Trunc"),
        33 => Some("Neg"),
        34 => Some("Pass"),
        50 => Some("Add"),
        51 => Some("Atan2"),
        52 => Some("Copysign"),
        53 => Some("Div"),
        54 => Some("DivEuclid"),
        55 => Some("Hypot"),
        56 => Some("Log"),
        57 => Some("Max"),
        58 => Some("Min"),
        59 => Some("Mul"),
        60 => Some("Powf"),
        61 => Some("Powi"),
        62 => Some("Rem"),
        63 => Some("RemEuclid"),
        64 => Some("Sub"),
        75 => Some("AddMul"),
        76 => Some("Clamp"),
        77 => Some("MulAdd"),
        78 => Some("Select"),
        100 => Some("Sine"),
        101 => Some("SineFast"),
        102 => Some("SineFaster"),
        103 => Some("Pulse"),
        104 => Some("Sawtooth"),
        105 => Some("Triangle"),
        106 => Some("Silence"),
        107 => Some("Phase"),
        108 => Some("Pulse"),
        109 => Some("Triangle"),
        110 => Some("White"),
        111 => Some("Mls"),
        112 => Some("Pink"),
        113 => Some("Brown"),
        114 => Some("Wave"),
        115 => Some("Morph"),
        200 => Some("Linear"),
        300 => Some("Butterpass"),
        301 => Some("Lowpole"),
        302 => Some("Allpole"),
        303 => Some("Highpole"),
        304 => Some("Resonator"),
        305 => Some("Moog"),
        306 => Some("Morph"),
        307 => Some("Pinkpass"),
        308 => Some("Lowpass"),
        309 => Some("Highpass"),
        310 => Some("Bandpass"),
        311 => Some("Notch"),
        312 => Some("Peak"),
        313 => Some("Allpass"),
        314 => Some("Bell"),
        315 => Some("Lowshelf"),
        316 => Some("Highshelf"),
        317 => Some("Shaper"),
        500 => Some("Play"),
        _ => None,
    }
}

#[rustfmt::skip]
#[inline]
pub fn validate_parameter(processor: u64, parameter: u64, value: Value) -> Result<(), Error> {
    match processor {
        1 => crate::unary::Abs::validate_parameter(parameter, value),
        2 => crate::unary::Acos::validate_parameter(parameter, value),
        3 => crate::unary::Acosh::validate_parameter(parameter, value),
        4 => crate::unary::Asin::validate_parameter(parameter, value),
        5 => crate::unary::Asinh::validate_parameter(parameter, value),
        6 => crate::unary::Atan::validate_parameter(parameter, value),
        7 => crate::unary::Atanh::validate_parameter(parameter, value),
        8 => crate::unary::Cbrt::validate_parameter(parameter, value),
        9 => crate::unary::Ceil::validate_parameter(parameter, value),
        10 => crate::unary::Cos::validate_parameter(parameter, value),
        11 => crate::unary::Cosh::validate_parameter(parameter, value),
        12 => crate::unary::Exp::validate_parameter(parameter, value),
        13 => crate::unary::Exp2::validate_parameter(parameter, value),
        14 => crate::unary::ExpM1::validate_parameter(parameter, value),
        15 => crate::unary::Floor::validate_parameter(parameter, value),
        16 => crate::unary::Fract::validate_parameter(parameter, value),
        17 => crate::unary::Ln::validate_parameter(parameter, value),
        18 => crate::unary::Ln1p::validate_parameter(parameter, value),
        19 => crate::unary::Log10::validate_parameter(parameter, value),
        20 => crate::unary::Log2::validate_parameter(parameter, value),
        21 => crate::unary::Norm::validate_parameter(parameter, value),
        22 => crate::unary::Recip::validate_parameter(parameter, value),
        23 => crate::unary::Round::validate_parameter(parameter, value),
        24 => crate::unary::Signum::validate_parameter(parameter, value),
        25 => crate::unary::Sin::validate_parameter(parameter, value),
        26 => crate::unary::Sinh::validate_parameter(parameter, value),
        27 => crate::unary::Sqrt::validate_parameter(parameter, value),
        28 => crate::unary::Tan::validate_parameter(parameter, value),
        29 => crate::unary::Tanh::validate_parameter(parameter, value),
        30 => crate::unary::ToDegrees::validate_parameter(parameter, value),
        31 => crate::unary::ToRadians::validate_parameter(parameter, value),
        32 => crate::unary::Trunc::validate_parameter(parameter, value),
        33 => crate::unary::Neg::validate_parameter(parameter, value),
        34 => crate::unary::Pass::validate_parameter(parameter, value),
        50 => crate::binary::Add::validate_parameter(parameter, value),
        51 => crate::binary::Atan2::validate_parameter(parameter, value),
        52 => crate::binary::Copysign::validate_parameter(parameter, value),
        53 => crate::binary::Div::validate_parameter(parameter, value),
        54 => crate::binary::DivEuclid::validate_parameter(parameter, value),
        55 => crate::binary::Hypot::validate_parameter(parameter, value),
        56 => crate::binary::Log::validate_parameter(parameter, value),
        57 => crate::binary::Max::validate_parameter(parameter, value),
        58 => crate::binary::Min::validate_parameter(parameter, value),
        59 => crate::binary::Mul::validate_parameter(parameter, value),
        60 => crate::binary::Powf::validate_parameter(parameter, value),
        61 => crate::binary::Powi::validate_parameter(parameter, value),
        62 => crate::binary::Rem::validate_parameter(parameter, value),
        63 => crate::binary::RemEuclid::validate_parameter(parameter, value),
        64 => crate::binary::Sub::validate_parameter(parameter, value),
        75 => crate::tertiary::AddMul::validate_parameter(parameter, value),
        76 => crate::tertiary::Clamp::validate_parameter(parameter, value),
        77 => crate::tertiary::MulAdd::validate_parameter(parameter, value),
        78 => crate::tertiary::Select::validate_parameter(parameter, value),
        100 => crate::osc::Sine::validate_parameter(parameter, value),
        101 => crate::osc::SineFast::validate_parameter(parameter, value),
        102 => crate::osc::SineFaster::validate_parameter(parameter, value),
        103 => crate::osc::Pulse::validate_parameter(parameter, value),
        104 => crate::osc::Sawtooth::validate_parameter(parameter, value),
        105 => crate::osc::Triangle::validate_parameter(parameter, value),
        106 => crate::osc::Silence::validate_parameter(parameter, value),
        107 => crate::osc::Phase::validate_parameter(parameter, value),
        108 => crate::osc::nes::Pulse::validate_parameter(parameter, value),
        109 => crate::osc::nes::Triangle::validate_parameter(parameter, value),
        110 => crate::osc::noise::White::validate_parameter(parameter, value),
        111 => crate::osc::noise::Mls::validate_parameter(parameter, value),
        112 => crate::osc::noise::Pink::validate_parameter(parameter, value),
        113 => crate::osc::noise::Brown::validate_parameter(parameter, value),
        114 => crate::osc::wave::Wave::validate_parameter(parameter, value),
        115 => crate::osc::wave::Morph::validate_parameter(parameter, value),
        200 => crate::env::Linear::validate_parameter(parameter, value),
        300 => crate::filter::Butterpass::validate_parameter(parameter, value),
        301 => crate::filter::Lowpole::validate_parameter(parameter, value),
        302 => crate::filter::Allpole::validate_parameter(parameter, value),
        303 => crate::filter::Highpole::validate_parameter(parameter, value),
        304 => crate::filter::Resonator::validate_parameter(parameter, value),
        305 => crate::filter::Moog::validate_parameter(parameter, value),
        306 => crate::filter::Morph::validate_parameter(parameter, value),
        307 => crate::filter::Pinkpass::validate_parameter(parameter, value),
        308 => crate::filter::Lowpass::validate_parameter(parameter, value),
        309 => crate::filter::Highpass::validate_parameter(parameter, value),
        310 => crate::filter::Bandpass::validate_parameter(parameter, value),
        311 => crate::filter::Notch::validate_parameter(parameter, value),
        312 => crate::filter::Peak::validate_parameter(parameter, value),
        313 => crate::filter::Allpass::validate_parameter(parameter, value),
        314 => crate::filter::Bell::validate_parameter(parameter, value),
        315 => crate::filter::Lowshelf::validate_parameter(parameter, value),
        316 => crate::filter::Highshelf::validate_parameter(parameter, value),
        317 => crate::osc::wave::Shaper::validate_parameter(parameter, value),
        500 => crate::buffer::Play::validate_parameter(parameter, value),
        _ => unreachable!("processor ({}) param ({}) doesn't exist", processor, parameter)
    }
}