|
@@ -30,26 +30,17 @@ fn main() {
|
|
let mut sounds = collect_sounds("media");
|
|
let mut sounds = collect_sounds("media");
|
|
|
|
|
|
let mut timeline = Timeline::default();
|
|
let mut timeline = Timeline::default();
|
|
- // let mut track = Track::default();
|
|
|
|
- // track.test();
|
|
|
|
- // track.bar_mut(0).bpm = 1;
|
|
|
|
- // track.bars[0].bpm = 1;
|
|
|
|
- // let mut x = &mut track.bars[0];
|
|
|
|
- // x.bpm = 1;
|
|
|
|
-
|
|
|
|
- // dbg!(&track);
|
|
|
|
|
|
|
|
// return;
|
|
// return;
|
|
let mut pattern_col: usize = 0;
|
|
let mut pattern_col: usize = 0;
|
|
let mut pattern_row: usize = 0;
|
|
let mut pattern_row: usize = 0;
|
|
- // let mut active_track: usize = 0;
|
|
|
|
- // let mut active_bar: usize = 0;
|
|
|
|
|
|
+ let mut active_sound_idx = 0;
|
|
|
|
|
|
|
|
|
|
// let mut active_bar = Bar::default();
|
|
// let mut active_bar = Bar::default();
|
|
// let mut active_bar = &mut timeline.patterns[0].bars[0];
|
|
// let mut active_bar = &mut timeline.patterns[0].bars[0];
|
|
let mut active_pattern = Pattern::default();
|
|
let mut active_pattern = Pattern::default();
|
|
- let mut active_sound: &Option<Sound> = &None;
|
|
|
|
|
|
+ let mut active_sound: Option<Sound> = None;
|
|
// let mut active_pattern = &mut timeline.patterns[0];
|
|
// let mut active_pattern = &mut timeline.patterns[0];
|
|
|
|
|
|
|
|
|
|
@@ -78,6 +69,9 @@ fn main() {
|
|
if ui.small_button(im_str!("add to pattern")) {
|
|
if ui.small_button(im_str!("add to pattern")) {
|
|
active_pattern.sounds[pattern_row][pattern_col] = Some(s.clone());
|
|
active_pattern.sounds[pattern_row][pattern_col] = Some(s.clone());
|
|
}
|
|
}
|
|
|
|
+ if ui.small_button(im_str!("load")) {
|
|
|
|
+ active_sound = Some(s.clone());
|
|
|
|
+ }
|
|
ui.same_line(0.0);
|
|
ui.same_line(0.0);
|
|
if ui.small_button(im_str!("play")) {
|
|
if ui.small_button(im_str!("play")) {
|
|
s.play(&dev);
|
|
s.play(&dev);
|
|
@@ -91,55 +85,50 @@ fn main() {
|
|
.size([300.0, 100.0], Condition::FirstUseEver)
|
|
.size([300.0, 100.0], Condition::FirstUseEver)
|
|
.build(ui, || {
|
|
.build(ui, || {
|
|
|
|
|
|
- // for i in 0..active_pattern.length() {
|
|
|
|
- // ui.same_line(0.0);
|
|
|
|
-
|
|
|
|
- // let token = match pattern_col == i {
|
|
|
|
- // true => ui.push_style_color(StyleColor::Button, [1.0, 0.0, 0.0, 1.0]),
|
|
|
|
- // false => ui.push_style_color(StyleColor::CheckMark, [0.0, 0.0, 0.0, 1.0])
|
|
|
|
- // };
|
|
|
|
- // if ui.small_button(&im_str!("{}", i)) {
|
|
|
|
- // pattern_col = i as usize;
|
|
|
|
- // }
|
|
|
|
- // token.pop(ui);
|
|
|
|
-
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- for (row_idx, row) in (&active_pattern).sounds.iter().enumerate() {
|
|
|
|
|
|
+ if ui.small_button(&im_str!("column++")) {
|
|
|
|
+ active_pattern.extend_length(1);
|
|
|
|
+ }
|
|
|
|
+ ui.same_line(0.0);
|
|
|
|
+
|
|
|
|
+ if ui.small_button(&im_str!("row++")) {
|
|
|
|
+ active_pattern.extend_row(1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ui.same_line(0.0);
|
|
|
|
+ if ui.small_button(&im_str!("ply")) {
|
|
|
|
+ active_pattern.play_mut(&dev);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ ui.drag_int(im_str!("bpm"), &mut active_pattern.bpm).build();
|
|
|
|
+
|
|
|
|
+ for row_idx in 0..active_pattern.sounds.len() {
|
|
ui.text(im_str!("row {}", row_idx));
|
|
ui.text(im_str!("row {}", row_idx));
|
|
- for (snd_idx, sound) in row.iter().enumerate() {
|
|
|
|
|
|
+
|
|
|
|
+ for snd_idx in 0..active_pattern.sounds[row_idx].len() {
|
|
ui.same_line(0.0);
|
|
ui.same_line(0.0);
|
|
// ui.text(im_str!("snd {}", snd_idx));
|
|
// ui.text(im_str!("snd {}", snd_idx));
|
|
|
|
|
|
- let label = match sound {
|
|
|
|
|
|
+ let label = match &active_pattern.sounds[row_idx][snd_idx] {
|
|
Some(_s) => "X",
|
|
Some(_s) => "X",
|
|
None => " "
|
|
None => " "
|
|
};
|
|
};
|
|
|
|
|
|
- if ui.small_button(&im_str!("{} {}x{}", label, row_idx, snd_idx)) {
|
|
|
|
|
|
+ if ui.small_button(&im_str!("{}##{}{}", label, row_idx, snd_idx)) {
|
|
pattern_col = snd_idx;
|
|
pattern_col = snd_idx;
|
|
pattern_row = row_idx;
|
|
pattern_row = row_idx;
|
|
- // pattern_col = i as usize;
|
|
|
|
|
|
+ println!("r{}c{}", row_idx, snd_idx);
|
|
|
|
+ active_pattern.sounds[row_idx][snd_idx] = active_sound.clone();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
ui.text(im_str!("pat {} {}", pattern_col, pattern_row));
|
|
ui.text(im_str!("pat {} {}", pattern_col, pattern_row));
|
|
|
|
|
|
|
|
|
|
- if ui.small_button(&im_str!("column++")) {
|
|
|
|
- active_pattern.extend_length(1);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if ui.small_button(&im_str!("row++")) {
|
|
|
|
- active_pattern.extend_row(1);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- if ui.small_button(&im_str!("ply")) {
|
|
|
|
- active_pattern.play(&dev);
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
});
|
|
});
|
|
|
|
|
|
Window::new(im_str!("sound"))
|
|
Window::new(im_str!("sound"))
|
|
@@ -152,6 +141,9 @@ fn main() {
|
|
ui.text(im_str!("volume {}", s.volume));
|
|
ui.text(im_str!("volume {}", s.volume));
|
|
ui.text(im_str!("rate {}", s.rate));
|
|
ui.text(im_str!("rate {}", s.rate));
|
|
}
|
|
}
|
|
|
|
+ if ui.small_button(&im_str!("clear")) {
|
|
|
|
+ active_sound = None;
|
|
|
|
+ }
|
|
});
|
|
});
|
|
|
|
|
|
Window::new(im_str!("tracks"))
|
|
Window::new(im_str!("tracks"))
|
|
@@ -159,7 +151,7 @@ fn main() {
|
|
.build(ui, || {
|
|
.build(ui, || {
|
|
|
|
|
|
if ui.small_button(&im_str!("add")) {
|
|
if ui.small_button(&im_str!("add")) {
|
|
- active_pattern.play(&dev);
|
|
|
|
|
|
+ active_pattern.play_mut(&dev);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
|