Feat: lots of things, preparing for live gig
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user