瀏覽代碼

play on edit

Johann Woelper 4 年之前
父節點
當前提交
24f1798016
共有 4 個文件被更改,包括 555 次插入3 次删除
  1. 269 0
      patterns/it's a new day.pat
  2. 269 0
      patterns/walk this way.pat
  3. 12 0
      src/base.rs
  4. 5 3
      src/main.rs

+ 269 - 0
patterns/it's a new day.pat

@@ -0,0 +1,269 @@
+{
+  "name": "it's a new day",
+  "repeat": 1,
+  "resolution": 8,
+  "xsize": 16,
+  "ysize": 4,
+  "sounds": {
+    "6,0": {
+      "name": "kick_edm.wav",
+      "location": "media\\cc0\\kick_rough.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "0,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "10,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "11,1": {
+      "name": "snare_jungle.wav",
+      "location": "media\\cc0\\snare_jungle.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "5,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "15,1": {
+      "name": "snare_jungle.wav",
+      "location": "media\\cc0\\snare_jungle.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "15,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "8,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "11,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "0,0": {
+      "name": "kick_edm.wav",
+      "location": "media\\cc0\\kick_rough.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "10,0": {
+      "name": "kick_edm.wav",
+      "location": "media\\cc0\\kick_rough.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "2,0": {
+      "name": "kick_edm.wav",
+      "location": "media\\cc0\\kick_rough.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "12,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "6,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "3,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "1,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "2,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "9,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "12,1": {
+      "name": "snare_jungle.wav",
+      "location": "media\\cc0\\snare_jungle.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "14,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "13,0": {
+      "name": "kick_edm.wav",
+      "location": "media\\cc0\\kick_rough.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "7,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "9,1": {
+      "name": "snare_jungle.wav",
+      "location": "media\\cc0\\snare_jungle.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "4,1": {
+      "name": "snare_jungle.wav",
+      "location": "media\\cc0\\snare_jungle.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "4,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "7,1": {
+      "name": "snare_jungle.wav",
+      "location": "media\\cc0\\snare_jungle.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    }
+  }
+}

+ 269 - 0
patterns/walk this way.pat

@@ -0,0 +1,269 @@
+{
+  "name": "walk this way",
+  "repeat": 1,
+  "resolution": 8,
+  "xsize": 16,
+  "ysize": 4,
+  "sounds": {
+    "11,1": {
+      "name": "snare_jungle.wav",
+      "location": "media\\cc0\\snare_jungle.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "2,0": {
+      "name": "kick_edm.wav",
+      "location": "media\\cc0\\kick_rough.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "7,1": {
+      "name": "snare_jungle.wav",
+      "location": "media\\cc0\\snare_jungle.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "6,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "8,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "15,1": {
+      "name": "snare_jungle.wav",
+      "location": "media\\cc0\\snare_jungle.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "14,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "0,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "6,0": {
+      "name": "kick_edm.wav",
+      "location": "media\\cc0\\kick_rough.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "3,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "2,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "12,1": {
+      "name": "snare_jungle.wav",
+      "location": "media\\cc0\\snare_jungle.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "5,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "13,0": {
+      "name": "kick_edm.wav",
+      "location": "media\\cc0\\kick_rough.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "12,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "7,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "1,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "9,1": {
+      "name": "snare_jungle.wav",
+      "location": "media\\cc0\\snare_jungle.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "4,1": {
+      "name": "snare_jungle.wav",
+      "location": "media\\cc0\\snare_jungle.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "4,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "15,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "10,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "11,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "9,2": {
+      "name": "hihiat_closed.wav",
+      "location": "media\\cc0\\hihiat_real.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "0,0": {
+      "name": "kick_edm.wav",
+      "location": "media\\cc0\\kick_rough.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    },
+    "10,0": {
+      "name": "kick_edm.wav",
+      "location": "media\\cc0\\kick_rough.wav",
+      "volume": 1.0,
+      "roll": 0,
+      "rollrate": 0,
+      "trim": 0,
+      "speed": 1.0,
+      "reverse": false
+    }
+  }
+}

+ 12 - 0
src/base.rs

@@ -174,6 +174,18 @@ impl Sound {
         }
         *self.active.lock().unwrap() = false;
     }
+    
+    pub fn play_detached(&self, device: &Arc<rodio::Device>, bpm: i32) {
+    
+        let s = self.clone();
+        let device = device.clone();
+        
+        thread::spawn( move || {
+            s.play(&device, bpm);
+        });
+
+
+    }
 }
 
 

+ 5 - 3
src/main.rs

@@ -203,7 +203,6 @@ fn main() {
                         
                         let mut label = " ";
                         
-
                         match snd {
                             Some(s) => {
                                 label = "X";
@@ -219,7 +218,10 @@ fn main() {
                             pattern_col = x;
                             pattern_row = y;
                             match &active_sound {
-                                Some(snd) => active_pattern.insert_sound(&(x,y),  &snd),
+                                Some(snd) => {
+                                    snd.play_detached(&dev, bpm);    
+                                    active_pattern.insert_sound(&(x,y),  &snd)
+                                },
                                 None => active_pattern.remove_sound(&(x,y))
                             }
                         }
@@ -304,7 +306,7 @@ fn main() {
                         // let bpm = active_pattern.bpm;
                     }
                 
-                    if ui.button(&im_str!("play"), [w, 0.0]) {s.play(&dev, bpm)}
+                    if ui.button(&im_str!("play"), [w, 0.0]) {s.play_detached(&dev, bpm)}
                 
                 }