|
@@ -12,7 +12,7 @@ use walkdir::WalkDir;
|
|
|
mod support_ogl;
|
|
|
// mod support_glium;
|
|
|
use env_logger;
|
|
|
-use log::*;
|
|
|
+// use log::*;
|
|
|
|
|
|
fn collect_sounds (root: &str) -> Vec<Sound> {
|
|
|
WalkDir::new(root)
|
|
@@ -25,6 +25,16 @@ fn collect_sounds (root: &str) -> Vec<Sound> {
|
|
|
}
|
|
|
|
|
|
|
|
|
+fn collect_patterns (root: &str) -> Vec<Pattern> {
|
|
|
+ WalkDir::new(root)
|
|
|
+ .into_iter()
|
|
|
+ .filter_map(|e| e.ok())
|
|
|
+ .filter(|e| e.path().is_file())
|
|
|
+ .map(|f| Pattern::load(f.path()))
|
|
|
+ .filter_map(|e| e.ok())
|
|
|
+ .collect()
|
|
|
+}
|
|
|
+
|
|
|
fn main() {
|
|
|
env_logger::init();
|
|
|
let dev = rodio::default_output_device().unwrap();
|
|
@@ -43,6 +53,7 @@ fn main() {
|
|
|
// let mut active_bar = &mut timeline.patterns[0].bars[0];
|
|
|
let mut active_pattern = Pattern::default();
|
|
|
let mut active_sound: Option<Sound> = None;
|
|
|
+ let mut active_pattern_name = ImString::new("dsd");
|
|
|
// let mut active_pattern = &mut timeline.patterns[0];
|
|
|
|
|
|
|
|
@@ -83,6 +94,9 @@ fn main() {
|
|
|
});
|
|
|
});
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ // PATTERN WINDOW ====================================
|
|
|
Window::new(im_str!("pattern"))
|
|
|
.size([300.0, 100.0], Condition::FirstUseEver)
|
|
|
.build(ui, || {
|
|
@@ -96,15 +110,32 @@ fn main() {
|
|
|
active_pattern.extend_row(1);
|
|
|
}
|
|
|
|
|
|
+ // if ui.input_text(&im_str!("name"), &mut active_pattern_name).build() {
|
|
|
+ // dbg!(&active_pattern_name);
|
|
|
+ // }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ let mut imstr_name = ImString::from(active_pattern.name.clone());
|
|
|
+ if ui.input_text(&im_str!("yo"), &mut imstr_name)
|
|
|
+ .resize_buffer(true)
|
|
|
+ .build() {
|
|
|
+ // dbg!(&active_pattern_name);
|
|
|
+ active_pattern.name = imstr_name.to_string();
|
|
|
+ };
|
|
|
+
|
|
|
+ if ui.small_button(&im_str!("save")) {active_pattern.save();}
|
|
|
+ if ui.small_button(&im_str!("load")) {}
|
|
|
+
|
|
|
ui.same_line(0.0);
|
|
|
- if ui.small_button(&im_str!("ply")) {
|
|
|
+ if ui.small_button(&im_str!("play")) {
|
|
|
active_pattern.play_mut(&dev);
|
|
|
}
|
|
|
|
|
|
ui.drag_int(im_str!("repeat"), &mut active_pattern.repeat)
|
|
|
- .max(32)
|
|
|
- .speed(0.05)
|
|
|
- .build();
|
|
|
+ .max(32)
|
|
|
+ .speed(0.05)
|
|
|
+ .build();
|
|
|
|
|
|
ui.drag_int(im_str!("bpm"), &mut active_pattern.bpm).build();
|
|
|
|
|
@@ -141,10 +172,6 @@ fn main() {
|
|
|
println!("r{}c{}", row_idx, snd_idx);
|
|
|
active_pattern.sounds[row_idx][snd_idx] = active_sound.clone();
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
@@ -165,8 +192,8 @@ fn main() {
|
|
|
ui.text(im_str!("name {}", s.name));
|
|
|
// let _ = DragFloat::new()
|
|
|
ui.drag_float(im_str!("volume"), &mut s.volume)
|
|
|
- .min(0.0)
|
|
|
- .max(1.0)
|
|
|
+ .min(-1.0)
|
|
|
+ .max(2.0)
|
|
|
.speed(0.01)
|
|
|
.build();
|
|
|
ui.drag_float(im_str!("speed"), &mut s.speed)
|