⌈⌋ ⎇ branch:  Bitrhythm


Artifact Content

Artifact bf5c70921627a92fe692a26617c0fdc9165f9ff5f3ec461a211b8125755b4229:

  • File public/diff.txt — part of check-in [941581eece] at 2022-02-15 23:20:56 on branch trunk — Cleanup post presentation Worklet code (user: dev size: 47475)

commit 8e670e6da23eff7487d17e8f3857ee062131f847
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Mon Nov 15 07:47:56 2021 +0000

    Latest changes

diff --git a/first.js b/first.js
index cb231ff..73124f0 100644
--- a/first.js
+++ b/first.js
@@ -58,9 +58,11 @@ function once () {
         var intro = []
         var main = []
         var bass = main
-        var solo = bass
         var end = [] 
-        var count = 0;
+        var solo = end
+        var fin = end
+       
+       var count = 0;
         var old_scene = "";
         
         
@@ -69,16 +71,18 @@ function once () {
         let y = 100;
 
         instance.setup = function() {
-            var x = instance.createCanvas(700, 410);
+            var x = instance.createCanvas(1280, 410);
             x.canvas.style.position = "absolute";
-            instance.frameRate(2);
+            instance.frameRate(0.25);
             intro.push(instance.loadImage('/closed/intro/1.png'));
-            intro.push(instance.loadImage('/closed/intro/2.png'));
             main.push(instance.loadImage('/closed/main/1.png'));
             main.push(instance.loadImage('/closed/main/2.png'));
             main.push(instance.loadImage('/closed/main/3.png'));
+             main.push(instance.loadImage('/closed/main/4.png'));
+              main.push(instance.loadImage('/closed/main/5.png'));
+               main.push(instance.loadImage('/closed/main/6.png'));
+                main.push(instance.loadImage('/closed/main/7.png'));
             end.push(instance.loadImage('/closed/end/1.png'));
-            end.push(instance.loadImage('/closed/end/2.png'));
         };
 
         instance.draw = function() {
@@ -86,9 +90,9 @@ function once () {
             	old_scene = current_scene;
                 count = 0;
             }
-    //        instance.clear();
+           instance.clear();
             var c = eval(`${current_scene}`)
-       //     instance.image(c[count], 0, 0);
+            instance.image(c[count], 0, 0);
             count += 1
             count = count % c.length;
 
@@ -118,8 +122,6 @@ function once () {
         audio.master.in.gain.value = volume_guard1(val / 10);
     })
     
-
-
 	mem.master = new Tone.Channel({channelCount: 2, volume: -10}).chain(  mem["master_filter"],  mem["master_stereo"], Tone.Destination);
     Sample("k", 0, null, -5);
     Sample("sn1",1, null, 0);
@@ -136,17 +138,14 @@ function once () {
     samples[5].connect(mem[name + "_channel"]);
     hit_map[name] = 5;
   
-    
-    
+  
 
     
     
-    
-    
-    Sample("manager",6, null, -15);
+    Sample("manager",6, null, -5);
     Sample("order",7, null, -15);
     Sample("cr",8, null, -15);
-    Sample("piano",9, 400, -15);
+    Sample("piano",9, 400, -5);
    	Sample("sitar",10, 5000, -15);
     
     const audio = Audio();
@@ -172,22 +171,26 @@ function once () {
         cutoff_guard = guard([30, 700]);
         three.params.cutoff.value = cutoff_guard(val * 1000);
     })
+    
+    
+    mem.k1 = knob({ramp : [0.525, 0.8, 0.4, 0.25, 0.75, 0.25], step: 0.005, "number": dials[1]["cell"] });
+    always = function () {
+        let cutoff_guard = guard([30, 900]);
+        three.params.cutoff.value = cutoff_guard(mem.k1.move() * 1000);
+    }
 }
 
 function tweak() {
  
-    var	snare_count = cellx(16);
-    
-    
+    var	snare_count = cellx(0);
     
+        
     snare_count.onChange(function (e) {
         var val = parseInt(e["data"].value);
         if (val == 22) {
       	 	current_scene = "fin";
-			p1(8, null, null, 12.25);
-	    } else {
-           p(1, null, null, "4n")
-        }
+			 p1(8, null, null, 12.25);
+	    } 
     })
     
     
@@ -233,8 +236,6 @@ if (bars == 5) {
 }
 
 
-
-
 if (bars == 12) {
 	eval_guard ? cue("Add bass"): "";
     current_scene = "bass";
@@ -253,7 +254,7 @@ if (bars == 42) {
 
 }
 
-if (bars == 46) {
+if (bars == 48) {
 	eval_guard ? cue("Solo "): ""
     current_scene = "solo";
 }
@@ -269,7 +270,7 @@ always();
 if (track_no == 1) {
 if (count == 0) {
 	cue("Sample")
- //   p1(8, null, null, 12.25);
+    p1(7, null, null, 12.25);
 }
 }
 
@@ -311,9 +312,9 @@ if (isHit) {
         }
         if (track_no == 5) {
             if (meta[tick]["pitch"]) {
-                mem["three"].step({"glide": true, "accent": false, "note": meta[tick]["pitch"]});
+              //  mem["three"].step({"glide": true, "accent": false, "note": meta[tick]["pitch"]});
             } else {
-                mem["three"].step("off");
+              //  mem["three"].step("off");
             }
         }
         if (track_no == 6) {
@@ -350,4 +351,4 @@ if (isHit) {
 
 }
 
-
+ 
\ No newline at end of file

commit 2ba2a38315b82fb03d1567d8e79eb58bd59f41c9
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Sun Nov 14 12:31:39 2021 +0000

    Tutorial

diff --git a/tutorial.js b/tutorial.js
new file mode 100644
index 0000000..c3c5f67
--- /dev/null
+++ b/tutorial.js
@@ -0,0 +1,183 @@
+volume_guard1 = guard([-20,15])
+Tone.Master.volume.value = volume_guard1(Math.round(dials[0]["cell"]() * 30) -20);
+// mem["stab_channel"].volume.value = volume_guard2(-2);
+// mem["stab_filter"].frequency.value = Math.round(dials[1]["cell"]() * 10000);
+
+
+scene1 = [
+    cellx("p 1000 1000 1000 1000"),
+    cellx("p 00x0 00x0 00x0 00x0"),
+    cellx("p 0x00 0000 0000 x000"),
+    cellx("p 0000 x000 0000 x000"),
+    cellx("p xx0x c0x0 x0x0 x0xx"),
+    cellx("p x000 x0x0 0000 x0x0"),
+]
+
+patterns = scene1
+
+
+function NoiseSynth (name) {
+    name = name || "wf";
+    mem[name + "_stereo"] = new Tone.StereoWidener({width: 1});
+    mem[name] =  new Tone.Noise("pink").start();
+    mem[name + "_filter"] = new Tone.Filter(400, 'lowpass', -96);
+    mem[name + "_channel"] = new Tone.Channel({channelCount: 2, volume: -10, pan: -0.8}).chain(mem[name + "_filter"], mem[name + "_stereo"], mem.master);
+    mem[name].connect(mem[name + "_channel"])
+}
+
+function Stab(name) {
+    name = name || "stab";
+
+    mem[name + "_filter"] = new Tone.Filter(5250, 'lowpass', -96);
+    mem[name + "_hfilter"] = new Tone.Filter(80, 'highpass', -96);
+    mem[name + "_reverb"] = new Tone.Reverb(0.1);
+    mem[name + "_delay"] = new Tone.FeedbackDelay("4n", 0.4);
+    // mem[name + "_pdelay"] = new Tone.PingPongDelay("2n", 0.1);
+    mem[name + "_stereo"] = new Tone.StereoWidener({width: 0.25});
+    mem[name + "_channel"] = new Tone.Channel({channelCount: 2, volume: -2}).chain(mem[name + "_filter"] ,   mem[name + "_delay"], mem[name + "_reverb"],  mem[name + "_hfilter"] ,mem[name + "_stereo"], mem.master)
+
+
+    function voice(no, type) {
+        mem[name + "_synth" + no] = new Tone.MonoSynth({
+            oscillator: {
+                type: type
+            }
+        })
+        mem[name + "_synth" + no].connect(mem[name + "_channel"]);
+    }
+
+    voice(1, "sawtooth")
+    voice(2, "sawtooth")
+    voice(3, "sawtooth")
+    voice(4, "pwm")
+    voice(5, "pwm")
+    voice(6, "pwm")
+}
+
+function s(vel, notes, duration) {
+    vel = vel || 1.0;
+    duration = duration || "2n";
+    notes = notes ||  ["E2", "B2", "G2"];
+    mem["stab_synth1"].triggerAttackRelease(notes[0], duration, undefined, vel);
+    mem["stab_synth2"].triggerAttackRelease(notes[1], duration, undefined, vel);
+    mem["stab_synth3"].triggerAttackRelease(notes[2], duration, undefined, vel);
+
+    mem["stab_synth4"].triggerAttackRelease(notes[0], duration, undefined, vel);
+    mem["stab_synth5"].triggerAttackRelease(notes[1], duration, undefined, vel);
+    mem["stab_synth6"].triggerAttackRelease(notes[2], duration, undefined, vel);
+}
+
+function once() {
+    var pr;
+    const s = ( p ) => {
+        pr = p;
+        var img;
+        let x = 100;
+        let y = 100;
+
+        p.setup = function() {
+            var x = p.createCanvas(700, 410);
+            x.canvas.style.position = "absolute";
+            p.frameRate(30);
+            img = p.loadImage('/test.png');
+        };
+
+        p.draw = function() {
+            var e = getRandomInt(2);
+            p.clear();
+            if (e == 0) {
+                //   p.fill(123);
+                //  p.rect(x,y,50,50);
+            } else {
+                //	p.image(img, 0, 0);
+            }
+        };
+    };
+
+    let myp5 = new p5(s,  document.getElementById('canvas-container'));
+    
+
+    var visualizer = initWinamp("_Aderrasi - Wanderer in Curved Space - mash0000 - faclempt kibitzing meshuggana schmaltz (Geiss color mix)");
+
+    render_loop = function () {
+        visualizer.render();
+    }
+    
+    Tone.Master.volume.value = -30;
+    mem.master = new Tone.Channel({channelCount: 2, volume: -10}).chain(Tone.Destination);
+
+    // NoiseSynth();
+    Stab();
+    Sample("k", 0, 3000, 3);
+    Sample("h", 1, 7000, -15);
+    Sample("sn",2, 6000, -15);
+    Sample("c", 3, 620, 2);
+    Sample("l", 4, 420, -15);
+
+    handlers["1"] = function (val) {
+        if (val > 0.5) {
+            mem["start_snare"] = true;
+        } else {
+            mem["start_snare"] = false;
+        }
+        mem["stab_filter"].Q.value = Math.round(val * 5);
+    }
+
+    dials[1]["cell"].onChange(function (e) {
+        var val = parseFloat(e["data"].value);
+        handlers["1"](val);
+    })
+
+}
+
+function tweak () {
+    mem.k1 = knob({ramp : [0.525, 0.8, 0.4, 1, 0.25, 0.75, 1, 0.25, 0.1], "number": dials[2]["cell"] });
+    always = function () {
+        mem["stab_filter"].frequency.value = mem.k1.move() * 10000;
+    }
+}
+
+if (bars <= 3 ) {
+    transition = once;
+} else {
+    transition = tweak;
+}
+
+if (isHit) {
+    if (track_no == 1) {
+        if (bars > 0 ) {
+            p(0);
+        }
+    }
+    if (track_no == 2) {
+        if (bars > 8 ) {
+            p(1);
+        }	
+    }
+    if (track_no == 3) {
+        if (bars > 4 ) {
+            // s();
+        }
+        if (bars == 6) {
+            transition();
+        }
+    }
+    if (track_no == 4) {
+        if (mem["start_snare"]) {
+            p(2);
+        }
+    }
+    if (track_no == 5) {
+        if (bars > 12) {
+            p(3)
+        }
+    }
+    if (track_no == 6) {
+       // p(4, "C3")
+    }
+}
+
+if (count == (mem["k_last"] + 3)) {
+    pn("h");
+}
+

commit 85e1f79228fa1ecdc5f57fcee70f31c8bee0a89f
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Tue Nov 2 22:09:26 2021 +0000

    /Users/dev/proj/production/bitrhythm/song/4913 modified

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8943fb4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+tags
+diff.txt
diff --git a/first.js b/first.js
index 3870156..cb231ff 100644
--- a/first.js
+++ b/first.js
@@ -10,113 +10,154 @@ main = [
     cellx("p 0000 x000 0000 x000 "),
     cellx("p x0x0 x0x0 x0x0 x0x0 "),
     cellx("p x000 0000 0000 0000 "),
-    cellx("p x[^120]000 0000 00x[^124]0 00x[^116]0 "), // melody
-
+    cellx("p 0000 0000 0000 0000"),
+	cellx("p 0000 0000 0000 0000"),
 ]
 
 bass = [
-    cellx("p x[2;^C2;+0.01]000 0000 x[0.1]0x[1]0 00x[1]0 "),
+   	cellx("p x[2;^C2;+0.01]000 0000 x[0.1]0x[1]0 00x[1]0 "),
     cellx("p 0000 x000 0000 x000 "),
     cellx("p x0x0 x0x0 x0x0 x0x0 "),
     cellx("p x000 0000 0000 0000 "),
     cellx("p x[^B2]x.00 x[^B2]x.x[^B2]x. x[^B2]x.x[^B2]x.x[^B2]x.0 "),
-    cellx("p x[^120]000 0000 00x[^124]0 00x[^116]0 "), // melody
-	cellx("p 0000 0000 0000 0000")
+    cellx("p 00x[^D3]0 000x[^A2] 00x[^A2]x[^A2] 0x[^A2]0x[^A2] "), 
 ]
 
-fill =  cellx("p x000 x000 x0xx 00x0")
-empty = cellx("p 0000 0000 0000 0000")
+end = [
+ 	cellx("p x[2;^C2;+0.01]000 0000 x[0.1]0x[1]0 00x[1]0 "),
+    cellx("p 0000 x000 0000 x000 "),
+    cellx("p x0x0 x0x0 x0x0 x0x0 "),
+]
 
+solo = [
+	cellx("p 0000 0000 0000 0000"),
+    cellx("p 0000 0000 0000 0000"),
+    cellx("p 0000 0000 0000 0000"),
+]
 
+fin = solo;
 
+endgame = [
+    cellx("p x[2;^C2;+0.01]000 0000 x[0.1]0x[1]0 00x[1]0 "),
+    cellx("p 0000 x000 0000 x000 "),
+    cellx("p x0x0 x0x0 x0x0 x0x0 "),
+    cellx("p x000 0000 0000 0000 "),
+    cellx("p x[^B2]x.00 x[^B2]x.x[^B2]x. x[^B2]x.x[^B2]x.x[^B2]x.0 "),
+]
 
-function Sample(name, no, filter, volume) {
-    name = name
-    filter = filter || 20000
-    volume = volume || 0
-    //mem[name + "_filter"] = new Tone.Filter(filter, 'lowpass', -96);
-    mem[name + "_channel"] = new Tone.Channel({channelCount: 2, volume: volume}).chain(mem.master)
-    samples[no].connect(mem[name + "_channel"]);
-}
 
-function p(s, vol,  note,  len, delay) {
-    note = note || "C3"
-    len = len || "16n"
-    vol = vol || 1
-    delay = delay || "+0";
-    samples[s].triggerAttackRelease(note, len, delay, vol);
-}
 
-function once () {
 
-    var pr;
-    const s = ( p ) => {
-        pr = p;
-        var img;
+empty = cellx("p 0000 0000 0000 0000")
+
+
+function once () {
+ 
+    
+        const setup = ( instance ) => {
+        var intro = []
+        var main = []
+        var bass = main
+        var solo = bass
+        var end = [] 
+        var count = 0;
+        var old_scene = "";
+        
+        
 
-        let x = 100; 
+        let x = 100;
         let y = 100;
 
-        p.setup = function() {
-            var x = p.createCanvas(700, 410);
+        instance.setup = function() {
+            var x = instance.createCanvas(700, 410);
             x.canvas.style.position = "absolute";
-            p.frameRate(2);
-            img = p.loadImage('/test3.png');
-            console.log(img);
+            instance.frameRate(2);
+            intro.push(instance.loadImage('/closed/intro/1.png'));
+            intro.push(instance.loadImage('/closed/intro/2.png'));
+            main.push(instance.loadImage('/closed/main/1.png'));
+            main.push(instance.loadImage('/closed/main/2.png'));
+            main.push(instance.loadImage('/closed/main/3.png'));
+            end.push(instance.loadImage('/closed/end/1.png'));
+            end.push(instance.loadImage('/closed/end/2.png'));
         };
 
-        p.draw = function() {
-            var e = getRandomInt(2);
-            p.clear();
-            if (e == 0) {
-                //   p.fill(123);
-                //  p.rect(x,y,50,50);
-            } else {
-                p.image(img, 0, 0);
+        instance.draw = function() {
+        	if (old_scene != current_scene) {
+            	old_scene = current_scene;
+                count = 0;
             }
+    //        instance.clear();
+            var c = eval(`${current_scene}`)
+       //     instance.image(c[count], 0, 0);
+            count += 1
+            count = count % c.length;
+
         };
     };
 
-    let myp5 = new p5(s,  document.getElementById('canvas-container'));
+    let myp5 = new p5(setup,  document.getElementById('canvas-container'));
 
-    render_loop = function () {
-//    	pr.rect(x,y,50,50);
-    }
 
     Tone.Master.volume.value = -30
-    mem.master = new Tone.Channel({channelCount: 2, volume: -10}).chain(Tone.Destination);
+
+	dials[2]["cell"](1)
+    mem["master_filter"] = new Tone.Filter(10000, 'lowpass', -96);
+    mem["master_stereo"] = new Tone.StereoWidener({width: 0.50});
+    
+    dials[2]["cell"].onChange(function (e) {
+        var val = parseFloat(e["data"].value);
+        var cutoff_guard = guard([10, 20000]);
+        mem["master_filter"].frequency.value = cutoff_guard(val * 10000);
+    })
+    
+    dials[3]["cell"](0)
+    
+    dials[3]["cell"].onChange(function (e) {
+        var val = parseFloat(e["data"].value);
+        var volume_guard1 = guard([0,1])
+        audio.master.in.gain.value = volume_guard1(val / 10);
+    })
+    
+
+
+	mem.master = new Tone.Channel({channelCount: 2, volume: -10}).chain(  mem["master_filter"],  mem["master_stereo"], Tone.Destination);
     Sample("k", 0, null, -5);
     Sample("sn1",1, null, 0);
-    Sample("h",2, null, -15);
+    Sample("h",2, 5000, -35);
     Sample("m",3, null, -15);
     Sample("f",4, null, -15);
-    Sample("s",5, 900, -15);
-
-
-    mem["c"] = cellx(1);
-    mem["c"].onChange(function (e) {
-        var val = parseInt(e["data"].value);
-        
-        p(0,null, null, "24n");
-        setTimeout(function () {
-        	p(4, null, null, "4n")
-        }, delta * 2);
-        
-    })
-    mem["c"].onError(function (e) {
-        console.log(e);
-
-    })
+    
+    name = "s"
+    filter = 2000
+    volume = -15 
+    mem[name + "_filter"] = new Tone.Filter(filter, 'lowpass', -96);
+    mem[name + "_delay"] = new Tone.FeedbackDelay("4n", 0.4);
+    mem[name + "_channel"] = new Tone.Channel({channelCount: 2, volume: volume, pan: -0.25}).chain(mem[name + "_filter"],   mem[name + "_delay"], mem.master)
+    samples[5].connect(mem[name + "_channel"]);
+    hit_map[name] = 5;
+  
+    
+    
 
+    
+    
+    
+    
+    Sample("manager",6, null, -15);
+    Sample("order",7, null, -15);
+    Sample("cr",8, null, -15);
+    Sample("piano",9, 400, -15);
+   	Sample("sitar",10, 5000, -15);
+    
     const audio = Audio();
     const three = ThreeOhUnit(audio, "sawtooth", {
-            "cutoff": 86,
+            "cutoff": 78,
             "resonance": 15,
             "envMod": 4000,
             "decay": 0.5
         }
 	)
-    audio.master.in.gain.value = 0.1;
+    audio.master.in.gain.value = 0;
     mem["three"] = three
     
     // cutoff [30, 700], 400
@@ -124,7 +165,7 @@ function once () {
     // envMod: [0, 8000], 4000
     // decay: [0.1, 0.9], 0.5
     
-    dials[1]["cell"](0.0860)
+    dials[1]["cell"](0.07825)
 
     dials[1]["cell"].onChange(function (e) {
         var val = parseFloat(e["data"].value);
@@ -133,25 +174,128 @@ function once () {
     })
 }
 
+function tweak() {
+ 
+    var	snare_count = cellx(16);
+    
+    
+    
+    snare_count.onChange(function (e) {
+        var val = parseInt(e["data"].value);
+        if (val == 22) {
+      	 	current_scene = "fin";
+			p1(8, null, null, 12.25);
+	    } else {
+           p(1, null, null, "4n")
+        }
+    })
+    
+    
+    
+    Mousetrap.bind(['f2'], function(e) {
+    
+    	snare_count(snare_count() + 1)
+        if (snare_count() <= 20) {
+          setTimeout(function () {
+              p(0, null, null, "24n", null );
+                setTimeout(function () {
+                    p(8, null, null, "2n" );
+                    p(10, 0.5, "A2", 1);
+                }, delta * 2)
+  
+          }, delta * 1.5)
+        }
+        
+	    return false;
+    })
+
+
+    
+}
+
 
 
 transition = once;
+
 if (bars <= 2) {
 	current_scene = "intro";
 } else {
-	current_scene = "main";
+//	     mem["three"].step("off");
+if (bars == 3) {
+	eval_guard ? cue("Start intro") : "";
+	current_scene = "intro";
+
+}
+
+if (bars == 5) {
+	eval_guard ? cue("Start drums") : "";
+    	current_scene = "main";
+}
+
+
+
+
+if (bars == 12) {
+	eval_guard ? cue("Add bass"): "";
+    current_scene = "bass";
+
+}
+
+if (bars == 32) {
+	eval_guard ?cue("Reverse "): "";
+    current_scene = "bass";
+
+}
+
+if (bars == 42) {
+	eval_guard ? cue("End "): ""
+    current_scene = "end";
+
+}
+
+if (bars == 46) {
+	eval_guard ? cue("Solo "): ""
+    current_scene = "solo";
+}
+
+
+    transition = tweak;
 }
 
-current_scene = "bass";
 
 patterns = eval(`${current_scene}`);
 always();
 
+if (track_no == 1) {
+if (count == 0) {
+	cue("Sample")
+ //   p1(8, null, null, 12.25);
+}
+}
+
+     
+
 if (isHit) {
     if (current_scene == "intro") {
         if (track_no == 1) {
-            p(3, null, null, "1n");
+          p(3, null, null, "1n");
+        }
+    } else if (current_scene == "fin") {
+   
+    } else if (current_scene == "solo") {
+
+ 
+    } else if (current_scene == "end") {
+        if (track_no == 1) {
+            p(0, meta[tick]["volume"], meta[tick]["pitch"], "24n", meta[tick]["delay"] );
         }
+        if (track_no == 2) {
+            p(1);
+        }
+        if (track_no == 3) {
+            p(2)
+        }
+        
     } else if (current_scene == "main") {
         if (track_no == 1) {
             p(0, meta[tick]["volume"], meta[tick]["pitch"], "24n", meta[tick]["delay"] );
@@ -165,18 +309,26 @@ if (isHit) {
         if (track_no == 4) {
             p(3, null, null, "1n");
         }
-         if (track_no == 5) {
-            p(5, 0.3, meta[tick]["pitch"], "1n");
+        if (track_no == 5) {
+            if (meta[tick]["pitch"]) {
+                mem["three"].step({"glide": true, "accent": false, "note": meta[tick]["pitch"]});
+            } else {
+                mem["three"].step("off");
+            }
+        }
+        if (track_no == 6) {
+           p(5, null, meta[tick]["pitch"], "1n");
         }
-    } else if (current_scene == "bass") {
+    
+     } else if (current_scene == "bass") {
         if (track_no == 1) {
-            p(0, meta[tick]["volume"], meta[tick]["pitch"], "24n", meta[tick]["delay"] );
+          p(0, meta[tick]["volume"], meta[tick]["pitch"], "24n", meta[tick]["delay"] );
         }
         if (track_no == 2) {
             p(1);
         }
         if (track_no == 3) {
-            p(2)
+           p(2)
         }
         if (track_no == 4) {
             p(3, null, null, "1n");
@@ -189,13 +341,13 @@ if (isHit) {
             }
         }
         if (track_no == 6) {
-           p(5, null, meta[tick]["pitch"], "1n");
-        }
-        if (track_no == 7) {
-            mem["c"](mem["c"]() + 1);
+ //          p(5, 0.15, meta[tick]["pitch"], 1);
+		//	p(9, 1, meta[tick]["pitch"], 1);
+
         }
     } 
 
+
 }
 
 
diff --git a/tags b/tags
deleted file mode 100644
index ee17c89..0000000
--- a/tags
+++ /dev/null
@@ -1,10 +0,0 @@
-!_TAG_FILE_FORMAT	2	/extended format; --format=1 will not append ;" to lines/
-!_TAG_FILE_SORTED	1	/0=unsorted, 1=sorted, 2=foldcase/
-!_TAG_PROGRAM_AUTHOR	Darren Hiebert	/dhiebert@users.sourceforge.net/
-!_TAG_PROGRAM_NAME	Exuberant Ctags	//
-!_TAG_PROGRAM_URL	http://ctags.sourceforge.net	/official site/
-!_TAG_PROGRAM_VERSION	5.8	//
-p	first.js	/^function p(s, vol,  note,  len, delay) {$/;"	f
-p.draw	first.js	/^        p.draw = function() {$/;"	f
-p.setup	first.js	/^        p.setup = function() {$/;"	f
-render_loop	first.js	/^    render_loop = function () {$/;"	f
diff --git a/tags.lock b/tags.lock
deleted file mode 100644
index 07cac4e..0000000
--- a/tags.lock
+++ /dev/null
@@ -1 +0,0 @@
-45658
diff --git a/tags.temp b/tags.temp
deleted file mode 100644
index ee17c89..0000000
--- a/tags.temp
+++ /dev/null
@@ -1,10 +0,0 @@
-!_TAG_FILE_FORMAT	2	/extended format; --format=1 will not append ;" to lines/
-!_TAG_FILE_SORTED	1	/0=unsorted, 1=sorted, 2=foldcase/
-!_TAG_PROGRAM_AUTHOR	Darren Hiebert	/dhiebert@users.sourceforge.net/
-!_TAG_PROGRAM_NAME	Exuberant Ctags	//
-!_TAG_PROGRAM_URL	http://ctags.sourceforge.net	/official site/
-!_TAG_PROGRAM_VERSION	5.8	//
-p	first.js	/^function p(s, vol,  note,  len, delay) {$/;"	f
-p.draw	first.js	/^        p.draw = function() {$/;"	f
-p.setup	first.js	/^        p.setup = function() {$/;"	f
-render_loop	first.js	/^    render_loop = function () {$/;"	f

commit f4a04eacf7ed677f6b60fb0ea944229a016f4b61
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Tue Nov 2 22:09:26 2021 +0000

    /Users/dev/proj/production/bitrhythm/song modified

diff --git a/first.js b/first.js
index 5b2422c..3870156 100644
--- a/first.js
+++ b/first.js
@@ -2,7 +2,7 @@ volume_guard1 = guard([-20,15])
 Tone.Master.volume.value = volume_guard1(Math.round(dials[0]["cell"]() * 30) -20);
 
 intro = [
-    cellx("p x000 0000 0000 0000 "),
+   cellx("p x000 0000 0000 0000 "),
 ]
 
 main = [
@@ -10,7 +10,7 @@ main = [
     cellx("p 0000 x000 0000 x000 "),
     cellx("p x0x0 x0x0 x0x0 x0x0 "),
     cellx("p x000 0000 0000 0000 "),
-    cellx("p 0000 0000 x0x0 00x0 "), // melody
+    cellx("p x[^120]000 0000 00x[^124]0 00x[^116]0 "), // melody
 
 ]
 
@@ -19,9 +19,9 @@ bass = [
     cellx("p 0000 x000 0000 x000 "),
     cellx("p x0x0 x0x0 x0x0 x0x0 "),
     cellx("p x000 0000 0000 0000 "),
-    cellx("p x[^C2]000 000x. 00x[^B1]x. x[^B1]x.x[^B1]x. "),
-    cellx("p 0000 0000 x0x0 00x0 "), // melody
-    cellx("p 0000 0000 0000 0000")
+    cellx("p x[^B2]x.00 x[^B2]x.x[^B2]x. x[^B2]x.x[^B2]x.x[^B2]x.0 "),
+    cellx("p x[^120]000 0000 00x[^124]0 00x[^116]0 "), // melody
+	cellx("p 0000 0000 0000 0000")
 ]
 
 fill =  cellx("p x000 x000 x0xx 00x0")
@@ -62,6 +62,7 @@ function once () {
             x.canvas.style.position = "absolute";
             p.frameRate(2);
             img = p.loadImage('/test3.png');
+            console.log(img);
         };
 
         p.draw = function() {
@@ -79,7 +80,7 @@ function once () {
     let myp5 = new p5(s,  document.getElementById('canvas-container'));
 
     render_loop = function () {
-        //    	pr.rect(x,y,50,50);
+//    	pr.rect(x,y,50,50);
     }
 
     Tone.Master.volume.value = -30
@@ -89,40 +90,41 @@ function once () {
     Sample("h",2, null, -15);
     Sample("m",3, null, -15);
     Sample("f",4, null, -15);
-    Sample("s",5, null, -15);
+    Sample("s",5, 900, -15);
 
 
     mem["c"] = cellx(1);
     mem["c"].onChange(function (e) {
         var val = parseInt(e["data"].value);
-
+        
         p(0,null, null, "24n");
         setTimeout(function () {
-            p(4, null, null, "4n")
+        	p(4, null, null, "4n")
         }, delta * 2);
-
+        
     })
     mem["c"].onError(function (e) {
         console.log(e);
+
     })
 
     const audio = Audio();
     const three = ThreeOhUnit(audio, "sawtooth", {
-        "cutoff": 100,
-        "resonance": 15,
-        "envMod": 4000,
-        "decay": 0.5
-    }
-    )
-    audio.master.in.gain.value = 0.2;
+            "cutoff": 86,
+            "resonance": 15,
+            "envMod": 4000,
+            "decay": 0.5
+        }
+	)
+    audio.master.in.gain.value = 0.1;
     mem["three"] = three
-
+    
     // cutoff [30, 700], 400
     // resonance: [1, 30], 15
     // envMod: [0, 8000], 4000
     // decay: [0.1, 0.9], 0.5
-
-    dials[1]["cell"](0.0100)
+    
+    dials[1]["cell"](0.0860)
 
     dials[1]["cell"].onChange(function (e) {
         var val = parseFloat(e["data"].value);
@@ -134,7 +136,14 @@ function once () {
 
 
 transition = once;
+if (bars <= 2) {
+	current_scene = "intro";
+} else {
+	current_scene = "main";
+}
+
 current_scene = "bass";
+
 patterns = eval(`${current_scene}`);
 always();
 
@@ -156,8 +165,8 @@ if (isHit) {
         if (track_no == 4) {
             p(3, null, null, "1n");
         }
-        if (track_no == 5) {
-            p(5, null, null, "1n");
+         if (track_no == 5) {
+            p(5, 0.3, meta[tick]["pitch"], "1n");
         }
     } else if (current_scene == "bass") {
         if (track_no == 1) {
@@ -180,12 +189,13 @@ if (isHit) {
             }
         }
         if (track_no == 6) {
-            p(5, null, null, "1n");
+           p(5, null, meta[tick]["pitch"], "1n");
         }
         if (track_no == 7) {
             mem["c"](mem["c"]() + 1);
         }
     } 
+
 }
 
 
diff --git a/tags.lock b/tags.lock
new file mode 100644
index 0000000..07cac4e
--- /dev/null
+++ b/tags.lock
@@ -0,0 +1 @@
+45658
diff --git a/tags.temp b/tags.temp
new file mode 100644
index 0000000..ee17c89
--- /dev/null
+++ b/tags.temp
@@ -0,0 +1,10 @@
+!_TAG_FILE_FORMAT	2	/extended format; --format=1 will not append ;" to lines/
+!_TAG_FILE_SORTED	1	/0=unsorted, 1=sorted, 2=foldcase/
+!_TAG_PROGRAM_AUTHOR	Darren Hiebert	/dhiebert@users.sourceforge.net/
+!_TAG_PROGRAM_NAME	Exuberant Ctags	//
+!_TAG_PROGRAM_URL	http://ctags.sourceforge.net	/official site/
+!_TAG_PROGRAM_VERSION	5.8	//
+p	first.js	/^function p(s, vol,  note,  len, delay) {$/;"	f
+p.draw	first.js	/^        p.draw = function() {$/;"	f
+p.setup	first.js	/^        p.setup = function() {$/;"	f
+render_loop	first.js	/^    render_loop = function () {$/;"	f

commit deab9f4632ff94263e99b72cc7c817108cfb13d7
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Mon Nov 1 20:08:11 2021 +0000

    /Users/dev/proj/production/bitrhythm/song modified

diff --git a/tags b/tags
new file mode 100644
index 0000000..ee17c89
--- /dev/null
+++ b/tags
@@ -0,0 +1,10 @@
+!_TAG_FILE_FORMAT	2	/extended format; --format=1 will not append ;" to lines/
+!_TAG_FILE_SORTED	1	/0=unsorted, 1=sorted, 2=foldcase/
+!_TAG_PROGRAM_AUTHOR	Darren Hiebert	/dhiebert@users.sourceforge.net/
+!_TAG_PROGRAM_NAME	Exuberant Ctags	//
+!_TAG_PROGRAM_URL	http://ctags.sourceforge.net	/official site/
+!_TAG_PROGRAM_VERSION	5.8	//
+p	first.js	/^function p(s, vol,  note,  len, delay) {$/;"	f
+p.draw	first.js	/^        p.draw = function() {$/;"	f
+p.setup	first.js	/^        p.setup = function() {$/;"	f
+render_loop	first.js	/^    render_loop = function () {$/;"	f
diff --git a/tags.lock b/tags.lock
deleted file mode 100644
index e60e4c8..0000000
--- a/tags.lock
+++ /dev/null
@@ -1 +0,0 @@
-31247

commit 3f2b149bde471bf71edf8ca73350ca57d1f026aa
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Mon Nov 1 20:08:11 2021 +0000

    /Users/dev/proj/production/bitrhythm/song/tags.lock created

diff --git a/tags.lock b/tags.lock
new file mode 100644
index 0000000..e60e4c8
--- /dev/null
+++ b/tags.lock
@@ -0,0 +1 @@
+31247

commit ecffe57b68d1b37f6689332bd7f4ea7739c3f9ad
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Mon Nov 1 07:39:32 2021 +0000

    /Users/dev/proj/production/bitrhythm/song modified

diff --git a/first.js b/first.js
index 13b23b8..5b2422c 100644
--- a/first.js
+++ b/first.js
@@ -2,7 +2,7 @@ volume_guard1 = guard([-20,15])
 Tone.Master.volume.value = volume_guard1(Math.round(dials[0]["cell"]() * 30) -20);
 
 intro = [
-   cellx("p x000 0000 0000 0000 "),
+    cellx("p x000 0000 0000 0000 "),
 ]
 
 main = [
@@ -21,7 +21,7 @@ bass = [
     cellx("p x000 0000 0000 0000 "),
     cellx("p x[^C2]000 000x. 00x[^B1]x. x[^B1]x.x[^B1]x. "),
     cellx("p 0000 0000 x0x0 00x0 "), // melody
-	cellx("p 0000 0000 0000 0000")
+    cellx("p 0000 0000 0000 0000")
 ]
 
 fill =  cellx("p x000 x000 x0xx 00x0")
@@ -62,7 +62,6 @@ function once () {
             x.canvas.style.position = "absolute";
             p.frameRate(2);
             img = p.loadImage('/test3.png');
-            console.log(img);
         };
 
         p.draw = function() {
@@ -80,7 +79,7 @@ function once () {
     let myp5 = new p5(s,  document.getElementById('canvas-container'));
 
     render_loop = function () {
-//    	pr.rect(x,y,50,50);
+        //    	pr.rect(x,y,50,50);
     }
 
     Tone.Master.volume.value = -30
@@ -96,34 +95,33 @@ function once () {
     mem["c"] = cellx(1);
     mem["c"].onChange(function (e) {
         var val = parseInt(e["data"].value);
-        
+
         p(0,null, null, "24n");
         setTimeout(function () {
-        	p(4, null, null, "4n")
+            p(4, null, null, "4n")
         }, delta * 2);
-        
+
     })
     mem["c"].onError(function (e) {
         console.log(e);
-
     })
 
     const audio = Audio();
     const three = ThreeOhUnit(audio, "sawtooth", {
-            "cutoff": 100,
-            "resonance": 15,
-            "envMod": 4000,
-            "decay": 0.5
-        }
-	)
+        "cutoff": 100,
+        "resonance": 15,
+        "envMod": 4000,
+        "decay": 0.5
+    }
+    )
     audio.master.in.gain.value = 0.2;
     mem["three"] = three
-    
+
     // cutoff [30, 700], 400
     // resonance: [1, 30], 15
     // envMod: [0, 8000], 4000
     // decay: [0.1, 0.9], 0.5
-    
+
     dials[1]["cell"](0.0100)
 
     dials[1]["cell"].onChange(function (e) {
@@ -158,7 +156,7 @@ if (isHit) {
         if (track_no == 4) {
             p(3, null, null, "1n");
         }
-         if (track_no == 5) {
+        if (track_no == 5) {
             p(5, null, null, "1n");
         }
     } else if (current_scene == "bass") {
@@ -182,13 +180,12 @@ if (isHit) {
             }
         }
         if (track_no == 6) {
-           p(5, null, null, "1n");
+            p(5, null, null, "1n");
         }
         if (track_no == 7) {
             mem["c"](mem["c"]() + 1);
         }
     } 
-
 }
 
 

commit dc1695bed8f2b6bfc586b97b0103ab3accbf4ab5
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Mon Nov 1 07:39:01 2021 +0000

    /Users/dev/proj/production/bitrhythm/song modified

diff --git a/first.js b/first.js
index 3d8e9fb..13b23b8 100644
--- a/first.js
+++ b/first.js
@@ -10,6 +10,8 @@ main = [
     cellx("p 0000 x000 0000 x000 "),
     cellx("p x0x0 x0x0 x0x0 x0x0 "),
     cellx("p x000 0000 0000 0000 "),
+    cellx("p 0000 0000 x0x0 00x0 "), // melody
+
 ]
 
 bass = [
@@ -17,11 +19,17 @@ bass = [
     cellx("p 0000 x000 0000 x000 "),
     cellx("p x0x0 x0x0 x0x0 x0x0 "),
     cellx("p x000 0000 0000 0000 "),
-    cellx("p x[^C3]000 x.000 0000 0000 "),
+    cellx("p x[^C2]000 000x. 00x[^B1]x. x[^B1]x.x[^B1]x. "),
     cellx("p 0000 0000 x0x0 00x0 "), // melody
-    cellx("p 0000 0000 0000 0000 "), // fill
+	cellx("p 0000 0000 0000 0000")
 ]
 
+fill =  cellx("p x000 x000 x0xx 00x0")
+empty = cellx("p 0000 0000 0000 0000")
+
+
+
+
 function Sample(name, no, filter, volume) {
     name = name
     filter = filter || 20000
@@ -52,8 +60,8 @@ function once () {
         p.setup = function() {
             var x = p.createCanvas(700, 410);
             x.canvas.style.position = "absolute";
-            p.frameRate(30);
-            img = p.loadImage('/test.png');
+            p.frameRate(2);
+            img = p.loadImage('/test3.png');
             console.log(img);
         };
 
@@ -88,9 +96,12 @@ function once () {
     mem["c"] = cellx(1);
     mem["c"].onChange(function (e) {
         var val = parseInt(e["data"].value);
-        console.log(val);
-        p(4, null, null, "8n");
-
+        
+        p(0,null, null, "24n");
+        setTimeout(function () {
+        	p(4, null, null, "4n")
+        }, delta * 2);
+        
     })
     mem["c"].onError(function (e) {
         console.log(e);
@@ -98,13 +109,34 @@ function once () {
     })
 
     const audio = Audio();
-    const three = ThreeOhUnit(audio, "sawtooth")
-    // audio.master.in.gain.value = 0.5;
+    const three = ThreeOhUnit(audio, "sawtooth", {
+            "cutoff": 100,
+            "resonance": 15,
+            "envMod": 4000,
+            "decay": 0.5
+        }
+	)
+    audio.master.in.gain.value = 0.2;
     mem["three"] = three
+    
+    // cutoff [30, 700], 400
+    // resonance: [1, 30], 15
+    // envMod: [0, 8000], 4000
+    // decay: [0.1, 0.9], 0.5
+    
+    dials[1]["cell"](0.0100)
+
+    dials[1]["cell"].onChange(function (e) {
+        var val = parseFloat(e["data"].value);
+        cutoff_guard = guard([30, 700]);
+        three.params.cutoff.value = cutoff_guard(val * 1000);
+    })
 }
 
+
+
 transition = once;
-current_scene = "main";
+current_scene = "bass";
 patterns = eval(`${current_scene}`);
 always();
 
@@ -126,6 +158,9 @@ if (isHit) {
         if (track_no == 4) {
             p(3, null, null, "1n");
         }
+         if (track_no == 5) {
+            p(5, null, null, "1n");
+        }
     } else if (current_scene == "bass") {
         if (track_no == 1) {
             p(0, meta[tick]["volume"], meta[tick]["pitch"], "24n", meta[tick]["delay"] );
@@ -147,11 +182,13 @@ if (isHit) {
             }
         }
         if (track_no == 6) {
-            p(5, null, null, "1n");
+           p(5, null, null, "1n");
         }
         if (track_no == 7) {
             mem["c"](mem["c"]() + 1);
         }
-    }
+    } 
+
 }
 
+

commit 31722d2b46cd3039d1b45296e1b8bae28f834d4c
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Mon Nov 1 05:35:10 2021 +0000

    /Users/dev/proj/production/bitrhythm/song modified

diff --git a/first.js b/first.js
index ffaa242..3d8e9fb 100644
--- a/first.js
+++ b/first.js
@@ -1,21 +1,26 @@
 volume_guard1 = guard([-20,15])
-volume_guard2 = guard([-20,15])
 Tone.Master.volume.value = volume_guard1(Math.round(dials[0]["cell"]() * 30) -20);
 
-scene1 = [
+intro = [
+   cellx("p x000 0000 0000 0000 "),
+]
+
+main = [
     cellx("p x[2;^C2;+0.01]000 0000 x[0.1]0x[1]0 00x[1]0 "),
     cellx("p 0000 x000 0000 x000 "),
     cellx("p x0x0 x0x0 x0x0 x0x0 "),
     cellx("p x000 0000 0000 0000 "),
-    cellx("p x[^C3]000 x.000 0000 0000 "),
-    cellx("p 0000 0000 x0x0 00x0 "),
-    cellx("p 0000 0000 0000 0000 "),
-
 ]
 
-patterns = scene1
-
-always();
+bass = [
+    cellx("p x[2;^C2;+0.01]000 0000 x[0.1]0x[1]0 00x[1]0 "),
+    cellx("p 0000 x000 0000 x000 "),
+    cellx("p x0x0 x0x0 x0x0 x0x0 "),
+    cellx("p x000 0000 0000 0000 "),
+    cellx("p x[^C3]000 x.000 0000 0000 "),
+    cellx("p 0000 0000 x0x0 00x0 "), // melody
+    cellx("p 0000 0000 0000 0000 "), // fill
+]
 
 function Sample(name, no, filter, volume) {
     name = name
@@ -67,7 +72,7 @@ function once () {
     let myp5 = new p5(s,  document.getElementById('canvas-container'));
 
     render_loop = function () {
-    	pr.rect(x,y,50,50);
+//    	pr.rect(x,y,50,50);
     }
 
     Tone.Master.volume.value = -30
@@ -99,33 +104,54 @@ function once () {
 }
 
 transition = once;
+current_scene = "main";
+patterns = eval(`${current_scene}`);
+always();
 
 if (isHit) {
-    if (track_no == 1) {
-        p(0, meta[tick]["volume"], meta[tick]["pitch"], "24n", meta[tick]["delay"] );
-    }
-    if (track_no == 2) {
-        p(1);
-    }
-    if (track_no == 3) {
-        p(2)
-    }
-    if (track_no == 4) {
-        p(3, null, null, "1n");
-    }
-    if (track_no == 5) {
-        console.log(meta[tick])
-        if (meta[tick]["pitch"]) {
-            mem["three"].step({"glide": true, "accent": false, "note": meta[tick]["pitch"]});
-        } else {
-            mem["three"].step("off");
+    if (current_scene == "intro") {
+        if (track_no == 1) {
+            p(3, null, null, "1n");
+        }
+    } else if (current_scene == "main") {
+        if (track_no == 1) {
+            p(0, meta[tick]["volume"], meta[tick]["pitch"], "24n", meta[tick]["delay"] );
+        }
+        if (track_no == 2) {
+            p(1);
+        }
+        if (track_no == 3) {
+            p(2)
+        }
+        if (track_no == 4) {
+            p(3, null, null, "1n");
+        }
+    } else if (current_scene == "bass") {
+        if (track_no == 1) {
+            p(0, meta[tick]["volume"], meta[tick]["pitch"], "24n", meta[tick]["delay"] );
+        }
+        if (track_no == 2) {
+            p(1);
+        }
+        if (track_no == 3) {
+            p(2)
+        }
+        if (track_no == 4) {
+            p(3, null, null, "1n");
+        }
+        if (track_no == 5) {
+            if (meta[tick]["pitch"]) {
+                mem["three"].step({"glide": true, "accent": false, "note": meta[tick]["pitch"]});
+            } else {
+                mem["three"].step("off");
+            }
+        }
+        if (track_no == 6) {
+            p(5, null, null, "1n");
+        }
+        if (track_no == 7) {
+            mem["c"](mem["c"]() + 1);
         }
-    }
-    if (track_no == 6) {
-        p(5, null, null, "1n");
-    }
-    if (track_no == 7) {
-        mem["c"](mem["c"]() + 1);
     }
 }
 

commit 43816649e494483a39e0e6386f89a5b90e092270
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Mon Nov 1 04:47:55 2021 +0000

    /Users/dev/proj/production/bitrhythm/song modified

diff --git a/first.js b/first.js
index 83f48f1..ffaa242 100644
--- a/first.js
+++ b/first.js
@@ -35,6 +35,41 @@ function p(s, vol,  note,  len, delay) {
 }
 
 function once () {
+
+    var pr;
+    const s = ( p ) => {
+        pr = p;
+        var img;
+
+        let x = 100; 
+        let y = 100;
+
+        p.setup = function() {
+            var x = p.createCanvas(700, 410);
+            x.canvas.style.position = "absolute";
+            p.frameRate(30);
+            img = p.loadImage('/test.png');
+            console.log(img);
+        };
+
+        p.draw = function() {
+            var e = getRandomInt(2);
+            p.clear();
+            if (e == 0) {
+                //   p.fill(123);
+                //  p.rect(x,y,50,50);
+            } else {
+                p.image(img, 0, 0);
+            }
+        };
+    };
+
+    let myp5 = new p5(s,  document.getElementById('canvas-container'));
+
+    render_loop = function () {
+    	pr.rect(x,y,50,50);
+    }
+
     Tone.Master.volume.value = -30
     mem.master = new Tone.Channel({channelCount: 2, volume: -10}).chain(Tone.Destination);
     Sample("k", 0, null, -5);

commit c249b60dba4e507a880cfb68c29a324cad273b39
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Mon Nov 1 03:01:06 2021 +0000

    /Users/dev/proj/production/bitrhythm/song modified

diff --git a/first.js b/first.js
index 1864ae7..83f48f1 100644
--- a/first.js
+++ b/first.js
@@ -26,7 +26,6 @@ function Sample(name, no, filter, volume) {
     samples[no].connect(mem[name + "_channel"]);
 }
 
-
 function p(s, vol,  note,  len, delay) {
     note = note || "C3"
     len = len || "16n"
@@ -35,8 +34,6 @@ function p(s, vol,  note,  len, delay) {
     samples[s].triggerAttackRelease(note, len, delay, vol);
 }
 
-
-
 function once () {
     Tone.Master.volume.value = -30
     mem.master = new Tone.Channel({channelCount: 2, volume: -10}).chain(Tone.Destination);
@@ -64,19 +61,13 @@ function once () {
     const three = ThreeOhUnit(audio, "sawtooth")
     // audio.master.in.gain.value = 0.5;
     mem["three"] = three
-
-
 }
 
-
-
 transition = once;
 
-
 if (isHit) {
     if (track_no == 1) {
         p(0, meta[tick]["volume"], meta[tick]["pitch"], "24n", meta[tick]["delay"] );
-
     }
     if (track_no == 2) {
         p(1);
@@ -86,8 +77,7 @@ if (isHit) {
     }
     if (track_no == 4) {
         p(3, null, null, "1n");
-
-    }	
+    }
     if (track_no == 5) {
         console.log(meta[tick])
         if (meta[tick]["pitch"]) {
@@ -95,24 +85,12 @@ if (isHit) {
         } else {
             mem["three"].step("off");
         }
-
     }
-
     if (track_no == 6) {
         p(5, null, null, "1n");
-
     }
-
-
     if (track_no == 7) {
         mem["c"](mem["c"]() + 1);
     }
-
-
 }
 
-
-
-
-
-

commit 24347e5e277f32ebd37e6914b5508eb4f992d4d4
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Mon Nov 1 02:56:59 2021 +0000

    /Users/dev/proj/production/bitrhythm/song modified

diff --git a/first.js b/first.js
index 325b081..1864ae7 100644
--- a/first.js
+++ b/first.js
@@ -6,7 +6,7 @@ scene1 = [
     cellx("p x[2;^C2;+0.01]000 0000 x[0.1]0x[1]0 00x[1]0 "),
     cellx("p 0000 x000 0000 x000 "),
     cellx("p x0x0 x0x0 x0x0 x0x0 "),
-	cellx("p x000 0000 0000 0000 "),
+    cellx("p x000 0000 0000 0000 "),
     cellx("p x[^C3]000 x.000 0000 0000 "),
     cellx("p 0000 0000 x0x0 00x0 "),
     cellx("p 0000 0000 0000 0000 "),
@@ -43,28 +43,28 @@ function once () {
     Sample("k", 0, null, -5);
     Sample("sn1",1, null, 0);
     Sample("h",2, null, -15);
- 	Sample("m",3, null, -15);
+    Sample("m",3, null, -15);
     Sample("f",4, null, -15);
     Sample("s",5, null, -15);
 
-        
+
     mem["c"] = cellx(1);
     mem["c"].onChange(function (e) {
-    	var val = parseInt(e["data"].value);
+        var val = parseInt(e["data"].value);
         console.log(val);
-       	p(4, null, null, "8n");
- 
+        p(4, null, null, "8n");
+
     })
     mem["c"].onError(function (e) {
-    	console.log(e);
- 
+        console.log(e);
+
     })
 
-        const audio = Audio();
-        const three = ThreeOhUnit(audio, "sawtooth")
-        // audio.master.in.gain.value = 0.5;
-        mem["three"] = three
-   
+    const audio = Audio();
+    const three = ThreeOhUnit(audio, "sawtooth")
+    // audio.master.in.gain.value = 0.5;
+    mem["three"] = three
+
 
 }
 
@@ -75,39 +75,39 @@ transition = once;
 
 if (isHit) {
     if (track_no == 1) {
-	    p(0, meta[tick]["volume"], meta[tick]["pitch"], "24n", meta[tick]["delay"] );
- 
+        p(0, meta[tick]["volume"], meta[tick]["pitch"], "24n", meta[tick]["delay"] );
+
     }
     if (track_no == 2) {
-       	p(1);
+        p(1);
     }
     if (track_no == 3) {
-		p(2)
-	}
-     if (track_no == 4) {
-      	p(3, null, null, "1n");
+        p(2)
+    }
+    if (track_no == 4) {
+        p(3, null, null, "1n");
 
-	}	
+    }	
     if (track_no == 5) {
-    	console.log(meta[tick])
+        console.log(meta[tick])
         if (meta[tick]["pitch"]) {
-	        mem["three"].step({"glide": true, "accent": false, "note": meta[tick]["pitch"]});
+            mem["three"].step({"glide": true, "accent": false, "note": meta[tick]["pitch"]});
         } else {
-           mem["three"].step("off");
+            mem["three"].step("off");
         }
-    	
+
     }
-    
-     if (track_no == 6) {
-       	p(5, null, null, "1n");
+
+    if (track_no == 6) {
+        p(5, null, null, "1n");
 
     }
 
 
-	if (track_no == 7) {
-    	mem["c"](mem["c"]() + 1);
+    if (track_no == 7) {
+        mem["c"](mem["c"]() + 1);
     }
-  
+
 
 }
 

commit 418364bfcef224f37398c8bd3b7c61cb73c386f4
Author: Xyzzy Apps <xyzzyapps@gmail.com>
Date:   Mon Nov 1 02:55:34 2021 +0000

    /Users/dev/proj/production/bitrhythm/song modified

diff --git a/first.js b/first.js
new file mode 100644
index 0000000..325b081
--- /dev/null
+++ b/first.js
@@ -0,0 +1,118 @@
+volume_guard1 = guard([-20,15])
+volume_guard2 = guard([-20,15])
+Tone.Master.volume.value = volume_guard1(Math.round(dials[0]["cell"]() * 30) -20);
+
+scene1 = [
+    cellx("p x[2;^C2;+0.01]000 0000 x[0.1]0x[1]0 00x[1]0 "),
+    cellx("p 0000 x000 0000 x000 "),
+    cellx("p x0x0 x0x0 x0x0 x0x0 "),
+	cellx("p x000 0000 0000 0000 "),
+    cellx("p x[^C3]000 x.000 0000 0000 "),
+    cellx("p 0000 0000 x0x0 00x0 "),
+    cellx("p 0000 0000 0000 0000 "),
+
+]
+
+patterns = scene1
+
+always();
+
+function Sample(name, no, filter, volume) {
+    name = name
+    filter = filter || 20000
+    volume = volume || 0
+    //mem[name + "_filter"] = new Tone.Filter(filter, 'lowpass', -96);
+    mem[name + "_channel"] = new Tone.Channel({channelCount: 2, volume: volume}).chain(mem.master)
+    samples[no].connect(mem[name + "_channel"]);
+}
+
+
+function p(s, vol,  note,  len, delay) {
+    note = note || "C3"
+    len = len || "16n"
+    vol = vol || 1
+    delay = delay || "+0";
+    samples[s].triggerAttackRelease(note, len, delay, vol);
+}
+
+
+
+function once () {
+    Tone.Master.volume.value = -30
+    mem.master = new Tone.Channel({channelCount: 2, volume: -10}).chain(Tone.Destination);
+    Sample("k", 0, null, -5);
+    Sample("sn1",1, null, 0);
+    Sample("h",2, null, -15);
+ 	Sample("m",3, null, -15);
+    Sample("f",4, null, -15);
+    Sample("s",5, null, -15);
+
+        
+    mem["c"] = cellx(1);
+    mem["c"].onChange(function (e) {
+    	var val = parseInt(e["data"].value);
+        console.log(val);
+       	p(4, null, null, "8n");
+ 
+    })
+    mem["c"].onError(function (e) {
+    	console.log(e);
+ 
+    })
+
+        const audio = Audio();
+        const three = ThreeOhUnit(audio, "sawtooth")
+        // audio.master.in.gain.value = 0.5;
+        mem["three"] = three
+   
+
+}
+
+
+
+transition = once;
+
+
+if (isHit) {
+    if (track_no == 1) {
+	    p(0, meta[tick]["volume"], meta[tick]["pitch"], "24n", meta[tick]["delay"] );
+ 
+    }
+    if (track_no == 2) {
+       	p(1);
+    }
+    if (track_no == 3) {
+		p(2)
+	}
+     if (track_no == 4) {
+      	p(3, null, null, "1n");
+
+	}	
+    if (track_no == 5) {
+    	console.log(meta[tick])
+        if (meta[tick]["pitch"]) {
+	        mem["three"].step({"glide": true, "accent": false, "note": meta[tick]["pitch"]});
+        } else {
+           mem["three"].step("off");
+        }
+    	
+    }
+    
+     if (track_no == 6) {
+       	p(5, null, null, "1n");
+
+    }
+
+
+	if (track_no == 7) {
+    	mem["c"](mem["c"]() + 1);
+    }
+  
+
+}
+
+
+
+
+
+