wip: 12 errors

This commit is contained in:
🪞👃🪞 2024-09-05 18:08:43 +03:00
parent ea5bc2e3b1
commit e0c8a427f1
9 changed files with 65 additions and 66 deletions

View file

@ -13,61 +13,8 @@ pub struct Sampler {
pub modal: Arc<Mutex<Option<Box<dyn Exit + Send>>>>,
pub output_gain: f32
}
impl Handle<Tui> for Sampler {
fn handle (&mut self, e: &Tui) -> Perhaps<bool> {
handle_keymap(self, event, KEYMAP_SAMPLER)
}
}
impl Render<Tui> for Sampler {
fn render (&self, to: &mut Tui) -> Perhaps<Rect> {
tui_render_sampler(self, to)
}
}
process!(Sampler = Sampler::process);
/// Key bindings for sampler device.
pub const KEYMAP_SAMPLER: &'static [KeyBinding<Sampler>] = keymap!(Sampler {
[Up, NONE, "/sampler/cursor/up", "move cursor up", |state: &mut Sampler| {
state.cursor.0 = if state.cursor.0 == 0 {
state.mapped.len() + state.unmapped.len() - 1
} else {
state.cursor.0 - 1
};
Ok(true)
}],
[Down, NONE, "/sampler/cursor/down", "move cursor down", |state: &mut Sampler| {
state.cursor.0 = (state.cursor.0 + 1) % (state.mapped.len() + state.unmapped.len());
Ok(true)
}],
[Char('p'), NONE, "/sampler/play", "play current sample", |state: &mut Sampler| {
if let Some(sample) = state.sample() {
state.voices.write().unwrap().push(Sample::play(sample, 0, &100.into()));
}
Ok(true)
}],
[Char('a'), NONE, "/sampler/add", "add a new sample", |state: &mut Sampler| {
let sample = Arc::new(RwLock::new(Sample::new("", 0, 0, vec![])));
*state.modal.lock().unwrap() = Some(Exit::boxed(AddSampleModal::new(&sample, &state.voices)?));
state.unmapped.push(sample);
Ok(true)
}],
[Char('r'), NONE, "/sampler/replace", "replace selected sample", |state: &mut Sampler| {
if let Some(sample) = state.sample() {
*state.modal.lock().unwrap() = Some(Exit::boxed(AddSampleModal::new(&sample, &state.voices)?));
}
Ok(true)
}],
[Enter, NONE, "/sampler/edit", "edit selected sample", |state: &mut Sampler| {
if let Some(sample) = state.sample() {
state.editing = Some(sample.clone());
}
Ok(true)
}],
});
impl Sampler {
pub fn from_edn <'e> (args: &[Edn<'e>]) -> Usually<JackDevice<Tui>> {
let mut name = String::new();