0000: 0a 66 75 6e 63 74 69 6f 6e 20 67 65 74 52 61 6e .function getRan
0010: 64 6f 6d 49 6e 74 28 6d 61 78 29 20 7b 0a 20 20 domInt(max) {.
0020: 72 65 74 75 72 6e 20 4d 61 74 68 2e 66 6c 6f 6f return Math.floo
0030: 72 28 4d 61 74 68 2e 72 61 6e 64 6f 6d 28 29 20 r(Math.random()
0040: 2a 20 6d 61 78 29 3b 0a 7d 0a 0a 66 75 6e 63 74 * max);.}..funct
0050: 69 6f 6e 20 69 6e 69 74 57 69 6e 61 6d 70 28 70 ion initWinamp(p
0060: 72 65 73 65 74 29 20 7b 0a 20 20 20 20 76 61 72 reset) {. var
0070: 20 63 61 6e 20 3d 20 64 6f 63 75 6d 65 6e 74 2e can = document.
0080: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 getElementById("
0090: 76 69 73 75 61 6c 22 29 3b 0a 20 20 20 20 63 61 visual");. ca
00a0: 6e 2e 68 65 69 67 68 74 20 3d 20 77 69 6e 64 6f n.height = windo
00b0: 77 2e 69 6e 6e 65 72 48 65 69 67 68 74 20 2d 20 w.innerHeight -
00c0: 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 (document.getEle
00d0: 6d 65 6e 74 42 79 49 64 28 22 68 65 61 64 65 72 mentById("header
00e0: 2d 70 6c 61 79 62 61 63 6b 22 29 2e 63 6c 69 65 -playback").clie
00f0: 6e 74 48 65 69 67 68 74 20 2f 20 32 29 3b 0a 20 ntHeight / 2);.
0100: 20 20 20 63 61 6e 2e 77 69 64 74 68 20 3d 20 77 can.width = w
0110: 69 6e 64 6f 77 2e 69 6e 6e 65 72 57 69 64 74 68 indow.innerWidth
0120: 3b 0a 20 20 20 20 76 61 72 20 63 61 6e 5f 63 6f ;. var can_co
0130: 6e 74 61 69 6e 65 72 20 3d 20 64 6f 63 75 6d 65 ntainer = docume
0140: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 nt.getElementByI
0150: 64 28 22 63 61 6e 76 61 73 2d 63 6f 6e 74 61 69 d("canvas-contai
0160: 6e 65 72 22 29 3b 0a 20 20 20 20 63 61 6e 5f 63 ner");. can_c
0170: 6f 6e 74 61 69 6e 65 72 2e 77 69 64 74 68 20 3d ontainer.width =
0180: 20 77 69 6e 64 6f 77 2e 69 6e 6e 65 72 57 69 64 window.innerWid
0190: 74 68 3b 0a 20 20 20 20 76 61 72 20 76 69 73 75 th;. var visu
01a0: 61 6c 69 7a 65 72 20 3d 20 77 69 6e 64 6f 77 2e alizer = window.
01b0: 62 75 74 74 65 72 63 68 75 72 6e 2e 64 65 66 61 butterchurn.defa
01c0: 75 6c 74 2e 63 72 65 61 74 65 56 69 73 75 61 6c ult.createVisual
01d0: 69 7a 65 72 28 54 6f 6e 65 2e 67 65 74 43 6f 6e izer(Tone.getCon
01e0: 74 65 78 74 28 29 2e 72 61 77 43 6f 6e 74 65 78 text().rawContex
01f0: 74 2c 20 63 61 6e 2c 20 7b 0a 20 20 20 20 20 20 t, can, {.
0200: 20 20 68 65 69 67 68 74 3a 20 77 69 6e 64 6f 77 height: window
0210: 2e 69 6e 6e 65 72 48 65 69 67 68 74 20 2d 20 28 .innerHeight - (
0220: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d document.getElem
0230: 65 6e 74 42 79 49 64 28 22 68 65 61 64 65 72 2d entById("header-
0240: 70 6c 61 79 62 61 63 6b 22 29 2e 63 6c 69 65 6e playback").clien
0250: 74 48 65 69 67 68 74 20 2f 20 32 29 2c 0a 20 20 tHeight / 2),.
0260: 20 20 20 20 20 20 77 69 64 74 68 3a 20 77 69 6e width: win
0270: 64 6f 77 2e 69 6e 6e 65 72 57 69 64 74 68 2c 0a dow.innerWidth,.
0280: 20 20 20 20 20 20 20 20 6d 65 73 68 57 69 64 74 meshWidt
0290: 68 3a 20 32 34 2c 0a 20 20 20 20 20 20 20 20 6d h: 24,. m
02a0: 65 73 68 48 65 69 67 68 74 3a 20 31 38 2c 0a 20 eshHeight: 18,.
02b0: 20 20 20 7d 29 3b 0a 20 20 20 20 76 69 73 75 61 });. visua
02c0: 6c 69 7a 65 72 2e 63 6f 6e 6e 65 63 74 41 75 64 lizer.connectAud
02d0: 69 6f 28 54 6f 6e 65 2e 67 65 74 43 6f 6e 74 65 io(Tone.getConte
02e0: 78 74 28 29 2e 64 65 73 74 69 6e 61 74 69 6f 6e xt().destination
02f0: 29 3b 0a 20 20 20 20 63 6f 6e 73 74 20 70 72 65 );. const pre
0300: 73 65 74 73 20 3d 20 77 69 6e 64 6f 77 2e 62 75 sets = window.bu
0310: 74 74 65 72 63 68 75 72 6e 50 72 65 73 65 74 73 tterchurnPresets
0320: 2e 67 65 74 50 72 65 73 65 74 73 28 29 3b 0a 20 .getPresets();.
0330: 20 20 20 63 6f 6e 73 74 20 70 72 65 73 65 74 50 const presetP
0340: 61 72 61 6d 20 3d 20 70 72 65 73 65 74 73 5b 70 aram = presets[p
0350: 72 65 73 65 74 5d 3b 0a 20 20 20 20 76 69 73 75 reset];. visu
0360: 61 6c 69 7a 65 72 2e 6c 6f 61 64 50 72 65 73 65 alizer.loadPrese
0370: 74 28 70 72 65 73 65 74 50 61 72 61 6d 2c 20 30 t(presetParam, 0
0380: 2e 30 29 3b 20 2f 2f 20 32 6e 64 20 61 72 67 75 .0); // 2nd argu
0390: 6d 65 6e 74 20 69 73 20 74 68 65 20 6e 75 6d 62 ment is the numb
03a0: 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 74 6f er of seconds to
03b0: 20 62 6c 65 6e 64 20 70 72 65 73 65 74 73 0a 20 blend presets.
03c0: 20 20 20 72 65 74 75 72 6e 20 76 69 73 75 61 6c return visual
03d0: 69 7a 65 72 3b 0a 7d 0a 0a 66 75 6e 63 74 69 6f izer;.}..functio
03e0: 6e 20 67 75 61 72 64 28 72 61 6e 67 65 29 20 7b n guard(range) {
03f0: 0a 20 20 20 20 76 61 72 20 73 74 61 74 65 20 3d . var state =
0400: 20 6e 75 6c 6c 3b 0a 20 20 20 20 72 65 74 75 72 null;. retur
0410: 6e 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 29 n function (val)
0420: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 {. if ((
0430: 76 61 6c 20 3e 3d 20 72 61 6e 67 65 5b 30 5d 29 val >= range[0])
0440: 20 26 26 20 28 76 61 6c 20 3c 3d 20 72 61 6e 67 && (val <= rang
0450: 65 5b 31 5d 29 29 20 7b 0a 20 20 20 20 20 20 20 e[1])) {.
0460: 20 20 20 20 20 73 74 61 74 65 20 3d 20 76 61 6c state = val
0470: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 ;. re
0480: 74 75 72 6e 20 76 61 6c 3b 0a 20 20 20 20 20 20 turn val;.
0490: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 } else {.
04a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 return st
04b0: 61 74 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ate;. }.
04c0: 20 20 20 7d 0a 7d 0a 0a 66 75 6e 63 74 69 6f 6e }.}..function
04d0: 20 72 6f 6d 61 6e 74 6f 67 79 70 73 79 28 68 65 romantogypsy(he
04e0: 78 29 20 7b 0a 20 20 20 20 76 61 72 20 6c 65 74 x) {. var let
04f0: 74 65 72 73 20 3d 20 68 65 78 2e 72 65 70 6c 61 ters = hex.repla
0500: 63 65 28 27 60 30 27 2c 27 61 27 29 3b 0a 20 20 ce('`0','a');.
0510: 20 20 6c 65 74 74 65 72 73 20 3d 20 6c 65 74 74 letters = lett
0520: 65 72 73 2e 72 65 70 6c 61 63 65 28 27 60 31 27 ers.replace('`1'
0530: 2c 27 62 27 29 3b 0a 20 20 20 20 6c 65 74 74 65 ,'b');. lette
0540: 72 73 20 3d 20 6c 65 74 74 65 72 73 2e 72 65 70 rs = letters.rep
0550: 6c 61 63 65 28 27 60 32 27 2c 27 63 27 29 3b 0a lace('`2','c');.
0560: 20 20 20 20 6c 65 74 74 65 72 73 20 3d 20 6c 65 letters = le
0570: 74 74 65 72 73 2e 72 65 70 6c 61 63 65 28 27 60 tters.replace('`
0580: 33 27 2c 27 64 27 29 3b 0a 20 20 20 20 6c 65 74 3','d');. let
0590: 74 65 72 73 20 3d 20 6c 65 74 74 65 72 73 2e 72 ters = letters.r
05a0: 65 70 6c 61 63 65 28 27 60 34 27 2c 27 65 27 29 eplace('`4','e')
05b0: 3b 0a 20 20 20 20 6c 65 74 74 65 72 73 20 3d 20 ;. letters =
05c0: 6c 65 74 74 65 72 73 2e 72 65 70 6c 61 63 65 28 letters.replace(
05d0: 27 60 35 27 2c 27 66 27 29 3b 0a 20 20 20 20 72 '`5','f');. r
05e0: 65 74 75 72 6e 20 6c 65 74 74 65 72 73 3b 0a 7d eturn letters;.}
05f0: 0a 0a 66 75 6e 63 74 69 6f 6e 20 6c 65 74 74 65 ..function lette
0600: 72 74 6f 64 65 63 28 6c 65 74 74 65 72 29 20 7b rtodec(letter) {
0610: 0a 20 20 20 20 76 61 72 20 62 69 6e 20 3d 20 22 . var bin = "
0620: 22 3b 0a 20 20 20 20 69 66 20 28 6c 65 74 74 65 ";. if (lette
0630: 72 2e 6d 61 74 63 68 28 2f 5c 64 2f 29 29 20 7b r.match(/\d/)) {
0640: 0a 20 20 20 20 20 20 20 20 6e 6f 20 3d 20 70 61 . no = pa
0650: 72 73 65 49 6e 74 28 6c 65 74 74 65 72 29 3b 0a rseInt(letter);.
0660: 20 20 20 20 7d 0a 20 20 20 20 65 6c 73 65 20 69 }. else i
0670: 66 20 28 6c 65 74 74 65 72 20 3d 3d 20 22 61 22 f (letter == "a"
0680: 29 20 7b 0a 20 20 20 20 20 20 20 20 6e 6f 20 3d ) {. no =
0690: 20 31 30 3b 0a 20 20 20 20 7d 0a 20 20 20 20 65 10;. }. e
06a0: 6c 73 65 20 69 66 20 28 6c 65 74 74 65 72 20 3d lse if (letter =
06b0: 3d 20 22 62 22 29 20 7b 0a 20 20 20 20 20 20 20 = "b") {.
06c0: 20 6e 6f 20 3d 20 31 31 3b 0a 20 20 20 20 7d 0a no = 11;. }.
06d0: 20 20 20 20 65 6c 73 65 20 69 66 20 28 6c 65 74 else if (let
06e0: 74 65 72 20 3d 3d 20 22 63 22 29 20 7b 0a 20 20 ter == "c") {.
06f0: 20 20 20 20 20 20 6e 6f 20 3d 20 31 32 3b 0a 20 no = 12;.
0700: 20 20 20 7d 0a 20 20 20 20 65 6c 73 65 20 69 66 }. else if
0710: 20 28 6c 65 74 74 65 72 20 3d 3d 20 22 64 22 29 (letter == "d")
0720: 20 7b 0a 20 20 20 20 20 20 20 20 6e 6f 20 3d 20 {. no =
0730: 31 33 3b 0a 20 20 20 20 7d 0a 20 20 20 20 65 6c 13;. }. el
0740: 73 65 20 69 66 20 28 6c 65 74 74 65 72 20 3d 3d se if (letter ==
0750: 20 22 65 22 29 20 7b 0a 20 20 20 20 20 20 20 20 "e") {.
0760: 6e 6f 20 3d 20 31 34 3b 0a 20 20 20 20 7d 0a 20 no = 14;. }.
0770: 20 20 20 65 6c 73 65 20 69 66 20 28 6c 65 74 74 else if (lett
0780: 65 72 20 3d 3d 20 22 66 22 29 20 7b 0a 20 20 20 er == "f") {.
0790: 20 20 20 20 20 6e 6f 20 3d 20 31 35 3b 0a 20 20 no = 15;.
07a0: 20 20 7d 0a 20 20 20 20 66 6f 72 20 28 69 20 3d }. for (i =
07b0: 20 31 3b 20 69 20 3c 3d 20 6e 6f 3b 20 69 2b 2b 1; i <= no; i++
07c0: 29 20 7b 0a 20 20 20 20 20 20 20 20 62 69 6e 20 ) {. bin
07d0: 2b 3d 20 22 30 22 3b 0a 20 20 20 20 7d 0a 20 20 += "0";. }.
07e0: 20 20 72 65 74 75 72 6e 20 62 69 6e 3b 0a 7d 0a return bin;.}.
07f0: 0a 66 75 6e 63 74 69 6f 6e 20 6c 65 74 74 65 72 .function letter
0800: 74 6f 62 69 6e 28 6c 65 74 74 65 72 29 20 7b 0a tobin(letter) {.
0810: 20 20 20 20 76 61 72 20 62 69 6e 20 3d 20 22 22 var bin = ""
0820: 3b 0a 20 20 20 20 69 66 20 28 6c 65 74 74 65 72 ;. if (letter
0830: 20 3d 3d 20 22 30 22 29 20 7b 0a 20 20 20 20 20 == "0") {.
0840: 20 20 20 62 69 6e 20 2b 3d 20 22 30 30 30 30 22 bin += "0000"
0850: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 ;. }. if (
0860: 6c 65 74 74 65 72 20 3d 3d 20 22 31 22 29 20 7b letter == "1") {
0870: 0a 20 20 20 20 20 20 20 20 62 69 6e 20 2b 3d 20 . bin +=
0880: 22 30 30 30 31 22 3b 0a 20 20 20 20 7d 0a 20 20 "0001";. }.
0890: 20 20 65 6c 73 65 20 69 66 20 28 6c 65 74 74 65 else if (lette
08a0: 72 20 3d 3d 20 22 32 22 29 20 7b 0a 20 20 20 20 r == "2") {.
08b0: 20 20 20 20 62 69 6e 20 2b 3d 20 22 30 30 31 30 bin += "0010
08c0: 22 3b 0a 20 20 20 20 7d 0a 20 20 20 20 65 6c 73 ";. }. els
08d0: 65 20 69 66 20 28 6c 65 74 74 65 72 20 3d 3d 20 e if (letter ==
08e0: 22 33 22 29 20 7b 0a 20 20 20 20 20 20 20 20 62 "3") {. b
08f0: 69 6e 20 2b 3d 20 22 30 30 31 31 22 3b 0a 20 20 in += "0011";.
0900: 20 20 7d 0a 20 20 20 20 65 6c 73 65 20 69 66 20 }. else if
0910: 28 6c 65 74 74 65 72 20 3d 3d 20 22 34 22 29 20 (letter == "4")
0920: 7b 0a 20 20 20 20 20 20 20 20 62 69 6e 20 2b 3d {. bin +=
0930: 20 22 30 31 30 30 22 3b 0a 20 20 20 20 7d 0a 20 "0100";. }.
0940: 20 20 20 65 6c 73 65 20 69 66 20 28 6c 65 74 74 else if (lett
0950: 65 72 20 3d 3d 20 22 35 22 29 20 7b 0a 20 20 20 er == "5") {.
0960: 20 20 20 20 20 62 69 6e 20 2b 3d 20 22 30 31 30 bin += "010
0970: 31 22 3b 0a 20 20 20 20 7d 0a 20 20 20 20 65 6c 1";. }. el
0980: 73 65 20 69 66 20 28 6c 65 74 74 65 72 20 3d 3d se if (letter ==
0990: 20 22 36 22 29 20 7b 0a 20 20 20 20 20 20 20 20 "6") {.
09a0: 62 69 6e 20 2b 3d 20 22 30 31 31 30 22 3b 0a 20 bin += "0110";.
09b0: 20 20 20 7d 0a 20 20 20 20 65 6c 73 65 20 69 66 }. else if
09c0: 20 28 6c 65 74 74 65 72 20 3d 3d 20 22 37 22 29 (letter == "7")
09d0: 20 7b 0a 20 20 20 20 20 20 20 20 62 69 6e 20 2b {. bin +
09e0: 3d 20 22 30 31 31 31 22 3b 0a 20 20 20 20 7d 0a = "0111";. }.
09f0: 20 20 20 20 65 6c 73 65 20 69 66 20 28 6c 65 74 else if (let
0a00: 74 65 72 20 3d 3d 20 22 38 22 29 20 7b 0a 20 20 ter == "8") {.
0a10: 20 20 20 20 20 20 62 69 6e 20 2b 3d 20 22 31 30 bin += "10
0a20: 30 30 22 3b 0a 20 20 20 20 7d 0a 20 20 20 20 65 00";. }. e
0a30: 6c 73 65 20 69 66 20 28 6c 65 74 74 65 72 20 3d lse if (letter =
0a40: 3d 20 22 39 22 29 20 7b 0a 20 20 20 20 20 20 20 = "9") {.
0a50: 20 62 69 6e 20 2b 3d 20 22 31 30 30 31 22 3b 0a bin += "1001";.
0a60: 20 20 20 20 7d 0a 20 20 20 20 65 6c 73 65 20 69 }. else i
0a70: 66 20 28 6c 65 74 74 65 72 20 3d 3d 20 22 61 22 f (letter == "a"
0a80: 29 20 7b 0a 20 20 20 20 20 20 20 20 62 69 6e 20 ) {. bin
0a90: 2b 3d 20 22 31 30 31 30 22 3b 0a 20 20 20 20 7d += "1010";. }
0aa0: 0a 20 20 20 20 65 6c 73 65 20 69 66 20 28 6c 65 . else if (le
0ab0: 74 74 65 72 20 3d 3d 20 22 62 22 29 20 7b 0a 20 tter == "b") {.
0ac0: 20 20 20 20 20 20 20 62 69 6e 20 2b 3d 20 22 31 bin += "1
0ad0: 30 31 31 22 3b 0a 20 20 20 20 7d 0a 20 20 20 20 011";. }.
0ae0: 65 6c 73 65 20 69 66 20 28 6c 65 74 74 65 72 20 else if (letter
0af0: 3d 3d 20 22 63 22 29 20 7b 0a 20 20 20 20 20 20 == "c") {.
0b00: 20 20 62 69 6e 20 2b 3d 20 22 31 31 30 30 22 3b bin += "1100";
0b10: 0a 20 20 20 20 7d 0a 20 20 20 20 65 6c 73 65 20 . }. else
0b20: 69 66 20 28 6c 65 74 74 65 72 20 3d 3d 20 22 64 if (letter == "d
0b30: 22 29 20 7b 0a 20 20 20 20 20 20 20 20 62 69 6e ") {. bin
0b40: 20 2b 3d 20 22 31 31 30 31 22 3b 0a 20 20 20 20 += "1101";.
0b50: 7d 0a 20 20 20 20 65 6c 73 65 20 69 66 20 28 6c }. else if (l
0b60: 65 74 74 65 72 20 3d 3d 20 22 65 22 29 20 7b 0a etter == "e") {.
0b70: 20 20 20 20 20 20 20 20 62 69 6e 20 2b 3d 20 22 bin += "
0b80: 31 31 31 30 22 3b 0a 20 20 20 20 7d 0a 20 20 20 1110";. }.
0b90: 20 65 6c 73 65 20 69 66 20 28 6c 65 74 74 65 72 else if (letter
0ba0: 20 3d 3d 20 22 66 22 29 20 7b 0a 20 20 20 20 20 == "f") {.
0bb0: 20 20 20 62 69 6e 20 2b 3d 20 22 31 31 31 31 22 bin += "1111"
0bc0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 ;. }. retu
0bd0: 72 6e 20 62 69 6e 3b 0a 7d 0a 0a 66 75 6e 63 74 rn bin;.}..funct
0be0: 69 6f 6e 20 68 65 78 32 62 69 6e 28 68 65 78 29 ion hex2bin(hex)
0bf0: 20 7b 0a 20 20 20 20 76 61 72 20 6c 65 74 74 65 {. var lette
0c00: 72 73 20 3d 20 72 6f 6d 61 6e 74 6f 67 79 70 73 rs = romantogyps
0c10: 79 28 68 65 78 29 0a 20 20 20 20 6c 65 74 74 65 y(hex). lette
0c20: 72 73 20 3d 20 6c 65 74 74 65 72 73 2e 73 70 6c rs = letters.spl
0c30: 69 74 28 27 27 29 3b 0a 20 20 20 20 76 61 72 20 it('');. var
0c40: 62 69 6e 20 3d 20 22 22 3b 0a 20 20 20 20 6c 65 bin = "";. le
0c50: 74 74 65 72 73 2e 6d 61 70 28 66 75 6e 63 74 69 tters.map(functi
0c60: 6f 6e 28 6c 65 74 74 65 72 29 20 7b 0a 20 20 20 on(letter) {.
0c70: 20 20 20 20 20 62 69 6e 20 2b 3d 20 6c 65 74 74 bin += lett
0c80: 65 72 74 6f 62 69 6e 28 6c 65 74 74 65 72 29 0a ertobin(letter).
0c90: 20 20 20 20 7d 29 0a 20 20 20 20 72 65 74 75 72 }). retur
0ca0: 6e 20 62 69 6e 3b 0a 7d 0a 0a 66 75 6e 63 74 69 n bin;.}..functi
0cb0: 6f 6e 20 67 65 74 5f 63 68 61 72 28 73 74 72 2c on get_char(str,
0cc0: 20 69 6e 64 65 78 29 20 7b 0a 20 20 20 20 69 66 index) {. if
0cd0: 20 28 28 69 6e 64 65 78 20 3e 20 30 29 20 26 26 ((index > 0) &&
0ce0: 20 28 69 6e 64 65 78 20 3c 20 73 74 72 2e 6c 65 (index < str.le
0cf0: 6e 67 74 68 29 29 20 7b 0a 20 20 20 20 20 20 20 ngth)) {.
0d00: 20 72 65 74 75 72 6e 20 73 74 72 5b 69 6e 64 65 return str[inde
0d10: 78 5d 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b x];. } else {
0d20: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
0d30: 6e 75 6c 6c 0a 20 20 20 20 7d 0a 7d 0a 0a 66 75 null. }.}..fu
0d40: 6e 63 74 69 6f 6e 20 70 61 74 74 65 72 6e 5f 6d nction pattern_m
0d50: 65 74 61 28 70 29 20 7b 0a 20 20 20 20 69 66 20 eta(p) {. if
0d60: 28 21 70 29 20 7b 0a 20 20 20 20 20 20 20 20 72 (!p) {. r
0d70: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0a 20 20 20 20 eturn null;.
0d80: 7d 0a 20 20 20 20 70 20 3d 20 70 2e 72 65 70 6c }. p = p.repl
0d90: 61 63 65 28 2f 20 2f 67 2c 20 22 22 29 3b 0a 20 ace(/ /g, "");.
0da0: 20 20 20 76 61 72 20 66 63 20 3d 20 70 2e 73 70 var fc = p.sp
0db0: 6c 69 74 28 27 27 29 5b 30 5d 3b 0a 20 20 20 20 lit('')[0];.
0dc0: 69 66 20 28 66 63 3d 3d 20 22 70 22 29 20 7b 0a if (fc== "p") {.
0dd0: 20 20 20 20 20 20 20 20 76 61 72 20 70 74 79 70 var ptyp
0de0: 65 20 3d 20 22 78 6f 22 3b 0a 20 20 20 20 20 20 e = "xo";.
0df0: 20 20 76 61 72 20 6c 20 3d 20 28 70 2e 6c 65 6e var l = (p.len
0e00: 67 74 68 20 2d 20 31 29 3b 0a 20 20 20 20 7d 0a gth - 1);. }.
0e10: 0a 20 20 20 20 69 66 20 28 70 74 79 70 65 20 3d . if (ptype =
0e20: 3d 20 22 78 6f 22 29 20 7b 0a 20 20 20 20 20 20 = "xo") {.
0e30: 20 20 76 61 72 20 66 70 20 3d 20 70 2e 73 75 62 var fp = p.sub
0e40: 73 74 72 28 31 29 3b 0a 20 20 20 20 20 20 20 20 str(1);.
0e50: 66 70 20 3d 20 66 70 2e 72 65 70 6c 61 63 65 28 fp = fp.replace(
0e60: 2f 78 2f 67 2c 20 22 31 22 29 3b 0a 20 20 20 20 /x/g, "1");.
0e70: 7d 0a 0a 20 20 20 20 69 66 20 28 21 66 70 29 20 }.. if (!fp)
0e80: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return
0e90: 20 6e 75 6c 6c 3b 0a 20 20 20 20 7d 0a 0a 20 20 null;. }..
0ea0: 20 20 76 61 72 20 64 6f 6e 65 20 3d 20 66 61 6c var done = fal
0eb0: 73 65 3b 0a 20 20 20 20 76 61 72 20 69 6e 64 65 se;. var inde
0ec0: 78 20 3d 20 30 3b 0a 20 20 20 20 76 61 72 20 6d x = 0;. var m
0ed0: 65 74 61 20 3d 20 7b 7d 0a 20 20 20 20 76 61 72 eta = {}. var
0ee0: 20 6f 6e 65 5f 69 6e 64 65 78 20 3d 20 31 3b 0a one_index = 1;.
0ef0: 0a 20 20 20 20 77 68 69 6c 65 28 31 29 20 7b 0a . while(1) {.
0f00: 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65 if (inde
0f10: 78 20 3e 20 66 70 2e 6c 65 6e 67 74 68 29 20 7b x > fp.length) {
0f20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 . bre
0f30: 61 6b 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ak;. }.
0f40: 20 20 20 20 20 20 76 61 72 20 63 75 72 72 65 6e var curren
0f50: 74 5f 6d 65 74 61 20 3d 20 7b 7d 0a 20 20 20 20 t_meta = {}.
0f60: 20 20 20 20 76 61 72 20 63 75 72 72 65 6e 74 5f var current_
0f70: 6c 65 74 74 65 72 20 3d 20 66 70 5b 69 6e 64 65 letter = fp[inde
0f80: 78 5d 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 x]. if (c
0f90: 75 72 72 65 6e 74 5f 6c 65 74 74 65 72 20 3d 3d urrent_letter ==
0fa0: 20 22 5f 22 29 20 7b 0a 20 20 20 20 20 20 20 20 "_") {.
0fb0: 20 20 20 20 6d 65 74 61 5b 6f 6e 65 5f 69 6e 64 meta[one_ind
0fc0: 65 78 20 2d 31 5d 20 3d 20 7b 22 76 6f 6c 75 6d ex -1] = {"volum
0fd0: 65 22 3a 20 22 6f 66 66 22 20 7d 3b 0a 20 20 20 e": "off" };.
0fe0: 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 2b index +
0ff0: 3d 20 32 3b 0a 20 20 20 20 20 20 20 20 20 20 20 = 2;.
1000: 20 6f 6e 65 5f 69 6e 64 65 78 20 2b 3d 20 32 3b one_index += 2;
1010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e . con
1020: 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 20 20 7d tinue;. }
1030: 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 . else if
1040: 20 28 63 75 72 72 65 6e 74 5f 6c 65 74 74 65 72 (current_letter
1050: 20 3d 3d 20 22 31 22 29 20 7b 0a 20 20 20 20 20 == "1") {.
1060: 20 20 20 20 20 20 20 76 61 72 20 6e 65 78 74 5f var next_
1070: 6c 65 74 74 65 72 20 3d 20 67 65 74 5f 63 68 61 letter = get_cha
1080: 72 28 66 70 2c 69 6e 64 65 78 20 2b 20 31 29 3b r(fp,index + 1);
1090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
10a0: 28 6e 65 78 74 5f 6c 65 74 74 65 72 20 3d 3d 20 (next_letter ==
10b0: 22 5b 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20 "[") {.
10c0: 20 20 20 20 20 20 20 76 61 72 20 6a 75 6d 70 5f var jump_
10d0: 69 6e 64 65 78 20 3d 20 31 3b 0a 20 20 20 20 20 index = 1;.
10e0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 62 var b
10f0: 75 66 66 65 72 20 3d 20 22 22 3b 0a 20 20 20 20 uffer = "";.
1100: 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c whil
1110: 65 28 31 29 20 7b 0a 20 20 20 20 20 20 20 20 20 e(1) {.
1120: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 if ((
1130: 28 69 6e 64 65 78 20 2b 20 31 29 20 2b 20 6a 75 (index + 1) + ju
1140: 6d 70 5f 69 6e 64 65 78 29 20 3e 20 66 70 2e 6c mp_index) > fp.l
1150: 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 20 20 ength) {.
1160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1170: 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 break;.
1180: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }.
1190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
11a0: 20 20 6c 65 74 20 62 5f 6e 65 78 74 5f 6c 65 74 let b_next_let
11b0: 74 65 72 20 3d 20 67 65 74 5f 63 68 61 72 28 66 ter = get_char(f
11c0: 70 2c 20 28 28 69 6e 64 65 78 20 2b 20 31 29 20 p, ((index + 1)
11d0: 2b 20 6a 75 6d 70 5f 69 6e 64 65 78 29 29 3b 0a + jump_index));.
11e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
11f0: 20 20 20 20 20 69 66 20 28 62 5f 6e 65 78 74 5f if (b_next_
1200: 6c 65 74 74 65 72 20 3d 3d 20 22 5d 22 29 20 7b letter == "]") {
1210: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1220: 20 20 20 20 20 20 20 20 20 6a 75 6d 70 5f 69 6e jump_in
1230: 64 65 78 20 2b 3d 20 32 3b 0a 20 20 20 20 20 20 dex += 2;.
1240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1250: 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 break;.
1260: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 } e
1270: 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 lse {.
1280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 bu
1290: 66 66 65 72 20 2b 3d 20 62 5f 6e 65 78 74 5f 6c ffer += b_next_l
12a0: 65 74 74 65 72 3b 0a 20 20 20 20 20 20 20 20 20 etter;.
12b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a j
12c0: 75 6d 70 5f 69 6e 64 65 78 20 2b 3d 20 31 3b 0a ump_index += 1;.
12d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12e0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }.
12f0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
1300: 20 20 20 20 20 20 20 20 76 61 72 20 69 6e 64 69 var indi
1310: 76 69 64 75 61 6c 5f 6d 65 74 61 20 3d 20 62 75 vidual_meta = bu
1320: 66 66 65 72 2e 73 70 6c 69 74 28 22 3b 22 29 0a ffer.split(";").
1330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1340: 69 6e 64 69 76 69 64 75 61 6c 5f 6d 65 74 61 2e individual_meta.
1350: 6d 61 70 28 66 75 6e 63 74 69 6f 6e 20 28 65 29 map(function (e)
1360: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
1370: 20 20 20 20 20 20 20 69 66 20 28 65 2e 73 74 61 if (e.sta
1380: 72 74 73 57 69 74 68 28 22 5f 22 29 29 20 7b 0a rtsWith("_")) {.
1390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13a0: 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f current_
13b0: 6d 65 74 61 5b 22 70 61 6e 22 5d 20 3d 20 65 2e meta["pan"] = e.
13c0: 73 75 62 73 74 72 69 6e 67 28 31 29 0a 20 20 20 substring(1).
13d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13e0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }.
13f0: 20 20 20 20 20 20 20 69 66 20 28 65 2e 73 74 61 if (e.sta
1400: 72 74 73 57 69 74 68 28 22 5e 22 29 29 20 7b 0a rtsWith("^")) {.
1410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1420: 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f current_
1430: 6d 65 74 61 5b 22 70 69 74 63 68 22 5d 20 3d 20 meta["pitch"] =
1440: 65 2e 73 75 62 73 74 72 69 6e 67 28 31 29 0a 20 e.substring(1).
1450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1460: 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 65 2e } else if (e.
1470: 73 74 61 72 74 73 57 69 74 68 28 22 2b 22 29 29 startsWith("+"))
1480: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
1490: 20 20 20 20 20 20 20 20 20 20 20 63 75 72 72 65 curre
14a0: 6e 74 5f 6d 65 74 61 5b 22 64 65 6c 61 79 22 5d nt_meta["delay"]
14b0: 20 3d 20 65 0a 20 20 20 20 20 20 20 20 20 20 20 = e.
14c0: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
14d0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
14e0: 20 20 20 20 20 20 20 20 20 20 63 75 72 72 65 6e curren
14f0: 74 5f 6d 65 74 61 5b 22 76 6f 6c 75 6d 65 22 5d t_meta["volume"]
1500: 20 3d 20 65 0a 20 20 20 20 20 20 20 20 20 20 20 = e.
1510: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }.
1520: 20 20 20 20 20 20 20 20 20 20 20 7d 29 0a 20 20 }).
1530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 me
1540: 74 61 5b 6f 6e 65 5f 69 6e 64 65 78 20 2d 31 5d ta[one_index -1]
1550: 20 3d 20 63 75 72 72 65 6e 74 5f 6d 65 74 61 0a = current_meta.
1560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1570: 69 6e 64 65 78 20 2b 3d 20 6a 75 6d 70 5f 69 6e index += jump_in
1580: 64 65 78 3b 0a 20 20 20 20 20 20 20 20 20 20 20 dex;.
1590: 20 20 20 20 20 6f 6e 65 5f 69 6e 64 65 78 20 2b one_index +
15a0: 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 = 1;.
15b0: 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 continue;.
15c0: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
15d0: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e {.
15e0: 20 20 20 20 6d 65 74 61 5b 6f 6e 65 5f 69 6e 64 meta[one_ind
15f0: 65 78 20 2d 31 5d 20 3d 20 63 75 72 72 65 6e 74 ex -1] = current
1600: 5f 6d 65 74 61 0a 20 20 20 20 20 20 20 20 20 20 _meta.
1610: 20 20 20 20 20 20 6f 6e 65 5f 69 6e 64 65 78 20 one_index
1620: 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 += 1;.
1630: 20 20 20 20 20 20 69 6e 64 65 78 20 2b 3d 20 31 index += 1
1640: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
1650: 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 continue;.
1660: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }.
1670: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 } else {.
1680: 20 20 20 20 20 20 20 69 66 20 28 63 75 72 72 65 if (curre
1690: 6e 74 5f 6c 65 74 74 65 72 20 3d 3d 20 22 2a 22 nt_letter == "*"
16a0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {.
16b0: 20 20 20 20 76 61 72 20 6e 65 78 74 5f 6c 65 74 var next_let
16c0: 74 65 72 20 3d 20 67 65 74 5f 63 68 61 72 28 66 ter = get_char(f
16d0: 70 2c 69 6e 64 65 78 20 2b 20 31 29 3b 0a 20 20 p,index + 1);.
16e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
16f0: 20 28 6e 65 78 74 5f 6c 65 74 74 65 72 20 3d 3d (next_letter ==
1700: 20 22 60 22 29 20 7b 0a 20 20 20 20 20 20 20 20 "`") {.
1710: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 inde
1720: 78 20 2b 3d 20 33 3b 0a 20 20 20 20 20 20 20 20 x += 3;.
1730: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
1740: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1750: 20 20 20 20 20 69 6e 64 65 78 20 2b 3d 20 32 3b index += 2;
1760: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1770: 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 continue;.
1780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
1790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
17a0: 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 lse {.
17b0: 20 20 20 20 20 20 69 6e 64 65 78 20 2b 3d 20 31 index += 1
17c0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
17d0: 20 20 6f 6e 65 5f 69 6e 64 65 78 20 2b 3d 20 31 one_index += 1
17e0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;.
17f0: 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 continue;.
1800: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }.
1810: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 }. }. re
1820: 74 75 72 6e 20 6d 65 74 61 3b 0a 7d 0a 0a 77 69 turn meta;.}..wi
1830: 6e 64 6f 77 2e 70 61 74 74 65 72 6e 5f 6d 65 74 ndow.pattern_met
1840: 61 20 3d 20 70 61 74 74 65 72 6e 5f 6d 65 74 61 a = pattern_meta
1850: 3b 0a 0a 0a 66 75 6e 63 74 69 6f 6e 20 63 75 65 ;...function cue
1860: 28 68 74 6d 6c 2c 20 73 65 63 6f 6e 64 73 20 3d (html, seconds =
1870: 20 35 29 20 7b 0a 20 20 20 20 20 20 20 20 24 28 5) {. $(
1880: 22 23 63 75 65 64 22 29 2e 68 74 6d 6c 28 68 74 "#cued").html(ht
1890: 6d 6c 29 3b 0a 20 20 20 20 20 20 20 20 73 65 74 ml);. set
18a0: 54 69 6d 65 6f 75 74 28 66 75 6e 63 74 69 6f 6e Timeout(function
18b0: 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 () {.
18c0: 20 20 24 28 22 23 63 75 65 64 22 29 2e 68 74 6d $("#cued").htm
18d0: 6c 28 22 22 29 3b 0a 20 20 20 20 20 20 20 20 7d l("");. }
18e0: 2c 20 73 65 63 6f 6e 64 73 20 2a 20 31 30 30 30 , seconds * 1000
18f0: 29 0a 7d 0a 0a 77 69 6e 64 6f 77 2e 63 75 65 20 ).}..window.cue
1900: 3d 20 63 75 65 3b 0a 0a 61 73 79 6e 63 20 66 75 = cue;..async fu
1910: 6e 63 74 69 6f 6e 20 6c 6f 61 64 53 61 6d 70 6c nction loadSampl
1920: 65 73 54 6f 57 6f 72 6b 6c 65 74 28 75 72 6c 73 esToWorklet(urls
1930: 29 20 7b 0a 20 20 20 20 76 61 72 20 63 6f 6e 74 ) {. var cont
1940: 65 78 74 20 3d 20 54 6f 6e 65 2e 67 65 74 43 6f ext = Tone.getCo
1950: 6e 74 65 78 74 28 29 3b 0a 20 20 20 20 77 69 6e ntext();. win
1960: 64 6f 77 2e 63 6f 6e 74 65 78 74 20 3d 20 63 6f dow.context = co
1970: 6e 74 65 78 74 3b 0a 20 20 20 20 61 77 61 69 74 ntext;. await
1980: 20 63 6f 6e 74 65 78 74 2e 61 64 64 41 75 64 69 context.addAudi
1990: 6f 57 6f 72 6b 6c 65 74 4d 6f 64 75 6c 65 28 27 oWorkletModule('
19a0: 2f 73 61 6d 70 6c 65 72 2e 6a 73 27 2c 20 27 73 /sampler.js', 's
19b0: 61 6d 70 6c 65 72 27 29 3b 0a 20 20 20 20 76 61 ampler');. va
19c0: 72 20 73 61 6d 70 6c 65 72 20 3d 20 61 77 61 69 r sampler = awai
19d0: 74 20 63 6f 6e 74 65 78 74 2e 63 72 65 61 74 65 t context.create
19e0: 41 75 64 69 6f 57 6f 72 6b 6c 65 74 4e 6f 64 65 AudioWorkletNode
19f0: 28 27 73 61 6d 70 6c 65 72 27 2c 20 7b 0a 20 20 ('sampler', {.
1a00: 20 20 20 20 20 20 6f 75 74 70 75 74 43 68 61 6e outputChan
1a10: 6e 65 6c 43 6f 75 6e 74 3a 20 5b 32 5d 2c 20 20 nelCount: [2],
1a20: 2f 2f 20 73 74 65 72 65 6f 0a 20 20 20 20 7d 29 // stereo. })
1a30: 3b 0a 20 20 20 20 77 69 6e 64 6f 77 2e 73 61 6d ;. window.sam
1a40: 70 6c 65 72 20 3d 20 73 61 6d 70 6c 65 72 3b 0a pler = sampler;.
1a50: 20 20 20 20 76 61 72 20 66 69 6c 65 73 20 3d 20 var files =
1a60: 5b 5d 0a 20 20 20 20 66 6f 72 20 28 76 61 72 20 []. for (var
1a70: 69 20 3d 20 30 3b 20 69 20 3c 20 75 72 6c 73 2e i = 0; i < urls.
1a80: 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 20 length; i++) {.
1a90: 20 20 20 20 20 20 20 76 61 72 20 75 72 6c 20 3d var url =
1aa0: 20 75 72 6c 73 5b 69 5d 0a 20 20 20 20 20 20 20 urls[i].
1ab0: 20 63 6f 6e 73 74 20 73 6f 75 72 63 65 20 3d 20 const source =
1ac0: 63 6f 6e 74 65 78 74 2e 63 72 65 61 74 65 42 75 context.createBu
1ad0: 66 66 65 72 53 6f 75 72 63 65 28 29 3b 0a 20 20 fferSource();.
1ae0: 20 20 20 20 20 20 63 6f 6e 73 74 20 61 75 64 69 const audi
1af0: 6f 42 75 66 66 65 72 20 3d 20 61 77 61 69 74 20 oBuffer = await
1b00: 66 65 74 63 68 28 75 72 6c 29 0a 20 20 20 20 20 fetch(url).
1b10: 20 20 20 20 20 20 20 2e 74 68 65 6e 28 72 65 73 .then(res
1b20: 20 3d 3e 20 72 65 73 2e 61 72 72 61 79 42 75 66 => res.arrayBuf
1b30: 66 65 72 28 29 29 0a 20 20 20 20 20 20 20 20 20 fer()).
1b40: 20 20 20 2e 74 68 65 6e 28 41 72 72 61 79 42 75 .then(ArrayBu
1b50: 66 66 65 72 20 3d 3e 20 63 6f 6e 74 65 78 74 2e ffer => context.
1b60: 64 65 63 6f 64 65 41 75 64 69 6f 44 61 74 61 28 decodeAudioData(
1b70: 41 72 72 61 79 42 75 66 66 65 72 29 29 3b 0a 0a ArrayBuffer));..
1b80: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 70 63 const pc
1b90: 6d 4c 65 66 74 20 3d 20 20 61 75 64 69 6f 42 75 mLeft = audioBu
1ba0: 66 66 65 72 2e 67 65 74 43 68 61 6e 6e 65 6c 44 ffer.getChannelD
1bb0: 61 74 61 28 30 29 0a 20 20 20 20 20 20 20 20 63 ata(0). c
1bc0: 6f 6e 73 74 20 70 63 6d 52 69 67 68 74 20 3d 20 onst pcmRight =
1bd0: 61 75 64 69 6f 42 75 66 66 65 72 2e 67 65 74 43 audioBuffer.getC
1be0: 68 61 6e 6e 65 6c 44 61 74 61 28 31 29 0a 20 20 hannelData(1).
1bf0: 20 20 20 20 20 20 66 69 6c 65 73 2e 70 75 73 68 files.push
1c00: 28 7b 20 70 63 6d 4c 65 66 74 2c 20 70 63 6d 52 ({ pcmLeft, pcmR
1c10: 69 67 68 74 20 7d 29 0a 20 20 20 20 7d 0a 20 20 ight }). }.
1c20: 20 20 73 61 6d 70 6c 65 72 2e 70 6f 72 74 2e 70 sampler.port.p
1c30: 6f 73 74 4d 65 73 73 61 67 65 28 7b 20 69 6e 69 ostMessage({ ini
1c40: 74 3a 20 20 66 69 6c 65 73 20 7d 29 0a 20 20 20 t: files }).
1c50: 20 63 6f 6e 74 65 78 74 2e 72 61 77 43 6f 6e 74 context.rawCont
1c60: 65 78 74 2e 72 65 73 75 6d 65 28 29 3b 0a 20 20 ext.resume();.
1c70: 20 20 73 61 6d 70 6c 65 72 2e 63 6f 6e 6e 65 63 sampler.connec
1c80: 74 28 54 6f 6e 65 2e 67 65 74 43 6f 6e 74 65 78 t(Tone.getContex
1c90: 74 28 29 2e 72 61 77 43 6f 6e 74 65 78 74 2e 64 t().rawContext.d
1ca0: 65 73 74 69 6e 61 74 69 6f 6e 29 3b 0a 7d 0a 0a estination);.}..
1cb0: 66 75 6e 63 74 69 6f 6e 20 53 61 6d 70 6c 65 28 function Sample(
1cc0: 6e 61 6d 65 2c 20 6e 6f 2c 20 66 69 6c 74 65 72 name, no, filter
1cd0: 2c 20 76 6f 6c 75 6d 65 29 20 7b 0a 20 20 20 20 , volume) {.
1ce0: 6e 61 6d 65 20 3d 20 6e 61 6d 65 0a 20 20 20 20 name = name.
1cf0: 66 69 6c 74 65 72 20 3d 20 66 69 6c 74 65 72 20 filter = filter
1d00: 7c 7c 20 31 30 30 30 30 0a 20 20 20 20 76 6f 6c || 10000. vol
1d10: 75 6d 65 20 3d 20 76 6f 6c 75 6d 65 20 7c 7c 20 ume = volume ||
1d20: 30 0a 20 20 20 20 6d 65 6d 5b 6e 61 6d 65 20 2b 0. mem[name +
1d30: 20 22 5f 66 69 6c 74 65 72 22 5d 20 3d 20 6e 65 "_filter"] = ne
1d40: 77 20 54 6f 6e 65 2e 46 69 6c 74 65 72 28 66 69 w Tone.Filter(fi
1d50: 6c 74 65 72 2c 20 27 6c 6f 77 70 61 73 73 27 2c lter, 'lowpass',
1d60: 20 2d 39 36 29 3b 0a 20 20 20 20 6d 65 6d 5b 6e -96);. mem[n
1d70: 61 6d 65 20 2b 20 22 5f 63 68 61 6e 6e 65 6c 22 ame + "_channel"
1d80: 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 68 61 ] = new Tone.Cha
1d90: 6e 6e 65 6c 28 7b 63 68 61 6e 6e 65 6c 43 6f 75 nnel({channelCou
1da0: 6e 74 3a 20 32 2c 20 76 6f 6c 75 6d 65 3a 20 76 nt: 2, volume: v
1db0: 6f 6c 75 6d 65 7d 29 2e 63 68 61 69 6e 28 6d 65 olume}).chain(me
1dc0: 6d 5b 6e 61 6d 65 20 2b 20 22 5f 66 69 6c 74 65 m[name + "_filte
1dd0: 72 22 5d 2c 20 6d 65 6d 2e 6d 61 73 74 65 72 29 r"], mem.master)
1de0: 0a 20 20 20 20 73 61 6d 70 6c 65 73 5b 6e 6f 5d . samples[no]
1df0: 2e 63 6f 6e 6e 65 63 74 28 6d 65 6d 5b 6e 61 6d .connect(mem[nam
1e00: 65 20 2b 20 22 5f 63 68 61 6e 6e 65 6c 22 5d 29 e + "_channel"])
1e10: 3b 0a 20 20 20 20 68 69 74 5f 6d 61 70 5b 6e 61 ;. hit_map[na
1e20: 6d 65 5d 20 3d 20 6e 6f 3b 0a 7d 0a 0a 77 69 6e me] = no;.}..win
1e30: 64 6f 77 2e 53 61 6d 70 6c 65 20 3d 20 53 61 6d dow.Sample = Sam
1e40: 70 6c 65 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 70 ple;..function p
1e50: 77 28 73 2c 20 76 6f 6c 2c 20 6e 6f 74 65 2c 20 w(s, vol, note,
1e60: 6c 65 6e 2c 20 64 65 6c 61 79 2c 20 70 61 6e 3d len, delay, pan=
1e70: 30 29 20 7b 0a 20 20 20 20 77 69 6e 64 6f 77 2e 0) {. window.
1e80: 73 61 6d 70 6c 65 72 2e 70 6f 72 74 2e 70 6f 73 sampler.port.pos
1e90: 74 4d 65 73 73 61 67 65 28 7b 20 6e 6f 74 65 4f tMessage({ noteO
1ea0: 6e 3a 20 74 72 75 65 2c 20 73 61 6d 70 6c 65 3a n: true, sample:
1eb0: 20 73 2c 20 76 6f 6c 75 6d 65 3a 20 76 6f 6c 7d s, volume: vol}
1ec0: 29 3b 0a 7d 0a 0a 77 69 6e 64 6f 77 2e 70 77 20 );.}..window.pw
1ed0: 3d 20 70 77 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 = pw;..function
1ee0: 70 28 73 2c 20 76 6f 6c 2c 20 6e 6f 74 65 2c 20 p(s, vol, note,
1ef0: 6c 65 6e 2c 20 64 65 6c 61 79 2c 20 70 61 6e 3d len, delay, pan=
1f00: 30 29 20 7b 0a 20 20 20 20 6e 6f 74 65 20 3d 20 0) {. note =
1f10: 6e 6f 74 65 20 7c 7c 20 22 43 33 22 0a 20 20 20 note || "C3".
1f20: 20 6c 65 6e 20 3d 20 6c 65 6e 20 7c 7c 20 22 31 len = len || "1
1f30: 36 6e 22 0a 20 20 20 20 76 6f 6c 20 3d 20 76 6f 6n". vol = vo
1f40: 6c 20 7c 7c 20 31 0a 20 20 20 20 64 65 6c 61 79 l || 1. delay
1f50: 20 3d 20 64 65 6c 61 79 20 7c 7c 20 22 2b 30 22 = delay || "+0"
1f60: 3b 0a 20 20 20 20 66 6f 72 20 28 63 6f 6e 73 74 ;. for (const
1f70: 20 5b 6b 65 79 2c 20 76 61 6c 75 65 5d 20 6f 66 [key, value] of
1f80: 20 4f 62 6a 65 63 74 2e 65 6e 74 72 69 65 73 28 Object.entries(
1f90: 68 69 74 5f 6d 61 70 29 29 20 7b 0a 20 20 20 20 hit_map)) {.
1fa0: 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d if (value ==
1fb0: 20 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 s) {.
1fc0: 20 20 6d 65 6d 5b 6b 65 79 20 2b 20 22 5f 6c 61 mem[key + "_la
1fd0: 73 74 22 5d 20 3d 20 63 6f 75 6e 74 0a 20 20 20 st"] = count.
1fe0: 20 20 20 20 20 20 20 20 20 6d 65 6d 5b 6b 65 79 mem[key
1ff0: 20 2b 20 22 5f 63 68 61 6e 6e 65 6c 22 5d 2e 70 + "_channel"].p
2000: 61 6e 2e 76 61 6c 75 65 20 3d 20 70 61 6e 0a 20 an.value = pan.
2010: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 }. }.
2020: 20 20 20 73 61 6d 70 6c 65 73 5b 73 5d 2e 74 72 samples[s].tr
2030: 69 67 67 65 72 41 74 74 61 63 6b 52 65 6c 65 61 iggerAttackRelea
2040: 73 65 28 6e 6f 74 65 2c 20 6c 65 6e 2c 20 64 65 se(note, len, de
2050: 6c 61 79 2c 20 76 6f 6c 29 3b 0a 7d 0a 0a 77 69 lay, vol);.}..wi
2060: 6e 64 6f 77 2e 70 20 3d 20 70 3b 0a 0a 66 75 6e ndow.p = p;..fun
2070: 63 74 69 6f 6e 20 70 31 28 73 2c 20 76 6f 6c 2c ction p1(s, vol,
2080: 20 6e 6f 74 65 2c 20 6c 65 6e 2c 20 64 65 6c 61 note, len, dela
2090: 79 2c 20 70 61 6e 3d 30 29 20 7b 0a 20 20 20 20 y, pan=0) {.
20a0: 6e 6f 74 65 20 3d 20 6e 6f 74 65 20 7c 7c 20 22 note = note || "
20b0: 43 33 22 0a 20 20 20 20 6c 65 6e 20 3d 20 6c 65 C3". len = le
20c0: 6e 20 7c 7c 20 22 31 36 6e 22 0a 20 20 20 20 76 n || "16n". v
20d0: 6f 6c 20 3d 20 76 6f 6c 20 7c 7c 20 31 0a 20 20 ol = vol || 1.
20e0: 20 20 64 65 6c 61 79 20 3d 20 64 65 6c 61 79 20 delay = delay
20f0: 7c 7c 20 22 2b 30 22 3b 0a 0a 20 20 20 66 6f 72 || "+0";.. for
2100: 20 28 63 6f 6e 73 74 20 5b 6b 65 79 2c 20 76 61 (const [key, va
2110: 6c 75 65 5d 20 6f 66 20 4f 62 6a 65 63 74 2e 65 lue] of Object.e
2120: 6e 74 72 69 65 73 28 68 69 74 5f 6d 61 70 29 29 ntries(hit_map))
2130: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 {. if (v
2140: 61 6c 75 65 20 3d 3d 20 28 73 20 2d 20 31 29 29 alue == (s - 1))
2150: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d {. m
2160: 65 6d 5b 6b 65 79 20 2b 20 22 5f 6c 61 73 74 22 em[key + "_last"
2170: 5d 20 3d 20 63 6f 75 6e 74 0a 20 20 20 20 20 20 ] = count.
2180: 20 20 20 20 20 20 6d 65 6d 5b 6b 65 79 20 2b 20 mem[key +
2190: 22 5f 63 68 61 6e 6e 65 6c 22 5d 2e 70 61 6e 2e "_channel"].pan.
21a0: 76 61 6c 75 65 20 3d 20 70 61 6e 0a 0a 20 20 20 value = pan..
21b0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }.
21c0: 20 73 61 6d 70 6c 65 73 5b 73 20 2d 20 31 5d 2e samples[s - 1].
21d0: 74 72 69 67 67 65 72 41 74 74 61 63 6b 52 65 6c triggerAttackRel
21e0: 65 61 73 65 28 6e 6f 74 65 2c 20 6c 65 6e 2c 20 ease(note, len,
21f0: 64 65 6c 61 79 2c 20 76 6f 6c 29 3b 0a 20 0a 7d delay, vol);. .}
2200: 0a 0a 77 69 6e 64 6f 77 2e 70 31 20 3d 20 70 31 ..window.p1 = p1
2210: 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 70 6e 28 73 ;..function pn(s
2220: 2c 20 76 6f 6c 2c 20 6e 6f 74 65 2c 20 6c 65 6e , vol, note, len
2230: 2c 20 64 65 6c 61 79 2c 20 70 61 6e 3d 30 29 20 , delay, pan=0)
2240: 7b 0a 20 20 20 20 73 61 6d 70 6c 65 5f 6e 6f 20 {. sample_no
2250: 3d 20 68 69 74 5f 6d 61 70 5b 73 5d 0a 20 20 20 = hit_map[s].
2260: 20 6e 6f 74 65 20 3d 20 6e 6f 74 65 20 7c 7c 20 note = note ||
2270: 22 43 33 22 0a 20 20 20 20 6c 65 6e 20 3d 20 6c "C3". len = l
2280: 65 6e 20 7c 7c 20 22 31 36 6e 22 0a 20 20 20 20 en || "16n".
2290: 76 6f 6c 20 3d 20 76 6f 6c 20 7c 7c 20 31 0a 20 vol = vol || 1.
22a0: 20 20 20 64 65 6c 61 79 20 3d 20 64 65 6c 61 79 delay = delay
22b0: 20 7c 7c 20 22 2b 30 22 3b 0a 0a 20 20 20 20 0a || "+0";.. .
22c0: 20 20 20 20 66 6f 72 20 28 63 6f 6e 73 74 20 5b for (const [
22d0: 6b 65 79 2c 20 76 61 6c 75 65 5d 20 6f 66 20 4f key, value] of O
22e0: 62 6a 65 63 74 2e 65 6e 74 72 69 65 73 28 68 69 bject.entries(hi
22f0: 74 5f 6d 61 70 29 29 20 7b 0a 20 20 20 20 09 69 t_map)) {. .i
2300: 66 20 28 76 61 6c 75 65 20 3d 3d 20 73 61 6d 70 f (value == samp
2310: 6c 65 5f 6e 6f 29 20 7b 0a 09 20 20 20 20 09 6d le_no) {.. .m
2320: 65 6d 5b 6b 65 79 20 2b 20 22 5f 6c 61 73 74 22 em[key + "_last"
2330: 5d 20 3d 20 63 6f 75 6e 74 0a 20 20 20 20 20 20 ] = count.
2340: 20 20 20 20 20 20 6d 65 6d 5b 6b 65 79 20 2b 20 mem[key +
2350: 22 5f 63 68 61 6e 6e 65 6c 22 5d 2e 70 61 6e 2e "_channel"].pan.
2360: 76 61 6c 75 65 20 3d 20 70 61 6e 0a 0a 09 20 20 value = pan...
2370: 20 20 7d 0a 20 20 09 7d 0a 20 20 20 20 0a 20 20 }. .}. .
2380: 20 20 73 61 6d 70 6c 65 73 5b 73 61 6d 70 6c 65 samples[sample
2390: 5f 6e 6f 5d 2e 74 72 69 67 67 65 72 41 74 74 61 _no].triggerAtta
23a0: 63 6b 52 65 6c 65 61 73 65 28 6e 6f 74 65 2c 20 ckRelease(note,
23b0: 6c 65 6e 2c 20 64 65 6c 61 79 2c 20 76 6f 6c 29 len, delay, vol)
23c0: 3b 0a 0a 7d 0a 0a 77 69 6e 64 6f 77 2e 70 6e 20 ;..}..window.pn
23d0: 3d 20 70 6e 3b 0a 0a 0a 0a 66 75 6e 63 74 69 6f = pn;....functio
23e0: 6e 20 70 61 74 74 65 72 6e 5f 70 61 72 73 65 28 n pattern_parse(
23f0: 70 29 20 7b 0a 20 20 20 20 69 66 20 28 21 70 29 p) {. if (!p)
2400: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur
2410: 6e 20 22 22 3b 0a 20 20 20 20 7d 0a 20 20 20 20 n "";. }.
2420: 70 20 3d 20 70 2e 72 65 70 6c 61 63 65 28 2f 20 p = p.replace(/
2430: 2f 67 2c 20 22 22 29 3b 0a 20 20 20 20 70 20 3d /g, "");. p =
2440: 20 70 2e 72 65 70 6c 61 63 65 28 2f 5c 5b 2e 2b p.replace(/\[.+
2450: 3f 5c 5d 2f 67 2c 20 22 22 29 3b 0a 20 20 20 20 ?\]/g, "");.
2460: 76 61 72 20 66 63 20 3d 20 70 2e 73 70 6c 69 74 var fc = p.split
2470: 28 27 27 29 5b 30 5d 3b 0a 20 20 20 20 69 66 20 ('')[0];. if
2480: 28 66 63 3d 3d 20 22 70 22 29 20 7b 0a 20 20 20 (fc== "p") {.
2490: 20 20 20 20 20 76 61 72 20 70 74 79 70 65 20 3d var ptype =
24a0: 20 22 78 6f 22 3b 0a 20 20 20 20 20 20 20 20 76 "xo";. v
24b0: 61 72 20 6c 20 3d 20 28 70 2e 6c 65 6e 67 74 68 ar l = (p.length
24c0: 20 2d 20 31 29 3b 0a 20 20 20 20 7d 20 65 6c 73 - 1);. } els
24d0: 65 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 e {. var
24e0: 70 74 79 70 65 20 3d 20 22 68 65 78 22 3b 0a 20 ptype = "hex";.
24f0: 20 20 20 20 20 20 20 76 61 72 20 6c 20 3d 20 28 var l = (
2500: 70 2e 6c 65 6e 67 74 68 29 20 2a 20 34 3b 0a 20 p.length) * 4;.
2510: 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 28 70 74 }.. if (pt
2520: 79 70 65 20 3d 3d 20 22 78 6f 22 29 20 7b 0a 20 ype == "xo") {.
2530: 20 20 20 20 20 20 20 76 61 72 20 66 70 20 3d 20 var fp =
2540: 70 2e 73 75 62 73 74 72 28 31 29 3b 0a 20 20 20 p.substr(1);.
2550: 20 20 20 20 20 66 70 20 3d 20 66 70 2e 72 65 70 fp = fp.rep
2560: 6c 61 63 65 28 2f 78 2f 67 2c 20 22 31 22 29 3b lace(/x/g, "1");
2570: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 28 . }.. if (
2580: 70 74 79 70 65 20 3d 3d 20 22 78 6f 22 29 20 7b ptype == "xo") {
2590: 0a 20 20 20 20 20 20 20 20 76 61 72 20 66 69 6e . var fin
25a0: 20 3d 20 22 22 3b 0a 20 20 20 20 20 20 20 20 76 = "";. v
25b0: 61 72 20 64 6f 6e 65 20 3d 20 66 61 6c 73 65 3b ar done = false;
25c0: 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 6e 64 . var ind
25d0: 65 78 20 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 ex = 1;.
25e0: 77 68 69 6c 65 28 31 29 20 7b 0a 20 20 20 20 20 while(1) {.
25f0: 20 20 20 20 20 20 20 69 66 20 28 64 6f 6e 65 29 if (done)
2600: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
2610: 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 break;.
2620: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
2630: 20 20 20 20 69 66 20 28 69 6e 64 65 78 20 3e 3d if (index >=
2640: 20 66 70 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 fp.length) {.
2650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f do
2660: 6e 65 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 ne = true;.
2670: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 conti
2680: 6e 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 nue;.
2690: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 }. v
26a0: 61 72 20 63 75 72 72 65 6e 74 5f 6c 65 74 74 65 ar current_lette
26b0: 72 20 3d 20 66 70 5b 69 6e 64 65 78 20 2d 20 31 r = fp[index - 1
26c0: 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ]. if
26d0: 20 28 63 75 72 72 65 6e 74 5f 6c 65 74 74 65 72 (current_letter
26e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {.
26f0: 69 66 20 28 63 75 72 72 65 6e 74 5f 6c 65 74 74 if (current_lett
2700: 65 72 20 3d 3d 20 22 2a 22 29 20 7b 0a 20 20 20 er == "*") {.
2710: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var
2720: 20 6e 65 78 74 5f 6c 65 74 74 65 72 20 3d 20 67 next_letter = g
2730: 65 74 5f 63 68 61 72 28 66 70 2c 69 6e 64 65 78 et_char(fp,index
2740: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 );.
2750: 20 20 20 69 66 20 28 6e 65 78 74 5f 6c 65 74 74 if (next_lett
2760: 65 72 20 3d 3d 20 22 60 22 29 20 7b 0a 20 20 20 er == "`") {.
2770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2780: 20 76 61 72 20 6e 65 78 74 5f 6e 65 78 74 5f 6c var next_next_l
2790: 65 74 74 65 72 20 3d 20 67 65 74 5f 63 68 61 72 etter = get_char
27a0: 28 66 70 2c 69 6e 64 65 78 20 2b 20 31 29 3b 0a (fp,index + 1);.
27b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27c0: 20 20 20 20 66 69 6e 20 2b 3d 20 20 6c 65 74 74 fin += lett
27d0: 65 72 74 6f 64 65 63 28 72 6f 6d 61 6e 74 6f 67 ertodec(romantog
27e0: 79 70 73 79 28 6e 65 78 74 5f 6c 65 74 74 65 72 ypsy(next_letter
27f0: 20 2b 20 6e 65 78 74 5f 6e 65 78 74 5f 6c 65 74 + next_next_let
2800: 74 65 72 29 29 3b 0a 20 20 20 20 20 20 20 20 20 ter));.
2810: 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 index
2820: 20 2b 3d 20 33 3b 0a 20 20 20 20 20 20 20 20 20 += 3;.
2830: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
2840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2850: 20 20 20 20 66 69 6e 20 2b 3d 20 6c 65 74 74 65 fin += lette
2860: 72 74 6f 64 65 63 28 6e 65 78 74 5f 6c 65 74 74 rtodec(next_lett
2870: 65 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 er);.
2880: 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 2b index +
2890: 3d 20 32 3b 0a 20 20 20 20 20 20 20 20 20 20 20 = 2;.
28a0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }.
28b0: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 } else {.
28c0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 20 fin
28d0: 2b 3d 20 63 75 72 72 65 6e 74 5f 6c 65 74 74 65 += current_lette
28e0: 72 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 r;.
28f0: 20 20 20 69 6e 64 65 78 20 2b 3d 20 31 3b 0a 20 index += 1;.
2900: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }.
2910: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }.
2920: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 }. ret
2930: 75 72 6e 20 66 69 6e 3b 0a 20 20 20 20 7d 0a 20 urn fin;. }.
2940: 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 else {.
2950: 20 20 76 61 72 20 66 70 20 3d 20 68 65 78 32 62 var fp = hex2b
2960: 69 6e 28 70 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 in(p);. }..
2970: 20 20 72 65 74 75 72 6e 20 66 70 3b 0a 7d 0a 0a return fp;.}..
2980: 77 69 6e 64 6f 77 2e 70 61 74 74 65 72 6e 5f 70 window.pattern_p
2990: 61 72 73 65 20 3d 20 70 61 74 74 65 72 6e 5f 70 arse = pattern_p
29a0: 61 72 73 65 3b 0a 0a 66 75 6e 63 74 69 6f 6e 20 arse;..function
29b0: 64 6f 77 6e 6c 6f 61 64 28 64 61 74 61 2c 20 66 download(data, f
29c0: 69 6c 65 6e 61 6d 65 2c 20 74 79 70 65 29 20 7b ilename, type) {
29d0: 0a 20 20 20 20 76 61 72 20 66 69 6c 65 20 3d 20 . var file =
29e0: 6e 65 77 20 42 6c 6f 62 28 5b 64 61 74 61 5d 2c new Blob([data],
29f0: 20 7b 20 74 79 70 65 3a 20 74 79 70 65 20 7d 29 { type: type })
2a00: 3b 0a 20 20 20 20 69 66 20 28 77 69 6e 64 6f 77 ;. if (window
2a10: 2e 6e 61 76 69 67 61 74 6f 72 2e 6d 73 53 61 76 .navigator.msSav
2a20: 65 4f 72 4f 70 65 6e 42 6c 6f 62 29 20 2f 2f 20 eOrOpenBlob) //
2a30: 49 45 31 30 2b 0a 20 20 20 20 20 20 20 20 77 69 IE10+. wi
2a40: 6e 64 6f 77 2e 6e 61 76 69 67 61 74 6f 72 2e 6d ndow.navigator.m
2a50: 73 53 61 76 65 4f 72 4f 70 65 6e 42 6c 6f 62 28 sSaveOrOpenBlob(
2a60: 66 69 6c 65 2c 20 66 69 6c 65 6e 61 6d 65 29 3b file, filename);
2a70: 0a 20 20 20 20 65 6c 73 65 20 7b 20 2f 2f 20 4f . else { // O
2a80: 74 68 65 72 73 0a 20 20 20 20 20 20 20 20 76 61 thers. va
2a90: 72 20 61 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63 r a = document.c
2aa0: 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 22 61 22 reateElement("a"
2ab0: 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 ),. u
2ac0: 72 6c 20 3d 20 55 52 4c 2e 63 72 65 61 74 65 4f rl = URL.createO
2ad0: 62 6a 65 63 74 55 52 4c 28 66 69 6c 65 29 3b 0a bjectURL(file);.
2ae0: 20 20 20 20 20 20 20 20 61 2e 68 72 65 66 20 3d a.href =
2af0: 20 75 72 6c 3b 0a 20 20 20 20 20 20 20 20 61 2e url;. a.
2b00: 64 6f 77 6e 6c 6f 61 64 20 3d 20 66 69 6c 65 6e download = filen
2b10: 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 64 6f 63 ame;. doc
2b20: 75 6d 65 6e 74 2e 62 6f 64 79 2e 61 70 70 65 6e ument.body.appen
2b30: 64 43 68 69 6c 64 28 61 29 3b 0a 20 20 20 20 20 dChild(a);.
2b40: 20 20 20 61 2e 63 6c 69 63 6b 28 29 3b 0a 20 20 a.click();.
2b50: 20 20 20 20 20 20 73 65 74 54 69 6d 65 6f 75 74 setTimeout
2b60: 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 (function () {.
2b70: 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d docum
2b80: 65 6e 74 2e 62 6f 64 79 2e 72 65 6d 6f 76 65 43 ent.body.removeC
2b90: 68 69 6c 64 28 61 29 3b 0a 20 20 20 20 20 20 20 hild(a);.
2ba0: 20 20 20 20 20 77 69 6e 64 6f 77 2e 55 52 4c 2e window.URL.
2bb0: 72 65 76 6f 6b 65 4f 62 6a 65 63 74 55 52 4c 28 revokeObjectURL(
2bc0: 75 72 6c 29 3b 0a 20 20 20 20 20 20 20 20 7d 2c url);. },
2bd0: 20 30 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 2f 2f 0);. }.}..//
2be0: 20 68 74 74 70 73 3a 2f 2f 73 74 61 63 6b 6f 76 https://stackov
2bf0: 65 72 66 6c 6f 77 2e 63 6f 6d 2f 71 75 65 73 74 erflow.com/quest
2c00: 69 6f 6e 73 2f 31 35 37 36 32 37 36 38 2f 6a 61 ions/15762768/ja
2c10: 76 61 73 63 72 69 70 74 2d 6d 61 74 68 2d 72 6f vascript-math-ro
2c20: 75 6e 64 2d 74 6f 2d 74 77 6f 2d 64 65 63 69 6d und-to-two-decim
2c30: 61 6c 2d 70 6c 61 63 65 73 0a 66 75 6e 63 74 69 al-places.functi
2c40: 6f 6e 20 72 6f 75 6e 64 54 6f 28 6e 2c 20 64 69 on roundTo(n, di
2c50: 67 69 74 73 29 20 7b 0a 20 20 20 20 76 61 72 20 gits) {. var
2c60: 6e 65 67 61 74 69 76 65 20 3d 20 66 61 6c 73 65 negative = false
2c70: 3b 0a 20 20 20 20 69 66 20 28 64 69 67 69 74 73 ;. if (digits
2c80: 20 3d 3d 3d 20 75 6e 64 65 66 69 6e 65 64 29 20 === undefined)
2c90: 7b 0a 20 20 20 20 20 20 20 20 64 69 67 69 74 73 {. digits
2ca0: 20 3d 20 30 3b 0a 20 20 20 20 7d 0a 20 20 20 20 = 0;. }.
2cb0: 69 66 20 28 6e 20 3c 20 30 29 20 7b 0a 20 20 20 if (n < 0) {.
2cc0: 20 20 20 20 20 6e 65 67 61 74 69 76 65 20 3d 20 negative =
2cd0: 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 6e 20 true;. n
2ce0: 3d 20 6e 20 2a 20 2d 31 3b 0a 20 20 20 20 7d 0a = n * -1;. }.
2cf0: 20 20 20 20 76 61 72 20 6d 75 6c 74 69 70 6c 69 var multipli
2d00: 63 61 74 6f 72 20 3d 20 4d 61 74 68 2e 70 6f 77 cator = Math.pow
2d10: 28 31 30 2c 20 64 69 67 69 74 73 29 3b 0a 20 20 (10, digits);.
2d20: 20 20 6e 20 3d 20 70 61 72 73 65 46 6c 6f 61 74 n = parseFloat
2d30: 28 28 6e 20 2a 20 6d 75 6c 74 69 70 6c 69 63 61 ((n * multiplica
2d40: 74 6f 72 29 2e 74 6f 46 69 78 65 64 28 31 31 29 tor).toFixed(11)
2d50: 29 3b 0a 20 20 20 20 6e 20 3d 20 28 4d 61 74 68 );. n = (Math
2d60: 2e 72 6f 75 6e 64 28 6e 29 20 2f 20 6d 75 6c 74 .round(n) / mult
2d70: 69 70 6c 69 63 61 74 6f 72 29 2e 74 6f 46 69 78 iplicator).toFix
2d80: 65 64 28 64 69 67 69 74 73 29 3b 0a 20 20 20 20 ed(digits);.
2d90: 69 66 20 28 6e 65 67 61 74 69 76 65 29 20 7b 0a if (negative) {.
2da0: 20 20 20 20 20 20 20 20 6e 20 3d 20 28 6e 20 2a n = (n *
2db0: 20 2d 31 29 2e 74 6f 46 69 78 65 64 28 64 69 67 -1).toFixed(dig
2dc0: 69 74 73 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 its);. }.
2dd0: 72 65 74 75 72 6e 20 6e 3b 0a 7d 0a 0a 0a 66 75 return n;.}...fu
2de0: 6e 63 74 69 6f 6e 20 6b 6e 6f 62 28 6f 70 74 69 nction knob(opti
2df0: 6f 6e 73 29 20 7b 0a 20 20 20 20 6f 70 74 69 6f ons) {. optio
2e00: 6e 73 20 3d 20 6f 70 74 69 6f 6e 73 20 7c 7c 20 ns = options ||
2e10: 7b 7d 3b 0a 20 20 20 20 76 61 72 20 63 6f 6e 74 {};. var cont
2e20: 65 78 74 20 3d 20 7b 7d 3b 0a 20 20 20 20 63 6f ext = {};. co
2e30: 6e 74 65 78 74 2e 72 61 6d 70 20 3d 20 6f 70 74 ntext.ramp = opt
2e40: 69 6f 6e 73 2e 72 61 6d 70 20 7c 7c 20 5b 30 20 ions.ramp || [0
2e50: 2c 20 31 5d 3b 0a 20 20 20 20 63 6f 6e 74 65 78 , 1];. contex
2e60: 74 2e 63 6f 75 6e 74 5f 73 6b 69 70 20 3d 20 6f t.count_skip = o
2e70: 70 74 69 6f 6e 73 2e 73 70 65 65 64 20 7c 7c 20 ptions.speed ||
2e80: 34 3b 0a 20 20 20 20 63 6f 6e 74 65 78 74 2e 73 4;. context.s
2e90: 74 65 70 20 3d 20 6f 70 74 69 6f 6e 73 2e 73 74 tep = options.st
2ea0: 65 70 20 7c 7c 20 30 2e 30 31 3b 0a 20 20 20 20 ep || 0.01;.
2eb0: 63 6f 6e 74 65 78 74 2e 72 65 76 65 72 73 65 20 context.reverse
2ec0: 3d 20 6f 70 74 69 6f 6e 73 2e 72 65 76 65 72 73 = options.revers
2ed0: 65 20 7c 7c 20 74 72 75 65 3b 0a 20 20 20 20 63 e || true;. c
2ee0: 6f 6e 74 65 78 74 2e 6e 75 6d 62 65 72 20 3d 20 ontext.number =
2ef0: 6f 70 74 69 6f 6e 73 2e 6e 75 6d 62 65 72 20 7c options.number |
2f00: 7c 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20 63 6f 6e | null;.. con
2f10: 74 65 78 74 2e 63 75 72 72 65 6e 74 5f 63 6f 75 text.current_cou
2f20: 6e 74 20 3d 20 30 3b 0a 20 20 20 20 63 6f 6e 74 nt = 0;. cont
2f30: 65 78 74 2e 69 6e 64 65 78 20 3d 20 30 3b 0a 0a ext.index = 0;..
2f40: 20 20 20 20 2f 2f 20 53 6d 6f 6f 74 68 20 74 72 // Smooth tr
2f50: 61 6e 73 69 74 69 6f 6e 20 66 72 6f 6d 20 70 72 ansition from pr
2f60: 65 76 69 6f 75 73 20 6b 6e 6f 62 20 76 61 6c 75 evious knob valu
2f70: 65 73 0a 20 20 20 20 69 66 20 28 63 6f 6e 74 65 es. if (conte
2f80: 78 74 2e 6e 75 6d 62 65 72 29 20 7b 0a 20 20 20 xt.number) {.
2f90: 20 20 20 20 20 63 6f 6e 74 65 78 74 2e 76 61 6c context.val
2fa0: 20 3d 20 77 69 6e 64 6f 77 2e 63 65 6c 6c 78 2e = window.cellx.
2fb0: 63 65 6c 6c 78 28 63 6f 6e 74 65 78 74 2e 6e 75 cellx(context.nu
2fc0: 6d 62 65 72 28 29 29 0a 20 20 20 20 7d 20 65 6c mber()). } el
2fd0: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 63 6f 6e se {. con
2fe0: 74 65 78 74 2e 76 61 6c 20 3d 20 77 69 6e 64 6f text.val = windo
2ff0: 77 2e 63 65 6c 6c 78 2e 63 65 6c 6c 78 28 6f 70 w.cellx.cellx(op
3000: 74 69 6f 6e 73 2e 69 6e 69 74 69 61 6c 20 7c 7c tions.initial ||
3010: 20 30 2e 35 29 0a 20 20 20 20 7d 0a 0a 20 20 20 0.5). }..
3020: 20 66 75 6e 63 74 69 6f 6e 20 63 68 61 6e 67 65 function change
3030: 43 6f 6e 74 65 78 74 28 29 20 7b 0a 20 20 20 20 Context() {.
3040: 20 20 20 20 63 6f 6e 74 65 78 74 2e 6e 65 78 74 context.next
3050: 5f 76 61 6c 20 3d 20 63 6f 6e 74 65 78 74 2e 72 _val = context.r
3060: 61 6d 70 5b 63 6f 6e 74 65 78 74 2e 69 6e 64 65 amp[context.inde
3070: 78 20 2b 20 31 5d 3b 0a 0a 20 20 20 20 20 20 20 x + 1];..
3080: 20 63 6f 6e 74 65 78 74 2e 76 61 6c 28 63 6f 6e context.val(con
3090: 74 65 78 74 2e 72 61 6d 70 5b 63 6f 6e 74 65 78 text.ramp[contex
30a0: 74 2e 69 6e 64 65 78 5d 29 3b 0a 20 20 20 20 20 t.index]);.
30b0: 20 20 20 69 66 20 28 63 6f 6e 74 65 78 74 2e 76 if (context.v
30c0: 61 6c 28 29 20 3e 20 63 6f 6e 74 65 78 74 2e 6e al() > context.n
30d0: 65 78 74 5f 76 61 6c 29 20 7b 0a 20 20 20 20 20 ext_val) {.
30e0: 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 2e 64 context.d
30f0: 69 72 65 63 74 69 6f 6e 20 3d 20 2d 31 3b 0a 20 irection = -1;.
3100: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
3110: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 cont
3120: 65 78 74 2e 64 69 72 65 63 74 69 6f 6e 20 3d 20 ext.direction =
3130: 31 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 1;. }.
3140: 20 7d 0a 0a 20 20 20 20 63 68 61 6e 67 65 43 6f }.. changeCo
3150: 6e 74 65 78 74 28 29 3b 0a 0a 20 20 20 20 72 65 ntext();.. re
3160: 74 75 72 6e 20 7b 0a 20 20 20 20 20 20 20 20 22 turn {. "
3170: 63 65 6c 6c 22 3a 20 63 6f 6e 74 65 78 74 2e 76 cell": context.v
3180: 61 6c 2c 0a 20 20 20 20 20 20 20 20 22 70 75 73 al,. "pus
3190: 68 22 3a 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 h": function (va
31a0: 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 l) {.
31b0: 20 63 6f 6e 74 65 78 74 2e 72 61 6d 70 2e 70 75 context.ramp.pu
31c0: 73 68 28 76 61 6c 29 3b 0a 20 20 20 20 20 20 20 sh(val);.
31d0: 20 7d 2c 0a 20 20 20 20 20 20 20 20 22 72 65 70 },. "rep
31e0: 6c 61 63 65 22 3a 20 66 75 6e 63 74 69 6f 6e 20 lace": function
31f0: 28 76 61 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 (val) {.
3200: 20 20 20 20 63 6f 6e 74 65 78 74 2e 72 61 6d 70 context.ramp
3210: 20 3d 20 76 61 6c 3b 0a 20 20 20 20 20 20 20 20 = val;.
3220: 7d 2c 0a 20 20 20 20 20 20 20 20 22 73 70 65 65 },. "spee
3230: 64 22 3a 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 d": function (va
3240: 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 l) {.
3250: 20 63 6f 6e 74 65 78 74 2e 63 6f 75 6e 74 5f 73 context.count_s
3260: 6b 69 70 20 3d 20 76 61 6c 3b 0a 20 20 20 20 20 kip = val;.
3270: 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 22 73 },. "s
3280: 74 65 70 22 3a 20 66 75 6e 63 74 69 6f 6e 20 28 tep": function (
3290: 76 61 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 val) {.
32a0: 20 20 20 63 6f 6e 74 65 78 74 2e 73 74 65 70 20 context.step
32b0: 3d 20 76 61 6c 3b 0a 20 20 20 20 20 20 20 20 7d = val;. }
32c0: 2c 0a 20 20 20 20 20 20 20 20 22 75 70 22 3a 20 ,. "up":
32d0: 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 29 20 7b function (val) {
32e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c . val
32f0: 20 3d 20 76 61 6c 20 7c 7c 20 30 2e 31 3b 0a 20 = val || 0.1;.
3300: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 conte
3310: 78 74 2e 72 61 6d 70 2e 70 75 73 68 28 63 6f 6e xt.ramp.push(con
3320: 74 65 78 74 2e 72 61 6d 70 5b 63 6f 6e 74 65 78 text.ramp[contex
3330: 74 2e 72 61 6d 70 2e 6c 65 6e 67 74 68 20 2d 20 t.ramp.length -
3340: 31 5d 20 2b 20 76 61 6c 29 3b 0a 20 20 20 20 20 1] + val);.
3350: 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 22 64 },. "d
3360: 6f 77 6e 22 3a 20 66 75 6e 63 74 69 6f 6e 20 28 own": function (
3370: 76 61 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 val) {.
3380: 20 20 20 76 61 6c 20 3d 20 76 61 6c 20 7c 7c 20 val = val ||
3390: 2d 30 2e 31 3b 0a 20 20 20 20 20 20 20 20 20 20 -0.1;.
33a0: 20 20 63 6f 6e 74 65 78 74 2e 72 61 6d 70 2e 70 context.ramp.p
33b0: 75 73 68 28 63 6f 6e 74 65 78 74 2e 72 61 6d 70 ush(context.ramp
33c0: 5b 63 6f 6e 74 65 78 74 2e 72 61 6d 70 2e 6c 65 [context.ramp.le
33d0: 6e 67 74 68 20 2d 20 31 5d 20 2b 20 76 61 6c 29 ngth - 1] + val)
33e0: 3b 0a 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 ;. },.
33f0: 20 20 20 20 22 6d 6f 76 65 22 3a 20 66 75 6e 63 "move": func
3400: 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 tion () {.
3410: 20 20 20 20 20 20 69 66 20 28 63 6f 6e 74 65 78 if (contex
3420: 74 2e 63 75 72 72 65 6e 74 5f 63 6f 75 6e 74 20 t.current_count
3430: 3e 3d 20 63 6f 6e 74 65 78 74 2e 63 6f 75 6e 74 >= context.count
3440: 5f 73 6b 69 70 29 20 7b 0a 20 20 20 20 20 20 20 _skip) {.
3450: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 78 74 context
3460: 2e 63 75 72 72 65 6e 74 5f 63 6f 75 6e 74 20 3d .current_count =
3470: 20 31 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 1;..
3480: 20 20 20 20 20 69 66 20 28 63 6f 6e 74 65 78 74 if (context
3490: 2e 64 69 72 65 63 74 69 6f 6e 20 3d 3d 20 31 29 .direction == 1)
34a0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
34b0: 20 20 20 20 20 20 20 76 61 72 20 63 6d 70 20 3d var cmp =
34c0: 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 function () {.
34d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
34e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 63 return (c
34f0: 6f 6e 74 65 78 74 2e 76 61 6c 28 29 20 3e 3d 20 ontext.val() >=
3500: 63 6f 6e 74 65 78 74 2e 6e 65 78 74 5f 76 61 6c context.next_val
3510: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 );.
3520: 20 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 20 };.
3530: 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
3540: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
3550: 20 20 20 20 20 20 20 76 61 72 20 63 6d 70 20 3d var cmp =
3560: 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 function () {.
3570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3580: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 63 return (c
3590: 6f 6e 74 65 78 74 2e 6e 65 78 74 5f 76 61 6c 20 ontext.next_val
35a0: 3e 3d 20 63 6f 6e 74 65 78 74 2e 76 61 6c 28 29 >= context.val()
35b0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 );.
35c0: 20 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 20 };.
35d0: 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 }..
35e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
35f0: 28 63 6d 70 28 29 29 20 7b 0a 20 20 20 20 20 20 (cmp()) {.
3600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f co
3610: 6e 74 65 78 74 2e 76 61 6c 28 63 6f 6e 74 65 78 ntext.val(contex
3620: 74 2e 6e 65 78 74 5f 76 61 6c 29 3b 0a 20 20 20 t.next_val);.
3630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3640: 20 63 6f 6e 74 65 78 74 2e 69 6e 64 65 78 20 3d context.index =
3650: 20 63 6f 6e 74 65 78 74 2e 69 6e 64 65 78 20 2b context.index +
3660: 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 1;.
3670: 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 74 if (cont
3680: 65 78 74 2e 69 6e 64 65 78 20 3d 3d 3d 20 63 6f ext.index === co
3690: 6e 74 65 78 74 2e 72 61 6d 70 2e 6c 65 6e 67 74 ntext.ramp.lengt
36a0: 68 20 2d 31 29 20 7b 0a 20 20 20 20 20 20 20 20 h -1) {.
36b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
36c0: 69 66 20 28 63 6f 6e 74 65 78 74 2e 72 65 76 65 if (context.reve
36d0: 72 73 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 rse) {.
36e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
36f0: 20 20 20 63 6f 6e 74 65 78 74 2e 69 6e 64 65 78 context.index
3700: 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 = 0;.
3710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3720: 20 20 63 6f 6e 74 65 78 74 2e 72 61 6d 70 20 3d context.ramp =
3730: 20 63 6f 6e 74 65 78 74 2e 72 61 6d 70 2e 72 65 context.ramp.re
3740: 76 65 72 73 65 28 29 3b 0a 20 20 20 20 20 20 20 verse();.
3750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3760: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 } else {.
3770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3780: 20 20 20 20 20 20 63 6f 6e 74 65 78 74 2e 69 6e context.in
3790: 64 65 78 20 3d 20 63 6f 6e 74 65 78 74 2e 69 6e dex = context.in
37a0: 64 65 78 20 2d 20 31 3b 0a 20 20 20 20 20 20 20 dex - 1;.
37b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
37c0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }.
37d0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }.
37e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 cha
37f0: 6e 67 65 43 6f 6e 74 65 78 74 28 29 3b 0a 20 20 ngeContext();.
3800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3810: 20 20 63 6f 6e 74 65 78 74 2e 76 61 6c 28 63 6f context.val(co
3820: 6e 74 65 78 74 2e 76 61 6c 28 29 20 2b 20 63 6f ntext.val() + co
3830: 6e 74 65 78 74 2e 73 74 65 70 20 2a 20 63 6f 6e ntext.step * con
3840: 74 65 78 74 2e 64 69 72 65 63 74 69 6f 6e 29 3b text.direction);
3850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3860: 20 20 20 20 20 69 66 20 28 63 6f 6e 74 65 78 74 if (context
3870: 2e 6e 75 6d 62 65 72 29 20 63 6f 6e 74 65 78 74 .number) context
3880: 2e 6e 75 6d 62 65 72 28 63 6f 6e 74 65 78 74 2e .number(context.
3890: 76 61 6c 28 29 29 3b 0a 20 20 20 20 20 20 20 20 val());.
38a0: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
38b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
38c0: 20 20 20 20 20 63 6f 6e 74 65 78 74 2e 76 61 6c context.val
38d0: 28 63 6f 6e 74 65 78 74 2e 76 61 6c 28 29 20 2b (context.val() +
38e0: 20 63 6f 6e 74 65 78 74 2e 73 74 65 70 20 2a 20 context.step *
38f0: 63 6f 6e 74 65 78 74 2e 64 69 72 65 63 74 69 6f context.directio
3900: 6e 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 n);.
3910: 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 74 if (cont
3920: 65 78 74 2e 6e 75 6d 62 65 72 29 20 63 6f 6e 74 ext.number) cont
3930: 65 78 74 2e 6e 75 6d 62 65 72 28 63 6f 6e 74 65 ext.number(conte
3940: 78 74 2e 76 61 6c 28 29 29 3b 0a 20 20 20 20 20 xt.val());.
3950: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }.
3960: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
3970: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {.
3980: 20 20 63 6f 6e 74 65 78 74 2e 63 75 72 72 65 6e context.curren
3990: 74 5f 63 6f 75 6e 74 20 2b 3d 20 31 3b 0a 20 20 t_count += 1;.
39a0: 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 }..
39b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 return c
39c0: 6f 6e 74 65 78 74 2e 76 61 6c 28 29 3b 0a 20 20 ontext.val();.
39d0: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 7d 0a }. }.}.
39e0: 0a 66 75 6e 63 74 69 6f 6e 20 74 69 6d 65 64 4b .function timedK
39f0: 6e 6f 62 28 6f 70 74 69 6f 6e 73 29 20 7b 0a 20 nob(options) {.
3a00: 20 20 20 6f 70 74 69 6f 6e 73 20 3d 20 6f 70 74 options = opt
3a10: 69 6f 6e 73 20 7c 7c 20 7b 7d 3b 0a 20 20 20 20 ions || {};.
3a20: 76 61 72 20 63 6f 6e 74 65 78 74 20 3d 20 7b 7d var context = {}
3a30: 3b 0a 20 20 20 20 63 6f 6e 74 65 78 74 2e 69 6e ;. context.in
3a40: 74 65 72 76 61 6c 20 3d 20 6f 70 74 69 6f 6e 73 terval = options
3a50: 2e 69 6e 74 65 72 76 61 6c 20 7c 7c 20 31 30 30 .interval || 100
3a60: 3b 0a 20 20 20 20 63 6f 6e 74 65 78 74 2e 6b 6e ;. context.kn
3a70: 6f 62 20 3d 20 6b 6e 6f 62 28 6f 70 74 69 6f 6e ob = knob(option
3a80: 73 29 3b 0a 0a 20 20 20 20 63 6f 6e 74 65 78 74 s);.. context
3a90: 2e 74 69 6d 65 72 20 3d 20 73 65 74 49 6e 74 65 .timer = setInte
3aa0: 72 76 61 6c 28 66 75 6e 63 74 69 6f 6e 20 28 29 rval(function ()
3ab0: 20 7b 0a 20 20 20 20 20 20 20 63 6f 6e 74 65 78 {. contex
3ac0: 74 2e 6b 6e 6f 62 2e 6d 6f 76 65 28 29 3b 0a 20 t.knob.move();.
3ad0: 20 20 20 7d 2c 20 63 6f 6e 74 65 78 74 2e 69 6e }, context.in
3ae0: 74 65 72 76 61 6c 29 3b 0a 0a 20 20 20 20 63 6f terval);.. co
3af0: 6e 74 65 78 74 2e 6b 6e 6f 62 5b 22 63 6c 65 61 ntext.knob["clea
3b00: 72 22 5d 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 r"] = function (
3b10: 29 20 7b 0a 20 20 20 20 20 20 20 20 63 6c 65 61 ) {. clea
3b20: 72 49 6e 74 65 72 76 61 6c 28 63 6f 6e 74 65 78 rInterval(contex
3b30: 74 2e 74 69 6d 65 72 29 3b 0a 20 20 20 20 7d 0a t.timer);. }.
3b40: 0a 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6e 74 . return cont
3b50: 65 78 74 2e 6b 6e 6f 62 3b 0a 7d 0a 0a ext.knob;.}..