Feat: lots of things, preparing for live gig

This commit is contained in:
2026-02-15 11:23:11 +01:00
parent cfaadd9d33
commit 160546d64d
59 changed files with 1414 additions and 96 deletions

View File

@@ -9,6 +9,34 @@ fn annotate_copy_name(name: &Option<String>) -> Option<String> {
}
}
pub fn shift_patterns_up(
project: &mut Project,
bank: usize,
range: std::ops::RangeInclusive<usize>,
) -> Option<Vec<(usize, usize)>> {
if *range.start() == 0 {
return None;
}
let slice_start = range.start() - 1;
let slice_end = *range.end();
project.banks[bank].patterns[slice_start..=slice_end].rotate_left(1);
Some((slice_start..=slice_end).map(|p| (bank, p)).collect())
}
pub fn shift_patterns_down(
project: &mut Project,
bank: usize,
range: std::ops::RangeInclusive<usize>,
) -> Option<Vec<(usize, usize)>> {
if *range.end() >= crate::model::MAX_PATTERNS - 1 {
return None;
}
let slice_start = *range.start();
let slice_end = range.end() + 1;
project.banks[bank].patterns[slice_start..=slice_end].rotate_right(1);
Some((slice_start..=slice_end).map(|p| (bank, p)).collect())
}
pub fn copy_pattern(project: &Project, bank: usize, pattern: usize) -> Pattern {
project.banks[bank].patterns[pattern].clone()
}