⌈⌋ ⎇ branch:  Bitrhythm


Hex 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)

0000: 63 6f 6d 6d 69 74 20 38 65 36 37 30 65 36 64 61  commit 8e670e6da
0010: 32 33 65 66 66 37 34 38 37 64 31 37 65 38 66 33  23eff7487d17e8f3
0020: 38 35 37 65 65 30 36 32 31 33 31 66 38 34 37 0a  857ee062131f847.
0030: 41 75 74 68 6f 72 3a 20 58 79 7a 7a 79 20 41 70  Author: Xyzzy Ap
0040: 70 73 20 3c 78 79 7a 7a 79 61 70 70 73 40 67 6d  ps <xyzzyapps@gm
0050: 61 69 6c 2e 63 6f 6d 3e 0a 44 61 74 65 3a 20 20  ail.com>.Date:  
0060: 20 4d 6f 6e 20 4e 6f 76 20 31 35 20 30 37 3a 34   Mon Nov 15 07:4
0070: 37 3a 35 36 20 32 30 32 31 20 2b 30 30 30 30 0a  7:56 2021 +0000.
0080: 0a 20 20 20 20 4c 61 74 65 73 74 20 63 68 61 6e  .    Latest chan
0090: 67 65 73 0a 0a 64 69 66 66 20 2d 2d 67 69 74 20  ges..diff --git 
00a0: 61 2f 66 69 72 73 74 2e 6a 73 20 62 2f 66 69 72  a/first.js b/fir
00b0: 73 74 2e 6a 73 0a 69 6e 64 65 78 20 63 62 32 33  st.js.index cb23
00c0: 31 66 66 2e 2e 37 33 31 32 34 66 30 20 31 30 30  1ff..73124f0 100
00d0: 36 34 34 0a 2d 2d 2d 20 61 2f 66 69 72 73 74 2e  644.--- a/first.
00e0: 6a 73 0a 2b 2b 2b 20 62 2f 66 69 72 73 74 2e 6a  js.+++ b/first.j
00f0: 73 0a 40 40 20 2d 35 38 2c 39 20 2b 35 38 2c 31  s.@@ -58,9 +58,1
0100: 31 20 40 40 20 66 75 6e 63 74 69 6f 6e 20 6f 6e  1 @@ function on
0110: 63 65 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20  ce () {.        
0120: 20 76 61 72 20 69 6e 74 72 6f 20 3d 20 5b 5d 0a   var intro = [].
0130: 20 20 20 20 20 20 20 20 20 76 61 72 20 6d 61 69           var mai
0140: 6e 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 20  n = [].         
0150: 76 61 72 20 62 61 73 73 20 3d 20 6d 61 69 6e 0a  var bass = main.
0160: 2d 20 20 20 20 20 20 20 20 76 61 72 20 73 6f 6c  -        var sol
0170: 6f 20 3d 20 62 61 73 73 0a 20 20 20 20 20 20 20  o = bass.       
0180: 20 20 76 61 72 20 65 6e 64 20 3d 20 5b 5d 20 0a    var end = [] .
0190: 2d 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 75  -        var cou
01a0: 6e 74 20 3d 20 30 3b 0a 2b 20 20 20 20 20 20 20  nt = 0;.+       
01b0: 20 76 61 72 20 73 6f 6c 6f 20 3d 20 65 6e 64 0a   var solo = end.
01c0: 2b 20 20 20 20 20 20 20 20 76 61 72 20 66 69 6e  +        var fin
01d0: 20 3d 20 65 6e 64 0a 2b 20 20 20 20 20 20 20 0a   = end.+       .
01e0: 2b 20 20 20 20 20 20 20 76 61 72 20 63 6f 75 6e  +       var coun
01f0: 74 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20  t = 0;.         
0200: 76 61 72 20 6f 6c 64 5f 73 63 65 6e 65 20 3d 20  var old_scene = 
0210: 22 22 3b 0a 20 20 20 20 20 20 20 20 20 0a 20 20  "";.         .  
0220: 20 20 20 20 20 20 20 0a 40 40 20 2d 36 39 2c 31         .@@ -69,1
0230: 36 20 2b 37 31 2c 31 38 20 40 40 20 66 75 6e 63  6 +71,18 @@ func
0240: 74 69 6f 6e 20 6f 6e 63 65 20 28 29 20 7b 0a 20  tion once () {. 
0250: 20 20 20 20 20 20 20 20 6c 65 74 20 79 20 3d 20          let y = 
0260: 31 30 30 3b 0a 20 0a 20 20 20 20 20 20 20 20 20  100;. .         
0270: 69 6e 73 74 61 6e 63 65 2e 73 65 74 75 70 20 3d  instance.setup =
0280: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 2d 20   function() {.- 
0290: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 78             var x
02a0: 20 3d 20 69 6e 73 74 61 6e 63 65 2e 63 72 65 61   = instance.crea
02b0: 74 65 43 61 6e 76 61 73 28 37 30 30 2c 20 34 31  teCanvas(700, 41
02c0: 30 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20  0);.+           
02d0: 20 76 61 72 20 78 20 3d 20 69 6e 73 74 61 6e 63   var x = instanc
02e0: 65 2e 63 72 65 61 74 65 43 61 6e 76 61 73 28 31  e.createCanvas(1
02f0: 32 38 30 2c 20 34 31 30 29 3b 0a 20 20 20 20 20  280, 410);.     
0300: 20 20 20 20 20 20 20 20 78 2e 63 61 6e 76 61 73          x.canvas
0310: 2e 73 74 79 6c 65 2e 70 6f 73 69 74 69 6f 6e 20  .style.position 
0320: 3d 20 22 61 62 73 6f 6c 75 74 65 22 3b 0a 2d 20  = "absolute";.- 
0330: 20 20 20 20 20 20 20 20 20 20 20 69 6e 73 74 61             insta
0340: 6e 63 65 2e 66 72 61 6d 65 52 61 74 65 28 32 29  nce.frameRate(2)
0350: 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 69  ;.+            i
0360: 6e 73 74 61 6e 63 65 2e 66 72 61 6d 65 52 61 74  nstance.frameRat
0370: 65 28 30 2e 32 35 29 3b 0a 20 20 20 20 20 20 20  e(0.25);.       
0380: 20 20 20 20 20 20 69 6e 74 72 6f 2e 70 75 73 68        intro.push
0390: 28 69 6e 73 74 61 6e 63 65 2e 6c 6f 61 64 49 6d  (instance.loadIm
03a0: 61 67 65 28 27 2f 63 6c 6f 73 65 64 2f 69 6e 74  age('/closed/int
03b0: 72 6f 2f 31 2e 70 6e 67 27 29 29 3b 0a 2d 20 20  ro/1.png'));.-  
03c0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 72 6f 2e            intro.
03d0: 70 75 73 68 28 69 6e 73 74 61 6e 63 65 2e 6c 6f  push(instance.lo
03e0: 61 64 49 6d 61 67 65 28 27 2f 63 6c 6f 73 65 64  adImage('/closed
03f0: 2f 69 6e 74 72 6f 2f 32 2e 70 6e 67 27 29 29 3b  /intro/2.png'));
0400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61  .             ma
0410: 69 6e 2e 70 75 73 68 28 69 6e 73 74 61 6e 63 65  in.push(instance
0420: 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f 63 6c 6f  .loadImage('/clo
0430: 73 65 64 2f 6d 61 69 6e 2f 31 2e 70 6e 67 27 29  sed/main/1.png')
0440: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
0450: 6d 61 69 6e 2e 70 75 73 68 28 69 6e 73 74 61 6e  main.push(instan
0460: 63 65 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f 63  ce.loadImage('/c
0470: 6c 6f 73 65 64 2f 6d 61 69 6e 2f 32 2e 70 6e 67  losed/main/2.png
0480: 27 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  '));.           
0490: 20 20 6d 61 69 6e 2e 70 75 73 68 28 69 6e 73 74    main.push(inst
04a0: 61 6e 63 65 2e 6c 6f 61 64 49 6d 61 67 65 28 27  ance.loadImage('
04b0: 2f 63 6c 6f 73 65 64 2f 6d 61 69 6e 2f 33 2e 70  /closed/main/3.p
04c0: 6e 67 27 29 29 3b 0a 2b 20 20 20 20 20 20 20 20  ng'));.+        
04d0: 20 20 20 20 20 6d 61 69 6e 2e 70 75 73 68 28 69       main.push(i
04e0: 6e 73 74 61 6e 63 65 2e 6c 6f 61 64 49 6d 61 67  nstance.loadImag
04f0: 65 28 27 2f 63 6c 6f 73 65 64 2f 6d 61 69 6e 2f  e('/closed/main/
0500: 34 2e 70 6e 67 27 29 29 3b 0a 2b 20 20 20 20 20  4.png'));.+     
0510: 20 20 20 20 20 20 20 20 20 6d 61 69 6e 2e 70 75           main.pu
0520: 73 68 28 69 6e 73 74 61 6e 63 65 2e 6c 6f 61 64  sh(instance.load
0530: 49 6d 61 67 65 28 27 2f 63 6c 6f 73 65 64 2f 6d  Image('/closed/m
0540: 61 69 6e 2f 35 2e 70 6e 67 27 29 29 3b 0a 2b 20  ain/5.png'));.+ 
0550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61                ma
0560: 69 6e 2e 70 75 73 68 28 69 6e 73 74 61 6e 63 65  in.push(instance
0570: 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f 63 6c 6f  .loadImage('/clo
0580: 73 65 64 2f 6d 61 69 6e 2f 36 2e 70 6e 67 27 29  sed/main/6.png')
0590: 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20  );.+            
05a0: 20 20 20 20 6d 61 69 6e 2e 70 75 73 68 28 69 6e      main.push(in
05b0: 73 74 61 6e 63 65 2e 6c 6f 61 64 49 6d 61 67 65  stance.loadImage
05c0: 28 27 2f 63 6c 6f 73 65 64 2f 6d 61 69 6e 2f 37  ('/closed/main/7
05d0: 2e 70 6e 67 27 29 29 3b 0a 20 20 20 20 20 20 20  .png'));.       
05e0: 20 20 20 20 20 20 65 6e 64 2e 70 75 73 68 28 69        end.push(i
05f0: 6e 73 74 61 6e 63 65 2e 6c 6f 61 64 49 6d 61 67  nstance.loadImag
0600: 65 28 27 2f 63 6c 6f 73 65 64 2f 65 6e 64 2f 31  e('/closed/end/1
0610: 2e 70 6e 67 27 29 29 3b 0a 2d 20 20 20 20 20 20  .png'));.-      
0620: 20 20 20 20 20 20 65 6e 64 2e 70 75 73 68 28 69        end.push(i
0630: 6e 73 74 61 6e 63 65 2e 6c 6f 61 64 49 6d 61 67  nstance.loadImag
0640: 65 28 27 2f 63 6c 6f 73 65 64 2f 65 6e 64 2f 32  e('/closed/end/2
0650: 2e 70 6e 67 27 29 29 3b 0a 20 20 20 20 20 20 20  .png'));.       
0660: 20 20 7d 3b 0a 20 0a 20 20 20 20 20 20 20 20 20    };. .         
0670: 69 6e 73 74 61 6e 63 65 2e 64 72 61 77 20 3d 20  instance.draw = 
0680: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 40 40 20  function() {.@@ 
0690: 2d 38 36 2c 39 20 2b 39 30 2c 39 20 40 40 20 66  -86,9 +90,9 @@ f
06a0: 75 6e 63 74 69 6f 6e 20 6f 6e 63 65 20 28 29 20  unction once () 
06b0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 09  {.             .
06c0: 6f 6c 64 5f 73 63 65 6e 65 20 3d 20 63 75 72 72  old_scene = curr
06d0: 65 6e 74 5f 73 63 65 6e 65 3b 0a 20 20 20 20 20  ent_scene;.     
06e0: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e              coun
06f0: 74 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20  t = 0;.         
0700: 20 20 20 20 7d 0a 2d 20 20 20 20 2f 2f 20 20 20      }.-    //   
0710: 20 20 20 20 20 69 6e 73 74 61 6e 63 65 2e 63 6c       instance.cl
0720: 65 61 72 28 29 3b 0a 2b 20 20 20 20 20 20 20 20  ear();.+        
0730: 20 20 20 69 6e 73 74 61 6e 63 65 2e 63 6c 65 61     instance.clea
0740: 72 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  r();.           
0750: 20 20 76 61 72 20 63 20 3d 20 65 76 61 6c 28 60    var c = eval(`
0760: 24 7b 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 7d  ${current_scene}
0770: 60 29 0a 2d 20 20 20 20 20 20 20 2f 2f 20 20 20  `).-       //   
0780: 20 20 69 6e 73 74 61 6e 63 65 2e 69 6d 61 67 65    instance.image
0790: 28 63 5b 63 6f 75 6e 74 5d 2c 20 30 2c 20 30 29  (c[count], 0, 0)
07a0: 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 69  ;.+            i
07b0: 6e 73 74 61 6e 63 65 2e 69 6d 61 67 65 28 63 5b  nstance.image(c[
07c0: 63 6f 75 6e 74 5d 2c 20 30 2c 20 30 29 3b 0a 20  count], 0, 0);. 
07d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e              coun
07e0: 74 20 2b 3d 20 31 0a 20 20 20 20 20 20 20 20 20  t += 1.         
07f0: 20 20 20 20 63 6f 75 6e 74 20 3d 20 63 6f 75 6e      count = coun
0800: 74 20 25 20 63 2e 6c 65 6e 67 74 68 3b 0a 20 0a  t % c.length;. .
0810: 40 40 20 2d 31 31 38 2c 38 20 2b 31 32 32 2c 36  @@ -118,8 +122,6
0820: 20 40 40 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 63   @@ function onc
0830: 65 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 20  e () {.         
0840: 61 75 64 69 6f 2e 6d 61 73 74 65 72 2e 69 6e 2e  audio.master.in.
0850: 67 61 69 6e 2e 76 61 6c 75 65 20 3d 20 76 6f 6c  gain.value = vol
0860: 75 6d 65 5f 67 75 61 72 64 31 28 76 61 6c 20 2f  ume_guard1(val /
0870: 20 31 30 29 3b 0a 20 20 20 20 20 7d 29 0a 20 20   10);.     }).  
0880: 20 20 20 0a 2d 0a 2d 0a 20 09 6d 65 6d 2e 6d 61     .-.-. .mem.ma
0890: 73 74 65 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e  ster = new Tone.
08a0: 43 68 61 6e 6e 65 6c 28 7b 63 68 61 6e 6e 65 6c  Channel({channel
08b0: 43 6f 75 6e 74 3a 20 32 2c 20 76 6f 6c 75 6d 65  Count: 2, volume
08c0: 3a 20 2d 31 30 7d 29 2e 63 68 61 69 6e 28 20 20  : -10}).chain(  
08d0: 6d 65 6d 5b 22 6d 61 73 74 65 72 5f 66 69 6c 74  mem["master_filt
08e0: 65 72 22 5d 2c 20 20 6d 65 6d 5b 22 6d 61 73 74  er"],  mem["mast
08f0: 65 72 5f 73 74 65 72 65 6f 22 5d 2c 20 54 6f 6e  er_stereo"], Ton
0900: 65 2e 44 65 73 74 69 6e 61 74 69 6f 6e 29 3b 0a  e.Destination);.
0910: 20 20 20 20 20 53 61 6d 70 6c 65 28 22 6b 22 2c       Sample("k",
0920: 20 30 2c 20 6e 75 6c 6c 2c 20 2d 35 29 3b 0a 20   0, null, -5);. 
0930: 20 20 20 20 53 61 6d 70 6c 65 28 22 73 6e 31 22      Sample("sn1"
0940: 2c 31 2c 20 6e 75 6c 6c 2c 20 30 29 3b 0a 40 40  ,1, null, 0);.@@
0950: 20 2d 31 33 36 2c 31 37 20 2b 31 33 38 2c 31 34   -136,17 +138,14
0960: 20 40 40 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 63   @@ function onc
0970: 65 20 28 29 20 7b 0a 20 20 20 20 20 73 61 6d 70  e () {.     samp
0980: 6c 65 73 5b 35 5d 2e 63 6f 6e 6e 65 63 74 28 6d  les[5].connect(m
0990: 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 63 68 61 6e  em[name + "_chan
09a0: 6e 65 6c 22 5d 29 3b 0a 20 20 20 20 20 68 69 74  nel"]);.     hit
09b0: 5f 6d 61 70 5b 6e 61 6d 65 5d 20 3d 20 35 3b 0a  _map[name] = 5;.
09c0: 20 20 20 0a 2d 20 20 20 20 0a 2d 20 20 20 20 0a     .-    .-    .
09d0: 2b 20 20 0a 20 0a 20 20 20 20 20 0a 20 20 20 20  +  . .     .    
09e0: 20 0a 2d 20 20 20 20 0a 2d 20 20 20 20 0a 2d 20   .-    .-    .- 
09f0: 20 20 20 53 61 6d 70 6c 65 28 22 6d 61 6e 61 67     Sample("manag
0a00: 65 72 22 2c 36 2c 20 6e 75 6c 6c 2c 20 2d 31 35  er",6, null, -15
0a10: 29 3b 0a 2b 20 20 20 20 53 61 6d 70 6c 65 28 22  );.+    Sample("
0a20: 6d 61 6e 61 67 65 72 22 2c 36 2c 20 6e 75 6c 6c  manager",6, null
0a30: 2c 20 2d 35 29 3b 0a 20 20 20 20 20 53 61 6d 70  , -5);.     Samp
0a40: 6c 65 28 22 6f 72 64 65 72 22 2c 37 2c 20 6e 75  le("order",7, nu
0a50: 6c 6c 2c 20 2d 31 35 29 3b 0a 20 20 20 20 20 53  ll, -15);.     S
0a60: 61 6d 70 6c 65 28 22 63 72 22 2c 38 2c 20 6e 75  ample("cr",8, nu
0a70: 6c 6c 2c 20 2d 31 35 29 3b 0a 2d 20 20 20 20 53  ll, -15);.-    S
0a80: 61 6d 70 6c 65 28 22 70 69 61 6e 6f 22 2c 39 2c  ample("piano",9,
0a90: 20 34 30 30 2c 20 2d 31 35 29 3b 0a 2b 20 20 20   400, -15);.+   
0aa0: 20 53 61 6d 70 6c 65 28 22 70 69 61 6e 6f 22 2c   Sample("piano",
0ab0: 39 2c 20 34 30 30 2c 20 2d 35 29 3b 0a 20 20 20  9, 400, -5);.   
0ac0: 20 09 53 61 6d 70 6c 65 28 22 73 69 74 61 72 22   .Sample("sitar"
0ad0: 2c 31 30 2c 20 35 30 30 30 2c 20 2d 31 35 29 3b  ,10, 5000, -15);
0ae0: 0a 20 20 20 20 20 0a 20 20 20 20 20 63 6f 6e 73  .     .     cons
0af0: 74 20 61 75 64 69 6f 20 3d 20 41 75 64 69 6f 28  t audio = Audio(
0b00: 29 3b 0a 40 40 20 2d 31 37 32 2c 32 32 20 2b 31  );.@@ -172,22 +1
0b10: 37 31 2c 32 36 20 40 40 20 66 75 6e 63 74 69 6f  71,26 @@ functio
0b20: 6e 20 6f 6e 63 65 20 28 29 20 7b 0a 20 20 20 20  n once () {.    
0b30: 20 20 20 20 20 63 75 74 6f 66 66 5f 67 75 61 72       cutoff_guar
0b40: 64 20 3d 20 67 75 61 72 64 28 5b 33 30 2c 20 37  d = guard([30, 7
0b50: 30 30 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 74  00]);.         t
0b60: 68 72 65 65 2e 70 61 72 61 6d 73 2e 63 75 74 6f  hree.params.cuto
0b70: 66 66 2e 76 61 6c 75 65 20 3d 20 63 75 74 6f 66  ff.value = cutof
0b80: 66 5f 67 75 61 72 64 28 76 61 6c 20 2a 20 31 30  f_guard(val * 10
0b90: 30 30 29 3b 0a 20 20 20 20 20 7d 29 0a 2b 20 20  00);.     }).+  
0ba0: 20 20 0a 2b 20 20 20 20 0a 2b 20 20 20 20 6d 65    .+    .+    me
0bb0: 6d 2e 6b 31 20 3d 20 6b 6e 6f 62 28 7b 72 61 6d  m.k1 = knob({ram
0bc0: 70 20 3a 20 5b 30 2e 35 32 35 2c 20 30 2e 38 2c  p : [0.525, 0.8,
0bd0: 20 30 2e 34 2c 20 30 2e 32 35 2c 20 30 2e 37 35   0.4, 0.25, 0.75
0be0: 2c 20 30 2e 32 35 5d 2c 20 73 74 65 70 3a 20 30  , 0.25], step: 0
0bf0: 2e 30 30 35 2c 20 22 6e 75 6d 62 65 72 22 3a 20  .005, "number": 
0c00: 64 69 61 6c 73 5b 31 5d 5b 22 63 65 6c 6c 22 5d  dials[1]["cell"]
0c10: 20 7d 29 3b 0a 2b 20 20 20 20 61 6c 77 61 79 73   });.+    always
0c20: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b   = function () {
0c30: 0a 2b 20 20 20 20 20 20 20 20 6c 65 74 20 63 75  .+        let cu
0c40: 74 6f 66 66 5f 67 75 61 72 64 20 3d 20 67 75 61  toff_guard = gua
0c50: 72 64 28 5b 33 30 2c 20 39 30 30 5d 29 3b 0a 2b  rd([30, 900]);.+
0c60: 20 20 20 20 20 20 20 20 74 68 72 65 65 2e 70 61          three.pa
0c70: 72 61 6d 73 2e 63 75 74 6f 66 66 2e 76 61 6c 75  rams.cutoff.valu
0c80: 65 20 3d 20 63 75 74 6f 66 66 5f 67 75 61 72 64  e = cutoff_guard
0c90: 28 6d 65 6d 2e 6b 31 2e 6d 6f 76 65 28 29 20 2a  (mem.k1.move() *
0ca0: 20 31 30 30 30 29 3b 0a 2b 20 20 20 20 7d 0a 20   1000);.+    }. 
0cb0: 7d 0a 20 0a 20 66 75 6e 63 74 69 6f 6e 20 74 77  }. . function tw
0cc0: 65 61 6b 28 29 20 7b 0a 20 20 0a 2d 20 20 20 20  eak() {.  .-    
0cd0: 76 61 72 09 73 6e 61 72 65 5f 63 6f 75 6e 74 20  var.snare_count 
0ce0: 3d 20 63 65 6c 6c 78 28 31 36 29 3b 0a 2d 20 20  = cellx(16);.-  
0cf0: 20 20 0a 2d 20 20 20 20 0a 2b 20 20 20 20 76 61    .-    .+    va
0d00: 72 09 73 6e 61 72 65 5f 63 6f 75 6e 74 20 3d 20  r.snare_count = 
0d10: 63 65 6c 6c 78 28 30 29 3b 0a 20 20 20 20 20 0a  cellx(0);.     .
0d20: 2b 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 73  +        .     s
0d30: 6e 61 72 65 5f 63 6f 75 6e 74 2e 6f 6e 43 68 61  nare_count.onCha
0d40: 6e 67 65 28 66 75 6e 63 74 69 6f 6e 20 28 65 29  nge(function (e)
0d50: 20 7b 0a 20 20 20 20 20 20 20 20 20 76 61 72 20   {.         var 
0d60: 76 61 6c 20 3d 20 70 61 72 73 65 49 6e 74 28 65  val = parseInt(e
0d70: 5b 22 64 61 74 61 22 5d 2e 76 61 6c 75 65 29 3b  ["data"].value);
0d80: 0a 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61  .         if (va
0d90: 6c 20 3d 3d 20 32 32 29 20 7b 0a 20 20 20 20 20  l == 22) {.     
0da0: 20 20 09 20 09 63 75 72 72 65 6e 74 5f 73 63 65    . .current_sce
0db0: 6e 65 20 3d 20 22 66 69 6e 22 3b 0a 2d 09 09 09  ne = "fin";.-...
0dc0: 70 31 28 38 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c  p1(8, null, null
0dd0: 2c 20 31 32 2e 32 35 29 3b 0a 2d 09 20 20 20 20  , 12.25);.-.    
0de0: 7d 20 65 6c 73 65 20 7b 0a 2d 20 20 20 20 20 20  } else {.-      
0df0: 20 20 20 20 20 70 28 31 2c 20 6e 75 6c 6c 2c 20       p(1, null, 
0e00: 6e 75 6c 6c 2c 20 22 34 6e 22 29 0a 2d 20 20 20  null, "4n").-   
0e10: 20 20 20 20 20 7d 0a 2b 09 09 09 20 70 31 28 38       }.+... p1(8
0e20: 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 31 32  , null, null, 12
0e30: 2e 32 35 29 3b 0a 2b 09 20 20 20 20 7d 20 0a 20  .25);.+.    } . 
0e40: 20 20 20 20 7d 29 0a 20 20 20 20 20 0a 20 20 20      }).     .   
0e50: 20 20 0a 40 40 20 2d 32 33 33 2c 38 20 2b 32 33    .@@ -233,8 +23
0e60: 36 2c 36 20 40 40 20 69 66 20 28 62 61 72 73 20  6,6 @@ if (bars 
0e70: 3d 3d 20 35 29 20 7b 0a 20 7d 0a 20 0a 20 0a 2d  == 5) {. }. . .-
0e80: 0a 2d 0a 20 69 66 20 28 62 61 72 73 20 3d 3d 20  .-. if (bars == 
0e90: 31 32 29 20 7b 0a 20 09 65 76 61 6c 5f 67 75 61  12) {. .eval_gua
0ea0: 72 64 20 3f 20 63 75 65 28 22 41 64 64 20 62 61  rd ? cue("Add ba
0eb0: 73 73 22 29 3a 20 22 22 3b 0a 20 20 20 20 20 63  ss"): "";.     c
0ec0: 75 72 72 65 6e 74 5f 73 63 65 6e 65 20 3d 20 22  urrent_scene = "
0ed0: 62 61 73 73 22 3b 0a 40 40 20 2d 32 35 33 2c 37  bass";.@@ -253,7
0ee0: 20 2b 32 35 34 2c 37 20 40 40 20 69 66 20 28 62   +254,7 @@ if (b
0ef0: 61 72 73 20 3d 3d 20 34 32 29 20 7b 0a 20 0a 20  ars == 42) {. . 
0f00: 7d 0a 20 0a 2d 69 66 20 28 62 61 72 73 20 3d 3d  }. .-if (bars ==
0f10: 20 34 36 29 20 7b 0a 2b 69 66 20 28 62 61 72 73   46) {.+if (bars
0f20: 20 3d 3d 20 34 38 29 20 7b 0a 20 09 65 76 61 6c   == 48) {. .eval
0f30: 5f 67 75 61 72 64 20 3f 20 63 75 65 28 22 53 6f  _guard ? cue("So
0f40: 6c 6f 20 22 29 3a 20 22 22 0a 20 20 20 20 20 63  lo "): "".     c
0f50: 75 72 72 65 6e 74 5f 73 63 65 6e 65 20 3d 20 22  urrent_scene = "
0f60: 73 6f 6c 6f 22 3b 0a 20 7d 0a 40 40 20 2d 32 36  solo";. }.@@ -26
0f70: 39 2c 37 20 2b 32 37 30 2c 37 20 40 40 20 61 6c  9,7 +270,7 @@ al
0f80: 77 61 79 73 28 29 3b 0a 20 69 66 20 28 74 72 61  ways();. if (tra
0f90: 63 6b 5f 6e 6f 20 3d 3d 20 31 29 20 7b 0a 20 69  ck_no == 1) {. i
0fa0: 66 20 28 63 6f 75 6e 74 20 3d 3d 20 30 29 20 7b  f (count == 0) {
0fb0: 0a 20 09 63 75 65 28 22 53 61 6d 70 6c 65 22 29  . .cue("Sample")
0fc0: 0a 2d 20 2f 2f 20 20 20 70 31 28 38 2c 20 6e 75  .- //   p1(8, nu
0fd0: 6c 6c 2c 20 6e 75 6c 6c 2c 20 31 32 2e 32 35 29  ll, null, 12.25)
0fe0: 3b 0a 2b 20 20 20 20 70 31 28 37 2c 20 6e 75 6c  ;.+    p1(7, nul
0ff0: 6c 2c 20 6e 75 6c 6c 2c 20 31 32 2e 32 35 29 3b  l, null, 12.25);
1000: 0a 20 7d 0a 20 7d 0a 20 0a 40 40 20 2d 33 31 31  . }. }. .@@ -311
1010: 2c 39 20 2b 33 31 32 2c 39 20 40 40 20 69 66 20  ,9 +312,9 @@ if 
1020: 28 69 73 48 69 74 29 20 7b 0a 20 20 20 20 20 20  (isHit) {.      
1030: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 69 66     }.         if
1040: 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 35 29   (track_no == 5)
1050: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
1060: 69 66 20 28 6d 65 74 61 5b 74 69 63 6b 5d 5b 22  if (meta[tick]["
1070: 70 69 74 63 68 22 5d 29 20 7b 0a 2d 20 20 20 20  pitch"]) {.-    
1080: 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 5b              mem[
1090: 22 74 68 72 65 65 22 5d 2e 73 74 65 70 28 7b 22  "three"].step({"
10a0: 67 6c 69 64 65 22 3a 20 74 72 75 65 2c 20 22 61  glide": true, "a
10b0: 63 63 65 6e 74 22 3a 20 66 61 6c 73 65 2c 20 22  ccent": false, "
10c0: 6e 6f 74 65 22 3a 20 6d 65 74 61 5b 74 69 63 6b  note": meta[tick
10d0: 5d 5b 22 70 69 74 63 68 22 5d 7d 29 3b 0a 2b 20  ]["pitch"]});.+ 
10e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
10f0: 20 6d 65 6d 5b 22 74 68 72 65 65 22 5d 2e 73 74   mem["three"].st
1100: 65 70 28 7b 22 67 6c 69 64 65 22 3a 20 74 72 75  ep({"glide": tru
1110: 65 2c 20 22 61 63 63 65 6e 74 22 3a 20 66 61 6c  e, "accent": fal
1120: 73 65 2c 20 22 6e 6f 74 65 22 3a 20 6d 65 74 61  se, "note": meta
1130: 5b 74 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d 7d  [tick]["pitch"]}
1140: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
1150: 7d 20 65 6c 73 65 20 7b 0a 2d 20 20 20 20 20 20  } else {.-      
1160: 20 20 20 20 20 20 20 20 20 20 6d 65 6d 5b 22 74            mem["t
1170: 68 72 65 65 22 5d 2e 73 74 65 70 28 22 6f 66 66  hree"].step("off
1180: 22 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20  ");.+           
1190: 20 20 20 2f 2f 20 20 6d 65 6d 5b 22 74 68 72 65     //  mem["thre
11a0: 65 22 5d 2e 73 74 65 70 28 22 6f 66 66 22 29 3b  e"].step("off");
11b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  .             }.
11c0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
11d0: 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f      if (track_no
11e0: 20 3d 3d 20 36 29 20 7b 0a 40 40 20 2d 33 35 30   == 6) {.@@ -350
11f0: 2c 34 20 2b 33 35 31 2c 34 20 40 40 20 69 66 20  ,4 +351,4 @@ if 
1200: 28 69 73 48 69 74 29 20 7b 0a 20 0a 20 7d 0a 20  (isHit) {. . }. 
1210: 0a 2d 0a 2b 20 0a 5c 20 4e 6f 20 6e 65 77 6c 69  .-.+ .\ No newli
1220: 6e 65 20 61 74 20 65 6e 64 20 6f 66 20 66 69 6c  ne at end of fil
1230: 65 0a 0a 63 6f 6d 6d 69 74 20 32 62 61 32 61 33  e..commit 2ba2a3
1240: 38 33 31 35 62 38 32 66 62 30 33 64 31 35 36 37  8315b82fb03d1567
1250: 64 38 65 37 39 65 62 35 38 62 64 35 39 66 34 31  d8e79eb58bd59f41
1260: 63 39 0a 41 75 74 68 6f 72 3a 20 58 79 7a 7a 79  c9.Author: Xyzzy
1270: 20 41 70 70 73 20 3c 78 79 7a 7a 79 61 70 70 73   Apps <xyzzyapps
1280: 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 44 61 74 65  @gmail.com>.Date
1290: 3a 20 20 20 53 75 6e 20 4e 6f 76 20 31 34 20 31  :   Sun Nov 14 1
12a0: 32 3a 33 31 3a 33 39 20 32 30 32 31 20 2b 30 30  2:31:39 2021 +00
12b0: 30 30 0a 0a 20 20 20 20 54 75 74 6f 72 69 61 6c  00..    Tutorial
12c0: 0a 0a 64 69 66 66 20 2d 2d 67 69 74 20 61 2f 74  ..diff --git a/t
12d0: 75 74 6f 72 69 61 6c 2e 6a 73 20 62 2f 74 75 74  utorial.js b/tut
12e0: 6f 72 69 61 6c 2e 6a 73 0a 6e 65 77 20 66 69 6c  orial.js.new fil
12f0: 65 20 6d 6f 64 65 20 31 30 30 36 34 34 0a 69 6e  e mode 100644.in
1300: 64 65 78 20 30 30 30 30 30 30 30 2e 2e 63 33 63  dex 0000000..c3c
1310: 35 66 36 37 0a 2d 2d 2d 20 2f 64 65 76 2f 6e 75  5f67.--- /dev/nu
1320: 6c 6c 0a 2b 2b 2b 20 62 2f 74 75 74 6f 72 69 61  ll.+++ b/tutoria
1330: 6c 2e 6a 73 0a 40 40 20 2d 30 2c 30 20 2b 31 2c  l.js.@@ -0,0 +1,
1340: 31 38 33 20 40 40 0a 2b 76 6f 6c 75 6d 65 5f 67  183 @@.+volume_g
1350: 75 61 72 64 31 20 3d 20 67 75 61 72 64 28 5b 2d  uard1 = guard([-
1360: 32 30 2c 31 35 5d 29 0a 2b 54 6f 6e 65 2e 4d 61  20,15]).+Tone.Ma
1370: 73 74 65 72 2e 76 6f 6c 75 6d 65 2e 76 61 6c 75  ster.volume.valu
1380: 65 20 3d 20 76 6f 6c 75 6d 65 5f 67 75 61 72 64  e = volume_guard
1390: 31 28 4d 61 74 68 2e 72 6f 75 6e 64 28 64 69 61  1(Math.round(dia
13a0: 6c 73 5b 30 5d 5b 22 63 65 6c 6c 22 5d 28 29 20  ls[0]["cell"]() 
13b0: 2a 20 33 30 29 20 2d 32 30 29 3b 0a 2b 2f 2f 20  * 30) -20);.+// 
13c0: 6d 65 6d 5b 22 73 74 61 62 5f 63 68 61 6e 6e 65  mem["stab_channe
13d0: 6c 22 5d 2e 76 6f 6c 75 6d 65 2e 76 61 6c 75 65  l"].volume.value
13e0: 20 3d 20 76 6f 6c 75 6d 65 5f 67 75 61 72 64 32   = volume_guard2
13f0: 28 2d 32 29 3b 0a 2b 2f 2f 20 6d 65 6d 5b 22 73  (-2);.+// mem["s
1400: 74 61 62 5f 66 69 6c 74 65 72 22 5d 2e 66 72 65  tab_filter"].fre
1410: 71 75 65 6e 63 79 2e 76 61 6c 75 65 20 3d 20 4d  quency.value = M
1420: 61 74 68 2e 72 6f 75 6e 64 28 64 69 61 6c 73 5b  ath.round(dials[
1430: 31 5d 5b 22 63 65 6c 6c 22 5d 28 29 20 2a 20 31  1]["cell"]() * 1
1440: 30 30 30 30 29 3b 0a 2b 0a 2b 0a 2b 73 63 65 6e  0000);.+.+.+scen
1450: 65 31 20 3d 20 5b 0a 2b 20 20 20 20 63 65 6c 6c  e1 = [.+    cell
1460: 78 28 22 70 20 31 30 30 30 20 31 30 30 30 20 31  x("p 1000 1000 1
1470: 30 30 30 20 31 30 30 30 22 29 2c 0a 2b 20 20 20  000 1000"),.+   
1480: 20 63 65 6c 6c 78 28 22 70 20 30 30 78 30 20 30   cellx("p 00x0 0
1490: 30 78 30 20 30 30 78 30 20 30 30 78 30 22 29 2c  0x0 00x0 00x0"),
14a0: 0a 2b 20 20 20 20 63 65 6c 6c 78 28 22 70 20 30  .+    cellx("p 0
14b0: 78 30 30 20 30 30 30 30 20 30 30 30 30 20 78 30  x00 0000 0000 x0
14c0: 30 30 22 29 2c 0a 2b 20 20 20 20 63 65 6c 6c 78  00"),.+    cellx
14d0: 28 22 70 20 30 30 30 30 20 78 30 30 30 20 30 30  ("p 0000 x000 00
14e0: 30 30 20 78 30 30 30 22 29 2c 0a 2b 20 20 20 20  00 x000"),.+    
14f0: 63 65 6c 6c 78 28 22 70 20 78 78 30 78 20 63 30  cellx("p xx0x c0
1500: 78 30 20 78 30 78 30 20 78 30 78 78 22 29 2c 0a  x0 x0x0 x0xx"),.
1510: 2b 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78 30  +    cellx("p x0
1520: 30 30 20 78 30 78 30 20 30 30 30 30 20 78 30 78  00 x0x0 0000 x0x
1530: 30 22 29 2c 0a 2b 5d 0a 2b 0a 2b 70 61 74 74 65  0"),.+].+.+patte
1540: 72 6e 73 20 3d 20 73 63 65 6e 65 31 0a 2b 0a 2b  rns = scene1.+.+
1550: 0a 2b 66 75 6e 63 74 69 6f 6e 20 4e 6f 69 73 65  .+function Noise
1560: 53 79 6e 74 68 20 28 6e 61 6d 65 29 20 7b 0a 2b  Synth (name) {.+
1570: 20 20 20 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 20      name = name 
1580: 7c 7c 20 22 77 66 22 3b 0a 2b 20 20 20 20 6d 65  || "wf";.+    me
1590: 6d 5b 6e 61 6d 65 20 2b 20 22 5f 73 74 65 72 65  m[name + "_stere
15a0: 6f 22 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53  o"] = new Tone.S
15b0: 74 65 72 65 6f 57 69 64 65 6e 65 72 28 7b 77 69  tereoWidener({wi
15c0: 64 74 68 3a 20 31 7d 29 3b 0a 2b 20 20 20 20 6d  dth: 1});.+    m
15d0: 65 6d 5b 6e 61 6d 65 5d 20 3d 20 20 6e 65 77 20  em[name] =  new 
15e0: 54 6f 6e 65 2e 4e 6f 69 73 65 28 22 70 69 6e 6b  Tone.Noise("pink
15f0: 22 29 2e 73 74 61 72 74 28 29 3b 0a 2b 20 20 20  ").start();.+   
1600: 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 66 69   mem[name + "_fi
1610: 6c 74 65 72 22 5d 20 3d 20 6e 65 77 20 54 6f 6e  lter"] = new Ton
1620: 65 2e 46 69 6c 74 65 72 28 34 30 30 2c 20 27 6c  e.Filter(400, 'l
1630: 6f 77 70 61 73 73 27 2c 20 2d 39 36 29 3b 0a 2b  owpass', -96);.+
1640: 20 20 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22      mem[name + "
1650: 5f 63 68 61 6e 6e 65 6c 22 5d 20 3d 20 6e 65 77  _channel"] = new
1660: 20 54 6f 6e 65 2e 43 68 61 6e 6e 65 6c 28 7b 63   Tone.Channel({c
1670: 68 61 6e 6e 65 6c 43 6f 75 6e 74 3a 20 32 2c 20  hannelCount: 2, 
1680: 76 6f 6c 75 6d 65 3a 20 2d 31 30 2c 20 70 61 6e  volume: -10, pan
1690: 3a 20 2d 30 2e 38 7d 29 2e 63 68 61 69 6e 28 6d  : -0.8}).chain(m
16a0: 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 66 69 6c 74  em[name + "_filt
16b0: 65 72 22 5d 2c 20 6d 65 6d 5b 6e 61 6d 65 20 2b  er"], mem[name +
16c0: 20 22 5f 73 74 65 72 65 6f 22 5d 2c 20 6d 65 6d   "_stereo"], mem
16d0: 2e 6d 61 73 74 65 72 29 3b 0a 2b 20 20 20 20 6d  .master);.+    m
16e0: 65 6d 5b 6e 61 6d 65 5d 2e 63 6f 6e 6e 65 63 74  em[name].connect
16f0: 28 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 63 68  (mem[name + "_ch
1700: 61 6e 6e 65 6c 22 5d 29 0a 2b 7d 0a 2b 0a 2b 66  annel"]).+}.+.+f
1710: 75 6e 63 74 69 6f 6e 20 53 74 61 62 28 6e 61 6d  unction Stab(nam
1720: 65 29 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 20 3d  e) {.+    name =
1730: 20 6e 61 6d 65 20 7c 7c 20 22 73 74 61 62 22 3b   name || "stab";
1740: 0a 2b 0a 2b 20 20 20 20 6d 65 6d 5b 6e 61 6d 65  .+.+    mem[name
1750: 20 2b 20 22 5f 66 69 6c 74 65 72 22 5d 20 3d 20   + "_filter"] = 
1760: 6e 65 77 20 54 6f 6e 65 2e 46 69 6c 74 65 72 28  new Tone.Filter(
1770: 35 32 35 30 2c 20 27 6c 6f 77 70 61 73 73 27 2c  5250, 'lowpass',
1780: 20 2d 39 36 29 3b 0a 2b 20 20 20 20 6d 65 6d 5b   -96);.+    mem[
1790: 6e 61 6d 65 20 2b 20 22 5f 68 66 69 6c 74 65 72  name + "_hfilter
17a0: 22 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 46 69  "] = new Tone.Fi
17b0: 6c 74 65 72 28 38 30 2c 20 27 68 69 67 68 70 61  lter(80, 'highpa
17c0: 73 73 27 2c 20 2d 39 36 29 3b 0a 2b 20 20 20 20  ss', -96);.+    
17d0: 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 72 65 76  mem[name + "_rev
17e0: 65 72 62 22 5d 20 3d 20 6e 65 77 20 54 6f 6e 65  erb"] = new Tone
17f0: 2e 52 65 76 65 72 62 28 30 2e 31 29 3b 0a 2b 20  .Reverb(0.1);.+ 
1800: 20 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f     mem[name + "_
1810: 64 65 6c 61 79 22 5d 20 3d 20 6e 65 77 20 54 6f  delay"] = new To
1820: 6e 65 2e 46 65 65 64 62 61 63 6b 44 65 6c 61 79  ne.FeedbackDelay
1830: 28 22 34 6e 22 2c 20 30 2e 34 29 3b 0a 2b 20 20  ("4n", 0.4);.+  
1840: 20 20 2f 2f 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20    // mem[name + 
1850: 22 5f 70 64 65 6c 61 79 22 5d 20 3d 20 6e 65 77  "_pdelay"] = new
1860: 20 54 6f 6e 65 2e 50 69 6e 67 50 6f 6e 67 44 65   Tone.PingPongDe
1870: 6c 61 79 28 22 32 6e 22 2c 20 30 2e 31 29 3b 0a  lay("2n", 0.1);.
1880: 2b 20 20 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20  +    mem[name + 
1890: 22 5f 73 74 65 72 65 6f 22 5d 20 3d 20 6e 65 77  "_stereo"] = new
18a0: 20 54 6f 6e 65 2e 53 74 65 72 65 6f 57 69 64 65   Tone.StereoWide
18b0: 6e 65 72 28 7b 77 69 64 74 68 3a 20 30 2e 32 35  ner({width: 0.25
18c0: 7d 29 3b 0a 2b 20 20 20 20 6d 65 6d 5b 6e 61 6d  });.+    mem[nam
18d0: 65 20 2b 20 22 5f 63 68 61 6e 6e 65 6c 22 5d 20  e + "_channel"] 
18e0: 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 68 61 6e 6e  = new Tone.Chann
18f0: 65 6c 28 7b 63 68 61 6e 6e 65 6c 43 6f 75 6e 74  el({channelCount
1900: 3a 20 32 2c 20 76 6f 6c 75 6d 65 3a 20 2d 32 7d  : 2, volume: -2}
1910: 29 2e 63 68 61 69 6e 28 6d 65 6d 5b 6e 61 6d 65  ).chain(mem[name
1920: 20 2b 20 22 5f 66 69 6c 74 65 72 22 5d 20 2c 20   + "_filter"] , 
1930: 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 64    mem[name + "_d
1940: 65 6c 61 79 22 5d 2c 20 6d 65 6d 5b 6e 61 6d 65  elay"], mem[name
1950: 20 2b 20 22 5f 72 65 76 65 72 62 22 5d 2c 20 20   + "_reverb"],  
1960: 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 68 66 69  mem[name + "_hfi
1970: 6c 74 65 72 22 5d 20 2c 6d 65 6d 5b 6e 61 6d 65  lter"] ,mem[name
1980: 20 2b 20 22 5f 73 74 65 72 65 6f 22 5d 2c 20 6d   + "_stereo"], m
1990: 65 6d 2e 6d 61 73 74 65 72 29 0a 2b 0a 2b 0a 2b  em.master).+.+.+
19a0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 76 6f 69      function voi
19b0: 63 65 28 6e 6f 2c 20 74 79 70 65 29 20 7b 0a 2b  ce(no, type) {.+
19c0: 20 20 20 20 20 20 20 20 6d 65 6d 5b 6e 61 6d 65          mem[name
19d0: 20 2b 20 22 5f 73 79 6e 74 68 22 20 2b 20 6e 6f   + "_synth" + no
19e0: 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 6f 6e  ] = new Tone.Mon
19f0: 6f 53 79 6e 74 68 28 7b 0a 2b 20 20 20 20 20 20  oSynth({.+      
1a00: 20 20 20 20 20 20 6f 73 63 69 6c 6c 61 74 6f 72        oscillator
1a10: 3a 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20  : {.+           
1a20: 20 20 20 20 20 74 79 70 65 3a 20 74 79 70 65 0a       type: type.
1a30: 2b 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 2b  +            }.+
1a40: 20 20 20 20 20 20 20 20 7d 29 0a 2b 20 20 20 20          }).+    
1a50: 20 20 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22      mem[name + "
1a60: 5f 73 79 6e 74 68 22 20 2b 20 6e 6f 5d 2e 63 6f  _synth" + no].co
1a70: 6e 6e 65 63 74 28 6d 65 6d 5b 6e 61 6d 65 20 2b  nnect(mem[name +
1a80: 20 22 5f 63 68 61 6e 6e 65 6c 22 5d 29 3b 0a 2b   "_channel"]);.+
1a90: 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 20 76 6f 69      }.+.+    voi
1aa0: 63 65 28 31 2c 20 22 73 61 77 74 6f 6f 74 68 22  ce(1, "sawtooth"
1ab0: 29 0a 2b 20 20 20 20 76 6f 69 63 65 28 32 2c 20  ).+    voice(2, 
1ac0: 22 73 61 77 74 6f 6f 74 68 22 29 0a 2b 20 20 20  "sawtooth").+   
1ad0: 20 76 6f 69 63 65 28 33 2c 20 22 73 61 77 74 6f   voice(3, "sawto
1ae0: 6f 74 68 22 29 0a 2b 20 20 20 20 76 6f 69 63 65  oth").+    voice
1af0: 28 34 2c 20 22 70 77 6d 22 29 0a 2b 20 20 20 20  (4, "pwm").+    
1b00: 76 6f 69 63 65 28 35 2c 20 22 70 77 6d 22 29 0a  voice(5, "pwm").
1b10: 2b 20 20 20 20 76 6f 69 63 65 28 36 2c 20 22 70  +    voice(6, "p
1b20: 77 6d 22 29 0a 2b 7d 0a 2b 0a 2b 66 75 6e 63 74  wm").+}.+.+funct
1b30: 69 6f 6e 20 73 28 76 65 6c 2c 20 6e 6f 74 65 73  ion s(vel, notes
1b40: 2c 20 64 75 72 61 74 69 6f 6e 29 20 7b 0a 2b 20  , duration) {.+ 
1b50: 20 20 20 76 65 6c 20 3d 20 76 65 6c 20 7c 7c 20     vel = vel || 
1b60: 31 2e 30 3b 0a 2b 20 20 20 20 64 75 72 61 74 69  1.0;.+    durati
1b70: 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 20 7c 7c  on = duration ||
1b80: 20 22 32 6e 22 3b 0a 2b 20 20 20 20 6e 6f 74 65   "2n";.+    note
1b90: 73 20 3d 20 6e 6f 74 65 73 20 7c 7c 20 20 5b 22  s = notes ||  ["
1ba0: 45 32 22 2c 20 22 42 32 22 2c 20 22 47 32 22 5d  E2", "B2", "G2"]
1bb0: 3b 0a 2b 20 20 20 20 6d 65 6d 5b 22 73 74 61 62  ;.+    mem["stab
1bc0: 5f 73 79 6e 74 68 31 22 5d 2e 74 72 69 67 67 65  _synth1"].trigge
1bd0: 72 41 74 74 61 63 6b 52 65 6c 65 61 73 65 28 6e  rAttackRelease(n
1be0: 6f 74 65 73 5b 30 5d 2c 20 64 75 72 61 74 69 6f  otes[0], duratio
1bf0: 6e 2c 20 75 6e 64 65 66 69 6e 65 64 2c 20 76 65  n, undefined, ve
1c00: 6c 29 3b 0a 2b 20 20 20 20 6d 65 6d 5b 22 73 74  l);.+    mem["st
1c10: 61 62 5f 73 79 6e 74 68 32 22 5d 2e 74 72 69 67  ab_synth2"].trig
1c20: 67 65 72 41 74 74 61 63 6b 52 65 6c 65 61 73 65  gerAttackRelease
1c30: 28 6e 6f 74 65 73 5b 31 5d 2c 20 64 75 72 61 74  (notes[1], durat
1c40: 69 6f 6e 2c 20 75 6e 64 65 66 69 6e 65 64 2c 20  ion, undefined, 
1c50: 76 65 6c 29 3b 0a 2b 20 20 20 20 6d 65 6d 5b 22  vel);.+    mem["
1c60: 73 74 61 62 5f 73 79 6e 74 68 33 22 5d 2e 74 72  stab_synth3"].tr
1c70: 69 67 67 65 72 41 74 74 61 63 6b 52 65 6c 65 61  iggerAttackRelea
1c80: 73 65 28 6e 6f 74 65 73 5b 32 5d 2c 20 64 75 72  se(notes[2], dur
1c90: 61 74 69 6f 6e 2c 20 75 6e 64 65 66 69 6e 65 64  ation, undefined
1ca0: 2c 20 76 65 6c 29 3b 0a 2b 0a 2b 20 20 20 20 6d  , vel);.+.+    m
1cb0: 65 6d 5b 22 73 74 61 62 5f 73 79 6e 74 68 34 22  em["stab_synth4"
1cc0: 5d 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b 52  ].triggerAttackR
1cd0: 65 6c 65 61 73 65 28 6e 6f 74 65 73 5b 30 5d 2c  elease(notes[0],
1ce0: 20 64 75 72 61 74 69 6f 6e 2c 20 75 6e 64 65 66   duration, undef
1cf0: 69 6e 65 64 2c 20 76 65 6c 29 3b 0a 2b 20 20 20  ined, vel);.+   
1d00: 20 6d 65 6d 5b 22 73 74 61 62 5f 73 79 6e 74 68   mem["stab_synth
1d10: 35 22 5d 2e 74 72 69 67 67 65 72 41 74 74 61 63  5"].triggerAttac
1d20: 6b 52 65 6c 65 61 73 65 28 6e 6f 74 65 73 5b 31  kRelease(notes[1
1d30: 5d 2c 20 64 75 72 61 74 69 6f 6e 2c 20 75 6e 64  ], duration, und
1d40: 65 66 69 6e 65 64 2c 20 76 65 6c 29 3b 0a 2b 20  efined, vel);.+ 
1d50: 20 20 20 6d 65 6d 5b 22 73 74 61 62 5f 73 79 6e     mem["stab_syn
1d60: 74 68 36 22 5d 2e 74 72 69 67 67 65 72 41 74 74  th6"].triggerAtt
1d70: 61 63 6b 52 65 6c 65 61 73 65 28 6e 6f 74 65 73  ackRelease(notes
1d80: 5b 32 5d 2c 20 64 75 72 61 74 69 6f 6e 2c 20 75  [2], duration, u
1d90: 6e 64 65 66 69 6e 65 64 2c 20 76 65 6c 29 3b 0a  ndefined, vel);.
1da0: 2b 7d 0a 2b 0a 2b 66 75 6e 63 74 69 6f 6e 20 6f  +}.+.+function o
1db0: 6e 63 65 28 29 20 7b 0a 2b 20 20 20 20 76 61 72  nce() {.+    var
1dc0: 20 70 72 3b 0a 2b 20 20 20 20 63 6f 6e 73 74 20   pr;.+    const 
1dd0: 73 20 3d 20 28 20 70 20 29 20 3d 3e 20 7b 0a 2b  s = ( p ) => {.+
1de0: 20 20 20 20 20 20 20 20 70 72 20 3d 20 70 3b 0a          pr = p;.
1df0: 2b 20 20 20 20 20 20 20 20 76 61 72 20 69 6d 67  +        var img
1e00: 3b 0a 2b 20 20 20 20 20 20 20 20 6c 65 74 20 78  ;.+        let x
1e10: 20 3d 20 31 30 30 3b 0a 2b 20 20 20 20 20 20 20   = 100;.+       
1e20: 20 6c 65 74 20 79 20 3d 20 31 30 30 3b 0a 2b 0a   let y = 100;.+.
1e30: 2b 20 20 20 20 20 20 20 20 70 2e 73 65 74 75 70  +        p.setup
1e40: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a   = function() {.
1e50: 2b 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  +            var
1e60: 20 78 20 3d 20 70 2e 63 72 65 61 74 65 43 61 6e   x = p.createCan
1e70: 76 61 73 28 37 30 30 2c 20 34 31 30 29 3b 0a 2b  vas(700, 410);.+
1e80: 20 20 20 20 20 20 20 20 20 20 20 20 78 2e 63 61              x.ca
1e90: 6e 76 61 73 2e 73 74 79 6c 65 2e 70 6f 73 69 74  nvas.style.posit
1ea0: 69 6f 6e 20 3d 20 22 61 62 73 6f 6c 75 74 65 22  ion = "absolute"
1eb0: 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 70  ;.+            p
1ec0: 2e 66 72 61 6d 65 52 61 74 65 28 33 30 29 3b 0a  .frameRate(30);.
1ed0: 2b 20 20 20 20 20 20 20 20 20 20 20 20 69 6d 67  +            img
1ee0: 20 3d 20 70 2e 6c 6f 61 64 49 6d 61 67 65 28 27   = p.loadImage('
1ef0: 2f 74 65 73 74 2e 70 6e 67 27 29 3b 0a 2b 20 20  /test.png');.+  
1f00: 20 20 20 20 20 20 7d 3b 0a 2b 0a 2b 20 20 20 20        };.+.+    
1f10: 20 20 20 20 70 2e 64 72 61 77 20 3d 20 66 75 6e      p.draw = fun
1f20: 63 74 69 6f 6e 28 29 20 7b 0a 2b 20 20 20 20 20  ction() {.+     
1f30: 20 20 20 20 20 20 20 76 61 72 20 65 20 3d 20 67         var e = g
1f40: 65 74 52 61 6e 64 6f 6d 49 6e 74 28 32 29 3b 0a  etRandomInt(2);.
1f50: 2b 20 20 20 20 20 20 20 20 20 20 20 20 70 2e 63  +            p.c
1f60: 6c 65 61 72 28 29 3b 0a 2b 20 20 20 20 20 20 20  lear();.+       
1f70: 20 20 20 20 20 69 66 20 28 65 20 3d 3d 20 30 29       if (e == 0)
1f80: 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20   {.+            
1f90: 20 20 20 20 2f 2f 20 20 20 70 2e 66 69 6c 6c 28      //   p.fill(
1fa0: 31 32 33 29 3b 0a 2b 20 20 20 20 20 20 20 20 20  123);.+         
1fb0: 20 20 20 20 20 20 20 2f 2f 20 20 70 2e 72 65 63         //  p.rec
1fc0: 74 28 78 2c 79 2c 35 30 2c 35 30 29 3b 0a 2b 20  t(x,y,50,50);.+ 
1fd0: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
1fe0: 65 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20  e {.+           
1ff0: 20 20 20 20 20 2f 2f 09 70 2e 69 6d 61 67 65 28       //.p.image(
2000: 69 6d 67 2c 20 30 2c 20 30 29 3b 0a 2b 20 20 20  img, 0, 0);.+   
2010: 20 20 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20           }.+    
2020: 20 20 20 20 7d 3b 0a 2b 20 20 20 20 7d 3b 0a 2b      };.+    };.+
2030: 0a 2b 20 20 20 20 6c 65 74 20 6d 79 70 35 20 3d  .+    let myp5 =
2040: 20 6e 65 77 20 70 35 28 73 2c 20 20 64 6f 63 75   new p5(s,  docu
2050: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
2060: 79 49 64 28 27 63 61 6e 76 61 73 2d 63 6f 6e 74  yId('canvas-cont
2070: 61 69 6e 65 72 27 29 29 3b 0a 2b 20 20 20 20 0a  ainer'));.+    .
2080: 2b 0a 2b 20 20 20 20 76 61 72 20 76 69 73 75 61  +.+    var visua
2090: 6c 69 7a 65 72 20 3d 20 69 6e 69 74 57 69 6e 61  lizer = initWina
20a0: 6d 70 28 22 5f 41 64 65 72 72 61 73 69 20 2d 20  mp("_Aderrasi - 
20b0: 57 61 6e 64 65 72 65 72 20 69 6e 20 43 75 72 76  Wanderer in Curv
20c0: 65 64 20 53 70 61 63 65 20 2d 20 6d 61 73 68 30  ed Space - mash0
20d0: 30 30 30 20 2d 20 66 61 63 6c 65 6d 70 74 20 6b  000 - faclempt k
20e0: 69 62 69 74 7a 69 6e 67 20 6d 65 73 68 75 67 67  ibitzing meshugg
20f0: 61 6e 61 20 73 63 68 6d 61 6c 74 7a 20 28 47 65  ana schmaltz (Ge
2100: 69 73 73 20 63 6f 6c 6f 72 20 6d 69 78 29 22 29  iss color mix)")
2110: 3b 0a 2b 0a 2b 20 20 20 20 72 65 6e 64 65 72 5f  ;.+.+    render_
2120: 6c 6f 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20  loop = function 
2130: 28 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 76 69  () {.+        vi
2140: 73 75 61 6c 69 7a 65 72 2e 72 65 6e 64 65 72 28  sualizer.render(
2150: 29 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 0a  );.+    }.+    .
2160: 2b 20 20 20 20 54 6f 6e 65 2e 4d 61 73 74 65 72  +    Tone.Master
2170: 2e 76 6f 6c 75 6d 65 2e 76 61 6c 75 65 20 3d 20  .volume.value = 
2180: 2d 33 30 3b 0a 2b 20 20 20 20 6d 65 6d 2e 6d 61  -30;.+    mem.ma
2190: 73 74 65 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e  ster = new Tone.
21a0: 43 68 61 6e 6e 65 6c 28 7b 63 68 61 6e 6e 65 6c  Channel({channel
21b0: 43 6f 75 6e 74 3a 20 32 2c 20 76 6f 6c 75 6d 65  Count: 2, volume
21c0: 3a 20 2d 31 30 7d 29 2e 63 68 61 69 6e 28 54 6f  : -10}).chain(To
21d0: 6e 65 2e 44 65 73 74 69 6e 61 74 69 6f 6e 29 3b  ne.Destination);
21e0: 0a 2b 0a 2b 20 20 20 20 2f 2f 20 4e 6f 69 73 65  .+.+    // Noise
21f0: 53 79 6e 74 68 28 29 3b 0a 2b 20 20 20 20 53 74  Synth();.+    St
2200: 61 62 28 29 3b 0a 2b 20 20 20 20 53 61 6d 70 6c  ab();.+    Sampl
2210: 65 28 22 6b 22 2c 20 30 2c 20 33 30 30 30 2c 20  e("k", 0, 3000, 
2220: 33 29 3b 0a 2b 20 20 20 20 53 61 6d 70 6c 65 28  3);.+    Sample(
2230: 22 68 22 2c 20 31 2c 20 37 30 30 30 2c 20 2d 31  "h", 1, 7000, -1
2240: 35 29 3b 0a 2b 20 20 20 20 53 61 6d 70 6c 65 28  5);.+    Sample(
2250: 22 73 6e 22 2c 32 2c 20 36 30 30 30 2c 20 2d 31  "sn",2, 6000, -1
2260: 35 29 3b 0a 2b 20 20 20 20 53 61 6d 70 6c 65 28  5);.+    Sample(
2270: 22 63 22 2c 20 33 2c 20 36 32 30 2c 20 32 29 3b  "c", 3, 620, 2);
2280: 0a 2b 20 20 20 20 53 61 6d 70 6c 65 28 22 6c 22  .+    Sample("l"
2290: 2c 20 34 2c 20 34 32 30 2c 20 2d 31 35 29 3b 0a  , 4, 420, -15);.
22a0: 2b 0a 2b 20 20 20 20 68 61 6e 64 6c 65 72 73 5b  +.+    handlers[
22b0: 22 31 22 5d 20 3d 20 66 75 6e 63 74 69 6f 6e 20  "1"] = function 
22c0: 28 76 61 6c 29 20 7b 0a 2b 20 20 20 20 20 20 20  (val) {.+       
22d0: 20 69 66 20 28 76 61 6c 20 3e 20 30 2e 35 29 20   if (val > 0.5) 
22e0: 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 6d  {.+            m
22f0: 65 6d 5b 22 73 74 61 72 74 5f 73 6e 61 72 65 22  em["start_snare"
2300: 5d 20 3d 20 74 72 75 65 3b 0a 2b 20 20 20 20 20  ] = true;.+     
2310: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2b 20 20 20     } else {.+   
2320: 20 20 20 20 20 20 20 20 20 6d 65 6d 5b 22 73 74           mem["st
2330: 61 72 74 5f 73 6e 61 72 65 22 5d 20 3d 20 66 61  art_snare"] = fa
2340: 6c 73 65 3b 0a 2b 20 20 20 20 20 20 20 20 7d 0a  lse;.+        }.
2350: 2b 20 20 20 20 20 20 20 20 6d 65 6d 5b 22 73 74  +        mem["st
2360: 61 62 5f 66 69 6c 74 65 72 22 5d 2e 51 2e 76 61  ab_filter"].Q.va
2370: 6c 75 65 20 3d 20 4d 61 74 68 2e 72 6f 75 6e 64  lue = Math.round
2380: 28 76 61 6c 20 2a 20 35 29 3b 0a 2b 20 20 20 20  (val * 5);.+    
2390: 7d 0a 2b 0a 2b 20 20 20 20 64 69 61 6c 73 5b 31  }.+.+    dials[1
23a0: 5d 5b 22 63 65 6c 6c 22 5d 2e 6f 6e 43 68 61 6e  ]["cell"].onChan
23b0: 67 65 28 66 75 6e 63 74 69 6f 6e 20 28 65 29 20  ge(function (e) 
23c0: 7b 0a 2b 20 20 20 20 20 20 20 20 76 61 72 20 76  {.+        var v
23d0: 61 6c 20 3d 20 70 61 72 73 65 46 6c 6f 61 74 28  al = parseFloat(
23e0: 65 5b 22 64 61 74 61 22 5d 2e 76 61 6c 75 65 29  e["data"].value)
23f0: 3b 0a 2b 20 20 20 20 20 20 20 20 68 61 6e 64 6c  ;.+        handl
2400: 65 72 73 5b 22 31 22 5d 28 76 61 6c 29 3b 0a 2b  ers["1"](val);.+
2410: 20 20 20 20 7d 29 0a 2b 0a 2b 7d 0a 2b 0a 2b 66      }).+.+}.+.+f
2420: 75 6e 63 74 69 6f 6e 20 74 77 65 61 6b 20 28 29  unction tweak ()
2430: 20 7b 0a 2b 20 20 20 20 6d 65 6d 2e 6b 31 20 3d   {.+    mem.k1 =
2440: 20 6b 6e 6f 62 28 7b 72 61 6d 70 20 3a 20 5b 30   knob({ramp : [0
2450: 2e 35 32 35 2c 20 30 2e 38 2c 20 30 2e 34 2c 20  .525, 0.8, 0.4, 
2460: 31 2c 20 30 2e 32 35 2c 20 30 2e 37 35 2c 20 31  1, 0.25, 0.75, 1
2470: 2c 20 30 2e 32 35 2c 20 30 2e 31 5d 2c 20 22 6e  , 0.25, 0.1], "n
2480: 75 6d 62 65 72 22 3a 20 64 69 61 6c 73 5b 32 5d  umber": dials[2]
2490: 5b 22 63 65 6c 6c 22 5d 20 7d 29 3b 0a 2b 20 20  ["cell"] });.+  
24a0: 20 20 61 6c 77 61 79 73 20 3d 20 66 75 6e 63 74    always = funct
24b0: 69 6f 6e 20 28 29 20 7b 0a 2b 20 20 20 20 20 20  ion () {.+      
24c0: 20 20 6d 65 6d 5b 22 73 74 61 62 5f 66 69 6c 74    mem["stab_filt
24d0: 65 72 22 5d 2e 66 72 65 71 75 65 6e 63 79 2e 76  er"].frequency.v
24e0: 61 6c 75 65 20 3d 20 6d 65 6d 2e 6b 31 2e 6d 6f  alue = mem.k1.mo
24f0: 76 65 28 29 20 2a 20 31 30 30 30 30 3b 0a 2b 20  ve() * 10000;.+ 
2500: 20 20 20 7d 0a 2b 7d 0a 2b 0a 2b 69 66 20 28 62     }.+}.+.+if (b
2510: 61 72 73 20 3c 3d 20 33 20 29 20 7b 0a 2b 20 20  ars <= 3 ) {.+  
2520: 20 20 74 72 61 6e 73 69 74 69 6f 6e 20 3d 20 6f    transition = o
2530: 6e 63 65 3b 0a 2b 7d 20 65 6c 73 65 20 7b 0a 2b  nce;.+} else {.+
2540: 20 20 20 20 74 72 61 6e 73 69 74 69 6f 6e 20 3d      transition =
2550: 20 74 77 65 61 6b 3b 0a 2b 7d 0a 2b 0a 2b 69 66   tweak;.+}.+.+if
2560: 20 28 69 73 48 69 74 29 20 7b 0a 2b 20 20 20 20   (isHit) {.+    
2570: 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20  if (track_no == 
2580: 31 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 69 66  1) {.+        if
2590: 20 28 62 61 72 73 20 3e 20 30 20 29 20 7b 0a 2b   (bars > 0 ) {.+
25a0: 20 20 20 20 20 20 20 20 20 20 20 20 70 28 30 29              p(0)
25b0: 3b 0a 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20 20  ;.+        }.+  
25c0: 20 20 7d 0a 2b 20 20 20 20 69 66 20 28 74 72 61    }.+    if (tra
25d0: 63 6b 5f 6e 6f 20 3d 3d 20 32 29 20 7b 0a 2b 20  ck_no == 2) {.+ 
25e0: 20 20 20 20 20 20 20 69 66 20 28 62 61 72 73 20         if (bars 
25f0: 3e 20 38 20 29 20 7b 0a 2b 20 20 20 20 20 20 20  > 8 ) {.+       
2600: 20 20 20 20 20 70 28 31 29 3b 0a 2b 20 20 20 20       p(1);.+    
2610: 20 20 20 20 7d 09 0a 2b 20 20 20 20 7d 0a 2b 20      }..+    }.+ 
2620: 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20     if (track_no 
2630: 3d 3d 20 33 29 20 7b 0a 2b 20 20 20 20 20 20 20  == 3) {.+       
2640: 20 69 66 20 28 62 61 72 73 20 3e 20 34 20 29 20   if (bars > 4 ) 
2650: 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 2f  {.+            /
2660: 2f 20 73 28 29 3b 0a 2b 20 20 20 20 20 20 20 20  / s();.+        
2670: 7d 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 62  }.+        if (b
2680: 61 72 73 20 3d 3d 20 36 29 20 7b 0a 2b 20 20 20  ars == 6) {.+   
2690: 20 20 20 20 20 20 20 20 20 74 72 61 6e 73 69 74           transit
26a0: 69 6f 6e 28 29 3b 0a 2b 20 20 20 20 20 20 20 20  ion();.+        
26b0: 7d 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 69 66  }.+    }.+    if
26c0: 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 34 29   (track_no == 4)
26d0: 20 7b 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28   {.+        if (
26e0: 6d 65 6d 5b 22 73 74 61 72 74 5f 73 6e 61 72 65  mem["start_snare
26f0: 22 5d 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 20  "]) {.+         
2700: 20 20 20 70 28 32 29 3b 0a 2b 20 20 20 20 20 20     p(2);.+      
2710: 20 20 7d 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20    }.+    }.+    
2720: 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20  if (track_no == 
2730: 35 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 69 66  5) {.+        if
2740: 20 28 62 61 72 73 20 3e 20 31 32 29 20 7b 0a 2b   (bars > 12) {.+
2750: 20 20 20 20 20 20 20 20 20 20 20 20 70 28 33 29              p(3)
2760: 0a 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20 20 20  .+        }.+   
2770: 20 7d 0a 2b 20 20 20 20 69 66 20 28 74 72 61 63   }.+    if (trac
2780: 6b 5f 6e 6f 20 3d 3d 20 36 29 20 7b 0a 2b 20 20  k_no == 6) {.+  
2790: 20 20 20 20 20 2f 2f 20 70 28 34 2c 20 22 43 33       // p(4, "C3
27a0: 22 29 0a 2b 20 20 20 20 7d 0a 2b 7d 0a 2b 0a 2b  ").+    }.+}.+.+
27b0: 69 66 20 28 63 6f 75 6e 74 20 3d 3d 20 28 6d 65  if (count == (me
27c0: 6d 5b 22 6b 5f 6c 61 73 74 22 5d 20 2b 20 33 29  m["k_last"] + 3)
27d0: 29 20 7b 0a 2b 20 20 20 20 70 6e 28 22 68 22 29  ) {.+    pn("h")
27e0: 3b 0a 2b 7d 0a 2b 0a 0a 63 6f 6d 6d 69 74 20 38  ;.+}.+..commit 8
27f0: 35 65 31 66 37 39 32 32 38 66 61 31 65 63 64 63  5e1f79228fa1ecdc
2800: 35 66 35 37 66 63 65 65 37 30 66 33 31 63 38 62  5f57fcee70f31c8b
2810: 65 65 30 61 38 39 66 0a 41 75 74 68 6f 72 3a 20  ee0a89f.Author: 
2820: 58 79 7a 7a 79 20 41 70 70 73 20 3c 78 79 7a 7a  Xyzzy Apps <xyzz
2830: 79 61 70 70 73 40 67 6d 61 69 6c 2e 63 6f 6d 3e  yapps@gmail.com>
2840: 0a 44 61 74 65 3a 20 20 20 54 75 65 20 4e 6f 76  .Date:   Tue Nov
2850: 20 32 20 32 32 3a 30 39 3a 32 36 20 32 30 32 31   2 22:09:26 2021
2860: 20 2b 30 30 30 30 0a 0a 20 20 20 20 2f 55 73 65   +0000..    /Use
2870: 72 73 2f 64 65 76 2f 70 72 6f 6a 2f 70 72 6f 64  rs/dev/proj/prod
2880: 75 63 74 69 6f 6e 2f 62 69 74 72 68 79 74 68 6d  uction/bitrhythm
2890: 2f 73 6f 6e 67 2f 34 39 31 33 20 6d 6f 64 69 66  /song/4913 modif
28a0: 69 65 64 0a 0a 64 69 66 66 20 2d 2d 67 69 74 20  ied..diff --git 
28b0: 61 2f 2e 67 69 74 69 67 6e 6f 72 65 20 62 2f 2e  a/.gitignore b/.
28c0: 67 69 74 69 67 6e 6f 72 65 0a 6e 65 77 20 66 69  gitignore.new fi
28d0: 6c 65 20 6d 6f 64 65 20 31 30 30 36 34 34 0a 69  le mode 100644.i
28e0: 6e 64 65 78 20 30 30 30 30 30 30 30 2e 2e 38 39  ndex 0000000..89
28f0: 34 33 66 62 34 0a 2d 2d 2d 20 2f 64 65 76 2f 6e  43fb4.--- /dev/n
2900: 75 6c 6c 0a 2b 2b 2b 20 62 2f 2e 67 69 74 69 67  ull.+++ b/.gitig
2910: 6e 6f 72 65 0a 40 40 20 2d 30 2c 30 20 2b 31 2c  nore.@@ -0,0 +1,
2920: 32 20 40 40 0a 2b 74 61 67 73 0a 2b 64 69 66 66  2 @@.+tags.+diff
2930: 2e 74 78 74 0a 64 69 66 66 20 2d 2d 67 69 74 20  .txt.diff --git 
2940: 61 2f 66 69 72 73 74 2e 6a 73 20 62 2f 66 69 72  a/first.js b/fir
2950: 73 74 2e 6a 73 0a 69 6e 64 65 78 20 33 38 37 30  st.js.index 3870
2960: 31 35 36 2e 2e 63 62 32 33 31 66 66 20 31 30 30  156..cb231ff 100
2970: 36 34 34 0a 2d 2d 2d 20 61 2f 66 69 72 73 74 2e  644.--- a/first.
2980: 6a 73 0a 2b 2b 2b 20 62 2f 66 69 72 73 74 2e 6a  js.+++ b/first.j
2990: 73 0a 40 40 20 2d 31 30 2c 31 31 33 20 2b 31 30  s.@@ -10,113 +10
29a0: 2c 31 35 34 20 40 40 20 6d 61 69 6e 20 3d 20 5b  ,154 @@ main = [
29b0: 0a 20 20 20 20 20 63 65 6c 6c 78 28 22 70 20 30  .     cellx("p 0
29c0: 30 30 30 20 78 30 30 30 20 30 30 30 30 20 78 30  000 x000 0000 x0
29d0: 30 30 20 22 29 2c 0a 20 20 20 20 20 63 65 6c 6c  00 "),.     cell
29e0: 78 28 22 70 20 78 30 78 30 20 78 30 78 30 20 78  x("p x0x0 x0x0 x
29f0: 30 78 30 20 78 30 78 30 20 22 29 2c 0a 20 20 20  0x0 x0x0 "),.   
2a00: 20 20 63 65 6c 6c 78 28 22 70 20 78 30 30 30 20    cellx("p x000 
2a10: 30 30 30 30 20 30 30 30 30 20 30 30 30 30 20 22  0000 0000 0000 "
2a20: 29 2c 0a 2d 20 20 20 20 63 65 6c 6c 78 28 22 70  ),.-    cellx("p
2a30: 20 78 5b 5e 31 32 30 5d 30 30 30 20 30 30 30 30   x[^120]000 0000
2a40: 20 30 30 78 5b 5e 31 32 34 5d 30 20 30 30 78 5b   00x[^124]0 00x[
2a50: 5e 31 31 36 5d 30 20 22 29 2c 20 2f 2f 20 6d 65  ^116]0 "), // me
2a60: 6c 6f 64 79 0a 2d 0a 2b 20 20 20 20 63 65 6c 6c  lody.-.+    cell
2a70: 78 28 22 70 20 30 30 30 30 20 30 30 30 30 20 30  x("p 0000 0000 0
2a80: 30 30 30 20 30 30 30 30 22 29 2c 0a 2b 09 63 65  000 0000"),.+.ce
2a90: 6c 6c 78 28 22 70 20 30 30 30 30 20 30 30 30 30  llx("p 0000 0000
2aa0: 20 30 30 30 30 20 30 30 30 30 22 29 2c 0a 20 5d   0000 0000"),. ]
2ab0: 0a 20 0a 20 62 61 73 73 20 3d 20 5b 0a 2d 20 20  . . bass = [.-  
2ac0: 20 20 63 65 6c 6c 78 28 22 70 20 78 5b 32 3b 5e    cellx("p x[2;^
2ad0: 43 32 3b 2b 30 2e 30 31 5d 30 30 30 20 30 30 30  C2;+0.01]000 000
2ae0: 30 20 78 5b 30 2e 31 5d 30 78 5b 31 5d 30 20 30  0 x[0.1]0x[1]0 0
2af0: 30 78 5b 31 5d 30 20 22 29 2c 0a 2b 20 20 20 09  0x[1]0 "),.+   .
2b00: 63 65 6c 6c 78 28 22 70 20 78 5b 32 3b 5e 43 32  cellx("p x[2;^C2
2b10: 3b 2b 30 2e 30 31 5d 30 30 30 20 30 30 30 30 20  ;+0.01]000 0000 
2b20: 78 5b 30 2e 31 5d 30 78 5b 31 5d 30 20 30 30 78  x[0.1]0x[1]0 00x
2b30: 5b 31 5d 30 20 22 29 2c 0a 20 20 20 20 20 63 65  [1]0 "),.     ce
2b40: 6c 6c 78 28 22 70 20 30 30 30 30 20 78 30 30 30  llx("p 0000 x000
2b50: 20 30 30 30 30 20 78 30 30 30 20 22 29 2c 0a 20   0000 x000 "),. 
2b60: 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78 30 78      cellx("p x0x
2b70: 30 20 78 30 78 30 20 78 30 78 30 20 78 30 78 30  0 x0x0 x0x0 x0x0
2b80: 20 22 29 2c 0a 20 20 20 20 20 63 65 6c 6c 78 28   "),.     cellx(
2b90: 22 70 20 78 30 30 30 20 30 30 30 30 20 30 30 30  "p x000 0000 000
2ba0: 30 20 30 30 30 30 20 22 29 2c 0a 20 20 20 20 20  0 0000 "),.     
2bb0: 63 65 6c 6c 78 28 22 70 20 78 5b 5e 42 32 5d 78  cellx("p x[^B2]x
2bc0: 2e 30 30 20 78 5b 5e 42 32 5d 78 2e 78 5b 5e 42  .00 x[^B2]x.x[^B
2bd0: 32 5d 78 2e 20 78 5b 5e 42 32 5d 78 2e 78 5b 5e  2]x. x[^B2]x.x[^
2be0: 42 32 5d 78 2e 78 5b 5e 42 32 5d 78 2e 30 20 22  B2]x.x[^B2]x.0 "
2bf0: 29 2c 0a 2d 20 20 20 20 63 65 6c 6c 78 28 22 70  ),.-    cellx("p
2c00: 20 78 5b 5e 31 32 30 5d 30 30 30 20 30 30 30 30   x[^120]000 0000
2c10: 20 30 30 78 5b 5e 31 32 34 5d 30 20 30 30 78 5b   00x[^124]0 00x[
2c20: 5e 31 31 36 5d 30 20 22 29 2c 20 2f 2f 20 6d 65  ^116]0 "), // me
2c30: 6c 6f 64 79 0a 2d 09 63 65 6c 6c 78 28 22 70 20  lody.-.cellx("p 
2c40: 30 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30  0000 0000 0000 0
2c50: 30 30 30 22 29 0a 2b 20 20 20 20 63 65 6c 6c 78  000").+    cellx
2c60: 28 22 70 20 30 30 78 5b 5e 44 33 5d 30 20 30 30  ("p 00x[^D3]0 00
2c70: 30 78 5b 5e 41 32 5d 20 30 30 78 5b 5e 41 32 5d  0x[^A2] 00x[^A2]
2c80: 78 5b 5e 41 32 5d 20 30 78 5b 5e 41 32 5d 30 78  x[^A2] 0x[^A2]0x
2c90: 5b 5e 41 32 5d 20 22 29 2c 20 0a 20 5d 0a 20 0a  [^A2] "), . ]. .
2ca0: 2d 66 69 6c 6c 20 3d 20 20 63 65 6c 6c 78 28 22  -fill =  cellx("
2cb0: 70 20 78 30 30 30 20 78 30 30 30 20 78 30 78 78  p x000 x000 x0xx
2cc0: 20 30 30 78 30 22 29 0a 2d 65 6d 70 74 79 20 3d   00x0").-empty =
2cd0: 20 63 65 6c 6c 78 28 22 70 20 30 30 30 30 20 30   cellx("p 0000 0
2ce0: 30 30 30 20 30 30 30 30 20 30 30 30 30 22 29 0a  000 0000 0000").
2cf0: 2b 65 6e 64 20 3d 20 5b 0a 2b 20 09 63 65 6c 6c  +end = [.+ .cell
2d00: 78 28 22 70 20 78 5b 32 3b 5e 43 32 3b 2b 30 2e  x("p x[2;^C2;+0.
2d10: 30 31 5d 30 30 30 20 30 30 30 30 20 78 5b 30 2e  01]000 0000 x[0.
2d20: 31 5d 30 78 5b 31 5d 30 20 30 30 78 5b 31 5d 30  1]0x[1]0 00x[1]0
2d30: 20 22 29 2c 0a 2b 20 20 20 20 63 65 6c 6c 78 28   "),.+    cellx(
2d40: 22 70 20 30 30 30 30 20 78 30 30 30 20 30 30 30  "p 0000 x000 000
2d50: 30 20 78 30 30 30 20 22 29 2c 0a 2b 20 20 20 20  0 x000 "),.+    
2d60: 63 65 6c 6c 78 28 22 70 20 78 30 78 30 20 78 30  cellx("p x0x0 x0
2d70: 78 30 20 78 30 78 30 20 78 30 78 30 20 22 29 2c  x0 x0x0 x0x0 "),
2d80: 0a 2b 5d 0a 20 0a 2b 73 6f 6c 6f 20 3d 20 5b 0a  .+]. .+solo = [.
2d90: 2b 09 63 65 6c 6c 78 28 22 70 20 30 30 30 30 20  +.cellx("p 0000 
2da0: 30 30 30 30 20 30 30 30 30 20 30 30 30 30 22 29  0000 0000 0000")
2db0: 2c 0a 2b 20 20 20 20 63 65 6c 6c 78 28 22 70 20  ,.+    cellx("p 
2dc0: 30 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30  0000 0000 0000 0
2dd0: 30 30 30 22 29 2c 0a 2b 20 20 20 20 63 65 6c 6c  000"),.+    cell
2de0: 78 28 22 70 20 30 30 30 30 20 30 30 30 30 20 30  x("p 0000 0000 0
2df0: 30 30 30 20 30 30 30 30 22 29 2c 0a 2b 5d 0a 20  000 0000"),.+]. 
2e00: 0a 2b 66 69 6e 20 3d 20 73 6f 6c 6f 3b 0a 20 0a  .+fin = solo;. .
2e10: 2b 65 6e 64 67 61 6d 65 20 3d 20 5b 0a 2b 20 20  +endgame = [.+  
2e20: 20 20 63 65 6c 6c 78 28 22 70 20 78 5b 32 3b 5e    cellx("p x[2;^
2e30: 43 32 3b 2b 30 2e 30 31 5d 30 30 30 20 30 30 30  C2;+0.01]000 000
2e40: 30 20 78 5b 30 2e 31 5d 30 78 5b 31 5d 30 20 30  0 x[0.1]0x[1]0 0
2e50: 30 78 5b 31 5d 30 20 22 29 2c 0a 2b 20 20 20 20  0x[1]0 "),.+    
2e60: 63 65 6c 6c 78 28 22 70 20 30 30 30 30 20 78 30  cellx("p 0000 x0
2e70: 30 30 20 30 30 30 30 20 78 30 30 30 20 22 29 2c  00 0000 x000 "),
2e80: 0a 2b 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78  .+    cellx("p x
2e90: 30 78 30 20 78 30 78 30 20 78 30 78 30 20 78 30  0x0 x0x0 x0x0 x0
2ea0: 78 30 20 22 29 2c 0a 2b 20 20 20 20 63 65 6c 6c  x0 "),.+    cell
2eb0: 78 28 22 70 20 78 30 30 30 20 30 30 30 30 20 30  x("p x000 0000 0
2ec0: 30 30 30 20 30 30 30 30 20 22 29 2c 0a 2b 20 20  000 0000 "),.+  
2ed0: 20 20 63 65 6c 6c 78 28 22 70 20 78 5b 5e 42 32    cellx("p x[^B2
2ee0: 5d 78 2e 30 30 20 78 5b 5e 42 32 5d 78 2e 78 5b  ]x.00 x[^B2]x.x[
2ef0: 5e 42 32 5d 78 2e 20 78 5b 5e 42 32 5d 78 2e 78  ^B2]x. x[^B2]x.x
2f00: 5b 5e 42 32 5d 78 2e 78 5b 5e 42 32 5d 78 2e 30  [^B2]x.x[^B2]x.0
2f10: 20 22 29 2c 0a 2b 5d 0a 20 0a 2d 66 75 6e 63 74   "),.+]. .-funct
2f20: 69 6f 6e 20 53 61 6d 70 6c 65 28 6e 61 6d 65 2c  ion Sample(name,
2f30: 20 6e 6f 2c 20 66 69 6c 74 65 72 2c 20 76 6f 6c   no, filter, vol
2f40: 75 6d 65 29 20 7b 0a 2d 20 20 20 20 6e 61 6d 65  ume) {.-    name
2f50: 20 3d 20 6e 61 6d 65 0a 2d 20 20 20 20 66 69 6c   = name.-    fil
2f60: 74 65 72 20 3d 20 66 69 6c 74 65 72 20 7c 7c 20  ter = filter || 
2f70: 32 30 30 30 30 0a 2d 20 20 20 20 76 6f 6c 75 6d  20000.-    volum
2f80: 65 20 3d 20 76 6f 6c 75 6d 65 20 7c 7c 20 30 0a  e = volume || 0.
2f90: 2d 20 20 20 20 2f 2f 6d 65 6d 5b 6e 61 6d 65 20  -    //mem[name 
2fa0: 2b 20 22 5f 66 69 6c 74 65 72 22 5d 20 3d 20 6e  + "_filter"] = n
2fb0: 65 77 20 54 6f 6e 65 2e 46 69 6c 74 65 72 28 66  ew Tone.Filter(f
2fc0: 69 6c 74 65 72 2c 20 27 6c 6f 77 70 61 73 73 27  ilter, 'lowpass'
2fd0: 2c 20 2d 39 36 29 3b 0a 2d 20 20 20 20 6d 65 6d  , -96);.-    mem
2fe0: 5b 6e 61 6d 65 20 2b 20 22 5f 63 68 61 6e 6e 65  [name + "_channe
2ff0: 6c 22 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 43  l"] = new Tone.C
3000: 68 61 6e 6e 65 6c 28 7b 63 68 61 6e 6e 65 6c 43  hannel({channelC
3010: 6f 75 6e 74 3a 20 32 2c 20 76 6f 6c 75 6d 65 3a  ount: 2, volume:
3020: 20 76 6f 6c 75 6d 65 7d 29 2e 63 68 61 69 6e 28   volume}).chain(
3030: 6d 65 6d 2e 6d 61 73 74 65 72 29 0a 2d 20 20 20  mem.master).-   
3040: 20 73 61 6d 70 6c 65 73 5b 6e 6f 5d 2e 63 6f 6e   samples[no].con
3050: 6e 65 63 74 28 6d 65 6d 5b 6e 61 6d 65 20 2b 20  nect(mem[name + 
3060: 22 5f 63 68 61 6e 6e 65 6c 22 5d 29 3b 0a 2d 7d  "_channel"]);.-}
3070: 0a 20 0a 2d 66 75 6e 63 74 69 6f 6e 20 70 28 73  . .-function p(s
3080: 2c 20 76 6f 6c 2c 20 20 6e 6f 74 65 2c 20 20 6c  , vol,  note,  l
3090: 65 6e 2c 20 64 65 6c 61 79 29 20 7b 0a 2d 20 20  en, delay) {.-  
30a0: 20 20 6e 6f 74 65 20 3d 20 6e 6f 74 65 20 7c 7c    note = note ||
30b0: 20 22 43 33 22 0a 2d 20 20 20 20 6c 65 6e 20 3d   "C3".-    len =
30c0: 20 6c 65 6e 20 7c 7c 20 22 31 36 6e 22 0a 2d 20   len || "16n".- 
30d0: 20 20 20 76 6f 6c 20 3d 20 76 6f 6c 20 7c 7c 20     vol = vol || 
30e0: 31 0a 2d 20 20 20 20 64 65 6c 61 79 20 3d 20 64  1.-    delay = d
30f0: 65 6c 61 79 20 7c 7c 20 22 2b 30 22 3b 0a 2d 20  elay || "+0";.- 
3100: 20 20 20 73 61 6d 70 6c 65 73 5b 73 5d 2e 74 72     samples[s].tr
3110: 69 67 67 65 72 41 74 74 61 63 6b 52 65 6c 65 61  iggerAttackRelea
3120: 73 65 28 6e 6f 74 65 2c 20 6c 65 6e 2c 20 64 65  se(note, len, de
3130: 6c 61 79 2c 20 76 6f 6c 29 3b 0a 2d 7d 0a 20 0a  lay, vol);.-}. .
3140: 2d 66 75 6e 63 74 69 6f 6e 20 6f 6e 63 65 20 28  -function once (
3150: 29 20 7b 0a 20 0a 2d 20 20 20 20 76 61 72 20 70  ) {. .-    var p
3160: 72 3b 0a 2d 20 20 20 20 63 6f 6e 73 74 20 73 20  r;.-    const s 
3170: 3d 20 28 20 70 20 29 20 3d 3e 20 7b 0a 2d 20 20  = ( p ) => {.-  
3180: 20 20 20 20 20 20 70 72 20 3d 20 70 3b 0a 2d 20        pr = p;.- 
3190: 20 20 20 20 20 20 20 76 61 72 20 69 6d 67 3b 0a         var img;.
31a0: 2b 65 6d 70 74 79 20 3d 20 63 65 6c 6c 78 28 22  +empty = cellx("
31b0: 70 20 30 30 30 30 20 30 30 30 30 20 30 30 30 30  p 0000 0000 0000
31c0: 20 30 30 30 30 22 29 0a 2b 0a 2b 0a 2b 66 75 6e   0000").+.+.+fun
31d0: 63 74 69 6f 6e 20 6f 6e 63 65 20 28 29 20 7b 0a  ction once () {.
31e0: 2b 20 0a 2b 20 20 20 20 0a 2b 20 20 20 20 20 20  + .+    .+      
31f0: 20 20 63 6f 6e 73 74 20 73 65 74 75 70 20 3d 20    const setup = 
3200: 28 20 69 6e 73 74 61 6e 63 65 20 29 20 3d 3e 20  ( instance ) => 
3210: 7b 0a 2b 20 20 20 20 20 20 20 20 76 61 72 20 69  {.+        var i
3220: 6e 74 72 6f 20 3d 20 5b 5d 0a 2b 20 20 20 20 20  ntro = [].+     
3230: 20 20 20 76 61 72 20 6d 61 69 6e 20 3d 20 5b 5d     var main = []
3240: 0a 2b 20 20 20 20 20 20 20 20 76 61 72 20 62 61  .+        var ba
3250: 73 73 20 3d 20 6d 61 69 6e 0a 2b 20 20 20 20 20  ss = main.+     
3260: 20 20 20 76 61 72 20 73 6f 6c 6f 20 3d 20 62 61     var solo = ba
3270: 73 73 0a 2b 20 20 20 20 20 20 20 20 76 61 72 20  ss.+        var 
3280: 65 6e 64 20 3d 20 5b 5d 20 0a 2b 20 20 20 20 20  end = [] .+     
3290: 20 20 20 76 61 72 20 63 6f 75 6e 74 20 3d 20 30     var count = 0
32a0: 3b 0a 2b 20 20 20 20 20 20 20 20 76 61 72 20 6f  ;.+        var o
32b0: 6c 64 5f 73 63 65 6e 65 20 3d 20 22 22 3b 0a 2b  ld_scene = "";.+
32c0: 20 20 20 20 20 20 20 20 0a 2b 20 20 20 20 20 20          .+      
32d0: 20 20 0a 20 0a 2d 20 20 20 20 20 20 20 20 6c 65    . .-        le
32e0: 74 20 78 20 3d 20 31 30 30 3b 20 0a 2b 20 20 20  t x = 100; .+   
32f0: 20 20 20 20 20 6c 65 74 20 78 20 3d 20 31 30 30       let x = 100
3300: 3b 0a 20 20 20 20 20 20 20 20 20 6c 65 74 20 79  ;.         let y
3310: 20 3d 20 31 30 30 3b 0a 20 0a 2d 20 20 20 20 20   = 100;. .-     
3320: 20 20 20 70 2e 73 65 74 75 70 20 3d 20 66 75 6e     p.setup = fun
3330: 63 74 69 6f 6e 28 29 20 7b 0a 2d 20 20 20 20 20  ction() {.-     
3340: 20 20 20 20 20 20 20 76 61 72 20 78 20 3d 20 70         var x = p
3350: 2e 63 72 65 61 74 65 43 61 6e 76 61 73 28 37 30  .createCanvas(70
3360: 30 2c 20 34 31 30 29 3b 0a 2b 20 20 20 20 20 20  0, 410);.+      
3370: 20 20 69 6e 73 74 61 6e 63 65 2e 73 65 74 75 70    instance.setup
3380: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a   = function() {.
3390: 2b 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  +            var
33a0: 20 78 20 3d 20 69 6e 73 74 61 6e 63 65 2e 63 72   x = instance.cr
33b0: 65 61 74 65 43 61 6e 76 61 73 28 37 30 30 2c 20  eateCanvas(700, 
33c0: 34 31 30 29 3b 0a 20 20 20 20 20 20 20 20 20 20  410);.          
33d0: 20 20 20 78 2e 63 61 6e 76 61 73 2e 73 74 79 6c     x.canvas.styl
33e0: 65 2e 70 6f 73 69 74 69 6f 6e 20 3d 20 22 61 62  e.position = "ab
33f0: 73 6f 6c 75 74 65 22 3b 0a 2d 20 20 20 20 20 20  solute";.-      
3400: 20 20 20 20 20 20 70 2e 66 72 61 6d 65 52 61 74        p.frameRat
3410: 65 28 32 29 3b 0a 2d 20 20 20 20 20 20 20 20 20  e(2);.-         
3420: 20 20 20 69 6d 67 20 3d 20 70 2e 6c 6f 61 64 49     img = p.loadI
3430: 6d 61 67 65 28 27 2f 74 65 73 74 33 2e 70 6e 67  mage('/test3.png
3440: 27 29 3b 0a 2d 20 20 20 20 20 20 20 20 20 20 20  ');.-           
3450: 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 69 6d 67   console.log(img
3460: 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20  );.+            
3470: 69 6e 73 74 61 6e 63 65 2e 66 72 61 6d 65 52 61  instance.frameRa
3480: 74 65 28 32 29 3b 0a 2b 20 20 20 20 20 20 20 20  te(2);.+        
3490: 20 20 20 20 69 6e 74 72 6f 2e 70 75 73 68 28 69      intro.push(i
34a0: 6e 73 74 61 6e 63 65 2e 6c 6f 61 64 49 6d 61 67  nstance.loadImag
34b0: 65 28 27 2f 63 6c 6f 73 65 64 2f 69 6e 74 72 6f  e('/closed/intro
34c0: 2f 31 2e 70 6e 67 27 29 29 3b 0a 2b 20 20 20 20  /1.png'));.+    
34d0: 20 20 20 20 20 20 20 20 69 6e 74 72 6f 2e 70 75          intro.pu
34e0: 73 68 28 69 6e 73 74 61 6e 63 65 2e 6c 6f 61 64  sh(instance.load
34f0: 49 6d 61 67 65 28 27 2f 63 6c 6f 73 65 64 2f 69  Image('/closed/i
3500: 6e 74 72 6f 2f 32 2e 70 6e 67 27 29 29 3b 0a 2b  ntro/2.png'));.+
3510: 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 69 6e              main
3520: 2e 70 75 73 68 28 69 6e 73 74 61 6e 63 65 2e 6c  .push(instance.l
3530: 6f 61 64 49 6d 61 67 65 28 27 2f 63 6c 6f 73 65  oadImage('/close
3540: 64 2f 6d 61 69 6e 2f 31 2e 70 6e 67 27 29 29 3b  d/main/1.png'));
3550: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 6d 61  .+            ma
3560: 69 6e 2e 70 75 73 68 28 69 6e 73 74 61 6e 63 65  in.push(instance
3570: 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f 63 6c 6f  .loadImage('/clo
3580: 73 65 64 2f 6d 61 69 6e 2f 32 2e 70 6e 67 27 29  sed/main/2.png')
3590: 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20  );.+            
35a0: 6d 61 69 6e 2e 70 75 73 68 28 69 6e 73 74 61 6e  main.push(instan
35b0: 63 65 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f 63  ce.loadImage('/c
35c0: 6c 6f 73 65 64 2f 6d 61 69 6e 2f 33 2e 70 6e 67  losed/main/3.png
35d0: 27 29 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20  '));.+          
35e0: 20 20 65 6e 64 2e 70 75 73 68 28 69 6e 73 74 61    end.push(insta
35f0: 6e 63 65 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f  nce.loadImage('/
3600: 63 6c 6f 73 65 64 2f 65 6e 64 2f 31 2e 70 6e 67  closed/end/1.png
3610: 27 29 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20  '));.+          
3620: 20 20 65 6e 64 2e 70 75 73 68 28 69 6e 73 74 61    end.push(insta
3630: 6e 63 65 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f  nce.loadImage('/
3640: 63 6c 6f 73 65 64 2f 65 6e 64 2f 32 2e 70 6e 67  closed/end/2.png
3650: 27 29 29 3b 0a 20 20 20 20 20 20 20 20 20 7d 3b  '));.         };
3660: 0a 20 0a 2d 20 20 20 20 20 20 20 20 70 2e 64 72  . .-        p.dr
3670: 61 77 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20  aw = function() 
3680: 7b 0a 2d 20 20 20 20 20 20 20 20 20 20 20 20 76  {.-            v
3690: 61 72 20 65 20 3d 20 67 65 74 52 61 6e 64 6f 6d  ar e = getRandom
36a0: 49 6e 74 28 32 29 3b 0a 2d 20 20 20 20 20 20 20  Int(2);.-       
36b0: 20 20 20 20 20 70 2e 63 6c 65 61 72 28 29 3b 0a       p.clear();.
36c0: 2d 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  -            if 
36d0: 28 65 20 3d 3d 20 30 29 20 7b 0a 2d 20 20 20 20  (e == 0) {.-    
36e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
36f0: 20 70 2e 66 69 6c 6c 28 31 32 33 29 3b 0a 2d 20   p.fill(123);.- 
3700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
3710: 2f 20 20 70 2e 72 65 63 74 28 78 2c 79 2c 35 30  /  p.rect(x,y,50
3720: 2c 35 30 29 3b 0a 2d 20 20 20 20 20 20 20 20 20  ,50);.-         
3730: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2d 20 20 20     } else {.-   
3740: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 2e 69               p.i
3750: 6d 61 67 65 28 69 6d 67 2c 20 30 2c 20 30 29 3b  mage(img, 0, 0);
3760: 0a 2b 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e  .+        instan
3770: 63 65 2e 64 72 61 77 20 3d 20 66 75 6e 63 74 69  ce.draw = functi
3780: 6f 6e 28 29 20 7b 0a 2b 20 20 20 20 20 20 20 20  on() {.+        
3790: 09 69 66 20 28 6f 6c 64 5f 73 63 65 6e 65 20 21  .if (old_scene !
37a0: 3d 20 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 29  = current_scene)
37b0: 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20   {.+            
37c0: 09 6f 6c 64 5f 73 63 65 6e 65 20 3d 20 63 75 72  .old_scene = cur
37d0: 72 65 6e 74 5f 73 63 65 6e 65 3b 0a 2b 20 20 20  rent_scene;.+   
37e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 75               cou
37f0: 6e 74 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20  nt = 0;.        
3800: 20 20 20 20 20 7d 0a 2b 20 20 20 20 2f 2f 20 20       }.+    //  
3810: 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 2e 63        instance.c
3820: 6c 65 61 72 28 29 3b 0a 2b 20 20 20 20 20 20 20  lear();.+       
3830: 20 20 20 20 20 76 61 72 20 63 20 3d 20 65 76 61       var c = eva
3840: 6c 28 60 24 7b 63 75 72 72 65 6e 74 5f 73 63 65  l(`${current_sce
3850: 6e 65 7d 60 29 0a 2b 20 20 20 20 20 20 20 2f 2f  ne}`).+       //
3860: 20 20 20 20 20 69 6e 73 74 61 6e 63 65 2e 69 6d       instance.im
3870: 61 67 65 28 63 5b 63 6f 75 6e 74 5d 2c 20 30 2c  age(c[count], 0,
3880: 20 30 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20   0);.+          
3890: 20 20 63 6f 75 6e 74 20 2b 3d 20 31 0a 2b 20 20    count += 1.+  
38a0: 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74 20            count 
38b0: 3d 20 63 6f 75 6e 74 20 25 20 63 2e 6c 65 6e 67  = count % c.leng
38c0: 74 68 3b 0a 2b 0a 20 20 20 20 20 20 20 20 20 7d  th;.+.         }
38d0: 3b 0a 20 20 20 20 20 7d 3b 0a 20 0a 2d 20 20 20  ;.     };. .-   
38e0: 20 6c 65 74 20 6d 79 70 35 20 3d 20 6e 65 77 20   let myp5 = new 
38f0: 70 35 28 73 2c 20 20 64 6f 63 75 6d 65 6e 74 2e  p5(s,  document.
3900: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
3910: 63 61 6e 76 61 73 2d 63 6f 6e 74 61 69 6e 65 72  canvas-container
3920: 27 29 29 3b 0a 2b 20 20 20 20 6c 65 74 20 6d 79  '));.+    let my
3930: 70 35 20 3d 20 6e 65 77 20 70 35 28 73 65 74 75  p5 = new p5(setu
3940: 70 2c 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74  p,  document.get
3950: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 63 61 6e  ElementById('can
3960: 76 61 73 2d 63 6f 6e 74 61 69 6e 65 72 27 29 29  vas-container'))
3970: 3b 0a 20 0a 2d 20 20 20 20 72 65 6e 64 65 72 5f  ;. .-    render_
3980: 6c 6f 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20  loop = function 
3990: 28 29 20 7b 0a 2d 2f 2f 20 20 20 20 09 70 72 2e  () {.-//    .pr.
39a0: 72 65 63 74 28 78 2c 79 2c 35 30 2c 35 30 29 3b  rect(x,y,50,50);
39b0: 0a 2d 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 54  .-    }. .     T
39c0: 6f 6e 65 2e 4d 61 73 74 65 72 2e 76 6f 6c 75 6d  one.Master.volum
39d0: 65 2e 76 61 6c 75 65 20 3d 20 2d 33 30 0a 2d 20  e.value = -30.- 
39e0: 20 20 20 6d 65 6d 2e 6d 61 73 74 65 72 20 3d 20     mem.master = 
39f0: 6e 65 77 20 54 6f 6e 65 2e 43 68 61 6e 6e 65 6c  new Tone.Channel
3a00: 28 7b 63 68 61 6e 6e 65 6c 43 6f 75 6e 74 3a 20  ({channelCount: 
3a10: 32 2c 20 76 6f 6c 75 6d 65 3a 20 2d 31 30 7d 29  2, volume: -10})
3a20: 2e 63 68 61 69 6e 28 54 6f 6e 65 2e 44 65 73 74  .chain(Tone.Dest
3a30: 69 6e 61 74 69 6f 6e 29 3b 0a 2b 0a 2b 09 64 69  ination);.+.+.di
3a40: 61 6c 73 5b 32 5d 5b 22 63 65 6c 6c 22 5d 28 31  als[2]["cell"](1
3a50: 29 0a 2b 20 20 20 20 6d 65 6d 5b 22 6d 61 73 74  ).+    mem["mast
3a60: 65 72 5f 66 69 6c 74 65 72 22 5d 20 3d 20 6e 65  er_filter"] = ne
3a70: 77 20 54 6f 6e 65 2e 46 69 6c 74 65 72 28 31 30  w Tone.Filter(10
3a80: 30 30 30 2c 20 27 6c 6f 77 70 61 73 73 27 2c 20  000, 'lowpass', 
3a90: 2d 39 36 29 3b 0a 2b 20 20 20 20 6d 65 6d 5b 22  -96);.+    mem["
3aa0: 6d 61 73 74 65 72 5f 73 74 65 72 65 6f 22 5d 20  master_stereo"] 
3ab0: 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 74 65 72 65  = new Tone.Stere
3ac0: 6f 57 69 64 65 6e 65 72 28 7b 77 69 64 74 68 3a  oWidener({width:
3ad0: 20 30 2e 35 30 7d 29 3b 0a 2b 20 20 20 20 0a 2b   0.50});.+    .+
3ae0: 20 20 20 20 64 69 61 6c 73 5b 32 5d 5b 22 63 65      dials[2]["ce
3af0: 6c 6c 22 5d 2e 6f 6e 43 68 61 6e 67 65 28 66 75  ll"].onChange(fu
3b00: 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a 2b 20 20  nction (e) {.+  
3b10: 20 20 20 20 20 20 76 61 72 20 76 61 6c 20 3d 20        var val = 
3b20: 70 61 72 73 65 46 6c 6f 61 74 28 65 5b 22 64 61  parseFloat(e["da
3b30: 74 61 22 5d 2e 76 61 6c 75 65 29 3b 0a 2b 20 20  ta"].value);.+  
3b40: 20 20 20 20 20 20 76 61 72 20 63 75 74 6f 66 66        var cutoff
3b50: 5f 67 75 61 72 64 20 3d 20 67 75 61 72 64 28 5b  _guard = guard([
3b60: 31 30 2c 20 32 30 30 30 30 5d 29 3b 0a 2b 20 20  10, 20000]);.+  
3b70: 20 20 20 20 20 20 6d 65 6d 5b 22 6d 61 73 74 65        mem["maste
3b80: 72 5f 66 69 6c 74 65 72 22 5d 2e 66 72 65 71 75  r_filter"].frequ
3b90: 65 6e 63 79 2e 76 61 6c 75 65 20 3d 20 63 75 74  ency.value = cut
3ba0: 6f 66 66 5f 67 75 61 72 64 28 76 61 6c 20 2a 20  off_guard(val * 
3bb0: 31 30 30 30 30 29 3b 0a 2b 20 20 20 20 7d 29 0a  10000);.+    }).
3bc0: 2b 20 20 20 20 0a 2b 20 20 20 20 64 69 61 6c 73  +    .+    dials
3bd0: 5b 33 5d 5b 22 63 65 6c 6c 22 5d 28 30 29 0a 2b  [3]["cell"](0).+
3be0: 20 20 20 20 0a 2b 20 20 20 20 64 69 61 6c 73 5b      .+    dials[
3bf0: 33 5d 5b 22 63 65 6c 6c 22 5d 2e 6f 6e 43 68 61  3]["cell"].onCha
3c00: 6e 67 65 28 66 75 6e 63 74 69 6f 6e 20 28 65 29  nge(function (e)
3c10: 20 7b 0a 2b 20 20 20 20 20 20 20 20 76 61 72 20   {.+        var 
3c20: 76 61 6c 20 3d 20 70 61 72 73 65 46 6c 6f 61 74  val = parseFloat
3c30: 28 65 5b 22 64 61 74 61 22 5d 2e 76 61 6c 75 65  (e["data"].value
3c40: 29 3b 0a 2b 20 20 20 20 20 20 20 20 76 61 72 20  );.+        var 
3c50: 76 6f 6c 75 6d 65 5f 67 75 61 72 64 31 20 3d 20  volume_guard1 = 
3c60: 67 75 61 72 64 28 5b 30 2c 31 5d 29 0a 2b 20 20  guard([0,1]).+  
3c70: 20 20 20 20 20 20 61 75 64 69 6f 2e 6d 61 73 74        audio.mast
3c80: 65 72 2e 69 6e 2e 67 61 69 6e 2e 76 61 6c 75 65  er.in.gain.value
3c90: 20 3d 20 76 6f 6c 75 6d 65 5f 67 75 61 72 64 31   = volume_guard1
3ca0: 28 76 61 6c 20 2f 20 31 30 29 3b 0a 2b 20 20 20  (val / 10);.+   
3cb0: 20 7d 29 0a 2b 20 20 20 20 0a 2b 0a 2b 0a 2b 09   }).+    .+.+.+.
3cc0: 6d 65 6d 2e 6d 61 73 74 65 72 20 3d 20 6e 65 77  mem.master = new
3cd0: 20 54 6f 6e 65 2e 43 68 61 6e 6e 65 6c 28 7b 63   Tone.Channel({c
3ce0: 68 61 6e 6e 65 6c 43 6f 75 6e 74 3a 20 32 2c 20  hannelCount: 2, 
3cf0: 76 6f 6c 75 6d 65 3a 20 2d 31 30 7d 29 2e 63 68  volume: -10}).ch
3d00: 61 69 6e 28 20 20 6d 65 6d 5b 22 6d 61 73 74 65  ain(  mem["maste
3d10: 72 5f 66 69 6c 74 65 72 22 5d 2c 20 20 6d 65 6d  r_filter"],  mem
3d20: 5b 22 6d 61 73 74 65 72 5f 73 74 65 72 65 6f 22  ["master_stereo"
3d30: 5d 2c 20 54 6f 6e 65 2e 44 65 73 74 69 6e 61 74  ], Tone.Destinat
3d40: 69 6f 6e 29 3b 0a 20 20 20 20 20 53 61 6d 70 6c  ion);.     Sampl
3d50: 65 28 22 6b 22 2c 20 30 2c 20 6e 75 6c 6c 2c 20  e("k", 0, null, 
3d60: 2d 35 29 3b 0a 20 20 20 20 20 53 61 6d 70 6c 65  -5);.     Sample
3d70: 28 22 73 6e 31 22 2c 31 2c 20 6e 75 6c 6c 2c 20  ("sn1",1, null, 
3d80: 30 29 3b 0a 2d 20 20 20 20 53 61 6d 70 6c 65 28  0);.-    Sample(
3d90: 22 68 22 2c 32 2c 20 6e 75 6c 6c 2c 20 2d 31 35  "h",2, null, -15
3da0: 29 3b 0a 2b 20 20 20 20 53 61 6d 70 6c 65 28 22  );.+    Sample("
3db0: 68 22 2c 32 2c 20 35 30 30 30 2c 20 2d 33 35 29  h",2, 5000, -35)
3dc0: 3b 0a 20 20 20 20 20 53 61 6d 70 6c 65 28 22 6d  ;.     Sample("m
3dd0: 22 2c 33 2c 20 6e 75 6c 6c 2c 20 2d 31 35 29 3b  ",3, null, -15);
3de0: 0a 20 20 20 20 20 53 61 6d 70 6c 65 28 22 66 22  .     Sample("f"
3df0: 2c 34 2c 20 6e 75 6c 6c 2c 20 2d 31 35 29 3b 0a  ,4, null, -15);.
3e00: 2d 20 20 20 20 53 61 6d 70 6c 65 28 22 73 22 2c  -    Sample("s",
3e10: 35 2c 20 39 30 30 2c 20 2d 31 35 29 3b 0a 2d 0a  5, 900, -15);.-.
3e20: 2d 0a 2d 20 20 20 20 6d 65 6d 5b 22 63 22 5d 20  -.-    mem["c"] 
3e30: 3d 20 63 65 6c 6c 78 28 31 29 3b 0a 2d 20 20 20  = cellx(1);.-   
3e40: 20 6d 65 6d 5b 22 63 22 5d 2e 6f 6e 43 68 61 6e   mem["c"].onChan
3e50: 67 65 28 66 75 6e 63 74 69 6f 6e 20 28 65 29 20  ge(function (e) 
3e60: 7b 0a 2d 20 20 20 20 20 20 20 20 76 61 72 20 76  {.-        var v
3e70: 61 6c 20 3d 20 70 61 72 73 65 49 6e 74 28 65 5b  al = parseInt(e[
3e80: 22 64 61 74 61 22 5d 2e 76 61 6c 75 65 29 3b 0a  "data"].value);.
3e90: 2d 20 20 20 20 20 20 20 20 0a 2d 20 20 20 20 20  -        .-     
3ea0: 20 20 20 70 28 30 2c 6e 75 6c 6c 2c 20 6e 75 6c     p(0,null, nul
3eb0: 6c 2c 20 22 32 34 6e 22 29 3b 0a 2d 20 20 20 20  l, "24n");.-    
3ec0: 20 20 20 20 73 65 74 54 69 6d 65 6f 75 74 28 66      setTimeout(f
3ed0: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 2d 20 20  unction () {.-  
3ee0: 20 20 20 20 20 20 09 70 28 34 2c 20 6e 75 6c 6c        .p(4, null
3ef0: 2c 20 6e 75 6c 6c 2c 20 22 34 6e 22 29 0a 2d 20  , null, "4n").- 
3f00: 20 20 20 20 20 20 20 7d 2c 20 64 65 6c 74 61 20         }, delta 
3f10: 2a 20 32 29 3b 0a 2d 20 20 20 20 20 20 20 20 0a  * 2);.-        .
3f20: 2d 20 20 20 20 7d 29 0a 2d 20 20 20 20 6d 65 6d  -    }).-    mem
3f30: 5b 22 63 22 5d 2e 6f 6e 45 72 72 6f 72 28 66 75  ["c"].onError(fu
3f40: 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a 2d 20 20  nction (e) {.-  
3f50: 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f        console.lo
3f60: 67 28 65 29 3b 0a 2d 0a 2d 20 20 20 20 7d 29 0a  g(e);.-.-    }).
3f70: 2b 20 20 20 20 0a 2b 20 20 20 20 6e 61 6d 65 20  +    .+    name 
3f80: 3d 20 22 73 22 0a 2b 20 20 20 20 66 69 6c 74 65  = "s".+    filte
3f90: 72 20 3d 20 32 30 30 30 0a 2b 20 20 20 20 76 6f  r = 2000.+    vo
3fa0: 6c 75 6d 65 20 3d 20 2d 31 35 20 0a 2b 20 20 20  lume = -15 .+   
3fb0: 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 66 69   mem[name + "_fi
3fc0: 6c 74 65 72 22 5d 20 3d 20 6e 65 77 20 54 6f 6e  lter"] = new Ton
3fd0: 65 2e 46 69 6c 74 65 72 28 66 69 6c 74 65 72 2c  e.Filter(filter,
3fe0: 20 27 6c 6f 77 70 61 73 73 27 2c 20 2d 39 36 29   'lowpass', -96)
3ff0: 3b 0a 2b 20 20 20 20 6d 65 6d 5b 6e 61 6d 65 20  ;.+    mem[name 
4000: 2b 20 22 5f 64 65 6c 61 79 22 5d 20 3d 20 6e 65  + "_delay"] = ne
4010: 77 20 54 6f 6e 65 2e 46 65 65 64 62 61 63 6b 44  w Tone.FeedbackD
4020: 65 6c 61 79 28 22 34 6e 22 2c 20 30 2e 34 29 3b  elay("4n", 0.4);
4030: 0a 2b 20 20 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b  .+    mem[name +
4040: 20 22 5f 63 68 61 6e 6e 65 6c 22 5d 20 3d 20 6e   "_channel"] = n
4050: 65 77 20 54 6f 6e 65 2e 43 68 61 6e 6e 65 6c 28  ew Tone.Channel(
4060: 7b 63 68 61 6e 6e 65 6c 43 6f 75 6e 74 3a 20 32  {channelCount: 2
4070: 2c 20 76 6f 6c 75 6d 65 3a 20 76 6f 6c 75 6d 65  , volume: volume
4080: 2c 20 70 61 6e 3a 20 2d 30 2e 32 35 7d 29 2e 63  , pan: -0.25}).c
4090: 68 61 69 6e 28 6d 65 6d 5b 6e 61 6d 65 20 2b 20  hain(mem[name + 
40a0: 22 5f 66 69 6c 74 65 72 22 5d 2c 20 20 20 6d 65  "_filter"],   me
40b0: 6d 5b 6e 61 6d 65 20 2b 20 22 5f 64 65 6c 61 79  m[name + "_delay
40c0: 22 5d 2c 20 6d 65 6d 2e 6d 61 73 74 65 72 29 0a  "], mem.master).
40d0: 2b 20 20 20 20 73 61 6d 70 6c 65 73 5b 35 5d 2e  +    samples[5].
40e0: 63 6f 6e 6e 65 63 74 28 6d 65 6d 5b 6e 61 6d 65  connect(mem[name
40f0: 20 2b 20 22 5f 63 68 61 6e 6e 65 6c 22 5d 29 3b   + "_channel"]);
4100: 0a 2b 20 20 20 20 68 69 74 5f 6d 61 70 5b 6e 61  .+    hit_map[na
4110: 6d 65 5d 20 3d 20 35 3b 0a 2b 20 20 0a 2b 20 20  me] = 5;.+  .+  
4120: 20 20 0a 2b 20 20 20 20 0a 20 0a 2b 20 20 20 20    .+    . .+    
4130: 0a 2b 20 20 20 20 0a 2b 20 20 20 20 0a 2b 20 20  .+    .+    .+  
4140: 20 20 0a 2b 20 20 20 20 53 61 6d 70 6c 65 28 22    .+    Sample("
4150: 6d 61 6e 61 67 65 72 22 2c 36 2c 20 6e 75 6c 6c  manager",6, null
4160: 2c 20 2d 31 35 29 3b 0a 2b 20 20 20 20 53 61 6d  , -15);.+    Sam
4170: 70 6c 65 28 22 6f 72 64 65 72 22 2c 37 2c 20 6e  ple("order",7, n
4180: 75 6c 6c 2c 20 2d 31 35 29 3b 0a 2b 20 20 20 20  ull, -15);.+    
4190: 53 61 6d 70 6c 65 28 22 63 72 22 2c 38 2c 20 6e  Sample("cr",8, n
41a0: 75 6c 6c 2c 20 2d 31 35 29 3b 0a 2b 20 20 20 20  ull, -15);.+    
41b0: 53 61 6d 70 6c 65 28 22 70 69 61 6e 6f 22 2c 39  Sample("piano",9
41c0: 2c 20 34 30 30 2c 20 2d 31 35 29 3b 0a 2b 20 20  , 400, -15);.+  
41d0: 20 09 53 61 6d 70 6c 65 28 22 73 69 74 61 72 22   .Sample("sitar"
41e0: 2c 31 30 2c 20 35 30 30 30 2c 20 2d 31 35 29 3b  ,10, 5000, -15);
41f0: 0a 2b 20 20 20 20 0a 20 20 20 20 20 63 6f 6e 73  .+    .     cons
4200: 74 20 61 75 64 69 6f 20 3d 20 41 75 64 69 6f 28  t audio = Audio(
4210: 29 3b 0a 20 20 20 20 20 63 6f 6e 73 74 20 74 68  );.     const th
4220: 72 65 65 20 3d 20 54 68 72 65 65 4f 68 55 6e 69  ree = ThreeOhUni
4230: 74 28 61 75 64 69 6f 2c 20 22 73 61 77 74 6f 6f  t(audio, "sawtoo
4240: 74 68 22 2c 20 7b 0a 2d 20 20 20 20 20 20 20 20  th", {.-        
4250: 20 20 20 20 22 63 75 74 6f 66 66 22 3a 20 38 36      "cutoff": 86
4260: 2c 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 22  ,.+            "
4270: 63 75 74 6f 66 66 22 3a 20 37 38 2c 0a 20 20 20  cutoff": 78,.   
4280: 20 20 20 20 20 20 20 20 20 20 22 72 65 73 6f 6e            "reson
4290: 61 6e 63 65 22 3a 20 31 35 2c 0a 20 20 20 20 20  ance": 15,.     
42a0: 20 20 20 20 20 20 20 20 22 65 6e 76 4d 6f 64 22          "envMod"
42b0: 3a 20 34 30 30 30 2c 0a 20 20 20 20 20 20 20 20  : 4000,.        
42c0: 20 20 20 20 20 22 64 65 63 61 79 22 3a 20 30 2e       "decay": 0.
42d0: 35 0a 20 20 20 20 20 20 20 20 20 7d 0a 20 09 29  5.         }. .)
42e0: 0a 2d 20 20 20 20 61 75 64 69 6f 2e 6d 61 73 74  .-    audio.mast
42f0: 65 72 2e 69 6e 2e 67 61 69 6e 2e 76 61 6c 75 65  er.in.gain.value
4300: 20 3d 20 30 2e 31 3b 0a 2b 20 20 20 20 61 75 64   = 0.1;.+    aud
4310: 69 6f 2e 6d 61 73 74 65 72 2e 69 6e 2e 67 61 69  io.master.in.gai
4320: 6e 2e 76 61 6c 75 65 20 3d 20 30 3b 0a 20 20 20  n.value = 0;.   
4330: 20 20 6d 65 6d 5b 22 74 68 72 65 65 22 5d 20 3d    mem["three"] =
4340: 20 74 68 72 65 65 0a 20 20 20 20 20 0a 20 20 20   three.     .   
4350: 20 20 2f 2f 20 63 75 74 6f 66 66 20 5b 33 30 2c    // cutoff [30,
4360: 20 37 30 30 5d 2c 20 34 30 30 0a 40 40 20 2d 31   700], 400.@@ -1
4370: 32 34 2c 37 20 2b 31 36 35 2c 37 20 40 40 20 66  24,7 +165,7 @@ f
4380: 75 6e 63 74 69 6f 6e 20 6f 6e 63 65 20 28 29 20  unction once () 
4390: 7b 0a 20 20 20 20 20 2f 2f 20 65 6e 76 4d 6f 64  {.     // envMod
43a0: 3a 20 5b 30 2c 20 38 30 30 30 5d 2c 20 34 30 30  : [0, 8000], 400
43b0: 30 0a 20 20 20 20 20 2f 2f 20 64 65 63 61 79 3a  0.     // decay:
43c0: 20 5b 30 2e 31 2c 20 30 2e 39 5d 2c 20 30 2e 35   [0.1, 0.9], 0.5
43d0: 0a 20 20 20 20 20 0a 2d 20 20 20 20 64 69 61 6c  .     .-    dial
43e0: 73 5b 31 5d 5b 22 63 65 6c 6c 22 5d 28 30 2e 30  s[1]["cell"](0.0
43f0: 38 36 30 29 0a 2b 20 20 20 20 64 69 61 6c 73 5b  860).+    dials[
4400: 31 5d 5b 22 63 65 6c 6c 22 5d 28 30 2e 30 37 38  1]["cell"](0.078
4410: 32 35 29 0a 20 0a 20 20 20 20 20 64 69 61 6c 73  25). .     dials
4420: 5b 31 5d 5b 22 63 65 6c 6c 22 5d 2e 6f 6e 43 68  [1]["cell"].onCh
4430: 61 6e 67 65 28 66 75 6e 63 74 69 6f 6e 20 28 65  ange(function (e
4440: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 76 61 72  ) {.         var
4450: 20 76 61 6c 20 3d 20 70 61 72 73 65 46 6c 6f 61   val = parseFloa
4460: 74 28 65 5b 22 64 61 74 61 22 5d 2e 76 61 6c 75  t(e["data"].valu
4470: 65 29 3b 0a 40 40 20 2d 31 33 33 2c 32 35 20 2b  e);.@@ -133,25 +
4480: 31 37 34 2c 31 32 38 20 40 40 20 66 75 6e 63 74  174,128 @@ funct
4490: 69 6f 6e 20 6f 6e 63 65 20 28 29 20 7b 0a 20 20  ion once () {.  
44a0: 20 20 20 7d 29 0a 20 7d 0a 20 0a 2b 66 75 6e 63     }). }. .+func
44b0: 74 69 6f 6e 20 74 77 65 61 6b 28 29 20 7b 0a 2b  tion tweak() {.+
44c0: 20 0a 2b 20 20 20 20 76 61 72 09 73 6e 61 72 65   .+    var.snare
44d0: 5f 63 6f 75 6e 74 20 3d 20 63 65 6c 6c 78 28 31  _count = cellx(1
44e0: 36 29 3b 0a 2b 20 20 20 20 0a 2b 20 20 20 20 0a  6);.+    .+    .
44f0: 2b 20 20 20 20 0a 2b 20 20 20 20 73 6e 61 72 65  +    .+    snare
4500: 5f 63 6f 75 6e 74 2e 6f 6e 43 68 61 6e 67 65 28  _count.onChange(
4510: 66 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a 2b  function (e) {.+
4520: 20 20 20 20 20 20 20 20 76 61 72 20 76 61 6c 20          var val 
4530: 3d 20 70 61 72 73 65 49 6e 74 28 65 5b 22 64 61  = parseInt(e["da
4540: 74 61 22 5d 2e 76 61 6c 75 65 29 3b 0a 2b 20 20  ta"].value);.+  
4550: 20 20 20 20 20 20 69 66 20 28 76 61 6c 20 3d 3d        if (val ==
4560: 20 32 32 29 20 7b 0a 2b 20 20 20 20 20 20 09 20   22) {.+      . 
4570: 09 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 20 3d  .current_scene =
4580: 20 22 66 69 6e 22 3b 0a 2b 09 09 09 70 31 28 38   "fin";.+...p1(8
4590: 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 31 32  , null, null, 12
45a0: 2e 32 35 29 3b 0a 2b 09 20 20 20 20 7d 20 65 6c  .25);.+.    } el
45b0: 73 65 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20  se {.+          
45c0: 20 70 28 31 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c   p(1, null, null
45d0: 2c 20 22 34 6e 22 29 0a 2b 20 20 20 20 20 20 20  , "4n").+       
45e0: 20 7d 0a 2b 20 20 20 20 7d 29 0a 2b 20 20 20 20   }.+    }).+    
45f0: 0a 2b 20 20 20 20 0a 2b 20 20 20 20 0a 2b 20 20  .+    .+    .+  
4600: 20 20 4d 6f 75 73 65 74 72 61 70 2e 62 69 6e 64    Mousetrap.bind
4610: 28 5b 27 66 32 27 5d 2c 20 66 75 6e 63 74 69 6f  (['f2'], functio
4620: 6e 28 65 29 20 7b 0a 2b 20 20 20 20 0a 2b 20 20  n(e) {.+    .+  
4630: 20 20 09 73 6e 61 72 65 5f 63 6f 75 6e 74 28 73    .snare_count(s
4640: 6e 61 72 65 5f 63 6f 75 6e 74 28 29 20 2b 20 31  nare_count() + 1
4650: 29 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 73  ).+        if (s
4660: 6e 61 72 65 5f 63 6f 75 6e 74 28 29 20 3c 3d 20  nare_count() <= 
4670: 32 30 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 20  20) {.+         
4680: 20 73 65 74 54 69 6d 65 6f 75 74 28 66 75 6e 63   setTimeout(func
4690: 74 69 6f 6e 20 28 29 20 7b 0a 2b 20 20 20 20 20  tion () {.+     
46a0: 20 20 20 20 20 20 20 20 20 70 28 30 2c 20 6e 75           p(0, nu
46b0: 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 32 34 6e 22 2c  ll, null, "24n",
46c0: 20 6e 75 6c 6c 20 29 3b 0a 2b 20 20 20 20 20 20   null );.+      
46d0: 20 20 20 20 20 20 20 20 20 20 73 65 74 54 69 6d            setTim
46e0: 65 6f 75 74 28 66 75 6e 63 74 69 6f 6e 20 28 29  eout(function ()
46f0: 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20   {.+            
4700: 20 20 20 20 20 20 20 20 70 28 38 2c 20 6e 75 6c          p(8, nul
4710: 6c 2c 20 6e 75 6c 6c 2c 20 22 32 6e 22 20 29 3b  l, null, "2n" );
4720: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .+              
4730: 20 20 20 20 20 20 70 28 31 30 2c 20 30 2e 35 2c        p(10, 0.5,
4740: 20 22 41 32 22 2c 20 31 29 3b 0a 2b 20 20 20 20   "A2", 1);.+    
4750: 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 20 64              }, d
4760: 65 6c 74 61 20 2a 20 32 29 0a 2b 20 20 0a 2b 20  elta * 2).+  .+ 
4770: 20 20 20 20 20 20 20 20 20 7d 2c 20 64 65 6c 74           }, delt
4780: 61 20 2a 20 31 2e 35 29 0a 2b 20 20 20 20 20 20  a * 1.5).+      
4790: 20 20 7d 0a 2b 20 20 20 20 20 20 20 20 0a 2b 09    }.+        .+.
47a0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
47b0: 3b 0a 2b 20 20 20 20 7d 29 0a 2b 0a 2b 0a 2b 20  ;.+    }).+.+.+ 
47c0: 20 20 20 0a 2b 7d 0a 2b 0a 20 0a 20 0a 20 74 72     .+}.+. . . tr
47d0: 61 6e 73 69 74 69 6f 6e 20 3d 20 6f 6e 63 65 3b  ansition = once;
47e0: 0a 2b 0a 20 69 66 20 28 62 61 72 73 20 3c 3d 20  .+. if (bars <= 
47f0: 32 29 20 7b 0a 20 09 63 75 72 72 65 6e 74 5f 73  2) {. .current_s
4800: 63 65 6e 65 20 3d 20 22 69 6e 74 72 6f 22 3b 0a  cene = "intro";.
4810: 20 7d 20 65 6c 73 65 20 7b 0a 2d 09 63 75 72 72   } else {.-.curr
4820: 65 6e 74 5f 73 63 65 6e 65 20 3d 20 22 6d 61 69  ent_scene = "mai
4830: 6e 22 3b 0a 2b 2f 2f 09 20 20 20 20 20 6d 65 6d  n";.+//.     mem
4840: 5b 22 74 68 72 65 65 22 5d 2e 73 74 65 70 28 22  ["three"].step("
4850: 6f 66 66 22 29 3b 0a 2b 69 66 20 28 62 61 72 73  off");.+if (bars
4860: 20 3d 3d 20 33 29 20 7b 0a 2b 09 65 76 61 6c 5f   == 3) {.+.eval_
4870: 67 75 61 72 64 20 3f 20 63 75 65 28 22 53 74 61  guard ? cue("Sta
4880: 72 74 20 69 6e 74 72 6f 22 29 20 3a 20 22 22 3b  rt intro") : "";
4890: 0a 2b 09 63 75 72 72 65 6e 74 5f 73 63 65 6e 65  .+.current_scene
48a0: 20 3d 20 22 69 6e 74 72 6f 22 3b 0a 2b 0a 2b 7d   = "intro";.+.+}
48b0: 0a 2b 0a 2b 69 66 20 28 62 61 72 73 20 3d 3d 20  .+.+if (bars == 
48c0: 35 29 20 7b 0a 2b 09 65 76 61 6c 5f 67 75 61 72  5) {.+.eval_guar
48d0: 64 20 3f 20 63 75 65 28 22 53 74 61 72 74 20 64  d ? cue("Start d
48e0: 72 75 6d 73 22 29 20 3a 20 22 22 3b 0a 2b 20 20  rums") : "";.+  
48f0: 20 20 09 63 75 72 72 65 6e 74 5f 73 63 65 6e 65    .current_scene
4900: 20 3d 20 22 6d 61 69 6e 22 3b 0a 2b 7d 0a 2b 0a   = "main";.+}.+.
4910: 2b 0a 2b 0a 2b 0a 2b 69 66 20 28 62 61 72 73 20  +.+.+.+if (bars 
4920: 3d 3d 20 31 32 29 20 7b 0a 2b 09 65 76 61 6c 5f  == 12) {.+.eval_
4930: 67 75 61 72 64 20 3f 20 63 75 65 28 22 41 64 64  guard ? cue("Add
4940: 20 62 61 73 73 22 29 3a 20 22 22 3b 0a 2b 20 20   bass"): "";.+  
4950: 20 20 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 20    current_scene 
4960: 3d 20 22 62 61 73 73 22 3b 0a 2b 0a 2b 7d 0a 2b  = "bass";.+.+}.+
4970: 0a 2b 69 66 20 28 62 61 72 73 20 3d 3d 20 33 32  .+if (bars == 32
4980: 29 20 7b 0a 2b 09 65 76 61 6c 5f 67 75 61 72 64  ) {.+.eval_guard
4990: 20 3f 63 75 65 28 22 52 65 76 65 72 73 65 20 22   ?cue("Reverse "
49a0: 29 3a 20 22 22 3b 0a 2b 20 20 20 20 63 75 72 72  ): "";.+    curr
49b0: 65 6e 74 5f 73 63 65 6e 65 20 3d 20 22 62 61 73  ent_scene = "bas
49c0: 73 22 3b 0a 2b 0a 2b 7d 0a 2b 0a 2b 69 66 20 28  s";.+.+}.+.+if (
49d0: 62 61 72 73 20 3d 3d 20 34 32 29 20 7b 0a 2b 09  bars == 42) {.+.
49e0: 65 76 61 6c 5f 67 75 61 72 64 20 3f 20 63 75 65  eval_guard ? cue
49f0: 28 22 45 6e 64 20 22 29 3a 20 22 22 0a 2b 20 20  ("End "): "".+  
4a00: 20 20 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 20    current_scene 
4a10: 3d 20 22 65 6e 64 22 3b 0a 2b 0a 2b 7d 0a 2b 0a  = "end";.+.+}.+.
4a20: 2b 69 66 20 28 62 61 72 73 20 3d 3d 20 34 36 29  +if (bars == 46)
4a30: 20 7b 0a 2b 09 65 76 61 6c 5f 67 75 61 72 64 20   {.+.eval_guard 
4a40: 3f 20 63 75 65 28 22 53 6f 6c 6f 20 22 29 3a 20  ? cue("Solo "): 
4a50: 22 22 0a 2b 20 20 20 20 63 75 72 72 65 6e 74 5f  "".+    current_
4a60: 73 63 65 6e 65 20 3d 20 22 73 6f 6c 6f 22 3b 0a  scene = "solo";.
4a70: 2b 7d 0a 2b 0a 2b 0a 2b 20 20 20 20 74 72 61 6e  +}.+.+.+    tran
4a80: 73 69 74 69 6f 6e 20 3d 20 74 77 65 61 6b 3b 0a  sition = tweak;.
4a90: 20 7d 0a 20 0a 2d 63 75 72 72 65 6e 74 5f 73 63   }. .-current_sc
4aa0: 65 6e 65 20 3d 20 22 62 61 73 73 22 3b 0a 20 0a  ene = "bass";. .
4ab0: 20 70 61 74 74 65 72 6e 73 20 3d 20 65 76 61 6c   patterns = eval
4ac0: 28 60 24 7b 63 75 72 72 65 6e 74 5f 73 63 65 6e  (`${current_scen
4ad0: 65 7d 60 29 3b 0a 20 61 6c 77 61 79 73 28 29 3b  e}`);. always();
4ae0: 0a 20 0a 2b 69 66 20 28 74 72 61 63 6b 5f 6e 6f  . .+if (track_no
4af0: 20 3d 3d 20 31 29 20 7b 0a 2b 69 66 20 28 63 6f   == 1) {.+if (co
4b00: 75 6e 74 20 3d 3d 20 30 29 20 7b 0a 2b 09 63 75  unt == 0) {.+.cu
4b10: 65 28 22 53 61 6d 70 6c 65 22 29 0a 2b 20 2f 2f  e("Sample").+ //
4b20: 20 20 20 70 31 28 38 2c 20 6e 75 6c 6c 2c 20 6e     p1(8, null, n
4b30: 75 6c 6c 2c 20 31 32 2e 32 35 29 3b 0a 2b 7d 0a  ull, 12.25);.+}.
4b40: 2b 7d 0a 2b 0a 2b 20 20 20 20 20 0a 2b 0a 20 69  +}.+.+     .+. i
4b50: 66 20 28 69 73 48 69 74 29 20 7b 0a 20 20 20 20  f (isHit) {.    
4b60: 20 69 66 20 28 63 75 72 72 65 6e 74 5f 73 63 65   if (current_sce
4b70: 6e 65 20 3d 3d 20 22 69 6e 74 72 6f 22 29 20 7b  ne == "intro") {
4b80: 0a 20 20 20 20 20 20 20 20 20 69 66 20 28 74 72  .         if (tr
4b90: 61 63 6b 5f 6e 6f 20 3d 3d 20 31 29 20 7b 0a 2d  ack_no == 1) {.-
4ba0: 20 20 20 20 20 20 20 20 20 20 20 20 70 28 33 2c              p(3,
4bb0: 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 31 6e   null, null, "1n
4bc0: 22 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 70  ");.+          p
4bd0: 28 33 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20  (3, null, null, 
4be0: 22 31 6e 22 29 3b 0a 2b 20 20 20 20 20 20 20 20  "1n");.+        
4bf0: 7d 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 69 66  }.+    } else if
4c00: 20 28 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 20   (current_scene 
4c10: 3d 3d 20 22 66 69 6e 22 29 20 7b 0a 2b 20 20 20  == "fin") {.+   
4c20: 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20  .+    } else if 
4c30: 28 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 20 3d  (current_scene =
4c40: 3d 20 22 73 6f 6c 6f 22 29 20 7b 0a 2b 0a 2b 20  = "solo") {.+.+ 
4c50: 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20  .+    } else if 
4c60: 28 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 20 3d  (current_scene =
4c70: 3d 20 22 65 6e 64 22 29 20 7b 0a 2b 20 20 20 20  = "end") {.+    
4c80: 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f      if (track_no
4c90: 20 3d 3d 20 31 29 20 7b 0a 2b 20 20 20 20 20 20   == 1) {.+      
4ca0: 20 20 20 20 20 20 70 28 30 2c 20 6d 65 74 61 5b        p(0, meta[
4cb0: 74 69 63 6b 5d 5b 22 76 6f 6c 75 6d 65 22 5d 2c  tick]["volume"],
4cc0: 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 70 69 74   meta[tick]["pit
4cd0: 63 68 22 5d 2c 20 22 32 34 6e 22 2c 20 6d 65 74  ch"], "24n", met
4ce0: 61 5b 74 69 63 6b 5d 5b 22 64 65 6c 61 79 22 5d  a[tick]["delay"]
4cf0: 20 29 3b 0a 20 20 20 20 20 20 20 20 20 7d 0a 2b   );.         }.+
4d00: 20 20 20 20 20 20 20 20 69 66 20 28 74 72 61 63          if (trac
4d10: 6b 5f 6e 6f 20 3d 3d 20 32 29 20 7b 0a 2b 20 20  k_no == 2) {.+  
4d20: 20 20 20 20 20 20 20 20 20 20 70 28 31 29 3b 0a            p(1);.
4d30: 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20  +        }.+    
4d40: 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f      if (track_no
4d50: 20 3d 3d 20 33 29 20 7b 0a 2b 20 20 20 20 20 20   == 3) {.+      
4d60: 20 20 20 20 20 20 70 28 32 29 0a 2b 20 20 20 20        p(2).+    
4d70: 20 20 20 20 7d 0a 2b 20 20 20 20 20 20 20 20 0a      }.+        .
4d80: 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28       } else if (
4d90: 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 20 3d 3d  current_scene ==
4da0: 20 22 6d 61 69 6e 22 29 20 7b 0a 20 20 20 20 20   "main") {.     
4db0: 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f      if (track_no
4dc0: 20 3d 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 20   == 1) {.       
4dd0: 20 20 20 20 20 20 70 28 30 2c 20 6d 65 74 61 5b        p(0, meta[
4de0: 74 69 63 6b 5d 5b 22 76 6f 6c 75 6d 65 22 5d 2c  tick]["volume"],
4df0: 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 70 69 74   meta[tick]["pit
4e00: 63 68 22 5d 2c 20 22 32 34 6e 22 2c 20 6d 65 74  ch"], "24n", met
4e10: 61 5b 74 69 63 6b 5d 5b 22 64 65 6c 61 79 22 5d  a[tick]["delay"]
4e20: 20 29 3b 0a 40 40 20 2d 31 36 35 2c 31 38 20 2b   );.@@ -165,18 +
4e30: 33 30 39 2c 32 36 20 40 40 20 69 66 20 28 69 73  309,26 @@ if (is
4e40: 48 69 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20  Hit) {.         
4e50: 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20  if (track_no == 
4e60: 34 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  4) {.           
4e70: 20 20 70 28 33 2c 20 6e 75 6c 6c 2c 20 6e 75 6c    p(3, null, nul
4e80: 6c 2c 20 22 31 6e 22 29 3b 0a 20 20 20 20 20 20  l, "1n");.      
4e90: 20 20 20 7d 0a 2d 20 20 20 20 20 20 20 20 20 69     }.-         i
4ea0: 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 35  f (track_no == 5
4eb0: 29 20 7b 0a 2d 20 20 20 20 20 20 20 20 20 20 20  ) {.-           
4ec0: 20 70 28 35 2c 20 30 2e 33 2c 20 6d 65 74 61 5b   p(5, 0.3, meta[
4ed0: 74 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d 2c 20  tick]["pitch"], 
4ee0: 22 31 6e 22 29 3b 0a 2b 20 20 20 20 20 20 20 20  "1n");.+        
4ef0: 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20  if (track_no == 
4f00: 35 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20  5) {.+          
4f10: 20 20 69 66 20 28 6d 65 74 61 5b 74 69 63 6b 5d    if (meta[tick]
4f20: 5b 22 70 69 74 63 68 22 5d 29 20 7b 0a 2b 20 20  ["pitch"]) {.+  
4f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65                me
4f40: 6d 5b 22 74 68 72 65 65 22 5d 2e 73 74 65 70 28  m["three"].step(
4f50: 7b 22 67 6c 69 64 65 22 3a 20 74 72 75 65 2c 20  {"glide": true, 
4f60: 22 61 63 63 65 6e 74 22 3a 20 66 61 6c 73 65 2c  "accent": false,
4f70: 20 22 6e 6f 74 65 22 3a 20 6d 65 74 61 5b 74 69   "note": meta[ti
4f80: 63 6b 5d 5b 22 70 69 74 63 68 22 5d 7d 29 3b 0a  ck]["pitch"]});.
4f90: 2b 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65  +            } e
4fa0: 6c 73 65 20 7b 0a 2b 20 20 20 20 20 20 20 20 20  lse {.+         
4fb0: 20 20 20 20 20 20 20 6d 65 6d 5b 22 74 68 72 65         mem["thre
4fc0: 65 22 5d 2e 73 74 65 70 28 22 6f 66 66 22 29 3b  e"].step("off");
4fd0: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  .+            }.
4fe0: 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20  +        }.+    
4ff0: 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f      if (track_no
5000: 20 3d 3d 20 36 29 20 7b 0a 2b 20 20 20 20 20 20   == 6) {.+      
5010: 20 20 20 20 20 70 28 35 2c 20 6e 75 6c 6c 2c 20       p(5, null, 
5020: 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 70 69 74 63  meta[tick]["pitc
5030: 68 22 5d 2c 20 22 31 6e 22 29 3b 0a 20 20 20 20  h"], "1n");.    
5040: 20 20 20 20 20 7d 0a 2d 20 20 20 20 7d 20 65 6c       }.-    } el
5050: 73 65 20 69 66 20 28 63 75 72 72 65 6e 74 5f 73  se if (current_s
5060: 63 65 6e 65 20 3d 3d 20 22 62 61 73 73 22 29 20  cene == "bass") 
5070: 7b 0a 2b 20 20 20 20 0a 2b 20 20 20 20 20 7d 20  {.+    .+     } 
5080: 65 6c 73 65 20 69 66 20 28 63 75 72 72 65 6e 74  else if (current
5090: 5f 73 63 65 6e 65 20 3d 3d 20 22 62 61 73 73 22  _scene == "bass"
50a0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 69 66 20  ) {.         if 
50b0: 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 31 29 20  (track_no == 1) 
50c0: 7b 0a 2d 20 20 20 20 20 20 20 20 20 20 20 20 70  {.-            p
50d0: 28 30 2c 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22  (0, meta[tick]["
50e0: 76 6f 6c 75 6d 65 22 5d 2c 20 6d 65 74 61 5b 74  volume"], meta[t
50f0: 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d 2c 20 22  ick]["pitch"], "
5100: 32 34 6e 22 2c 20 6d 65 74 61 5b 74 69 63 6b 5d  24n", meta[tick]
5110: 5b 22 64 65 6c 61 79 22 5d 20 29 3b 0a 2b 20 20  ["delay"] );.+  
5120: 20 20 20 20 20 20 20 20 70 28 30 2c 20 6d 65 74          p(0, met
5130: 61 5b 74 69 63 6b 5d 5b 22 76 6f 6c 75 6d 65 22  a[tick]["volume"
5140: 5d 2c 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 70  ], meta[tick]["p
5150: 69 74 63 68 22 5d 2c 20 22 32 34 6e 22 2c 20 6d  itch"], "24n", m
5160: 65 74 61 5b 74 69 63 6b 5d 5b 22 64 65 6c 61 79  eta[tick]["delay
5170: 22 5d 20 29 3b 0a 20 20 20 20 20 20 20 20 20 7d  "] );.         }
5180: 0a 20 20 20 20 20 20 20 20 20 69 66 20 28 74 72  .         if (tr
5190: 61 63 6b 5f 6e 6f 20 3d 3d 20 32 29 20 7b 0a 20  ack_no == 2) {. 
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 70 28 31 29              p(1)
51b0: 3b 0a 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20  ;.         }.   
51c0: 20 20 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f        if (track_
51d0: 6e 6f 20 3d 3d 20 33 29 20 7b 0a 2d 20 20 20 20  no == 3) {.-    
51e0: 20 20 20 20 20 20 20 20 70 28 32 29 0a 2b 20 20          p(2).+  
51f0: 20 20 20 20 20 20 20 20 20 70 28 32 29 0a 20 20           p(2).  
5200: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
5210: 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d    if (track_no =
5220: 3d 20 34 29 20 7b 0a 20 20 20 20 20 20 20 20 20  = 4) {.         
5230: 20 20 20 20 70 28 33 2c 20 6e 75 6c 6c 2c 20 6e      p(3, null, n
5240: 75 6c 6c 2c 20 22 31 6e 22 29 3b 0a 40 40 20 2d  ull, "1n");.@@ -
5250: 31 38 39 2c 31 33 20 2b 33 34 31 2c 31 33 20 40  189,13 +341,13 @
5260: 40 20 69 66 20 28 69 73 48 69 74 29 20 7b 0a 20  @ if (isHit) {. 
5270: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
5280: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
5290: 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d    if (track_no =
52a0: 3d 20 36 29 20 7b 0a 2d 20 20 20 20 20 20 20 20  = 6) {.-        
52b0: 20 20 20 70 28 35 2c 20 6e 75 6c 6c 2c 20 6d 65     p(5, null, me
52c0: 74 61 5b 74 69 63 6b 5d 5b 22 70 69 74 63 68 22  ta[tick]["pitch"
52d0: 5d 2c 20 22 31 6e 22 29 3b 0a 2d 20 20 20 20 20  ], "1n");.-     
52e0: 20 20 20 7d 0a 2d 20 20 20 20 20 20 20 20 69 66     }.-        if
52f0: 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 37 29   (track_no == 7)
5300: 20 7b 0a 2d 20 20 20 20 20 20 20 20 20 20 20 20   {.-            
5310: 6d 65 6d 5b 22 63 22 5d 28 6d 65 6d 5b 22 63 22  mem["c"](mem["c"
5320: 5d 28 29 20 2b 20 31 29 3b 0a 2b 20 2f 2f 20 20  ]() + 1);.+ //  
5330: 20 20 20 20 20 20 20 20 70 28 35 2c 20 30 2e 31          p(5, 0.1
5340: 35 2c 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 70  5, meta[tick]["p
5350: 69 74 63 68 22 5d 2c 20 31 29 3b 0a 2b 09 09 2f  itch"], 1);.+../
5360: 2f 09 70 28 39 2c 20 31 2c 20 6d 65 74 61 5b 74  /.p(9, 1, meta[t
5370: 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d 2c 20 31  ick]["pitch"], 1
5380: 29 3b 0a 2b 0a 20 20 20 20 20 20 20 20 20 7d 0a  );.+.         }.
5390: 20 20 20 20 20 7d 20 0a 20 0a 2b 0a 20 7d 0a 20       } . .+. }. 
53a0: 0a 20 0a 64 69 66 66 20 2d 2d 67 69 74 20 61 2f  . .diff --git a/
53b0: 74 61 67 73 20 62 2f 74 61 67 73 0a 64 65 6c 65  tags b/tags.dele
53c0: 74 65 64 20 66 69 6c 65 20 6d 6f 64 65 20 31 30  ted file mode 10
53d0: 30 36 34 34 0a 69 6e 64 65 78 20 65 65 31 37 63  0644.index ee17c
53e0: 38 39 2e 2e 30 30 30 30 30 30 30 0a 2d 2d 2d 20  89..0000000.--- 
53f0: 61 2f 74 61 67 73 0a 2b 2b 2b 20 2f 64 65 76 2f  a/tags.+++ /dev/
5400: 6e 75 6c 6c 0a 40 40 20 2d 31 2c 31 30 20 2b 30  null.@@ -1,10 +0
5410: 2c 30 20 40 40 0a 2d 21 5f 54 41 47 5f 46 49 4c  ,0 @@.-!_TAG_FIL
5420: 45 5f 46 4f 52 4d 41 54 09 32 09 2f 65 78 74 65  E_FORMAT.2./exte
5430: 6e 64 65 64 20 66 6f 72 6d 61 74 3b 20 2d 2d 66  nded format; --f
5440: 6f 72 6d 61 74 3d 31 20 77 69 6c 6c 20 6e 6f 74  ormat=1 will not
5450: 20 61 70 70 65 6e 64 20 3b 22 20 74 6f 20 6c 69   append ;" to li
5460: 6e 65 73 2f 0a 2d 21 5f 54 41 47 5f 46 49 4c 45  nes/.-!_TAG_FILE
5470: 5f 53 4f 52 54 45 44 09 31 09 2f 30 3d 75 6e 73  _SORTED.1./0=uns
5480: 6f 72 74 65 64 2c 20 31 3d 73 6f 72 74 65 64 2c  orted, 1=sorted,
5490: 20 32 3d 66 6f 6c 64 63 61 73 65 2f 0a 2d 21 5f   2=foldcase/.-!_
54a0: 54 41 47 5f 50 52 4f 47 52 41 4d 5f 41 55 54 48  TAG_PROGRAM_AUTH
54b0: 4f 52 09 44 61 72 72 65 6e 20 48 69 65 62 65 72  OR.Darren Hieber
54c0: 74 09 2f 64 68 69 65 62 65 72 74 40 75 73 65 72  t./dhiebert@user
54d0: 73 2e 73 6f 75 72 63 65 66 6f 72 67 65 2e 6e 65  s.sourceforge.ne
54e0: 74 2f 0a 2d 21 5f 54 41 47 5f 50 52 4f 47 52 41  t/.-!_TAG_PROGRA
54f0: 4d 5f 4e 41 4d 45 09 45 78 75 62 65 72 61 6e 74  M_NAME.Exuberant
5500: 20 43 74 61 67 73 09 2f 2f 0a 2d 21 5f 54 41 47   Ctags.//.-!_TAG
5510: 5f 50 52 4f 47 52 41 4d 5f 55 52 4c 09 68 74 74  _PROGRAM_URL.htt
5520: 70 3a 2f 2f 63 74 61 67 73 2e 73 6f 75 72 63 65  p://ctags.source
5530: 66 6f 72 67 65 2e 6e 65 74 09 2f 6f 66 66 69 63  forge.net./offic
5540: 69 61 6c 20 73 69 74 65 2f 0a 2d 21 5f 54 41 47  ial site/.-!_TAG
5550: 5f 50 52 4f 47 52 41 4d 5f 56 45 52 53 49 4f 4e  _PROGRAM_VERSION
5560: 09 35 2e 38 09 2f 2f 0a 2d 70 09 66 69 72 73 74  .5.8.//.-p.first
5570: 2e 6a 73 09 2f 5e 66 75 6e 63 74 69 6f 6e 20 70  .js./^function p
5580: 28 73 2c 20 76 6f 6c 2c 20 20 6e 6f 74 65 2c 20  (s, vol,  note, 
5590: 20 6c 65 6e 2c 20 64 65 6c 61 79 29 20 7b 24 2f   len, delay) {$/
55a0: 3b 22 09 66 0a 2d 70 2e 64 72 61 77 09 66 69 72  ;".f.-p.draw.fir
55b0: 73 74 2e 6a 73 09 2f 5e 20 20 20 20 20 20 20 20  st.js./^        
55c0: 70 2e 64 72 61 77 20 3d 20 66 75 6e 63 74 69 6f  p.draw = functio
55d0: 6e 28 29 20 7b 24 2f 3b 22 09 66 0a 2d 70 2e 73  n() {$/;".f.-p.s
55e0: 65 74 75 70 09 66 69 72 73 74 2e 6a 73 09 2f 5e  etup.first.js./^
55f0: 20 20 20 20 20 20 20 20 70 2e 73 65 74 75 70 20          p.setup 
5600: 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 24 2f  = function() {$/
5610: 3b 22 09 66 0a 2d 72 65 6e 64 65 72 5f 6c 6f 6f  ;".f.-render_loo
5620: 70 09 66 69 72 73 74 2e 6a 73 09 2f 5e 20 20 20  p.first.js./^   
5630: 20 72 65 6e 64 65 72 5f 6c 6f 6f 70 20 3d 20 66   render_loop = f
5640: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 24 2f 3b 22  unction () {$/;"
5650: 09 66 0a 64 69 66 66 20 2d 2d 67 69 74 20 61 2f  .f.diff --git a/
5660: 74 61 67 73 2e 6c 6f 63 6b 20 62 2f 74 61 67 73  tags.lock b/tags
5670: 2e 6c 6f 63 6b 0a 64 65 6c 65 74 65 64 20 66 69  .lock.deleted fi
5680: 6c 65 20 6d 6f 64 65 20 31 30 30 36 34 34 0a 69  le mode 100644.i
5690: 6e 64 65 78 20 30 37 63 61 63 34 65 2e 2e 30 30  ndex 07cac4e..00
56a0: 30 30 30 30 30 0a 2d 2d 2d 20 61 2f 74 61 67 73  00000.--- a/tags
56b0: 2e 6c 6f 63 6b 0a 2b 2b 2b 20 2f 64 65 76 2f 6e  .lock.+++ /dev/n
56c0: 75 6c 6c 0a 40 40 20 2d 31 20 2b 30 2c 30 20 40  ull.@@ -1 +0,0 @
56d0: 40 0a 2d 34 35 36 35 38 0a 64 69 66 66 20 2d 2d  @.-45658.diff --
56e0: 67 69 74 20 61 2f 74 61 67 73 2e 74 65 6d 70 20  git a/tags.temp 
56f0: 62 2f 74 61 67 73 2e 74 65 6d 70 0a 64 65 6c 65  b/tags.temp.dele
5700: 74 65 64 20 66 69 6c 65 20 6d 6f 64 65 20 31 30  ted file mode 10
5710: 30 36 34 34 0a 69 6e 64 65 78 20 65 65 31 37 63  0644.index ee17c
5720: 38 39 2e 2e 30 30 30 30 30 30 30 0a 2d 2d 2d 20  89..0000000.--- 
5730: 61 2f 74 61 67 73 2e 74 65 6d 70 0a 2b 2b 2b 20  a/tags.temp.+++ 
5740: 2f 64 65 76 2f 6e 75 6c 6c 0a 40 40 20 2d 31 2c  /dev/null.@@ -1,
5750: 31 30 20 2b 30 2c 30 20 40 40 0a 2d 21 5f 54 41  10 +0,0 @@.-!_TA
5760: 47 5f 46 49 4c 45 5f 46 4f 52 4d 41 54 09 32 09  G_FILE_FORMAT.2.
5770: 2f 65 78 74 65 6e 64 65 64 20 66 6f 72 6d 61 74  /extended format
5780: 3b 20 2d 2d 66 6f 72 6d 61 74 3d 31 20 77 69 6c  ; --format=1 wil
5790: 6c 20 6e 6f 74 20 61 70 70 65 6e 64 20 3b 22 20  l not append ;" 
57a0: 74 6f 20 6c 69 6e 65 73 2f 0a 2d 21 5f 54 41 47  to lines/.-!_TAG
57b0: 5f 46 49 4c 45 5f 53 4f 52 54 45 44 09 31 09 2f  _FILE_SORTED.1./
57c0: 30 3d 75 6e 73 6f 72 74 65 64 2c 20 31 3d 73 6f  0=unsorted, 1=so
57d0: 72 74 65 64 2c 20 32 3d 66 6f 6c 64 63 61 73 65  rted, 2=foldcase
57e0: 2f 0a 2d 21 5f 54 41 47 5f 50 52 4f 47 52 41 4d  /.-!_TAG_PROGRAM
57f0: 5f 41 55 54 48 4f 52 09 44 61 72 72 65 6e 20 48  _AUTHOR.Darren H
5800: 69 65 62 65 72 74 09 2f 64 68 69 65 62 65 72 74  iebert./dhiebert
5810: 40 75 73 65 72 73 2e 73 6f 75 72 63 65 66 6f 72  @users.sourcefor
5820: 67 65 2e 6e 65 74 2f 0a 2d 21 5f 54 41 47 5f 50  ge.net/.-!_TAG_P
5830: 52 4f 47 52 41 4d 5f 4e 41 4d 45 09 45 78 75 62  ROGRAM_NAME.Exub
5840: 65 72 61 6e 74 20 43 74 61 67 73 09 2f 2f 0a 2d  erant Ctags.//.-
5850: 21 5f 54 41 47 5f 50 52 4f 47 52 41 4d 5f 55 52  !_TAG_PROGRAM_UR
5860: 4c 09 68 74 74 70 3a 2f 2f 63 74 61 67 73 2e 73  L.http://ctags.s
5870: 6f 75 72 63 65 66 6f 72 67 65 2e 6e 65 74 09 2f  ourceforge.net./
5880: 6f 66 66 69 63 69 61 6c 20 73 69 74 65 2f 0a 2d  official site/.-
5890: 21 5f 54 41 47 5f 50 52 4f 47 52 41 4d 5f 56 45  !_TAG_PROGRAM_VE
58a0: 52 53 49 4f 4e 09 35 2e 38 09 2f 2f 0a 2d 70 09  RSION.5.8.//.-p.
58b0: 66 69 72 73 74 2e 6a 73 09 2f 5e 66 75 6e 63 74  first.js./^funct
58c0: 69 6f 6e 20 70 28 73 2c 20 76 6f 6c 2c 20 20 6e  ion p(s, vol,  n
58d0: 6f 74 65 2c 20 20 6c 65 6e 2c 20 64 65 6c 61 79  ote,  len, delay
58e0: 29 20 7b 24 2f 3b 22 09 66 0a 2d 70 2e 64 72 61  ) {$/;".f.-p.dra
58f0: 77 09 66 69 72 73 74 2e 6a 73 09 2f 5e 20 20 20  w.first.js./^   
5900: 20 20 20 20 20 70 2e 64 72 61 77 20 3d 20 66 75       p.draw = fu
5910: 6e 63 74 69 6f 6e 28 29 20 7b 24 2f 3b 22 09 66  nction() {$/;".f
5920: 0a 2d 70 2e 73 65 74 75 70 09 66 69 72 73 74 2e  .-p.setup.first.
5930: 6a 73 09 2f 5e 20 20 20 20 20 20 20 20 70 2e 73  js./^        p.s
5940: 65 74 75 70 20 3d 20 66 75 6e 63 74 69 6f 6e 28  etup = function(
5950: 29 20 7b 24 2f 3b 22 09 66 0a 2d 72 65 6e 64 65  ) {$/;".f.-rende
5960: 72 5f 6c 6f 6f 70 09 66 69 72 73 74 2e 6a 73 09  r_loop.first.js.
5970: 2f 5e 20 20 20 20 72 65 6e 64 65 72 5f 6c 6f 6f  /^    render_loo
5980: 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  p = function () 
5990: 7b 24 2f 3b 22 09 66 0a 0a 63 6f 6d 6d 69 74 20  {$/;".f..commit 
59a0: 66 34 61 30 34 65 61 63 66 37 65 64 36 37 37 66  f4a04eacf7ed677f
59b0: 36 62 36 30 66 62 30 65 61 39 34 34 32 32 39 61  6b60fb0ea944229a
59c0: 30 31 36 66 34 62 36 31 0a 41 75 74 68 6f 72 3a  016f4b61.Author:
59d0: 20 58 79 7a 7a 79 20 41 70 70 73 20 3c 78 79 7a   Xyzzy Apps <xyz
59e0: 7a 79 61 70 70 73 40 67 6d 61 69 6c 2e 63 6f 6d  zyapps@gmail.com
59f0: 3e 0a 44 61 74 65 3a 20 20 20 54 75 65 20 4e 6f  >.Date:   Tue No
5a00: 76 20 32 20 32 32 3a 30 39 3a 32 36 20 32 30 32  v 2 22:09:26 202
5a10: 31 20 2b 30 30 30 30 0a 0a 20 20 20 20 2f 55 73  1 +0000..    /Us
5a20: 65 72 73 2f 64 65 76 2f 70 72 6f 6a 2f 70 72 6f  ers/dev/proj/pro
5a30: 64 75 63 74 69 6f 6e 2f 62 69 74 72 68 79 74 68  duction/bitrhyth
5a40: 6d 2f 73 6f 6e 67 20 6d 6f 64 69 66 69 65 64 0a  m/song modified.
5a50: 0a 64 69 66 66 20 2d 2d 67 69 74 20 61 2f 66 69  .diff --git a/fi
5a60: 72 73 74 2e 6a 73 20 62 2f 66 69 72 73 74 2e 6a  rst.js b/first.j
5a70: 73 0a 69 6e 64 65 78 20 35 62 32 34 32 32 63 2e  s.index 5b2422c.
5a80: 2e 33 38 37 30 31 35 36 20 31 30 30 36 34 34 0a  .3870156 100644.
5a90: 2d 2d 2d 20 61 2f 66 69 72 73 74 2e 6a 73 0a 2b  --- a/first.js.+
5aa0: 2b 2b 20 62 2f 66 69 72 73 74 2e 6a 73 0a 40 40  ++ b/first.js.@@
5ab0: 20 2d 32 2c 37 20 2b 32 2c 37 20 40 40 20 76 6f   -2,7 +2,7 @@ vo
5ac0: 6c 75 6d 65 5f 67 75 61 72 64 31 20 3d 20 67 75  lume_guard1 = gu
5ad0: 61 72 64 28 5b 2d 32 30 2c 31 35 5d 29 0a 20 54  ard([-20,15]). T
5ae0: 6f 6e 65 2e 4d 61 73 74 65 72 2e 76 6f 6c 75 6d  one.Master.volum
5af0: 65 2e 76 61 6c 75 65 20 3d 20 76 6f 6c 75 6d 65  e.value = volume
5b00: 5f 67 75 61 72 64 31 28 4d 61 74 68 2e 72 6f 75  _guard1(Math.rou
5b10: 6e 64 28 64 69 61 6c 73 5b 30 5d 5b 22 63 65 6c  nd(dials[0]["cel
5b20: 6c 22 5d 28 29 20 2a 20 33 30 29 20 2d 32 30 29  l"]() * 30) -20)
5b30: 3b 0a 20 0a 20 69 6e 74 72 6f 20 3d 20 5b 0a 2d  ;. . intro = [.-
5b40: 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78 30 30      cellx("p x00
5b50: 30 20 30 30 30 30 20 30 30 30 30 20 30 30 30 30  0 0000 0000 0000
5b60: 20 22 29 2c 0a 2b 20 20 20 63 65 6c 6c 78 28 22   "),.+   cellx("
5b70: 70 20 78 30 30 30 20 30 30 30 30 20 30 30 30 30  p x000 0000 0000
5b80: 20 30 30 30 30 20 22 29 2c 0a 20 5d 0a 20 0a 20   0000 "),. ]. . 
5b90: 6d 61 69 6e 20 3d 20 5b 0a 40 40 20 2d 31 30 2c  main = [.@@ -10,
5ba0: 37 20 2b 31 30 2c 37 20 40 40 20 6d 61 69 6e 20  7 +10,7 @@ main 
5bb0: 3d 20 5b 0a 20 20 20 20 20 63 65 6c 6c 78 28 22  = [.     cellx("
5bc0: 70 20 30 30 30 30 20 78 30 30 30 20 30 30 30 30  p 0000 x000 0000
5bd0: 20 78 30 30 30 20 22 29 2c 0a 20 20 20 20 20 63   x000 "),.     c
5be0: 65 6c 6c 78 28 22 70 20 78 30 78 30 20 78 30 78  ellx("p x0x0 x0x
5bf0: 30 20 78 30 78 30 20 78 30 78 30 20 22 29 2c 0a  0 x0x0 x0x0 "),.
5c00: 20 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78 30       cellx("p x0
5c10: 30 30 20 30 30 30 30 20 30 30 30 30 20 30 30 30  00 0000 0000 000
5c20: 30 20 22 29 2c 0a 2d 20 20 20 20 63 65 6c 6c 78  0 "),.-    cellx
5c30: 28 22 70 20 30 30 30 30 20 30 30 30 30 20 78 30  ("p 0000 0000 x0
5c40: 78 30 20 30 30 78 30 20 22 29 2c 20 2f 2f 20 6d  x0 00x0 "), // m
5c50: 65 6c 6f 64 79 0a 2b 20 20 20 20 63 65 6c 6c 78  elody.+    cellx
5c60: 28 22 70 20 78 5b 5e 31 32 30 5d 30 30 30 20 30  ("p x[^120]000 0
5c70: 30 30 30 20 30 30 78 5b 5e 31 32 34 5d 30 20 30  000 00x[^124]0 0
5c80: 30 78 5b 5e 31 31 36 5d 30 20 22 29 2c 20 2f 2f  0x[^116]0 "), //
5c90: 20 6d 65 6c 6f 64 79 0a 20 0a 20 5d 0a 20 0a 40   melody. . ]. .@
5ca0: 40 20 2d 31 39 2c 39 20 2b 31 39 2c 39 20 40 40  @ -19,9 +19,9 @@
5cb0: 20 62 61 73 73 20 3d 20 5b 0a 20 20 20 20 20 63   bass = [.     c
5cc0: 65 6c 6c 78 28 22 70 20 30 30 30 30 20 78 30 30  ellx("p 0000 x00
5cd0: 30 20 30 30 30 30 20 78 30 30 30 20 22 29 2c 0a  0 0000 x000 "),.
5ce0: 20 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78 30       cellx("p x0
5cf0: 78 30 20 78 30 78 30 20 78 30 78 30 20 78 30 78  x0 x0x0 x0x0 x0x
5d00: 30 20 22 29 2c 0a 20 20 20 20 20 63 65 6c 6c 78  0 "),.     cellx
5d10: 28 22 70 20 78 30 30 30 20 30 30 30 30 20 30 30  ("p x000 0000 00
5d20: 30 30 20 30 30 30 30 20 22 29 2c 0a 2d 20 20 20  00 0000 "),.-   
5d30: 20 63 65 6c 6c 78 28 22 70 20 78 5b 5e 43 32 5d   cellx("p x[^C2]
5d40: 30 30 30 20 30 30 30 78 2e 20 30 30 78 5b 5e 42  000 000x. 00x[^B
5d50: 31 5d 78 2e 20 78 5b 5e 42 31 5d 78 2e 78 5b 5e  1]x. x[^B1]x.x[^
5d60: 42 31 5d 78 2e 20 22 29 2c 0a 2d 20 20 20 20 63  B1]x. "),.-    c
5d70: 65 6c 6c 78 28 22 70 20 30 30 30 30 20 30 30 30  ellx("p 0000 000
5d80: 30 20 78 30 78 30 20 30 30 78 30 20 22 29 2c 20  0 x0x0 00x0 "), 
5d90: 2f 2f 20 6d 65 6c 6f 64 79 0a 2d 20 20 20 20 63  // melody.-    c
5da0: 65 6c 6c 78 28 22 70 20 30 30 30 30 20 30 30 30  ellx("p 0000 000
5db0: 30 20 30 30 30 30 20 30 30 30 30 22 29 0a 2b 20  0 0000 0000").+ 
5dc0: 20 20 20 63 65 6c 6c 78 28 22 70 20 78 5b 5e 42     cellx("p x[^B
5dd0: 32 5d 78 2e 30 30 20 78 5b 5e 42 32 5d 78 2e 78  2]x.00 x[^B2]x.x
5de0: 5b 5e 42 32 5d 78 2e 20 78 5b 5e 42 32 5d 78 2e  [^B2]x. x[^B2]x.
5df0: 78 5b 5e 42 32 5d 78 2e 78 5b 5e 42 32 5d 78 2e  x[^B2]x.x[^B2]x.
5e00: 30 20 22 29 2c 0a 2b 20 20 20 20 63 65 6c 6c 78  0 "),.+    cellx
5e10: 28 22 70 20 78 5b 5e 31 32 30 5d 30 30 30 20 30  ("p x[^120]000 0
5e20: 30 30 30 20 30 30 78 5b 5e 31 32 34 5d 30 20 30  000 00x[^124]0 0
5e30: 30 78 5b 5e 31 31 36 5d 30 20 22 29 2c 20 2f 2f  0x[^116]0 "), //
5e40: 20 6d 65 6c 6f 64 79 0a 2b 09 63 65 6c 6c 78 28   melody.+.cellx(
5e50: 22 70 20 30 30 30 30 20 30 30 30 30 20 30 30 30  "p 0000 0000 000
5e60: 30 20 30 30 30 30 22 29 0a 20 5d 0a 20 0a 20 66  0 0000"). ]. . f
5e70: 69 6c 6c 20 3d 20 20 63 65 6c 6c 78 28 22 70 20  ill =  cellx("p 
5e80: 78 30 30 30 20 78 30 30 30 20 78 30 78 78 20 30  x000 x000 x0xx 0
5e90: 30 78 30 22 29 0a 40 40 20 2d 36 32 2c 36 20 2b  0x0").@@ -62,6 +
5ea0: 36 32 2c 37 20 40 40 20 66 75 6e 63 74 69 6f 6e  62,7 @@ function
5eb0: 20 6f 6e 63 65 20 28 29 20 7b 0a 20 20 20 20 20   once () {.     
5ec0: 20 20 20 20 20 20 20 20 78 2e 63 61 6e 76 61 73          x.canvas
5ed0: 2e 73 74 79 6c 65 2e 70 6f 73 69 74 69 6f 6e 20  .style.position 
5ee0: 3d 20 22 61 62 73 6f 6c 75 74 65 22 3b 0a 20 20  = "absolute";.  
5ef0: 20 20 20 20 20 20 20 20 20 20 20 70 2e 66 72 61             p.fra
5f00: 6d 65 52 61 74 65 28 32 29 3b 0a 20 20 20 20 20  meRate(2);.     
5f10: 20 20 20 20 20 20 20 20 69 6d 67 20 3d 20 70 2e          img = p.
5f20: 6c 6f 61 64 49 6d 61 67 65 28 27 2f 74 65 73 74  loadImage('/test
5f30: 33 2e 70 6e 67 27 29 3b 0a 2b 20 20 20 20 20 20  3.png');.+      
5f40: 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f        console.lo
5f50: 67 28 69 6d 67 29 3b 0a 20 20 20 20 20 20 20 20  g(img);.        
5f60: 20 7d 3b 0a 20 0a 20 20 20 20 20 20 20 20 20 70   };. .         p
5f70: 2e 64 72 61 77 20 3d 20 66 75 6e 63 74 69 6f 6e  .draw = function
5f80: 28 29 20 7b 0a 40 40 20 2d 37 39 2c 37 20 2b 38  () {.@@ -79,7 +8
5f90: 30 2c 37 20 40 40 20 66 75 6e 63 74 69 6f 6e 20  0,7 @@ function 
5fa0: 6f 6e 63 65 20 28 29 20 7b 0a 20 20 20 20 20 6c  once () {.     l
5fb0: 65 74 20 6d 79 70 35 20 3d 20 6e 65 77 20 70 35  et myp5 = new p5
5fc0: 28 73 2c 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65  (s,  document.ge
5fd0: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 63 61  tElementById('ca
5fe0: 6e 76 61 73 2d 63 6f 6e 74 61 69 6e 65 72 27 29  nvas-container')
5ff0: 29 3b 0a 20 0a 20 20 20 20 20 72 65 6e 64 65 72  );. .     render
6000: 5f 6c 6f 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e  _loop = function
6010: 20 28 29 20 7b 0a 2d 20 20 20 20 20 20 20 20 2f   () {.-        /
6020: 2f 20 20 20 20 09 70 72 2e 72 65 63 74 28 78 2c  /    .pr.rect(x,
6030: 79 2c 35 30 2c 35 30 29 3b 0a 2b 2f 2f 20 20 20  y,50,50);.+//   
6040: 20 09 70 72 2e 72 65 63 74 28 78 2c 79 2c 35 30   .pr.rect(x,y,50
6050: 2c 35 30 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 20  ,50);.     }. . 
6060: 20 20 20 20 54 6f 6e 65 2e 4d 61 73 74 65 72 2e      Tone.Master.
6070: 76 6f 6c 75 6d 65 2e 76 61 6c 75 65 20 3d 20 2d  volume.value = -
6080: 33 30 0a 40 40 20 2d 38 39 2c 34 30 20 2b 39 30  30.@@ -89,40 +90
6090: 2c 34 31 20 40 40 20 66 75 6e 63 74 69 6f 6e 20  ,41 @@ function 
60a0: 6f 6e 63 65 20 28 29 20 7b 0a 20 20 20 20 20 53  once () {.     S
60b0: 61 6d 70 6c 65 28 22 68 22 2c 32 2c 20 6e 75 6c  ample("h",2, nul
60c0: 6c 2c 20 2d 31 35 29 3b 0a 20 20 20 20 20 53 61  l, -15);.     Sa
60d0: 6d 70 6c 65 28 22 6d 22 2c 33 2c 20 6e 75 6c 6c  mple("m",3, null
60e0: 2c 20 2d 31 35 29 3b 0a 20 20 20 20 20 53 61 6d  , -15);.     Sam
60f0: 70 6c 65 28 22 66 22 2c 34 2c 20 6e 75 6c 6c 2c  ple("f",4, null,
6100: 20 2d 31 35 29 3b 0a 2d 20 20 20 20 53 61 6d 70   -15);.-    Samp
6110: 6c 65 28 22 73 22 2c 35 2c 20 6e 75 6c 6c 2c 20  le("s",5, null, 
6120: 2d 31 35 29 3b 0a 2b 20 20 20 20 53 61 6d 70 6c  -15);.+    Sampl
6130: 65 28 22 73 22 2c 35 2c 20 39 30 30 2c 20 2d 31  e("s",5, 900, -1
6140: 35 29 3b 0a 20 0a 20 0a 20 20 20 20 20 6d 65 6d  5);. . .     mem
6150: 5b 22 63 22 5d 20 3d 20 63 65 6c 6c 78 28 31 29  ["c"] = cellx(1)
6160: 3b 0a 20 20 20 20 20 6d 65 6d 5b 22 63 22 5d 2e  ;.     mem["c"].
6170: 6f 6e 43 68 61 6e 67 65 28 66 75 6e 63 74 69 6f  onChange(functio
6180: 6e 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20  n (e) {.        
6190: 20 76 61 72 20 76 61 6c 20 3d 20 70 61 72 73 65   var val = parse
61a0: 49 6e 74 28 65 5b 22 64 61 74 61 22 5d 2e 76 61  Int(e["data"].va
61b0: 6c 75 65 29 3b 0a 2d 0a 2b 20 20 20 20 20 20 20  lue);.-.+       
61c0: 20 0a 20 20 20 20 20 20 20 20 20 70 28 30 2c 6e   .         p(0,n
61d0: 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 32 34 6e 22  ull, null, "24n"
61e0: 29 3b 0a 20 20 20 20 20 20 20 20 20 73 65 74 54  );.         setT
61f0: 69 6d 65 6f 75 74 28 66 75 6e 63 74 69 6f 6e 20  imeout(function 
6200: 28 29 20 7b 0a 2d 20 20 20 20 20 20 20 20 20 20  () {.-          
6210: 20 20 70 28 34 2c 20 6e 75 6c 6c 2c 20 6e 75 6c    p(4, null, nul
6220: 6c 2c 20 22 34 6e 22 29 0a 2b 20 20 20 20 20 20  l, "4n").+      
6230: 20 20 09 70 28 34 2c 20 6e 75 6c 6c 2c 20 6e 75    .p(4, null, nu
6240: 6c 6c 2c 20 22 34 6e 22 29 0a 20 20 20 20 20 20  ll, "4n").      
6250: 20 20 20 7d 2c 20 64 65 6c 74 61 20 2a 20 32 29     }, delta * 2)
6260: 3b 0a 2d 0a 2b 20 20 20 20 20 20 20 20 0a 20 20  ;.-.+        .  
6270: 20 20 20 7d 29 0a 20 20 20 20 20 6d 65 6d 5b 22     }).     mem["
6280: 63 22 5d 2e 6f 6e 45 72 72 6f 72 28 66 75 6e 63  c"].onError(func
6290: 74 69 6f 6e 20 28 65 29 20 7b 0a 20 20 20 20 20  tion (e) {.     
62a0: 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28      console.log(
62b0: 65 29 3b 0a 2b 0a 20 20 20 20 20 7d 29 0a 20 0a  e);.+.     }). .
62c0: 20 20 20 20 20 63 6f 6e 73 74 20 61 75 64 69 6f       const audio
62d0: 20 3d 20 41 75 64 69 6f 28 29 3b 0a 20 20 20 20   = Audio();.    
62e0: 20 63 6f 6e 73 74 20 74 68 72 65 65 20 3d 20 54   const three = T
62f0: 68 72 65 65 4f 68 55 6e 69 74 28 61 75 64 69 6f  hreeOhUnit(audio
6300: 2c 20 22 73 61 77 74 6f 6f 74 68 22 2c 20 7b 0a  , "sawtooth", {.
6310: 2d 20 20 20 20 20 20 20 20 22 63 75 74 6f 66 66  -        "cutoff
6320: 22 3a 20 31 30 30 2c 0a 2d 20 20 20 20 20 20 20  ": 100,.-       
6330: 20 22 72 65 73 6f 6e 61 6e 63 65 22 3a 20 31 35   "resonance": 15
6340: 2c 0a 2d 20 20 20 20 20 20 20 20 22 65 6e 76 4d  ,.-        "envM
6350: 6f 64 22 3a 20 34 30 30 30 2c 0a 2d 20 20 20 20  od": 4000,.-    
6360: 20 20 20 20 22 64 65 63 61 79 22 3a 20 30 2e 35      "decay": 0.5
6370: 0a 2d 20 20 20 20 7d 0a 2d 20 20 20 20 29 0a 2d  .-    }.-    ).-
6380: 20 20 20 20 61 75 64 69 6f 2e 6d 61 73 74 65 72      audio.master
6390: 2e 69 6e 2e 67 61 69 6e 2e 76 61 6c 75 65 20 3d  .in.gain.value =
63a0: 20 30 2e 32 3b 0a 2b 20 20 20 20 20 20 20 20 20   0.2;.+         
63b0: 20 20 20 22 63 75 74 6f 66 66 22 3a 20 38 36 2c     "cutoff": 86,
63c0: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 22 72  .+            "r
63d0: 65 73 6f 6e 61 6e 63 65 22 3a 20 31 35 2c 0a 2b  esonance": 15,.+
63e0: 20 20 20 20 20 20 20 20 20 20 20 20 22 65 6e 76              "env
63f0: 4d 6f 64 22 3a 20 34 30 30 30 2c 0a 2b 20 20 20  Mod": 4000,.+   
6400: 20 20 20 20 20 20 20 20 20 22 64 65 63 61 79 22           "decay"
6410: 3a 20 30 2e 35 0a 2b 20 20 20 20 20 20 20 20 7d  : 0.5.+        }
6420: 0a 2b 09 29 0a 2b 20 20 20 20 61 75 64 69 6f 2e  .+.).+    audio.
6430: 6d 61 73 74 65 72 2e 69 6e 2e 67 61 69 6e 2e 76  master.in.gain.v
6440: 61 6c 75 65 20 3d 20 30 2e 31 3b 0a 20 20 20 20  alue = 0.1;.    
6450: 20 6d 65 6d 5b 22 74 68 72 65 65 22 5d 20 3d 20   mem["three"] = 
6460: 74 68 72 65 65 0a 2d 0a 2b 20 20 20 20 0a 20 20  three.-.+    .  
6470: 20 20 20 2f 2f 20 63 75 74 6f 66 66 20 5b 33 30     // cutoff [30
6480: 2c 20 37 30 30 5d 2c 20 34 30 30 0a 20 20 20 20  , 700], 400.    
6490: 20 2f 2f 20 72 65 73 6f 6e 61 6e 63 65 3a 20 5b   // resonance: [
64a0: 31 2c 20 33 30 5d 2c 20 31 35 0a 20 20 20 20 20  1, 30], 15.     
64b0: 2f 2f 20 65 6e 76 4d 6f 64 3a 20 5b 30 2c 20 38  // envMod: [0, 8
64c0: 30 30 30 5d 2c 20 34 30 30 30 0a 20 20 20 20 20  000], 4000.     
64d0: 2f 2f 20 64 65 63 61 79 3a 20 5b 30 2e 31 2c 20  // decay: [0.1, 
64e0: 30 2e 39 5d 2c 20 30 2e 35 0a 2d 0a 2d 20 20 20  0.9], 0.5.-.-   
64f0: 20 64 69 61 6c 73 5b 31 5d 5b 22 63 65 6c 6c 22   dials[1]["cell"
6500: 5d 28 30 2e 30 31 30 30 29 0a 2b 20 20 20 20 0a  ](0.0100).+    .
6510: 2b 20 20 20 20 64 69 61 6c 73 5b 31 5d 5b 22 63  +    dials[1]["c
6520: 65 6c 6c 22 5d 28 30 2e 30 38 36 30 29 0a 20 0a  ell"](0.0860). .
6530: 20 20 20 20 20 64 69 61 6c 73 5b 31 5d 5b 22 63       dials[1]["c
6540: 65 6c 6c 22 5d 2e 6f 6e 43 68 61 6e 67 65 28 66  ell"].onChange(f
6550: 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a 20 20  unction (e) {.  
6560: 20 20 20 20 20 20 20 76 61 72 20 76 61 6c 20 3d         var val =
6570: 20 70 61 72 73 65 46 6c 6f 61 74 28 65 5b 22 64   parseFloat(e["d
6580: 61 74 61 22 5d 2e 76 61 6c 75 65 29 3b 0a 40 40  ata"].value);.@@
6590: 20 2d 31 33 34 2c 37 20 2b 31 33 36 2c 31 34 20   -134,7 +136,14 
65a0: 40 40 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 63 65  @@ function once
65b0: 20 28 29 20 7b 0a 20 0a 20 0a 20 74 72 61 6e 73   () {. . . trans
65c0: 69 74 69 6f 6e 20 3d 20 6f 6e 63 65 3b 0a 2b 69  ition = once;.+i
65d0: 66 20 28 62 61 72 73 20 3c 3d 20 32 29 20 7b 0a  f (bars <= 2) {.
65e0: 2b 09 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 20  +.current_scene 
65f0: 3d 20 22 69 6e 74 72 6f 22 3b 0a 2b 7d 20 65 6c  = "intro";.+} el
6600: 73 65 20 7b 0a 2b 09 63 75 72 72 65 6e 74 5f 73  se {.+.current_s
6610: 63 65 6e 65 20 3d 20 22 6d 61 69 6e 22 3b 0a 2b  cene = "main";.+
6620: 7d 0a 2b 0a 20 63 75 72 72 65 6e 74 5f 73 63 65  }.+. current_sce
6630: 6e 65 20 3d 20 22 62 61 73 73 22 3b 0a 2b 0a 20  ne = "bass";.+. 
6640: 70 61 74 74 65 72 6e 73 20 3d 20 65 76 61 6c 28  patterns = eval(
6650: 60 24 7b 63 75 72 72 65 6e 74 5f 73 63 65 6e 65  `${current_scene
6660: 7d 60 29 3b 0a 20 61 6c 77 61 79 73 28 29 3b 0a  }`);. always();.
6670: 20 0a 40 40 20 2d 31 35 36 2c 38 20 2b 31 36 35   .@@ -156,8 +165
6680: 2c 38 20 40 40 20 69 66 20 28 69 73 48 69 74 29  ,8 @@ if (isHit)
6690: 20 7b 0a 20 20 20 20 20 20 20 20 20 69 66 20 28   {.         if (
66a0: 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 34 29 20 7b  track_no == 4) {
66b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 70 28  .             p(
66c0: 33 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22  3, null, null, "
66d0: 31 6e 22 29 3b 0a 20 20 20 20 20 20 20 20 20 7d  1n");.         }
66e0: 0a 2d 20 20 20 20 20 20 20 20 69 66 20 28 74 72  .-        if (tr
66f0: 61 63 6b 5f 6e 6f 20 3d 3d 20 35 29 20 7b 0a 2d  ack_no == 5) {.-
6700: 20 20 20 20 20 20 20 20 20 20 20 20 70 28 35 2c              p(5,
6710: 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 31 6e   null, null, "1n
6720: 22 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 69 66  ");.+         if
6730: 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 35 29   (track_no == 5)
6740: 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20   {.+            
6750: 70 28 35 2c 20 30 2e 33 2c 20 6d 65 74 61 5b 74  p(5, 0.3, meta[t
6760: 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d 2c 20 22  ick]["pitch"], "
6770: 31 6e 22 29 3b 0a 20 20 20 20 20 20 20 20 20 7d  1n");.         }
6780: 0a 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20  .     } else if 
6790: 28 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 20 3d  (current_scene =
67a0: 3d 20 22 62 61 73 73 22 29 20 7b 0a 20 20 20 20  = "bass") {.    
67b0: 20 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e       if (track_n
67c0: 6f 20 3d 3d 20 31 29 20 7b 0a 40 40 20 2d 31 38  o == 1) {.@@ -18
67d0: 30 2c 31 32 20 2b 31 38 39 2c 31 33 20 40 40 20  0,12 +189,13 @@ 
67e0: 69 66 20 28 69 73 48 69 74 29 20 7b 0a 20 20 20  if (isHit) {.   
67f0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
6800: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
6810: 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20  if (track_no == 
6820: 36 29 20 7b 0a 2d 20 20 20 20 20 20 20 20 20 20  6) {.-          
6830: 20 20 70 28 35 2c 20 6e 75 6c 6c 2c 20 6e 75 6c    p(5, null, nul
6840: 6c 2c 20 22 31 6e 22 29 3b 0a 2b 20 20 20 20 20  l, "1n");.+     
6850: 20 20 20 20 20 20 70 28 35 2c 20 6e 75 6c 6c 2c        p(5, null,
6860: 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 70 69 74   meta[tick]["pit
6870: 63 68 22 5d 2c 20 22 31 6e 22 29 3b 0a 20 20 20  ch"], "1n");.   
6880: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
6890: 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d   if (track_no ==
68a0: 20 37 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20   7) {.          
68b0: 20 20 20 6d 65 6d 5b 22 63 22 5d 28 6d 65 6d 5b     mem["c"](mem[
68c0: 22 63 22 5d 28 29 20 2b 20 31 29 3b 0a 20 20 20  "c"]() + 1);.   
68d0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 7d 20 0a        }.     } .
68e0: 2b 0a 20 7d 0a 20 0a 20 0a 64 69 66 66 20 2d 2d  +. }. . .diff --
68f0: 67 69 74 20 61 2f 74 61 67 73 2e 6c 6f 63 6b 20  git a/tags.lock 
6900: 62 2f 74 61 67 73 2e 6c 6f 63 6b 0a 6e 65 77 20  b/tags.lock.new 
6910: 66 69 6c 65 20 6d 6f 64 65 20 31 30 30 36 34 34  file mode 100644
6920: 0a 69 6e 64 65 78 20 30 30 30 30 30 30 30 2e 2e  .index 0000000..
6930: 30 37 63 61 63 34 65 0a 2d 2d 2d 20 2f 64 65 76  07cac4e.--- /dev
6940: 2f 6e 75 6c 6c 0a 2b 2b 2b 20 62 2f 74 61 67 73  /null.+++ b/tags
6950: 2e 6c 6f 63 6b 0a 40 40 20 2d 30 2c 30 20 2b 31  .lock.@@ -0,0 +1
6960: 20 40 40 0a 2b 34 35 36 35 38 0a 64 69 66 66 20   @@.+45658.diff 
6970: 2d 2d 67 69 74 20 61 2f 74 61 67 73 2e 74 65 6d  --git a/tags.tem
6980: 70 20 62 2f 74 61 67 73 2e 74 65 6d 70 0a 6e 65  p b/tags.temp.ne
6990: 77 20 66 69 6c 65 20 6d 6f 64 65 20 31 30 30 36  w file mode 1006
69a0: 34 34 0a 69 6e 64 65 78 20 30 30 30 30 30 30 30  44.index 0000000
69b0: 2e 2e 65 65 31 37 63 38 39 0a 2d 2d 2d 20 2f 64  ..ee17c89.--- /d
69c0: 65 76 2f 6e 75 6c 6c 0a 2b 2b 2b 20 62 2f 74 61  ev/null.+++ b/ta
69d0: 67 73 2e 74 65 6d 70 0a 40 40 20 2d 30 2c 30 20  gs.temp.@@ -0,0 
69e0: 2b 31 2c 31 30 20 40 40 0a 2b 21 5f 54 41 47 5f  +1,10 @@.+!_TAG_
69f0: 46 49 4c 45 5f 46 4f 52 4d 41 54 09 32 09 2f 65  FILE_FORMAT.2./e
6a00: 78 74 65 6e 64 65 64 20 66 6f 72 6d 61 74 3b 20  xtended format; 
6a10: 2d 2d 66 6f 72 6d 61 74 3d 31 20 77 69 6c 6c 20  --format=1 will 
6a20: 6e 6f 74 20 61 70 70 65 6e 64 20 3b 22 20 74 6f  not append ;" to
6a30: 20 6c 69 6e 65 73 2f 0a 2b 21 5f 54 41 47 5f 46   lines/.+!_TAG_F
6a40: 49 4c 45 5f 53 4f 52 54 45 44 09 31 09 2f 30 3d  ILE_SORTED.1./0=
6a50: 75 6e 73 6f 72 74 65 64 2c 20 31 3d 73 6f 72 74  unsorted, 1=sort
6a60: 65 64 2c 20 32 3d 66 6f 6c 64 63 61 73 65 2f 0a  ed, 2=foldcase/.
6a70: 2b 21 5f 54 41 47 5f 50 52 4f 47 52 41 4d 5f 41  +!_TAG_PROGRAM_A
6a80: 55 54 48 4f 52 09 44 61 72 72 65 6e 20 48 69 65  UTHOR.Darren Hie
6a90: 62 65 72 74 09 2f 64 68 69 65 62 65 72 74 40 75  bert./dhiebert@u
6aa0: 73 65 72 73 2e 73 6f 75 72 63 65 66 6f 72 67 65  sers.sourceforge
6ab0: 2e 6e 65 74 2f 0a 2b 21 5f 54 41 47 5f 50 52 4f  .net/.+!_TAG_PRO
6ac0: 47 52 41 4d 5f 4e 41 4d 45 09 45 78 75 62 65 72  GRAM_NAME.Exuber
6ad0: 61 6e 74 20 43 74 61 67 73 09 2f 2f 0a 2b 21 5f  ant Ctags.//.+!_
6ae0: 54 41 47 5f 50 52 4f 47 52 41 4d 5f 55 52 4c 09  TAG_PROGRAM_URL.
6af0: 68 74 74 70 3a 2f 2f 63 74 61 67 73 2e 73 6f 75  http://ctags.sou
6b00: 72 63 65 66 6f 72 67 65 2e 6e 65 74 09 2f 6f 66  rceforge.net./of
6b10: 66 69 63 69 61 6c 20 73 69 74 65 2f 0a 2b 21 5f  ficial site/.+!_
6b20: 54 41 47 5f 50 52 4f 47 52 41 4d 5f 56 45 52 53  TAG_PROGRAM_VERS
6b30: 49 4f 4e 09 35 2e 38 09 2f 2f 0a 2b 70 09 66 69  ION.5.8.//.+p.fi
6b40: 72 73 74 2e 6a 73 09 2f 5e 66 75 6e 63 74 69 6f  rst.js./^functio
6b50: 6e 20 70 28 73 2c 20 76 6f 6c 2c 20 20 6e 6f 74  n p(s, vol,  not
6b60: 65 2c 20 20 6c 65 6e 2c 20 64 65 6c 61 79 29 20  e,  len, delay) 
6b70: 7b 24 2f 3b 22 09 66 0a 2b 70 2e 64 72 61 77 09  {$/;".f.+p.draw.
6b80: 66 69 72 73 74 2e 6a 73 09 2f 5e 20 20 20 20 20  first.js./^     
6b90: 20 20 20 70 2e 64 72 61 77 20 3d 20 66 75 6e 63     p.draw = func
6ba0: 74 69 6f 6e 28 29 20 7b 24 2f 3b 22 09 66 0a 2b  tion() {$/;".f.+
6bb0: 70 2e 73 65 74 75 70 09 66 69 72 73 74 2e 6a 73  p.setup.first.js
6bc0: 09 2f 5e 20 20 20 20 20 20 20 20 70 2e 73 65 74  ./^        p.set
6bd0: 75 70 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20  up = function() 
6be0: 7b 24 2f 3b 22 09 66 0a 2b 72 65 6e 64 65 72 5f  {$/;".f.+render_
6bf0: 6c 6f 6f 70 09 66 69 72 73 74 2e 6a 73 09 2f 5e  loop.first.js./^
6c00: 20 20 20 20 72 65 6e 64 65 72 5f 6c 6f 6f 70 20      render_loop 
6c10: 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 24  = function () {$
6c20: 2f 3b 22 09 66 0a 0a 63 6f 6d 6d 69 74 20 64 65  /;".f..commit de
6c30: 61 62 39 66 34 36 33 32 66 66 39 34 32 36 33 65  ab9f4632ff94263e
6c40: 39 39 62 37 32 63 63 37 63 38 31 37 31 30 38 63  99b72cc7c817108c
6c50: 66 62 31 33 64 37 0a 41 75 74 68 6f 72 3a 20 58  fb13d7.Author: X
6c60: 79 7a 7a 79 20 41 70 70 73 20 3c 78 79 7a 7a 79  yzzy Apps <xyzzy
6c70: 61 70 70 73 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a  apps@gmail.com>.
6c80: 44 61 74 65 3a 20 20 20 4d 6f 6e 20 4e 6f 76 20  Date:   Mon Nov 
6c90: 31 20 32 30 3a 30 38 3a 31 31 20 32 30 32 31 20  1 20:08:11 2021 
6ca0: 2b 30 30 30 30 0a 0a 20 20 20 20 2f 55 73 65 72  +0000..    /User
6cb0: 73 2f 64 65 76 2f 70 72 6f 6a 2f 70 72 6f 64 75  s/dev/proj/produ
6cc0: 63 74 69 6f 6e 2f 62 69 74 72 68 79 74 68 6d 2f  ction/bitrhythm/
6cd0: 73 6f 6e 67 20 6d 6f 64 69 66 69 65 64 0a 0a 64  song modified..d
6ce0: 69 66 66 20 2d 2d 67 69 74 20 61 2f 74 61 67 73  iff --git a/tags
6cf0: 20 62 2f 74 61 67 73 0a 6e 65 77 20 66 69 6c 65   b/tags.new file
6d00: 20 6d 6f 64 65 20 31 30 30 36 34 34 0a 69 6e 64   mode 100644.ind
6d10: 65 78 20 30 30 30 30 30 30 30 2e 2e 65 65 31 37  ex 0000000..ee17
6d20: 63 38 39 0a 2d 2d 2d 20 2f 64 65 76 2f 6e 75 6c  c89.--- /dev/nul
6d30: 6c 0a 2b 2b 2b 20 62 2f 74 61 67 73 0a 40 40 20  l.+++ b/tags.@@ 
6d40: 2d 30 2c 30 20 2b 31 2c 31 30 20 40 40 0a 2b 21  -0,0 +1,10 @@.+!
6d50: 5f 54 41 47 5f 46 49 4c 45 5f 46 4f 52 4d 41 54  _TAG_FILE_FORMAT
6d60: 09 32 09 2f 65 78 74 65 6e 64 65 64 20 66 6f 72  .2./extended for
6d70: 6d 61 74 3b 20 2d 2d 66 6f 72 6d 61 74 3d 31 20  mat; --format=1 
6d80: 77 69 6c 6c 20 6e 6f 74 20 61 70 70 65 6e 64 20  will not append 
6d90: 3b 22 20 74 6f 20 6c 69 6e 65 73 2f 0a 2b 21 5f  ;" to lines/.+!_
6da0: 54 41 47 5f 46 49 4c 45 5f 53 4f 52 54 45 44 09  TAG_FILE_SORTED.
6db0: 31 09 2f 30 3d 75 6e 73 6f 72 74 65 64 2c 20 31  1./0=unsorted, 1
6dc0: 3d 73 6f 72 74 65 64 2c 20 32 3d 66 6f 6c 64 63  =sorted, 2=foldc
6dd0: 61 73 65 2f 0a 2b 21 5f 54 41 47 5f 50 52 4f 47  ase/.+!_TAG_PROG
6de0: 52 41 4d 5f 41 55 54 48 4f 52 09 44 61 72 72 65  RAM_AUTHOR.Darre
6df0: 6e 20 48 69 65 62 65 72 74 09 2f 64 68 69 65 62  n Hiebert./dhieb
6e00: 65 72 74 40 75 73 65 72 73 2e 73 6f 75 72 63 65  ert@users.source
6e10: 66 6f 72 67 65 2e 6e 65 74 2f 0a 2b 21 5f 54 41  forge.net/.+!_TA
6e20: 47 5f 50 52 4f 47 52 41 4d 5f 4e 41 4d 45 09 45  G_PROGRAM_NAME.E
6e30: 78 75 62 65 72 61 6e 74 20 43 74 61 67 73 09 2f  xuberant Ctags./
6e40: 2f 0a 2b 21 5f 54 41 47 5f 50 52 4f 47 52 41 4d  /.+!_TAG_PROGRAM
6e50: 5f 55 52 4c 09 68 74 74 70 3a 2f 2f 63 74 61 67  _URL.http://ctag
6e60: 73 2e 73 6f 75 72 63 65 66 6f 72 67 65 2e 6e 65  s.sourceforge.ne
6e70: 74 09 2f 6f 66 66 69 63 69 61 6c 20 73 69 74 65  t./official site
6e80: 2f 0a 2b 21 5f 54 41 47 5f 50 52 4f 47 52 41 4d  /.+!_TAG_PROGRAM
6e90: 5f 56 45 52 53 49 4f 4e 09 35 2e 38 09 2f 2f 0a  _VERSION.5.8.//.
6ea0: 2b 70 09 66 69 72 73 74 2e 6a 73 09 2f 5e 66 75  +p.first.js./^fu
6eb0: 6e 63 74 69 6f 6e 20 70 28 73 2c 20 76 6f 6c 2c  nction p(s, vol,
6ec0: 20 20 6e 6f 74 65 2c 20 20 6c 65 6e 2c 20 64 65    note,  len, de
6ed0: 6c 61 79 29 20 7b 24 2f 3b 22 09 66 0a 2b 70 2e  lay) {$/;".f.+p.
6ee0: 64 72 61 77 09 66 69 72 73 74 2e 6a 73 09 2f 5e  draw.first.js./^
6ef0: 20 20 20 20 20 20 20 20 70 2e 64 72 61 77 20 3d          p.draw =
6f00: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 24 2f 3b   function() {$/;
6f10: 22 09 66 0a 2b 70 2e 73 65 74 75 70 09 66 69 72  ".f.+p.setup.fir
6f20: 73 74 2e 6a 73 09 2f 5e 20 20 20 20 20 20 20 20  st.js./^        
6f30: 70 2e 73 65 74 75 70 20 3d 20 66 75 6e 63 74 69  p.setup = functi
6f40: 6f 6e 28 29 20 7b 24 2f 3b 22 09 66 0a 2b 72 65  on() {$/;".f.+re
6f50: 6e 64 65 72 5f 6c 6f 6f 70 09 66 69 72 73 74 2e  nder_loop.first.
6f60: 6a 73 09 2f 5e 20 20 20 20 72 65 6e 64 65 72 5f  js./^    render_
6f70: 6c 6f 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20  loop = function 
6f80: 28 29 20 7b 24 2f 3b 22 09 66 0a 64 69 66 66 20  () {$/;".f.diff 
6f90: 2d 2d 67 69 74 20 61 2f 74 61 67 73 2e 6c 6f 63  --git a/tags.loc
6fa0: 6b 20 62 2f 74 61 67 73 2e 6c 6f 63 6b 0a 64 65  k b/tags.lock.de
6fb0: 6c 65 74 65 64 20 66 69 6c 65 20 6d 6f 64 65 20  leted file mode 
6fc0: 31 30 30 36 34 34 0a 69 6e 64 65 78 20 65 36 30  100644.index e60
6fd0: 65 34 63 38 2e 2e 30 30 30 30 30 30 30 0a 2d 2d  e4c8..0000000.--
6fe0: 2d 20 61 2f 74 61 67 73 2e 6c 6f 63 6b 0a 2b 2b  - a/tags.lock.++
6ff0: 2b 20 2f 64 65 76 2f 6e 75 6c 6c 0a 40 40 20 2d  + /dev/null.@@ -
7000: 31 20 2b 30 2c 30 20 40 40 0a 2d 33 31 32 34 37  1 +0,0 @@.-31247
7010: 0a 0a 63 6f 6d 6d 69 74 20 33 66 32 62 31 34 39  ..commit 3f2b149
7020: 62 64 65 34 37 31 62 66 37 31 65 64 66 38 63 61  bde471bf71edf8ca
7030: 37 33 33 35 30 63 61 35 37 64 31 66 30 32 36 61  73350ca57d1f026a
7040: 61 0a 41 75 74 68 6f 72 3a 20 58 79 7a 7a 79 20  a.Author: Xyzzy 
7050: 41 70 70 73 20 3c 78 79 7a 7a 79 61 70 70 73 40  Apps <xyzzyapps@
7060: 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 44 61 74 65 3a  gmail.com>.Date:
7070: 20 20 20 4d 6f 6e 20 4e 6f 76 20 31 20 32 30 3a     Mon Nov 1 20:
7080: 30 38 3a 31 31 20 32 30 32 31 20 2b 30 30 30 30  08:11 2021 +0000
7090: 0a 0a 20 20 20 20 2f 55 73 65 72 73 2f 64 65 76  ..    /Users/dev
70a0: 2f 70 72 6f 6a 2f 70 72 6f 64 75 63 74 69 6f 6e  /proj/production
70b0: 2f 62 69 74 72 68 79 74 68 6d 2f 73 6f 6e 67 2f  /bitrhythm/song/
70c0: 74 61 67 73 2e 6c 6f 63 6b 20 63 72 65 61 74 65  tags.lock create
70d0: 64 0a 0a 64 69 66 66 20 2d 2d 67 69 74 20 61 2f  d..diff --git a/
70e0: 74 61 67 73 2e 6c 6f 63 6b 20 62 2f 74 61 67 73  tags.lock b/tags
70f0: 2e 6c 6f 63 6b 0a 6e 65 77 20 66 69 6c 65 20 6d  .lock.new file m
7100: 6f 64 65 20 31 30 30 36 34 34 0a 69 6e 64 65 78  ode 100644.index
7110: 20 30 30 30 30 30 30 30 2e 2e 65 36 30 65 34 63   0000000..e60e4c
7120: 38 0a 2d 2d 2d 20 2f 64 65 76 2f 6e 75 6c 6c 0a  8.--- /dev/null.
7130: 2b 2b 2b 20 62 2f 74 61 67 73 2e 6c 6f 63 6b 0a  +++ b/tags.lock.
7140: 40 40 20 2d 30 2c 30 20 2b 31 20 40 40 0a 2b 33  @@ -0,0 +1 @@.+3
7150: 31 32 34 37 0a 0a 63 6f 6d 6d 69 74 20 65 63 66  1247..commit ecf
7160: 66 65 35 37 62 36 38 64 31 62 33 37 66 36 36 38  fe57b68d1b37f668
7170: 39 33 33 32 62 64 37 66 34 65 61 37 37 33 39 63  9332bd7f4ea7739c
7180: 33 66 39 61 64 0a 41 75 74 68 6f 72 3a 20 58 79  3f9ad.Author: Xy
7190: 7a 7a 79 20 41 70 70 73 20 3c 78 79 7a 7a 79 61  zzy Apps <xyzzya
71a0: 70 70 73 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 44  pps@gmail.com>.D
71b0: 61 74 65 3a 20 20 20 4d 6f 6e 20 4e 6f 76 20 31  ate:   Mon Nov 1
71c0: 20 30 37 3a 33 39 3a 33 32 20 32 30 32 31 20 2b   07:39:32 2021 +
71d0: 30 30 30 30 0a 0a 20 20 20 20 2f 55 73 65 72 73  0000..    /Users
71e0: 2f 64 65 76 2f 70 72 6f 6a 2f 70 72 6f 64 75 63  /dev/proj/produc
71f0: 74 69 6f 6e 2f 62 69 74 72 68 79 74 68 6d 2f 73  tion/bitrhythm/s
7200: 6f 6e 67 20 6d 6f 64 69 66 69 65 64 0a 0a 64 69  ong modified..di
7210: 66 66 20 2d 2d 67 69 74 20 61 2f 66 69 72 73 74  ff --git a/first
7220: 2e 6a 73 20 62 2f 66 69 72 73 74 2e 6a 73 0a 69  .js b/first.js.i
7230: 6e 64 65 78 20 31 33 62 32 33 62 38 2e 2e 35 62  ndex 13b23b8..5b
7240: 32 34 32 32 63 20 31 30 30 36 34 34 0a 2d 2d 2d  2422c 100644.---
7250: 20 61 2f 66 69 72 73 74 2e 6a 73 0a 2b 2b 2b 20   a/first.js.+++ 
7260: 62 2f 66 69 72 73 74 2e 6a 73 0a 40 40 20 2d 32  b/first.js.@@ -2
7270: 2c 37 20 2b 32 2c 37 20 40 40 20 76 6f 6c 75 6d  ,7 +2,7 @@ volum
7280: 65 5f 67 75 61 72 64 31 20 3d 20 67 75 61 72 64  e_guard1 = guard
7290: 28 5b 2d 32 30 2c 31 35 5d 29 0a 20 54 6f 6e 65  ([-20,15]). Tone
72a0: 2e 4d 61 73 74 65 72 2e 76 6f 6c 75 6d 65 2e 76  .Master.volume.v
72b0: 61 6c 75 65 20 3d 20 76 6f 6c 75 6d 65 5f 67 75  alue = volume_gu
72c0: 61 72 64 31 28 4d 61 74 68 2e 72 6f 75 6e 64 28  ard1(Math.round(
72d0: 64 69 61 6c 73 5b 30 5d 5b 22 63 65 6c 6c 22 5d  dials[0]["cell"]
72e0: 28 29 20 2a 20 33 30 29 20 2d 32 30 29 3b 0a 20  () * 30) -20);. 
72f0: 0a 20 69 6e 74 72 6f 20 3d 20 5b 0a 2d 20 20 20  . intro = [.-   
7300: 63 65 6c 6c 78 28 22 70 20 78 30 30 30 20 30 30  cellx("p x000 00
7310: 30 30 20 30 30 30 30 20 30 30 30 30 20 22 29 2c  00 0000 0000 "),
7320: 0a 2b 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78  .+    cellx("p x
7330: 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30 30  000 0000 0000 00
7340: 30 30 20 22 29 2c 0a 20 5d 0a 20 0a 20 6d 61 69  00 "),. ]. . mai
7350: 6e 20 3d 20 5b 0a 40 40 20 2d 32 31 2c 37 20 2b  n = [.@@ -21,7 +
7360: 32 31 2c 37 20 40 40 20 62 61 73 73 20 3d 20 5b  21,7 @@ bass = [
7370: 0a 20 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78  .     cellx("p x
7380: 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30 30  000 0000 0000 00
7390: 30 30 20 22 29 2c 0a 20 20 20 20 20 63 65 6c 6c  00 "),.     cell
73a0: 78 28 22 70 20 78 5b 5e 43 32 5d 30 30 30 20 30  x("p x[^C2]000 0
73b0: 30 30 78 2e 20 30 30 78 5b 5e 42 31 5d 78 2e 20  00x. 00x[^B1]x. 
73c0: 78 5b 5e 42 31 5d 78 2e 78 5b 5e 42 31 5d 78 2e  x[^B1]x.x[^B1]x.
73d0: 20 22 29 2c 0a 20 20 20 20 20 63 65 6c 6c 78 28   "),.     cellx(
73e0: 22 70 20 30 30 30 30 20 30 30 30 30 20 78 30 78  "p 0000 0000 x0x
73f0: 30 20 30 30 78 30 20 22 29 2c 20 2f 2f 20 6d 65  0 00x0 "), // me
7400: 6c 6f 64 79 0a 2d 09 63 65 6c 6c 78 28 22 70 20  lody.-.cellx("p 
7410: 30 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30  0000 0000 0000 0
7420: 30 30 30 22 29 0a 2b 20 20 20 20 63 65 6c 6c 78  000").+    cellx
7430: 28 22 70 20 30 30 30 30 20 30 30 30 30 20 30 30  ("p 0000 0000 00
7440: 30 30 20 30 30 30 30 22 29 0a 20 5d 0a 20 0a 20  00 0000"). ]. . 
7450: 66 69 6c 6c 20 3d 20 20 63 65 6c 6c 78 28 22 70  fill =  cellx("p
7460: 20 78 30 30 30 20 78 30 30 30 20 78 30 78 78 20   x000 x000 x0xx 
7470: 30 30 78 30 22 29 0a 40 40 20 2d 36 32 2c 37 20  00x0").@@ -62,7 
7480: 2b 36 32 2c 36 20 40 40 20 66 75 6e 63 74 69 6f  +62,6 @@ functio
7490: 6e 20 6f 6e 63 65 20 28 29 20 7b 0a 20 20 20 20  n once () {.    
74a0: 20 20 20 20 20 20 20 20 20 78 2e 63 61 6e 76 61           x.canva
74b0: 73 2e 73 74 79 6c 65 2e 70 6f 73 69 74 69 6f 6e  s.style.position
74c0: 20 3d 20 22 61 62 73 6f 6c 75 74 65 22 3b 0a 20   = "absolute";. 
74d0: 20 20 20 20 20 20 20 20 20 20 20 20 70 2e 66 72              p.fr
74e0: 61 6d 65 52 61 74 65 28 32 29 3b 0a 20 20 20 20  ameRate(2);.    
74f0: 20 20 20 20 20 20 20 20 20 69 6d 67 20 3d 20 70           img = p
7500: 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f 74 65 73  .loadImage('/tes
7510: 74 33 2e 70 6e 67 27 29 3b 0a 2d 20 20 20 20 20  t3.png');.-     
7520: 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c         console.l
7530: 6f 67 28 69 6d 67 29 3b 0a 20 20 20 20 20 20 20  og(img);.       
7540: 20 20 7d 3b 0a 20 0a 20 20 20 20 20 20 20 20 20    };. .         
7550: 70 2e 64 72 61 77 20 3d 20 66 75 6e 63 74 69 6f  p.draw = functio
7560: 6e 28 29 20 7b 0a 40 40 20 2d 38 30 2c 37 20 2b  n() {.@@ -80,7 +
7570: 37 39 2c 37 20 40 40 20 66 75 6e 63 74 69 6f 6e  79,7 @@ function
7580: 20 6f 6e 63 65 20 28 29 20 7b 0a 20 20 20 20 20   once () {.     
7590: 6c 65 74 20 6d 79 70 35 20 3d 20 6e 65 77 20 70  let myp5 = new p
75a0: 35 28 73 2c 20 20 64 6f 63 75 6d 65 6e 74 2e 67  5(s,  document.g
75b0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 63  etElementById('c
75c0: 61 6e 76 61 73 2d 63 6f 6e 74 61 69 6e 65 72 27  anvas-container'
75d0: 29 29 3b 0a 20 0a 20 20 20 20 20 72 65 6e 64 65  ));. .     rende
75e0: 72 5f 6c 6f 6f 70 20 3d 20 66 75 6e 63 74 69 6f  r_loop = functio
75f0: 6e 20 28 29 20 7b 0a 2d 2f 2f 20 20 20 20 09 70  n () {.-//    .p
7600: 72 2e 72 65 63 74 28 78 2c 79 2c 35 30 2c 35 30  r.rect(x,y,50,50
7610: 29 3b 0a 2b 20 20 20 20 20 20 20 20 2f 2f 20 20  );.+        //  
7620: 20 20 09 70 72 2e 72 65 63 74 28 78 2c 79 2c 35    .pr.rect(x,y,5
7630: 30 2c 35 30 29 3b 0a 20 20 20 20 20 7d 0a 20 0a  0,50);.     }. .
7640: 20 20 20 20 20 54 6f 6e 65 2e 4d 61 73 74 65 72       Tone.Master
7650: 2e 76 6f 6c 75 6d 65 2e 76 61 6c 75 65 20 3d 20  .volume.value = 
7660: 2d 33 30 0a 40 40 20 2d 39 36 2c 33 34 20 2b 39  -30.@@ -96,34 +9
7670: 35 2c 33 33 20 40 40 20 66 75 6e 63 74 69 6f 6e  5,33 @@ function
7680: 20 6f 6e 63 65 20 28 29 20 7b 0a 20 20 20 20 20   once () {.     
7690: 6d 65 6d 5b 22 63 22 5d 20 3d 20 63 65 6c 6c 78  mem["c"] = cellx
76a0: 28 31 29 3b 0a 20 20 20 20 20 6d 65 6d 5b 22 63  (1);.     mem["c
76b0: 22 5d 2e 6f 6e 43 68 61 6e 67 65 28 66 75 6e 63  "].onChange(func
76c0: 74 69 6f 6e 20 28 65 29 20 7b 0a 20 20 20 20 20  tion (e) {.     
76d0: 20 20 20 20 76 61 72 20 76 61 6c 20 3d 20 70 61      var val = pa
76e0: 72 73 65 49 6e 74 28 65 5b 22 64 61 74 61 22 5d  rseInt(e["data"]
76f0: 2e 76 61 6c 75 65 29 3b 0a 2d 20 20 20 20 20 20  .value);.-      
7700: 20 20 0a 2b 0a 20 20 20 20 20 20 20 20 20 70 28    .+.         p(
7710: 30 2c 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 32  0,null, null, "2
7720: 34 6e 22 29 3b 0a 20 20 20 20 20 20 20 20 20 73  4n");.         s
7730: 65 74 54 69 6d 65 6f 75 74 28 66 75 6e 63 74 69  etTimeout(functi
7740: 6f 6e 20 28 29 20 7b 0a 2d 20 20 20 20 20 20 20  on () {.-       
7750: 20 09 70 28 34 2c 20 6e 75 6c 6c 2c 20 6e 75 6c   .p(4, null, nul
7760: 6c 2c 20 22 34 6e 22 29 0a 2b 20 20 20 20 20 20  l, "4n").+      
7770: 20 20 20 20 20 20 70 28 34 2c 20 6e 75 6c 6c 2c        p(4, null,
7780: 20 6e 75 6c 6c 2c 20 22 34 6e 22 29 0a 20 20 20   null, "4n").   
7790: 20 20 20 20 20 20 7d 2c 20 64 65 6c 74 61 20 2a        }, delta *
77a0: 20 32 29 3b 0a 2d 20 20 20 20 20 20 20 20 0a 2b   2);.-        .+
77b0: 0a 20 20 20 20 20 7d 29 0a 20 20 20 20 20 6d 65  .     }).     me
77c0: 6d 5b 22 63 22 5d 2e 6f 6e 45 72 72 6f 72 28 66  m["c"].onError(f
77d0: 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a 20 20  unction (e) {.  
77e0: 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c         console.l
77f0: 6f 67 28 65 29 3b 0a 2d 0a 20 20 20 20 20 7d 29  og(e);.-.     })
7800: 0a 20 0a 20 20 20 20 20 63 6f 6e 73 74 20 61 75  . .     const au
7810: 64 69 6f 20 3d 20 41 75 64 69 6f 28 29 3b 0a 20  dio = Audio();. 
7820: 20 20 20 20 63 6f 6e 73 74 20 74 68 72 65 65 20      const three 
7830: 3d 20 54 68 72 65 65 4f 68 55 6e 69 74 28 61 75  = ThreeOhUnit(au
7840: 64 69 6f 2c 20 22 73 61 77 74 6f 6f 74 68 22 2c  dio, "sawtooth",
7850: 20 7b 0a 2d 20 20 20 20 20 20 20 20 20 20 20 20   {.-            
7860: 22 63 75 74 6f 66 66 22 3a 20 31 30 30 2c 0a 2d  "cutoff": 100,.-
7870: 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65 73              "res
7880: 6f 6e 61 6e 63 65 22 3a 20 31 35 2c 0a 2d 20 20  onance": 15,.-  
7890: 20 20 20 20 20 20 20 20 20 20 22 65 6e 76 4d 6f            "envMo
78a0: 64 22 3a 20 34 30 30 30 2c 0a 2d 20 20 20 20 20  d": 4000,.-     
78b0: 20 20 20 20 20 20 20 22 64 65 63 61 79 22 3a 20         "decay": 
78c0: 30 2e 35 0a 2d 20 20 20 20 20 20 20 20 7d 0a 2d  0.5.-        }.-
78d0: 09 29 0a 2b 20 20 20 20 20 20 20 20 22 63 75 74  .).+        "cut
78e0: 6f 66 66 22 3a 20 31 30 30 2c 0a 2b 20 20 20 20  off": 100,.+    
78f0: 20 20 20 20 22 72 65 73 6f 6e 61 6e 63 65 22 3a      "resonance":
7900: 20 31 35 2c 0a 2b 20 20 20 20 20 20 20 20 22 65   15,.+        "e
7910: 6e 76 4d 6f 64 22 3a 20 34 30 30 30 2c 0a 2b 20  nvMod": 4000,.+ 
7920: 20 20 20 20 20 20 20 22 64 65 63 61 79 22 3a 20         "decay": 
7930: 30 2e 35 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20  0.5.+    }.+    
7940: 29 0a 20 20 20 20 20 61 75 64 69 6f 2e 6d 61 73  ).     audio.mas
7950: 74 65 72 2e 69 6e 2e 67 61 69 6e 2e 76 61 6c 75  ter.in.gain.valu
7960: 65 20 3d 20 30 2e 32 3b 0a 20 20 20 20 20 6d 65  e = 0.2;.     me
7970: 6d 5b 22 74 68 72 65 65 22 5d 20 3d 20 74 68 72  m["three"] = thr
7980: 65 65 0a 2d 20 20 20 20 0a 2b 0a 20 20 20 20 20  ee.-    .+.     
7990: 2f 2f 20 63 75 74 6f 66 66 20 5b 33 30 2c 20 37  // cutoff [30, 7
79a0: 30 30 5d 2c 20 34 30 30 0a 20 20 20 20 20 2f 2f  00], 400.     //
79b0: 20 72 65 73 6f 6e 61 6e 63 65 3a 20 5b 31 2c 20   resonance: [1, 
79c0: 33 30 5d 2c 20 31 35 0a 20 20 20 20 20 2f 2f 20  30], 15.     // 
79d0: 65 6e 76 4d 6f 64 3a 20 5b 30 2c 20 38 30 30 30  envMod: [0, 8000
79e0: 5d 2c 20 34 30 30 30 0a 20 20 20 20 20 2f 2f 20  ], 4000.     // 
79f0: 64 65 63 61 79 3a 20 5b 30 2e 31 2c 20 30 2e 39  decay: [0.1, 0.9
7a00: 5d 2c 20 30 2e 35 0a 2d 20 20 20 20 0a 2b 0a 20  ], 0.5.-    .+. 
7a10: 20 20 20 20 64 69 61 6c 73 5b 31 5d 5b 22 63 65      dials[1]["ce
7a20: 6c 6c 22 5d 28 30 2e 30 31 30 30 29 0a 20 0a 20  ll"](0.0100). . 
7a30: 20 20 20 20 64 69 61 6c 73 5b 31 5d 5b 22 63 65      dials[1]["ce
7a40: 6c 6c 22 5d 2e 6f 6e 43 68 61 6e 67 65 28 66 75  ll"].onChange(fu
7a50: 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a 40 40 20  nction (e) {.@@ 
7a60: 2d 31 35 38 2c 37 20 2b 31 35 36 2c 37 20 40 40  -158,7 +156,7 @@
7a70: 20 69 66 20 28 69 73 48 69 74 29 20 7b 0a 20 20   if (isHit) {.  
7a80: 20 20 20 20 20 20 20 69 66 20 28 74 72 61 63 6b         if (track
7a90: 5f 6e 6f 20 3d 3d 20 34 29 20 7b 0a 20 20 20 20  _no == 4) {.    
7aa0: 20 20 20 20 20 20 20 20 20 70 28 33 2c 20 6e 75           p(3, nu
7ab0: 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 31 6e 22 29 3b  ll, null, "1n");
7ac0: 0a 20 20 20 20 20 20 20 20 20 7d 0a 2d 20 20 20  .         }.-   
7ad0: 20 20 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f        if (track_
7ae0: 6e 6f 20 3d 3d 20 35 29 20 7b 0a 2b 20 20 20 20  no == 5) {.+    
7af0: 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f      if (track_no
7b00: 20 3d 3d 20 35 29 20 7b 0a 20 20 20 20 20 20 20   == 5) {.       
7b10: 20 20 20 20 20 20 70 28 35 2c 20 6e 75 6c 6c 2c        p(5, null,
7b20: 20 6e 75 6c 6c 2c 20 22 31 6e 22 29 3b 0a 20 20   null, "1n");.  
7b30: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 7d 20         }.     } 
7b40: 65 6c 73 65 20 69 66 20 28 63 75 72 72 65 6e 74  else if (current
7b50: 5f 73 63 65 6e 65 20 3d 3d 20 22 62 61 73 73 22  _scene == "bass"
7b60: 29 20 7b 0a 40 40 20 2d 31 38 32 2c 31 33 20 2b  ) {.@@ -182,13 +
7b70: 31 38 30 2c 31 32 20 40 40 20 69 66 20 28 69 73  180,12 @@ if (is
7b80: 48 69 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20  Hit) {.         
7b90: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 7d      }.         }
7ba0: 0a 20 20 20 20 20 20 20 20 20 69 66 20 28 74 72  .         if (tr
7bb0: 61 63 6b 5f 6e 6f 20 3d 3d 20 36 29 20 7b 0a 2d  ack_no == 6) {.-
7bc0: 20 20 20 20 20 20 20 20 20 20 20 70 28 35 2c 20             p(5, 
7bd0: 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 31 6e 22  null, null, "1n"
7be0: 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20  );.+            
7bf0: 70 28 35 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c  p(5, null, null,
7c00: 20 22 31 6e 22 29 3b 0a 20 20 20 20 20 20 20 20   "1n");.        
7c10: 20 7d 0a 20 20 20 20 20 20 20 20 20 69 66 20 28   }.         if (
7c20: 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 37 29 20 7b  track_no == 7) {
7c30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65  .             me
7c40: 6d 5b 22 63 22 5d 28 6d 65 6d 5b 22 63 22 5d 28  m["c"](mem["c"](
7c50: 29 20 2b 20 31 29 3b 0a 20 20 20 20 20 20 20 20  ) + 1);.        
7c60: 20 7d 0a 20 20 20 20 20 7d 20 0a 2d 0a 20 7d 0a   }.     } .-. }.
7c70: 20 0a 20 0a 0a 63 6f 6d 6d 69 74 20 64 63 31 36   . ..commit dc16
7c80: 39 35 62 65 64 38 66 32 62 36 62 66 63 35 38 36  95bed8f2b6bfc586
7c90: 62 39 37 62 30 31 30 33 61 62 33 61 63 63 62 66  b97b0103ab3accbf
7ca0: 34 61 62 35 0a 41 75 74 68 6f 72 3a 20 58 79 7a  4ab5.Author: Xyz
7cb0: 7a 79 20 41 70 70 73 20 3c 78 79 7a 7a 79 61 70  zy Apps <xyzzyap
7cc0: 70 73 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 44 61  ps@gmail.com>.Da
7cd0: 74 65 3a 20 20 20 4d 6f 6e 20 4e 6f 76 20 31 20  te:   Mon Nov 1 
7ce0: 30 37 3a 33 39 3a 30 31 20 32 30 32 31 20 2b 30  07:39:01 2021 +0
7cf0: 30 30 30 0a 0a 20 20 20 20 2f 55 73 65 72 73 2f  000..    /Users/
7d00: 64 65 76 2f 70 72 6f 6a 2f 70 72 6f 64 75 63 74  dev/proj/product
7d10: 69 6f 6e 2f 62 69 74 72 68 79 74 68 6d 2f 73 6f  ion/bitrhythm/so
7d20: 6e 67 20 6d 6f 64 69 66 69 65 64 0a 0a 64 69 66  ng modified..dif
7d30: 66 20 2d 2d 67 69 74 20 61 2f 66 69 72 73 74 2e  f --git a/first.
7d40: 6a 73 20 62 2f 66 69 72 73 74 2e 6a 73 0a 69 6e  js b/first.js.in
7d50: 64 65 78 20 33 64 38 65 39 66 62 2e 2e 31 33 62  dex 3d8e9fb..13b
7d60: 32 33 62 38 20 31 30 30 36 34 34 0a 2d 2d 2d 20  23b8 100644.--- 
7d70: 61 2f 66 69 72 73 74 2e 6a 73 0a 2b 2b 2b 20 62  a/first.js.+++ b
7d80: 2f 66 69 72 73 74 2e 6a 73 0a 40 40 20 2d 31 30  /first.js.@@ -10
7d90: 2c 36 20 2b 31 30 2c 38 20 40 40 20 6d 61 69 6e  ,6 +10,8 @@ main
7da0: 20 3d 20 5b 0a 20 20 20 20 20 63 65 6c 6c 78 28   = [.     cellx(
7db0: 22 70 20 30 30 30 30 20 78 30 30 30 20 30 30 30  "p 0000 x000 000
7dc0: 30 20 78 30 30 30 20 22 29 2c 0a 20 20 20 20 20  0 x000 "),.     
7dd0: 63 65 6c 6c 78 28 22 70 20 78 30 78 30 20 78 30  cellx("p x0x0 x0
7de0: 78 30 20 78 30 78 30 20 78 30 78 30 20 22 29 2c  x0 x0x0 x0x0 "),
7df0: 0a 20 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78  .     cellx("p x
7e00: 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30 30  000 0000 0000 00
7e10: 30 30 20 22 29 2c 0a 2b 20 20 20 20 63 65 6c 6c  00 "),.+    cell
7e20: 78 28 22 70 20 30 30 30 30 20 30 30 30 30 20 78  x("p 0000 0000 x
7e30: 30 78 30 20 30 30 78 30 20 22 29 2c 20 2f 2f 20  0x0 00x0 "), // 
7e40: 6d 65 6c 6f 64 79 0a 2b 0a 20 5d 0a 20 0a 20 62  melody.+. ]. . b
7e50: 61 73 73 20 3d 20 5b 0a 40 40 20 2d 31 37 2c 31  ass = [.@@ -17,1
7e60: 31 20 2b 31 39 2c 31 37 20 40 40 20 62 61 73 73  1 +19,17 @@ bass
7e70: 20 3d 20 5b 0a 20 20 20 20 20 63 65 6c 6c 78 28   = [.     cellx(
7e80: 22 70 20 30 30 30 30 20 78 30 30 30 20 30 30 30  "p 0000 x000 000
7e90: 30 20 78 30 30 30 20 22 29 2c 0a 20 20 20 20 20  0 x000 "),.     
7ea0: 63 65 6c 6c 78 28 22 70 20 78 30 78 30 20 78 30  cellx("p x0x0 x0
7eb0: 78 30 20 78 30 78 30 20 78 30 78 30 20 22 29 2c  x0 x0x0 x0x0 "),
7ec0: 0a 20 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78  .     cellx("p x
7ed0: 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30 30  000 0000 0000 00
7ee0: 30 30 20 22 29 2c 0a 2d 20 20 20 20 63 65 6c 6c  00 "),.-    cell
7ef0: 78 28 22 70 20 78 5b 5e 43 33 5d 30 30 30 20 78  x("p x[^C3]000 x
7f00: 2e 30 30 30 20 30 30 30 30 20 30 30 30 30 20 22  .000 0000 0000 "
7f10: 29 2c 0a 2b 20 20 20 20 63 65 6c 6c 78 28 22 70  ),.+    cellx("p
7f20: 20 78 5b 5e 43 32 5d 30 30 30 20 30 30 30 78 2e   x[^C2]000 000x.
7f30: 20 30 30 78 5b 5e 42 31 5d 78 2e 20 78 5b 5e 42   00x[^B1]x. x[^B
7f40: 31 5d 78 2e 78 5b 5e 42 31 5d 78 2e 20 22 29 2c  1]x.x[^B1]x. "),
7f50: 0a 20 20 20 20 20 63 65 6c 6c 78 28 22 70 20 30  .     cellx("p 0
7f60: 30 30 30 20 30 30 30 30 20 78 30 78 30 20 30 30  000 0000 x0x0 00
7f70: 78 30 20 22 29 2c 20 2f 2f 20 6d 65 6c 6f 64 79  x0 "), // melody
7f80: 0a 2d 20 20 20 20 63 65 6c 6c 78 28 22 70 20 30  .-    cellx("p 0
7f90: 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30 30  000 0000 0000 00
7fa0: 30 30 20 22 29 2c 20 2f 2f 20 66 69 6c 6c 0a 2b  00 "), // fill.+
7fb0: 09 63 65 6c 6c 78 28 22 70 20 30 30 30 30 20 30  .cellx("p 0000 0
7fc0: 30 30 30 20 30 30 30 30 20 30 30 30 30 22 29 0a  000 0000 0000").
7fd0: 20 5d 0a 20 0a 2b 66 69 6c 6c 20 3d 20 20 63 65   ]. .+fill =  ce
7fe0: 6c 6c 78 28 22 70 20 78 30 30 30 20 78 30 30 30  llx("p x000 x000
7ff0: 20 78 30 78 78 20 30 30 78 30 22 29 0a 2b 65 6d   x0xx 00x0").+em
8000: 70 74 79 20 3d 20 63 65 6c 6c 78 28 22 70 20 30  pty = cellx("p 0
8010: 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30 30  000 0000 0000 00
8020: 30 30 22 29 0a 2b 0a 2b 0a 2b 0a 2b 0a 20 66 75  00").+.+.+.+. fu
8030: 6e 63 74 69 6f 6e 20 53 61 6d 70 6c 65 28 6e 61  nction Sample(na
8040: 6d 65 2c 20 6e 6f 2c 20 66 69 6c 74 65 72 2c 20  me, no, filter, 
8050: 76 6f 6c 75 6d 65 29 20 7b 0a 20 20 20 20 20 6e  volume) {.     n
8060: 61 6d 65 20 3d 20 6e 61 6d 65 0a 20 20 20 20 20  ame = name.     
8070: 66 69 6c 74 65 72 20 3d 20 66 69 6c 74 65 72 20  filter = filter 
8080: 7c 7c 20 32 30 30 30 30 0a 40 40 20 2d 35 32 2c  || 20000.@@ -52,
8090: 38 20 2b 36 30 2c 38 20 40 40 20 66 75 6e 63 74  8 +60,8 @@ funct
80a0: 69 6f 6e 20 6f 6e 63 65 20 28 29 20 7b 0a 20 20  ion once () {.  
80b0: 20 20 20 20 20 20 20 70 2e 73 65 74 75 70 20 3d         p.setup =
80c0: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20   function() {.  
80d0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 78             var x
80e0: 20 3d 20 70 2e 63 72 65 61 74 65 43 61 6e 76 61   = p.createCanva
80f0: 73 28 37 30 30 2c 20 34 31 30 29 3b 0a 20 20 20  s(700, 410);.   
8100: 20 20 20 20 20 20 20 20 20 20 78 2e 63 61 6e 76            x.canv
8110: 61 73 2e 73 74 79 6c 65 2e 70 6f 73 69 74 69 6f  as.style.positio
8120: 6e 20 3d 20 22 61 62 73 6f 6c 75 74 65 22 3b 0a  n = "absolute";.
8130: 2d 20 20 20 20 20 20 20 20 20 20 20 20 70 2e 66  -            p.f
8140: 72 61 6d 65 52 61 74 65 28 33 30 29 3b 0a 2d 20  rameRate(30);.- 
8150: 20 20 20 20 20 20 20 20 20 20 20 69 6d 67 20 3d             img =
8160: 20 70 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f 74   p.loadImage('/t
8170: 65 73 74 2e 70 6e 67 27 29 3b 0a 2b 20 20 20 20  est.png');.+    
8180: 20 20 20 20 20 20 20 20 70 2e 66 72 61 6d 65 52          p.frameR
8190: 61 74 65 28 32 29 3b 0a 2b 20 20 20 20 20 20 20  ate(2);.+       
81a0: 20 20 20 20 20 69 6d 67 20 3d 20 70 2e 6c 6f 61       img = p.loa
81b0: 64 49 6d 61 67 65 28 27 2f 74 65 73 74 33 2e 70  dImage('/test3.p
81c0: 6e 67 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ng');.          
81d0: 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 69     console.log(i
81e0: 6d 67 29 3b 0a 20 20 20 20 20 20 20 20 20 7d 3b  mg);.         };
81f0: 0a 20 0a 40 40 20 2d 38 38 2c 39 20 2b 39 36 2c  . .@@ -88,9 +96,
8200: 31 32 20 40 40 20 66 75 6e 63 74 69 6f 6e 20 6f  12 @@ function o
8210: 6e 63 65 20 28 29 20 7b 0a 20 20 20 20 20 6d 65  nce () {.     me
8220: 6d 5b 22 63 22 5d 20 3d 20 63 65 6c 6c 78 28 31  m["c"] = cellx(1
8230: 29 3b 0a 20 20 20 20 20 6d 65 6d 5b 22 63 22 5d  );.     mem["c"]
8240: 2e 6f 6e 43 68 61 6e 67 65 28 66 75 6e 63 74 69  .onChange(functi
8250: 6f 6e 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20  on (e) {.       
8260: 20 20 76 61 72 20 76 61 6c 20 3d 20 70 61 72 73    var val = pars
8270: 65 49 6e 74 28 65 5b 22 64 61 74 61 22 5d 2e 76  eInt(e["data"].v
8280: 61 6c 75 65 29 3b 0a 2d 20 20 20 20 20 20 20 20  alue);.-        
8290: 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 76 61 6c 29  console.log(val)
82a0: 3b 0a 2d 20 20 20 20 20 20 20 20 70 28 34 2c 20  ;.-        p(4, 
82b0: 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 38 6e 22  null, null, "8n"
82c0: 29 3b 0a 2d 0a 2b 20 20 20 20 20 20 20 20 0a 2b  );.-.+        .+
82d0: 20 20 20 20 20 20 20 20 70 28 30 2c 6e 75 6c 6c          p(0,null
82e0: 2c 20 6e 75 6c 6c 2c 20 22 32 34 6e 22 29 3b 0a  , null, "24n");.
82f0: 2b 20 20 20 20 20 20 20 20 73 65 74 54 69 6d 65  +        setTime
8300: 6f 75 74 28 66 75 6e 63 74 69 6f 6e 20 28 29 20  out(function () 
8310: 7b 0a 2b 20 20 20 20 20 20 20 20 09 70 28 34 2c  {.+        .p(4,
8320: 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 34 6e   null, null, "4n
8330: 22 29 0a 2b 20 20 20 20 20 20 20 20 7d 2c 20 64  ").+        }, d
8340: 65 6c 74 61 20 2a 20 32 29 3b 0a 2b 20 20 20 20  elta * 2);.+    
8350: 20 20 20 20 0a 20 20 20 20 20 7d 29 0a 20 20 20      .     }).   
8360: 20 20 6d 65 6d 5b 22 63 22 5d 2e 6f 6e 45 72 72    mem["c"].onErr
8370: 6f 72 28 66 75 6e 63 74 69 6f 6e 20 28 65 29 20  or(function (e) 
8380: 7b 0a 20 20 20 20 20 20 20 20 20 63 6f 6e 73 6f  {.         conso
8390: 6c 65 2e 6c 6f 67 28 65 29 3b 0a 40 40 20 2d 39  le.log(e);.@@ -9
83a0: 38 2c 31 33 20 2b 31 30 39 2c 33 34 20 40 40 20  8,13 +109,34 @@ 
83b0: 66 75 6e 63 74 69 6f 6e 20 6f 6e 63 65 20 28 29  function once ()
83c0: 20 7b 0a 20 20 20 20 20 7d 29 0a 20 0a 20 20 20   {.     }). .   
83d0: 20 20 63 6f 6e 73 74 20 61 75 64 69 6f 20 3d 20    const audio = 
83e0: 41 75 64 69 6f 28 29 3b 0a 2d 20 20 20 20 63 6f  Audio();.-    co
83f0: 6e 73 74 20 74 68 72 65 65 20 3d 20 54 68 72 65  nst three = Thre
8400: 65 4f 68 55 6e 69 74 28 61 75 64 69 6f 2c 20 22  eOhUnit(audio, "
8410: 73 61 77 74 6f 6f 74 68 22 29 0a 2d 20 20 20 20  sawtooth").-    
8420: 2f 2f 20 61 75 64 69 6f 2e 6d 61 73 74 65 72 2e  // audio.master.
8430: 69 6e 2e 67 61 69 6e 2e 76 61 6c 75 65 20 3d 20  in.gain.value = 
8440: 30 2e 35 3b 0a 2b 20 20 20 20 63 6f 6e 73 74 20  0.5;.+    const 
8450: 74 68 72 65 65 20 3d 20 54 68 72 65 65 4f 68 55  three = ThreeOhU
8460: 6e 69 74 28 61 75 64 69 6f 2c 20 22 73 61 77 74  nit(audio, "sawt
8470: 6f 6f 74 68 22 2c 20 7b 0a 2b 20 20 20 20 20 20  ooth", {.+      
8480: 20 20 20 20 20 20 22 63 75 74 6f 66 66 22 3a 20        "cutoff": 
8490: 31 30 30 2c 0a 2b 20 20 20 20 20 20 20 20 20 20  100,.+          
84a0: 20 20 22 72 65 73 6f 6e 61 6e 63 65 22 3a 20 31    "resonance": 1
84b0: 35 2c 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20  5,.+            
84c0: 22 65 6e 76 4d 6f 64 22 3a 20 34 30 30 30 2c 0a  "envMod": 4000,.
84d0: 2b 20 20 20 20 20 20 20 20 20 20 20 20 22 64 65  +            "de
84e0: 63 61 79 22 3a 20 30 2e 35 0a 2b 20 20 20 20 20  cay": 0.5.+     
84f0: 20 20 20 7d 0a 2b 09 29 0a 2b 20 20 20 20 61 75     }.+.).+    au
8500: 64 69 6f 2e 6d 61 73 74 65 72 2e 69 6e 2e 67 61  dio.master.in.ga
8510: 69 6e 2e 76 61 6c 75 65 20 3d 20 30 2e 32 3b 0a  in.value = 0.2;.
8520: 20 20 20 20 20 6d 65 6d 5b 22 74 68 72 65 65 22       mem["three"
8530: 5d 20 3d 20 74 68 72 65 65 0a 2b 20 20 20 20 0a  ] = three.+    .
8540: 2b 20 20 20 20 2f 2f 20 63 75 74 6f 66 66 20 5b  +    // cutoff [
8550: 33 30 2c 20 37 30 30 5d 2c 20 34 30 30 0a 2b 20  30, 700], 400.+ 
8560: 20 20 20 2f 2f 20 72 65 73 6f 6e 61 6e 63 65 3a     // resonance:
8570: 20 5b 31 2c 20 33 30 5d 2c 20 31 35 0a 2b 20 20   [1, 30], 15.+  
8580: 20 20 2f 2f 20 65 6e 76 4d 6f 64 3a 20 5b 30 2c    // envMod: [0,
8590: 20 38 30 30 30 5d 2c 20 34 30 30 30 0a 2b 20 20   8000], 4000.+  
85a0: 20 20 2f 2f 20 64 65 63 61 79 3a 20 5b 30 2e 31    // decay: [0.1
85b0: 2c 20 30 2e 39 5d 2c 20 30 2e 35 0a 2b 20 20 20  , 0.9], 0.5.+   
85c0: 20 0a 2b 20 20 20 20 64 69 61 6c 73 5b 31 5d 5b   .+    dials[1][
85d0: 22 63 65 6c 6c 22 5d 28 30 2e 30 31 30 30 29 0a  "cell"](0.0100).
85e0: 2b 0a 2b 20 20 20 20 64 69 61 6c 73 5b 31 5d 5b  +.+    dials[1][
85f0: 22 63 65 6c 6c 22 5d 2e 6f 6e 43 68 61 6e 67 65  "cell"].onChange
8600: 28 66 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a  (function (e) {.
8610: 2b 20 20 20 20 20 20 20 20 76 61 72 20 76 61 6c  +        var val
8620: 20 3d 20 70 61 72 73 65 46 6c 6f 61 74 28 65 5b   = parseFloat(e[
8630: 22 64 61 74 61 22 5d 2e 76 61 6c 75 65 29 3b 0a  "data"].value);.
8640: 2b 20 20 20 20 20 20 20 20 63 75 74 6f 66 66 5f  +        cutoff_
8650: 67 75 61 72 64 20 3d 20 67 75 61 72 64 28 5b 33  guard = guard([3
8660: 30 2c 20 37 30 30 5d 29 3b 0a 2b 20 20 20 20 20  0, 700]);.+     
8670: 20 20 20 74 68 72 65 65 2e 70 61 72 61 6d 73 2e     three.params.
8680: 63 75 74 6f 66 66 2e 76 61 6c 75 65 20 3d 20 63  cutoff.value = c
8690: 75 74 6f 66 66 5f 67 75 61 72 64 28 76 61 6c 20  utoff_guard(val 
86a0: 2a 20 31 30 30 30 29 3b 0a 2b 20 20 20 20 7d 29  * 1000);.+    })
86b0: 0a 20 7d 0a 20 0a 2b 0a 2b 0a 20 74 72 61 6e 73  . }. .+.+. trans
86c0: 69 74 69 6f 6e 20 3d 20 6f 6e 63 65 3b 0a 2d 63  ition = once;.-c
86d0: 75 72 72 65 6e 74 5f 73 63 65 6e 65 20 3d 20 22  urrent_scene = "
86e0: 6d 61 69 6e 22 3b 0a 2b 63 75 72 72 65 6e 74 5f  main";.+current_
86f0: 73 63 65 6e 65 20 3d 20 22 62 61 73 73 22 3b 0a  scene = "bass";.
8700: 20 70 61 74 74 65 72 6e 73 20 3d 20 65 76 61 6c   patterns = eval
8710: 28 60 24 7b 63 75 72 72 65 6e 74 5f 73 63 65 6e  (`${current_scen
8720: 65 7d 60 29 3b 0a 20 61 6c 77 61 79 73 28 29 3b  e}`);. always();
8730: 0a 20 0a 40 40 20 2d 31 32 36 2c 36 20 2b 31 35  . .@@ -126,6 +15
8740: 38 2c 39 20 40 40 20 69 66 20 28 69 73 48 69 74  8,9 @@ if (isHit
8750: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 69 66 20  ) {.         if 
8760: 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 34 29 20  (track_no == 4) 
8770: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 70  {.             p
8780: 28 33 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20  (3, null, null, 
8790: 22 31 6e 22 29 3b 0a 20 20 20 20 20 20 20 20 20  "1n");.         
87a0: 7d 0a 2b 20 20 20 20 20 20 20 20 20 69 66 20 28  }.+         if (
87b0: 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 35 29 20 7b  track_no == 5) {
87c0: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 70 28  .+            p(
87d0: 35 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22  5, null, null, "
87e0: 31 6e 22 29 3b 0a 2b 20 20 20 20 20 20 20 20 7d  1n");.+        }
87f0: 0a 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20  .     } else if 
8800: 28 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 20 3d  (current_scene =
8810: 3d 20 22 62 61 73 73 22 29 20 7b 0a 20 20 20 20  = "bass") {.    
8820: 20 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e       if (track_n
8830: 6f 20 3d 3d 20 31 29 20 7b 0a 20 20 20 20 20 20  o == 1) {.      
8840: 20 20 20 20 20 20 20 70 28 30 2c 20 6d 65 74 61         p(0, meta
8850: 5b 74 69 63 6b 5d 5b 22 76 6f 6c 75 6d 65 22 5d  [tick]["volume"]
8860: 2c 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 70 69  , meta[tick]["pi
8870: 74 63 68 22 5d 2c 20 22 32 34 6e 22 2c 20 6d 65  tch"], "24n", me
8880: 74 61 5b 74 69 63 6b 5d 5b 22 64 65 6c 61 79 22  ta[tick]["delay"
8890: 5d 20 29 3b 0a 40 40 20 2d 31 34 37 2c 31 31 20  ] );.@@ -147,11 
88a0: 2b 31 38 32 2c 31 33 20 40 40 20 69 66 20 28 69  +182,13 @@ if (i
88b0: 73 48 69 74 29 20 7b 0a 20 20 20 20 20 20 20 20  sHit) {.        
88c0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
88d0: 7d 0a 20 20 20 20 20 20 20 20 20 69 66 20 28 74  }.         if (t
88e0: 72 61 63 6b 5f 6e 6f 20 3d 3d 20 36 29 20 7b 0a  rack_no == 6) {.
88f0: 2d 20 20 20 20 20 20 20 20 20 20 20 20 70 28 35  -            p(5
8900: 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 31  , null, null, "1
8910: 6e 22 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20  n");.+          
8920: 20 70 28 35 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c   p(5, null, null
8930: 2c 20 22 31 6e 22 29 3b 0a 20 20 20 20 20 20 20  , "1n");.       
8940: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 69 66 20    }.         if 
8950: 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 37 29 20  (track_no == 7) 
8960: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6d  {.             m
8970: 65 6d 5b 22 63 22 5d 28 6d 65 6d 5b 22 63 22 5d  em["c"](mem["c"]
8980: 28 29 20 2b 20 31 29 3b 0a 20 20 20 20 20 20 20  () + 1);.       
8990: 20 20 7d 0a 2d 20 20 20 20 7d 0a 2b 20 20 20 20    }.-    }.+    
89a0: 7d 20 0a 2b 0a 20 7d 0a 20 0a 2b 0a 0a 63 6f 6d  } .+. }. .+..com
89b0: 6d 69 74 20 33 31 37 32 32 64 32 62 34 36 63 64  mit 31722d2b46cd
89c0: 33 30 33 39 64 31 62 34 35 32 39 36 65 31 62 38  3039d1b45296e1b8
89d0: 62 61 65 32 38 66 38 33 34 64 34 63 0a 41 75 74  bae28f834d4c.Aut
89e0: 68 6f 72 3a 20 58 79 7a 7a 79 20 41 70 70 73 20  hor: Xyzzy Apps 
89f0: 3c 78 79 7a 7a 79 61 70 70 73 40 67 6d 61 69 6c  <xyzzyapps@gmail
8a00: 2e 63 6f 6d 3e 0a 44 61 74 65 3a 20 20 20 4d 6f  .com>.Date:   Mo
8a10: 6e 20 4e 6f 76 20 31 20 30 35 3a 33 35 3a 31 30  n Nov 1 05:35:10
8a20: 20 32 30 32 31 20 2b 30 30 30 30 0a 0a 20 20 20   2021 +0000..   
8a30: 20 2f 55 73 65 72 73 2f 64 65 76 2f 70 72 6f 6a   /Users/dev/proj
8a40: 2f 70 72 6f 64 75 63 74 69 6f 6e 2f 62 69 74 72  /production/bitr
8a50: 68 79 74 68 6d 2f 73 6f 6e 67 20 6d 6f 64 69 66  hythm/song modif
8a60: 69 65 64 0a 0a 64 69 66 66 20 2d 2d 67 69 74 20  ied..diff --git 
8a70: 61 2f 66 69 72 73 74 2e 6a 73 20 62 2f 66 69 72  a/first.js b/fir
8a80: 73 74 2e 6a 73 0a 69 6e 64 65 78 20 66 66 61 61  st.js.index ffaa
8a90: 32 34 32 2e 2e 33 64 38 65 39 66 62 20 31 30 30  242..3d8e9fb 100
8aa0: 36 34 34 0a 2d 2d 2d 20 61 2f 66 69 72 73 74 2e  644.--- a/first.
8ab0: 6a 73 0a 2b 2b 2b 20 62 2f 66 69 72 73 74 2e 6a  js.+++ b/first.j
8ac0: 73 0a 40 40 20 2d 31 2c 32 31 20 2b 31 2c 32 36  s.@@ -1,21 +1,26
8ad0: 20 40 40 0a 20 76 6f 6c 75 6d 65 5f 67 75 61 72   @@. volume_guar
8ae0: 64 31 20 3d 20 67 75 61 72 64 28 5b 2d 32 30 2c  d1 = guard([-20,
8af0: 31 35 5d 29 0a 2d 76 6f 6c 75 6d 65 5f 67 75 61  15]).-volume_gua
8b00: 72 64 32 20 3d 20 67 75 61 72 64 28 5b 2d 32 30  rd2 = guard([-20
8b10: 2c 31 35 5d 29 0a 20 54 6f 6e 65 2e 4d 61 73 74  ,15]). Tone.Mast
8b20: 65 72 2e 76 6f 6c 75 6d 65 2e 76 61 6c 75 65 20  er.volume.value 
8b30: 3d 20 76 6f 6c 75 6d 65 5f 67 75 61 72 64 31 28  = volume_guard1(
8b40: 4d 61 74 68 2e 72 6f 75 6e 64 28 64 69 61 6c 73  Math.round(dials
8b50: 5b 30 5d 5b 22 63 65 6c 6c 22 5d 28 29 20 2a 20  [0]["cell"]() * 
8b60: 33 30 29 20 2d 32 30 29 3b 0a 20 0a 2d 73 63 65  30) -20);. .-sce
8b70: 6e 65 31 20 3d 20 5b 0a 2b 69 6e 74 72 6f 20 3d  ne1 = [.+intro =
8b80: 20 5b 0a 2b 20 20 20 63 65 6c 6c 78 28 22 70 20   [.+   cellx("p 
8b90: 78 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30  x000 0000 0000 0
8ba0: 30 30 30 20 22 29 2c 0a 2b 5d 0a 2b 0a 2b 6d 61  000 "),.+].+.+ma
8bb0: 69 6e 20 3d 20 5b 0a 20 20 20 20 20 63 65 6c 6c  in = [.     cell
8bc0: 78 28 22 70 20 78 5b 32 3b 5e 43 32 3b 2b 30 2e  x("p x[2;^C2;+0.
8bd0: 30 31 5d 30 30 30 20 30 30 30 30 20 78 5b 30 2e  01]000 0000 x[0.
8be0: 31 5d 30 78 5b 31 5d 30 20 30 30 78 5b 31 5d 30  1]0x[1]0 00x[1]0
8bf0: 20 22 29 2c 0a 20 20 20 20 20 63 65 6c 6c 78 28   "),.     cellx(
8c00: 22 70 20 30 30 30 30 20 78 30 30 30 20 30 30 30  "p 0000 x000 000
8c10: 30 20 78 30 30 30 20 22 29 2c 0a 20 20 20 20 20  0 x000 "),.     
8c20: 63 65 6c 6c 78 28 22 70 20 78 30 78 30 20 78 30  cellx("p x0x0 x0
8c30: 78 30 20 78 30 78 30 20 78 30 78 30 20 22 29 2c  x0 x0x0 x0x0 "),
8c40: 0a 20 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78  .     cellx("p x
8c50: 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30 30  000 0000 0000 00
8c60: 30 30 20 22 29 2c 0a 2d 20 20 20 20 63 65 6c 6c  00 "),.-    cell
8c70: 78 28 22 70 20 78 5b 5e 43 33 5d 30 30 30 20 78  x("p x[^C3]000 x
8c80: 2e 30 30 30 20 30 30 30 30 20 30 30 30 30 20 22  .000 0000 0000 "
8c90: 29 2c 0a 2d 20 20 20 20 63 65 6c 6c 78 28 22 70  ),.-    cellx("p
8ca0: 20 30 30 30 30 20 30 30 30 30 20 78 30 78 30 20   0000 0000 x0x0 
8cb0: 30 30 78 30 20 22 29 2c 0a 2d 20 20 20 20 63 65  00x0 "),.-    ce
8cc0: 6c 6c 78 28 22 70 20 30 30 30 30 20 30 30 30 30  llx("p 0000 0000
8cd0: 20 30 30 30 30 20 30 30 30 30 20 22 29 2c 0a 2d   0000 0000 "),.-
8ce0: 0a 20 5d 0a 20 0a 2d 70 61 74 74 65 72 6e 73 20  . ]. .-patterns 
8cf0: 3d 20 73 63 65 6e 65 31 0a 2d 0a 2d 61 6c 77 61  = scene1.-.-alwa
8d00: 79 73 28 29 3b 0a 2b 62 61 73 73 20 3d 20 5b 0a  ys();.+bass = [.
8d10: 2b 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78 5b  +    cellx("p x[
8d20: 32 3b 5e 43 32 3b 2b 30 2e 30 31 5d 30 30 30 20  2;^C2;+0.01]000 
8d30: 30 30 30 30 20 78 5b 30 2e 31 5d 30 78 5b 31 5d  0000 x[0.1]0x[1]
8d40: 30 20 30 30 78 5b 31 5d 30 20 22 29 2c 0a 2b 20  0 00x[1]0 "),.+ 
8d50: 20 20 20 63 65 6c 6c 78 28 22 70 20 30 30 30 30     cellx("p 0000
8d60: 20 78 30 30 30 20 30 30 30 30 20 78 30 30 30 20   x000 0000 x000 
8d70: 22 29 2c 0a 2b 20 20 20 20 63 65 6c 6c 78 28 22  "),.+    cellx("
8d80: 70 20 78 30 78 30 20 78 30 78 30 20 78 30 78 30  p x0x0 x0x0 x0x0
8d90: 20 78 30 78 30 20 22 29 2c 0a 2b 20 20 20 20 63   x0x0 "),.+    c
8da0: 65 6c 6c 78 28 22 70 20 78 30 30 30 20 30 30 30  ellx("p x000 000
8db0: 30 20 30 30 30 30 20 30 30 30 30 20 22 29 2c 0a  0 0000 0000 "),.
8dc0: 2b 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78 5b  +    cellx("p x[
8dd0: 5e 43 33 5d 30 30 30 20 78 2e 30 30 30 20 30 30  ^C3]000 x.000 00
8de0: 30 30 20 30 30 30 30 20 22 29 2c 0a 2b 20 20 20  00 0000 "),.+   
8df0: 20 63 65 6c 6c 78 28 22 70 20 30 30 30 30 20 30   cellx("p 0000 0
8e00: 30 30 30 20 78 30 78 30 20 30 30 78 30 20 22 29  000 x0x0 00x0 ")
8e10: 2c 20 2f 2f 20 6d 65 6c 6f 64 79 0a 2b 20 20 20  , // melody.+   
8e20: 20 63 65 6c 6c 78 28 22 70 20 30 30 30 30 20 30   cellx("p 0000 0
8e30: 30 30 30 20 30 30 30 30 20 30 30 30 30 20 22 29  000 0000 0000 ")
8e40: 2c 20 2f 2f 20 66 69 6c 6c 0a 2b 5d 0a 20 0a 20  , // fill.+]. . 
8e50: 66 75 6e 63 74 69 6f 6e 20 53 61 6d 70 6c 65 28  function Sample(
8e60: 6e 61 6d 65 2c 20 6e 6f 2c 20 66 69 6c 74 65 72  name, no, filter
8e70: 2c 20 76 6f 6c 75 6d 65 29 20 7b 0a 20 20 20 20  , volume) {.    
8e80: 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 0a 40 40 20   name = name.@@ 
8e90: 2d 36 37 2c 37 20 2b 37 32 2c 37 20 40 40 20 66  -67,7 +72,7 @@ f
8ea0: 75 6e 63 74 69 6f 6e 20 6f 6e 63 65 20 28 29 20  unction once () 
8eb0: 7b 0a 20 20 20 20 20 6c 65 74 20 6d 79 70 35 20  {.     let myp5 
8ec0: 3d 20 6e 65 77 20 70 35 28 73 2c 20 20 64 6f 63  = new p5(s,  doc
8ed0: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
8ee0: 42 79 49 64 28 27 63 61 6e 76 61 73 2d 63 6f 6e  ById('canvas-con
8ef0: 74 61 69 6e 65 72 27 29 29 3b 0a 20 0a 20 20 20  tainer'));. .   
8f00: 20 20 72 65 6e 64 65 72 5f 6c 6f 6f 70 20 3d 20    render_loop = 
8f10: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 2d 20  function () {.- 
8f20: 20 20 20 09 70 72 2e 72 65 63 74 28 78 2c 79 2c     .pr.rect(x,y,
8f30: 35 30 2c 35 30 29 3b 0a 2b 2f 2f 20 20 20 20 09  50,50);.+//    .
8f40: 70 72 2e 72 65 63 74 28 78 2c 79 2c 35 30 2c 35  pr.rect(x,y,50,5
8f50: 30 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 20 20 20  0);.     }. .   
8f60: 20 20 54 6f 6e 65 2e 4d 61 73 74 65 72 2e 76 6f    Tone.Master.vo
8f70: 6c 75 6d 65 2e 76 61 6c 75 65 20 3d 20 2d 33 30  lume.value = -30
8f80: 0a 40 40 20 2d 39 39 2c 33 33 20 2b 31 30 34 2c  .@@ -99,33 +104,
8f90: 35 34 20 40 40 20 66 75 6e 63 74 69 6f 6e 20 6f  54 @@ function o
8fa0: 6e 63 65 20 28 29 20 7b 0a 20 7d 0a 20 0a 20 74  nce () {. }. . t
8fb0: 72 61 6e 73 69 74 69 6f 6e 20 3d 20 6f 6e 63 65  ransition = once
8fc0: 3b 0a 2b 63 75 72 72 65 6e 74 5f 73 63 65 6e 65  ;.+current_scene
8fd0: 20 3d 20 22 6d 61 69 6e 22 3b 0a 2b 70 61 74 74   = "main";.+patt
8fe0: 65 72 6e 73 20 3d 20 65 76 61 6c 28 60 24 7b 63  erns = eval(`${c
8ff0: 75 72 72 65 6e 74 5f 73 63 65 6e 65 7d 60 29 3b  urrent_scene}`);
9000: 0a 2b 61 6c 77 61 79 73 28 29 3b 0a 20 0a 20 69  .+always();. . i
9010: 66 20 28 69 73 48 69 74 29 20 7b 0a 2d 20 20 20  f (isHit) {.-   
9020: 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d   if (track_no ==
9030: 20 31 29 20 7b 0a 2d 20 20 20 20 20 20 20 20 70   1) {.-        p
9040: 28 30 2c 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22  (0, meta[tick]["
9050: 76 6f 6c 75 6d 65 22 5d 2c 20 6d 65 74 61 5b 74  volume"], meta[t
9060: 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d 2c 20 22  ick]["pitch"], "
9070: 32 34 6e 22 2c 20 6d 65 74 61 5b 74 69 63 6b 5d  24n", meta[tick]
9080: 5b 22 64 65 6c 61 79 22 5d 20 29 3b 0a 2d 20 20  ["delay"] );.-  
9090: 20 20 7d 0a 2d 20 20 20 20 69 66 20 28 74 72 61    }.-    if (tra
90a0: 63 6b 5f 6e 6f 20 3d 3d 20 32 29 20 7b 0a 2d 20  ck_no == 2) {.- 
90b0: 20 20 20 20 20 20 20 70 28 31 29 3b 0a 2d 20 20         p(1);.-  
90c0: 20 20 7d 0a 2d 20 20 20 20 69 66 20 28 74 72 61    }.-    if (tra
90d0: 63 6b 5f 6e 6f 20 3d 3d 20 33 29 20 7b 0a 2d 20  ck_no == 3) {.- 
90e0: 20 20 20 20 20 20 20 70 28 32 29 0a 2d 20 20 20         p(2).-   
90f0: 20 7d 0a 2d 20 20 20 20 69 66 20 28 74 72 61 63   }.-    if (trac
9100: 6b 5f 6e 6f 20 3d 3d 20 34 29 20 7b 0a 2d 20 20  k_no == 4) {.-  
9110: 20 20 20 20 20 20 70 28 33 2c 20 6e 75 6c 6c 2c        p(3, null,
9120: 20 6e 75 6c 6c 2c 20 22 31 6e 22 29 3b 0a 2d 20   null, "1n");.- 
9130: 20 20 20 7d 0a 2d 20 20 20 20 69 66 20 28 74 72     }.-    if (tr
9140: 61 63 6b 5f 6e 6f 20 3d 3d 20 35 29 20 7b 0a 2d  ack_no == 5) {.-
9150: 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e          console.
9160: 6c 6f 67 28 6d 65 74 61 5b 74 69 63 6b 5d 29 0a  log(meta[tick]).
9170: 2d 20 20 20 20 20 20 20 20 69 66 20 28 6d 65 74  -        if (met
9180: 61 5b 74 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d  a[tick]["pitch"]
9190: 29 20 7b 0a 2d 20 20 20 20 20 20 20 20 20 20 20  ) {.-           
91a0: 20 6d 65 6d 5b 22 74 68 72 65 65 22 5d 2e 73 74   mem["three"].st
91b0: 65 70 28 7b 22 67 6c 69 64 65 22 3a 20 74 72 75  ep({"glide": tru
91c0: 65 2c 20 22 61 63 63 65 6e 74 22 3a 20 66 61 6c  e, "accent": fal
91d0: 73 65 2c 20 22 6e 6f 74 65 22 3a 20 6d 65 74 61  se, "note": meta
91e0: 5b 74 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d 7d  [tick]["pitch"]}
91f0: 29 3b 0a 2d 20 20 20 20 20 20 20 20 7d 20 65 6c  );.-        } el
9200: 73 65 20 7b 0a 2d 20 20 20 20 20 20 20 20 20 20  se {.-          
9210: 20 20 6d 65 6d 5b 22 74 68 72 65 65 22 5d 2e 73    mem["three"].s
9220: 74 65 70 28 22 6f 66 66 22 29 3b 0a 2b 20 20 20  tep("off");.+   
9230: 20 69 66 20 28 63 75 72 72 65 6e 74 5f 73 63 65   if (current_sce
9240: 6e 65 20 3d 3d 20 22 69 6e 74 72 6f 22 29 20 7b  ne == "intro") {
9250: 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 74 72  .+        if (tr
9260: 61 63 6b 5f 6e 6f 20 3d 3d 20 31 29 20 7b 0a 2b  ack_no == 1) {.+
9270: 20 20 20 20 20 20 20 20 20 20 20 20 70 28 33 2c              p(3,
9280: 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 31 6e   null, null, "1n
9290: 22 29 3b 0a 2b 20 20 20 20 20 20 20 20 7d 0a 2b  ");.+        }.+
92a0: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63      } else if (c
92b0: 75 72 72 65 6e 74 5f 73 63 65 6e 65 20 3d 3d 20  urrent_scene == 
92c0: 22 6d 61 69 6e 22 29 20 7b 0a 2b 20 20 20 20 20  "main") {.+     
92d0: 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20     if (track_no 
92e0: 3d 3d 20 31 29 20 7b 0a 2b 20 20 20 20 20 20 20  == 1) {.+       
92f0: 20 20 20 20 20 70 28 30 2c 20 6d 65 74 61 5b 74       p(0, meta[t
9300: 69 63 6b 5d 5b 22 76 6f 6c 75 6d 65 22 5d 2c 20  ick]["volume"], 
9310: 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 70 69 74 63  meta[tick]["pitc
9320: 68 22 5d 2c 20 22 32 34 6e 22 2c 20 6d 65 74 61  h"], "24n", meta
9330: 5b 74 69 63 6b 5d 5b 22 64 65 6c 61 79 22 5d 20  [tick]["delay"] 
9340: 29 3b 0a 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20  );.+        }.+ 
9350: 20 20 20 20 20 20 20 69 66 20 28 74 72 61 63 6b         if (track
9360: 5f 6e 6f 20 3d 3d 20 32 29 20 7b 0a 2b 20 20 20  _no == 2) {.+   
9370: 20 20 20 20 20 20 20 20 20 70 28 31 29 3b 0a 2b           p(1);.+
9380: 20 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 20          }.+     
9390: 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20     if (track_no 
93a0: 3d 3d 20 33 29 20 7b 0a 2b 20 20 20 20 20 20 20  == 3) {.+       
93b0: 20 20 20 20 20 70 28 32 29 0a 2b 20 20 20 20 20       p(2).+     
93c0: 20 20 20 7d 0a 2b 20 20 20 20 20 20 20 20 69 66     }.+        if
93d0: 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 34 29   (track_no == 4)
93e0: 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20   {.+            
93f0: 70 28 33 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c  p(3, null, null,
9400: 20 22 31 6e 22 29 3b 0a 2b 20 20 20 20 20 20 20   "1n");.+       
9410: 20 7d 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 69   }.+    } else i
9420: 66 20 28 63 75 72 72 65 6e 74 5f 73 63 65 6e 65  f (current_scene
9430: 20 3d 3d 20 22 62 61 73 73 22 29 20 7b 0a 2b 20   == "bass") {.+ 
9440: 20 20 20 20 20 20 20 69 66 20 28 74 72 61 63 6b         if (track
9450: 5f 6e 6f 20 3d 3d 20 31 29 20 7b 0a 2b 20 20 20  _no == 1) {.+   
9460: 20 20 20 20 20 20 20 20 20 70 28 30 2c 20 6d 65           p(0, me
9470: 74 61 5b 74 69 63 6b 5d 5b 22 76 6f 6c 75 6d 65  ta[tick]["volume
9480: 22 5d 2c 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22  "], meta[tick]["
9490: 70 69 74 63 68 22 5d 2c 20 22 32 34 6e 22 2c 20  pitch"], "24n", 
94a0: 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 64 65 6c 61  meta[tick]["dela
94b0: 79 22 5d 20 29 3b 0a 2b 20 20 20 20 20 20 20 20  y"] );.+        
94c0: 7d 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 74  }.+        if (t
94d0: 72 61 63 6b 5f 6e 6f 20 3d 3d 20 32 29 20 7b 0a  rack_no == 2) {.
94e0: 2b 20 20 20 20 20 20 20 20 20 20 20 20 70 28 31  +            p(1
94f0: 29 3b 0a 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20  );.+        }.+ 
9500: 20 20 20 20 20 20 20 69 66 20 28 74 72 61 63 6b         if (track
9510: 5f 6e 6f 20 3d 3d 20 33 29 20 7b 0a 2b 20 20 20  _no == 3) {.+   
9520: 20 20 20 20 20 20 20 20 20 70 28 32 29 0a 2b 20           p(2).+ 
9530: 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 20 20         }.+      
9540: 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d    if (track_no =
9550: 3d 20 34 29 20 7b 0a 2b 20 20 20 20 20 20 20 20  = 4) {.+        
9560: 20 20 20 20 70 28 33 2c 20 6e 75 6c 6c 2c 20 6e      p(3, null, n
9570: 75 6c 6c 2c 20 22 31 6e 22 29 3b 0a 2b 20 20 20  ull, "1n");.+   
9580: 20 20 20 20 20 7d 0a 2b 20 20 20 20 20 20 20 20       }.+        
9590: 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20  if (track_no == 
95a0: 35 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20  5) {.+          
95b0: 20 20 69 66 20 28 6d 65 74 61 5b 74 69 63 6b 5d    if (meta[tick]
95c0: 5b 22 70 69 74 63 68 22 5d 29 20 7b 0a 2b 20 20  ["pitch"]) {.+  
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65                me
95e0: 6d 5b 22 74 68 72 65 65 22 5d 2e 73 74 65 70 28  m["three"].step(
95f0: 7b 22 67 6c 69 64 65 22 3a 20 74 72 75 65 2c 20  {"glide": true, 
9600: 22 61 63 63 65 6e 74 22 3a 20 66 61 6c 73 65 2c  "accent": false,
9610: 20 22 6e 6f 74 65 22 3a 20 6d 65 74 61 5b 74 69   "note": meta[ti
9620: 63 6b 5d 5b 22 70 69 74 63 68 22 5d 7d 29 3b 0a  ck]["pitch"]});.
9630: 2b 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65  +            } e
9640: 6c 73 65 20 7b 0a 2b 20 20 20 20 20 20 20 20 20  lse {.+         
9650: 20 20 20 20 20 20 20 6d 65 6d 5b 22 74 68 72 65         mem["thre
9660: 65 22 5d 2e 73 74 65 70 28 22 6f 66 66 22 29 3b  e"].step("off");
9670: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  .+            }.
9680: 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20  +        }.+    
9690: 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f      if (track_no
96a0: 20 3d 3d 20 36 29 20 7b 0a 2b 20 20 20 20 20 20   == 6) {.+      
96b0: 20 20 20 20 20 20 70 28 35 2c 20 6e 75 6c 6c 2c        p(5, null,
96c0: 20 6e 75 6c 6c 2c 20 22 31 6e 22 29 3b 0a 2b 20   null, "1n");.+ 
96d0: 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 20 20         }.+      
96e0: 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d    if (track_no =
96f0: 3d 20 37 29 20 7b 0a 2b 20 20 20 20 20 20 20 20  = 7) {.+        
9700: 20 20 20 20 6d 65 6d 5b 22 63 22 5d 28 6d 65 6d      mem["c"](mem
9710: 5b 22 63 22 5d 28 29 20 2b 20 31 29 3b 0a 20 20  ["c"]() + 1);.  
9720: 20 20 20 20 20 20 20 7d 0a 2d 20 20 20 20 7d 0a         }.-    }.
9730: 2d 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e  -    if (track_n
9740: 6f 20 3d 3d 20 36 29 20 7b 0a 2d 20 20 20 20 20  o == 6) {.-     
9750: 20 20 20 70 28 35 2c 20 6e 75 6c 6c 2c 20 6e 75     p(5, null, nu
9760: 6c 6c 2c 20 22 31 6e 22 29 3b 0a 2d 20 20 20 20  ll, "1n");.-    
9770: 7d 0a 2d 20 20 20 20 69 66 20 28 74 72 61 63 6b  }.-    if (track
9780: 5f 6e 6f 20 3d 3d 20 37 29 20 7b 0a 2d 20 20 20  _no == 7) {.-   
9790: 20 20 20 20 20 6d 65 6d 5b 22 63 22 5d 28 6d 65       mem["c"](me
97a0: 6d 5b 22 63 22 5d 28 29 20 2b 20 31 29 3b 0a 20  m["c"]() + 1);. 
97b0: 20 20 20 20 7d 0a 20 7d 0a 20 0a 0a 63 6f 6d 6d      }. }. ..comm
97c0: 69 74 20 34 33 38 31 36 36 34 39 65 34 39 34 34  it 43816649e4944
97d0: 38 33 61 33 39 65 30 65 36 33 38 36 66 38 39 61  83a39e0e6386f89a
97e0: 35 62 39 30 65 30 39 32 32 37 30 0a 41 75 74 68  5b90e092270.Auth
97f0: 6f 72 3a 20 58 79 7a 7a 79 20 41 70 70 73 20 3c  or: Xyzzy Apps <
9800: 78 79 7a 7a 79 61 70 70 73 40 67 6d 61 69 6c 2e  xyzzyapps@gmail.
9810: 63 6f 6d 3e 0a 44 61 74 65 3a 20 20 20 4d 6f 6e  com>.Date:   Mon
9820: 20 4e 6f 76 20 31 20 30 34 3a 34 37 3a 35 35 20   Nov 1 04:47:55 
9830: 32 30 32 31 20 2b 30 30 30 30 0a 0a 20 20 20 20  2021 +0000..    
9840: 2f 55 73 65 72 73 2f 64 65 76 2f 70 72 6f 6a 2f  /Users/dev/proj/
9850: 70 72 6f 64 75 63 74 69 6f 6e 2f 62 69 74 72 68  production/bitrh
9860: 79 74 68 6d 2f 73 6f 6e 67 20 6d 6f 64 69 66 69  ythm/song modifi
9870: 65 64 0a 0a 64 69 66 66 20 2d 2d 67 69 74 20 61  ed..diff --git a
9880: 2f 66 69 72 73 74 2e 6a 73 20 62 2f 66 69 72 73  /first.js b/firs
9890: 74 2e 6a 73 0a 69 6e 64 65 78 20 38 33 66 34 38  t.js.index 83f48
98a0: 66 31 2e 2e 66 66 61 61 32 34 32 20 31 30 30 36  f1..ffaa242 1006
98b0: 34 34 0a 2d 2d 2d 20 61 2f 66 69 72 73 74 2e 6a  44.--- a/first.j
98c0: 73 0a 2b 2b 2b 20 62 2f 66 69 72 73 74 2e 6a 73  s.+++ b/first.js
98d0: 0a 40 40 20 2d 33 35 2c 36 20 2b 33 35 2c 34 31  .@@ -35,6 +35,41
98e0: 20 40 40 20 66 75 6e 63 74 69 6f 6e 20 70 28 73   @@ function p(s
98f0: 2c 20 76 6f 6c 2c 20 20 6e 6f 74 65 2c 20 20 6c  , vol,  note,  l
9900: 65 6e 2c 20 64 65 6c 61 79 29 20 7b 0a 20 7d 0a  en, delay) {. }.
9910: 20 0a 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 63 65   . function once
9920: 20 28 29 20 7b 0a 2b 0a 2b 20 20 20 20 76 61 72   () {.+.+    var
9930: 20 70 72 3b 0a 2b 20 20 20 20 63 6f 6e 73 74 20   pr;.+    const 
9940: 73 20 3d 20 28 20 70 20 29 20 3d 3e 20 7b 0a 2b  s = ( p ) => {.+
9950: 20 20 20 20 20 20 20 20 70 72 20 3d 20 70 3b 0a          pr = p;.
9960: 2b 20 20 20 20 20 20 20 20 76 61 72 20 69 6d 67  +        var img
9970: 3b 0a 2b 0a 2b 20 20 20 20 20 20 20 20 6c 65 74  ;.+.+        let
9980: 20 78 20 3d 20 31 30 30 3b 20 0a 2b 20 20 20 20   x = 100; .+    
9990: 20 20 20 20 6c 65 74 20 79 20 3d 20 31 30 30 3b      let y = 100;
99a0: 0a 2b 0a 2b 20 20 20 20 20 20 20 20 70 2e 73 65  .+.+        p.se
99b0: 74 75 70 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29  tup = function()
99c0: 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20   {.+            
99d0: 76 61 72 20 78 20 3d 20 70 2e 63 72 65 61 74 65  var x = p.create
99e0: 43 61 6e 76 61 73 28 37 30 30 2c 20 34 31 30 29  Canvas(700, 410)
99f0: 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 78  ;.+            x
9a00: 2e 63 61 6e 76 61 73 2e 73 74 79 6c 65 2e 70 6f  .canvas.style.po
9a10: 73 69 74 69 6f 6e 20 3d 20 22 61 62 73 6f 6c 75  sition = "absolu
9a20: 74 65 22 3b 0a 2b 20 20 20 20 20 20 20 20 20 20  te";.+          
9a30: 20 20 70 2e 66 72 61 6d 65 52 61 74 65 28 33 30    p.frameRate(30
9a40: 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20  );.+            
9a50: 69 6d 67 20 3d 20 70 2e 6c 6f 61 64 49 6d 61 67  img = p.loadImag
9a60: 65 28 27 2f 74 65 73 74 2e 70 6e 67 27 29 3b 0a  e('/test.png');.
9a70: 2b 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e  +            con
9a80: 73 6f 6c 65 2e 6c 6f 67 28 69 6d 67 29 3b 0a 2b  sole.log(img);.+
9a90: 20 20 20 20 20 20 20 20 7d 3b 0a 2b 0a 2b 20 20          };.+.+  
9aa0: 20 20 20 20 20 20 70 2e 64 72 61 77 20 3d 20 66        p.draw = f
9ab0: 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 2b 20 20 20  unction() {.+   
9ac0: 20 20 20 20 20 20 20 20 20 76 61 72 20 65 20 3d           var e =
9ad0: 20 67 65 74 52 61 6e 64 6f 6d 49 6e 74 28 32 29   getRandomInt(2)
9ae0: 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 70  ;.+            p
9af0: 2e 63 6c 65 61 72 28 29 3b 0a 2b 20 20 20 20 20  .clear();.+     
9b00: 20 20 20 20 20 20 20 69 66 20 28 65 20 3d 3d 20         if (e == 
9b10: 30 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20  0) {.+          
9b20: 20 20 20 20 20 20 2f 2f 20 20 20 70 2e 66 69 6c        //   p.fil
9b30: 6c 28 31 32 33 29 3b 0a 2b 20 20 20 20 20 20 20  l(123);.+       
9b40: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 70 2e 72           //  p.r
9b50: 65 63 74 28 78 2c 79 2c 35 30 2c 35 30 29 3b 0a  ect(x,y,50,50);.
9b60: 2b 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65  +            } e
9b70: 6c 73 65 20 7b 0a 2b 20 20 20 20 20 20 20 20 20  lse {.+         
9b80: 20 20 20 20 20 20 20 70 2e 69 6d 61 67 65 28 69         p.image(i
9b90: 6d 67 2c 20 30 2c 20 30 29 3b 0a 2b 20 20 20 20  mg, 0, 0);.+    
9ba0: 20 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 20          }.+     
9bb0: 20 20 20 7d 3b 0a 2b 20 20 20 20 7d 3b 0a 2b 0a     };.+    };.+.
9bc0: 2b 20 20 20 20 6c 65 74 20 6d 79 70 35 20 3d 20  +    let myp5 = 
9bd0: 6e 65 77 20 70 35 28 73 2c 20 20 64 6f 63 75 6d  new p5(s,  docum
9be0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
9bf0: 49 64 28 27 63 61 6e 76 61 73 2d 63 6f 6e 74 61  Id('canvas-conta
9c00: 69 6e 65 72 27 29 29 3b 0a 2b 0a 2b 20 20 20 20  iner'));.+.+    
9c10: 72 65 6e 64 65 72 5f 6c 6f 6f 70 20 3d 20 66 75  render_loop = fu
9c20: 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 2b 20 20 20  nction () {.+   
9c30: 20 09 70 72 2e 72 65 63 74 28 78 2c 79 2c 35 30   .pr.rect(x,y,50
9c40: 2c 35 30 29 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 20  ,50);.+    }.+. 
9c50: 20 20 20 20 54 6f 6e 65 2e 4d 61 73 74 65 72 2e      Tone.Master.
9c60: 76 6f 6c 75 6d 65 2e 76 61 6c 75 65 20 3d 20 2d  volume.value = -
9c70: 33 30 0a 20 20 20 20 20 6d 65 6d 2e 6d 61 73 74  30.     mem.mast
9c80: 65 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 68  er = new Tone.Ch
9c90: 61 6e 6e 65 6c 28 7b 63 68 61 6e 6e 65 6c 43 6f  annel({channelCo
9ca0: 75 6e 74 3a 20 32 2c 20 76 6f 6c 75 6d 65 3a 20  unt: 2, volume: 
9cb0: 2d 31 30 7d 29 2e 63 68 61 69 6e 28 54 6f 6e 65  -10}).chain(Tone
9cc0: 2e 44 65 73 74 69 6e 61 74 69 6f 6e 29 3b 0a 20  .Destination);. 
9cd0: 20 20 20 20 53 61 6d 70 6c 65 28 22 6b 22 2c 20      Sample("k", 
9ce0: 30 2c 20 6e 75 6c 6c 2c 20 2d 35 29 3b 0a 0a 63  0, null, -5);..c
9cf0: 6f 6d 6d 69 74 20 63 32 34 39 62 36 30 64 62 61  ommit c249b60dba
9d00: 34 65 35 30 37 61 38 38 30 63 66 62 36 38 63 32  4e507a880cfb68c2
9d10: 39 61 33 32 34 63 61 64 32 37 33 62 33 39 0a 41  9a324cad273b39.A
9d20: 75 74 68 6f 72 3a 20 58 79 7a 7a 79 20 41 70 70  uthor: Xyzzy App
9d30: 73 20 3c 78 79 7a 7a 79 61 70 70 73 40 67 6d 61  s <xyzzyapps@gma
9d40: 69 6c 2e 63 6f 6d 3e 0a 44 61 74 65 3a 20 20 20  il.com>.Date:   
9d50: 4d 6f 6e 20 4e 6f 76 20 31 20 30 33 3a 30 31 3a  Mon Nov 1 03:01:
9d60: 30 36 20 32 30 32 31 20 2b 30 30 30 30 0a 0a 20  06 2021 +0000.. 
9d70: 20 20 20 2f 55 73 65 72 73 2f 64 65 76 2f 70 72     /Users/dev/pr
9d80: 6f 6a 2f 70 72 6f 64 75 63 74 69 6f 6e 2f 62 69  oj/production/bi
9d90: 74 72 68 79 74 68 6d 2f 73 6f 6e 67 20 6d 6f 64  trhythm/song mod
9da0: 69 66 69 65 64 0a 0a 64 69 66 66 20 2d 2d 67 69  ified..diff --gi
9db0: 74 20 61 2f 66 69 72 73 74 2e 6a 73 20 62 2f 66  t a/first.js b/f
9dc0: 69 72 73 74 2e 6a 73 0a 69 6e 64 65 78 20 31 38  irst.js.index 18
9dd0: 36 34 61 65 37 2e 2e 38 33 66 34 38 66 31 20 31  64ae7..83f48f1 1
9de0: 30 30 36 34 34 0a 2d 2d 2d 20 61 2f 66 69 72 73  00644.--- a/firs
9df0: 74 2e 6a 73 0a 2b 2b 2b 20 62 2f 66 69 72 73 74  t.js.+++ b/first
9e00: 2e 6a 73 0a 40 40 20 2d 32 36 2c 37 20 2b 32 36  .js.@@ -26,7 +26
9e10: 2c 36 20 40 40 20 66 75 6e 63 74 69 6f 6e 20 53  ,6 @@ function S
9e20: 61 6d 70 6c 65 28 6e 61 6d 65 2c 20 6e 6f 2c 20  ample(name, no, 
9e30: 66 69 6c 74 65 72 2c 20 76 6f 6c 75 6d 65 29 20  filter, volume) 
9e40: 7b 0a 20 20 20 20 20 73 61 6d 70 6c 65 73 5b 6e  {.     samples[n
9e50: 6f 5d 2e 63 6f 6e 6e 65 63 74 28 6d 65 6d 5b 6e  o].connect(mem[n
9e60: 61 6d 65 20 2b 20 22 5f 63 68 61 6e 6e 65 6c 22  ame + "_channel"
9e70: 5d 29 3b 0a 20 7d 0a 20 0a 2d 0a 20 66 75 6e 63  ]);. }. .-. func
9e80: 74 69 6f 6e 20 70 28 73 2c 20 76 6f 6c 2c 20 20  tion p(s, vol,  
9e90: 6e 6f 74 65 2c 20 20 6c 65 6e 2c 20 64 65 6c 61  note,  len, dela
9ea0: 79 29 20 7b 0a 20 20 20 20 20 6e 6f 74 65 20 3d  y) {.     note =
9eb0: 20 6e 6f 74 65 20 7c 7c 20 22 43 33 22 0a 20 20   note || "C3".  
9ec0: 20 20 20 6c 65 6e 20 3d 20 6c 65 6e 20 7c 7c 20     len = len || 
9ed0: 22 31 36 6e 22 0a 40 40 20 2d 33 35 2c 38 20 2b  "16n".@@ -35,8 +
9ee0: 33 34 2c 36 20 40 40 20 66 75 6e 63 74 69 6f 6e  34,6 @@ function
9ef0: 20 70 28 73 2c 20 76 6f 6c 2c 20 20 6e 6f 74 65   p(s, vol,  note
9f00: 2c 20 20 6c 65 6e 2c 20 64 65 6c 61 79 29 20 7b  ,  len, delay) {
9f10: 0a 20 20 20 20 20 73 61 6d 70 6c 65 73 5b 73 5d  .     samples[s]
9f20: 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b 52 65  .triggerAttackRe
9f30: 6c 65 61 73 65 28 6e 6f 74 65 2c 20 6c 65 6e 2c  lease(note, len,
9f40: 20 64 65 6c 61 79 2c 20 76 6f 6c 29 3b 0a 20 7d   delay, vol);. }
9f50: 0a 20 0a 2d 0a 2d 0a 20 66 75 6e 63 74 69 6f 6e  . .-.-. function
9f60: 20 6f 6e 63 65 20 28 29 20 7b 0a 20 20 20 20 20   once () {.     
9f70: 54 6f 6e 65 2e 4d 61 73 74 65 72 2e 76 6f 6c 75  Tone.Master.volu
9f80: 6d 65 2e 76 61 6c 75 65 20 3d 20 2d 33 30 0a 20  me.value = -30. 
9f90: 20 20 20 20 6d 65 6d 2e 6d 61 73 74 65 72 20 3d      mem.master =
9fa0: 20 6e 65 77 20 54 6f 6e 65 2e 43 68 61 6e 6e 65   new Tone.Channe
9fb0: 6c 28 7b 63 68 61 6e 6e 65 6c 43 6f 75 6e 74 3a  l({channelCount:
9fc0: 20 32 2c 20 76 6f 6c 75 6d 65 3a 20 2d 31 30 7d   2, volume: -10}
9fd0: 29 2e 63 68 61 69 6e 28 54 6f 6e 65 2e 44 65 73  ).chain(Tone.Des
9fe0: 74 69 6e 61 74 69 6f 6e 29 3b 0a 40 40 20 2d 36  tination);.@@ -6
9ff0: 34 2c 31 39 20 2b 36 31 2c 31 33 20 40 40 20 66  4,19 +61,13 @@ f
a000: 75 6e 63 74 69 6f 6e 20 6f 6e 63 65 20 28 29 20  unction once () 
a010: 7b 0a 20 20 20 20 20 63 6f 6e 73 74 20 74 68 72  {.     const thr
a020: 65 65 20 3d 20 54 68 72 65 65 4f 68 55 6e 69 74  ee = ThreeOhUnit
a030: 28 61 75 64 69 6f 2c 20 22 73 61 77 74 6f 6f 74  (audio, "sawtoot
a040: 68 22 29 0a 20 20 20 20 20 2f 2f 20 61 75 64 69  h").     // audi
a050: 6f 2e 6d 61 73 74 65 72 2e 69 6e 2e 67 61 69 6e  o.master.in.gain
a060: 2e 76 61 6c 75 65 20 3d 20 30 2e 35 3b 0a 20 20  .value = 0.5;.  
a070: 20 20 20 6d 65 6d 5b 22 74 68 72 65 65 22 5d 20     mem["three"] 
a080: 3d 20 74 68 72 65 65 0a 2d 0a 2d 0a 20 7d 0a 20  = three.-.-. }. 
a090: 0a 2d 0a 2d 0a 20 74 72 61 6e 73 69 74 69 6f 6e  .-.-. transition
a0a0: 20 3d 20 6f 6e 63 65 3b 0a 20 0a 2d 0a 20 69 66   = once;. .-. if
a0b0: 20 28 69 73 48 69 74 29 20 7b 0a 20 20 20 20 20   (isHit) {.     
a0c0: 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20  if (track_no == 
a0d0: 31 29 20 7b 0a 20 20 20 20 20 20 20 20 20 70 28  1) {.         p(
a0e0: 30 2c 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 76  0, meta[tick]["v
a0f0: 6f 6c 75 6d 65 22 5d 2c 20 6d 65 74 61 5b 74 69  olume"], meta[ti
a100: 63 6b 5d 5b 22 70 69 74 63 68 22 5d 2c 20 22 32  ck]["pitch"], "2
a110: 34 6e 22 2c 20 6d 65 74 61 5b 74 69 63 6b 5d 5b  4n", meta[tick][
a120: 22 64 65 6c 61 79 22 5d 20 29 3b 0a 2d 0a 20 20  "delay"] );.-.  
a130: 20 20 20 7d 0a 20 20 20 20 20 69 66 20 28 74 72     }.     if (tr
a140: 61 63 6b 5f 6e 6f 20 3d 3d 20 32 29 20 7b 0a 20  ack_no == 2) {. 
a150: 20 20 20 20 20 20 20 20 70 28 31 29 3b 0a 40 40          p(1);.@@
a160: 20 2d 38 36 2c 38 20 2b 37 37 2c 37 20 40 40 20   -86,8 +77,7 @@ 
a170: 69 66 20 28 69 73 48 69 74 29 20 7b 0a 20 20 20  if (isHit) {.   
a180: 20 20 7d 0a 20 20 20 20 20 69 66 20 28 74 72 61    }.     if (tra
a190: 63 6b 5f 6e 6f 20 3d 3d 20 34 29 20 7b 0a 20 20  ck_no == 4) {.  
a1a0: 20 20 20 20 20 20 20 70 28 33 2c 20 6e 75 6c 6c         p(3, null
a1b0: 2c 20 6e 75 6c 6c 2c 20 22 31 6e 22 29 3b 0a 2d  , null, "1n");.-
a1c0: 0a 2d 20 20 20 20 7d 09 0a 2b 20 20 20 20 7d 0a  .-    }..+    }.
a1d0: 20 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e       if (track_n
a1e0: 6f 20 3d 3d 20 35 29 20 7b 0a 20 20 20 20 20 20  o == 5) {.      
a1f0: 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 6d     console.log(m
a200: 65 74 61 5b 74 69 63 6b 5d 29 0a 20 20 20 20 20  eta[tick]).     
a210: 20 20 20 20 69 66 20 28 6d 65 74 61 5b 74 69 63      if (meta[tic
a220: 6b 5d 5b 22 70 69 74 63 68 22 5d 29 20 7b 0a 40  k]["pitch"]) {.@
a230: 40 20 2d 39 35 2c 32 34 20 2b 38 35 2c 31 32 20  @ -95,24 +85,12 
a240: 40 40 20 69 66 20 28 69 73 48 69 74 29 20 7b 0a  @@ if (isHit) {.
a250: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
a260: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6d  {.             m
a270: 65 6d 5b 22 74 68 72 65 65 22 5d 2e 73 74 65 70  em["three"].step
a280: 28 22 6f 66 66 22 29 3b 0a 20 20 20 20 20 20 20  ("off");.       
a290: 20 20 7d 0a 2d 0a 20 20 20 20 20 7d 0a 2d 0a 20    }.-.     }.-. 
a2a0: 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f      if (track_no
a2b0: 20 3d 3d 20 36 29 20 7b 0a 20 20 20 20 20 20 20   == 6) {.       
a2c0: 20 20 70 28 35 2c 20 6e 75 6c 6c 2c 20 6e 75 6c    p(5, null, nul
a2d0: 6c 2c 20 22 31 6e 22 29 3b 0a 2d 0a 20 20 20 20  l, "1n");.-.    
a2e0: 20 7d 0a 2d 0a 2d 0a 20 20 20 20 20 69 66 20 28   }.-.-.     if (
a2f0: 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 37 29 20 7b  track_no == 7) {
a300: 0a 20 20 20 20 20 20 20 20 20 6d 65 6d 5b 22 63  .         mem["c
a310: 22 5d 28 6d 65 6d 5b 22 63 22 5d 28 29 20 2b 20  "](mem["c"]() + 
a320: 31 29 3b 0a 20 20 20 20 20 7d 0a 2d 0a 2d 0a 20  1);.     }.-.-. 
a330: 7d 0a 20 0a 2d 0a 2d 0a 2d 0a 2d 0a 2d 0a 0a 63  }. .-.-.-.-.-..c
a340: 6f 6d 6d 69 74 20 32 34 33 34 37 65 35 65 32 37  ommit 24347e5e27
a350: 37 66 33 32 65 62 64 33 37 65 36 39 31 34 62 35  7f32ebd37e6914b5
a360: 35 30 38 65 62 34 66 39 39 32 64 34 64 34 0a 41  508eb4f992d4d4.A
a370: 75 74 68 6f 72 3a 20 58 79 7a 7a 79 20 41 70 70  uthor: Xyzzy App
a380: 73 20 3c 78 79 7a 7a 79 61 70 70 73 40 67 6d 61  s <xyzzyapps@gma
a390: 69 6c 2e 63 6f 6d 3e 0a 44 61 74 65 3a 20 20 20  il.com>.Date:   
a3a0: 4d 6f 6e 20 4e 6f 76 20 31 20 30 32 3a 35 36 3a  Mon Nov 1 02:56:
a3b0: 35 39 20 32 30 32 31 20 2b 30 30 30 30 0a 0a 20  59 2021 +0000.. 
a3c0: 20 20 20 2f 55 73 65 72 73 2f 64 65 76 2f 70 72     /Users/dev/pr
a3d0: 6f 6a 2f 70 72 6f 64 75 63 74 69 6f 6e 2f 62 69  oj/production/bi
a3e0: 74 72 68 79 74 68 6d 2f 73 6f 6e 67 20 6d 6f 64  trhythm/song mod
a3f0: 69 66 69 65 64 0a 0a 64 69 66 66 20 2d 2d 67 69  ified..diff --gi
a400: 74 20 61 2f 66 69 72 73 74 2e 6a 73 20 62 2f 66  t a/first.js b/f
a410: 69 72 73 74 2e 6a 73 0a 69 6e 64 65 78 20 33 32  irst.js.index 32
a420: 35 62 30 38 31 2e 2e 31 38 36 34 61 65 37 20 31  5b081..1864ae7 1
a430: 30 30 36 34 34 0a 2d 2d 2d 20 61 2f 66 69 72 73  00644.--- a/firs
a440: 74 2e 6a 73 0a 2b 2b 2b 20 62 2f 66 69 72 73 74  t.js.+++ b/first
a450: 2e 6a 73 0a 40 40 20 2d 36 2c 37 20 2b 36 2c 37  .js.@@ -6,7 +6,7
a460: 20 40 40 20 73 63 65 6e 65 31 20 3d 20 5b 0a 20   @@ scene1 = [. 
a470: 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78 5b 32      cellx("p x[2
a480: 3b 5e 43 32 3b 2b 30 2e 30 31 5d 30 30 30 20 30  ;^C2;+0.01]000 0
a490: 30 30 30 20 78 5b 30 2e 31 5d 30 78 5b 31 5d 30  000 x[0.1]0x[1]0
a4a0: 20 30 30 78 5b 31 5d 30 20 22 29 2c 0a 20 20 20   00x[1]0 "),.   
a4b0: 20 20 63 65 6c 6c 78 28 22 70 20 30 30 30 30 20    cellx("p 0000 
a4c0: 78 30 30 30 20 30 30 30 30 20 78 30 30 30 20 22  x000 0000 x000 "
a4d0: 29 2c 0a 20 20 20 20 20 63 65 6c 6c 78 28 22 70  ),.     cellx("p
a4e0: 20 78 30 78 30 20 78 30 78 30 20 78 30 78 30 20   x0x0 x0x0 x0x0 
a4f0: 78 30 78 30 20 22 29 2c 0a 2d 09 63 65 6c 6c 78  x0x0 "),.-.cellx
a500: 28 22 70 20 78 30 30 30 20 30 30 30 30 20 30 30  ("p x000 0000 00
a510: 30 30 20 30 30 30 30 20 22 29 2c 0a 2b 20 20 20  00 0000 "),.+   
a520: 20 63 65 6c 6c 78 28 22 70 20 78 30 30 30 20 30   cellx("p x000 0
a530: 30 30 30 20 30 30 30 30 20 30 30 30 30 20 22 29  000 0000 0000 ")
a540: 2c 0a 20 20 20 20 20 63 65 6c 6c 78 28 22 70 20  ,.     cellx("p 
a550: 78 5b 5e 43 33 5d 30 30 30 20 78 2e 30 30 30 20  x[^C3]000 x.000 
a560: 30 30 30 30 20 30 30 30 30 20 22 29 2c 0a 20 20  0000 0000 "),.  
a570: 20 20 20 63 65 6c 6c 78 28 22 70 20 30 30 30 30     cellx("p 0000
a580: 20 30 30 30 30 20 78 30 78 30 20 30 30 78 30 20   0000 x0x0 00x0 
a590: 22 29 2c 0a 20 20 20 20 20 63 65 6c 6c 78 28 22  "),.     cellx("
a5a0: 70 20 30 30 30 30 20 30 30 30 30 20 30 30 30 30  p 0000 0000 0000
a5b0: 20 30 30 30 30 20 22 29 2c 0a 40 40 20 2d 34 33   0000 "),.@@ -43
a5c0: 2c 32 38 20 2b 34 33 2c 32 38 20 40 40 20 66 75  ,28 +43,28 @@ fu
a5d0: 6e 63 74 69 6f 6e 20 6f 6e 63 65 20 28 29 20 7b  nction once () {
a5e0: 0a 20 20 20 20 20 53 61 6d 70 6c 65 28 22 6b 22  .     Sample("k"
a5f0: 2c 20 30 2c 20 6e 75 6c 6c 2c 20 2d 35 29 3b 0a  , 0, null, -5);.
a600: 20 20 20 20 20 53 61 6d 70 6c 65 28 22 73 6e 31       Sample("sn1
a610: 22 2c 31 2c 20 6e 75 6c 6c 2c 20 30 29 3b 0a 20  ",1, null, 0);. 
a620: 20 20 20 20 53 61 6d 70 6c 65 28 22 68 22 2c 32      Sample("h",2
a630: 2c 20 6e 75 6c 6c 2c 20 2d 31 35 29 3b 0a 2d 20  , null, -15);.- 
a640: 09 53 61 6d 70 6c 65 28 22 6d 22 2c 33 2c 20 6e  .Sample("m",3, n
a650: 75 6c 6c 2c 20 2d 31 35 29 3b 0a 2b 20 20 20 20  ull, -15);.+    
a660: 53 61 6d 70 6c 65 28 22 6d 22 2c 33 2c 20 6e 75  Sample("m",3, nu
a670: 6c 6c 2c 20 2d 31 35 29 3b 0a 20 20 20 20 20 53  ll, -15);.     S
a680: 61 6d 70 6c 65 28 22 66 22 2c 34 2c 20 6e 75 6c  ample("f",4, nul
a690: 6c 2c 20 2d 31 35 29 3b 0a 20 20 20 20 20 53 61  l, -15);.     Sa
a6a0: 6d 70 6c 65 28 22 73 22 2c 35 2c 20 6e 75 6c 6c  mple("s",5, null
a6b0: 2c 20 2d 31 35 29 3b 0a 20 0a 2d 20 20 20 20 20  , -15);. .-     
a6c0: 20 20 20 0a 2b 0a 20 20 20 20 20 6d 65 6d 5b 22     .+.     mem["
a6d0: 63 22 5d 20 3d 20 63 65 6c 6c 78 28 31 29 3b 0a  c"] = cellx(1);.
a6e0: 20 20 20 20 20 6d 65 6d 5b 22 63 22 5d 2e 6f 6e       mem["c"].on
a6f0: 43 68 61 6e 67 65 28 66 75 6e 63 74 69 6f 6e 20  Change(function 
a700: 28 65 29 20 7b 0a 2d 20 20 20 20 09 76 61 72 20  (e) {.-    .var 
a710: 76 61 6c 20 3d 20 70 61 72 73 65 49 6e 74 28 65  val = parseInt(e
a720: 5b 22 64 61 74 61 22 5d 2e 76 61 6c 75 65 29 3b  ["data"].value);
a730: 0a 2b 20 20 20 20 20 20 20 20 76 61 72 20 76 61  .+        var va
a740: 6c 20 3d 20 70 61 72 73 65 49 6e 74 28 65 5b 22  l = parseInt(e["
a750: 64 61 74 61 22 5d 2e 76 61 6c 75 65 29 3b 0a 20  data"].value);. 
a760: 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e          console.
a770: 6c 6f 67 28 76 61 6c 29 3b 0a 2d 20 20 20 20 20  log(val);.-     
a780: 20 20 09 70 28 34 2c 20 6e 75 6c 6c 2c 20 6e 75    .p(4, null, nu
a790: 6c 6c 2c 20 22 38 6e 22 29 3b 0a 2d 20 0a 2b 20  ll, "8n");.- .+ 
a7a0: 20 20 20 20 20 20 20 70 28 34 2c 20 6e 75 6c 6c         p(4, null
a7b0: 2c 20 6e 75 6c 6c 2c 20 22 38 6e 22 29 3b 0a 2b  , null, "8n");.+
a7c0: 0a 20 20 20 20 20 7d 29 0a 20 20 20 20 20 6d 65  .     }).     me
a7d0: 6d 5b 22 63 22 5d 2e 6f 6e 45 72 72 6f 72 28 66  m["c"].onError(f
a7e0: 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a 2d 20  unction (e) {.- 
a7f0: 20 20 20 09 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28     .console.log(
a800: 65 29 3b 0a 2d 20 0a 2b 20 20 20 20 20 20 20 20  e);.- .+        
a810: 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 65 29 3b 0a  console.log(e);.
a820: 2b 0a 20 20 20 20 20 7d 29 0a 20 0a 2d 20 20 20  +.     }). .-   
a830: 20 20 20 20 20 63 6f 6e 73 74 20 61 75 64 69 6f       const audio
a840: 20 3d 20 41 75 64 69 6f 28 29 3b 0a 2d 20 20 20   = Audio();.-   
a850: 20 20 20 20 20 63 6f 6e 73 74 20 74 68 72 65 65       const three
a860: 20 3d 20 54 68 72 65 65 4f 68 55 6e 69 74 28 61   = ThreeOhUnit(a
a870: 75 64 69 6f 2c 20 22 73 61 77 74 6f 6f 74 68 22  udio, "sawtooth"
a880: 29 0a 2d 20 20 20 20 20 20 20 20 2f 2f 20 61 75  ).-        // au
a890: 64 69 6f 2e 6d 61 73 74 65 72 2e 69 6e 2e 67 61  dio.master.in.ga
a8a0: 69 6e 2e 76 61 6c 75 65 20 3d 20 30 2e 35 3b 0a  in.value = 0.5;.
a8b0: 2d 20 20 20 20 20 20 20 20 6d 65 6d 5b 22 74 68  -        mem["th
a8c0: 72 65 65 22 5d 20 3d 20 74 68 72 65 65 0a 2d 20  ree"] = three.- 
a8d0: 20 20 0a 2b 20 20 20 20 63 6f 6e 73 74 20 61 75    .+    const au
a8e0: 64 69 6f 20 3d 20 41 75 64 69 6f 28 29 3b 0a 2b  dio = Audio();.+
a8f0: 20 20 20 20 63 6f 6e 73 74 20 74 68 72 65 65 20      const three 
a900: 3d 20 54 68 72 65 65 4f 68 55 6e 69 74 28 61 75  = ThreeOhUnit(au
a910: 64 69 6f 2c 20 22 73 61 77 74 6f 6f 74 68 22 29  dio, "sawtooth")
a920: 0a 2b 20 20 20 20 2f 2f 20 61 75 64 69 6f 2e 6d  .+    // audio.m
a930: 61 73 74 65 72 2e 69 6e 2e 67 61 69 6e 2e 76 61  aster.in.gain.va
a940: 6c 75 65 20 3d 20 30 2e 35 3b 0a 2b 20 20 20 20  lue = 0.5;.+    
a950: 6d 65 6d 5b 22 74 68 72 65 65 22 5d 20 3d 20 74  mem["three"] = t
a960: 68 72 65 65 0a 2b 0a 20 0a 20 7d 0a 20 0a 40 40  hree.+. . }. .@@
a970: 20 2d 37 35 2c 33 39 20 2b 37 35 2c 33 39 20 40   -75,39 +75,39 @
a980: 40 20 74 72 61 6e 73 69 74 69 6f 6e 20 3d 20 6f  @ transition = o
a990: 6e 63 65 3b 0a 20 0a 20 69 66 20 28 69 73 48 69  nce;. . if (isHi
a9a0: 74 29 20 7b 0a 20 20 20 20 20 69 66 20 28 74 72  t) {.     if (tr
a9b0: 61 63 6b 5f 6e 6f 20 3d 3d 20 31 29 20 7b 0a 2d  ack_no == 1) {.-
a9c0: 09 20 20 20 20 70 28 30 2c 20 6d 65 74 61 5b 74  .    p(0, meta[t
a9d0: 69 63 6b 5d 5b 22 76 6f 6c 75 6d 65 22 5d 2c 20  ick]["volume"], 
a9e0: 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 70 69 74 63  meta[tick]["pitc
a9f0: 68 22 5d 2c 20 22 32 34 6e 22 2c 20 6d 65 74 61  h"], "24n", meta
aa00: 5b 74 69 63 6b 5d 5b 22 64 65 6c 61 79 22 5d 20  [tick]["delay"] 
aa10: 29 3b 0a 2d 20 0a 2b 20 20 20 20 20 20 20 20 70  );.- .+        p
aa20: 28 30 2c 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22  (0, meta[tick]["
aa30: 76 6f 6c 75 6d 65 22 5d 2c 20 6d 65 74 61 5b 74  volume"], meta[t
aa40: 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d 2c 20 22  ick]["pitch"], "
aa50: 32 34 6e 22 2c 20 6d 65 74 61 5b 74 69 63 6b 5d  24n", meta[tick]
aa60: 5b 22 64 65 6c 61 79 22 5d 20 29 3b 0a 2b 0a 20  ["delay"] );.+. 
aa70: 20 20 20 20 7d 0a 20 20 20 20 20 69 66 20 28 74      }.     if (t
aa80: 72 61 63 6b 5f 6e 6f 20 3d 3d 20 32 29 20 7b 0a  rack_no == 2) {.
aa90: 2d 20 20 20 20 20 20 20 09 70 28 31 29 3b 0a 2b  -       .p(1);.+
aaa0: 20 20 20 20 20 20 20 20 70 28 31 29 3b 0a 20 20          p(1);.  
aab0: 20 20 20 7d 0a 20 20 20 20 20 69 66 20 28 74 72     }.     if (tr
aac0: 61 63 6b 5f 6e 6f 20 3d 3d 20 33 29 20 7b 0a 2d  ack_no == 3) {.-
aad0: 09 09 70 28 32 29 0a 2d 09 7d 0a 2d 20 20 20 20  ..p(2).-.}.-    
aae0: 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d   if (track_no ==
aaf0: 20 34 29 20 7b 0a 2d 20 20 20 20 20 20 09 70 28   4) {.-      .p(
ab00: 33 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22  3, null, null, "
ab10: 31 6e 22 29 3b 0a 2b 20 20 20 20 20 20 20 20 70  1n");.+        p
ab20: 28 32 29 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20  (2).+    }.+    
ab30: 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20  if (track_no == 
ab40: 34 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 70 28  4) {.+        p(
ab50: 33 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22  3, null, null, "
ab60: 31 6e 22 29 3b 0a 20 0a 2d 09 7d 09 0a 2b 20 20  1n");. .-.}..+  
ab70: 20 20 7d 09 0a 20 20 20 20 20 69 66 20 28 74 72    }..     if (tr
ab80: 61 63 6b 5f 6e 6f 20 3d 3d 20 35 29 20 7b 0a 2d  ack_no == 5) {.-
ab90: 20 20 20 20 09 63 6f 6e 73 6f 6c 65 2e 6c 6f 67      .console.log
aba0: 28 6d 65 74 61 5b 74 69 63 6b 5d 29 0a 2b 20 20  (meta[tick]).+  
abb0: 20 20 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f        console.lo
abc0: 67 28 6d 65 74 61 5b 74 69 63 6b 5d 29 0a 20 20  g(meta[tick]).  
abd0: 20 20 20 20 20 20 20 69 66 20 28 6d 65 74 61 5b         if (meta[
abe0: 74 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d 29 20  tick]["pitch"]) 
abf0: 7b 0a 2d 09 20 20 20 20 20 20 20 20 6d 65 6d 5b  {.-.        mem[
ac00: 22 74 68 72 65 65 22 5d 2e 73 74 65 70 28 7b 22  "three"].step({"
ac10: 67 6c 69 64 65 22 3a 20 74 72 75 65 2c 20 22 61  glide": true, "a
ac20: 63 63 65 6e 74 22 3a 20 66 61 6c 73 65 2c 20 22  ccent": false, "
ac30: 6e 6f 74 65 22 3a 20 6d 65 74 61 5b 74 69 63 6b  note": meta[tick
ac40: 5d 5b 22 70 69 74 63 68 22 5d 7d 29 3b 0a 2b 20  ]["pitch"]});.+ 
ac50: 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 5b 22             mem["
ac60: 74 68 72 65 65 22 5d 2e 73 74 65 70 28 7b 22 67  three"].step({"g
ac70: 6c 69 64 65 22 3a 20 74 72 75 65 2c 20 22 61 63  lide": true, "ac
ac80: 63 65 6e 74 22 3a 20 66 61 6c 73 65 2c 20 22 6e  cent": false, "n
ac90: 6f 74 65 22 3a 20 6d 65 74 61 5b 74 69 63 6b 5d  ote": meta[tick]
aca0: 5b 22 70 69 74 63 68 22 5d 7d 29 3b 0a 20 20 20  ["pitch"]});.   
acb0: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2d        } else {.-
acc0: 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 5b 22             mem["
acd0: 74 68 72 65 65 22 5d 2e 73 74 65 70 28 22 6f 66  three"].step("of
ace0: 66 22 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20  f");.+          
acf0: 20 20 6d 65 6d 5b 22 74 68 72 65 65 22 5d 2e 73    mem["three"].s
ad00: 74 65 70 28 22 6f 66 66 22 29 3b 0a 20 20 20 20  tep("off");.    
ad10: 20 20 20 20 20 7d 0a 2d 20 20 20 20 09 0a 2b 0a       }.-    ..+.
ad20: 20 20 20 20 20 7d 0a 2d 20 20 20 20 0a 2d 20 20       }.-    .-  
ad30: 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20     if (track_no 
ad40: 3d 3d 20 36 29 20 7b 0a 2d 20 20 20 20 20 20 20  == 6) {.-       
ad50: 09 70 28 35 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c  .p(5, null, null
ad60: 2c 20 22 31 6e 22 29 3b 0a 2b 0a 2b 20 20 20 20  , "1n");.+.+    
ad70: 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20  if (track_no == 
ad80: 36 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 70 28  6) {.+        p(
ad90: 35 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22  5, null, null, "
ada0: 31 6e 22 29 3b 0a 20 0a 20 20 20 20 20 7d 0a 20  1n");. .     }. 
adb0: 0a 20 0a 2d 09 69 66 20 28 74 72 61 63 6b 5f 6e  . .-.if (track_n
adc0: 6f 20 3d 3d 20 37 29 20 7b 0a 2d 20 20 20 20 09  o == 7) {.-    .
add0: 6d 65 6d 5b 22 63 22 5d 28 6d 65 6d 5b 22 63 22  mem["c"](mem["c"
ade0: 5d 28 29 20 2b 20 31 29 3b 0a 2b 20 20 20 20 69  ]() + 1);.+    i
adf0: 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 37  f (track_no == 7
ae00: 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 6d 65 6d  ) {.+        mem
ae10: 5b 22 63 22 5d 28 6d 65 6d 5b 22 63 22 5d 28 29  ["c"](mem["c"]()
ae20: 20 2b 20 31 29 3b 0a 20 20 20 20 20 7d 0a 2d 20   + 1);.     }.- 
ae30: 20 0a 2b 0a 20 0a 20 7d 0a 20 0a 0a 63 6f 6d 6d   .+. . }. ..comm
ae40: 69 74 20 34 31 38 33 36 34 62 66 63 65 66 32 32  it 418364bfcef22
ae50: 34 66 33 37 33 39 38 63 38 62 64 33 62 37 63 36  4f37398c8bd3b7c6
ae60: 31 63 62 37 33 63 33 38 36 66 34 0a 41 75 74 68  1cb73c386f4.Auth
ae70: 6f 72 3a 20 58 79 7a 7a 79 20 41 70 70 73 20 3c  or: Xyzzy Apps <
ae80: 78 79 7a 7a 79 61 70 70 73 40 67 6d 61 69 6c 2e  xyzzyapps@gmail.
ae90: 63 6f 6d 3e 0a 44 61 74 65 3a 20 20 20 4d 6f 6e  com>.Date:   Mon
aea0: 20 4e 6f 76 20 31 20 30 32 3a 35 35 3a 33 34 20   Nov 1 02:55:34 
aeb0: 32 30 32 31 20 2b 30 30 30 30 0a 0a 20 20 20 20  2021 +0000..    
aec0: 2f 55 73 65 72 73 2f 64 65 76 2f 70 72 6f 6a 2f  /Users/dev/proj/
aed0: 70 72 6f 64 75 63 74 69 6f 6e 2f 62 69 74 72 68  production/bitrh
aee0: 79 74 68 6d 2f 73 6f 6e 67 20 6d 6f 64 69 66 69  ythm/song modifi
aef0: 65 64 0a 0a 64 69 66 66 20 2d 2d 67 69 74 20 61  ed..diff --git a
af00: 2f 66 69 72 73 74 2e 6a 73 20 62 2f 66 69 72 73  /first.js b/firs
af10: 74 2e 6a 73 0a 6e 65 77 20 66 69 6c 65 20 6d 6f  t.js.new file mo
af20: 64 65 20 31 30 30 36 34 34 0a 69 6e 64 65 78 20  de 100644.index 
af30: 30 30 30 30 30 30 30 2e 2e 33 32 35 62 30 38 31  0000000..325b081
af40: 0a 2d 2d 2d 20 2f 64 65 76 2f 6e 75 6c 6c 0a 2b  .--- /dev/null.+
af50: 2b 2b 20 62 2f 66 69 72 73 74 2e 6a 73 0a 40 40  ++ b/first.js.@@
af60: 20 2d 30 2c 30 20 2b 31 2c 31 31 38 20 40 40 0a   -0,0 +1,118 @@.
af70: 2b 76 6f 6c 75 6d 65 5f 67 75 61 72 64 31 20 3d  +volume_guard1 =
af80: 20 67 75 61 72 64 28 5b 2d 32 30 2c 31 35 5d 29   guard([-20,15])
af90: 0a 2b 76 6f 6c 75 6d 65 5f 67 75 61 72 64 32 20  .+volume_guard2 
afa0: 3d 20 67 75 61 72 64 28 5b 2d 32 30 2c 31 35 5d  = guard([-20,15]
afb0: 29 0a 2b 54 6f 6e 65 2e 4d 61 73 74 65 72 2e 76  ).+Tone.Master.v
afc0: 6f 6c 75 6d 65 2e 76 61 6c 75 65 20 3d 20 76 6f  olume.value = vo
afd0: 6c 75 6d 65 5f 67 75 61 72 64 31 28 4d 61 74 68  lume_guard1(Math
afe0: 2e 72 6f 75 6e 64 28 64 69 61 6c 73 5b 30 5d 5b  .round(dials[0][
aff0: 22 63 65 6c 6c 22 5d 28 29 20 2a 20 33 30 29 20  "cell"]() * 30) 
b000: 2d 32 30 29 3b 0a 2b 0a 2b 73 63 65 6e 65 31 20  -20);.+.+scene1 
b010: 3d 20 5b 0a 2b 20 20 20 20 63 65 6c 6c 78 28 22  = [.+    cellx("
b020: 70 20 78 5b 32 3b 5e 43 32 3b 2b 30 2e 30 31 5d  p x[2;^C2;+0.01]
b030: 30 30 30 20 30 30 30 30 20 78 5b 30 2e 31 5d 30  000 0000 x[0.1]0
b040: 78 5b 31 5d 30 20 30 30 78 5b 31 5d 30 20 22 29  x[1]0 00x[1]0 ")
b050: 2c 0a 2b 20 20 20 20 63 65 6c 6c 78 28 22 70 20  ,.+    cellx("p 
b060: 30 30 30 30 20 78 30 30 30 20 30 30 30 30 20 78  0000 x000 0000 x
b070: 30 30 30 20 22 29 2c 0a 2b 20 20 20 20 63 65 6c  000 "),.+    cel
b080: 6c 78 28 22 70 20 78 30 78 30 20 78 30 78 30 20  lx("p x0x0 x0x0 
b090: 78 30 78 30 20 78 30 78 30 20 22 29 2c 0a 2b 09  x0x0 x0x0 "),.+.
b0a0: 63 65 6c 6c 78 28 22 70 20 78 30 30 30 20 30 30  cellx("p x000 00
b0b0: 30 30 20 30 30 30 30 20 30 30 30 30 20 22 29 2c  00 0000 0000 "),
b0c0: 0a 2b 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78  .+    cellx("p x
b0d0: 5b 5e 43 33 5d 30 30 30 20 78 2e 30 30 30 20 30  [^C3]000 x.000 0
b0e0: 30 30 30 20 30 30 30 30 20 22 29 2c 0a 2b 20 20  000 0000 "),.+  
b0f0: 20 20 63 65 6c 6c 78 28 22 70 20 30 30 30 30 20    cellx("p 0000 
b100: 30 30 30 30 20 78 30 78 30 20 30 30 78 30 20 22  0000 x0x0 00x0 "
b110: 29 2c 0a 2b 20 20 20 20 63 65 6c 6c 78 28 22 70  ),.+    cellx("p
b120: 20 30 30 30 30 20 30 30 30 30 20 30 30 30 30 20   0000 0000 0000 
b130: 30 30 30 30 20 22 29 2c 0a 2b 0a 2b 5d 0a 2b 0a  0000 "),.+.+].+.
b140: 2b 70 61 74 74 65 72 6e 73 20 3d 20 73 63 65 6e  +patterns = scen
b150: 65 31 0a 2b 0a 2b 61 6c 77 61 79 73 28 29 3b 0a  e1.+.+always();.
b160: 2b 0a 2b 66 75 6e 63 74 69 6f 6e 20 53 61 6d 70  +.+function Samp
b170: 6c 65 28 6e 61 6d 65 2c 20 6e 6f 2c 20 66 69 6c  le(name, no, fil
b180: 74 65 72 2c 20 76 6f 6c 75 6d 65 29 20 7b 0a 2b  ter, volume) {.+
b190: 20 20 20 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 0a      name = name.
b1a0: 2b 20 20 20 20 66 69 6c 74 65 72 20 3d 20 66 69  +    filter = fi
b1b0: 6c 74 65 72 20 7c 7c 20 32 30 30 30 30 0a 2b 20  lter || 20000.+ 
b1c0: 20 20 20 76 6f 6c 75 6d 65 20 3d 20 76 6f 6c 75     volume = volu
b1d0: 6d 65 20 7c 7c 20 30 0a 2b 20 20 20 20 2f 2f 6d  me || 0.+    //m
b1e0: 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 66 69 6c 74  em[name + "_filt
b1f0: 65 72 22 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e  er"] = new Tone.
b200: 46 69 6c 74 65 72 28 66 69 6c 74 65 72 2c 20 27  Filter(filter, '
b210: 6c 6f 77 70 61 73 73 27 2c 20 2d 39 36 29 3b 0a  lowpass', -96);.
b220: 2b 20 20 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20  +    mem[name + 
b230: 22 5f 63 68 61 6e 6e 65 6c 22 5d 20 3d 20 6e 65  "_channel"] = ne
b240: 77 20 54 6f 6e 65 2e 43 68 61 6e 6e 65 6c 28 7b  w Tone.Channel({
b250: 63 68 61 6e 6e 65 6c 43 6f 75 6e 74 3a 20 32 2c  channelCount: 2,
b260: 20 76 6f 6c 75 6d 65 3a 20 76 6f 6c 75 6d 65 7d   volume: volume}
b270: 29 2e 63 68 61 69 6e 28 6d 65 6d 2e 6d 61 73 74  ).chain(mem.mast
b280: 65 72 29 0a 2b 20 20 20 20 73 61 6d 70 6c 65 73  er).+    samples
b290: 5b 6e 6f 5d 2e 63 6f 6e 6e 65 63 74 28 6d 65 6d  [no].connect(mem
b2a0: 5b 6e 61 6d 65 20 2b 20 22 5f 63 68 61 6e 6e 65  [name + "_channe
b2b0: 6c 22 5d 29 3b 0a 2b 7d 0a 2b 0a 2b 0a 2b 66 75  l"]);.+}.+.+.+fu
b2c0: 6e 63 74 69 6f 6e 20 70 28 73 2c 20 76 6f 6c 2c  nction p(s, vol,
b2d0: 20 20 6e 6f 74 65 2c 20 20 6c 65 6e 2c 20 64 65    note,  len, de
b2e0: 6c 61 79 29 20 7b 0a 2b 20 20 20 20 6e 6f 74 65  lay) {.+    note
b2f0: 20 3d 20 6e 6f 74 65 20 7c 7c 20 22 43 33 22 0a   = note || "C3".
b300: 2b 20 20 20 20 6c 65 6e 20 3d 20 6c 65 6e 20 7c  +    len = len |
b310: 7c 20 22 31 36 6e 22 0a 2b 20 20 20 20 76 6f 6c  | "16n".+    vol
b320: 20 3d 20 76 6f 6c 20 7c 7c 20 31 0a 2b 20 20 20   = vol || 1.+   
b330: 20 64 65 6c 61 79 20 3d 20 64 65 6c 61 79 20 7c   delay = delay |
b340: 7c 20 22 2b 30 22 3b 0a 2b 20 20 20 20 73 61 6d  | "+0";.+    sam
b350: 70 6c 65 73 5b 73 5d 2e 74 72 69 67 67 65 72 41  ples[s].triggerA
b360: 74 74 61 63 6b 52 65 6c 65 61 73 65 28 6e 6f 74  ttackRelease(not
b370: 65 2c 20 6c 65 6e 2c 20 64 65 6c 61 79 2c 20 76  e, len, delay, v
b380: 6f 6c 29 3b 0a 2b 7d 0a 2b 0a 2b 0a 2b 0a 2b 66  ol);.+}.+.+.+.+f
b390: 75 6e 63 74 69 6f 6e 20 6f 6e 63 65 20 28 29 20  unction once () 
b3a0: 7b 0a 2b 20 20 20 20 54 6f 6e 65 2e 4d 61 73 74  {.+    Tone.Mast
b3b0: 65 72 2e 76 6f 6c 75 6d 65 2e 76 61 6c 75 65 20  er.volume.value 
b3c0: 3d 20 2d 33 30 0a 2b 20 20 20 20 6d 65 6d 2e 6d  = -30.+    mem.m
b3d0: 61 73 74 65 72 20 3d 20 6e 65 77 20 54 6f 6e 65  aster = new Tone
b3e0: 2e 43 68 61 6e 6e 65 6c 28 7b 63 68 61 6e 6e 65  .Channel({channe
b3f0: 6c 43 6f 75 6e 74 3a 20 32 2c 20 76 6f 6c 75 6d  lCount: 2, volum
b400: 65 3a 20 2d 31 30 7d 29 2e 63 68 61 69 6e 28 54  e: -10}).chain(T
b410: 6f 6e 65 2e 44 65 73 74 69 6e 61 74 69 6f 6e 29  one.Destination)
b420: 3b 0a 2b 20 20 20 20 53 61 6d 70 6c 65 28 22 6b  ;.+    Sample("k
b430: 22 2c 20 30 2c 20 6e 75 6c 6c 2c 20 2d 35 29 3b  ", 0, null, -5);
b440: 0a 2b 20 20 20 20 53 61 6d 70 6c 65 28 22 73 6e  .+    Sample("sn
b450: 31 22 2c 31 2c 20 6e 75 6c 6c 2c 20 30 29 3b 0a  1",1, null, 0);.
b460: 2b 20 20 20 20 53 61 6d 70 6c 65 28 22 68 22 2c  +    Sample("h",
b470: 32 2c 20 6e 75 6c 6c 2c 20 2d 31 35 29 3b 0a 2b  2, null, -15);.+
b480: 20 09 53 61 6d 70 6c 65 28 22 6d 22 2c 33 2c 20   .Sample("m",3, 
b490: 6e 75 6c 6c 2c 20 2d 31 35 29 3b 0a 2b 20 20 20  null, -15);.+   
b4a0: 20 53 61 6d 70 6c 65 28 22 66 22 2c 34 2c 20 6e   Sample("f",4, n
b4b0: 75 6c 6c 2c 20 2d 31 35 29 3b 0a 2b 20 20 20 20  ull, -15);.+    
b4c0: 53 61 6d 70 6c 65 28 22 73 22 2c 35 2c 20 6e 75  Sample("s",5, nu
b4d0: 6c 6c 2c 20 2d 31 35 29 3b 0a 2b 0a 2b 20 20 20  ll, -15);.+.+   
b4e0: 20 20 20 20 20 0a 2b 20 20 20 20 6d 65 6d 5b 22       .+    mem["
b4f0: 63 22 5d 20 3d 20 63 65 6c 6c 78 28 31 29 3b 0a  c"] = cellx(1);.
b500: 2b 20 20 20 20 6d 65 6d 5b 22 63 22 5d 2e 6f 6e  +    mem["c"].on
b510: 43 68 61 6e 67 65 28 66 75 6e 63 74 69 6f 6e 20  Change(function 
b520: 28 65 29 20 7b 0a 2b 20 20 20 20 09 76 61 72 20  (e) {.+    .var 
b530: 76 61 6c 20 3d 20 70 61 72 73 65 49 6e 74 28 65  val = parseInt(e
b540: 5b 22 64 61 74 61 22 5d 2e 76 61 6c 75 65 29 3b  ["data"].value);
b550: 0a 2b 20 20 20 20 20 20 20 20 63 6f 6e 73 6f 6c  .+        consol
b560: 65 2e 6c 6f 67 28 76 61 6c 29 3b 0a 2b 20 20 20  e.log(val);.+   
b570: 20 20 20 20 09 70 28 34 2c 20 6e 75 6c 6c 2c 20      .p(4, null, 
b580: 6e 75 6c 6c 2c 20 22 38 6e 22 29 3b 0a 2b 20 0a  null, "8n");.+ .
b590: 2b 20 20 20 20 7d 29 0a 2b 20 20 20 20 6d 65 6d  +    }).+    mem
b5a0: 5b 22 63 22 5d 2e 6f 6e 45 72 72 6f 72 28 66 75  ["c"].onError(fu
b5b0: 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a 2b 20 20  nction (e) {.+  
b5c0: 20 20 09 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 65    .console.log(e
b5d0: 29 3b 0a 2b 20 0a 2b 20 20 20 20 7d 29 0a 2b 0a  );.+ .+    }).+.
b5e0: 2b 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 61  +        const a
b5f0: 75 64 69 6f 20 3d 20 41 75 64 69 6f 28 29 3b 0a  udio = Audio();.
b600: 2b 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 74  +        const t
b610: 68 72 65 65 20 3d 20 54 68 72 65 65 4f 68 55 6e  hree = ThreeOhUn
b620: 69 74 28 61 75 64 69 6f 2c 20 22 73 61 77 74 6f  it(audio, "sawto
b630: 6f 74 68 22 29 0a 2b 20 20 20 20 20 20 20 20 2f  oth").+        /
b640: 2f 20 61 75 64 69 6f 2e 6d 61 73 74 65 72 2e 69  / audio.master.i
b650: 6e 2e 67 61 69 6e 2e 76 61 6c 75 65 20 3d 20 30  n.gain.value = 0
b660: 2e 35 3b 0a 2b 20 20 20 20 20 20 20 20 6d 65 6d  .5;.+        mem
b670: 5b 22 74 68 72 65 65 22 5d 20 3d 20 74 68 72 65  ["three"] = thre
b680: 65 0a 2b 20 20 20 0a 2b 0a 2b 7d 0a 2b 0a 2b 0a  e.+   .+.+}.+.+.
b690: 2b 0a 2b 74 72 61 6e 73 69 74 69 6f 6e 20 3d 20  +.+transition = 
b6a0: 6f 6e 63 65 3b 0a 2b 0a 2b 0a 2b 69 66 20 28 69  once;.+.+.+if (i
b6b0: 73 48 69 74 29 20 7b 0a 2b 20 20 20 20 69 66 20  sHit) {.+    if 
b6c0: 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 31 29 20  (track_no == 1) 
b6d0: 7b 0a 2b 09 20 20 20 20 70 28 30 2c 20 6d 65 74  {.+.    p(0, met
b6e0: 61 5b 74 69 63 6b 5d 5b 22 76 6f 6c 75 6d 65 22  a[tick]["volume"
b6f0: 5d 2c 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 70  ], meta[tick]["p
b700: 69 74 63 68 22 5d 2c 20 22 32 34 6e 22 2c 20 6d  itch"], "24n", m
b710: 65 74 61 5b 74 69 63 6b 5d 5b 22 64 65 6c 61 79  eta[tick]["delay
b720: 22 5d 20 29 3b 0a 2b 20 0a 2b 20 20 20 20 7d 0a  "] );.+ .+    }.
b730: 2b 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e  +    if (track_n
b740: 6f 20 3d 3d 20 32 29 20 7b 0a 2b 20 20 20 20 20  o == 2) {.+     
b750: 20 20 09 70 28 31 29 3b 0a 2b 20 20 20 20 7d 0a    .p(1);.+    }.
b760: 2b 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e  +    if (track_n
b770: 6f 20 3d 3d 20 33 29 20 7b 0a 2b 09 09 70 28 32  o == 3) {.+..p(2
b780: 29 0a 2b 09 7d 0a 2b 20 20 20 20 20 69 66 20 28  ).+.}.+     if (
b790: 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 34 29 20 7b  track_no == 4) {
b7a0: 0a 2b 20 20 20 20 20 20 09 70 28 33 2c 20 6e 75  .+      .p(3, nu
b7b0: 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 31 6e 22 29 3b  ll, null, "1n");
b7c0: 0a 2b 0a 2b 09 7d 09 0a 2b 20 20 20 20 69 66 20  .+.+.}..+    if 
b7d0: 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 35 29 20  (track_no == 5) 
b7e0: 7b 0a 2b 20 20 20 20 09 63 6f 6e 73 6f 6c 65 2e  {.+    .console.
b7f0: 6c 6f 67 28 6d 65 74 61 5b 74 69 63 6b 5d 29 0a  log(meta[tick]).
b800: 2b 20 20 20 20 20 20 20 20 69 66 20 28 6d 65 74  +        if (met
b810: 61 5b 74 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d  a[tick]["pitch"]
b820: 29 20 7b 0a 2b 09 20 20 20 20 20 20 20 20 6d 65  ) {.+.        me
b830: 6d 5b 22 74 68 72 65 65 22 5d 2e 73 74 65 70 28  m["three"].step(
b840: 7b 22 67 6c 69 64 65 22 3a 20 74 72 75 65 2c 20  {"glide": true, 
b850: 22 61 63 63 65 6e 74 22 3a 20 66 61 6c 73 65 2c  "accent": false,
b860: 20 22 6e 6f 74 65 22 3a 20 6d 65 74 61 5b 74 69   "note": meta[ti
b870: 63 6b 5d 5b 22 70 69 74 63 68 22 5d 7d 29 3b 0a  ck]["pitch"]});.
b880: 2b 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20  +        } else 
b890: 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 6d 65  {.+           me
b8a0: 6d 5b 22 74 68 72 65 65 22 5d 2e 73 74 65 70 28  m["three"].step(
b8b0: 22 6f 66 66 22 29 3b 0a 2b 20 20 20 20 20 20 20  "off");.+       
b8c0: 20 7d 0a 2b 20 20 20 20 09 0a 2b 20 20 20 20 7d   }.+    ..+    }
b8d0: 0a 2b 20 20 20 20 0a 2b 20 20 20 20 20 69 66 20  .+    .+     if 
b8e0: 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 36 29 20  (track_no == 6) 
b8f0: 7b 0a 2b 20 20 20 20 20 20 20 09 70 28 35 2c 20  {.+       .p(5, 
b900: 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 31 6e 22  null, null, "1n"
b910: 29 3b 0a 2b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 0a  );.+.+    }.+.+.
b920: 2b 09 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d  +.if (track_no =
b930: 3d 20 37 29 20 7b 0a 2b 20 20 20 20 09 6d 65 6d  = 7) {.+    .mem
b940: 5b 22 63 22 5d 28 6d 65 6d 5b 22 63 22 5d 28 29  ["c"](mem["c"]()
b950: 20 2b 20 31 29 3b 0a 2b 20 20 20 20 7d 0a 2b 20   + 1);.+    }.+ 
b960: 20 0a 2b 0a 2b 7d 0a 2b 0a 2b 0a 2b 0a 2b 0a 2b   .+.+}.+.+.+.+.+
b970: 0a 2b 0a                                         .+.