0000: 23 20 47 65 74 74 69 6e 67 20 53 74 61 72 74 65 # Getting Starte
0010: 64 0a 0a 23 23 20 54 75 74 6f 72 69 61 6c 0a 0a d..## Tutorial..
0020: 3c 69 66 72 61 6d 65 20 77 69 64 74 68 3d 22 35 <iframe width="5
0030: 36 30 22 20 68 65 69 67 68 74 3d 22 33 31 35 22 60" height="315"
0040: 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f 77 77 src="https://ww
0050: 77 2e 79 6f 75 74 75 62 65 2e 63 6f 6d 2f 65 6d w.youtube.com/em
0060: 62 65 64 2f 6f 36 38 33 76 34 64 74 36 52 4d 22 bed/o683v4dt6RM"
0070: 20 74 69 74 6c 65 3d 22 59 6f 75 54 75 62 65 20 title="YouTube
0080: 76 69 64 65 6f 20 70 6c 61 79 65 72 22 20 66 72 video player" fr
0090: 61 6d 65 62 6f 72 64 65 72 3d 22 30 22 20 61 6c ameborder="0" al
00a0: 6c 6f 77 3d 22 61 63 63 65 6c 65 72 6f 6d 65 74 low="acceleromet
00b0: 65 72 3b 20 61 75 74 6f 70 6c 61 79 3b 20 63 6c er; autoplay; cl
00c0: 69 70 62 6f 61 72 64 2d 77 72 69 74 65 3b 20 65 ipboard-write; e
00d0: 6e 63 72 79 70 74 65 64 2d 6d 65 64 69 61 3b 20 ncrypted-media;
00e0: 67 79 72 6f 73 63 6f 70 65 3b 20 70 69 63 74 75 gyroscope; pictu
00f0: 72 65 2d 69 6e 2d 70 69 63 74 75 72 65 22 20 61 re-in-picture" a
0100: 6c 6c 6f 77 66 75 6c 6c 73 63 72 65 65 6e 3e 3c llowfullscreen><
0110: 2f 69 66 72 61 6d 65 3e 0a 0a 54 68 69 73 20 69 /iframe>..This i
0120: 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 63 llustrates the c
0130: 6f 72 65 20 63 6f 6e 63 65 70 74 73 20 6f 66 20 ore concepts of
0140: 62 69 74 72 68 79 74 68 6d 2e 0a 0a 31 2e 20 53 bitrhythm...1. S
0150: 61 6d 70 6c 65 73 20 28 54 6f 6e 65 2e 53 61 6d amples (Tone.Sam
0160: 70 6c 65 72 29 0a 32 2e 20 44 69 61 6c 73 20 28 pler).2. Dials (
0170: 75 73 65 20 63 65 6c 6c 78 20 69 6e 74 65 72 6e use cellx intern
0180: 61 6c 6c 79 29 0a 33 2e 20 4f 62 73 65 72 76 65 ally).3. Observe
0190: 72 73 20 28 63 65 6c 6c 78 29 0a 0a 53 65 65 20 rs (cellx)..See
01a0: 3c 68 74 74 70 73 3a 2f 2f 74 6f 6e 65 6a 73 2e <https://tonejs.
01b0: 67 69 74 68 75 62 2e 69 6f 2f 3e 20 66 6f 72 20 github.io/> for
01c0: 6d 6f 72 65 20 6e 6f 74 65 73 2e 0a 0a 46 6f 72 more notes...For
01d0: 20 61 6e 20 75 6e 64 65 72 73 74 61 6e 64 69 6e an understandin
01e0: 67 20 6f 66 20 74 68 65 20 67 6c 6f 62 61 6c 20 g of the global
01f0: 76 61 72 69 61 62 6c 65 73 20 73 65 65 20 74 68 variables see th
0200: 65 20 63 6f 6e 63 65 70 74 73 20 61 6e 64 20 63 e concepts and c
0210: 6f 64 65 20 77 61 6c 6b 74 68 72 6f 75 67 68 20 ode walkthrough
0220: 73 65 63 74 69 6f 6e 2e 0a 0a 20 20 20 20 2d 20 section... -
0230: 70 61 74 74 65 72 6e 73 20 61 6e 64 20 74 72 61 patterns and tra
0240: 63 6b 5f 6e 6f 0a 20 20 20 20 2d 20 69 73 48 69 ck_no. - isHi
0250: 74 2c 20 64 65 6c 74 61 0a 20 20 20 20 2d 20 73 t, delta. - s
0260: 61 6d 70 6c 65 73 0a 20 20 20 20 2d 20 64 69 61 amples. - dia
0270: 6c 73 0a 20 20 20 20 2d 20 54 6f 6e 65 0a 20 20 ls. - Tone.
0280: 20 20 2d 20 63 65 6c 6c 78 0a 20 20 20 20 2d 20 - cellx. -
0290: 77 69 6e 64 6f 77 20 61 6e 64 20 61 6e 79 20 74 window and any t
02a0: 68 69 6e 67 20 69 6e 63 6c 75 64 65 64 20 77 69 hing included wi
02b0: 74 68 20 74 68 65 20 73 63 72 69 70 74 20 74 61 th the script ta
02c0: 67 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 68 g is available h
02d0: 65 72 65 0a 0a 60 6d 65 6d 60 20 69 73 20 73 68 ere..`mem` is sh
02e0: 6f 72 74 20 66 6f 72 20 6d 65 6d 6f 72 79 2e 20 ort for memory.
02f0: 41 6c 6c 20 69 6e 73 74 72 75 6d 65 6e 74 73 20 All instruments
0300: 61 6e 64 20 65 66 66 65 63 74 73 20 61 72 65 20 and effects are
0310: 73 61 76 65 64 20 68 65 72 65 20 73 6f 20 74 68 saved here so th
0320: 61 74 20 74 68 65 79 20 63 61 6e 20 62 65 20 61 at they can be a
0330: 63 63 65 73 73 65 64 20 65 76 65 72 79 77 68 65 ccessed everywhe
0340: 72 65 2e 0a 0a 53 74 65 70 20 74 6f 20 63 72 65 re...Step to cre
0350: 61 74 65 20 74 68 65 20 62 61 73 69 63 20 73 6f ate the basic so
0360: 6e 67 2e 0a 0a 31 2e 20 43 6c 69 63 6b 20 6f 6e ng...1. Click on
0370: 20 60 41 64 64 20 53 61 6d 70 6c 65 20 55 52 4c `Add Sample URL
0380: 60 20 74 6f 20 61 64 64 20 74 68 65 20 66 6f 6c ` to add the fol
0390: 6c 6f 77 69 6e 67 20 55 52 4c 73 0a 0a 20 20 20 lowing URLs..
03a0: 20 2d 20 2f 4b 69 63 6b 30 31 2e 77 61 76 0a 20 - /Kick01.wav.
03b0: 20 20 20 2d 20 2f 53 6e 61 72 65 31 39 2e 77 61 - /Snare19.wa
03c0: 76 0a 20 20 20 20 2d 20 2f 43 6c 6f 73 65 64 68 v. - /Closedh
03d0: 61 74 30 31 2e 77 61 76 0a 20 20 20 20 2d 20 2f at01.wav. - /
03e0: 4d 69 73 63 53 79 6e 74 68 53 74 61 62 30 34 2e MiscSynthStab04.
03f0: 77 61 76 0a 0a 32 2e 20 43 6c 69 63 6b 20 6f 6e wav..2. Click on
0400: 20 60 41 64 64 20 44 69 61 6c 60 0a 0a 33 2e 20 `Add Dial`..3.
0410: 45 6e 74 65 72 20 74 68 65 20 66 6f 6c 6c 6f 77 Enter the follow
0420: 69 6e 67 20 69 6e 74 6f 20 74 68 65 20 77 69 6e ing into the win
0430: 64 6f 77 0a 0a 60 60 60 0a 73 63 65 6e 65 31 20 dow..```.scene1
0440: 3d 20 5b 0a 20 20 20 20 63 65 6c 6c 78 28 22 70 = [. cellx("p
0450: 20 31 30 30 30 20 31 30 30 30 20 31 30 30 30 20 1000 1000 1000
0460: 31 30 30 30 22 29 2c 0a 20 20 20 20 63 65 6c 6c 1000"),. cell
0470: 78 28 22 70 20 30 30 78 30 20 30 30 78 30 20 30 x("p 00x0 00x0 0
0480: 30 78 30 20 30 30 78 30 22 29 2c 0a 20 20 20 20 0x0 00x0"),.
0490: 63 65 6c 6c 78 28 22 70 20 30 30 30 30 20 78 30 cellx("p 0000 x0
04a0: 30 30 20 30 30 30 30 20 78 30 30 30 22 29 2c 0a 00 0000 x000"),.
04b0: 5d 0a 0a 73 63 65 6e 65 32 20 3d 20 5b 0a 20 20 ]..scene2 = [.
04c0: 20 20 63 65 6c 6c 78 28 22 70 20 31 30 31 31 20 cellx("p 1011
04d0: 31 30 30 31 20 31 30 30 30 20 31 30 30 30 22 29 1001 1000 1000")
04e0: 2c 0a 20 20 20 20 63 65 6c 6c 78 28 22 70 20 30 ,. cellx("p 0
04f0: 30 78 30 20 30 30 78 30 20 30 30 78 30 20 30 30 0x0 00x0 00x0 00
0500: 78 30 22 29 2c 0a 20 20 20 20 63 65 6c 6c 78 28 x0"),. cellx(
0510: 22 70 20 30 30 30 30 20 78 30 30 30 20 30 30 30 "p 0000 x000 000
0520: 30 20 78 30 30 30 22 29 2c 0a 5d 0a 0a 70 61 74 0 x000"),.]..pat
0530: 74 65 72 6e 73 20 3d 20 73 63 65 6e 65 31 0a 0a terns = scene1..
0540: 76 61 72 20 6f 6e 63 65 20 3d 20 66 75 6e 63 74 var once = funct
0550: 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 54 6f 6e ion () {. Ton
0560: 65 2e 4d 61 73 74 65 72 2e 76 6f 6c 75 6d 65 2e e.Master.volume.
0570: 76 61 6c 75 65 20 3d 20 2d 33 30 0a 20 20 20 20 value = -30.
0580: 6d 65 6d 2e 6d 61 73 74 65 72 20 3d 20 6e 65 77 mem.master = new
0590: 20 54 6f 6e 65 2e 43 68 61 6e 6e 65 6c 28 7b 63 Tone.Channel({c
05a0: 68 61 6e 6e 65 6c 43 6f 75 6e 74 3a 20 32 2c 20 hannelCount: 2,
05b0: 76 6f 6c 75 6d 65 3a 20 2d 31 30 7d 29 2e 63 68 volume: -10}).ch
05c0: 61 69 6e 28 20 54 6f 6e 65 2e 44 65 73 74 69 6e ain( Tone.Destin
05d0: 61 74 69 6f 6e 29 3b 0a 20 20 20 20 6d 65 6d 2e ation);. mem.
05e0: 76 6f 6c 75 6d 65 5f 67 75 61 72 64 20 3d 20 67 volume_guard = g
05f0: 75 61 72 64 28 5b 2d 32 30 2c 2d 31 30 5d 29 3b uard([-20,-10]);
0600: 0a 0a 20 20 20 20 53 61 6d 70 6c 65 28 22 6b 22 .. Sample("k"
0610: 2c 20 30 29 3b 0a 20 20 20 20 53 61 6d 70 6c 65 , 0);. Sample
0620: 28 22 68 22 2c 20 31 29 3b 0a 20 20 20 20 53 61 ("h", 1);. Sa
0630: 6d 70 6c 65 28 22 73 6e 22 2c 20 32 29 3b 0a 0a mple("sn", 2);..
0640: 20 20 20 20 68 61 6e 64 6c 65 72 73 5b 22 65 78 handlers["ex
0650: 22 5d 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 76 "] = function (v
0660: 61 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 al) {. if
0670: 20 28 76 61 6c 20 3e 20 30 2e 35 29 20 7b 0a 20 (val > 0.5) {.
0680: 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 5b 22 mem["
0690: 73 74 61 72 74 5f 73 6e 61 72 65 22 5d 20 3d 20 start_snare"] =
06a0: 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a true;. }.
06b0: 20 20 20 20 7d 0a 0a 20 20 20 20 64 69 61 6c 73 }.. dials
06c0: 5b 30 5d 5b 22 63 65 6c 6c 22 5d 2e 6f 6e 43 68 [0]["cell"].onCh
06d0: 61 6e 67 65 28 66 75 6e 63 74 69 6f 6e 20 28 65 ange(function (e
06e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var
06f0: 76 61 6c 20 3d 20 70 61 72 73 65 46 6c 6f 61 74 val = parseFloat
0700: 28 65 5b 22 64 61 74 61 22 5d 2e 76 61 6c 75 65 (e["data"].value
0710: 29 3b 0a 20 20 20 20 20 20 20 20 68 61 6e 64 6c );. handl
0720: 65 72 73 5b 22 65 78 22 5d 28 76 61 6c 29 3b 0a ers["ex"](val);.
0730: 20 20 20 20 7d 29 0a 0a 7d 0a 0a 69 66 20 28 62 })..}..if (b
0740: 61 72 73 20 3c 3d 20 33 20 29 20 7b 0a 20 20 20 ars <= 3 ) {.
0750: 20 74 72 61 6e 73 69 74 69 6f 6e 20 3d 20 6f 6e transition = on
0760: 63 65 3b 0a 7d 20 65 6c 73 65 20 7b 0a 20 20 20 ce;.} else {.
0770: 20 74 72 61 6e 73 69 74 69 6f 6e 20 3d 20 74 77 transition = tw
0780: 65 61 6b 3b 0a 7d 0a 0a 69 66 20 28 69 73 48 69 eak;.}..if (isHi
0790: 74 29 20 7b 0a 20 20 20 20 69 66 20 28 74 72 61 t) {. if (tra
07a0: 63 6b 5f 6e 6f 20 3d 3d 20 31 29 20 7b 0a 20 20 ck_no == 1) {.
07b0: 20 20 20 20 20 20 70 28 30 29 3b 0a 20 20 20 20 p(0);.
07c0: 7d 0a 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f }. if (track_
07d0: 6e 6f 20 3d 3d 20 32 29 20 7b 0a 20 20 20 20 20 no == 2) {.
07e0: 20 20 20 70 28 31 29 3b 0a 20 20 20 20 7d 0a 20 p(1);. }.
07f0: 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 if (track_no
0800: 3d 3d 20 33 29 20 7b 0a 20 20 20 20 20 20 20 20 == 3) {.
0810: 69 66 20 28 6d 65 6d 5b 22 73 74 61 72 74 5f 73 if (mem["start_s
0820: 6e 61 72 65 22 5d 29 20 7b 0a 20 20 20 20 20 20 nare"]) {.
0830: 20 20 20 20 20 20 70 28 32 29 3b 0a 20 20 20 20 p(2);.
0840: 20 20 20 20 7d 3b 0a 20 20 20 20 7d 0a 7d 0a 0a };. }.}..
0850: 0a 60 60 60 0a 0a 4e 6f 77 20 74 72 79 20 63 68 .```..Now try ch
0860: 61 6e 67 69 6e 67 20 74 68 65 20 63 6f 64 65 2e anging the code.
0870: 0a 0a 60 60 60 0a 70 61 74 74 65 72 6e 73 20 3d ..```.patterns =
0880: 20 73 63 65 6e 65 32 0a 60 60 60 0a 0a 49 6e 63 scene2.```..Inc
0890: 72 65 61 73 65 20 74 68 65 20 64 69 61 6c 20 74 rease the dial t
08a0: 6f 20 73 65 65 20 74 68 65 20 61 64 64 69 74 69 o see the additi
08b0: 6f 6e 20 6f 66 20 74 68 65 20 73 6e 61 72 65 2e on of the snare.
08c0: 20 54 68 69 73 20 69 73 20 68 6f 77 20 79 6f 75 This is how you
08d0: 20 63 61 6e 20 75 73 65 20 6f 62 73 65 72 76 65 can use observe
08e0: 72 73 20 74 6f 20 74 72 69 67 67 65 72 20 75 6e rs to trigger un
08f0: 72 65 6c 61 74 65 64 20 63 68 61 6e 67 65 73 2e related changes.
0900: 20 49 20 63 61 6c 6c 20 74 68 65 6d 20 73 69 64 I call them sid
0910: 65 65 76 65 6e 74 73 2c 20 61 73 20 74 68 65 20 eevents, as the
0920: 6c 6f 67 69 63 20 69 73 20 73 69 6d 69 6c 61 72 logic is similar
0930: 20 74 6f 20 73 69 64 65 63 68 61 69 6e 2c 20 77 to sidechain, w
0940: 68 69 63 68 20 74 79 70 69 63 61 6c 6c 79 20 6f hich typically o
0950: 62 73 65 72 76 65 72 73 20 74 68 65 20 76 6f 6c bservers the vol
0960: 75 6d 65 2e 0a 0a 43 6f 6d 6d 65 6e 74 20 61 6e ume...Comment an
0970: 64 20 55 6e 63 6f 6d 6d 65 6e 74 20 6c 69 6e 65 d Uncomment line
0980: 73 20 69 6e 20 74 68 65 20 60 69 66 20 28 69 73 s in the `if (is
0990: 48 69 74 29 60 20 62 6c 6f 63 6b 2e 20 54 6f 20 Hit)` block. To
09a0: 6d 75 74 65 20 61 6e 64 20 75 6e 6d 75 74 65 20 mute and unmute
09b0: 73 65 63 74 69 6f 6e 73 2e 0a 0a 2a 4e 6f 74 65 sections...*Note
09c0: 3a 2a 20 60 6d 65 6d 5b 22 6b 30 5f 63 68 61 6e :* `mem["k0_chan
09d0: 6e 65 6c 22 5d 2e 73 6f 6c 6f 20 3d 20 74 72 75 nel"].solo = tru
09e0: 65 3b 60 20 69 73 20 6e 6f 74 20 77 6f 72 6b 69 e;` is not worki
09f0: 6e 67 2e 0a 0a 2a 2a 56 69 73 75 61 6c 73 2a 2a ng...**Visuals**
0a00: 0a 0a 43 68 61 6e 67 65 20 74 68 65 20 6f 6e 63 ..Change the onc
0a10: 65 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 74 68 e function to th
0a20: 69 73 20 61 6e 64 20 63 6c 69 63 6b 20 60 2b 20 is and click `+
0a30: 45 78 65 63 75 74 65 20 4f 6e 63 65 60 0a 0a 43 Execute Once`..C
0a40: 6f 64 65 20 69 73 20 74 61 6b 65 6e 20 66 72 6f ode is taken fro
0a50: 6d 20 62 75 74 74 65 72 63 68 75 72 6e 2e 20 54 m butterchurn. T
0a60: 72 79 20 63 68 61 6e 67 69 6e 67 20 5b 70 72 65 ry changing [pre
0a70: 73 65 74 73 5d 28 68 74 74 70 73 3a 2f 2f 62 75 sets](https://bu
0a80: 74 74 65 72 63 68 75 72 6e 76 69 7a 2e 63 6f 6d tterchurnviz.com
0a90: 2f 29 20 74 6f 20 67 65 74 20 64 69 66 66 65 72 /) to get differ
0aa0: 65 6e 74 20 76 69 73 75 61 6c 73 2e 0a 0a 60 60 ent visuals...``
0ab0: 60 0a 76 61 72 20 74 77 65 61 6b 20 3d 20 66 75 `.var tweak = fu
0ac0: 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 69 nction() {. i
0ad0: 6e 69 74 57 69 6e 61 6d 70 28 22 5f 41 64 65 72 nitWinamp("_Ader
0ae0: 72 61 73 69 20 2d 20 57 61 6e 64 65 72 65 72 20 rasi - Wanderer
0af0: 69 6e 20 43 75 72 76 65 64 20 53 70 61 63 65 20 in Curved Space
0b00: 2d 20 6d 61 73 68 30 30 30 30 20 2d 20 66 61 63 - mash0000 - fac
0b10: 6c 65 6d 70 74 20 6b 69 62 69 74 7a 69 6e 67 20 lempt kibitzing
0b20: 6d 65 73 68 75 67 67 61 6e 61 20 73 63 68 6d 61 meshuggana schma
0b30: 6c 74 7a 20 28 47 65 69 73 73 20 63 6f 6c 6f 72 ltz (Geiss color
0b40: 20 6d 69 78 29 22 29 3b 0a 0a 20 20 20 20 72 65 mix)");.. re
0b50: 6e 64 65 72 5f 6c 6f 6f 70 20 3d 20 66 75 6e 63 nder_loop = func
0b60: 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 tion () {.
0b70: 20 20 77 69 6e 64 6f 77 2e 76 69 73 75 61 6c 69 window.visuali
0b80: 7a 65 72 2e 72 65 6e 64 65 72 28 29 3b 0a 20 20 zer.render();.
0b90: 20 20 7d 0a 7d 0a 60 60 60 0a 0a 2a 2a 54 77 65 }.}.```..**Twe
0ba0: 61 6b 69 6e 67 2a 2a 0a 0a 46 69 72 73 74 20 63 aking**..First c
0bb0: 6c 69 63 6b 20 60 2b 20 4e 75 6d 62 65 72 60 2e lick `+ Number`.
0bc0: 20 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 This is useful
0bd0: 74 6f 20 63 68 65 63 6b 20 69 66 20 74 68 65 20 to check if the
0be0: 6b 6e 6f 62 20 66 75 6e 63 74 69 6f 6e 20 69 73 knob function is
0bf0: 20 61 63 74 75 61 6c 6c 79 20 77 6f 72 6b 69 6e actually workin
0c00: 67 2e 20 41 6e 64 20 63 6c 69 63 6b 20 60 2b 20 g. And click `+
0c10: 45 78 65 63 75 74 65 20 4f 6e 63 65 60 0a 0a 60 Execute Once`..`
0c20: 60 60 0a 76 61 72 20 74 77 65 61 6b 20 3d 20 66 ``.var tweak = f
0c30: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 unction () {.
0c40: 20 6d 65 6d 2e 6b 31 20 3d 20 6b 6e 6f 62 28 7b mem.k1 = knob({
0c50: 72 61 6d 70 20 3a 20 5b 30 2e 30 39 2c 31 2e 38 ramp : [0.09,1.8
0c60: 2c 20 30 2e 34 2c 20 32 2c 20 31 2e 35 2c 20 31 , 0.4, 2, 1.5, 1
0c70: 2c 20 30 2e 35 2c 20 33 2c 20 35 2c 20 38 2c 20 , 0.5, 3, 5, 8,
0c80: 32 5d 2c 20 22 6e 75 6d 62 65 72 22 3a 20 6e 75 2], "number": nu
0c90: 6d 62 65 72 73 5b 30 5d 5b 22 76 22 5d 20 7d 29 mbers[0]["v"] })
0ca0: 3b 0a 20 20 20 20 61 6c 77 61 79 73 20 3d 20 66 ;. always = f
0cb0: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 unction () {.
0cc0: 20 20 20 20 20 6d 65 6d 5b 22 6b 30 5f 66 69 6c mem["k0_fil
0cd0: 74 65 72 22 5d 2e 66 72 65 71 75 65 6e 63 79 2e ter"].frequency.
0ce0: 76 61 6c 75 65 20 3d 20 6d 65 6d 2e 6b 31 2e 6d value = mem.k1.m
0cf0: 6f 76 65 28 29 20 2a 20 31 30 30 30 3b 0a 20 20 ove() * 1000;.
0d00: 20 20 7d 0a 7d 0a 60 60 60 0a 0a 41 73 20 79 6f }.}.```..As yo
0d10: 75 20 63 61 6e 20 73 65 72 65 20 6e 75 6d 62 65 u can sere numbe
0d20: 72 73 20 61 6e 64 20 64 69 61 6c 73 20 77 69 6c rs and dials wil
0d30: 6c 20 62 65 20 61 76 61 69 6c 61 62 6c 65 20 61 l be available a
0d40: 73 20 61 20 67 6c 6f 62 61 6c 20 61 72 72 61 79 s a global array
0d50: 2e 0a 0a 54 68 65 72 65 20 69 73 20 6e 6f 20 77 ...There is no w
0d60: 61 79 20 74 6f 20 72 65 6d 6f 76 65 20 74 68 65 ay to remove the
0d70: 6d 20 73 6f 20 62 65 20 63 61 72 65 66 75 6c 20 m so be careful
0d80: 61 62 6f 75 74 20 74 68 65 20 6f 72 64 65 72 20 about the order
0d90: 69 6e 20 77 68 69 63 68 20 79 6f 75 20 61 64 64 in which you add
0da0: 20 74 68 65 6d 2e 0a 0a 54 68 65 20 66 6f 6c 6c them...The foll
0db0: 6f 77 69 6e 67 20 63 6f 64 65 20 77 69 6c 6c 20 owing code will
0dc0: 61 6c 77 61 79 73 20 62 65 20 65 78 65 63 75 74 always be execut
0dd0: 65 64 20 61 73 20 69 74 73 20 61 74 20 74 68 65 ed as its at the
0de0: 20 74 6f 70 20 6c 65 76 65 6c 2e 20 41 73 20 79 top level. As y
0df0: 6f 75 20 63 61 6e 20 73 65 65 20 74 68 69 73 20 ou can see this
0e00: 63 6f 64 65 20 69 6d 70 6c 69 65 73 20 74 68 61 code implies tha
0e10: 74 20 74 68 65 20 66 69 72 73 74 20 64 69 61 6c t the first dial
0e20: 20 69 73 20 63 6f 6e 6e 65 63 74 65 64 20 74 6f is connected to
0e30: 20 74 68 65 20 6d 61 73 74 65 72 20 76 6f 6c 75 the master volu
0e40: 6d 65 2e 20 55 73 65 20 67 75 61 72 64 73 20 74 me. Use guards t
0e50: 6f 20 61 76 6f 69 64 20 67 6f 69 6e 67 20 64 65 o avoid going de
0e60: 61 66 20 61 73 20 73 6f 6d 65 75 6e 64 65 66 69 af as someundefi
0e70: 6e 65 64 73 20 65 64 69 74 69 6e 67 20 63 61 6e neds editing can
0e80: 20 63 72 65 61 74 65 64 20 62 61 64 20 66 72 65 created bad fre
0e90: 71 75 65 6e 63 79 20 6e 75 6d 62 65 72 73 2e 0a quency numbers..
0ea0: 0a 60 60 60 0a 54 6f 6e 65 2e 4d 61 73 74 65 72 .```.Tone.Master
0eb0: 2e 76 6f 6c 75 6d 65 2e 76 61 6c 75 65 20 3d 20 .volume.value =
0ec0: 76 6f 6c 75 6d 65 5f 67 75 61 72 64 28 28 31 20 volume_guard((1
0ed0: 2d 20 64 69 61 6c 73 5b 30 5d 5b 22 63 65 6c 6c - dials[0]["cell
0ee0: 22 5d 28 29 29 20 2a 20 2d 33 30 29 3b 0a 60 60 "]()) * -30);.``
0ef0: 60 0a 0a 23 23 23 20 4d 61 6b 69 6e 67 20 61 20 `..### Making a
0f00: 62 61 73 69 63 20 6c 6f 6f 70 0a 0a 2d 20 4b 69 basic loop..- Ki
0f10: 63 6b 20 2b 20 46 69 6c 74 65 72 0a 2d 20 53 6e ck + Filter.- Sn
0f20: 61 72 65 20 2b 20 46 69 6c 74 65 72 0a 2d 20 53 are + Filter.- S
0f30: 6e 61 72 65 20 2b 20 46 69 6c 74 65 72 20 2b 20 nare + Filter +
0f40: 44 65 6c 61 79 0a 2d 20 48 69 67 68 20 48 61 74 Delay.- High Hat
0f50: 0a 2d 20 4c 65 61 64 20 2b 20 46 69 6c 74 65 72 .- Lead + Filter
0f60: 0a 2d 20 44 75 62 20 53 74 61 62 20 2b 20 46 69 .- Dub Stab + Fi
0f70: 6c 74 65 72 20 2b 20 52 65 76 65 72 62 0a 0a 54 lter + Reverb..T
0f80: 69 70 3a 20 49 6e 20 54 6f 6e 65 2e 6a 73 20 79 ip: In Tone.js y
0f90: 6f 75 20 63 61 6e 27 74 20 63 61 6c 6c 20 63 6f ou can't call co
0fa0: 6e 6e 65 63 74 20 6f 6e 65 20 61 66 74 65 72 20 nnect one after
0fb0: 61 6e 6f 74 68 65 72 2c 20 79 6f 75 20 6e 65 65 another, you nee
0fc0: 64 20 74 6f 20 75 73 65 20 63 68 61 69 6e 2e 0a d to use chain..
0fd0: 0a 54 4f 44 4f 3a 20 41 64 64 20 67 6c 69 64 65 .TODO: Add glide
0fe0: 20 74 6f 20 4c 65 61 64 20 74 6f 20 6d 61 6b 65 to Lead to make
0ff0: 20 69 74 20 6d 6f 72 65 20 33 30 33 20 73 6f 75 it more 303 sou
1000: 6e 64 69 6e 67 0a 0a 4d 61 73 74 65 72 20 69 73 nding..Master is
1010: 20 63 6f 6e 6e 65 63 74 65 64 20 77 69 74 68 20 connected with
1020: 53 75 72 72 6f 75 6e 64 20 61 6e 64 20 56 6f 6c Surround and Vol
1030: 75 6d 65 20 4c 69 6d 69 74 65 72 2e 0a 55 73 65 ume Limiter..Use
1040: 20 47 61 74 65 73 20 61 6e 64 20 4c 69 6d 69 74 Gates and Limit
1050: 65 72 73 20 74 6f 20 61 76 6f 69 64 20 67 6f 69 ers to avoid goi
1060: 6e 67 20 64 65 61 66 2e 0a 0a 54 6f 6e 65 2e 4d ng deaf...Tone.M
1070: 75 6c 74 69 49 6e 73 74 72 75 6d 65 6e 74 20 67 ultiInstrument g
1080: 61 76 65 20 6c 6f 74 73 20 6f 66 20 67 6c 69 74 ave lots of glit
1090: 63 68 65 73 2c 20 73 6f 20 63 75 73 74 6f 6d 20 ches, so custom
10a0: 76 6f 69 63 65 73 20 61 72 65 20 77 72 69 74 74 voices are writt
10b0: 65 6e 20 69 6e 20 74 68 65 20 76 6f 69 63 65 20 en in the voice
10c0: 66 75 6e 63 74 69 6f 6e 0a 0a 43 68 61 6e 6e 65 function..Channe
10d0: 6c 73 20 70 72 6f 76 69 64 65 0a 2d 20 4d 75 74 ls provide.- Mut
10e0: 65 0a 2d 20 53 6f 6c 6f 0a 0a 4d 6f 72 65 20 69 e.- Solo..More i
10f0: 6d 70 72 6f 76 65 6d 65 6e 74 73 20 66 6f 72 20 mprovements for
1100: 74 68 65 20 53 74 61 62 0a 0a 20 20 20 20 2d 20 the Stab.. -
1110: 43 68 6f 72 75 73 20 6f 72 20 50 68 61 73 65 72 Chorus or Phaser
1120: 0a 20 20 20 20 2d 20 43 6f 6d 70 72 65 73 73 6f . - Compresso
1130: 72 0a 20 20 20 20 2d 20 44 65 63 61 79 20 69 6e r. - Decay in
1140: 20 65 6e 76 65 6c 6f 70 65 0a 20 20 20 20 2d 20 envelope. -
1150: 53 65 70 61 72 61 74 65 20 66 69 6c 74 65 72 73 Separate filters
1160: 0a 20 20 20 20 2d 20 45 51 0a 20 20 20 20 2d 20 . - EQ. -
1170: 53 65 6e 64 73 20 66 6f 72 20 6d 6f 72 65 20 64 Sends for more d
1180: 65 6c 61 79 0a 20 20 20 20 2d 20 4c 46 4f 20 66 elay. - LFO f
1190: 6f 72 20 66 69 6c 74 65 72 73 0a 0a 0a 46 72 65 or filters...Fre
11a0: 65 76 65 72 62 20 64 6f 65 73 20 6e 6f 74 20 77 everb does not w
11b0: 6f 72 6b 20 61 6e 64 20 61 6c 73 6f 20 6e 65 65 ork and also nee
11c0: 64 73 20 4d 6f 6e 6f 20 74 6f 20 66 75 6e 63 74 ds Mono to funct
11d0: 69 6f 6e 20 70 72 6f 70 65 72 6c 79 0a 0a 60 60 ion properly..``
11e0: 60 0a 76 61 72 20 72 65 76 65 72 62 20 3d 20 6e `.var reverb = n
11f0: 65 77 20 54 6f 6e 65 2e 46 72 65 65 76 65 72 62 ew Tone.Freeverb
1200: 28 29 2e 74 6f 44 65 73 74 69 6e 61 74 69 6f 6e ().toDestination
1210: 28 29 3b 0a 76 61 72 20 72 65 76 65 72 62 5f 6d ();.var reverb_m
1220: 6f 6e 6f 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d ono = new Tone.M
1230: 6f 6e 6f 28 29 2e 63 6f 6e 6e 65 63 74 28 72 65 ono().connect(re
1240: 76 65 72 62 29 3b 0a 72 65 76 65 72 62 2e 64 61 verb);.reverb.da
1250: 6d 70 65 6e 69 6e 67 20 3d 20 31 30 30 3b 0a 72 mpening = 100;.r
1260: 65 76 65 72 62 2e 72 6f 6f 6d 53 69 7a 65 20 3d everb.roomSize =
1270: 20 30 2e 39 3b 0a 60 60 60 0a 0a 23 23 23 20 46 0.9;.```..### F
1280: 75 6c 6c 20 43 6f 64 65 0a 0a 60 60 60 0a 76 6f ull Code..```.vo
1290: 6c 75 6d 65 5f 67 75 61 72 64 31 20 3d 20 67 75 lume_guard1 = gu
12a0: 61 72 64 28 5b 2d 32 30 2c 31 35 5d 29 0a 54 6f ard([-20,15]).To
12b0: 6e 65 2e 4d 61 73 74 65 72 2e 76 6f 6c 75 6d 65 ne.Master.volume
12c0: 2e 76 61 6c 75 65 20 3d 20 76 6f 6c 75 6d 65 5f .value = volume_
12d0: 67 75 61 72 64 31 28 4d 61 74 68 2e 72 6f 75 6e guard1(Math.roun
12e0: 64 28 64 69 61 6c 73 5b 30 5d 5b 22 63 65 6c 6c d(dials[0]["cell
12f0: 22 5d 28 29 20 2a 20 33 30 29 20 2d 32 30 29 3b "]() * 30) -20);
1300: 0a 2f 2f 20 6d 65 6d 5b 22 73 74 61 62 5f 63 68 .// mem["stab_ch
1310: 61 6e 6e 65 6c 22 5d 2e 76 6f 6c 75 6d 65 2e 76 annel"].volume.v
1320: 61 6c 75 65 20 3d 20 76 6f 6c 75 6d 65 5f 67 75 alue = volume_gu
1330: 61 72 64 32 28 2d 32 29 3b 0a 2f 2f 20 6d 65 6d ard2(-2);.// mem
1340: 5b 22 73 74 61 62 5f 66 69 6c 74 65 72 22 5d 2e ["stab_filter"].
1350: 66 72 65 71 75 65 6e 63 79 2e 76 61 6c 75 65 20 frequency.value
1360: 3d 20 4d 61 74 68 2e 72 6f 75 6e 64 28 64 69 61 = Math.round(dia
1370: 6c 73 5b 31 5d 5b 22 63 65 6c 6c 22 5d 28 29 20 ls[1]["cell"]()
1380: 2a 20 31 30 30 30 30 29 3b 0a 0a 73 63 65 6e 65 * 10000);..scene
1390: 31 20 3d 20 5b 0a 20 20 20 20 63 65 6c 6c 78 28 1 = [. cellx(
13a0: 22 70 20 31 30 30 30 20 31 30 30 30 20 31 30 30 "p 1000 1000 100
13b0: 30 20 31 30 30 30 22 29 2c 0a 20 20 20 20 63 65 0 1000"),. ce
13c0: 6c 6c 78 28 22 70 20 30 30 78 30 20 30 30 78 30 llx("p 00x0 00x0
13d0: 20 30 30 78 30 20 30 30 78 30 22 29 2c 0a 20 20 00x0 00x0"),.
13e0: 20 20 63 65 6c 6c 78 28 22 70 20 30 78 30 30 20 cellx("p 0x00
13f0: 30 30 30 30 20 30 30 30 30 20 78 30 30 30 22 29 0000 0000 x000")
1400: 2c 0a 20 20 20 20 63 65 6c 6c 78 28 22 70 20 30 ,. cellx("p 0
1410: 30 30 30 20 78 30 30 30 20 30 30 30 30 20 78 30 000 x000 0000 x0
1420: 30 30 22 29 2c 0a 20 20 20 20 63 65 6c 6c 78 28 00"),. cellx(
1430: 22 70 20 78 78 30 78 20 63 30 78 30 20 78 30 78 "p xx0x c0x0 x0x
1440: 30 20 78 30 78 78 22 29 2c 0a 20 20 20 20 63 65 0 x0xx"),. ce
1450: 6c 6c 78 28 22 70 20 78 30 30 30 20 78 30 78 30 llx("p x000 x0x0
1460: 20 30 30 30 30 20 78 30 78 30 22 29 2c 0a 5d 0a 0000 x0x0"),.].
1470: 0a 70 61 74 74 65 72 6e 73 20 3d 20 73 63 65 6e .patterns = scen
1480: 65 31 0a 0a 66 75 6e 63 74 69 6f 6e 20 4e 6f 69 e1..function Noi
1490: 73 65 53 79 6e 74 68 20 28 6e 61 6d 65 29 20 7b seSynth (name) {
14a0: 0a 20 20 20 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 . name = name
14b0: 20 7c 7c 20 22 77 66 22 3b 0a 20 20 20 20 6d 65 || "wf";. me
14c0: 6d 5b 6e 61 6d 65 20 2b 20 22 5f 73 74 65 72 65 m[name + "_stere
14d0: 6f 22 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 o"] = new Tone.S
14e0: 74 65 72 65 6f 57 69 64 65 6e 65 72 28 7b 77 69 tereoWidener({wi
14f0: 64 74 68 3a 20 31 7d 29 3b 0a 20 20 20 20 6d 65 dth: 1});. me
1500: 6d 5b 6e 61 6d 65 5d 20 3d 20 20 6e 65 77 20 54 m[name] = new T
1510: 6f 6e 65 2e 4e 6f 69 73 65 28 22 70 69 6e 6b 22 one.Noise("pink"
1520: 29 2e 73 74 61 72 74 28 29 3b 0a 20 20 20 20 6d ).start();. m
1530: 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 66 69 6c 74 em[name + "_filt
1540: 65 72 22 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e er"] = new Tone.
1550: 46 69 6c 74 65 72 28 34 30 30 2c 20 27 6c 6f 77 Filter(400, 'low
1560: 70 61 73 73 27 2c 20 2d 39 36 29 3b 0a 20 20 20 pass', -96);.
1570: 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 63 68 mem[name + "_ch
1580: 61 6e 6e 65 6c 22 5d 20 3d 20 6e 65 77 20 54 6f annel"] = new To
1590: 6e 65 2e 43 68 61 6e 6e 65 6c 28 7b 63 68 61 6e ne.Channel({chan
15a0: 6e 65 6c 43 6f 75 6e 74 3a 20 32 2c 20 76 6f 6c nelCount: 2, vol
15b0: 75 6d 65 3a 20 2d 31 30 2c 20 70 61 6e 3a 20 2d ume: -10, pan: -
15c0: 30 2e 38 7d 29 2e 63 68 61 69 6e 28 6d 65 6d 5b 0.8}).chain(mem[
15d0: 6e 61 6d 65 20 2b 20 22 5f 66 69 6c 74 65 72 22 name + "_filter"
15e0: 5d 2c 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f ], mem[name + "_
15f0: 73 74 65 72 65 6f 22 5d 2c 20 6d 65 6d 2e 6d 61 stereo"], mem.ma
1600: 73 74 65 72 29 3b 0a 20 20 20 20 6d 65 6d 5b 6e ster);. mem[n
1610: 61 6d 65 5d 2e 63 6f 6e 6e 65 63 74 28 6d 65 6d ame].connect(mem
1620: 5b 6e 61 6d 65 20 2b 20 22 5f 63 68 61 6e 6e 65 [name + "_channe
1630: 6c 22 5d 29 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e l"]).}..function
1640: 20 53 74 61 62 28 6e 61 6d 65 29 20 7b 0a 20 20 Stab(name) {.
1650: 20 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 20 7c 7c name = name ||
1660: 20 22 73 74 61 62 22 3b 0a 0a 20 20 20 20 6d 65 "stab";.. me
1670: 6d 5b 6e 61 6d 65 20 2b 20 22 5f 66 69 6c 74 65 m[name + "_filte
1680: 72 22 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 46 r"] = new Tone.F
1690: 69 6c 74 65 72 28 35 32 35 30 2c 20 27 6c 6f 77 ilter(5250, 'low
16a0: 70 61 73 73 27 2c 20 2d 39 36 29 3b 0a 20 20 20 pass', -96);.
16b0: 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 68 66 mem[name + "_hf
16c0: 69 6c 74 65 72 22 5d 20 3d 20 6e 65 77 20 54 6f ilter"] = new To
16d0: 6e 65 2e 46 69 6c 74 65 72 28 38 30 2c 20 27 68 ne.Filter(80, 'h
16e0: 69 67 68 70 61 73 73 27 2c 20 2d 39 36 29 3b 0a ighpass', -96);.
16f0: 20 20 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 mem[name + "
1700: 5f 72 65 76 65 72 62 22 5d 20 3d 20 6e 65 77 20 _reverb"] = new
1710: 54 6f 6e 65 2e 52 65 76 65 72 62 28 30 2e 31 29 Tone.Reverb(0.1)
1720: 3b 0a 20 20 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b ;. mem[name +
1730: 20 22 5f 64 65 6c 61 79 22 5d 20 3d 20 6e 65 77 "_delay"] = new
1740: 20 54 6f 6e 65 2e 46 65 65 64 62 61 63 6b 44 65 Tone.FeedbackDe
1750: 6c 61 79 28 22 34 6e 22 2c 20 30 2e 34 29 3b 0a lay("4n", 0.4);.
1760: 20 20 20 20 2f 2f 20 6d 65 6d 5b 6e 61 6d 65 20 // mem[name
1770: 2b 20 22 5f 70 64 65 6c 61 79 22 5d 20 3d 20 6e + "_pdelay"] = n
1780: 65 77 20 54 6f 6e 65 2e 50 69 6e 67 50 6f 6e 67 ew Tone.PingPong
1790: 44 65 6c 61 79 28 22 32 6e 22 2c 20 30 2e 31 29 Delay("2n", 0.1)
17a0: 3b 0a 20 20 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b ;. mem[name +
17b0: 20 22 5f 73 74 65 72 65 6f 22 5d 20 3d 20 6e 65 "_stereo"] = ne
17c0: 77 20 54 6f 6e 65 2e 53 74 65 72 65 6f 57 69 64 w Tone.StereoWid
17d0: 65 6e 65 72 28 7b 77 69 64 74 68 3a 20 30 2e 32 ener({width: 0.2
17e0: 35 7d 29 3b 0a 20 20 20 20 6d 65 6d 5b 6e 61 6d 5});. mem[nam
17f0: 65 20 2b 20 22 5f 63 68 61 6e 6e 65 6c 22 5d 20 e + "_channel"]
1800: 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 68 61 6e 6e = new Tone.Chann
1810: 65 6c 28 7b 63 68 61 6e 6e 65 6c 43 6f 75 6e 74 el({channelCount
1820: 3a 20 32 2c 20 76 6f 6c 75 6d 65 3a 20 2d 32 7d : 2, volume: -2}
1830: 29 2e 63 68 61 69 6e 28 6d 65 6d 5b 6e 61 6d 65 ).chain(mem[name
1840: 20 2b 20 22 5f 66 69 6c 74 65 72 22 5d 20 2c 20 + "_filter"] ,
1850: 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 64 mem[name + "_d
1860: 65 6c 61 79 22 5d 2c 20 6d 65 6d 5b 6e 61 6d 65 elay"], mem[name
1870: 20 2b 20 22 5f 72 65 76 65 72 62 22 5d 2c 20 20 + "_reverb"],
1880: 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 68 66 69 mem[name + "_hfi
1890: 6c 74 65 72 22 5d 20 2c 6d 65 6d 5b 6e 61 6d 65 lter"] ,mem[name
18a0: 20 2b 20 22 5f 73 74 65 72 65 6f 22 5d 2c 20 6d + "_stereo"], m
18b0: 65 6d 2e 6d 61 73 74 65 72 29 0a 0a 0a 20 20 20 em.master)...
18c0: 20 66 75 6e 63 74 69 6f 6e 20 76 6f 69 63 65 28 function voice(
18d0: 6e 6f 2c 20 74 79 70 65 29 20 7b 0a 20 20 20 20 no, type) {.
18e0: 20 20 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 mem[name + "
18f0: 5f 73 79 6e 74 68 22 20 2b 20 6e 6f 5d 20 3d 20 _synth" + no] =
1900: 6e 65 77 20 54 6f 6e 65 2e 4d 6f 6e 6f 53 79 6e new Tone.MonoSyn
1910: 74 68 28 7b 0a 20 20 20 20 20 20 20 20 20 20 20 th({.
1920: 20 6f 73 63 69 6c 6c 61 74 6f 72 3a 20 7b 0a 20 oscillator: {.
1930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
1940: 79 70 65 3a 20 74 79 70 65 0a 20 20 20 20 20 20 ype: type.
1950: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
1960: 7d 29 0a 20 20 20 20 20 20 20 20 6d 65 6d 5b 6e }). mem[n
1970: 61 6d 65 20 2b 20 22 5f 73 79 6e 74 68 22 20 2b ame + "_synth" +
1980: 20 6e 6f 5d 2e 63 6f 6e 6e 65 63 74 28 6d 65 6d no].connect(mem
1990: 5b 6e 61 6d 65 20 2b 20 22 5f 63 68 61 6e 6e 65 [name + "_channe
19a0: 6c 22 5d 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 l"]);. }..
19b0: 20 76 6f 69 63 65 28 31 2c 20 22 73 61 77 74 6f voice(1, "sawto
19c0: 6f 74 68 22 29 0a 20 20 20 20 76 6f 69 63 65 28 oth"). voice(
19d0: 32 2c 20 22 73 61 77 74 6f 6f 74 68 22 29 0a 20 2, "sawtooth").
19e0: 20 20 20 76 6f 69 63 65 28 33 2c 20 22 73 61 77 voice(3, "saw
19f0: 74 6f 6f 74 68 22 29 0a 20 20 20 20 76 6f 69 63 tooth"). voic
1a00: 65 28 34 2c 20 22 70 77 6d 22 29 0a 20 20 20 20 e(4, "pwm").
1a10: 76 6f 69 63 65 28 35 2c 20 22 70 77 6d 22 29 0a voice(5, "pwm").
1a20: 20 20 20 20 76 6f 69 63 65 28 36 2c 20 22 70 77 voice(6, "pw
1a30: 6d 22 29 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 m").}..function
1a40: 73 28 76 65 6c 2c 20 6e 6f 74 65 73 2c 20 64 75 s(vel, notes, du
1a50: 72 61 74 69 6f 6e 29 20 7b 0a 20 20 20 20 76 65 ration) {. ve
1a60: 6c 20 3d 20 76 65 6c 20 7c 7c 20 31 2e 30 3b 0a l = vel || 1.0;.
1a70: 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 64 duration = d
1a80: 75 72 61 74 69 6f 6e 20 7c 7c 20 22 32 6e 22 3b uration || "2n";
1a90: 0a 20 20 20 20 6e 6f 74 65 73 20 3d 20 6e 6f 74 . notes = not
1aa0: 65 73 20 7c 7c 20 20 5b 22 45 32 22 2c 20 22 42 es || ["E2", "B
1ab0: 32 22 2c 20 22 47 32 22 5d 3b 0a 20 20 20 20 6d 2", "G2"];. m
1ac0: 65 6d 5b 22 73 74 61 62 5f 73 79 6e 74 68 31 22 em["stab_synth1"
1ad0: 5d 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b 52 ].triggerAttackR
1ae0: 65 6c 65 61 73 65 28 6e 6f 74 65 73 5b 30 5d 2c elease(notes[0],
1af0: 20 64 75 72 61 74 69 6f 6e 2c 20 75 6e 64 65 66 duration, undef
1b00: 69 6e 65 64 2c 20 76 65 6c 29 3b 0a 20 20 20 20 ined, vel);.
1b10: 6d 65 6d 5b 22 73 74 61 62 5f 73 79 6e 74 68 32 mem["stab_synth2
1b20: 22 5d 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b "].triggerAttack
1b30: 52 65 6c 65 61 73 65 28 6e 6f 74 65 73 5b 31 5d Release(notes[1]
1b40: 2c 20 64 75 72 61 74 69 6f 6e 2c 20 75 6e 64 65 , duration, unde
1b50: 66 69 6e 65 64 2c 20 76 65 6c 29 3b 0a 20 20 20 fined, vel);.
1b60: 20 6d 65 6d 5b 22 73 74 61 62 5f 73 79 6e 74 68 mem["stab_synth
1b70: 33 22 5d 2e 74 72 69 67 67 65 72 41 74 74 61 63 3"].triggerAttac
1b80: 6b 52 65 6c 65 61 73 65 28 6e 6f 74 65 73 5b 32 kRelease(notes[2
1b90: 5d 2c 20 64 75 72 61 74 69 6f 6e 2c 20 75 6e 64 ], duration, und
1ba0: 65 66 69 6e 65 64 2c 20 76 65 6c 29 3b 0a 0a 20 efined, vel);..
1bb0: 20 20 20 6d 65 6d 5b 22 73 74 61 62 5f 73 79 6e mem["stab_syn
1bc0: 74 68 34 22 5d 2e 74 72 69 67 67 65 72 41 74 74 th4"].triggerAtt
1bd0: 61 63 6b 52 65 6c 65 61 73 65 28 6e 6f 74 65 73 ackRelease(notes
1be0: 5b 30 5d 2c 20 64 75 72 61 74 69 6f 6e 2c 20 75 [0], duration, u
1bf0: 6e 64 65 66 69 6e 65 64 2c 20 76 65 6c 29 3b 0a ndefined, vel);.
1c00: 20 20 20 20 6d 65 6d 5b 22 73 74 61 62 5f 73 79 mem["stab_sy
1c10: 6e 74 68 35 22 5d 2e 74 72 69 67 67 65 72 41 74 nth5"].triggerAt
1c20: 74 61 63 6b 52 65 6c 65 61 73 65 28 6e 6f 74 65 tackRelease(note
1c30: 73 5b 31 5d 2c 20 64 75 72 61 74 69 6f 6e 2c 20 s[1], duration,
1c40: 75 6e 64 65 66 69 6e 65 64 2c 20 76 65 6c 29 3b undefined, vel);
1c50: 0a 20 20 20 20 6d 65 6d 5b 22 73 74 61 62 5f 73 . mem["stab_s
1c60: 79 6e 74 68 36 22 5d 2e 74 72 69 67 67 65 72 41 ynth6"].triggerA
1c70: 74 74 61 63 6b 52 65 6c 65 61 73 65 28 6e 6f 74 ttackRelease(not
1c80: 65 73 5b 32 5d 2c 20 64 75 72 61 74 69 6f 6e 2c es[2], duration,
1c90: 20 75 6e 64 65 66 69 6e 65 64 2c 20 76 65 6c 29 undefined, vel)
1ca0: 3b 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 6f 6e ;.}..function on
1cb0: 63 65 28 29 20 7b 0a 20 20 20 20 76 61 72 20 70 ce() {. var p
1cc0: 72 3b 0a 20 20 20 20 63 6f 6e 73 74 20 73 20 3d r;. const s =
1cd0: 20 28 20 70 20 29 20 3d 3e 20 7b 0a 20 20 20 20 ( p ) => {.
1ce0: 20 20 20 20 70 72 20 3d 20 70 3b 0a 20 20 20 20 pr = p;.
1cf0: 20 20 20 20 76 61 72 20 69 6d 67 3b 0a 20 20 20 var img;.
1d00: 20 20 20 20 20 6c 65 74 20 78 20 3d 20 31 30 30 let x = 100
1d10: 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 79 20 ;. let y
1d20: 3d 20 31 30 30 3b 0a 0a 20 20 20 20 20 20 20 20 = 100;..
1d30: 70 2e 73 65 74 75 70 20 3d 20 66 75 6e 63 74 69 p.setup = functi
1d40: 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 20 20 20 on() {.
1d50: 20 20 20 76 61 72 20 78 20 3d 20 70 2e 63 72 65 var x = p.cre
1d60: 61 74 65 43 61 6e 76 61 73 28 37 30 30 2c 20 34 ateCanvas(700, 4
1d70: 31 30 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 10);.
1d80: 20 78 2e 63 61 6e 76 61 73 2e 73 74 79 6c 65 2e x.canvas.style.
1d90: 70 6f 73 69 74 69 6f 6e 20 3d 20 22 61 62 73 6f position = "abso
1da0: 6c 75 74 65 22 3b 0a 20 20 20 20 20 20 20 20 20 lute";.
1db0: 20 20 20 70 2e 66 72 61 6d 65 52 61 74 65 28 33 p.frameRate(3
1dc0: 30 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 0);.
1dd0: 69 6d 67 20 3d 20 70 2e 6c 6f 61 64 49 6d 61 67 img = p.loadImag
1de0: 65 28 27 2f 74 65 73 74 2e 70 6e 67 27 29 3b 0a e('/test.png');.
1df0: 20 20 20 20 20 20 20 20 7d 3b 0a 0a 20 20 20 20 };..
1e00: 20 20 20 20 70 2e 64 72 61 77 20 3d 20 66 75 6e p.draw = fun
1e10: 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 ction() {.
1e20: 20 20 20 20 20 20 76 61 72 20 65 20 3d 20 67 65 var e = ge
1e30: 74 52 61 6e 64 6f 6d 49 6e 74 28 32 29 3b 0a 20 tRandomInt(2);.
1e40: 20 20 20 20 20 20 20 20 20 20 20 70 2e 63 6c 65 p.cle
1e50: 61 72 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 ar();.
1e60: 20 20 69 66 20 28 65 20 3d 3d 20 30 29 20 7b 0a if (e == 0) {.
1e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1e80: 2f 2f 20 20 20 70 2e 66 69 6c 6c 28 31 32 33 29 // p.fill(123)
1e90: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
1ea0: 20 20 2f 2f 20 20 70 2e 72 65 63 74 28 78 2c 79 // p.rect(x,y
1eb0: 2c 35 30 2c 35 30 29 3b 0a 20 20 20 20 20 20 20 ,50,50);.
1ec0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 } else {.
1ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
1ee0: 20 20 70 2e 69 6d 61 67 65 28 69 6d 67 2c 20 30 p.image(img, 0
1ef0: 2c 20 30 29 3b 0a 20 20 20 20 20 20 20 20 20 20 , 0);.
1f00: 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 }. };.
1f10: 20 20 20 7d 3b 0a 0a 20 20 20 20 6c 65 74 20 6d };.. let m
1f20: 79 70 35 20 3d 20 6e 65 77 20 70 35 28 73 2c 20 yp5 = new p5(s,
1f30: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 document.getEle
1f40: 6d 65 6e 74 42 79 49 64 28 27 63 61 6e 76 61 73 mentById('canvas
1f50: 2d 63 6f 6e 74 61 69 6e 65 72 27 29 29 3b 0a 20 -container'));.
1f60: 20 20 20 0a 0a 20 20 20 20 76 61 72 20 76 69 73 .. var vis
1f70: 75 61 6c 69 7a 65 72 20 3d 20 69 6e 69 74 57 69 ualizer = initWi
1f80: 6e 61 6d 70 28 22 5f 41 64 65 72 72 61 73 69 20 namp("_Aderrasi
1f90: 2d 20 57 61 6e 64 65 72 65 72 20 69 6e 20 43 75 - Wanderer in Cu
1fa0: 72 76 65 64 20 53 70 61 63 65 20 2d 20 6d 61 73 rved Space - mas
1fb0: 68 30 30 30 30 20 2d 20 66 61 63 6c 65 6d 70 74 h0000 - faclempt
1fc0: 20 6b 69 62 69 74 7a 69 6e 67 20 6d 65 73 68 75 kibitzing meshu
1fd0: 67 67 61 6e 61 20 73 63 68 6d 61 6c 74 7a 20 28 ggana schmaltz (
1fe0: 47 65 69 73 73 20 63 6f 6c 6f 72 20 6d 69 78 29 Geiss color mix)
1ff0: 22 29 3b 0a 0a 20 20 20 20 72 65 6e 64 65 72 5f ");.. render_
2000: 6c 6f 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 loop = function
2010: 28 29 20 7b 0a 20 20 20 20 20 20 20 20 76 69 73 () {. vis
2020: 75 61 6c 69 7a 65 72 2e 72 65 6e 64 65 72 28 29 ualizer.render()
2030: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 0a 20 20 20 ;. }. .
2040: 20 54 6f 6e 65 2e 4d 61 73 74 65 72 2e 76 6f 6c Tone.Master.vol
2050: 75 6d 65 2e 76 61 6c 75 65 20 3d 20 2d 33 30 3b ume.value = -30;
2060: 0a 20 20 20 20 6d 65 6d 2e 6d 61 73 74 65 72 20 . mem.master
2070: 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 68 61 6e 6e = new Tone.Chann
2080: 65 6c 28 7b 63 68 61 6e 6e 65 6c 43 6f 75 6e 74 el({channelCount
2090: 3a 20 32 2c 20 76 6f 6c 75 6d 65 3a 20 2d 31 30 : 2, volume: -10
20a0: 7d 29 2e 63 68 61 69 6e 28 54 6f 6e 65 2e 44 65 }).chain(Tone.De
20b0: 73 74 69 6e 61 74 69 6f 6e 29 3b 0a 0a 20 20 20 stination);..
20c0: 20 2f 2f 20 4e 6f 69 73 65 53 79 6e 74 68 28 29 // NoiseSynth()
20d0: 3b 0a 20 20 20 20 53 74 61 62 28 29 3b 0a 20 20 ;. Stab();.
20e0: 20 20 53 61 6d 70 6c 65 28 22 6b 22 2c 20 30 2c Sample("k", 0,
20f0: 20 33 30 30 30 2c 20 33 29 3b 0a 20 20 20 20 53 3000, 3);. S
2100: 61 6d 70 6c 65 28 22 68 22 2c 20 31 2c 20 37 30 ample("h", 1, 70
2110: 30 30 2c 20 2d 31 35 29 3b 0a 20 20 20 20 53 61 00, -15);. Sa
2120: 6d 70 6c 65 28 22 73 6e 22 2c 32 2c 20 36 30 30 mple("sn",2, 600
2130: 30 2c 20 2d 31 35 29 3b 0a 20 20 20 20 53 61 6d 0, -15);. Sam
2140: 70 6c 65 28 22 63 22 2c 20 33 2c 20 36 32 30 2c ple("c", 3, 620,
2150: 20 32 29 3b 0a 20 20 20 20 53 61 6d 70 6c 65 28 2);. Sample(
2160: 22 6c 22 2c 20 34 2c 20 34 32 30 2c 20 2d 31 35 "l", 4, 420, -15
2170: 29 3b 0a 0a 20 20 20 20 68 61 6e 64 6c 65 72 73 );.. handlers
2180: 5b 22 31 22 5d 20 3d 20 66 75 6e 63 74 69 6f 6e ["1"] = function
2190: 20 28 76 61 6c 29 20 7b 0a 20 20 20 20 20 20 20 (val) {.
21a0: 20 69 66 20 28 76 61 6c 20 3e 20 30 2e 35 29 20 if (val > 0.5)
21b0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 {. me
21c0: 6d 5b 22 73 74 61 72 74 5f 73 6e 61 72 65 22 5d m["start_snare"]
21d0: 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 = true;.
21e0: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 } else {.
21f0: 20 20 20 20 20 20 6d 65 6d 5b 22 73 74 61 72 74 mem["start
2200: 5f 73 6e 61 72 65 22 5d 20 3d 20 66 61 6c 73 65 _snare"] = false
2210: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }.
2220: 20 20 20 20 6d 65 6d 5b 22 73 74 61 62 5f 66 69 mem["stab_fi
2230: 6c 74 65 72 22 5d 2e 51 2e 76 61 6c 75 65 20 3d lter"].Q.value =
2240: 20 4d 61 74 68 2e 72 6f 75 6e 64 28 76 61 6c 20 Math.round(val
2250: 2a 20 35 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 * 5);. }..
2260: 20 64 69 61 6c 73 5b 31 5d 5b 22 63 65 6c 6c 22 dials[1]["cell"
2270: 5d 2e 6f 6e 43 68 61 6e 67 65 28 66 75 6e 63 74 ].onChange(funct
2280: 69 6f 6e 20 28 65 29 20 7b 0a 20 20 20 20 20 20 ion (e) {.
2290: 20 20 76 61 72 20 76 61 6c 20 3d 20 70 61 72 73 var val = pars
22a0: 65 46 6c 6f 61 74 28 65 5b 22 64 61 74 61 22 5d eFloat(e["data"]
22b0: 2e 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 20 .value);.
22c0: 20 68 61 6e 64 6c 65 72 73 5b 22 31 22 5d 28 76 handlers["1"](v
22d0: 61 6c 29 3b 0a 20 20 20 20 7d 29 0a 0a 7d 0a 0a al);. })..}..
22e0: 66 75 6e 63 74 69 6f 6e 20 74 77 65 61 6b 20 28 function tweak (
22f0: 29 20 7b 0a 20 20 20 20 6d 65 6d 2e 6b 31 20 3d ) {. mem.k1 =
2300: 20 6b 6e 6f 62 28 7b 72 61 6d 70 20 3a 20 5b 30 knob({ramp : [0
2310: 2e 35 32 35 2c 20 30 2e 38 2c 20 30 2e 34 2c 20 .525, 0.8, 0.4,
2320: 31 2c 20 30 2e 32 35 2c 20 30 2e 37 35 2c 20 31 1, 0.25, 0.75, 1
2330: 2c 20 30 2e 32 35 2c 20 30 2e 31 5d 2c 20 22 6e , 0.25, 0.1], "n
2340: 75 6d 62 65 72 22 3a 20 64 69 61 6c 73 5b 32 5d umber": dials[2]
2350: 5b 22 63 65 6c 6c 22 5d 20 7d 29 3b 0a 20 20 20 ["cell"] });.
2360: 20 61 6c 77 61 79 73 20 3d 20 66 75 6e 63 74 69 always = functi
2370: 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 on () {.
2380: 6d 65 6d 5b 22 73 74 61 62 5f 66 69 6c 74 65 72 mem["stab_filter
2390: 22 5d 2e 66 72 65 71 75 65 6e 63 79 2e 76 61 6c "].frequency.val
23a0: 75 65 20 3d 20 6d 65 6d 2e 6b 31 2e 6d 6f 76 65 ue = mem.k1.move
23b0: 28 29 20 2a 20 31 30 30 30 30 3b 0a 20 20 20 20 () * 10000;.
23c0: 7d 0a 7d 0a 0a 69 66 20 28 62 61 72 73 20 3c 3d }.}..if (bars <=
23d0: 20 33 20 29 20 7b 0a 20 20 20 20 74 72 61 6e 73 3 ) {. trans
23e0: 69 74 69 6f 6e 20 3d 20 6f 6e 63 65 3b 0a 7d 20 ition = once;.}
23f0: 65 6c 73 65 20 7b 0a 20 20 20 20 74 72 61 6e 73 else {. trans
2400: 69 74 69 6f 6e 20 3d 20 74 77 65 61 6b 3b 0a 7d ition = tweak;.}
2410: 0a 0a 69 66 20 28 69 73 48 69 74 29 20 7b 0a 20 ..if (isHit) {.
2420: 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 if (track_no
2430: 3d 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 20 20 == 1) {.
2440: 69 66 20 28 62 61 72 73 20 3e 20 30 20 29 20 7b if (bars > 0 ) {
2450: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 28 30 . p(0
2460: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }.
2470: 20 7d 0a 20 20 20 20 69 66 20 28 74 72 61 63 6b }. if (track
2480: 5f 6e 6f 20 3d 3d 20 32 29 20 7b 0a 20 20 20 20 _no == 2) {.
2490: 20 20 20 20 69 66 20 28 62 61 72 73 20 3e 20 38 if (bars > 8
24a0: 20 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 ) {.
24b0: 20 70 28 31 29 3b 0a 20 20 20 20 20 20 20 20 7d p(1);. }
24c0: 20 20 20 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 . }. if
24d0: 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 33 29 (track_no == 3)
24e0: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 62 {. if (b
24f0: 61 72 73 20 3e 20 34 20 29 20 7b 0a 20 20 20 20 ars > 4 ) {.
2500: 20 20 20 20 20 20 20 20 2f 2f 20 73 28 29 3b 0a // s();.
2510: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }.
2520: 20 20 69 66 20 28 62 61 72 73 20 3d 3d 20 36 29 if (bars == 6)
2530: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 {. t
2540: 72 61 6e 73 69 74 69 6f 6e 28 29 3b 0a 20 20 20 ransition();.
2550: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }.
2560: 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d if (track_no ==
2570: 20 34 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 4) {. if
2580: 20 28 6d 65 6d 5b 22 73 74 61 72 74 5f 73 6e 61 (mem["start_sna
2590: 72 65 22 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 re"]) {.
25a0: 20 20 20 20 70 28 32 29 3b 0a 20 20 20 20 20 20 p(2);.
25b0: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 }. }. if
25c0: 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 35 29 (track_no == 5)
25d0: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 62 {. if (b
25e0: 61 72 73 20 3e 20 31 32 29 20 7b 0a 20 20 20 20 ars > 12) {.
25f0: 20 20 20 20 20 20 20 20 70 28 33 29 0a 20 20 20 p(3).
2600: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }.
2610: 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d if (track_no ==
2620: 20 36 29 20 7b 0a 20 20 20 20 20 20 20 2f 2f 20 6) {. //
2630: 70 28 34 2c 20 22 43 33 22 29 0a 20 20 20 20 7d p(4, "C3"). }
2640: 0a 7d 0a 0a 69 66 20 28 63 6f 75 6e 74 20 3d 3d .}..if (count ==
2650: 20 28 6d 65 6d 5b 22 6b 5f 6c 61 73 74 22 5d 20 (mem["k_last"]
2660: 2b 20 33 29 29 20 7b 0a 20 20 20 20 70 6e 28 22 + 3)) {. pn("
2670: 68 22 29 3b 0a 7d 0a 60 60 60 0a 0a 0a 23 23 20 h");.}.```...##
2680: 44 65 6d 6f 20 53 6f 6e 67 20 31 20 2f 2f 20 54 Demo Song 1 // T
2690: 65 63 68 6e 6f 0a 0a 3c 69 66 72 61 6d 65 20 77 echno..<iframe w
26a0: 69 64 74 68 3d 22 35 36 30 22 20 68 65 69 67 68 idth="560" heigh
26b0: 74 3d 22 33 31 35 22 20 73 72 63 3d 22 68 74 74 t="315" src="htt
26c0: 70 73 3a 2f 2f 77 77 77 2e 79 6f 75 74 75 62 65 ps://www.youtube
26d0: 2e 63 6f 6d 2f 65 6d 62 65 64 2f 47 54 66 6d 54 .com/embed/GTfmT
26e0: 4d 72 53 70 61 67 22 20 74 69 74 6c 65 3d 22 59 MrSpag" title="Y
26f0: 6f 75 54 75 62 65 20 76 69 64 65 6f 20 70 6c 61 ouTube video pla
2700: 79 65 72 22 20 66 72 61 6d 65 62 6f 72 64 65 72 yer" frameborder
2710: 3d 22 30 22 20 61 6c 6c 6f 77 3d 22 61 63 63 65 ="0" allow="acce
2720: 6c 65 72 6f 6d 65 74 65 72 3b 20 61 75 74 6f 70 lerometer; autop
2730: 6c 61 79 3b 20 63 6c 69 70 62 6f 61 72 64 2d 77 lay; clipboard-w
2740: 72 69 74 65 3b 20 65 6e 63 72 79 70 74 65 64 2d rite; encrypted-
2750: 6d 65 64 69 61 3b 20 67 79 72 6f 73 63 6f 70 65 media; gyroscope
2760: 3b 20 70 69 63 74 75 72 65 2d 69 6e 2d 70 69 63 ; picture-in-pic
2770: 74 75 72 65 22 20 61 6c 6c 6f 77 66 75 6c 6c 73 ture" allowfulls
2780: 63 72 65 65 6e 3e 3c 2f 69 66 72 61 6d 65 3e 0a creen></iframe>.
2790: 0a 50 6f 73 74 70 72 6f 63 65 73 73 65 64 20 75 .Postprocessed u
27a0: 73 69 6e 67 20 52 65 61 70 65 72 20 77 69 74 68 sing Reaper with
27b0: 20 45 51 20 61 6e 64 20 53 75 72 72 6f 75 6e 64 EQ and Surround
27c0: 20 65 66 66 65 63 74 73 20 74 6f 20 61 64 64 20 effects to add
27d0: 73 6f 6d 65 20 73 70 61 72 6b 6c 65 2e 0a 56 69 some sparkle..Vi
27e0: 64 65 6f 20 69 73 20 72 65 63 6f 72 64 65 64 20 deo is recorded
27f0: 77 69 74 68 20 74 68 65 20 68 65 6c 70 20 6f 66 with the help of
2800: 20 42 6c 61 63 6b 68 6f 6c 65 20 61 6e 64 20 4b Blackhole and K
2810: 61 70 20 61 6e 64 20 72 65 6e 64 65 72 65 64 20 ap and rendered
2820: 62 79 20 52 65 61 70 65 72 2e 0a 0a 53 61 6d 70 by Reaper...Samp
2830: 6c 65 73 20 74 61 6b 65 6e 20 66 72 6f 6d 20 44 les taken from D
2840: 65 65 70 20 54 65 63 68 6e 6f 20 61 6e 64 20 44 eep Techno and D
2850: 75 62 20 54 65 63 68 6e 6f 20 63 6f 6c 6c 65 63 ub Techno collec
2860: 74 69 6f 6e 73 20 66 72 6f 6d 20 73 70 6c 69 63 tions from splic
2870: 65 2e 20 53 61 64 6c 79 20 49 20 63 61 6e 27 74 e. Sadly I can't
2880: 20 64 69 73 74 72 69 62 75 74 65 20 74 68 65 20 distribute the
2890: 73 6f 6e 67 20 69 74 73 65 6c 66 20 61 73 20 49 song itself as I
28a0: 20 77 6f 75 6c 64 20 61 6c 73 6f 20 68 61 76 65 would also have
28b0: 20 74 6f 20 64 69 73 74 72 69 62 75 74 65 20 74 to distribute t
28c0: 68 65 20 73 61 6d 70 6c 65 73 20 77 69 74 68 20 he samples with
28d0: 69 74 2e 20 20 0a 0a 43 6f 64 65 20 66 6f 72 20 it. ..Code for
28e0: 74 68 65 20 44 65 6d 6f 20 53 6f 6e 67 2e 20 54 the Demo Song. T
28f0: 68 65 20 76 69 73 75 61 6c 69 73 61 74 69 6f 6e he visualisation
2900: 20 77 61 73 20 64 69 73 61 62 6c 65 64 20 69 6e was disabled in
2910: 20 74 68 65 20 44 65 6d 6f 20 61 73 20 69 74 20 the Demo as it
2920: 77 61 73 20 63 61 75 73 69 6e 67 20 61 20 68 75 was causing a hu
2930: 67 65 20 6c 61 67 20 77 68 69 6c 65 20 72 65 63 ge lag while rec
2940: 6f 72 64 69 6e 67 20 6f 6e 20 62 6f 74 68 20 77 ording on both w
2950: 69 6e 64 6f 77 73 20 61 6e 64 20 6d 61 63 2e 0a indows and mac..
2960: 0a 4e 6f 74 65 3a 20 43 6f 75 6c 64 20 63 6f 75 .Note: Could cou
2970: 6c 64 20 62 65 20 6f 75 74 64 61 74 65 64 20 64 ld be outdated d
2980: 75 65 20 74 6f 20 6c 61 74 65 73 74 20 63 68 61 ue to latest cha
2990: 6e 67 65 73 20 74 6f 20 74 68 65 20 41 50 49 2e nges to the API.
29a0: 0a 0a 60 60 60 0a 76 6f 6c 75 6d 65 5f 67 75 61 ..```.volume_gua
29b0: 72 64 31 20 3d 20 67 75 61 72 64 28 5b 2d 32 30 rd1 = guard([-20
29c0: 2c 31 35 5d 29 0a 76 6f 6c 75 6d 65 5f 67 75 61 ,15]).volume_gua
29d0: 72 64 32 20 3d 20 67 75 61 72 64 28 5b 2d 32 30 rd2 = guard([-20
29e0: 2c 31 35 5d 29 0a 54 6f 6e 65 2e 4d 61 73 74 65 ,15]).Tone.Maste
29f0: 72 2e 76 6f 6c 75 6d 65 2e 76 61 6c 75 65 20 3d r.volume.value =
2a00: 20 76 6f 6c 75 6d 65 5f 67 75 61 72 64 31 28 4d volume_guard1(M
2a10: 61 74 68 2e 72 6f 75 6e 64 28 64 69 61 6c 73 5b ath.round(dials[
2a20: 30 5d 5b 22 63 65 6c 6c 22 5d 28 29 20 2a 20 33 0]["cell"]() * 3
2a30: 30 29 20 2d 32 30 29 3b 0a 20 2f 2f 6d 65 6d 5b 0) -20);. //mem[
2a40: 22 73 74 61 62 5f 63 68 61 6e 6e 65 6c 22 5d 2e "stab_channel"].
2a50: 76 6f 6c 75 6d 65 2e 76 61 6c 75 65 20 3d 20 76 volume.value = v
2a60: 6f 6c 75 6d 65 5f 67 75 61 72 64 32 28 2d 32 29 olume_guard2(-2)
2a70: 3b 0a 20 2f 2f 6d 65 6d 5b 22 73 74 61 62 5f 66 ;. //mem["stab_f
2a80: 69 6c 74 65 72 22 5d 2e 66 72 65 71 75 65 6e 63 ilter"].frequenc
2a90: 79 2e 76 61 6c 75 65 20 3d 20 4d 61 74 68 2e 72 y.value = Math.r
2aa0: 6f 75 6e 64 28 64 69 61 6c 73 5b 31 5d 5b 22 63 ound(dials[1]["c
2ab0: 65 6c 6c 22 5d 28 29 20 2a 20 31 30 30 30 30 29 ell"]() * 10000)
2ac0: 3b 0a 2f 2f 6d 65 6d 5b 22 6c 5f 66 69 6c 74 65 ;.//mem["l_filte
2ad0: 72 22 5d 2e 66 72 65 71 75 65 6e 63 79 2e 76 61 r"].frequency.va
2ae0: 6c 75 65 20 3d 20 4d 61 74 68 2e 72 6f 75 6e 64 lue = Math.round
2af0: 28 64 69 61 6c 73 5b 31 5d 5b 22 63 65 6c 6c 22 (dials[1]["cell"
2b00: 5d 28 29 20 2a 20 31 30 30 30 29 3b 0a 0a 0a 73 ]() * 1000);...s
2b10: 63 65 6e 65 31 20 3d 20 5b 0a 20 20 20 20 63 65 cene1 = [. ce
2b20: 6c 6c 78 28 22 70 20 31 30 30 30 20 31 30 30 30 llx("p 1000 1000
2b30: 20 31 30 30 30 20 31 30 30 30 22 29 2c 0a 20 20 1000 1000"),.
2b40: 20 20 63 65 6c 6c 78 28 22 70 20 78 30 30 30 20 cellx("p x000
2b50: 30 30 30 30 20 30 30 30 30 20 30 30 30 30 22 29 0000 0000 0000")
2b60: 2c 0a 20 20 20 20 63 65 6c 6c 78 28 22 70 20 30 ,. cellx("p 0
2b70: 78 30 30 20 30 30 30 30 20 30 78 30 30 20 78 30 x00 0000 0x00 x0
2b80: 30 30 22 29 2c 0a 20 20 20 20 63 65 6c 6c 78 28 00"),. cellx(
2b90: 22 70 20 30 30 30 30 20 78 30 30 30 20 30 30 30 "p 0000 x000 000
2ba0: 30 20 78 30 30 30 22 29 2c 0a 20 20 20 20 63 65 0 x000"),. ce
2bb0: 6c 6c 78 28 22 70 20 78 30 30 30 20 30 30 78 30 llx("p x000 00x0
2bc0: 20 30 78 30 30 20 78 30 78 78 22 29 2c 0a 20 20 0x00 x0xx"),.
2bd0: 20 20 63 65 6c 6c 78 28 22 70 20 30 30 78 30 20 cellx("p 00x0
2be0: 30 30 78 30 20 30 30 30 30 20 30 30 78 30 22 29 00x0 0000 00x0")
2bf0: 2c 0a 20 20 20 20 63 65 6c 6c 78 28 22 70 20 30 ,. cellx("p 0
2c00: 30 78 30 20 30 30 78 30 20 30 30 78 30 20 30 30 0x0 00x0 00x0 00
2c10: 78 30 22 29 2c 0a 5d 0a 0a 70 61 74 74 65 72 6e x0"),.]..pattern
2c20: 73 20 3d 20 73 63 65 6e 65 31 0a 0a 61 6c 77 61 s = scene1..alwa
2c30: 79 73 28 29 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 ys();..function
2c40: 53 61 6d 70 6c 65 28 6e 61 6d 65 2c 20 6e 6f 2c Sample(name, no,
2c50: 20 66 69 6c 74 65 72 2c 20 76 6f 6c 75 6d 65 29 filter, volume)
2c60: 20 7b 0a 20 20 20 20 6e 61 6d 65 20 3d 20 6e 61 {. name = na
2c70: 6d 65 0a 20 20 20 20 66 69 6c 74 65 72 20 3d 20 me. filter =
2c80: 66 69 6c 74 65 72 20 7c 7c 20 31 30 30 30 30 0a filter || 10000.
2c90: 20 20 20 20 76 6f 6c 75 6d 65 20 3d 20 76 6f 6c volume = vol
2ca0: 75 6d 65 20 7c 7c 20 30 0a 20 20 20 20 6d 65 6d ume || 0. mem
2cb0: 5b 6e 61 6d 65 20 2b 20 22 5f 66 69 6c 74 65 72 [name + "_filter
2cc0: 22 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 46 69 "] = new Tone.Fi
2cd0: 6c 74 65 72 28 66 69 6c 74 65 72 2c 20 27 6c 6f lter(filter, 'lo
2ce0: 77 70 61 73 73 27 2c 20 2d 39 36 29 3b 0a 20 20 wpass', -96);.
2cf0: 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 63 mem[name + "_c
2d00: 68 61 6e 6e 65 6c 22 5d 20 3d 20 6e 65 77 20 54 hannel"] = new T
2d10: 6f 6e 65 2e 43 68 61 6e 6e 65 6c 28 7b 63 68 61 one.Channel({cha
2d20: 6e 6e 65 6c 43 6f 75 6e 74 3a 20 32 2c 20 76 6f nnelCount: 2, vo
2d30: 6c 75 6d 65 3a 20 76 6f 6c 75 6d 65 7d 29 2e 63 lume: volume}).c
2d40: 68 61 69 6e 28 6d 65 6d 5b 6e 61 6d 65 20 2b 20 hain(mem[name +
2d50: 22 5f 66 69 6c 74 65 72 22 5d 2c 20 6d 65 6d 2e "_filter"], mem.
2d60: 6d 61 73 74 65 72 29 0a 20 20 20 20 73 61 6d 70 master). samp
2d70: 6c 65 73 5b 6e 6f 5d 2e 63 6f 6e 6e 65 63 74 28 les[no].connect(
2d80: 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 63 68 61 mem[name + "_cha
2d90: 6e 6e 65 6c 22 5d 29 3b 0a 7d 0a 0a 66 75 6e 63 nnel"]);.}..func
2da0: 74 69 6f 6e 20 70 28 73 2c 20 6e 6f 74 65 2c 20 tion p(s, note,
2db0: 6c 65 6e 29 20 7b 0a 20 20 20 20 6e 6f 74 65 20 len) {. note
2dc0: 3d 20 6e 6f 74 65 20 7c 7c 20 22 43 33 22 0a 20 = note || "C3".
2dd0: 20 20 20 6c 65 6e 20 3d 20 6c 65 6e 20 7c 7c 20 len = len ||
2de0: 22 31 36 6e 22 0a 20 20 20 20 73 61 6d 70 6c 65 "16n". sample
2df0: 73 5b 73 5d 2e 74 72 69 67 67 65 72 41 74 74 61 s[s].triggerAtta
2e00: 63 6b 52 65 6c 65 61 73 65 28 6e 6f 74 65 2c 20 ckRelease(note,
2e10: 6c 65 6e 2c 20 75 6e 64 65 66 69 6e 65 64 29 3b len, undefined);
2e20: 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 6f 6e 63 .}..function onc
2e30: 65 20 28 29 20 7b 0a 20 20 20 20 0a 09 76 61 72 e () {. ..var
2e40: 20 76 69 73 20 3d 20 69 6e 69 74 57 69 6e 61 6d vis = initWinam
2e50: 70 28 22 43 6f 70 65 20 2d 20 54 68 65 20 4e 65 p("Cope - The Ne
2e60: 76 65 72 65 6e 64 69 6e 67 20 45 78 70 6c 6f 73 verending Explos
2e70: 69 6f 6e 20 6f 66 20 52 65 64 20 4c 69 71 75 69 ion of Red Liqui
2e80: 64 20 46 69 72 65 22 29 3b 0a 20 20 20 20 72 65 d Fire");. re
2e90: 6e 64 65 72 5f 6c 6f 6f 70 20 3d 20 66 75 6e 63 nder_loop = func
2ea0: 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 tion () {.
2eb0: 20 76 69 73 2e 72 65 6e 64 65 72 28 29 3b 0a 20 vis.render();.
2ec0: 20 20 20 7d 0a 0a 20 20 20 20 54 6f 6e 65 2e 4d }.. Tone.M
2ed0: 61 73 74 65 72 2e 76 6f 6c 75 6d 65 2e 76 61 6c aster.volume.val
2ee0: 75 65 20 3d 20 2d 33 30 0a 20 20 20 20 6d 65 6d ue = -30. mem
2ef0: 2e 6d 61 73 74 65 72 20 3d 20 6e 65 77 20 54 6f .master = new To
2f00: 6e 65 2e 43 68 61 6e 6e 65 6c 28 7b 63 68 61 6e ne.Channel({chan
2f10: 6e 65 6c 43 6f 75 6e 74 3a 20 32 2c 20 76 6f 6c nelCount: 2, vol
2f20: 75 6d 65 3a 20 2d 31 30 7d 29 2e 63 68 61 69 6e ume: -10}).chain
2f30: 28 54 6f 6e 65 2e 44 65 73 74 69 6e 61 74 69 6f (Tone.Destinatio
2f40: 6e 29 3b 0a 0a 20 20 20 20 53 61 6d 70 6c 65 28 n);.. Sample(
2f50: 22 6b 22 2c 20 30 2c 20 32 30 30 30 30 2c 20 35 "k", 0, 20000, 5
2f60: 29 3b 0a 20 20 20 20 53 61 6d 70 6c 65 28 22 68 );. Sample("h
2f70: 22 2c 20 31 2c 20 32 30 30 30 30 2c 20 2d 35 29 ", 1, 20000, -5)
2f80: 3b 0a 20 20 20 20 53 61 6d 70 6c 65 28 22 73 6e ;. Sample("sn
2f90: 22 2c 32 2c 20 36 30 30 30 2c 20 2d 33 29 3b 0a ",2, 6000, -3);.
2fa0: 20 20 20 20 53 61 6d 70 6c 65 28 22 63 22 2c 20 Sample("c",
2fb0: 33 2c 20 31 32 30 30 2c 20 2d 31 30 29 3b 0a 20 3, 1200, -10);.
2fc0: 20 20 20 53 61 6d 70 6c 65 28 22 73 74 61 62 22 Sample("stab"
2fd0: 2c 20 34 2c 20 34 32 30 2c 20 31 30 29 3b 0a 20 , 4, 420, 10);.
2fe0: 20 20 20 53 61 6d 70 6c 65 28 22 6c 22 2c 20 35 Sample("l", 5
2ff0: 2c 20 32 30 30 30 30 2c 20 38 29 3b 0a 20 20 20 , 20000, 8);.
3000: 20 53 61 6d 70 6c 65 28 22 6f 22 2c 20 36 2c 20 Sample("o", 6,
3010: 32 30 30 30 30 2c 20 2d 38 29 3b 0a 0a 0a 20 20 20000, -8);...
3020: 20 20 68 61 6e 64 6c 65 72 73 5b 22 31 22 5d 20 handlers["1"]
3030: 3d 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 29 = function (val)
3040: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 {. if (v
3050: 61 6c 20 3e 20 30 2e 35 29 20 7b 0a 20 20 20 20 al > 0.5) {.
3060: 20 20 20 20 20 20 20 20 6d 65 6d 5b 22 73 74 61 mem["sta
3070: 72 74 5f 73 6e 61 72 65 22 5d 20 3d 20 74 72 75 rt_snare"] = tru
3080: 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 e;. }.
3090: 20 7d 0a 0a 20 20 20 20 64 69 61 6c 73 5b 31 5d }.. dials[1]
30a0: 5b 22 63 65 6c 6c 22 5d 2e 6f 6e 43 68 61 6e 67 ["cell"].onChang
30b0: 65 28 66 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b e(function (e) {
30c0: 0a 20 20 20 20 20 20 20 20 76 61 72 20 76 61 6c . var val
30d0: 20 3d 20 70 61 72 73 65 46 6c 6f 61 74 28 65 5b = parseFloat(e[
30e0: 22 64 61 74 61 22 5d 2e 76 61 6c 75 65 29 3b 0a "data"].value);.
30f0: 20 20 20 20 20 20 20 20 68 61 6e 64 6c 65 72 73 handlers
3100: 5b 22 31 22 5d 28 76 61 6c 29 3b 0a 20 20 20 20 ["1"](val);.
3110: 7d 29 0a 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e 20 })..}..function
3120: 74 77 65 61 6b 20 28 29 20 7b 0a 09 6d 65 6d 2e tweak () {..mem.
3130: 6b 31 20 3d 20 6b 6e 6f 62 28 7b 69 6e 69 74 69 k1 = knob({initi
3140: 61 6c 20 3a 20 30 2e 34 32 2c 20 72 61 6d 70 20 al : 0.42, ramp
3150: 3a 20 5b 30 2e 34 32 2c 20 30 2e 35 32 35 2c 20 : [0.42, 0.525,
3160: 30 2e 38 2c 20 30 2e 34 2c 20 31 2c 20 30 2e 36 0.8, 0.4, 1, 0.6
3170: 35 2c 20 30 2e 37 35 2c 20 31 2c 20 30 2e 38 5d 5, 0.75, 1, 0.8]
3180: 2c 20 22 6e 75 6d 62 65 72 22 3a 20 64 69 61 6c , "number": dial
3190: 73 5b 32 5d 5b 22 63 65 6c 6c 22 5d 20 7d 29 3b s[2]["cell"] });
31a0: 0a 20 20 20 20 61 6c 77 61 79 73 20 3d 20 66 75 . always = fu
31b0: 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 nction () {.
31c0: 20 20 20 20 6d 65 6d 5b 22 73 74 61 62 5f 66 69 mem["stab_fi
31d0: 6c 74 65 72 22 5d 2e 66 72 65 71 75 65 6e 63 79 lter"].frequency
31e0: 2e 76 61 6c 75 65 20 3d 20 6d 65 6d 2e 6b 31 2e .value = mem.k1.
31f0: 6d 6f 76 65 28 29 20 2a 20 31 30 30 30 3b 0a 20 move() * 1000;.
3200: 20 20 20 7d 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e }.}..function
3210: 20 73 61 6d 70 6c 65 54 65 73 74 20 28 29 20 7b sampleTest () {
3220: 0a 20 20 20 20 53 61 6d 70 6c 65 28 22 6c 22 2c . Sample("l",
3230: 20 34 2c 20 31 30 30 30 30 2c 20 2d 35 29 3b 0a 4, 10000, -5);.
3240: 0a 7d 0a 0a 69 66 20 28 62 61 72 73 20 3c 3d 20 .}..if (bars <=
3250: 33 20 29 20 7b 0a 09 74 72 61 6e 73 69 74 69 6f 3 ) {..transitio
3260: 6e 20 3d 20 6f 6e 63 65 3b 0a 7d 20 65 6c 73 65 n = once;.} else
3270: 20 7b 0a 09 74 72 61 6e 73 69 74 69 6f 6e 20 3d {..transition =
3280: 20 74 77 65 61 6b 3b 0a 7d 0a 0a 69 66 20 28 69 tweak;.}..if (i
3290: 73 48 69 74 29 20 7b 0a 20 20 20 20 69 66 20 28 sHit) {. if (
32a0: 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 31 29 20 7b track_no == 1) {
32b0: 0a 20 20 20 09 09 20 69 66 20 28 62 61 72 73 20 . .. if (bars
32c0: 3e 20 34 20 29 20 7b 0a 20 20 20 20 20 20 20 09 > 4 ) {. .
32d0: 09 20 70 28 30 29 3b 0a 20 20 20 20 20 20 20 20 . p(0);.
32e0: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 }. }. if (
32f0: 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 32 29 20 7b track_no == 2) {
3300: 0a 20 20 20 20 20 20 20 20 69 66 20 28 62 61 72 . if (bar
3310: 73 20 3e 20 38 20 29 20 7b 0a 20 20 20 20 20 20 s > 8 ) {.
3320: 20 09 20 09 70 28 31 2c 20 20 22 43 33 22 2c 20 . .p(1, "C3",
3330: 22 31 6e 22 29 3b 0a 20 20 20 20 20 20 20 20 7d "1n");. }
3340: 09 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 .. }. if (
3350: 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 33 29 20 7b track_no == 3) {
3360: 0a 20 20 20 20 20 20 20 20 69 66 20 28 62 61 72 . if (bar
3370: 73 20 3e 20 30 20 29 20 7b 0a 20 20 20 20 09 09 s > 0 ) {. ..
3380: 70 28 34 2c 20 22 43 33 22 2c 20 22 31 6e 22 29 p(4, "C3", "1n")
3390: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }.
33a0: 20 20 20 20 69 66 20 28 62 61 72 73 20 3d 3d 20 if (bars ==
33b0: 31 35 29 20 7b 0a 20 20 20 20 20 20 20 20 09 74 15) {. .t
33c0: 72 61 6e 73 69 74 69 6f 6e 28 29 3b 0a 20 20 20 ransition();.
33d0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }.
33e0: 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d if (track_no ==
33f0: 20 34 29 20 7b 0a 09 09 20 20 69 66 28 20 6d 65 4) {... if( me
3400: 6d 5b 22 73 74 61 72 74 5f 73 6e 61 72 65 22 5d m["start_snare"]
3410: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 70 ) {. p
3420: 28 32 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 (2);. }.
3430: 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 74 . }. if (t
3440: 72 61 63 6b 5f 6e 6f 20 3d 3d 20 35 29 20 7b 0a rack_no == 5) {.
3450: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 74 72 }. if (tr
3460: 61 63 6b 5f 6e 6f 20 3d 3d 20 36 29 20 7b 0a 20 ack_no == 6) {.
3470: 20 20 20 20 20 20 69 66 20 28 62 61 72 73 20 3e if (bars >
3480: 20 31 32 29 20 7b 0a 09 20 20 20 20 20 20 20 70 12) {.. p
3490: 28 35 2c 20 22 46 32 22 2c 20 22 31 36 6e 22 29 (5, "F2", "16n")
34a0: 0a 20 20 20 20 20 20 20 7d 20 0a 20 20 20 20 7d . } . }
34b0: 0a 09 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d ..if (track_no =
34c0: 3d 20 37 29 20 7b 0a 20 20 20 20 20 20 20 69 66 = 7) {. if
34d0: 20 28 62 61 72 73 20 3e 20 34 38 29 20 7b 0a 0a (bars > 48) {..
34e0: 20 20 20 20 20 09 09 70 28 36 2c 20 22 43 33 22 ..p(6, "C3"
34f0: 2c 20 22 34 38 6e 22 29 0a 20 20 20 20 20 20 20 , "48n").
3500: 7d 0a 20 20 20 20 7d 0a 0a 7d 0a 60 60 60 0a 0a }. }..}.```..
3510: 23 23 20 44 65 6d 6f 20 53 6f 6e 67 20 32 20 2f ## Demo Song 2 /
3520: 2f 20 55 4b 20 48 69 70 20 48 6f 70 0a 0a 3c 69 / UK Hip Hop..<i
3530: 66 72 61 6d 65 20 77 69 64 74 68 3d 22 35 36 30 frame width="560
3540: 22 20 68 65 69 67 68 74 3d 22 33 31 35 22 20 73 " height="315" s
3550: 72 63 3d 22 68 74 74 70 73 3a 2f 2f 77 77 77 2e rc="https://www.
3560: 79 6f 75 74 75 62 65 2e 63 6f 6d 2f 65 6d 62 65 youtube.com/embe
3570: 64 2f 39 65 61 41 42 67 4a 4a 6c 55 6f 22 20 74 d/9eaABgJJlUo" t
3580: 69 74 6c 65 3d 22 59 6f 75 54 75 62 65 20 76 69 itle="YouTube vi
3590: 64 65 6f 20 70 6c 61 79 65 72 22 20 66 72 61 6d deo player" fram
35a0: 65 62 6f 72 64 65 72 3d 22 30 22 20 61 6c 6c 6f eborder="0" allo
35b0: 77 3d 22 61 63 63 65 6c 65 72 6f 6d 65 74 65 72 w="accelerometer
35c0: 3b 20 61 75 74 6f 70 6c 61 79 3b 20 63 6c 69 70 ; autoplay; clip
35d0: 62 6f 61 72 64 2d 77 72 69 74 65 3b 20 65 6e 63 board-write; enc
35e0: 72 79 70 74 65 64 2d 6d 65 64 69 61 3b 20 67 79 rypted-media; gy
35f0: 72 6f 73 63 6f 70 65 3b 20 70 69 63 74 75 72 65 roscope; picture
3600: 2d 69 6e 2d 70 69 63 74 75 72 65 22 20 61 6c 6c -in-picture" all
3610: 6f 77 66 75 6c 6c 73 63 72 65 65 6e 3e 3c 2f 69 owfullscreen></i
3620: 66 72 61 6d 65 3e 0a 0a 60 60 60 6a 73 0a 76 6f frame>..```js.vo
3630: 6c 75 6d 65 5f 67 75 61 72 64 31 20 3d 20 67 75 lume_guard1 = gu
3640: 61 72 64 28 5b 2d 32 30 2c 31 35 5d 29 0a 54 6f ard([-20,15]).To
3650: 6e 65 2e 4d 61 73 74 65 72 2e 76 6f 6c 75 6d 65 ne.Master.volume
3660: 2e 76 61 6c 75 65 20 3d 20 76 6f 6c 75 6d 65 5f .value = volume_
3670: 67 75 61 72 64 31 28 4d 61 74 68 2e 72 6f 75 6e guard1(Math.roun
3680: 64 28 64 69 61 6c 73 5b 30 5d 5b 22 63 65 6c 6c d(dials[0]["cell
3690: 22 5d 28 29 20 2a 20 33 30 29 20 2d 32 30 29 3b "]() * 30) -20);
36a0: 0a 0a 69 6e 74 72 6f 20 3d 20 5b 0a 20 20 20 63 ..intro = [. c
36b0: 65 6c 6c 78 28 22 70 20 78 30 30 30 20 30 30 30 ellx("p x000 000
36c0: 30 20 30 30 30 30 20 30 30 30 30 20 22 29 2c 0a 0 0000 0000 "),.
36d0: 5d 0a 0a 6d 61 69 6e 20 3d 20 5b 0a 20 20 20 20 ]..main = [.
36e0: 63 65 6c 6c 78 28 22 70 20 78 5b 32 3b 5e 43 32 cellx("p x[2;^C2
36f0: 3b 2b 30 2e 30 31 5d 30 30 30 20 30 30 30 30 20 ;+0.01]000 0000
3700: 78 5b 30 2e 31 5d 30 78 5b 31 5d 30 20 30 30 78 x[0.1]0x[1]0 00x
3710: 5b 31 5d 30 20 22 29 2c 0a 20 20 20 20 63 65 6c [1]0 "),. cel
3720: 6c 78 28 22 70 20 30 30 30 30 20 78 30 30 30 20 lx("p 0000 x000
3730: 30 30 30 30 20 78 30 30 30 20 22 29 2c 0a 20 20 0000 x000 "),.
3740: 20 20 63 65 6c 6c 78 28 22 70 20 78 30 78 30 20 cellx("p x0x0
3750: 78 30 78 30 20 78 30 78 30 20 78 30 78 30 20 22 x0x0 x0x0 x0x0 "
3760: 29 2c 0a 20 20 20 20 63 65 6c 6c 78 28 22 70 20 ),. cellx("p
3770: 78 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30 x000 0000 0000 0
3780: 30 30 30 20 22 29 2c 0a 20 20 20 20 63 65 6c 6c 000 "),. cell
3790: 78 28 22 70 20 30 30 30 30 20 30 30 30 30 20 30 x("p 0000 0000 0
37a0: 30 30 30 20 30 30 30 30 22 29 2c 0a 20 20 20 20 000 0000"),.
37b0: 63 65 6c 6c 78 28 22 70 20 30 30 30 30 20 30 30 cellx("p 0000 00
37c0: 30 30 20 30 30 30 30 20 30 30 30 30 22 29 2c 0a 00 0000 0000"),.
37d0: 5d 0a 0a 62 61 73 73 20 3d 20 5b 0a 20 20 20 20 ]..bass = [.
37e0: 63 65 6c 6c 78 28 22 70 20 78 5b 32 3b 5e 43 32 cellx("p x[2;^C2
37f0: 3b 2b 30 2e 30 31 5d 30 30 30 20 30 30 30 30 20 ;+0.01]000 0000
3800: 78 5b 30 2e 31 5d 30 78 5b 31 5d 30 20 30 30 78 x[0.1]0x[1]0 00x
3810: 5b 31 5d 30 20 22 29 2c 0a 20 20 20 20 63 65 6c [1]0 "),. cel
3820: 6c 78 28 22 70 20 30 30 30 30 20 78 30 30 30 20 lx("p 0000 x000
3830: 30 30 30 30 20 78 30 30 30 20 22 29 2c 0a 20 20 0000 x000 "),.
3840: 20 20 63 65 6c 6c 78 28 22 70 20 78 30 78 30 20 cellx("p x0x0
3850: 78 30 78 30 20 78 30 78 30 20 78 30 78 30 20 22 x0x0 x0x0 x0x0 "
3860: 29 2c 0a 20 20 20 20 63 65 6c 6c 78 28 22 70 20 ),. cellx("p
3870: 78 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30 x000 0000 0000 0
3880: 30 30 30 20 22 29 2c 0a 20 20 20 20 63 65 6c 6c 000 "),. cell
3890: 78 28 22 70 20 78 5b 5e 42 32 5d 78 2e 30 30 20 x("p x[^B2]x.00
38a0: 78 5b 5e 42 32 5d 78 2e 78 5b 5e 42 32 5d 78 2e x[^B2]x.x[^B2]x.
38b0: 20 78 5b 5e 42 32 5d 78 2e 78 5b 5e 42 32 5d 78 x[^B2]x.x[^B2]x
38c0: 2e 78 5b 5e 42 32 5d 78 2e 30 20 22 29 2c 0a 20 .x[^B2]x.0 "),.
38d0: 20 20 20 63 65 6c 6c 78 28 22 70 20 30 30 78 5b cellx("p 00x[
38e0: 5e 44 33 5d 30 20 30 30 30 78 5b 5e 41 32 5d 20 ^D3]0 000x[^A2]
38f0: 30 30 78 5b 5e 41 32 5d 78 5b 5e 41 32 5d 20 30 00x[^A2]x[^A2] 0
3900: 78 5b 5e 41 32 5d 30 78 5b 5e 41 32 5d 20 22 29 x[^A2]0x[^A2] ")
3910: 2c 20 0a 5d 0a 0a 65 6e 64 20 3d 20 5b 0a 20 20 , .]..end = [.
3920: 20 20 63 65 6c 6c 78 28 22 70 20 78 5b 32 3b 5e cellx("p x[2;^
3930: 43 32 3b 2b 30 2e 30 31 5d 30 30 30 20 30 30 30 C2;+0.01]000 000
3940: 30 20 78 5b 30 2e 31 5d 30 78 5b 31 5d 30 20 30 0 x[0.1]0x[1]0 0
3950: 30 78 5b 31 5d 30 20 22 29 2c 0a 20 20 20 20 63 0x[1]0 "),. c
3960: 65 6c 6c 78 28 22 70 20 30 30 30 30 20 78 30 30 ellx("p 0000 x00
3970: 30 20 30 30 30 30 20 78 30 30 30 20 22 29 2c 0a 0 0000 x000 "),.
3980: 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78 31 30 cellx("p x10
3990: 78 30 20 78 30 78 30 20 78 30 78 30 20 78 30 78 x0 x0x0 x0x0 x0x
39a0: 30 20 22 29 2c 0a 5d 0a 0a 73 6f 6c 6f 20 3d 20 0 "),.]..solo =
39b0: 5b 0a 20 20 20 20 63 65 6c 6c 78 28 22 70 20 30 [. cellx("p 0
39c0: 30 30 30 20 30 30 30 30 20 30 30 30 30 20 30 30 000 0000 0000 00
39d0: 30 30 22 29 2c 0a 20 20 20 20 63 65 6c 6c 78 28 00"),. cellx(
39e0: 22 70 20 30 30 30 30 20 30 30 30 30 20 30 30 30 "p 0000 0000 000
39f0: 30 20 30 30 30 30 22 29 2c 0a 20 20 20 20 63 65 0 0000"),. ce
3a00: 6c 6c 78 28 22 70 20 30 30 30 30 20 30 30 30 30 llx("p 0000 0000
3a10: 20 30 30 30 30 20 30 30 30 30 22 29 2c 0a 5d 0a 0000 0000"),.].
3a20: 0a 66 69 6e 20 3d 20 73 6f 6c 6f 3b 0a 0a 65 6e .fin = solo;..en
3a30: 64 67 61 6d 65 20 3d 20 5b 0a 20 20 20 20 63 65 dgame = [. ce
3a40: 6c 6c 78 28 22 70 20 78 5b 32 3b 5e 43 32 3b 2b llx("p x[2;^C2;+
3a50: 30 2e 30 31 5d 30 30 30 20 30 30 30 30 20 78 5b 0.01]000 0000 x[
3a60: 30 2e 31 5d 30 78 5b 31 5d 30 20 30 30 78 5b 31 0.1]0x[1]0 00x[1
3a70: 5d 30 20 22 29 2c 0a 20 20 20 20 63 65 6c 6c 78 ]0 "),. cellx
3a80: 28 22 70 20 30 30 30 30 20 78 30 30 30 20 30 30 ("p 0000 x000 00
3a90: 30 30 20 78 30 30 30 20 22 29 2c 0a 20 20 20 20 00 x000 "),.
3aa0: 63 65 6c 6c 78 28 22 70 20 78 30 78 30 20 78 30 cellx("p x0x0 x0
3ab0: 78 30 20 78 30 78 30 20 78 30 78 30 20 22 29 2c x0 x0x0 x0x0 "),
3ac0: 0a 20 20 20 20 63 65 6c 6c 78 28 22 70 20 78 30 . cellx("p x0
3ad0: 30 30 20 30 30 30 30 20 30 30 30 30 20 30 30 30 00 0000 0000 000
3ae0: 30 20 22 29 2c 0a 20 20 20 20 63 65 6c 6c 78 28 0 "),. cellx(
3af0: 22 70 20 78 5b 5e 42 32 5d 78 2e 30 30 20 78 5b "p x[^B2]x.00 x[
3b00: 5e 42 32 5d 78 2e 78 5b 5e 42 32 5d 78 2e 20 78 ^B2]x.x[^B2]x. x
3b10: 5b 5e 42 32 5d 78 2e 78 5b 5e 42 32 5d 78 2e 78 [^B2]x.x[^B2]x.x
3b20: 5b 5e 42 32 5d 78 2e 30 20 22 29 2c 0a 5d 0a 0a [^B2]x.0 "),.]..
3b30: 0a 0a 0a 65 6d 70 74 79 20 3d 20 63 65 6c 6c 78 ...empty = cellx
3b40: 28 22 70 20 30 30 30 30 20 30 30 30 30 20 30 30 ("p 0000 0000 00
3b50: 30 30 20 30 30 30 30 22 29 0a 0a 0a 66 75 6e 63 00 0000")...func
3b60: 74 69 6f 6e 20 6f 6e 63 65 20 28 29 20 7b 0a 20 tion once () {.
3b70: 0a 20 20 20 20 0a 20 20 20 20 20 20 20 20 63 6f . . co
3b80: 6e 73 74 20 73 65 74 75 70 20 3d 20 28 20 69 6e nst setup = ( in
3b90: 73 74 61 6e 63 65 20 29 20 3d 3e 20 7b 0a 20 20 stance ) => {.
3ba0: 20 20 20 20 20 20 76 61 72 20 69 6e 74 72 6f 20 var intro
3bb0: 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 76 61 72 = []. var
3bc0: 20 6d 61 69 6e 20 3d 20 5b 5d 0a 20 20 20 20 20 main = [].
3bd0: 20 20 20 76 61 72 20 62 61 73 73 20 3d 20 6d 61 var bass = ma
3be0: 69 6e 0a 20 20 20 20 20 20 20 20 76 61 72 20 65 in. var e
3bf0: 6e 64 20 3d 20 5b 5d 20 0a 20 20 20 20 20 20 20 nd = [] .
3c00: 20 76 61 72 20 73 6f 6c 6f 20 3d 20 65 6e 64 0a var solo = end.
3c10: 20 20 20 20 20 20 20 20 76 61 72 20 66 69 6e 20 var fin
3c20: 3d 20 65 6e 64 0a 20 20 20 20 20 20 20 0a 20 20 = end. .
3c30: 20 20 20 20 20 76 61 72 20 63 6f 75 6e 74 20 3d var count =
3c40: 20 30 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 0;. var
3c50: 6f 6c 64 5f 73 63 65 6e 65 20 3d 20 22 22 3b 0a old_scene = "";.
3c60: 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 .
3c70: 20 0a 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78 .. let x
3c80: 20 3d 20 31 30 30 3b 0a 20 20 20 20 20 20 20 20 = 100;.
3c90: 6c 65 74 20 79 20 3d 20 31 30 30 3b 0a 0a 20 20 let y = 100;..
3ca0: 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 2e 73 instance.s
3cb0: 65 74 75 70 20 3d 20 66 75 6e 63 74 69 6f 6e 28 etup = function(
3cc0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {.
3cd0: 76 61 72 20 78 20 3d 20 69 6e 73 74 61 6e 63 65 var x = instance
3ce0: 2e 63 72 65 61 74 65 43 61 6e 76 61 73 28 31 32 .createCanvas(12
3cf0: 38 30 2c 20 34 31 30 29 3b 0a 20 20 20 20 20 20 80, 410);.
3d00: 20 20 20 20 20 20 78 2e 63 61 6e 76 61 73 2e 73 x.canvas.s
3d10: 74 79 6c 65 2e 70 6f 73 69 74 69 6f 6e 20 3d 20 tyle.position =
3d20: 22 61 62 73 6f 6c 75 74 65 22 3b 0a 20 20 20 20 "absolute";.
3d30: 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 instance
3d40: 2e 66 72 61 6d 65 52 61 74 65 28 30 2e 32 35 29 .frameRate(0.25)
3d50: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e ;. in
3d60: 74 72 6f 2e 70 75 73 68 28 69 6e 73 74 61 6e 63 tro.push(instanc
3d70: 65 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f 63 6c e.loadImage('/cl
3d80: 6f 73 65 64 2f 69 6e 74 72 6f 2f 31 2e 70 6e 67 osed/intro/1.png
3d90: 27 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 '));.
3da0: 20 6d 61 69 6e 2e 70 75 73 68 28 69 6e 73 74 61 main.push(insta
3db0: 6e 63 65 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f nce.loadImage('/
3dc0: 63 6c 6f 73 65 64 2f 6d 61 69 6e 2f 31 2e 70 6e closed/main/1.pn
3dd0: 67 27 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 g'));.
3de0: 20 20 6d 61 69 6e 2e 70 75 73 68 28 69 6e 73 74 main.push(inst
3df0: 61 6e 63 65 2e 6c 6f 61 64 49 6d 61 67 65 28 27 ance.loadImage('
3e00: 2f 63 6c 6f 73 65 64 2f 6d 61 69 6e 2f 32 2e 70 /closed/main/2.p
3e10: 6e 67 27 29 29 3b 0a 20 20 20 20 20 20 20 20 20 ng'));.
3e20: 20 20 20 6d 61 69 6e 2e 70 75 73 68 28 69 6e 73 main.push(ins
3e30: 74 61 6e 63 65 2e 6c 6f 61 64 49 6d 61 67 65 28 tance.loadImage(
3e40: 27 2f 63 6c 6f 73 65 64 2f 6d 61 69 6e 2f 33 2e '/closed/main/3.
3e50: 70 6e 67 27 29 29 3b 0a 20 20 20 20 20 20 20 20 png'));.
3e60: 20 20 20 20 20 6d 61 69 6e 2e 70 75 73 68 28 69 main.push(i
3e70: 6e 73 74 61 6e 63 65 2e 6c 6f 61 64 49 6d 61 67 nstance.loadImag
3e80: 65 28 27 2f 63 6c 6f 73 65 64 2f 6d 61 69 6e 2f e('/closed/main/
3e90: 34 2e 70 6e 67 27 29 29 3b 0a 20 20 20 20 20 20 4.png'));.
3ea0: 20 20 20 20 20 20 20 20 6d 61 69 6e 2e 70 75 73 main.pus
3eb0: 68 28 69 6e 73 74 61 6e 63 65 2e 6c 6f 61 64 49 h(instance.loadI
3ec0: 6d 61 67 65 28 27 2f 63 6c 6f 73 65 64 2f 6d 61 mage('/closed/ma
3ed0: 69 6e 2f 35 2e 70 6e 67 27 29 29 3b 0a 20 20 20 in/5.png'));.
3ee0: 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 69 6e main
3ef0: 2e 70 75 73 68 28 69 6e 73 74 61 6e 63 65 2e 6c .push(instance.l
3f00: 6f 61 64 49 6d 61 67 65 28 27 2f 63 6c 6f 73 65 oadImage('/close
3f10: 64 2f 6d 61 69 6e 2f 36 2e 70 6e 67 27 29 29 3b d/main/6.png'));
3f20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3f30: 20 6d 61 69 6e 2e 70 75 73 68 28 69 6e 73 74 61 main.push(insta
3f40: 6e 63 65 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f nce.loadImage('/
3f50: 63 6c 6f 73 65 64 2f 6d 61 69 6e 2f 37 2e 70 6e closed/main/7.pn
3f60: 67 27 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 g'));.
3f70: 20 20 65 6e 64 2e 70 75 73 68 28 69 6e 73 74 61 end.push(insta
3f80: 6e 63 65 2e 6c 6f 61 64 49 6d 61 67 65 28 27 2f nce.loadImage('/
3f90: 63 6c 6f 73 65 64 2f 65 6e 64 2f 31 2e 70 6e 67 closed/end/1.png
3fa0: 27 29 29 3b 0a 20 20 20 20 20 20 20 20 7d 3b 0a '));. };.
3fb0: 0a 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 . instanc
3fc0: 65 2e 64 72 61 77 20 3d 20 66 75 6e 63 74 69 6f e.draw = functio
3fd0: 6e 28 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 n() {.
3fe0: 20 20 69 66 20 28 6f 6c 64 5f 73 63 65 6e 65 20 if (old_scene
3ff0: 21 3d 20 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 != current_scene
4000: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {.
4010: 20 20 20 20 6f 6c 64 5f 73 63 65 6e 65 20 3d 20 old_scene =
4020: 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 3b 0a 20 current_scene;.
4030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
4040: 6f 75 6e 74 20 3d 20 30 3b 0a 20 20 20 20 20 20 ount = 0;.
4050: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
4060: 20 20 20 69 6e 73 74 61 6e 63 65 2e 63 6c 65 61 instance.clea
4070: 72 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 r();.
4080: 20 76 61 72 20 63 20 3d 20 65 76 61 6c 28 60 24 var c = eval(`$
4090: 7b 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 7d 60 {current_scene}`
40a0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e ). in
40b0: 73 74 61 6e 63 65 2e 69 6d 61 67 65 28 63 5b 63 stance.image(c[c
40c0: 6f 75 6e 74 5d 2c 20 30 2c 20 30 29 3b 0a 20 20 ount], 0, 0);.
40d0: 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74 20 count
40e0: 2b 3d 20 31 0a 20 20 20 20 20 20 20 20 20 20 20 += 1.
40f0: 20 63 6f 75 6e 74 20 3d 20 63 6f 75 6e 74 20 25 count = count %
4100: 20 63 2e 6c 65 6e 67 74 68 3b 0a 0a 20 20 20 20 c.length;..
4110: 20 20 20 20 7d 3b 0a 20 20 20 20 7d 3b 0a 0a 20 };. };..
4120: 20 20 20 6c 65 74 20 6d 79 70 35 20 3d 20 6e 65 let myp5 = ne
4130: 77 20 70 35 28 73 65 74 75 70 2c 20 20 64 6f 63 w p5(setup, doc
4140: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 ument.getElement
4150: 42 79 49 64 28 27 63 61 6e 76 61 73 2d 63 6f 6e ById('canvas-con
4160: 74 61 69 6e 65 72 27 29 29 3b 0a 0a 0a 20 20 20 tainer'));...
4170: 20 54 6f 6e 65 2e 4d 61 73 74 65 72 2e 76 6f 6c Tone.Master.vol
4180: 75 6d 65 2e 76 61 6c 75 65 20 3d 20 2d 33 30 0a ume.value = -30.
4190: 0a 20 20 20 20 64 69 61 6c 73 5b 32 5d 5b 22 63 . dials[2]["c
41a0: 65 6c 6c 22 5d 28 31 29 0a 20 20 20 20 6d 65 6d ell"](1). mem
41b0: 5b 22 6d 61 73 74 65 72 5f 66 69 6c 74 65 72 22 ["master_filter"
41c0: 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 46 69 6c ] = new Tone.Fil
41d0: 74 65 72 28 31 30 30 30 30 2c 20 27 6c 6f 77 70 ter(10000, 'lowp
41e0: 61 73 73 27 2c 20 2d 39 36 29 3b 0a 20 20 20 20 ass', -96);.
41f0: 6d 65 6d 5b 22 6d 61 73 74 65 72 5f 73 74 65 72 mem["master_ster
4200: 65 6f 22 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e eo"] = new Tone.
4210: 53 74 65 72 65 6f 57 69 64 65 6e 65 72 28 7b 77 StereoWidener({w
4220: 69 64 74 68 3a 20 30 2e 35 30 7d 29 3b 0a 20 20 idth: 0.50});.
4230: 20 20 0a 20 20 20 20 64 69 61 6c 73 5b 32 5d 5b . dials[2][
4240: 22 63 65 6c 6c 22 5d 2e 6f 6e 43 68 61 6e 67 65 "cell"].onChange
4250: 28 66 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a (function (e) {.
4260: 20 20 20 20 20 20 20 20 76 61 72 20 76 61 6c 20 var val
4270: 3d 20 70 61 72 73 65 46 6c 6f 61 74 28 65 5b 22 = parseFloat(e["
4280: 64 61 74 61 22 5d 2e 76 61 6c 75 65 29 3b 0a 20 data"].value);.
4290: 20 20 20 20 20 20 20 76 61 72 20 63 75 74 6f 66 var cutof
42a0: 66 5f 67 75 61 72 64 20 3d 20 67 75 61 72 64 28 f_guard = guard(
42b0: 5b 31 30 2c 20 32 30 30 30 30 5d 29 3b 0a 20 20 [10, 20000]);.
42c0: 20 20 20 20 20 20 6d 65 6d 5b 22 6d 61 73 74 65 mem["maste
42d0: 72 5f 66 69 6c 74 65 72 22 5d 2e 66 72 65 71 75 r_filter"].frequ
42e0: 65 6e 63 79 2e 76 61 6c 75 65 20 3d 20 63 75 74 ency.value = cut
42f0: 6f 66 66 5f 67 75 61 72 64 28 76 61 6c 20 2a 20 off_guard(val *
4300: 31 30 30 30 30 29 3b 0a 20 20 20 20 7d 29 0a 20 10000);. }).
4310: 20 20 20 0a 20 20 20 20 64 69 61 6c 73 5b 33 5d . dials[3]
4320: 5b 22 63 65 6c 6c 22 5d 28 30 29 0a 20 20 20 20 ["cell"](0).
4330: 0a 20 20 20 20 64 69 61 6c 73 5b 33 5d 5b 22 63 . dials[3]["c
4340: 65 6c 6c 22 5d 2e 6f 6e 43 68 61 6e 67 65 28 66 ell"].onChange(f
4350: 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a 20 20 unction (e) {.
4360: 20 20 20 20 20 20 76 61 72 20 76 61 6c 20 3d 20 var val =
4370: 70 61 72 73 65 46 6c 6f 61 74 28 65 5b 22 64 61 parseFloat(e["da
4380: 74 61 22 5d 2e 76 61 6c 75 65 29 3b 0a 20 20 20 ta"].value);.
4390: 20 20 20 20 20 76 61 72 20 76 6f 6c 75 6d 65 5f var volume_
43a0: 67 75 61 72 64 31 20 3d 20 67 75 61 72 64 28 5b guard1 = guard([
43b0: 30 2c 31 5d 29 0a 20 20 20 20 20 20 20 20 61 75 0,1]). au
43c0: 64 69 6f 2e 6d 61 73 74 65 72 2e 69 6e 2e 67 61 dio.master.in.ga
43d0: 69 6e 2e 76 61 6c 75 65 20 3d 20 76 6f 6c 75 6d in.value = volum
43e0: 65 5f 67 75 61 72 64 31 28 76 61 6c 20 2f 20 31 e_guard1(val / 1
43f0: 30 29 3b 0a 20 20 20 20 7d 29 0a 20 20 20 20 0a 0);. }). .
4400: 20 20 20 20 6d 65 6d 2e 6d 61 73 74 65 72 20 3d mem.master =
4410: 20 6e 65 77 20 54 6f 6e 65 2e 43 68 61 6e 6e 65 new Tone.Channe
4420: 6c 28 7b 63 68 61 6e 6e 65 6c 43 6f 75 6e 74 3a l({channelCount:
4430: 20 32 2c 20 76 6f 6c 75 6d 65 3a 20 2d 31 30 7d 2, volume: -10}
4440: 29 2e 63 68 61 69 6e 28 20 20 6d 65 6d 5b 22 6d ).chain( mem["m
4450: 61 73 74 65 72 5f 66 69 6c 74 65 72 22 5d 2c 20 aster_filter"],
4460: 20 6d 65 6d 5b 22 6d 61 73 74 65 72 5f 73 74 65 mem["master_ste
4470: 72 65 6f 22 5d 2c 20 54 6f 6e 65 2e 44 65 73 74 reo"], Tone.Dest
4480: 69 6e 61 74 69 6f 6e 29 3b 0a 20 20 20 20 53 61 ination);. Sa
4490: 6d 70 6c 65 28 22 6b 22 2c 20 30 2c 20 6e 75 6c mple("k", 0, nul
44a0: 6c 2c 20 2d 35 29 3b 0a 20 20 20 20 53 61 6d 70 l, -5);. Samp
44b0: 6c 65 28 22 73 6e 31 22 2c 31 2c 20 6e 75 6c 6c le("sn1",1, null
44c0: 2c 20 30 29 3b 0a 20 20 20 20 53 61 6d 70 6c 65 , 0);. Sample
44d0: 28 22 68 22 2c 32 2c 20 35 30 30 30 2c 20 2d 33 ("h",2, 5000, -3
44e0: 35 29 3b 0a 20 20 20 20 53 61 6d 70 6c 65 28 22 5);. Sample("
44f0: 6d 22 2c 33 2c 20 6e 75 6c 6c 2c 20 2d 31 35 29 m",3, null, -15)
4500: 3b 0a 20 20 20 20 53 61 6d 70 6c 65 28 22 66 22 ;. Sample("f"
4510: 2c 34 2c 20 6e 75 6c 6c 2c 20 2d 31 35 29 3b 0a ,4, null, -15);.
4520: 20 20 20 20 0a 20 20 20 20 6e 61 6d 65 20 3d 20 . name =
4530: 22 73 22 0a 20 20 20 20 66 69 6c 74 65 72 20 3d "s". filter =
4540: 20 32 30 30 30 0a 20 20 20 20 76 6f 6c 75 6d 65 2000. volume
4550: 20 3d 20 2d 31 35 20 0a 20 20 20 20 6d 65 6d 5b = -15 . mem[
4560: 6e 61 6d 65 20 2b 20 22 5f 66 69 6c 74 65 72 22 name + "_filter"
4570: 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 46 69 6c ] = new Tone.Fil
4580: 74 65 72 28 66 69 6c 74 65 72 2c 20 27 6c 6f 77 ter(filter, 'low
4590: 70 61 73 73 27 2c 20 2d 39 36 29 3b 0a 20 20 20 pass', -96);.
45a0: 20 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 64 65 mem[name + "_de
45b0: 6c 61 79 22 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 lay"] = new Tone
45c0: 2e 46 65 65 64 62 61 63 6b 44 65 6c 61 79 28 22 .FeedbackDelay("
45d0: 34 6e 22 2c 20 30 2e 34 29 3b 0a 20 20 20 20 6d 4n", 0.4);. m
45e0: 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 63 68 61 6e em[name + "_chan
45f0: 6e 65 6c 22 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 nel"] = new Tone
4600: 2e 43 68 61 6e 6e 65 6c 28 7b 63 68 61 6e 6e 65 .Channel({channe
4610: 6c 43 6f 75 6e 74 3a 20 32 2c 20 76 6f 6c 75 6d lCount: 2, volum
4620: 65 3a 20 76 6f 6c 75 6d 65 2c 20 70 61 6e 3a 20 e: volume, pan:
4630: 2d 30 2e 32 35 7d 29 2e 63 68 61 69 6e 28 6d 65 -0.25}).chain(me
4640: 6d 5b 6e 61 6d 65 20 2b 20 22 5f 66 69 6c 74 65 m[name + "_filte
4650: 72 22 5d 2c 20 20 20 6d 65 6d 5b 6e 61 6d 65 20 r"], mem[name
4660: 2b 20 22 5f 64 65 6c 61 79 22 5d 2c 20 6d 65 6d + "_delay"], mem
4670: 2e 6d 61 73 74 65 72 29 0a 20 20 20 20 73 61 6d .master). sam
4680: 70 6c 65 73 5b 35 5d 2e 63 6f 6e 6e 65 63 74 28 ples[5].connect(
4690: 6d 65 6d 5b 6e 61 6d 65 20 2b 20 22 5f 63 68 61 mem[name + "_cha
46a0: 6e 6e 65 6c 22 5d 29 3b 0a 20 20 20 20 68 69 74 nnel"]);. hit
46b0: 5f 6d 61 70 5b 6e 61 6d 65 5d 20 3d 20 35 3b 0a _map[name] = 5;.
46c0: 20 20 0a 20 20 0a 0a 20 20 20 20 0a 20 20 20 20 . .. .
46d0: 0a 20 20 20 20 53 61 6d 70 6c 65 28 22 6d 61 6e . Sample("man
46e0: 61 67 65 72 22 2c 36 2c 20 6e 75 6c 6c 2c 20 2d ager",6, null, -
46f0: 35 29 3b 0a 20 20 20 20 53 61 6d 70 6c 65 28 22 5);. Sample("
4700: 6f 72 64 65 72 22 2c 37 2c 20 6e 75 6c 6c 2c 20 order",7, null,
4710: 2d 31 35 29 3b 0a 20 20 20 20 53 61 6d 70 6c 65 -15);. Sample
4720: 28 22 63 72 22 2c 38 2c 20 6e 75 6c 6c 2c 20 2d ("cr",8, null, -
4730: 31 35 29 3b 0a 20 20 20 20 53 61 6d 70 6c 65 28 15);. Sample(
4740: 22 70 69 61 6e 6f 22 2c 39 2c 20 34 30 30 2c 20 "piano",9, 400,
4750: 2d 35 29 3b 0a 20 20 20 20 53 61 6d 70 6c 65 28 -5);. Sample(
4760: 22 73 69 74 61 72 22 2c 31 30 2c 20 35 30 30 30 "sitar",10, 5000
4770: 2c 20 2d 31 35 29 3b 0a 20 20 20 20 0a 20 20 20 , -15);. .
4780: 20 63 6f 6e 73 74 20 61 75 64 69 6f 20 3d 20 41 const audio = A
4790: 75 64 69 6f 28 29 3b 0a 20 20 20 20 63 6f 6e 73 udio();. cons
47a0: 74 20 74 68 72 65 65 20 3d 20 54 68 72 65 65 4f t three = ThreeO
47b0: 68 55 6e 69 74 28 61 75 64 69 6f 2c 20 22 73 61 hUnit(audio, "sa
47c0: 77 74 6f 6f 74 68 22 2c 20 7b 0a 20 20 20 20 20 wtooth", {.
47d0: 20 20 20 20 20 20 20 22 63 75 74 6f 66 66 22 3a "cutoff":
47e0: 20 37 38 2c 0a 20 20 20 20 20 20 20 20 20 20 20 78,.
47f0: 20 22 72 65 73 6f 6e 61 6e 63 65 22 3a 20 31 35 "resonance": 15
4800: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 65 ,. "e
4810: 6e 76 4d 6f 64 22 3a 20 34 30 30 30 2c 0a 20 20 nvMod": 4000,.
4820: 20 20 20 20 20 20 20 20 20 20 22 64 65 63 61 79 "decay
4830: 22 3a 20 30 2e 35 0a 20 20 20 20 20 20 20 20 7d ": 0.5. }
4840: 0a 20 20 20 20 29 0a 20 20 20 20 61 75 64 69 6f . ). audio
4850: 2e 6d 61 73 74 65 72 2e 69 6e 2e 67 61 69 6e 2e .master.in.gain.
4860: 76 61 6c 75 65 20 3d 20 30 3b 0a 20 20 20 20 6d value = 0;. m
4870: 65 6d 5b 22 74 68 72 65 65 22 5d 20 3d 20 74 68 em["three"] = th
4880: 72 65 65 0a 20 20 20 20 0a 20 20 20 20 2f 2f 20 ree. . //
4890: 63 75 74 6f 66 66 20 5b 33 30 2c 20 37 30 30 5d cutoff [30, 700]
48a0: 2c 20 34 30 30 0a 20 20 20 20 2f 2f 20 72 65 73 , 400. // res
48b0: 6f 6e 61 6e 63 65 3a 20 5b 31 2c 20 33 30 5d 2c onance: [1, 30],
48c0: 20 31 35 0a 20 20 20 20 2f 2f 20 65 6e 76 4d 6f 15. // envMo
48d0: 64 3a 20 5b 30 2c 20 38 30 30 30 5d 2c 20 34 30 d: [0, 8000], 40
48e0: 30 30 0a 20 20 20 20 2f 2f 20 64 65 63 61 79 3a 00. // decay:
48f0: 20 5b 30 2e 31 2c 20 30 2e 39 5d 2c 20 30 2e 35 [0.1, 0.9], 0.5
4900: 0a 20 20 20 20 0a 20 20 20 20 64 69 61 6c 73 5b . . dials[
4910: 31 5d 5b 22 63 65 6c 6c 22 5d 28 30 2e 30 37 38 1]["cell"](0.078
4920: 32 35 29 0a 0a 20 20 20 20 64 69 61 6c 73 5b 31 25).. dials[1
4930: 5d 5b 22 63 65 6c 6c 22 5d 2e 6f 6e 43 68 61 6e ]["cell"].onChan
4940: 67 65 28 66 75 6e 63 74 69 6f 6e 20 28 65 29 20 ge(function (e)
4950: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 76 61 {. var va
4960: 6c 20 3d 20 70 61 72 73 65 46 6c 6f 61 74 28 65 l = parseFloat(e
4970: 5b 22 64 61 74 61 22 5d 2e 76 61 6c 75 65 29 3b ["data"].value);
4980: 0a 20 20 20 20 20 20 20 20 63 75 74 6f 66 66 5f . cutoff_
4990: 67 75 61 72 64 20 3d 20 67 75 61 72 64 28 5b 33 guard = guard([3
49a0: 30 2c 20 37 30 30 5d 29 3b 0a 20 20 20 20 20 20 0, 700]);.
49b0: 20 20 74 68 72 65 65 2e 70 61 72 61 6d 73 2e 63 three.params.c
49c0: 75 74 6f 66 66 2e 76 61 6c 75 65 20 3d 20 63 75 utoff.value = cu
49d0: 74 6f 66 66 5f 67 75 61 72 64 28 76 61 6c 20 2a toff_guard(val *
49e0: 20 31 30 30 30 29 3b 0a 20 20 20 20 7d 29 0a 20 1000);. }).
49f0: 20 20 20 0a 20 20 20 20 0a 20 20 20 20 6d 65 6d . . mem
4a00: 2e 6b 31 20 3d 20 6b 6e 6f 62 28 7b 72 61 6d 70 .k1 = knob({ramp
4a10: 20 3a 20 5b 30 2e 35 32 35 2c 20 30 2e 38 2c 20 : [0.525, 0.8,
4a20: 30 2e 34 2c 20 30 2e 32 35 2c 20 30 2e 37 35 2c 0.4, 0.25, 0.75,
4a30: 20 30 2e 32 35 5d 2c 20 73 74 65 70 3a 20 30 2e 0.25], step: 0.
4a40: 30 30 35 2c 20 22 6e 75 6d 62 65 72 22 3a 20 64 005, "number": d
4a50: 69 61 6c 73 5b 31 5d 5b 22 63 65 6c 6c 22 5d 20 ials[1]["cell"]
4a60: 7d 29 3b 0a 20 20 20 20 61 6c 77 61 79 73 20 3d });. always =
4a70: 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 function () {.
4a80: 20 20 20 20 20 20 20 6c 65 74 20 63 75 74 6f 66 let cutof
4a90: 66 5f 67 75 61 72 64 20 3d 20 67 75 61 72 64 28 f_guard = guard(
4aa0: 5b 33 30 2c 20 39 30 30 5d 29 3b 0a 20 20 20 20 [30, 900]);.
4ab0: 20 20 20 20 74 68 72 65 65 2e 70 61 72 61 6d 73 three.params
4ac0: 2e 63 75 74 6f 66 66 2e 76 61 6c 75 65 20 3d 20 .cutoff.value =
4ad0: 63 75 74 6f 66 66 5f 67 75 61 72 64 28 6d 65 6d cutoff_guard(mem
4ae0: 2e 6b 31 2e 6d 6f 76 65 28 29 20 2a 20 31 30 30 .k1.move() * 100
4af0: 30 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 66 75 6e 0);. }.}..fun
4b00: 63 74 69 6f 6e 20 74 77 65 61 6b 28 29 20 7b 0a ction tweak() {.
4b10: 20 0a 20 20 20 20 76 61 72 20 73 6e 61 72 65 5f . var snare_
4b20: 63 6f 75 6e 74 20 3d 20 63 65 6c 6c 78 28 30 29 count = cellx(0)
4b30: 3b 0a 20 20 20 20 0a 20 20 20 20 20 20 20 20 0a ;. . .
4b40: 20 20 20 20 73 6e 61 72 65 5f 63 6f 75 6e 74 2e snare_count.
4b50: 6f 6e 43 68 61 6e 67 65 28 66 75 6e 63 74 69 6f onChange(functio
4b60: 6e 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20 n (e) {.
4b70: 76 61 72 20 76 61 6c 20 3d 20 70 61 72 73 65 49 var val = parseI
4b80: 6e 74 28 65 5b 22 64 61 74 61 22 5d 2e 76 61 6c nt(e["data"].val
4b90: 75 65 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 ue);. if
4ba0: 28 76 61 6c 20 3d 3d 20 32 32 29 20 7b 0a 20 20 (val == 22) {.
4bb0: 20 20 20 20 20 20 20 20 20 20 63 75 72 72 65 6e curren
4bc0: 74 5f 73 63 65 6e 65 20 3d 20 22 66 69 6e 22 3b t_scene = "fin";
4bd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 70 31 . p1
4be0: 28 38 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 (8, null, null,
4bf0: 31 32 2e 32 35 29 3b 0a 20 20 20 20 20 20 20 20 12.25);.
4c00: 7d 20 0a 20 20 20 20 7d 29 0a 20 20 20 20 0a 20 } . }). .
4c10: 20 20 20 0a 20 20 20 20 0a 20 20 20 20 4d 6f 75 . . Mou
4c20: 73 65 74 72 61 70 2e 62 69 6e 64 28 5b 27 66 32 setrap.bind(['f2
4c30: 27 5d 2c 20 66 75 6e 63 74 69 6f 6e 28 65 29 20 '], function(e)
4c40: 7b 0a 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 {. . s
4c50: 6e 61 72 65 5f 63 6f 75 6e 74 28 73 6e 61 72 65 nare_count(snare
4c60: 5f 63 6f 75 6e 74 28 29 20 2b 20 31 29 0a 20 20 _count() + 1).
4c70: 20 20 20 20 20 20 69 66 20 28 73 6e 61 72 65 5f if (snare_
4c80: 63 6f 75 6e 74 28 29 20 3c 3d 20 32 30 29 20 7b count() <= 20) {
4c90: 0a 20 20 20 20 20 20 20 20 20 20 73 65 74 54 69 . setTi
4ca0: 6d 65 6f 75 74 28 66 75 6e 63 74 69 6f 6e 20 28 meout(function (
4cb0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {.
4cc0: 20 20 70 28 30 2c 20 6e 75 6c 6c 2c 20 6e 75 6c p(0, null, nul
4cd0: 6c 2c 20 22 32 34 6e 22 2c 20 6e 75 6c 6c 20 29 l, "24n", null )
4ce0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
4cf0: 20 20 73 65 74 54 69 6d 65 6f 75 74 28 66 75 6e setTimeout(fun
4d00: 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 ction () {.
4d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 p
4d20: 28 38 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 (8, null, null,
4d30: 22 32 6e 22 20 29 3b 0a 20 20 20 20 20 20 20 20 "2n" );.
4d40: 20 20 20 20 20 20 20 20 20 20 20 20 70 28 31 30 p(10
4d50: 2c 20 30 2e 35 2c 20 22 41 32 22 2c 20 31 29 3b , 0.5, "A2", 1);
4d60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
4d70: 20 7d 2c 20 64 65 6c 74 61 20 2a 20 32 29 0a 20 }, delta * 2).
4d80: 20 0a 20 20 20 20 20 20 20 20 20 20 7d 2c 20 64 . }, d
4d90: 65 6c 74 61 20 2a 20 31 2e 35 29 0a 20 20 20 20 elta * 1.5).
4da0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 0a 20 }. .
4db0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 return fa
4dc0: 6c 73 65 3b 0a 20 20 20 20 7d 29 0a 0a 0a 20 20 lse;. })...
4dd0: 20 20 0a 7d 0a 0a 0a 0a 74 72 61 6e 73 69 74 69 .}....transiti
4de0: 6f 6e 20 3d 20 6f 6e 63 65 3b 0a 0a 69 66 20 28 on = once;..if (
4df0: 62 61 72 73 20 3c 3d 20 32 29 20 7b 0a 20 20 20 bars <= 2) {.
4e00: 20 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 20 3d current_scene =
4e10: 20 22 69 6e 74 72 6f 22 3b 0a 7d 20 65 6c 73 65 "intro";.} else
4e20: 20 7b 0a 2f 2f 20 20 20 20 20 20 20 6d 65 6d 5b {.// mem[
4e30: 22 74 68 72 65 65 22 5d 2e 73 74 65 70 28 22 6f "three"].step("o
4e40: 66 66 22 29 3b 0a 69 66 20 28 62 61 72 73 20 3d ff");.if (bars =
4e50: 3d 20 33 29 20 7b 0a 20 20 20 20 65 76 61 6c 5f = 3) {. eval_
4e60: 67 75 61 72 64 20 3f 20 63 75 65 28 22 53 74 61 guard ? cue("Sta
4e70: 72 74 20 69 6e 74 72 6f 22 29 20 3a 20 22 22 3b rt intro") : "";
4e80: 0a 20 20 20 20 63 75 72 72 65 6e 74 5f 73 63 65 . current_sce
4e90: 6e 65 20 3d 20 22 69 6e 74 72 6f 22 3b 0a 0a 7d ne = "intro";..}
4ea0: 0a 0a 69 66 20 28 62 61 72 73 20 3d 3d 20 35 29 ..if (bars == 5)
4eb0: 20 7b 0a 20 20 20 20 65 76 61 6c 5f 67 75 61 72 {. eval_guar
4ec0: 64 20 3f 20 63 75 65 28 22 53 74 61 72 74 20 64 d ? cue("Start d
4ed0: 72 75 6d 73 22 29 20 3a 20 22 22 3b 0a 20 20 20 rums") : "";.
4ee0: 20 20 20 20 20 63 75 72 72 65 6e 74 5f 73 63 65 current_sce
4ef0: 6e 65 20 3d 20 22 6d 61 69 6e 22 3b 0a 7d 0a 0a ne = "main";.}..
4f00: 0a 69 66 20 28 62 61 72 73 20 3d 3d 20 31 32 29 .if (bars == 12)
4f10: 20 7b 0a 20 20 20 20 65 76 61 6c 5f 67 75 61 72 {. eval_guar
4f20: 64 20 3f 20 63 75 65 28 22 41 64 64 20 62 61 73 d ? cue("Add bas
4f30: 73 22 29 3a 20 22 22 3b 0a 20 20 20 20 63 75 72 s"): "";. cur
4f40: 72 65 6e 74 5f 73 63 65 6e 65 20 3d 20 22 62 61 rent_scene = "ba
4f50: 73 73 22 3b 0a 0a 7d 0a 0a 69 66 20 28 62 61 72 ss";..}..if (bar
4f60: 73 20 3d 3d 20 33 32 29 20 7b 0a 20 20 20 20 65 s == 32) {. e
4f70: 76 61 6c 5f 67 75 61 72 64 20 3f 63 75 65 28 22 val_guard ?cue("
4f80: 52 65 76 65 72 73 65 20 22 29 3a 20 22 22 3b 0a Reverse "): "";.
4f90: 20 20 20 20 63 75 72 72 65 6e 74 5f 73 63 65 6e current_scen
4fa0: 65 20 3d 20 22 62 61 73 73 22 3b 0a 0a 7d 0a 0a e = "bass";..}..
4fb0: 69 66 20 28 62 61 72 73 20 3d 3d 20 34 32 29 20 if (bars == 42)
4fc0: 7b 0a 20 20 20 20 65 76 61 6c 5f 67 75 61 72 64 {. eval_guard
4fd0: 20 3f 20 63 75 65 28 22 45 6e 64 20 22 29 3a 20 ? cue("End "):
4fe0: 22 22 0a 20 20 20 20 63 75 72 72 65 6e 74 5f 73 "". current_s
4ff0: 63 65 6e 65 20 3d 20 22 65 6e 64 22 3b 0a 0a 7d cene = "end";..}
5000: 0a 0a 69 66 20 28 62 61 72 73 20 3d 3d 20 34 38 ..if (bars == 48
5010: 29 20 7b 0a 20 20 20 20 65 76 61 6c 5f 67 75 61 ) {. eval_gua
5020: 72 64 20 3f 20 63 75 65 28 22 53 6f 6c 6f 20 22 rd ? cue("Solo "
5030: 29 3a 20 22 22 0a 20 20 20 20 63 75 72 72 65 6e ): "". curren
5040: 74 5f 73 63 65 6e 65 20 3d 20 22 73 6f 6c 6f 22 t_scene = "solo"
5050: 3b 0a 7d 0a 0a 0a 20 20 20 20 74 72 61 6e 73 69 ;.}... transi
5060: 74 69 6f 6e 20 3d 20 74 77 65 61 6b 3b 0a 7d 0a tion = tweak;.}.
5070: 0a 0a 70 61 74 74 65 72 6e 73 20 3d 20 65 76 61 ..patterns = eva
5080: 6c 28 60 24 7b 63 75 72 72 65 6e 74 5f 73 63 65 l(`${current_sce
5090: 6e 65 7d 60 29 3b 0a 61 6c 77 61 79 73 28 29 3b ne}`);.always();
50a0: 0a 0a 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d ..if (track_no =
50b0: 3d 20 31 29 20 7b 0a 69 66 20 28 63 6f 75 6e 74 = 1) {.if (count
50c0: 20 3d 3d 20 30 29 20 7b 0a 20 20 20 20 63 75 65 == 0) {. cue
50d0: 28 22 53 61 6d 70 6c 65 22 29 0a 20 20 20 20 70 ("Sample"). p
50e0: 31 28 37 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 1(7, null, null,
50f0: 20 31 32 2e 32 35 29 3b 0a 7d 0a 7d 0a 0a 20 20 12.25);.}.}..
5100: 20 20 20 0a 0a 69 66 20 28 69 73 48 69 74 29 20 ..if (isHit)
5110: 7b 0a 20 20 20 20 69 66 20 28 63 75 72 72 65 6e {. if (curren
5120: 74 5f 73 63 65 6e 65 20 3d 3d 20 22 69 6e 74 72 t_scene == "intr
5130: 6f 22 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 o") {. if
5140: 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 31 29 (track_no == 1)
5150: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 70 28 33 {. p(3
5160: 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 22 31 , null, null, "1
5170: 6e 22 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 n");. }.
5180: 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 63 75 } else if (cu
5190: 72 72 65 6e 74 5f 73 63 65 6e 65 20 3d 3d 20 22 rrent_scene == "
51a0: 66 69 6e 22 29 20 7b 0a 20 20 20 0a 20 20 20 20 fin") {. .
51b0: 7d 20 65 6c 73 65 20 69 66 20 28 63 75 72 72 65 } else if (curre
51c0: 6e 74 5f 73 63 65 6e 65 20 3d 3d 20 22 73 6f 6c nt_scene == "sol
51d0: 6f 22 29 20 7b 0a 0a 20 0a 20 20 20 20 7d 20 65 o") {.. . } e
51e0: 6c 73 65 20 69 66 20 28 63 75 72 72 65 6e 74 5f lse if (current_
51f0: 73 63 65 6e 65 20 3d 3d 20 22 65 6e 64 22 29 20 scene == "end")
5200: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 72 {. if (tr
5210: 61 63 6b 5f 6e 6f 20 3d 3d 20 31 29 20 7b 0a 20 ack_no == 1) {.
5220: 20 20 20 20 20 20 20 20 20 20 20 70 28 30 2c 20 p(0,
5230: 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 76 6f 6c 75 meta[tick]["volu
5240: 6d 65 22 5d 2c 20 6d 65 74 61 5b 74 69 63 6b 5d me"], meta[tick]
5250: 5b 22 70 69 74 63 68 22 5d 2c 20 22 32 34 6e 22 ["pitch"], "24n"
5260: 2c 20 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 64 65 , meta[tick]["de
5270: 6c 61 79 22 5d 20 29 3b 0a 20 20 20 20 20 20 20 lay"] );.
5280: 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 }. if (t
5290: 72 61 63 6b 5f 6e 6f 20 3d 3d 20 32 29 20 7b 0a rack_no == 2) {.
52a0: 20 20 20 20 20 20 20 20 20 20 20 20 70 28 31 29 p(1)
52b0: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }.
52c0: 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f if (track_no
52d0: 20 3d 3d 20 33 29 20 7b 0a 20 20 20 20 20 20 20 == 3) {.
52e0: 20 20 20 20 20 70 28 32 29 0a 20 20 20 20 20 20 p(2).
52f0: 20 20 7d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 }. .
5300: 20 7d 20 65 6c 73 65 20 69 66 20 28 63 75 72 72 } else if (curr
5310: 65 6e 74 5f 73 63 65 6e 65 20 3d 3d 20 22 6d 61 ent_scene == "ma
5320: 69 6e 22 29 20 7b 0a 20 20 20 20 20 20 20 20 69 in") {. i
5330: 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 31 f (track_no == 1
5340: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {.
5350: 70 28 30 2c 20 6d 65 74 61 5b 74 69 63 6b 5d 5b p(0, meta[tick][
5360: 22 76 6f 6c 75 6d 65 22 5d 2c 20 6d 65 74 61 5b "volume"], meta[
5370: 74 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d 2c 20 tick]["pitch"],
5380: 22 32 34 6e 22 2c 20 6d 65 74 61 5b 74 69 63 6b "24n", meta[tick
5390: 5d 5b 22 64 65 6c 61 79 22 5d 20 29 3b 0a 20 20 ]["delay"] );.
53a0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
53b0: 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 if (track_no ==
53c0: 32 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 2) {.
53d0: 20 70 28 31 29 3b 0a 20 20 20 20 20 20 20 20 7d p(1);. }
53e0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 72 61 . if (tra
53f0: 63 6b 5f 6e 6f 20 3d 3d 20 33 29 20 7b 0a 20 20 ck_no == 3) {.
5400: 20 20 20 20 20 20 20 20 20 20 70 28 32 29 0a 20 p(2).
5410: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }.
5420: 20 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d if (track_no ==
5430: 20 34 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 4) {.
5440: 20 20 70 28 33 2c 20 6e 75 6c 6c 2c 20 6e 75 6c p(3, null, nul
5450: 6c 2c 20 22 31 6e 22 29 3b 0a 20 20 20 20 20 20 l, "1n");.
5460: 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 }. if (
5470: 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 35 29 20 7b track_no == 5) {
5480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
5490: 28 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 70 69 74 (meta[tick]["pit
54a0: 63 68 22 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 ch"]) {.
54b0: 20 20 20 20 20 20 2f 2f 20 20 6d 65 6d 5b 22 74 // mem["t
54c0: 68 72 65 65 22 5d 2e 73 74 65 70 28 7b 22 67 6c hree"].step({"gl
54d0: 69 64 65 22 3a 20 74 72 75 65 2c 20 22 61 63 63 ide": true, "acc
54e0: 65 6e 74 22 3a 20 66 61 6c 73 65 2c 20 22 6e 6f ent": false, "no
54f0: 74 65 22 3a 20 6d 65 74 61 5b 74 69 63 6b 5d 5b te": meta[tick][
5500: 22 70 69 74 63 68 22 5d 7d 29 3b 0a 20 20 20 20 "pitch"]});.
5510: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
5520: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f . /
5530: 2f 20 20 6d 65 6d 5b 22 74 68 72 65 65 22 5d 2e / mem["three"].
5540: 73 74 65 70 28 22 6f 66 66 22 29 3b 0a 20 20 20 step("off");.
5550: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }.
5560: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 }. if
5570: 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 36 29 20 (track_no == 6)
5580: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 70 28 35 {. p(5
5590: 2c 20 6e 75 6c 6c 2c 20 6d 65 74 61 5b 74 69 63 , null, meta[tic
55a0: 6b 5d 5b 22 70 69 74 63 68 22 5d 2c 20 22 31 6e k]["pitch"], "1n
55b0: 22 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ");. }.
55c0: 20 20 0a 20 20 20 20 20 7d 20 65 6c 73 65 20 69 . } else i
55d0: 66 20 28 63 75 72 72 65 6e 74 5f 73 63 65 6e 65 f (current_scene
55e0: 20 3d 3d 20 22 62 61 73 73 22 29 20 7b 0a 20 20 == "bass") {.
55f0: 20 20 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f if (track_
5600: 6e 6f 20 3d 3d 20 31 29 20 7b 0a 20 20 20 20 20 no == 1) {.
5610: 20 20 20 20 20 70 28 30 2c 20 6d 65 74 61 5b 74 p(0, meta[t
5620: 69 63 6b 5d 5b 22 76 6f 6c 75 6d 65 22 5d 2c 20 ick]["volume"],
5630: 6d 65 74 61 5b 74 69 63 6b 5d 5b 22 70 69 74 63 meta[tick]["pitc
5640: 68 22 5d 2c 20 22 32 34 6e 22 2c 20 6d 65 74 61 h"], "24n", meta
5650: 5b 74 69 63 6b 5d 5b 22 64 65 6c 61 79 22 5d 20 [tick]["delay"]
5660: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }.
5670: 20 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e if (track_n
5680: 6f 20 3d 3d 20 32 29 20 7b 0a 20 20 20 20 20 20 o == 2) {.
5690: 20 20 20 20 20 20 70 28 31 29 3b 0a 20 20 20 20 p(1);.
56a0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 }. if
56b0: 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 33 29 (track_no == 3)
56c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 70 28 {. p(
56d0: 32 29 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 2). }.
56e0: 20 20 20 20 20 69 66 20 28 74 72 61 63 6b 5f 6e if (track_n
56f0: 6f 20 3d 3d 20 34 29 20 7b 0a 20 20 20 20 20 20 o == 4) {.
5700: 20 20 20 20 20 20 70 28 33 2c 20 6e 75 6c 6c 2c p(3, null,
5710: 20 6e 75 6c 6c 2c 20 22 31 6e 22 29 3b 0a 20 20 null, "1n");.
5720: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
5730: 69 66 20 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 if (track_no ==
5740: 35 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 5) {.
5750: 20 69 66 20 28 6d 65 74 61 5b 74 69 63 6b 5d 5b if (meta[tick][
5760: 22 70 69 74 63 68 22 5d 29 20 7b 0a 20 20 20 20 "pitch"]) {.
5770: 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 5b mem[
5780: 22 74 68 72 65 65 22 5d 2e 73 74 65 70 28 7b 22 "three"].step({"
5790: 67 6c 69 64 65 22 3a 20 74 72 75 65 2c 20 22 61 glide": true, "a
57a0: 63 63 65 6e 74 22 3a 20 66 61 6c 73 65 2c 20 22 ccent": false, "
57b0: 6e 6f 74 65 22 3a 20 6d 65 74 61 5b 74 69 63 6b note": meta[tick
57c0: 5d 5b 22 70 69 74 63 68 22 5d 7d 29 3b 0a 20 20 ]["pitch"]});.
57d0: 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
57e0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
57f0: 20 20 20 6d 65 6d 5b 22 74 68 72 65 65 22 5d 2e mem["three"].
5800: 73 74 65 70 28 22 6f 66 66 22 29 3b 0a 20 20 20 step("off");.
5810: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }.
5820: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 }. if
5830: 28 74 72 61 63 6b 5f 6e 6f 20 3d 3d 20 36 29 20 (track_no == 6)
5840: 7b 0a 20 2f 2f 20 20 20 20 20 20 20 20 20 20 70 {. // p
5850: 28 35 2c 20 30 2e 31 35 2c 20 6d 65 74 61 5b 74 (5, 0.15, meta[t
5860: 69 63 6b 5d 5b 22 70 69 74 63 68 22 5d 2c 20 31 ick]["pitch"], 1
5870: 29 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 70 );. // p
5880: 28 39 2c 20 31 2c 20 6d 65 74 61 5b 74 69 63 6b (9, 1, meta[tick
5890: 5d 5b 22 70 69 74 63 68 22 5d 2c 20 31 29 3b 0a ]["pitch"], 1);.
58a0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d . }. }
58b0: 20 0a 0a 0a 7d 0a 60 60 60 0a 0a ...}.```..