47 lines
1.1 KiB
Rust
47 lines
1.1 KiB
Rust
use std::sync::Arc;
|
|
|
|
use cagire_project::Project;
|
|
use nih_plug::prelude::*;
|
|
use nih_plug_egui::EguiState;
|
|
use parking_lot::Mutex;
|
|
|
|
#[derive(Params)]
|
|
pub struct CagireParams {
|
|
#[persist = "editor-state"]
|
|
pub editor_state: Arc<EguiState>,
|
|
|
|
#[persist = "project"]
|
|
pub project: Arc<Mutex<Project>>,
|
|
|
|
#[id = "tempo"]
|
|
pub tempo: FloatParam,
|
|
|
|
#[id = "sync"]
|
|
pub sync_to_host: BoolParam,
|
|
|
|
#[id = "bank"]
|
|
pub bank: IntParam,
|
|
|
|
#[id = "pattern"]
|
|
pub pattern: IntParam,
|
|
}
|
|
|
|
impl Default for CagireParams {
|
|
fn default() -> Self {
|
|
Self {
|
|
editor_state: EguiState::from_size(1200, 800),
|
|
project: Arc::new(Mutex::new(Project::default())),
|
|
|
|
tempo: FloatParam::new("Tempo", 120.0, FloatRange::Linear { min: 40.0, max: 300.0 })
|
|
.with_unit(" BPM")
|
|
.with_step_size(0.1),
|
|
|
|
sync_to_host: BoolParam::new("Sync to Host", true),
|
|
|
|
bank: IntParam::new("Bank", 0, IntRange::Linear { min: 0, max: 31 }),
|
|
|
|
pattern: IntParam::new("Pattern", 0, IntRange::Linear { min: 0, max: 31 }),
|
|
}
|
|
}
|
|
}
|