use crate::engine::stage::Stage;
use crate::engine::stages::keylock::KeylockStage;
use crate::engine::stages::wide_keylock::WideKeylockStage;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum EngineProfile {
#[default]
Tape,
Keylock,
WideKeylock,
}
pub(crate) fn build_stages(
profile: EngineProfile,
sample_rate: u32,
channels: usize,
) -> Vec<Box<dyn Stage>> {
match profile {
EngineProfile::Tape => Vec::new(),
EngineProfile::Keylock => vec![Box::new(KeylockStage::new(sample_rate, channels))],
EngineProfile::WideKeylock => {
vec![Box::new(WideKeylockStage::new(sample_rate, channels))]
}
}
}