0000: 28 66 75 6e 63 74 69 6f 6e 28 72 6f 6f 74 2c 20 (function(root,
0010: 66 61 63 74 6f 72 79 29 7b 0a 0a 09 2f 2f 55 4d factory){...//UM
0020: 44 0a 09 69 66 20 28 20 74 79 70 65 6f 66 20 64 D..if ( typeof d
0030: 65 66 69 6e 65 20 3d 3d 3d 20 22 66 75 6e 63 74 efine === "funct
0040: 69 6f 6e 22 20 26 26 20 64 65 66 69 6e 65 2e 61 ion" && define.a
0050: 6d 64 20 29 20 7b 0a 09 09 64 65 66 69 6e 65 28 md ) {...define(
0060: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 09 09 09 function() {....
0070: 72 65 74 75 72 6e 20 66 61 63 74 6f 72 79 28 29 return factory()
0080: 3b 0a 09 09 7d 29 3b 0a 09 7d 20 65 6c 73 65 20 ;...});..} else
0090: 69 66 20 28 74 79 70 65 6f 66 20 6d 6f 64 75 6c if (typeof modul
00a0: 65 20 3d 3d 3d 20 22 6f 62 6a 65 63 74 22 29 20 e === "object")
00b0: 7b 0a 09 09 6d 6f 64 75 6c 65 2e 65 78 70 6f 72 {...module.expor
00c0: 74 73 20 3d 20 66 61 63 74 6f 72 79 28 29 3b 0a ts = factory();.
00d0: 20 09 7d 20 65 6c 73 65 20 7b 0a 09 09 72 6f 6f .} else {...roo
00e0: 74 2e 54 6f 6e 65 20 3d 20 66 61 63 74 6f 72 79 t.Tone = factory
00f0: 28 29 3b 0a 09 7d 0a 0a 7d 28 74 68 69 73 2c 20 ();..}..}(this,
0100: 66 75 6e 63 74 69 6f 6e 28 29 7b 0a 0a 09 22 75 function(){..."u
0110: 73 65 20 73 74 72 69 63 74 22 3b 0a 09 0a 09 76 se strict";....v
0120: 61 72 20 54 6f 6e 65 3b 0a 09 2f 2f 63 6f 6e 73 ar Tone;..//cons
0130: 74 72 75 63 74 73 20 74 68 65 20 6d 61 69 6e 20 tructs the main
0140: 54 6f 6e 65 20 6f 62 6a 65 63 74 0a 09 66 75 6e Tone object..fun
0150: 63 74 69 6f 6e 20 4d 61 69 6e 28 66 75 6e 63 29 ction Main(func)
0160: 7b 0a 09 09 54 6f 6e 65 20 3d 20 66 75 6e 63 28 {...Tone = func(
0170: 29 3b 0a 09 7d 0a 09 2f 2f 69 6e 76 6f 6b 65 73 );..}..//invokes
0180: 20 65 61 63 68 20 6f 66 20 74 68 65 20 6d 6f 64 each of the mod
0190: 75 6c 65 73 20 77 69 74 68 20 74 68 65 20 6d 61 ules with the ma
01a0: 69 6e 20 54 6f 6e 65 20 6f 62 6a 65 63 74 20 61 in Tone object a
01b0: 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74 0a 09 s the argument..
01c0: 66 75 6e 63 74 69 6f 6e 20 4d 6f 64 75 6c 65 28 function Module(
01d0: 66 75 6e 63 29 7b 0a 09 09 66 75 6e 63 28 54 6f func){...func(To
01e0: 6e 65 29 3b 0a 09 7d 09 2f 2a 2a 0a 09 20 2a 20 ne);..}./**.. *
01f0: 20 54 6f 6e 65 2e 6a 73 0a 09 20 2a 20 20 40 61 Tone.js.. * @a
0200: 75 74 68 6f 72 20 59 6f 74 61 6d 20 4d 61 6e 6e uthor Yotam Mann
0210: 0a 09 20 2a 20 20 40 6c 69 63 65 6e 73 65 20 68 .. * @license h
0220: 74 74 70 3a 2f 2f 6f 70 65 6e 73 6f 75 72 63 65 ttp://opensource
0230: 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 4d 49 .org/licenses/MI
0240: 54 20 4d 49 54 20 4c 69 63 65 6e 73 65 0a 09 20 T MIT License..
0250: 2a 20 20 40 63 6f 70 79 72 69 67 68 74 20 32 30 * @copyright 20
0260: 31 34 2d 32 30 31 37 20 59 6f 74 61 6d 20 4d 61 14-2017 Yotam Ma
0270: 6e 6e 0a 09 20 2a 2f 0a 09 4d 61 69 6e 28 66 75 nn.. */..Main(fu
0280: 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
0290: 20 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f .. /////////
02a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
02b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
02c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
02d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
02e0: 2f 0a 09 20 20 20 20 2f 2f 09 57 45 42 20 41 55 /.. //.WEB AU
02f0: 44 49 4f 20 43 4f 4e 54 45 58 54 0a 09 20 20 20 DIO CONTEXT..
0300: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ///////////////
0310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 ////////////..
0350: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 55 6e 64 function isUnd
0360: 65 66 28 76 61 6c 29 20 7b 0a 09 20 20 20 20 20 ef(val) {..
0370: 20 20 20 72 65 74 75 72 6e 20 74 79 70 65 6f 66 return typeof
0380: 20 76 61 6c 20 3d 3d 3d 20 27 75 6e 64 65 66 69 val === 'undefi
0390: 6e 65 64 27 3b 0a 09 20 20 20 20 7d 0a 09 20 20 ned';.. }..
03a0: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 46 75 6e function isFun
03b0: 63 74 69 6f 6e 28 76 61 6c 29 20 7b 0a 09 20 20 ction(val) {..
03c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 79 70 return typ
03d0: 65 6f 66 20 76 61 6c 20 3d 3d 3d 20 27 66 75 6e eof val === 'fun
03e0: 63 74 69 6f 6e 27 3b 0a 09 20 20 20 20 7d 0a 09 ction';.. }..
03f0: 20 20 20 20 76 61 72 20 61 75 64 69 6f 43 6f 6e var audioCon
0400: 74 65 78 74 3b 0a 09 20 20 20 20 2f 2f 70 6f 6c text;.. //pol
0410: 79 66 69 6c 6c 20 66 6f 72 20 41 75 64 69 6f 43 yfill for AudioC
0420: 6f 6e 74 65 78 74 20 61 6e 64 20 4f 66 66 6c 69 ontext and Offli
0430: 6e 65 41 75 64 69 6f 43 6f 6e 74 65 78 74 0a 09 neAudioContext..
0440: 20 20 20 20 69 66 20 28 69 73 55 6e 64 65 66 28 if (isUndef(
0450: 77 69 6e 64 6f 77 2e 41 75 64 69 6f 43 6f 6e 74 window.AudioCont
0460: 65 78 74 29 29 20 7b 0a 09 20 20 20 20 20 20 20 ext)) {..
0470: 20 77 69 6e 64 6f 77 2e 41 75 64 69 6f 43 6f 6e window.AudioCon
0480: 74 65 78 74 20 3d 20 77 69 6e 64 6f 77 2e 77 65 text = window.we
0490: 62 6b 69 74 41 75 64 69 6f 43 6f 6e 74 65 78 74 bkitAudioContext
04a0: 3b 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 ;.. }.. if
04b0: 20 28 69 73 55 6e 64 65 66 28 77 69 6e 64 6f 77 (isUndef(window
04c0: 2e 4f 66 66 6c 69 6e 65 41 75 64 69 6f 43 6f 6e .OfflineAudioCon
04d0: 74 65 78 74 29 29 20 7b 0a 09 20 20 20 20 20 20 text)) {..
04e0: 20 20 77 69 6e 64 6f 77 2e 4f 66 66 6c 69 6e 65 window.Offline
04f0: 41 75 64 69 6f 43 6f 6e 74 65 78 74 20 3d 20 77 AudioContext = w
0500: 69 6e 64 6f 77 2e 77 65 62 6b 69 74 4f 66 66 6c indow.webkitOffl
0510: 69 6e 65 41 75 64 69 6f 43 6f 6e 74 65 78 74 3b ineAudioContext;
0520: 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 .. }.. if
0530: 28 21 69 73 55 6e 64 65 66 28 41 75 64 69 6f 43 (!isUndef(AudioC
0540: 6f 6e 74 65 78 74 29 29 20 7b 0a 09 20 20 20 20 ontext)) {..
0550: 20 20 20 20 61 75 64 69 6f 43 6f 6e 74 65 78 74 audioContext
0560: 20 3d 20 6e 65 77 20 41 75 64 69 6f 43 6f 6e 74 = new AudioCont
0570: 65 78 74 28 29 3b 0a 09 20 20 20 20 7d 20 65 6c ext();.. } el
0580: 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 se {.. th
0590: 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 28 27 57 row new Error('W
05a0: 65 62 20 41 75 64 69 6f 20 69 73 20 6e 6f 74 20 eb Audio is not
05b0: 73 75 70 70 6f 72 74 65 64 20 69 6e 20 74 68 69 supported in thi
05c0: 73 20 62 72 6f 77 73 65 72 27 29 3b 0a 09 20 20 s browser');..
05d0: 20 20 7d 0a 09 20 20 20 20 2f 2f 53 48 49 4d 53 }.. //SHIMS
05e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
05f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0620: 2f 2f 2f 2f 0a 09 20 20 20 20 69 66 20 28 21 69 ////.. if (!i
0630: 73 46 75 6e 63 74 69 6f 6e 28 41 75 64 69 6f 43 sFunction(AudioC
0640: 6f 6e 74 65 78 74 2e 70 72 6f 74 6f 74 79 70 65 ontext.prototype
0650: 2e 63 72 65 61 74 65 47 61 69 6e 29 29 20 7b 0a .createGain)) {.
0660: 09 20 20 20 20 20 20 20 20 41 75 64 69 6f 43 6f . AudioCo
0670: 6e 74 65 78 74 2e 70 72 6f 74 6f 74 79 70 65 2e ntext.prototype.
0680: 63 72 65 61 74 65 47 61 69 6e 20 3d 20 41 75 64 createGain = Aud
0690: 69 6f 43 6f 6e 74 65 78 74 2e 70 72 6f 74 6f 74 ioContext.protot
06a0: 79 70 65 2e 63 72 65 61 74 65 47 61 69 6e 4e 6f ype.createGainNo
06b0: 64 65 3b 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 de;.. }..
06c0: 69 66 20 28 21 69 73 46 75 6e 63 74 69 6f 6e 28 if (!isFunction(
06d0: 41 75 64 69 6f 43 6f 6e 74 65 78 74 2e 70 72 6f AudioContext.pro
06e0: 74 6f 74 79 70 65 2e 63 72 65 61 74 65 44 65 6c totype.createDel
06f0: 61 79 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ay)) {..
0700: 41 75 64 69 6f 43 6f 6e 74 65 78 74 2e 70 72 6f AudioContext.pro
0710: 74 6f 74 79 70 65 2e 63 72 65 61 74 65 44 65 6c totype.createDel
0720: 61 79 20 3d 20 41 75 64 69 6f 43 6f 6e 74 65 78 ay = AudioContex
0730: 74 2e 70 72 6f 74 6f 74 79 70 65 2e 63 72 65 61 t.prototype.crea
0740: 74 65 44 65 6c 61 79 4e 6f 64 65 3b 0a 09 20 20 teDelayNode;..
0750: 20 20 7d 0a 09 20 20 20 20 69 66 20 28 21 69 73 }.. if (!is
0760: 46 75 6e 63 74 69 6f 6e 28 41 75 64 69 6f 43 6f Function(AudioCo
0770: 6e 74 65 78 74 2e 70 72 6f 74 6f 74 79 70 65 2e ntext.prototype.
0780: 63 72 65 61 74 65 50 65 72 69 6f 64 69 63 57 61 createPeriodicWa
0790: 76 65 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ve)) {..
07a0: 41 75 64 69 6f 43 6f 6e 74 65 78 74 2e 70 72 6f AudioContext.pro
07b0: 74 6f 74 79 70 65 2e 63 72 65 61 74 65 50 65 72 totype.createPer
07c0: 69 6f 64 69 63 57 61 76 65 20 3d 20 41 75 64 69 iodicWave = Audi
07d0: 6f 43 6f 6e 74 65 78 74 2e 70 72 6f 74 6f 74 79 oContext.prototy
07e0: 70 65 2e 63 72 65 61 74 65 57 61 76 65 54 61 62 pe.createWaveTab
07f0: 6c 65 3b 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 le;.. }..
0800: 69 66 20 28 21 69 73 46 75 6e 63 74 69 6f 6e 28 if (!isFunction(
0810: 41 75 64 69 6f 42 75 66 66 65 72 53 6f 75 72 63 AudioBufferSourc
0820: 65 4e 6f 64 65 2e 70 72 6f 74 6f 74 79 70 65 2e eNode.prototype.
0830: 73 74 61 72 74 29 29 20 7b 0a 09 20 20 20 20 20 start)) {..
0840: 20 20 20 41 75 64 69 6f 42 75 66 66 65 72 53 6f AudioBufferSo
0850: 75 72 63 65 4e 6f 64 65 2e 70 72 6f 74 6f 74 79 urceNode.prototy
0860: 70 65 2e 73 74 61 72 74 20 3d 20 41 75 64 69 6f pe.start = Audio
0870: 42 75 66 66 65 72 53 6f 75 72 63 65 4e 6f 64 65 BufferSourceNode
0880: 2e 70 72 6f 74 6f 74 79 70 65 2e 6e 6f 74 65 47 .prototype.noteG
0890: 72 61 69 6e 4f 6e 3b 0a 09 20 20 20 20 7d 0a 09 rainOn;.. }..
08a0: 20 20 20 20 69 66 20 28 21 69 73 46 75 6e 63 74 if (!isFunct
08b0: 69 6f 6e 28 41 75 64 69 6f 42 75 66 66 65 72 53 ion(AudioBufferS
08c0: 6f 75 72 63 65 4e 6f 64 65 2e 70 72 6f 74 6f 74 ourceNode.protot
08d0: 79 70 65 2e 73 74 6f 70 29 29 20 7b 0a 09 20 20 ype.stop)) {..
08e0: 20 20 20 20 20 20 41 75 64 69 6f 42 75 66 66 65 AudioBuffe
08f0: 72 53 6f 75 72 63 65 4e 6f 64 65 2e 70 72 6f 74 rSourceNode.prot
0900: 6f 74 79 70 65 2e 73 74 6f 70 20 3d 20 41 75 64 otype.stop = Aud
0910: 69 6f 42 75 66 66 65 72 53 6f 75 72 63 65 4e 6f ioBufferSourceNo
0920: 64 65 2e 70 72 6f 74 6f 74 79 70 65 2e 6e 6f 74 de.prototype.not
0930: 65 4f 66 66 3b 0a 09 20 20 20 20 7d 0a 09 20 20 eOff;.. }..
0940: 20 20 69 66 20 28 21 69 73 46 75 6e 63 74 69 6f if (!isFunctio
0950: 6e 28 4f 73 63 69 6c 6c 61 74 6f 72 4e 6f 64 65 n(OscillatorNode
0960: 2e 70 72 6f 74 6f 74 79 70 65 2e 73 74 61 72 74 .prototype.start
0970: 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 4f 73 )) {.. Os
0980: 63 69 6c 6c 61 74 6f 72 4e 6f 64 65 2e 70 72 6f cillatorNode.pro
0990: 74 6f 74 79 70 65 2e 73 74 61 72 74 20 3d 20 4f totype.start = O
09a0: 73 63 69 6c 6c 61 74 6f 72 4e 6f 64 65 2e 70 72 scillatorNode.pr
09b0: 6f 74 6f 74 79 70 65 2e 6e 6f 74 65 4f 6e 3b 0a ototype.noteOn;.
09c0: 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 28 . }.. if (
09d0: 21 69 73 46 75 6e 63 74 69 6f 6e 28 4f 73 63 69 !isFunction(Osci
09e0: 6c 6c 61 74 6f 72 4e 6f 64 65 2e 70 72 6f 74 6f llatorNode.proto
09f0: 74 79 70 65 2e 73 74 6f 70 29 29 20 7b 0a 09 20 type.stop)) {..
0a00: 20 20 20 20 20 20 20 4f 73 63 69 6c 6c 61 74 6f Oscillato
0a10: 72 4e 6f 64 65 2e 70 72 6f 74 6f 74 79 70 65 2e rNode.prototype.
0a20: 73 74 6f 70 20 3d 20 4f 73 63 69 6c 6c 61 74 6f stop = Oscillato
0a30: 72 4e 6f 64 65 2e 70 72 6f 74 6f 74 79 70 65 2e rNode.prototype.
0a40: 6e 6f 74 65 4f 66 66 3b 0a 09 20 20 20 20 7d 0a noteOff;.. }.
0a50: 09 20 20 20 20 69 66 20 28 21 69 73 46 75 6e 63 . if (!isFunc
0a60: 74 69 6f 6e 28 4f 73 63 69 6c 6c 61 74 6f 72 4e tion(OscillatorN
0a70: 6f 64 65 2e 70 72 6f 74 6f 74 79 70 65 2e 73 65 ode.prototype.se
0a80: 74 50 65 72 69 6f 64 69 63 57 61 76 65 29 29 20 tPeriodicWave))
0a90: 7b 0a 09 20 20 20 20 20 20 20 20 4f 73 63 69 6c {.. Oscil
0aa0: 6c 61 74 6f 72 4e 6f 64 65 2e 70 72 6f 74 6f 74 latorNode.protot
0ab0: 79 70 65 2e 73 65 74 50 65 72 69 6f 64 69 63 57 ype.setPeriodicW
0ac0: 61 76 65 20 3d 20 4f 73 63 69 6c 6c 61 74 6f 72 ave = Oscillator
0ad0: 4e 6f 64 65 2e 70 72 6f 74 6f 74 79 70 65 2e 73 Node.prototype.s
0ae0: 65 74 57 61 76 65 54 61 62 6c 65 3b 0a 09 20 20 etWaveTable;..
0af0: 20 20 7d 0a 09 20 20 20 20 2f 2f 65 78 74 65 6e }.. //exten
0b00: 64 20 74 68 65 20 63 6f 6e 6e 65 63 74 20 66 75 d the connect fu
0b10: 6e 63 74 69 6f 6e 20 74 6f 20 69 6e 63 6c 75 64 nction to includ
0b20: 65 20 54 6f 6e 65 73 0a 09 20 20 20 20 69 66 20 e Tones.. if
0b30: 28 69 73 55 6e 64 65 66 28 41 75 64 69 6f 4e 6f (isUndef(AudioNo
0b40: 64 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 6e 61 de.prototype._na
0b50: 74 69 76 65 43 6f 6e 6e 65 63 74 29 29 20 7b 0a tiveConnect)) {.
0b60: 09 20 20 20 20 20 20 20 20 41 75 64 69 6f 4e 6f . AudioNo
0b70: 64 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 6e 61 de.prototype._na
0b80: 74 69 76 65 43 6f 6e 6e 65 63 74 20 3d 20 41 75 tiveConnect = Au
0b90: 64 69 6f 4e 6f 64 65 2e 70 72 6f 74 6f 74 79 70 dioNode.prototyp
0ba0: 65 2e 63 6f 6e 6e 65 63 74 3b 0a 09 20 20 20 20 e.connect;..
0bb0: 20 20 20 20 41 75 64 69 6f 4e 6f 64 65 2e 70 72 AudioNode.pr
0bc0: 6f 74 6f 74 79 70 65 2e 63 6f 6e 6e 65 63 74 20 ototype.connect
0bd0: 3d 20 66 75 6e 63 74 69 6f 6e 20 28 42 2c 20 6f = function (B, o
0be0: 75 74 4e 75 6d 2c 20 69 6e 4e 75 6d 29 20 7b 0a utNum, inNum) {.
0bf0: 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
0c00: 28 42 2e 69 6e 70 75 74 29 20 7b 0a 09 20 20 20 (B.input) {..
0c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
0c20: 28 41 72 72 61 79 2e 69 73 41 72 72 61 79 28 42 (Array.isArray(B
0c30: 2e 69 6e 70 75 74 29 29 20 7b 0a 09 20 20 20 20 .input)) {..
0c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0c50: 69 66 20 28 69 73 55 6e 64 65 66 28 69 6e 4e 75 if (isUndef(inNu
0c60: 6d 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 m)) {..
0c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
0c80: 6e 4e 75 6d 20 3d 20 30 3b 0a 09 20 20 20 20 20 nNum = 0;..
0c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
0ca0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
0cb0: 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 6e 65 this.conne
0cc0: 63 74 28 42 2e 69 6e 70 75 74 5b 69 6e 4e 75 6d ct(B.input[inNum
0cd0: 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ]);..
0ce0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
0cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0d00: 20 20 20 74 68 69 73 2e 63 6f 6e 6e 65 63 74 28 this.connect(
0d10: 42 2e 69 6e 70 75 74 2c 20 6f 75 74 4e 75 6d 2c B.input, outNum,
0d20: 20 69 6e 4e 75 6d 29 3b 0a 09 20 20 20 20 20 20 inNum);..
0d30: 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
0d40: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
0d50: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
0d60: 20 20 20 74 72 79 20 7b 0a 09 20 20 20 20 20 20 try {..
0d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
0d80: 20 28 42 20 69 6e 73 74 61 6e 63 65 6f 66 20 41 (B instanceof A
0d90: 75 64 69 6f 4e 6f 64 65 29 20 7b 0a 09 20 20 20 udioNode) {..
0da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0db0: 20 20 20 20 20 74 68 69 73 2e 5f 6e 61 74 69 76 this._nativ
0dc0: 65 43 6f 6e 6e 65 63 74 28 42 2c 20 6f 75 74 4e eConnect(B, outN
0dd0: 75 6d 2c 20 69 6e 4e 75 6d 29 3b 0a 09 20 20 20 um, inNum);..
0de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0df0: 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
0e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0e10: 20 20 20 74 68 69 73 2e 5f 6e 61 74 69 76 65 43 this._nativeC
0e20: 6f 6e 6e 65 63 74 28 42 2c 20 6f 75 74 4e 75 6d onnect(B, outNum
0e30: 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
0e40: 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
0e50: 20 20 20 20 20 20 20 20 20 20 20 7d 20 63 61 74 } cat
0e60: 63 68 20 28 65 29 20 7b 0a 09 20 20 20 20 20 20 ch (e) {..
0e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
0e80: 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 28 27 65 row new Error('e
0e90: 72 72 6f 72 20 63 6f 6e 6e 65 63 74 69 6e 67 20 rror connecting
0ea0: 74 6f 20 6e 6f 64 65 3a 20 27 20 2b 20 42 29 3b to node: ' + B);
0eb0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
0ec0: 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
0ed0: 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 3b 0a 09 }.. };..
0ee0: 20 20 20 20 7d 0a 09 20 20 20 20 2f 2f 2f 2f 2f }.. /////
0ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0f30: 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2f 09 54 //////.. //.T
0f40: 4f 4e 45 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f ONE.. ///////
0f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0f90: 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 ////.. /**...
0fa0: 20 2a 20 20 40 63 6c 61 73 73 20 20 54 6f 6e 65 * @class Tone
0fb0: 20 69 73 20 74 68 65 20 62 61 73 65 20 63 6c 61 is the base cla
0fc0: 73 73 20 6f 66 20 61 6c 6c 20 6f 74 68 65 72 20 ss of all other
0fd0: 63 6c 61 73 73 65 73 2e 20 49 74 20 70 72 6f 76 classes. It prov
0fe0: 69 64 65 73 20 0a 09 09 20 2a 20 20 20 20 20 20 ides ... *
0ff0: 20 20 20 20 61 20 6c 6f 74 20 6f 66 20 6d 65 74 a lot of met
1000: 68 6f 64 73 20 61 6e 64 20 66 75 6e 63 74 69 6f hods and functio
1010: 6e 61 6c 69 74 79 20 74 6f 20 61 6c 6c 20 63 6c nality to all cl
1020: 61 73 73 65 73 20 74 68 61 74 20 65 78 74 65 6e asses that exten
1030: 64 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 d... *
1040: 69 74 2e 20 0a 09 09 20 2a 20 20 0a 09 09 20 2a it. ... * ... *
1050: 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 @constructor..
1060: 09 20 2a 20 20 40 61 6c 69 61 73 20 54 6f 6e 65 . * @alias Tone
1070: 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e ... * @param {n
1080: 75 6d 62 65 72 7d 20 5b 69 6e 70 75 74 73 3d 31 umber} [inputs=1
1090: 5d 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 ] the number of
10a0: 69 6e 70 75 74 20 6e 6f 64 65 73 0a 09 09 20 2a input nodes... *
10b0: 20 20 40 70 61 72 61 6d 20 7b 6e 75 6d 62 65 72 @param {number
10c0: 7d 20 5b 6f 75 74 70 75 74 73 3d 31 5d 20 74 68 } [outputs=1] th
10d0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74 70 e number of outp
10e0: 75 74 20 6e 6f 64 65 73 0a 09 09 20 2a 2f 0a 09 ut nodes... */..
10f0: 20 20 20 20 76 61 72 20 54 6f 6e 65 20 3d 20 66 var Tone = f
1100: 75 6e 63 74 69 6f 6e 20 28 69 6e 70 75 74 73 2c unction (inputs,
1110: 20 6f 75 74 70 75 74 73 29 20 7b 0a 09 20 20 20 outputs) {..
1120: 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
1130: 74 68 65 20 69 6e 70 75 74 20 6e 6f 64 65 28 73 the input node(s
1140: 29 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b ).... * @type {
1150: 47 61 69 6e 4e 6f 64 65 7c 41 72 72 61 79 7d 0a GainNode|Array}.
1160: 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
1170: 69 66 20 28 69 73 55 6e 64 65 66 28 69 6e 70 75 if (isUndef(inpu
1180: 74 73 29 20 7c 7c 20 69 6e 70 75 74 73 20 3d 3d ts) || inputs ==
1190: 3d 20 31 29 20 7b 0a 09 20 20 20 20 20 20 20 20 = 1) {..
11a0: 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74 20 3d this.input =
11b0: 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 63 72 this.context.cr
11c0: 65 61 74 65 47 61 69 6e 28 29 3b 0a 09 20 20 20 eateGain();..
11d0: 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
11e0: 69 6e 70 75 74 73 20 3e 20 31 29 20 7b 0a 09 20 inputs > 1) {..
11f0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
1200: 69 6e 70 75 74 20 3d 20 6e 65 77 20 41 72 72 61 input = new Arra
1210: 79 28 69 6e 70 75 74 73 29 3b 0a 09 20 20 20 20 y(inputs);..
1220: 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 2f }.. /
1230: 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 6f 75 **.... * the ou
1240: 74 70 75 74 20 6e 6f 64 65 28 73 29 0a 09 09 09 tput node(s)....
1250: 20 2a 20 20 40 74 79 70 65 20 7b 47 61 69 6e 4e * @type {GainN
1260: 6f 64 65 7c 41 72 72 61 79 7d 0a 09 09 09 20 2a ode|Array}.... *
1270: 2f 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 69 /.. if (i
1280: 73 55 6e 64 65 66 28 6f 75 74 70 75 74 73 29 20 sUndef(outputs)
1290: 7c 7c 20 6f 75 74 70 75 74 73 20 3d 3d 3d 20 31 || outputs === 1
12a0: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
12b0: 20 74 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 74 this.output = t
12c0: 68 69 73 2e 63 6f 6e 74 65 78 74 2e 63 72 65 61 his.context.crea
12d0: 74 65 47 61 69 6e 28 29 3b 0a 09 20 20 20 20 20 teGain();..
12e0: 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6f 75 } else if (ou
12f0: 74 70 75 74 73 20 3e 20 31 29 20 7b 0a 09 20 20 tputs > 1) {..
1300: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f this.o
1310: 75 74 70 75 74 20 3d 20 6e 65 77 20 41 72 72 61 utput = new Arra
1320: 79 28 69 6e 70 75 74 73 29 3b 0a 09 20 20 20 20 y(inputs);..
1330: 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 }.. };..
1340: 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 65 74 /**... * Set
1350: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 the parameters
1360: 61 74 20 6f 6e 63 65 2e 20 45 69 74 68 65 72 20 at once. Either
1370: 70 61 73 73 20 69 6e 20 61 6e 0a 09 09 20 2a 20 pass in an... *
1380: 20 6f 62 6a 65 63 74 20 6d 61 70 70 69 6e 67 20 object mapping
1390: 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 76 61 parameters to va
13a0: 6c 75 65 73 2c 20 6f 72 20 74 6f 20 73 65 74 20 lues, or to set
13b0: 61 0a 09 09 20 2a 20 20 73 69 6e 67 6c 65 20 70 a... * single p
13c0: 61 72 61 6d 65 74 65 72 2c 20 62 79 20 70 61 73 arameter, by pas
13d0: 73 69 6e 67 20 69 6e 20 61 20 73 74 72 69 6e 67 sing in a string
13e0: 20 61 6e 64 20 76 61 6c 75 65 2e 0a 09 09 20 2a and value.... *
13f0: 20 20 54 68 65 20 6c 61 73 74 20 61 72 67 75 6d The last argum
1400: 65 6e 74 20 69 73 20 61 6e 20 6f 70 74 69 6f 6e ent is an option
1410: 61 6c 20 72 61 6d 70 20 74 69 6d 65 20 77 68 69 al ramp time whi
1420: 63 68 20 0a 09 09 20 2a 20 20 77 69 6c 6c 20 72 ch ... * will r
1430: 61 6d 70 20 61 6e 79 20 73 69 67 6e 61 6c 20 76 amp any signal v
1440: 61 6c 75 65 73 20 74 6f 20 74 68 65 69 72 20 64 alues to their d
1450: 65 73 74 69 6e 61 74 69 6f 6e 20 76 61 6c 75 65 estination value
1460: 0a 09 09 20 2a 20 20 6f 76 65 72 20 74 68 65 20 ... * over the
1470: 64 75 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 duration of the
1480: 72 61 6d 70 54 69 6d 65 2e 0a 09 09 20 2a 20 20 rampTime.... *
1490: 40 70 61 72 61 6d 20 7b 4f 62 6a 65 63 74 7c 73 @param {Object|s
14a0: 74 72 69 6e 67 7d 20 70 61 72 61 6d 73 0a 09 09 tring} params...
14b0: 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e 75 6d 62 * @param {numb
14c0: 65 72 3d 7d 20 76 61 6c 75 65 0a 09 09 20 2a 20 er=} value... *
14d0: 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 3d 7d 20 @param {Time=}
14e0: 72 61 6d 70 54 69 6d 65 0a 09 09 20 2a 20 20 40 rampTime... * @
14f0: 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 7d 20 74 returns {Tone} t
1500: 68 69 73 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 his... * @examp
1510: 6c 65 0a 09 09 20 2a 20 2f 2f 73 65 74 20 76 61 le... * //set va
1520: 6c 75 65 73 20 75 73 69 6e 67 20 61 6e 20 6f 62 lues using an ob
1530: 6a 65 63 74 0a 09 09 20 2a 20 66 69 6c 74 65 72 ject... * filter
1540: 2e 73 65 74 28 7b 0a 09 09 20 2a 20 09 22 66 72 .set({... * ."fr
1550: 65 71 75 65 6e 63 79 22 20 3a 20 33 30 30 2c 0a equency" : 300,.
1560: 09 09 20 2a 20 09 22 74 79 70 65 22 20 3a 20 68 .. * ."type" : h
1570: 69 67 68 70 61 73 73 0a 09 09 20 2a 20 7d 29 3b ighpass... * });
1580: 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
1590: 09 09 20 2a 20 66 69 6c 74 65 72 2e 73 65 74 28 .. * filter.set(
15a0: 22 74 79 70 65 22 2c 20 22 68 69 67 68 70 61 73 "type", "highpas
15b0: 73 22 29 3b 0a 09 09 20 2a 20 20 40 65 78 61 6d s");... * @exam
15c0: 70 6c 65 0a 09 09 20 2a 20 2f 2f 72 61 6d 70 20 ple... * //ramp
15d0: 74 6f 20 74 68 65 20 76 61 6c 75 65 20 32 32 30 to the value 220
15e0: 20 6f 76 65 72 20 33 20 73 65 63 6f 6e 64 73 2e over 3 seconds.
15f0: 20 0a 09 09 20 2a 20 6f 73 63 69 6c 6c 61 74 6f ... * oscillato
1600: 72 2e 73 65 74 28 7b 0a 09 09 20 2a 20 09 22 66 r.set({... * ."f
1610: 72 65 71 75 65 6e 63 79 22 20 3a 20 32 32 30 0a requency" : 220.
1620: 09 09 20 2a 20 7d 2c 20 33 29 3b 0a 09 09 20 2a .. * }, 3);... *
1630: 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 /.. Tone.prot
1640: 6f 74 79 70 65 2e 73 65 74 20 3d 20 66 75 6e 63 otype.set = func
1650: 74 69 6f 6e 20 28 70 61 72 61 6d 73 2c 20 76 61 tion (params, va
1660: 6c 75 65 2c 20 72 61 6d 70 54 69 6d 65 29 20 7b lue, rampTime) {
1670: 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
1680: 69 73 2e 69 73 4f 62 6a 65 63 74 28 70 61 72 61 is.isObject(para
1690: 6d 73 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ms)) {..
16a0: 20 20 20 20 72 61 6d 70 54 69 6d 65 20 3d 20 76 rampTime = v
16b0: 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 20 20 7d alue;.. }
16c0: 20 65 6c 73 65 20 69 66 20 28 74 68 69 73 2e 69 else if (this.i
16d0: 73 53 74 72 69 6e 67 28 70 61 72 61 6d 73 29 29 sString(params))
16e0: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
16f0: 76 61 72 20 74 6d 70 4f 62 6a 20 3d 20 7b 7d 3b var tmpObj = {};
1700: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 6d .. tm
1710: 70 4f 62 6a 5b 70 61 72 61 6d 73 5d 20 3d 20 76 pObj[params] = v
1720: 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 20 20 20 alue;..
1730: 20 20 20 70 61 72 61 6d 73 20 3d 20 74 6d 70 4f params = tmpO
1740: 62 6a 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 bj;.. }..
1750: 20 20 20 20 20 20 20 20 70 61 72 61 6d 4c 6f 6f paramLoo
1760: 70 3a 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 p:..
1770: 66 6f 72 20 28 76 61 72 20 61 74 74 72 20 69 6e for (var attr in
1780: 20 70 61 72 61 6d 73 29 20 7b 0a 09 20 20 20 20 params) {..
1790: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 valu
17a0: 65 20 3d 20 70 61 72 61 6d 73 5b 61 74 74 72 5d e = params[attr]
17b0: 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
17c0: 20 20 20 76 61 72 20 70 61 72 65 6e 74 20 3d 20 var parent =
17d0: 74 68 69 73 3b 0a 09 20 20 20 20 20 20 20 20 20 this;..
17e0: 20 20 20 20 20 20 20 69 66 20 28 61 74 74 72 2e if (attr.
17f0: 69 6e 64 65 78 4f 66 28 27 2e 27 29 20 21 3d 3d indexOf('.') !==
1800: 20 2d 31 29 20 7b 0a 09 20 20 20 20 20 20 20 20 -1) {..
1810: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
1820: 61 74 74 72 53 70 6c 69 74 20 3d 20 61 74 74 72 attrSplit = attr
1830: 2e 73 70 6c 69 74 28 27 2e 27 29 3b 0a 09 20 20 .split('.');..
1840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1850: 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 for (var i = 0
1860: 3b 20 69 20 3c 20 61 74 74 72 53 70 6c 69 74 2e ; i < attrSplit.
1870: 6c 65 6e 67 74 68 20 2d 20 31 3b 20 69 2b 2b 29 length - 1; i++)
1880: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
1890: 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 pare
18a0: 6e 74 20 3d 20 70 61 72 65 6e 74 5b 61 74 74 72 nt = parent[attr
18b0: 53 70 6c 69 74 5b 69 5d 5d 3b 0a 09 20 20 20 20 Split[i]];..
18c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
18d0: 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 20 69 if (parent i
18e0: 6e 73 74 61 6e 63 65 6f 66 20 54 6f 6e 65 29 20 nstanceof Tone)
18f0: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
1900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 a
1910: 74 74 72 53 70 6c 69 74 2e 73 70 6c 69 63 65 28 ttrSplit.splice(
1920: 30 2c 20 69 20 2b 20 31 29 3b 0a 09 20 20 20 20 0, i + 1);..
1930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1940: 20 20 20 20 20 20 20 20 76 61 72 20 69 6e 6e 65 var inne
1950: 72 50 61 72 61 6d 20 3d 20 61 74 74 72 53 70 6c rParam = attrSpl
1960: 69 74 2e 6a 6f 69 6e 28 27 2e 27 29 3b 0a 09 20 it.join('.');..
1970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1980: 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e paren
1990: 74 2e 73 65 74 28 69 6e 6e 65 72 50 61 72 61 6d t.set(innerParam
19a0: 2c 20 76 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 , value);..
19b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19c0: 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 20 continue
19d0: 70 61 72 61 6d 4c 6f 6f 70 3b 0a 09 20 20 20 20 paramLoop;..
19e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19f0: 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
1a00: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
1a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a20: 20 20 61 74 74 72 20 3d 20 61 74 74 72 53 70 6c attr = attrSpl
1a30: 69 74 5b 61 74 74 72 53 70 6c 69 74 2e 6c 65 6e it[attrSplit.len
1a40: 67 74 68 20 2d 20 31 5d 3b 0a 09 20 20 20 20 20 gth - 1];..
1a50: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
1a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va
1a70: 72 20 70 61 72 61 6d 20 3d 20 70 61 72 65 6e 74 r param = parent
1a80: 5b 61 74 74 72 5d 3b 0a 09 20 20 20 20 20 20 20 [attr];..
1a90: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 55 if (isU
1aa0: 6e 64 65 66 28 70 61 72 61 6d 29 29 20 7b 0a 09 ndef(param)) {..
1ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1ac0: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 09 20 continue;..
1ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
1ae0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1af0: 20 20 69 66 20 28 54 6f 6e 65 2e 53 69 67 6e 61 if (Tone.Signa
1b00: 6c 20 26 26 20 70 61 72 61 6d 20 69 6e 73 74 61 l && param insta
1b10: 6e 63 65 6f 66 20 54 6f 6e 65 2e 53 69 67 6e 61 nceof Tone.Signa
1b20: 6c 20 7c 7c 20 54 6f 6e 65 2e 50 61 72 61 6d 20 l || Tone.Param
1b30: 26 26 20 70 61 72 61 6d 20 69 6e 73 74 61 6e 63 && param instanc
1b40: 65 6f 66 20 54 6f 6e 65 2e 50 61 72 61 6d 29 20 eof Tone.Param)
1b50: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
1b60: 20 20 20 20 20 20 20 69 66 20 28 70 61 72 61 6d if (param
1b70: 2e 76 61 6c 75 65 20 21 3d 3d 20 76 61 6c 75 65 .value !== value
1b80: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
1b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
1ba0: 28 69 73 55 6e 64 65 66 28 72 61 6d 70 54 69 6d (isUndef(rampTim
1bb0: 65 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 e)) {..
1bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1bd0: 20 20 20 70 61 72 61 6d 2e 76 61 6c 75 65 20 3d param.value =
1be0: 20 76 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 20 value;..
1bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c00: 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
1c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1c20: 20 20 20 20 20 20 20 70 61 72 61 6d 2e 72 61 6d param.ram
1c30: 70 54 6f 28 76 61 6c 75 65 2c 20 72 61 6d 70 54 pTo(value, rampT
1c40: 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 ime);..
1c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
1c60: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1c70: 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
1c80: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
1c90: 69 66 20 28 70 61 72 61 6d 20 69 6e 73 74 61 6e if (param instan
1ca0: 63 65 6f 66 20 41 75 64 69 6f 50 61 72 61 6d 29 ceof AudioParam)
1cb0: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
1cc0: 20 20 20 20 20 20 20 20 69 66 20 28 70 61 72 61 if (para
1cd0: 6d 2e 76 61 6c 75 65 20 21 3d 3d 20 76 61 6c 75 m.value !== valu
1ce0: 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
1cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 pa
1d00: 72 61 6d 2e 76 61 6c 75 65 20 3d 20 76 61 6c 75 ram.value = valu
1d10: 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 e;..
1d20: 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
1d30: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
1d40: 65 20 69 66 20 28 70 61 72 61 6d 20 69 6e 73 74 e if (param inst
1d50: 61 6e 63 65 6f 66 20 54 6f 6e 65 29 20 7b 0a 09 anceof Tone) {..
1d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1d70: 20 20 20 20 70 61 72 61 6d 2e 73 65 74 28 76 61 param.set(va
1d80: 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 lue);..
1d90: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 } else if
1da0: 20 28 70 61 72 61 6d 20 21 3d 3d 20 76 61 6c 75 (param !== valu
1db0: 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
1dc0: 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 parent
1dd0: 5b 61 74 74 72 5d 20 3d 20 76 61 6c 75 65 3b 0a [attr] = value;.
1de0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1df0: 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
1e00: 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 }.. retur
1e10: 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
1e20: 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 47 . /**... * G
1e30: 65 74 20 74 68 65 20 6f 62 6a 65 63 74 27 73 20 et the object's
1e40: 61 74 74 72 69 62 75 74 65 73 2e 20 47 69 76 65 attributes. Give
1e50: 6e 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 67 n no arguments g
1e60: 65 74 0a 09 09 20 2a 20 20 77 69 6c 6c 20 72 65 et... * will re
1e70: 74 75 72 6e 20 61 6c 6c 20 61 76 61 69 6c 61 62 turn all availab
1e80: 6c 65 20 6f 62 6a 65 63 74 20 70 72 6f 70 65 72 le object proper
1e90: 74 69 65 73 20 61 6e 64 20 74 68 65 69 72 20 63 ties and their c
1ea0: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 09 09 20 orresponding...
1eb0: 2a 20 20 76 61 6c 75 65 73 2e 20 50 61 73 73 20 * values. Pass
1ec0: 69 6e 20 61 20 73 69 6e 67 6c 65 20 61 74 74 72 in a single attr
1ed0: 69 62 75 74 65 20 74 6f 20 72 65 74 72 69 65 76 ibute to retriev
1ee0: 65 20 6f 72 20 61 6e 20 61 72 72 61 79 0a 09 09 e or an array...
1ef0: 20 2a 20 20 6f 66 20 61 74 74 72 69 62 75 74 65 * of attribute
1f00: 73 2e 20 54 68 65 20 61 74 74 72 69 62 75 74 65 s. The attribute
1f10: 20 73 74 72 69 6e 67 73 20 63 61 6e 20 61 6c 73 strings can als
1f20: 6f 20 69 6e 63 6c 75 64 65 20 61 20 22 2e 22 0a o include a ".".
1f30: 09 09 20 2a 20 20 74 6f 20 61 63 63 65 73 73 20 .. * to access
1f40: 64 65 65 70 65 72 20 70 72 6f 70 65 72 74 69 65 deeper propertie
1f50: 73 2e 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c s.... * @exampl
1f60: 65 0a 09 09 20 2a 20 6f 73 63 2e 67 65 74 28 29 e... * osc.get()
1f70: 3b 0a 09 09 20 2a 20 2f 2f 72 65 74 75 72 6e 73 ;... * //returns
1f80: 20 7b 22 74 79 70 65 22 20 3a 20 22 73 69 6e 65 {"type" : "sine
1f90: 22 2c 20 22 66 72 65 71 75 65 6e 63 79 22 20 3a ", "frequency" :
1fa0: 20 34 34 30 2c 20 2e 2e 2e 65 74 63 7d 0a 09 09 440, ...etc}...
1fb0: 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 * @example...
1fc0: 2a 20 6f 73 63 2e 67 65 74 28 22 74 79 70 65 22 * osc.get("type"
1fd0: 29 3b 0a 09 09 20 2a 20 2f 2f 72 65 74 75 72 6e );... * //return
1fe0: 73 20 7b 20 22 74 79 70 65 22 20 3a 20 22 73 69 s { "type" : "si
1ff0: 6e 65 22 7d 0a 09 09 20 2a 20 40 65 78 61 6d 70 ne"}... * @examp
2000: 6c 65 0a 09 09 20 2a 20 2f 2f 75 73 65 20 64 6f le... * //use do
2010: 74 20 6e 6f 74 61 74 69 6f 6e 20 74 6f 20 61 63 t notation to ac
2020: 63 65 73 73 20 64 65 65 70 20 70 72 6f 70 65 72 cess deep proper
2030: 74 69 65 73 0a 09 09 20 2a 20 73 79 6e 74 68 2e ties... * synth.
2040: 67 65 74 28 5b 22 65 6e 76 65 6c 6f 70 65 2e 61 get(["envelope.a
2050: 74 74 61 63 6b 22 2c 20 22 65 6e 76 65 6c 6f 70 ttack", "envelop
2060: 65 2e 72 65 6c 65 61 73 65 22 5d 29 3b 0a 09 09 e.release"]);...
2070: 20 2a 20 2f 2f 72 65 74 75 72 6e 73 20 7b 22 65 * //returns {"e
2080: 6e 76 65 6c 6f 70 65 22 20 3a 20 7b 22 61 74 74 nvelope" : {"att
2090: 61 63 6b 22 20 3a 20 30 2e 32 2c 20 22 72 65 6c ack" : 0.2, "rel
20a0: 65 61 73 65 22 20 3a 20 30 2e 34 7d 7d 0a 09 09 ease" : 0.4}}...
20b0: 20 2a 20 20 40 70 61 72 61 6d 20 7b 41 72 72 61 * @param {Arra
20c0: 79 3d 7c 73 74 72 69 6e 67 7c 75 6e 64 65 66 69 y=|string|undefi
20d0: 6e 65 64 7d 20 70 61 72 61 6d 73 20 74 68 65 20 ned} params the
20e0: 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 67 65 parameters to ge
20f0: 74 2c 20 6f 74 68 65 72 77 69 73 65 20 77 69 6c t, otherwise wil
2100: 6c 20 72 65 74 75 72 6e 20 0a 09 09 20 2a 20 20 l return ... *
2110: 09 09 09 09 09 20 20 20 20 20 20 20 20 20 20 20 .....
2120: 20 20 20 20 20 20 20 61 6c 6c 20 61 76 61 69 6c all avail
2130: 61 62 6c 65 2e 0a 09 09 20 2a 20 20 40 72 65 74 able.... * @ret
2140: 75 72 6e 73 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 urns {Object}...
2150: 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 70 72 */.. Tone.pr
2160: 6f 74 6f 74 79 70 65 2e 67 65 74 20 3d 20 66 75 ototype.get = fu
2170: 6e 63 74 69 6f 6e 20 28 70 61 72 61 6d 73 29 20 nction (params)
2180: 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 69 {.. if (i
2190: 73 55 6e 64 65 66 28 70 61 72 61 6d 73 29 29 20 sUndef(params))
21a0: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 70 {.. p
21b0: 61 72 61 6d 73 20 3d 20 74 68 69 73 2e 5f 63 6f arams = this._co
21c0: 6c 6c 65 63 74 44 65 66 61 75 6c 74 73 28 74 68 llectDefaults(th
21d0: 69 73 2e 63 6f 6e 73 74 72 75 63 74 6f 72 29 3b is.constructor);
21e0: 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
21f0: 20 69 66 20 28 74 68 69 73 2e 69 73 53 74 72 69 if (this.isStri
2200: 6e 67 28 70 61 72 61 6d 73 29 29 20 7b 0a 09 20 ng(params)) {..
2210: 20 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d param
2220: 73 20 3d 20 5b 70 61 72 61 6d 73 5d 3b 0a 09 20 s = [params];..
2230: 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
2240: 20 20 76 61 72 20 72 65 74 20 3d 20 7b 7d 3b 0a var ret = {};.
2250: 09 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 . for (va
2260: 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 70 61 72 r i = 0; i < par
2270: 61 6d 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 ams.length; i++)
2280: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
2290: 76 61 72 20 61 74 74 72 20 3d 20 70 61 72 61 6d var attr = param
22a0: 73 5b 69 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 s[i];..
22b0: 20 20 20 76 61 72 20 70 61 72 65 6e 74 20 3d 20 var parent =
22c0: 74 68 69 73 3b 0a 09 20 20 20 20 20 20 20 20 20 this;..
22d0: 20 20 20 76 61 72 20 73 75 62 52 65 74 20 3d 20 var subRet =
22e0: 72 65 74 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ret;..
22f0: 20 20 69 66 20 28 61 74 74 72 2e 69 6e 64 65 78 if (attr.index
2300: 4f 66 28 27 2e 27 29 20 21 3d 3d 20 2d 31 29 20 Of('.') !== -1)
2310: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
2320: 20 20 20 76 61 72 20 61 74 74 72 53 70 6c 69 74 var attrSplit
2330: 20 3d 20 61 74 74 72 2e 73 70 6c 69 74 28 27 2e = attr.split('.
2340: 27 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ');..
2350: 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 6a 20 for (var j
2360: 3d 20 30 3b 20 6a 20 3c 20 61 74 74 72 53 70 6c = 0; j < attrSpl
2370: 69 74 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 20 6a it.length - 1; j
2380: 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ++) {..
2390: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 73 var s
23a0: 75 62 41 74 74 72 20 3d 20 61 74 74 72 53 70 6c ubAttr = attrSpl
23b0: 69 74 5b 6a 5d 3b 0a 09 20 20 20 20 20 20 20 20 it[j];..
23c0: 20 20 20 20 20 20 20 20 20 20 20 20 73 75 62 52 subR
23d0: 65 74 5b 73 75 62 41 74 74 72 5d 20 3d 20 73 75 et[subAttr] = su
23e0: 62 52 65 74 5b 73 75 62 41 74 74 72 5d 20 7c 7c bRet[subAttr] ||
23f0: 20 7b 7d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 {};..
2400: 20 20 20 20 20 20 20 20 20 20 73 75 62 52 65 74 subRet
2410: 20 3d 20 73 75 62 52 65 74 5b 73 75 62 41 74 74 = subRet[subAtt
2420: 72 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 r];..
2430: 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 20 parent
2440: 3d 20 70 61 72 65 6e 74 5b 73 75 62 41 74 74 72 = parent[subAttr
2450: 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ];..
2460: 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
2470: 20 20 20 20 20 20 20 61 74 74 72 20 3d 20 61 74 attr = at
2480: 74 72 53 70 6c 69 74 5b 61 74 74 72 53 70 6c 69 trSplit[attrSpli
2490: 74 2e 6c 65 6e 67 74 68 20 2d 20 31 5d 3b 0a 09 t.length - 1];..
24a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
24b0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 70 var p
24c0: 61 72 61 6d 20 3d 20 70 61 72 65 6e 74 5b 61 74 aram = parent[at
24d0: 74 72 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 tr];..
24e0: 20 20 69 66 20 28 74 68 69 73 2e 69 73 4f 62 6a if (this.isObj
24f0: 65 63 74 28 70 61 72 61 6d 73 5b 61 74 74 72 5d ect(params[attr]
2500: 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 )) {..
2510: 20 20 20 20 20 20 73 75 62 52 65 74 5b 61 74 74 subRet[att
2520: 72 5d 20 3d 20 70 61 72 61 6d 2e 67 65 74 28 29 r] = param.get()
2530: 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
2540: 20 65 6c 73 65 20 69 66 20 28 54 6f 6e 65 2e 53 else if (Tone.S
2550: 69 67 6e 61 6c 20 26 26 20 70 61 72 61 6d 20 69 ignal && param i
2560: 6e 73 74 61 6e 63 65 6f 66 20 54 6f 6e 65 2e 53 nstanceof Tone.S
2570: 69 67 6e 61 6c 29 20 7b 0a 09 20 20 20 20 20 20 ignal) {..
2580: 20 20 20 20 20 20 20 20 20 20 73 75 62 52 65 74 subRet
2590: 5b 61 74 74 72 5d 20 3d 20 70 61 72 61 6d 2e 76 [attr] = param.v
25a0: 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 20 20 20 alue;..
25b0: 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 54 6f } else if (To
25c0: 6e 65 2e 50 61 72 61 6d 20 26 26 20 70 61 72 61 ne.Param && para
25d0: 6d 20 69 6e 73 74 61 6e 63 65 6f 66 20 54 6f 6e m instanceof Ton
25e0: 65 2e 50 61 72 61 6d 29 20 7b 0a 09 20 20 20 20 e.Param) {..
25f0: 20 20 20 20 20 20 20 20 20 20 20 20 73 75 62 52 subR
2600: 65 74 5b 61 74 74 72 5d 20 3d 20 70 61 72 61 6d et[attr] = param
2610: 2e 76 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 20 .value;..
2620: 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
2630: 70 61 72 61 6d 20 69 6e 73 74 61 6e 63 65 6f 66 param instanceof
2640: 20 41 75 64 69 6f 50 61 72 61 6d 29 20 7b 0a 09 AudioParam) {..
2650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2660: 73 75 62 52 65 74 5b 61 74 74 72 5d 20 3d 20 70 subRet[attr] = p
2670: 61 72 61 6d 2e 76 61 6c 75 65 3b 0a 09 20 20 20 aram.value;..
2680: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
2690: 69 66 20 28 70 61 72 61 6d 20 69 6e 73 74 61 6e if (param instan
26a0: 63 65 6f 66 20 54 6f 6e 65 29 20 7b 0a 09 20 20 ceof Tone) {..
26b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 su
26c0: 62 52 65 74 5b 61 74 74 72 5d 20 3d 20 70 61 72 bRet[attr] = par
26d0: 61 6d 2e 67 65 74 28 29 3b 0a 09 20 20 20 20 20 am.get();..
26e0: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 } else if
26f0: 20 28 21 69 73 46 75 6e 63 74 69 6f 6e 28 70 61 (!isFunction(pa
2700: 72 61 6d 29 20 26 26 20 21 69 73 55 6e 64 65 66 ram) && !isUndef
2710: 28 70 61 72 61 6d 29 29 20 7b 0a 09 20 20 20 20 (param)) {..
2720: 20 20 20 20 20 20 20 20 20 20 20 20 73 75 62 52 subR
2730: 65 74 5b 61 74 74 72 5d 20 3d 20 70 61 72 61 6d et[attr] = param
2740: 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
2750: 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
2760: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 3b return ret;
2770: 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
2780: 2a 0a 09 09 20 2a 20 20 63 6f 6c 6c 65 63 74 20 *... * collect
2790: 61 6c 6c 20 6f 66 20 74 68 65 20 64 65 66 61 75 all of the defau
27a0: 6c 74 20 61 74 74 72 69 62 75 74 65 73 20 69 6e lt attributes in
27b0: 20 6f 6e 65 0a 09 09 20 2a 20 20 40 70 72 69 76 one... * @priv
27c0: 61 74 65 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ate... * @param
27d0: 20 7b 66 75 6e 63 74 69 6f 6e 7d 20 63 6f 6e 73 {function} cons
27e0: 74 72 20 74 68 65 20 63 6f 6e 73 74 72 75 63 74 tr the construct
27f0: 6f 72 20 74 6f 20 66 69 6e 64 20 74 68 65 20 64 or to find the d
2800: 65 66 61 75 6c 74 73 20 66 72 6f 6d 0a 09 09 20 efaults from...
2810: 2a 20 20 40 72 65 74 75 72 6e 20 7b 41 72 72 61 * @return {Arra
2820: 79 7d 20 61 6c 6c 20 6f 66 20 74 68 65 20 61 74 y} all of the at
2830: 74 72 69 62 75 74 65 73 20 77 68 69 63 68 20 62 tributes which b
2840: 65 6c 6f 6e 67 20 74 6f 20 74 68 65 20 63 6c 61 elong to the cla
2850: 73 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f ss... */.. To
2860: 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 63 6f ne.prototype._co
2870: 6c 6c 65 63 74 44 65 66 61 75 6c 74 73 20 3d 20 llectDefaults =
2880: 66 75 6e 63 74 69 6f 6e 20 28 63 6f 6e 73 74 72 function (constr
2890: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 ) {.. var
28a0: 20 72 65 74 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 ret = [];..
28b0: 20 20 20 20 69 66 20 28 21 69 73 55 6e 64 65 66 if (!isUndef
28c0: 28 63 6f 6e 73 74 72 2e 64 65 66 61 75 6c 74 73 (constr.defaults
28d0: 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 )) {..
28e0: 20 20 72 65 74 20 3d 20 4f 62 6a 65 63 74 2e 6b ret = Object.k
28f0: 65 79 73 28 63 6f 6e 73 74 72 2e 64 65 66 61 75 eys(constr.defau
2900: 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 7d lts);.. }
2910: 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 21 69 .. if (!i
2920: 73 55 6e 64 65 66 28 63 6f 6e 73 74 72 2e 5f 73 sUndef(constr._s
2930: 75 70 65 72 29 29 20 7b 0a 09 20 20 20 20 20 20 uper)) {..
2940: 20 20 20 20 20 20 76 61 72 20 73 75 70 65 72 44 var superD
2950: 65 66 73 20 3d 20 74 68 69 73 2e 5f 63 6f 6c 6c efs = this._coll
2960: 65 63 74 44 65 66 61 75 6c 74 73 28 63 6f 6e 73 ectDefaults(cons
2970: 74 72 2e 5f 73 75 70 65 72 29 3b 0a 09 20 20 20 tr._super);..
2980: 20 20 20 20 20 20 20 20 20 2f 2f 66 69 6c 74 65 //filte
2990: 72 20 6f 75 74 20 72 65 70 65 61 74 73 0a 09 20 r out repeats..
29a0: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 for (
29b0: 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 73 var i = 0; i < s
29c0: 75 70 65 72 44 65 66 73 2e 6c 65 6e 67 74 68 3b uperDefs.length;
29d0: 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 i++) {..
29e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 74 if (ret
29f0: 2e 69 6e 64 65 78 4f 66 28 73 75 70 65 72 44 65 .indexOf(superDe
2a00: 66 73 5b 69 5d 29 20 3d 3d 3d 20 2d 31 29 20 7b fs[i]) === -1) {
2a10: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2a20: 20 20 20 20 20 20 72 65 74 2e 70 75 73 68 28 73 ret.push(s
2a30: 75 70 65 72 44 65 66 73 5b 69 5d 29 3b 0a 09 20 uperDefs[i]);..
2a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
2a50: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
2a60: 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
2a70: 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 3b 0a return ret;.
2a80: 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
2a90: 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
2aa0: 7b 73 74 72 69 6e 67 7d 20 72 65 74 75 72 6e 73 {string} returns
2ab0: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 the name of the
2ac0: 20 63 6c 61 73 73 20 61 73 20 61 20 73 74 72 69 class as a stri
2ad0: 6e 67 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f ng... */.. To
2ae0: 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 74 6f 53 ne.prototype.toS
2af0: 74 72 69 6e 67 20 3d 20 66 75 6e 63 74 69 6f 6e tring = function
2b00: 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 66 () {.. f
2b10: 6f 72 20 28 76 61 72 20 63 6c 61 73 73 4e 61 6d or (var classNam
2b20: 65 20 69 6e 20 54 6f 6e 65 29 20 7b 0a 09 20 20 e in Tone) {..
2b30: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 73 var is
2b40: 4c 65 74 74 65 72 20 3d 20 63 6c 61 73 73 4e 61 Letter = classNa
2b50: 6d 65 5b 30 5d 2e 6d 61 74 63 68 28 2f 5e 5b 41 me[0].match(/^[A
2b60: 2d 5a 5d 24 2f 29 3b 0a 09 20 20 20 20 20 20 20 -Z]$/);..
2b70: 20 20 20 20 20 76 61 72 20 73 61 6d 65 43 6f 6e var sameCon
2b80: 73 74 72 75 63 74 6f 72 20 3d 20 54 6f 6e 65 5b structor = Tone[
2b90: 63 6c 61 73 73 4e 61 6d 65 5d 20 3d 3d 3d 20 74 className] === t
2ba0: 68 69 73 2e 63 6f 6e 73 74 72 75 63 74 6f 72 3b his.constructor;
2bb0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
2bc0: 20 28 69 73 46 75 6e 63 74 69 6f 6e 28 54 6f 6e (isFunction(Ton
2bd0: 65 5b 63 6c 61 73 73 4e 61 6d 65 5d 29 20 26 26 e[className]) &&
2be0: 20 69 73 4c 65 74 74 65 72 20 26 26 20 73 61 6d isLetter && sam
2bf0: 65 43 6f 6e 73 74 72 75 63 74 6f 72 29 20 7b 0a eConstructor) {.
2c00: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2c10: 20 72 65 74 75 72 6e 20 63 6c 61 73 73 4e 61 6d return classNam
2c20: 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 e;..
2c30: 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }.. }..
2c40: 20 20 20 20 20 20 72 65 74 75 72 6e 20 27 54 6f return 'To
2c50: 6e 65 27 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ne';.. };..
2c60: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //////////////
2c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
2c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
2c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
2ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 /////////////..
2cb0: 20 20 20 2f 2f 09 43 4c 41 53 53 20 56 41 52 53 //.CLASS VARS
2cc0: 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f .. //////////
2cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
2ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
2cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
2d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
2d10: 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 /.. /**... *
2d20: 20 41 20 73 74 61 74 69 63 20 70 6f 69 6e 74 65 A static pointe
2d30: 72 20 74 6f 20 74 68 65 20 61 75 64 69 6f 20 63 r to the audio c
2d40: 6f 6e 74 65 78 74 20 61 63 63 65 73 73 69 62 6c ontext accessibl
2d50: 65 20 61 73 20 54 6f 6e 65 2e 63 6f 6e 74 65 78 e as Tone.contex
2d60: 74 2e 20 0a 09 09 20 2a 20 20 40 74 79 70 65 20 t. ... * @type
2d70: 7b 41 75 64 69 6f 43 6f 6e 74 65 78 74 7d 0a 09 {AudioContext}..
2d80: 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 63 . */.. Tone.c
2d90: 6f 6e 74 65 78 74 20 3d 20 61 75 64 69 6f 43 6f ontext = audioCo
2da0: 6e 74 65 78 74 3b 0a 09 20 20 20 20 2f 2a 2a 0a ntext;.. /**.
2db0: 09 09 20 2a 20 20 54 68 65 20 61 75 64 69 6f 20 .. * The audio
2dc0: 63 6f 6e 74 65 78 74 2e 0a 09 09 20 2a 20 20 40 context.... * @
2dd0: 74 79 70 65 20 7b 41 75 64 69 6f 43 6f 6e 74 65 type {AudioConte
2de0: 78 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 xt}... */.. T
2df0: 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 63 6f one.prototype.co
2e00: 6e 74 65 78 74 20 3d 20 54 6f 6e 65 2e 63 6f 6e ntext = Tone.con
2e10: 74 65 78 74 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 text;.. /**..
2e20: 09 20 2a 20 20 74 68 65 20 64 65 66 61 75 6c 74 . * the default
2e30: 20 62 75 66 66 65 72 20 73 69 7a 65 0a 09 09 20 buffer size...
2e40: 2a 20 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 * @type {number
2e50: 7d 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a }... * @static.
2e60: 09 09 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 .. * @const...
2e70: 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 70 72 6f */.. Tone.pro
2e80: 74 6f 74 79 70 65 2e 62 75 66 66 65 72 53 69 7a totype.bufferSiz
2e90: 65 20 3d 20 32 30 34 38 3b 0a 09 20 20 20 20 2f e = 2048;.. /
2ea0: 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 64 65 6c **... * The del
2eb0: 61 79 20 74 69 6d 65 20 6f 66 20 61 20 73 69 6e ay time of a sin
2ec0: 67 6c 65 20 66 72 61 6d 65 20 28 31 32 38 20 73 gle frame (128 s
2ed0: 61 6d 70 6c 65 73 20 61 63 63 6f 72 64 69 6e 67 amples according
2ee0: 20 74 6f 20 74 68 65 20 73 70 65 63 29 2e 20 0a to the spec). .
2ef0: 09 09 20 2a 20 20 40 74 79 70 65 20 7b 6e 75 6d .. * @type {num
2f00: 62 65 72 7d 0a 09 09 20 2a 20 20 40 73 74 61 74 ber}... * @stat
2f10: 69 63 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 0a ic... * @const.
2f20: 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
2f30: 70 72 6f 74 6f 74 79 70 65 2e 62 6c 6f 63 6b 54 prototype.blockT
2f40: 69 6d 65 20 3d 20 31 32 38 20 2f 20 54 6f 6e 65 ime = 128 / Tone
2f50: 2e 63 6f 6e 74 65 78 74 2e 73 61 6d 70 6c 65 52 .context.sampleR
2f60: 61 74 65 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 ate;.. /**...
2f70: 20 2a 20 20 54 68 65 20 74 69 6d 65 20 6f 66 20 * The time of
2f80: 61 20 73 69 6e 67 6c 65 20 73 61 6d 70 6c 65 0a a single sample.
2f90: 09 09 20 2a 20 20 40 74 79 70 65 20 7b 6e 75 6d .. * @type {num
2fa0: 62 65 72 7d 0a 09 09 20 2a 20 20 40 73 74 61 74 ber}... * @stat
2fb0: 69 63 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 0a ic... * @const.
2fc0: 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
2fd0: 70 72 6f 74 6f 74 79 70 65 2e 73 61 6d 70 6c 65 prototype.sample
2fe0: 54 69 6d 65 20 3d 20 31 20 2f 20 54 6f 6e 65 2e Time = 1 / Tone.
2ff0: 63 6f 6e 74 65 78 74 2e 73 61 6d 70 6c 65 52 61 context.sampleRa
3000: 74 65 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 te;.. /**...
3010: 2a 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 * The number of
3020: 20 69 6e 70 75 74 73 20 66 65 65 64 69 6e 67 20 inputs feeding
3030: 69 6e 74 6f 20 74 68 65 20 41 75 64 69 6f 4e 6f into the AudioNo
3040: 64 65 2e 20 0a 09 09 20 2a 20 20 46 6f 72 20 73 de. ... * For s
3050: 6f 75 72 63 65 20 6e 6f 64 65 73 2c 20 74 68 69 ource nodes, thi
3060: 73 20 77 69 6c 6c 20 62 65 20 30 2e 0a 09 09 20 s will be 0....
3070: 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
3080: 65 23 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 6e e#... * @name n
3090: 75 6d 62 65 72 4f 66 49 6e 70 75 74 73 0a 09 09 umberOfInputs...
30a0: 20 2a 20 20 40 72 65 61 64 4f 6e 6c 79 0a 09 09 * @readOnly...
30b0: 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
30c0: 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
30d0: 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 one.prototype, '
30e0: 6e 75 6d 62 65 72 4f 66 49 6e 70 75 74 73 27 2c numberOfInputs',
30f0: 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
3100: 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
3110: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
3120: 74 68 69 73 2e 69 6e 70 75 74 29 20 7b 0a 09 20 this.input) {..
3130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
3140: 66 20 28 74 68 69 73 2e 69 73 41 72 72 61 79 28 f (this.isArray(
3150: 74 68 69 73 2e 69 6e 70 75 74 29 29 20 7b 0a 09 this.input)) {..
3160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3170: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
3180: 69 6e 70 75 74 2e 6c 65 6e 67 74 68 3b 0a 09 20 input.length;..
3190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
31a0: 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
31b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
31c0: 75 72 6e 20 31 3b 0a 09 20 20 20 20 20 20 20 20 urn 1;..
31d0: 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
31e0: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
31f0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3200: 20 72 65 74 75 72 6e 20 30 3b 0a 09 20 20 20 20 return 0;..
3210: 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
3220: 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
3230: 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 /**... * The
3240: 20 6e 75 6d 62 65 72 20 6f 66 20 6f 75 74 70 75 number of outpu
3250: 74 73 20 63 6f 6d 69 6e 67 20 6f 75 74 20 6f 66 ts coming out of
3260: 20 74 68 65 20 41 75 64 69 6f 4e 6f 64 65 2e 20 the AudioNode.
3270: 0a 09 09 20 2a 20 20 46 6f 72 20 73 6f 75 72 63 ... * For sourc
3280: 65 20 6e 6f 64 65 73 2c 20 74 68 69 73 20 77 69 e nodes, this wi
3290: 6c 6c 20 62 65 20 30 2e 0a 09 09 20 2a 20 20 40 ll be 0.... * @
32a0: 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 23 0a 09 memberOf Tone#..
32b0: 09 20 2a 20 20 40 6e 61 6d 65 20 6e 75 6d 62 65 . * @name numbe
32c0: 72 4f 66 49 6e 70 75 74 73 0a 09 09 20 2a 20 20 rOfInputs... *
32d0: 40 72 65 61 64 4f 6e 6c 79 0a 09 09 20 2a 2f 0a @readOnly... */.
32e0: 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 . Object.defi
32f0: 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e neProperty(Tone.
3300: 70 72 6f 74 6f 74 79 70 65 2c 20 27 6e 75 6d 62 prototype, 'numb
3310: 65 72 4f 66 4f 75 74 70 75 74 73 27 2c 20 7b 0a erOfOutputs', {.
3320: 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
3330: 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
3340: 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 if (thi
3350: 73 2e 6f 75 74 70 75 74 29 20 7b 0a 09 20 20 20 s.output) {..
3360: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
3370: 28 74 68 69 73 2e 69 73 41 72 72 61 79 28 74 68 (this.isArray(th
3380: 69 73 2e 6f 75 74 70 75 74 29 29 20 7b 0a 09 20 is.output)) {..
3390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
33a0: 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 6f return this.o
33b0: 75 74 70 75 74 2e 6c 65 6e 67 74 68 3b 0a 09 20 utput.length;..
33c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
33d0: 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
33e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
33f0: 75 72 6e 20 31 3b 0a 09 20 20 20 20 20 20 20 20 urn 1;..
3400: 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
3410: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
3420: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3430: 20 72 65 74 75 72 6e 20 30 3b 0a 09 20 20 20 20 return 0;..
3440: 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
3450: 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
3460: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f /////////////
3470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
34a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 //////////////..
34b0: 20 20 20 20 2f 2f 09 43 4f 4e 4e 45 43 54 49 4f //.CONNECTIO
34c0: 4e 53 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f NS.. ////////
34d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
34e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
34f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3510: 2f 2f 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 ///.. /**...
3520: 2a 20 20 64 69 73 63 6f 6e 6e 65 63 74 20 61 6e * disconnect an
3530: 64 20 64 69 73 70 6f 73 65 0a 09 09 20 2a 20 20 d dispose... *
3540: 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 7d 20 @returns {Tone}
3550: 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
3560: 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 Tone.prototype.d
3570: 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f ispose = functio
3580: 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
3590: 69 66 20 28 21 74 68 69 73 2e 69 73 55 6e 64 65 if (!this.isUnde
35a0: 66 28 74 68 69 73 2e 69 6e 70 75 74 29 29 20 7b f(this.input)) {
35b0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
35c0: 20 28 74 68 69 73 2e 69 6e 70 75 74 20 69 6e 73 (this.input ins
35d0: 74 61 6e 63 65 6f 66 20 41 75 64 69 6f 4e 6f 64 tanceof AudioNod
35e0: 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
35f0: 20 20 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74 this.input
3600: 2e 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 .disconnect();..
3610: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
3620: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
3630: 69 6e 70 75 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 input = null;..
3640: 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
3650: 20 20 69 66 20 28 21 74 68 69 73 2e 69 73 55 6e if (!this.isUn
3660: 64 65 66 28 74 68 69 73 2e 6f 75 74 70 75 74 29 def(this.output)
3670: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
3680: 20 69 66 20 28 74 68 69 73 2e 6f 75 74 70 75 74 if (this.output
3690: 20 69 6e 73 74 61 6e 63 65 6f 66 20 41 75 64 69 instanceof Audi
36a0: 6f 4e 6f 64 65 29 20 7b 0a 09 20 20 20 20 20 20 oNode) {..
36b0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f this.o
36c0: 75 74 70 75 74 2e 64 69 73 63 6f 6e 6e 65 63 74 utput.disconnect
36d0: 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ();..
36e0: 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
36f0: 74 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 6e 75 this.output = nu
3700: 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 ll;.. }..
3710: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
3720: 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
3730: 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 61 20 73 69 /**... * a si
3740: 6c 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 lent connection
3750: 74 6f 20 74 68 65 20 44 65 73 69 6e 61 74 69 6f to the Desinatio
3760: 6e 4e 6f 64 65 0a 09 09 20 2a 20 20 77 68 69 63 nNode... * whic
3770: 68 20 77 69 6c 6c 20 65 6e 73 75 72 65 20 74 68 h will ensure th
3780: 61 74 20 61 6e 79 74 68 69 6e 67 20 63 6f 6e 6e at anything conn
3790: 65 63 74 65 64 20 74 6f 20 69 74 0a 09 09 20 2a ected to it... *
37a0: 20 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 67 61 will not be ga
37b0: 72 62 61 67 65 20 63 6f 6c 6c 65 63 74 65 64 0a rbage collected.
37c0: 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 70 72 .. * ... * @pr
37d0: 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 ivate... */..
37e0: 20 76 61 72 20 5f 73 69 6c 65 6e 74 4e 6f 64 65 var _silentNode
37f0: 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 2f 2a = null;.. /*
3800: 2a 0a 09 09 20 2a 20 20 6d 61 6b 65 73 20 61 20 *... * makes a
3810: 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 65 6e connection to en
3820: 73 75 72 65 20 74 68 61 74 20 74 68 65 20 6e 6f sure that the no
3830: 64 65 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 67 de will not be g
3840: 61 72 62 61 67 65 20 63 6f 6c 6c 65 63 74 65 64 arbage collected
3850: 0a 09 09 20 2a 20 20 75 6e 74 69 6c 20 27 64 69 ... * until 'di
3860: 73 70 6f 73 65 27 20 69 73 20 65 78 70 6c 69 63 spose' is explic
3870: 69 74 6c 79 20 63 61 6c 6c 65 64 0a 09 09 20 2a itly called... *
3880: 0a 09 09 20 2a 20 20 75 73 65 20 63 61 72 65 66 ... * use caref
3890: 75 6c 6c 79 2e 20 63 69 72 63 75 6d 76 65 6e 74 ully. circumvent
38a0: 73 20 4a 53 20 61 6e 64 20 57 65 62 41 75 64 69 s JS and WebAudi
38b0: 6f 27 73 20 6e 6f 72 6d 61 6c 20 47 61 72 62 61 o's normal Garba
38c0: 67 65 20 43 6f 6c 6c 65 63 74 69 6f 6e 20 62 65 ge Collection be
38d0: 68 61 76 69 6f 72 0a 09 09 20 2a 20 20 40 72 65 havior... * @re
38e0: 74 75 72 6e 73 20 7b 54 6f 6e 65 7d 20 74 68 69 turns {Tone} thi
38f0: 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
3900: 65 2e 70 72 6f 74 6f 74 79 70 65 2e 6e 6f 47 43 e.prototype.noGC
3910: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
3920: 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f .. this.o
3930: 75 74 70 75 74 2e 63 6f 6e 6e 65 63 74 28 5f 73 utput.connect(_s
3940: 69 6c 65 6e 74 4e 6f 64 65 29 3b 0a 09 20 20 20 ilentNode);..
3950: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
3960: 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 41 ;.. };.. A
3970: 75 64 69 6f 4e 6f 64 65 2e 70 72 6f 74 6f 74 79 udioNode.prototy
3980: 70 65 2e 6e 6f 47 43 20 3d 20 66 75 6e 63 74 69 pe.noGC = functi
3990: 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
39a0: 20 74 68 69 73 2e 63 6f 6e 6e 65 63 74 28 5f 73 this.connect(_s
39b0: 69 6c 65 6e 74 4e 6f 64 65 29 3b 0a 09 20 20 20 ilentNode);..
39c0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
39d0: 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
39e0: 2a 2a 0a 09 09 20 2a 20 20 63 6f 6e 6e 65 63 74 **... * connect
39f0: 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 61 the output of a
3a00: 20 54 6f 6e 65 4e 6f 64 65 20 74 6f 20 61 6e 20 ToneNode to an
3a10: 41 75 64 69 6f 50 61 72 61 6d 2c 20 41 75 64 69 AudioParam, Audi
3a20: 6f 4e 6f 64 65 2c 20 6f 72 20 54 6f 6e 65 4e 6f oNode, or ToneNo
3a30: 64 65 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 de... * @param
3a40: 20 7b 54 6f 6e 65 20 7c 20 41 75 64 69 6f 50 61 {Tone | AudioPa
3a50: 72 61 6d 20 7c 20 41 75 64 69 6f 4e 6f 64 65 7d ram | AudioNode}
3a60: 20 75 6e 69 74 20 0a 09 09 20 2a 20 20 40 70 61 unit ... * @pa
3a70: 72 61 6d 20 7b 6e 75 6d 62 65 72 7d 20 5b 6f 75 ram {number} [ou
3a80: 74 70 75 74 4e 75 6d 3d 30 5d 20 6f 70 74 69 6f tputNum=0] optio
3a90: 6e 61 6c 6c 79 20 77 68 69 63 68 20 6f 75 74 70 nally which outp
3aa0: 75 74 20 74 6f 20 63 6f 6e 6e 65 63 74 20 66 72 ut to connect fr
3ab0: 6f 6d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 om... * @param
3ac0: 7b 6e 75 6d 62 65 72 7d 20 5b 69 6e 70 75 74 4e {number} [inputN
3ad0: 75 6d 3d 30 5d 20 6f 70 74 69 6f 6e 61 6c 6c 79 um=0] optionally
3ae0: 20 77 68 69 63 68 20 69 6e 70 75 74 20 74 6f 20 which input to
3af0: 63 6f 6e 6e 65 63 74 20 74 6f 0a 09 09 20 2a 20 connect to... *
3b00: 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 7d @returns {Tone}
3b10: 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
3b20: 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e Tone.prototype.
3b30: 63 6f 6e 6e 65 63 74 20 3d 20 66 75 6e 63 74 69 connect = functi
3b40: 6f 6e 20 28 75 6e 69 74 2c 20 6f 75 74 70 75 74 on (unit, output
3b50: 4e 75 6d 2c 20 69 6e 70 75 74 4e 75 6d 29 20 7b Num, inputNum) {
3b60: 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 41 72 .. if (Ar
3b70: 72 61 79 2e 69 73 41 72 72 61 79 28 74 68 69 73 ray.isArray(this
3b80: 2e 6f 75 74 70 75 74 29 29 20 7b 0a 09 20 20 20 .output)) {..
3b90: 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 74 4e outputN
3ba0: 75 6d 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c um = this.defaul
3bb0: 74 41 72 67 28 6f 75 74 70 75 74 4e 75 6d 2c 20 tArg(outputNum,
3bc0: 30 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 0);..
3bd0: 20 74 68 69 73 2e 6f 75 74 70 75 74 5b 6f 75 74 this.output[out
3be0: 70 75 74 4e 75 6d 5d 2e 63 6f 6e 6e 65 63 74 28 putNum].connect(
3bf0: 75 6e 69 74 2c 20 30 2c 20 69 6e 70 75 74 4e 75 unit, 0, inputNu
3c00: 6d 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 m);.. } e
3c10: 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
3c20: 20 20 20 74 68 69 73 2e 6f 75 74 70 75 74 2e 63 this.output.c
3c30: 6f 6e 6e 65 63 74 28 75 6e 69 74 2c 20 6f 75 74 onnect(unit, out
3c40: 70 75 74 4e 75 6d 2c 20 69 6e 70 75 74 4e 75 6d putNum, inputNum
3c50: 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
3c60: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
3c70: 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
3c80: 20 2f 2a 2a 0a 09 09 20 2a 20 20 64 69 73 63 6f /**... * disco
3c90: 6e 6e 65 63 74 20 74 68 65 20 6f 75 74 70 75 74 nnect the output
3ca0: 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 4e ... * @param {N
3cb0: 75 6d 62 65 72 7c 41 75 64 69 6f 4e 6f 64 65 7d umber|AudioNode}
3cc0: 20 6f 75 74 70 75 74 20 45 69 74 68 65 72 20 74 output Either t
3cd0: 68 65 20 6f 75 74 70 75 74 20 69 6e 64 65 78 20 he output index
3ce0: 74 6f 20 64 69 73 63 6f 6e 6e 65 63 74 0a 09 09 to disconnect...
3cf0: 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
3d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d10: 20 20 20 20 20 69 66 20 74 68 65 20 6f 75 74 70 if the outp
3d20: 75 74 20 69 73 20 61 6e 20 61 72 72 61 79 2c 20 ut is an array,
3d30: 6f 72 20 74 68 65 0a 09 09 20 2a 20 20 20 20 20 or the... *
3d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f no
3d60: 64 65 20 74 6f 20 64 69 73 63 6f 6e 6e 65 63 74 de to disconnect
3d70: 20 66 72 6f 6d 2e 0a 09 09 20 2a 20 20 40 72 65 from.... * @re
3d80: 74 75 72 6e 73 20 7b 54 6f 6e 65 7d 20 74 68 69 turns {Tone} thi
3d90: 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
3da0: 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 63 e.prototype.disc
3db0: 6f 6e 6e 65 63 74 20 3d 20 66 75 6e 63 74 69 6f onnect = functio
3dc0: 6e 20 28 6f 75 74 70 75 74 29 20 7b 0a 09 20 20 n (output) {..
3dd0: 20 20 20 20 20 20 69 66 20 28 41 72 72 61 79 2e if (Array.
3de0: 69 73 41 72 72 61 79 28 74 68 69 73 2e 6f 75 74 isArray(this.out
3df0: 70 75 74 29 29 20 7b 0a 09 20 20 20 20 20 20 20 put)) {..
3e00: 20 20 20 20 20 6f 75 74 70 75 74 20 3d 20 74 68 output = th
3e10: 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 6f 75 is.defaultArg(ou
3e20: 74 70 75 74 2c 20 30 29 3b 0a 09 20 20 20 20 20 tput, 0);..
3e30: 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75 74 70 this.outp
3e40: 75 74 5b 6f 75 74 70 75 74 5d 2e 64 69 73 63 6f ut[output].disco
3e50: 6e 6e 65 63 74 28 29 3b 0a 09 20 20 20 20 20 20 nnect();..
3e60: 20 20 7d 20 65 6c 73 65 20 69 66 20 28 21 74 68 } else if (!th
3e70: 69 73 2e 69 73 55 6e 64 65 66 28 6f 75 74 70 75 is.isUndef(outpu
3e80: 74 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 t)) {..
3e90: 20 20 20 74 68 69 73 2e 6f 75 74 70 75 74 2e 64 this.output.d
3ea0: 69 73 63 6f 6e 6e 65 63 74 28 6f 75 74 70 75 74 isconnect(output
3eb0: 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c );.. } el
3ec0: 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 se {..
3ed0: 20 20 74 68 69 73 2e 6f 75 74 70 75 74 2e 64 69 this.output.di
3ee0: 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 20 20 20 sconnect();..
3ef0: 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
3f00: 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 return this;..
3f10: 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
3f20: 20 2a 20 20 63 6f 6e 6e 65 63 74 20 74 6f 67 65 * connect toge
3f30: 74 68 65 72 20 61 6c 6c 20 6f 66 20 74 68 65 20 ther all of the
3f40: 61 72 67 75 6d 65 6e 74 73 20 69 6e 20 73 65 72 arguments in ser
3f50: 69 65 73 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ies... * @param
3f60: 20 7b 2e 2e 2e 41 75 64 69 6f 50 61 72 61 6d 7c {...AudioParam|
3f70: 54 6f 6e 65 7c 41 75 64 69 6f 4e 6f 64 65 7d 20 Tone|AudioNode}
3f80: 6e 6f 64 65 73 0a 09 09 20 2a 20 20 40 72 65 74 nodes... * @ret
3f90: 75 72 6e 73 20 7b 54 6f 6e 65 7d 20 74 68 69 73 urns {Tone} this
3fa0: 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
3fb0: 2e 70 72 6f 74 6f 74 79 70 65 2e 63 6f 6e 6e 65 .prototype.conne
3fc0: 63 74 53 65 72 69 65 73 20 3d 20 66 75 6e 63 74 ctSeries = funct
3fd0: 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
3fe0: 20 20 69 66 20 28 61 72 67 75 6d 65 6e 74 73 2e if (arguments.
3ff0: 6c 65 6e 67 74 68 20 3e 20 31 29 20 7b 0a 09 20 length > 1) {..
4000: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63 var c
4010: 75 72 72 65 6e 74 55 6e 69 74 20 3d 20 61 72 67 urrentUnit = arg
4020: 75 6d 65 6e 74 73 5b 30 5d 3b 0a 09 20 20 20 20 uments[0];..
4030: 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 for (var
4040: 20 69 20 3d 20 31 3b 20 69 20 3c 20 61 72 67 75 i = 1; i < argu
4050: 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 3b 20 69 2b ments.length; i+
4060: 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 +) {..
4070: 20 20 20 20 20 20 76 61 72 20 74 6f 55 6e 69 74 var toUnit
4080: 20 3d 20 61 72 67 75 6d 65 6e 74 73 5b 69 5d 3b = arguments[i];
4090: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
40a0: 20 20 63 75 72 72 65 6e 74 55 6e 69 74 2e 63 6f currentUnit.co
40b0: 6e 6e 65 63 74 28 74 6f 55 6e 69 74 29 3b 0a 09 nnect(toUnit);..
40c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
40d0: 63 75 72 72 65 6e 74 55 6e 69 74 20 3d 20 74 6f currentUnit = to
40e0: 55 6e 69 74 3b 0a 09 20 20 20 20 20 20 20 20 20 Unit;..
40f0: 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a }.. }.
4100: 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
4110: 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
4120: 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6f 6e /**... * Con
4130: 6e 65 63 74 20 74 68 65 20 6f 75 74 70 75 74 20 nect the output
4140: 6f 66 20 74 68 69 73 20 6e 6f 64 65 20 74 6f 20 of this node to
4150: 74 68 65 20 72 65 73 74 20 6f 66 20 74 68 65 20 the rest of the
4160: 6e 6f 64 65 73 20 69 6e 20 73 65 72 69 65 73 2e nodes in series.
4170: 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
4180: 09 09 20 2a 20 20 2f 2f 63 6f 6e 6e 65 63 74 20 .. * //connect
4190: 61 20 6e 6f 64 65 20 74 6f 20 61 6e 20 65 66 66 a node to an eff
41a0: 65 63 74 2c 20 70 61 6e 56 6f 6c 20 61 6e 64 20 ect, panVol and
41b0: 74 68 65 6e 20 74 6f 20 74 68 65 20 6d 61 73 74 then to the mast
41c0: 65 72 20 6f 75 74 70 75 74 0a 09 09 20 2a 20 20 er output... *
41d0: 6e 6f 64 65 2e 63 68 61 69 6e 28 65 66 66 65 63 node.chain(effec
41e0: 74 2c 20 70 61 6e 56 6f 6c 2c 20 54 6f 6e 65 2e t, panVol, Tone.
41f0: 4d 61 73 74 65 72 29 3b 0a 09 09 20 2a 20 20 40 Master);... * @
4200: 70 61 72 61 6d 20 7b 2e 2e 2e 41 75 64 69 6f 50 param {...AudioP
4210: 61 72 61 6d 7c 54 6f 6e 65 7c 41 75 64 69 6f 4e aram|Tone|AudioN
4220: 6f 64 65 7d 20 6e 6f 64 65 73 0a 09 09 20 2a 20 ode} nodes... *
4230: 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 7d @returns {Tone}
4240: 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
4250: 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e Tone.prototype.
4260: 63 68 61 69 6e 20 3d 20 66 75 6e 63 74 69 6f 6e chain = function
4270: 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 69 () {.. i
4280: 66 20 28 61 72 67 75 6d 65 6e 74 73 2e 6c 65 6e f (arguments.len
4290: 67 74 68 20 3e 20 30 29 20 7b 0a 09 20 20 20 20 gth > 0) {..
42a0: 20 20 20 20 20 20 20 20 76 61 72 20 63 75 72 72 var curr
42b0: 65 6e 74 55 6e 69 74 20 3d 20 74 68 69 73 3b 0a entUnit = this;.
42c0: 09 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 . for
42d0: 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c (var i = 0; i <
42e0: 20 61 72 67 75 6d 65 6e 74 73 2e 6c 65 6e 67 74 arguments.lengt
42f0: 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 h; i++) {..
4300: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 74 var t
4310: 6f 55 6e 69 74 20 3d 20 61 72 67 75 6d 65 6e 74 oUnit = argument
4320: 73 5b 69 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 s[i];..
4330: 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 55 6e currentUn
4340: 69 74 2e 63 6f 6e 6e 65 63 74 28 74 6f 55 6e 69 it.connect(toUni
4350: 74 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 t);..
4360: 20 20 20 20 20 63 75 72 72 65 6e 74 55 6e 69 74 currentUnit
4370: 20 3d 20 74 6f 55 6e 69 74 3b 0a 09 20 20 20 20 = toUnit;..
4380: 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
4390: 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 72 65 }.. re
43a0: 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 turn this;..
43b0: 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
43c0: 20 20 63 6f 6e 6e 65 63 74 20 74 68 65 20 6f 75 connect the ou
43d0: 74 70 75 74 20 6f 66 20 74 68 69 73 20 6e 6f 64 tput of this nod
43e0: 65 20 74 6f 20 74 68 65 20 72 65 73 74 20 6f 66 e to the rest of
43f0: 20 74 68 65 20 6e 6f 64 65 73 20 69 6e 20 70 61 the nodes in pa
4400: 72 61 6c 6c 65 6c 2e 0a 09 09 20 2a 20 20 40 70 rallel.... * @p
4410: 61 72 61 6d 20 7b 2e 2e 2e 41 75 64 69 6f 50 61 aram {...AudioPa
4420: 72 61 6d 7c 54 6f 6e 65 7c 41 75 64 69 6f 4e 6f ram|Tone|AudioNo
4430: 64 65 7d 20 6e 6f 64 65 73 0a 09 09 20 2a 20 20 de} nodes... *
4440: 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 7d 20 @returns {Tone}
4450: 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
4460: 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 66 Tone.prototype.f
4470: 61 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 an = function ()
4480: 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
4490: 61 72 67 75 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 arguments.length
44a0: 20 3e 20 30 29 20 7b 0a 09 20 20 20 20 20 20 20 > 0) {..
44b0: 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 for (var i
44c0: 3d 20 30 3b 20 69 20 3c 20 61 72 67 75 6d 65 6e = 0; i < argumen
44d0: 74 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 ts.length; i++)
44e0: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
44f0: 20 20 20 74 68 69 73 2e 63 6f 6e 6e 65 63 74 28 this.connect(
4500: 61 72 67 75 6d 65 6e 74 73 5b 69 5d 29 3b 0a 09 arguments[i]);..
4510: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
4520: 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
4530: 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
4540: 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f 67 69 };.. //gi
4550: 76 65 20 6e 61 74 69 76 65 20 6e 6f 64 65 73 20 ve native nodes
4560: 63 68 61 69 6e 20 61 6e 64 20 66 61 6e 20 6d 65 chain and fan me
4570: 74 68 6f 64 73 0a 09 20 20 20 20 41 75 64 69 6f thods.. Audio
4580: 4e 6f 64 65 2e 70 72 6f 74 6f 74 79 70 65 2e 63 Node.prototype.c
4590: 68 61 69 6e 20 3d 20 54 6f 6e 65 2e 70 72 6f 74 hain = Tone.prot
45a0: 6f 74 79 70 65 2e 63 68 61 69 6e 3b 0a 09 20 20 otype.chain;..
45b0: 20 20 41 75 64 69 6f 4e 6f 64 65 2e 70 72 6f 74 AudioNode.prot
45c0: 6f 74 79 70 65 2e 66 61 6e 20 3d 20 54 6f 6e 65 otype.fan = Tone
45d0: 2e 70 72 6f 74 6f 74 79 70 65 2e 66 61 6e 3b 0a .prototype.fan;.
45e0: 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f . ///////////
45f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
4600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
4610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
4620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
4630: 0a 09 20 20 20 20 2f 2f 09 55 54 49 4c 49 54 49 .. //.UTILITI
4640: 45 53 20 2f 20 48 45 4c 50 45 52 53 20 2f 20 4d ES / HELPERS / M
4650: 41 54 48 53 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f ATHS.. //////
4660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
4670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
4680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
4690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
46a0: 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 /////.. /**..
46b0: 09 20 2a 20 20 49 66 20 74 68 65 20 60 67 69 76 . * If the `giv
46c0: 65 6e 60 20 70 61 72 61 6d 65 74 65 72 20 69 73 en` parameter is
46d0: 20 75 6e 64 65 66 69 6e 65 64 2c 20 75 73 65 20 undefined, use
46e0: 74 68 65 20 60 66 61 6c 6c 62 61 63 6b 60 2e 20 the `fallback`.
46f0: 0a 09 09 20 2a 20 20 49 66 20 62 6f 74 68 20 60 ... * If both `
4700: 67 69 76 65 6e 60 20 61 6e 64 20 60 66 61 6c 6c given` and `fall
4710: 62 61 63 6b 60 20 61 72 65 20 6f 62 6a 65 63 74 back` are object
4720: 20 6c 69 74 65 72 61 6c 73 2c 20 69 74 20 77 69 literals, it wi
4730: 6c 6c 0a 09 09 20 2a 20 20 72 65 74 75 72 6e 20 ll... * return
4740: 61 20 64 65 65 70 20 63 6f 70 79 20 77 68 69 63 a deep copy whic
4750: 68 20 69 6e 63 6c 75 64 65 73 20 61 6c 6c 20 6f h includes all o
4760: 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 f the parameters
4770: 20 66 72 6f 6d 20 62 6f 74 68 20 0a 09 09 20 2a from both ... *
4780: 20 20 6f 62 6a 65 63 74 73 2e 20 49 66 20 61 20 objects. If a
4790: 70 61 72 61 6d 65 74 65 72 20 69 73 20 75 6e 64 parameter is und
47a0: 65 66 69 6e 65 64 20 69 6e 20 67 69 76 65 6e 2c efined in given,
47b0: 20 69 74 20 77 69 6c 6c 20 72 65 74 75 72 6e 0a it will return.
47c0: 09 09 20 2a 20 20 74 68 65 20 66 61 6c 6c 62 61 .. * the fallba
47d0: 63 6b 20 70 72 6f 70 65 72 74 79 2e 20 0a 09 09 ck property. ...
47e0: 20 2a 20 20 3c 62 72 3e 3c 62 72 3e 0a 09 09 20 * <br><br>...
47f0: 2a 20 20 57 41 52 4e 49 4e 47 3a 20 69 66 20 6f * WARNING: if o
4800: 62 6a 65 63 74 20 69 73 20 73 65 6c 66 20 72 65 bject is self re
4810: 66 65 72 65 6e 74 69 61 6c 2c 20 69 74 20 77 69 ferential, it wi
4820: 6c 6c 20 67 6f 20 69 6e 74 6f 20 61 6e 20 61 6e ll go into an an
4830: 20 0a 09 09 20 2a 20 20 69 6e 66 69 6e 69 74 65 ... * infinite
4840: 20 72 65 63 75 72 73 69 76 65 20 6c 6f 6f 70 2e recursive loop.
4850: 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 70 ... * ... * @p
4860: 61 72 61 6d 20 20 7b 2a 7d 20 67 69 76 65 6e 20 aram {*} given
4870: 20 20 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ... * @param
4880: 20 20 7b 2a 7d 20 66 61 6c 6c 62 61 63 6b 20 0a {*} fallback .
4890: 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 2a .. * @return {*
48a0: 7d 20 20 20 20 20 20 20 20 20 20 0a 09 09 20 2a } ... *
48b0: 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 /.. Tone.prot
48c0: 6f 74 79 70 65 2e 64 65 66 61 75 6c 74 41 72 67 otype.defaultArg
48d0: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 67 69 76 = function (giv
48e0: 65 6e 2c 20 66 61 6c 6c 62 61 63 6b 29 20 7b 0a en, fallback) {.
48f0: 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 . if (thi
4900: 73 2e 69 73 4f 62 6a 65 63 74 28 67 69 76 65 6e s.isObject(given
4910: 29 20 26 26 20 74 68 69 73 2e 69 73 4f 62 6a 65 ) && this.isObje
4920: 63 74 28 66 61 6c 6c 62 61 63 6b 29 29 20 7b 0a ct(fallback)) {.
4930: 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
4940: 20 72 65 74 20 3d 20 7b 7d 3b 0a 09 20 20 20 20 ret = {};..
4950: 20 20 20 20 20 20 20 20 2f 2f 6d 61 6b 65 20 61 //make a
4960: 20 64 65 65 70 20 63 6f 70 79 20 6f 66 20 74 68 deep copy of th
4970: 65 20 67 69 76 65 6e 20 6f 62 6a 65 63 74 0a 09 e given object..
4980: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 for
4990: 28 76 61 72 20 67 69 76 65 6e 50 72 6f 70 20 69 (var givenProp i
49a0: 6e 20 67 69 76 65 6e 29 20 7b 0a 09 20 20 20 20 n given) {..
49b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 5b ret[
49c0: 67 69 76 65 6e 50 72 6f 70 5d 20 3d 20 74 68 69 givenProp] = thi
49d0: 73 2e 64 65 66 61 75 6c 74 41 72 67 28 66 61 6c s.defaultArg(fal
49e0: 6c 62 61 63 6b 5b 67 69 76 65 6e 50 72 6f 70 5d lback[givenProp]
49f0: 2c 20 67 69 76 65 6e 5b 67 69 76 65 6e 50 72 6f , given[givenPro
4a00: 70 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 p]);..
4a10: 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
4a20: 20 66 6f 72 20 28 76 61 72 20 66 61 6c 6c 62 61 for (var fallba
4a30: 63 6b 50 72 6f 70 20 69 6e 20 66 61 6c 6c 62 61 ckProp in fallba
4a40: 63 6b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ck) {..
4a50: 20 20 20 20 20 20 20 72 65 74 5b 66 61 6c 6c 62 ret[fallb
4a60: 61 63 6b 50 72 6f 70 5d 20 3d 20 74 68 69 73 2e ackProp] = this.
4a70: 64 65 66 61 75 6c 74 41 72 67 28 67 69 76 65 6e defaultArg(given
4a80: 5b 66 61 6c 6c 62 61 63 6b 50 72 6f 70 5d 2c 20 [fallbackProp],
4a90: 66 61 6c 6c 62 61 63 6b 5b 66 61 6c 6c 62 61 63 fallback[fallbac
4aa0: 6b 50 72 6f 70 5d 29 3b 0a 09 20 20 20 20 20 20 kProp]);..
4ab0: 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
4ac0: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 3b return ret;
4ad0: 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
4ae0: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
4af0: 72 65 74 75 72 6e 20 69 73 55 6e 64 65 66 28 67 return isUndef(g
4b00: 69 76 65 6e 29 20 3f 20 66 61 6c 6c 62 61 63 6b iven) ? fallback
4b10: 20 3a 20 67 69 76 65 6e 3b 0a 09 20 20 20 20 20 : given;..
4b20: 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 }.. };..
4b30: 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 72 65 74 75 /**... * retu
4b40: 72 6e 73 20 74 68 65 20 61 72 67 73 20 61 73 20 rns the args as
4b50: 61 6e 20 6f 70 74 69 6f 6e 73 20 6f 62 6a 65 63 an options objec
4b60: 74 20 77 69 74 68 20 67 69 76 65 6e 20 61 72 67 t with given arg
4b70: 75 6d 65 6e 74 73 0a 09 09 20 2a 20 20 6d 61 70 uments... * map
4b80: 70 65 64 20 74 6f 20 74 68 65 20 6e 61 6d 65 73 ped to the names
4b90: 20 70 72 6f 76 69 64 65 64 2e 20 0a 09 09 20 2a provided. ... *
4ba0: 0a 09 09 20 2a 20 20 69 66 20 74 68 65 20 61 72 ... * if the ar
4bb0: 67 73 20 67 69 76 65 6e 20 69 73 20 61 6e 20 61 gs given is an a
4bc0: 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 rray containing
4bd0: 6f 6e 6c 79 20 6f 6e 65 20 6f 62 6a 65 63 74 2c only one object,
4be0: 20 69 74 20 69 73 20 61 73 73 75 6d 65 64 0a 09 it is assumed..
4bf0: 09 20 2a 20 20 74 68 61 74 20 74 68 61 74 27 73 . * that that's
4c00: 20 61 6c 72 65 61 64 79 20 74 68 65 20 6f 70 74 already the opt
4c10: 69 6f 6e 73 20 6f 62 6a 65 63 74 20 61 6e 64 20 ions object and
4c20: 77 69 6c 6c 20 6a 75 73 74 20 72 65 74 75 72 6e will just return
4c30: 20 69 74 2e 20 0a 09 09 20 2a 20 20 0a 09 09 20 it. ... * ...
4c40: 2a 20 20 40 70 61 72 61 6d 20 20 7b 41 72 72 61 * @param {Arra
4c50: 79 7d 20 76 61 6c 75 65 73 20 20 74 68 65 20 27 y} values the '
4c60: 61 72 67 75 6d 65 6e 74 73 27 20 6f 62 6a 65 63 arguments' objec
4c70: 74 20 6f 66 20 74 68 65 20 66 75 6e 63 74 69 6f t of the functio
4c80: 6e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 n... * @param
4c90: 7b 41 72 72 61 79 7d 20 6b 65 79 73 20 74 68 65 {Array} keys the
4ca0: 20 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 61 72 names of the ar
4cb0: 67 75 6d 65 6e 74 73 20 61 73 20 74 68 65 79 0a guments as they.
4cc0: 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 .. *
4cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4ce0: 20 20 20 20 20 73 68 6f 75 6c 64 20 61 70 70 65 should appe
4cf0: 61 72 20 69 6e 20 74 68 65 20 6f 70 74 69 6f 6e ar in the option
4d00: 73 20 6f 62 6a 65 63 74 0a 09 09 20 2a 20 20 40 s object... * @
4d10: 70 61 72 61 6d 20 7b 4f 62 6a 65 63 74 3d 7d 20 param {Object=}
4d20: 64 65 66 61 75 6c 74 73 20 6f 70 74 69 6f 6e 61 defaults optiona
4d30: 6c 20 64 65 66 61 75 6c 74 73 20 74 6f 20 6d 69 l defaults to mi
4d40: 78 69 6e 20 74 6f 20 74 68 65 20 72 65 74 75 72 xin to the retur
4d50: 6e 65 64 20 0a 09 09 20 2a 20 20 20 20 20 20 20 ned ... *
4d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4d70: 20 20 20 20 20 6f 70 74 69 6f 6e 73 20 6f 62 6a options obj
4d80: 65 63 74 20 20 20 20 20 20 20 20 20 20 20 20 20 ect
4d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4da0: 20 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 ... * @return
4db0: 7b 4f 62 6a 65 63 74 7d 20 20 20 20 20 20 20 74 {Object} t
4dc0: 68 65 20 6f 70 74 69 6f 6e 73 20 6f 62 6a 65 63 he options objec
4dd0: 74 20 77 69 74 68 20 74 68 65 20 6e 61 6d 65 73 t with the names
4de0: 20 6d 61 70 70 65 64 20 74 6f 20 74 68 65 20 61 mapped to the a
4df0: 72 67 75 6d 65 6e 74 73 0a 09 09 20 2a 2f 0a 09 rguments... */..
4e00: 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 Tone.prototy
4e10: 70 65 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 pe.optionsObject
4e20: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c = function (val
4e30: 75 65 73 2c 20 6b 65 79 73 2c 20 64 65 66 61 75 ues, keys, defau
4e40: 6c 74 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 lts) {..
4e50: 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 7b 7d var options = {}
4e60: 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 76 ;.. if (v
4e70: 61 6c 75 65 73 2e 6c 65 6e 67 74 68 20 3d 3d 3d alues.length ===
4e80: 20 31 20 26 26 20 74 68 69 73 2e 69 73 4f 62 6a 1 && this.isObj
4e90: 65 63 74 28 76 61 6c 75 65 73 5b 30 5d 29 29 20 ect(values[0]))
4ea0: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 6f {.. o
4eb0: 70 74 69 6f 6e 73 20 3d 20 76 61 6c 75 65 73 5b ptions = values[
4ec0: 30 5d 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 0];.. } e
4ed0: 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
4ee0: 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 for (var i =
4ef0: 30 3b 20 69 20 3c 20 6b 65 79 73 2e 6c 65 6e 67 0; i < keys.leng
4f00: 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 th; i++) {..
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 74 69 opti
4f20: 6f 6e 73 5b 6b 65 79 73 5b 69 5d 5d 20 3d 20 76 ons[keys[i]] = v
4f30: 61 6c 75 65 73 5b 69 5d 3b 0a 09 20 20 20 20 20 alues[i];..
4f40: 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
4f50: 20 20 7d 0a 09 20 20 20 20 20 20 20 20 69 66 20 }.. if
4f60: 28 21 74 68 69 73 2e 69 73 55 6e 64 65 66 28 64 (!this.isUndef(d
4f70: 65 66 61 75 6c 74 73 29 29 20 7b 0a 09 20 20 20 efaults)) {..
4f80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
4f90: 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 this.defaultArg(
4fa0: 6f 70 74 69 6f 6e 73 2c 20 64 65 66 61 75 6c 74 options, default
4fb0: 73 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 s);.. } e
4fc0: 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
4fd0: 20 20 20 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e return option
4fe0: 73 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 s;.. }..
4ff0: 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f };.. /////
5000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5040: 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2f 20 54 //////.. // T
5050: 59 50 45 20 43 48 45 43 4b 49 4e 47 0a 09 20 20 YPE CHECKING..
5060: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //////////////
5070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
50a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 /////////////..
50b0: 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 65 73 /**... * tes
50c0: 74 20 69 66 20 74 68 65 20 61 72 67 20 69 73 20 t if the arg is
50d0: 75 6e 64 65 66 69 6e 65 64 0a 09 09 20 2a 20 20 undefined... *
50e0: 40 70 61 72 61 6d 20 7b 2a 7d 20 61 72 67 20 74 @param {*} arg t
50f0: 68 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 he argument to t
5100: 65 73 74 0a 09 09 20 2a 20 20 40 72 65 74 75 72 est... * @retur
5110: 6e 73 20 7b 62 6f 6f 6c 65 61 6e 7d 20 74 72 75 ns {boolean} tru
5120: 65 20 69 66 20 74 68 65 20 61 72 67 20 69 73 20 e if the arg is
5130: 75 6e 64 65 66 69 6e 65 64 0a 09 09 20 2a 20 20 undefined... *
5140: 40 66 75 6e 63 74 69 6f 6e 0a 09 09 20 2a 2f 0a @function... */.
5150: 09 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 . Tone.protot
5160: 79 70 65 2e 69 73 55 6e 64 65 66 20 3d 20 69 73 ype.isUndef = is
5170: 55 6e 64 65 66 3b 0a 09 20 20 20 20 2f 2a 2a 0a Undef;.. /**.
5180: 09 09 20 2a 20 20 74 65 73 74 20 69 66 20 74 68 .. * test if th
5190: 65 20 61 72 67 20 69 73 20 61 20 66 75 6e 63 74 e arg is a funct
51a0: 69 6f 6e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ion... * @param
51b0: 20 7b 2a 7d 20 61 72 67 20 74 68 65 20 61 72 67 {*} arg the arg
51c0: 75 6d 65 6e 74 20 74 6f 20 74 65 73 74 0a 09 09 ument to test...
51d0: 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 62 6f * @returns {bo
51e0: 6f 6c 65 61 6e 7d 20 74 72 75 65 20 69 66 20 74 olean} true if t
51f0: 68 65 20 61 72 67 20 69 73 20 61 20 66 75 6e 63 he arg is a func
5200: 74 69 6f 6e 0a 09 09 20 2a 20 20 40 66 75 6e 63 tion... * @func
5210: 74 69 6f 6e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 tion... */..
5220: 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 69 Tone.prototype.i
5230: 73 46 75 6e 63 74 69 6f 6e 20 3d 20 69 73 46 75 sFunction = isFu
5240: 6e 63 74 69 6f 6e 3b 0a 09 20 20 20 20 2f 2a 2a nction;.. /**
5250: 0a 09 09 20 2a 20 20 54 65 73 74 20 69 66 20 74 ... * Test if t
5260: 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 he argument is a
5270: 20 6e 75 6d 62 65 72 2e 0a 09 09 20 2a 20 20 40 number.... * @
5280: 70 61 72 61 6d 20 7b 2a 7d 20 61 72 67 20 74 68 param {*} arg th
5290: 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 65 e argument to te
52a0: 73 74 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e st... * @return
52b0: 73 20 7b 62 6f 6f 6c 65 61 6e 7d 20 74 72 75 65 s {boolean} true
52c0: 20 69 66 20 74 68 65 20 61 72 67 20 69 73 20 61 if the arg is a
52d0: 20 6e 75 6d 62 65 72 0a 09 09 20 2a 2f 0a 09 20 number... */..
52e0: 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 Tone.prototyp
52f0: 65 2e 69 73 4e 75 6d 62 65 72 20 3d 20 66 75 6e e.isNumber = fun
5300: 63 74 69 6f 6e 20 28 61 72 67 29 20 7b 0a 09 20 ction (arg) {..
5310: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 79 return ty
5320: 70 65 6f 66 20 61 72 67 20 3d 3d 3d 20 27 6e 75 peof arg === 'nu
5330: 6d 62 65 72 27 3b 0a 09 20 20 20 20 7d 3b 0a 09 mber';.. };..
5340: 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 65 /**... * Te
5350: 73 74 20 69 66 20 74 68 65 20 67 69 76 65 6e 20 st if the given
5360: 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20 6f argument is an o
5370: 62 6a 65 63 74 20 6c 69 74 65 72 61 6c 20 28 69 bject literal (i
5380: 2e 65 2e 20 60 7b 7d 60 29 3b 0a 09 09 20 2a 20 .e. `{}`);... *
5390: 20 40 70 61 72 61 6d 20 7b 2a 7d 20 61 72 67 20 @param {*} arg
53a0: 74 68 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 the argument to
53b0: 74 65 73 74 0a 09 09 20 2a 20 20 40 72 65 74 75 test... * @retu
53c0: 72 6e 73 20 7b 62 6f 6f 6c 65 61 6e 7d 20 74 72 rns {boolean} tr
53d0: 75 65 20 69 66 20 74 68 65 20 61 72 67 20 69 73 ue if the arg is
53e0: 20 61 6e 20 6f 62 6a 65 63 74 20 6c 69 74 65 72 an object liter
53f0: 61 6c 2e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 al.... */.. T
5400: 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 69 73 one.prototype.is
5410: 4f 62 6a 65 63 74 20 3d 20 66 75 6e 63 74 69 6f Object = functio
5420: 6e 20 28 61 72 67 29 20 7b 0a 09 20 20 20 20 20 n (arg) {..
5430: 20 20 20 72 65 74 75 72 6e 20 4f 62 6a 65 63 74 return Object
5440: 2e 70 72 6f 74 6f 74 79 70 65 2e 74 6f 53 74 72 .prototype.toStr
5450: 69 6e 67 2e 63 61 6c 6c 28 61 72 67 29 20 3d 3d ing.call(arg) ==
5460: 3d 20 27 5b 6f 62 6a 65 63 74 20 4f 62 6a 65 63 = '[object Objec
5470: 74 5d 27 20 26 26 20 61 72 67 2e 63 6f 6e 73 74 t]' && arg.const
5480: 72 75 63 74 6f 72 20 3d 3d 3d 20 4f 62 6a 65 63 ructor === Objec
5490: 74 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 t;.. };..
54a0: 2f 2a 2a 0a 09 09 20 2a 20 20 54 65 73 74 20 69 /**... * Test i
54b0: 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 f the argument i
54c0: 73 20 61 20 62 6f 6f 6c 65 61 6e 2e 0a 09 09 20 s a boolean....
54d0: 2a 20 20 40 70 61 72 61 6d 20 7b 2a 7d 20 61 72 * @param {*} ar
54e0: 67 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 74 g the argument t
54f0: 6f 20 74 65 73 74 0a 09 09 20 2a 20 20 40 72 65 o test... * @re
5500: 74 75 72 6e 73 20 7b 62 6f 6f 6c 65 61 6e 7d 20 turns {boolean}
5510: 74 72 75 65 20 69 66 20 74 68 65 20 61 72 67 20 true if the arg
5520: 69 73 20 61 20 62 6f 6f 6c 65 61 6e 0a 09 09 20 is a boolean...
5530: 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 70 72 6f */.. Tone.pro
5540: 74 6f 74 79 70 65 2e 69 73 42 6f 6f 6c 65 61 6e totype.isBoolean
5550: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 61 72 67 = function (arg
5560: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ) {.. ret
5570: 75 72 6e 20 74 79 70 65 6f 66 20 61 72 67 20 3d urn typeof arg =
5580: 3d 3d 20 27 62 6f 6f 6c 65 61 6e 27 3b 0a 09 20 == 'boolean';..
5590: 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
55a0: 09 20 2a 20 20 54 65 73 74 20 69 66 20 74 68 65 . * Test if the
55b0: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20 argument is an
55c0: 41 72 72 61 79 0a 09 09 20 2a 20 20 40 70 61 72 Array... * @par
55d0: 61 6d 20 7b 2a 7d 20 61 72 67 20 74 68 65 20 61 am {*} arg the a
55e0: 72 67 75 6d 65 6e 74 20 74 6f 20 74 65 73 74 0a rgument to test.
55f0: 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
5600: 62 6f 6f 6c 65 61 6e 7d 20 74 72 75 65 20 69 66 boolean} true if
5610: 20 74 68 65 20 61 72 67 20 69 73 20 61 6e 20 61 the arg is an a
5620: 72 72 61 79 0a 09 09 20 2a 2f 0a 09 20 20 20 20 rray... */..
5630: 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 69 Tone.prototype.i
5640: 73 41 72 72 61 79 20 3d 20 66 75 6e 63 74 69 6f sArray = functio
5650: 6e 20 28 61 72 67 29 20 7b 0a 09 20 20 20 20 20 n (arg) {..
5660: 20 20 20 72 65 74 75 72 6e 20 41 72 72 61 79 2e return Array.
5670: 69 73 41 72 72 61 79 28 61 72 67 29 3b 0a 09 20 isArray(arg);..
5680: 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
5690: 09 20 2a 20 20 54 65 73 74 20 69 66 20 74 68 65 . * Test if the
56a0: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 73 argument is a s
56b0: 74 72 69 6e 67 2e 0a 09 09 20 2a 20 20 40 70 61 tring.... * @pa
56c0: 72 61 6d 20 7b 2a 7d 20 61 72 67 20 74 68 65 20 ram {*} arg the
56d0: 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 65 73 74 argument to test
56e0: 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
56f0: 7b 62 6f 6f 6c 65 61 6e 7d 20 74 72 75 65 20 69 {boolean} true i
5700: 66 20 74 68 65 20 61 72 67 20 69 73 20 61 20 73 f the arg is a s
5710: 74 72 69 6e 67 0a 09 09 20 2a 2f 0a 09 20 20 20 tring... */..
5720: 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e Tone.prototype.
5730: 69 73 53 74 72 69 6e 67 20 3d 20 66 75 6e 63 74 isString = funct
5740: 69 6f 6e 20 28 61 72 67 29 20 7b 0a 09 20 20 20 ion (arg) {..
5750: 20 20 20 20 20 72 65 74 75 72 6e 20 74 79 70 65 return type
5760: 6f 66 20 61 72 67 20 3d 3d 3d 20 27 73 74 72 69 of arg === 'stri
5770: 6e 67 27 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ng';.. };..
5780: 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 41 6e 20 65 /**... * An e
5790: 6d 70 74 79 20 66 75 6e 63 74 69 6f 6e 2e 0a 09 mpty function...
57a0: 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 . * @static...
57b0: 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 6e 6f 4f */.. Tone.noO
57c0: 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 p = function ()
57d0: 7b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f {.. };.. /
57e0: 2a 2a 0a 09 09 20 2a 20 20 4d 61 6b 65 20 74 68 **... * Make th
57f0: 65 20 70 72 6f 70 65 72 74 79 20 6e 6f 74 20 77 e property not w
5800: 72 69 74 61 62 6c 65 2e 20 49 6e 74 65 72 6e 61 ritable. Interna
5810: 6c 20 75 73 65 20 6f 6e 6c 79 2e 20 0a 09 09 20 l use only. ...
5820: 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a * @private... *
5830: 20 20 40 70 61 72 61 6d 20 20 7b 73 74 72 69 6e @param {strin
5840: 67 7d 20 20 70 72 6f 70 65 72 74 79 20 20 74 68 g} property th
5850: 65 20 70 72 6f 70 65 72 74 79 20 74 6f 20 6d 61 e property to ma
5860: 6b 65 20 6e 6f 74 20 77 72 69 74 61 62 6c 65 0a ke not writable.
5870: 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
5880: 70 72 6f 74 6f 74 79 70 65 2e 5f 72 65 61 64 4f prototype._readO
5890: 6e 6c 79 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 nly = function (
58a0: 70 72 6f 70 65 72 74 79 29 20 7b 0a 09 20 20 20 property) {..
58b0: 20 20 20 20 20 69 66 20 28 41 72 72 61 79 2e 69 if (Array.i
58c0: 73 41 72 72 61 79 28 70 72 6f 70 65 72 74 79 29 sArray(property)
58d0: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
58e0: 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b for (var i = 0;
58f0: 20 69 20 3c 20 70 72 6f 70 65 72 74 79 2e 6c 65 i < property.le
5900: 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 ngth; i++) {..
5910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
5920: 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 70 72 6f is._readOnly(pro
5930: 70 65 72 74 79 5b 69 5d 29 3b 0a 09 20 20 20 20 perty[i]);..
5940: 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
5950: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
5960: 20 20 20 20 20 20 20 20 20 4f 62 6a 65 63 74 2e Object.
5970: 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 74 defineProperty(t
5980: 68 69 73 2c 20 70 72 6f 70 65 72 74 79 2c 20 7b his, property, {
5990: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
59a0: 20 20 77 72 69 74 61 62 6c 65 3a 20 66 61 6c 73 writable: fals
59b0: 65 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 e,..
59c0: 20 20 20 20 65 6e 75 6d 65 72 61 62 6c 65 3a 20 enumerable:
59d0: 74 72 75 65 0a 09 20 20 20 20 20 20 20 20 20 20 true..
59e0: 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 7d });.. }
59f0: 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
5a00: 2a 0a 09 09 20 2a 20 20 4d 61 6b 65 20 61 6e 20 *... * Make an
5a10: 61 74 74 72 69 62 75 74 65 20 77 72 69 74 65 61 attribute writea
5a20: 62 6c 65 2e 20 49 6e 74 65 72 61 6c 20 75 73 65 ble. Interal use
5a30: 20 6f 6e 6c 79 2e 20 0a 09 09 20 2a 20 20 40 70 only. ... * @p
5a40: 72 69 76 61 74 65 0a 09 09 20 2a 20 20 40 70 61 rivate... * @pa
5a50: 72 61 6d 20 20 7b 73 74 72 69 6e 67 7d 20 20 70 ram {string} p
5a60: 72 6f 70 65 72 74 79 20 20 74 68 65 20 70 72 6f roperty the pro
5a70: 70 65 72 74 79 20 74 6f 20 6d 61 6b 65 20 77 72 perty to make wr
5a80: 69 74 61 62 6c 65 0a 09 09 20 2a 2f 0a 09 20 20 itable... */..
5a90: 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 Tone.prototype
5aa0: 2e 5f 77 72 69 74 61 62 6c 65 20 3d 20 66 75 6e ._writable = fun
5ab0: 63 74 69 6f 6e 20 28 70 72 6f 70 65 72 74 79 29 ction (property)
5ac0: 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
5ad0: 41 72 72 61 79 2e 69 73 41 72 72 61 79 28 70 72 Array.isArray(pr
5ae0: 6f 70 65 72 74 79 29 29 20 7b 0a 09 20 20 20 20 operty)) {..
5af0: 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 for (var
5b00: 20 69 20 3d 20 30 3b 20 69 20 3c 20 70 72 6f 70 i = 0; i < prop
5b10: 65 72 74 79 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b erty.length; i++
5b20: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
5b30: 20 20 20 20 20 74 68 69 73 2e 5f 77 72 69 74 61 this._writa
5b40: 62 6c 65 28 70 72 6f 70 65 72 74 79 5b 69 5d 29 ble(property[i])
5b50: 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
5b60: 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
5b70: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
5b80: 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
5b90: 70 65 72 74 79 28 74 68 69 73 2c 20 70 72 6f 70 perty(this, prop
5ba0: 65 72 74 79 2c 20 7b 20 77 72 69 74 61 62 6c 65 erty, { writable
5bb0: 3a 20 74 72 75 65 20 7d 29 3b 0a 09 20 20 20 20 : true });..
5bc0: 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 }.. };..
5bd0: 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 50 6f 73 73 /**... * Poss
5be0: 69 62 6c 65 20 70 6c 61 79 20 73 74 61 74 65 73 ible play states
5bf0: 2e 20 0a 09 09 20 2a 20 40 65 6e 75 6d 20 7b 73 . ... * @enum {s
5c00: 74 72 69 6e 67 7d 0a 09 09 20 2a 2f 0a 09 20 20 tring}... */..
5c10: 20 20 54 6f 6e 65 2e 53 74 61 74 65 20 3d 20 7b Tone.State = {
5c20: 0a 09 20 20 20 20 20 20 20 20 53 74 61 72 74 65 .. Starte
5c30: 64 3a 20 27 73 74 61 72 74 65 64 27 2c 0a 09 20 d: 'started',..
5c40: 20 20 20 20 20 20 20 53 74 6f 70 70 65 64 3a 20 Stopped:
5c50: 27 73 74 6f 70 70 65 64 27 2c 0a 09 20 20 20 20 'stopped',..
5c60: 20 20 20 20 50 61 75 73 65 64 3a 20 27 70 61 75 Paused: 'pau
5c70: 73 65 64 27 0a 09 20 20 20 20 7d 3b 0a 09 20 20 sed'.. };..
5c80: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //////////////
5c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 /////////////..
5cd0: 20 20 20 2f 2f 20 47 41 49 4e 20 43 4f 4e 56 45 // GAIN CONVE
5ce0: 52 53 49 4f 4e 53 0a 09 20 20 20 20 2f 2f 2f 2f RSIONS.. ////
5cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
5d30: 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2a 2a ///////.. /**
5d40: 0a 09 09 20 2a 20 20 45 71 75 61 6c 20 70 6f 77 ... * Equal pow
5d50: 65 72 20 67 61 69 6e 20 73 63 61 6c 65 2e 20 47 er gain scale. G
5d60: 6f 6f 64 20 66 6f 72 20 63 72 6f 73 73 2d 66 61 ood for cross-fa
5d70: 64 69 6e 67 2e 0a 09 09 20 2a 20 20 40 70 61 72 ding.... * @par
5d80: 61 6d 20 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 am {NormalRange
5d90: 7d 20 70 65 72 63 65 6e 74 20 28 30 2d 31 29 0a } percent (0-1).
5da0: 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 4e .. * @return {N
5db0: 75 6d 62 65 72 7d 20 20 20 20 20 20 20 20 20 6f umber} o
5dc0: 75 74 70 75 74 20 67 61 69 6e 20 28 30 2d 31 29 utput gain (0-1)
5dd0: 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
5de0: 2e 70 72 6f 74 6f 74 79 70 65 2e 65 71 75 61 6c .prototype.equal
5df0: 50 6f 77 65 72 53 63 61 6c 65 20 3d 20 66 75 6e PowerScale = fun
5e00: 63 74 69 6f 6e 20 28 70 65 72 63 65 6e 74 29 20 ction (percent)
5e10: 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 70 {.. var p
5e20: 69 46 61 63 74 6f 72 20 3d 20 30 2e 35 20 2a 20 iFactor = 0.5 *
5e30: 4d 61 74 68 2e 50 49 3b 0a 09 20 20 20 20 20 20 Math.PI;..
5e40: 20 20 72 65 74 75 72 6e 20 4d 61 74 68 2e 73 69 return Math.si
5e50: 6e 28 70 65 72 63 65 6e 74 20 2a 20 70 69 46 61 n(percent * piFa
5e60: 63 74 6f 72 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 ctor);.. };..
5e70: 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6f /**... * Co
5e80: 6e 76 65 72 74 20 64 65 63 69 62 65 6c 73 20 69 nvert decibels i
5e90: 6e 74 6f 20 67 61 69 6e 2e 0a 09 09 20 2a 20 20 nto gain.... *
5ea0: 40 70 61 72 61 6d 20 20 7b 44 65 63 69 62 65 6c @param {Decibel
5eb0: 73 7d 20 64 62 0a 09 09 20 2a 20 20 40 72 65 74 s} db... * @ret
5ec0: 75 72 6e 20 7b 4e 75 6d 62 65 72 7d 20 20 20 0a urn {Number} .
5ed0: 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
5ee0: 70 72 6f 74 6f 74 79 70 65 2e 64 62 54 6f 47 61 prototype.dbToGa
5ef0: 69 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 64 in = function (d
5f00: 62 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 b) {.. re
5f10: 74 75 72 6e 20 4d 61 74 68 2e 70 6f 77 28 32 2c turn Math.pow(2,
5f20: 20 64 62 20 2f 20 36 29 3b 0a 09 20 20 20 20 7d db / 6);.. }
5f30: 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
5f40: 20 43 6f 6e 76 65 72 74 20 67 61 69 6e 20 74 6f Convert gain to
5f50: 20 64 65 63 69 62 65 6c 73 2e 0a 09 09 20 2a 20 decibels.... *
5f60: 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 @param {Number
5f70: 7d 20 67 61 69 6e 20 28 30 2d 31 29 0a 09 09 20 } gain (0-1)...
5f80: 2a 20 20 40 72 65 74 75 72 6e 20 7b 44 65 63 69 * @return {Deci
5f90: 62 65 6c 73 7d 20 20 20 0a 09 09 20 2a 2f 0a 09 bels} ... */..
5fa0: 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 Tone.prototy
5fb0: 70 65 2e 67 61 69 6e 54 6f 44 62 20 3d 20 66 75 pe.gainToDb = fu
5fc0: 6e 63 74 69 6f 6e 20 28 67 61 69 6e 29 20 7b 0a nction (gain) {.
5fd0: 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
5fe0: 32 30 20 2a 20 28 4d 61 74 68 2e 6c 6f 67 28 67 20 * (Math.log(g
5ff0: 61 69 6e 29 20 2f 20 4d 61 74 68 2e 4c 4e 31 30 ain) / Math.LN10
6000: 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
6010: 2f 2a 2a 0a 09 09 20 2a 20 20 43 6f 6e 76 65 72 /**... * Conver
6020: 74 20 61 6e 20 69 6e 74 65 72 76 61 6c 20 28 69 t an interval (i
6030: 6e 20 73 65 6d 69 74 6f 6e 65 73 29 20 74 6f 20 n semitones) to
6040: 61 20 66 72 65 71 75 65 6e 63 79 20 72 61 74 69 a frequency rati
6050: 6f 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 o.... * @param
6060: 20 7b 49 6e 74 65 72 76 61 6c 7d 20 69 6e 74 65 {Interval} inte
6070: 72 76 61 6c 20 74 68 65 20 6e 75 6d 62 65 72 20 rval the number
6080: 6f 66 20 73 65 6d 69 74 6f 6e 65 73 20 61 62 6f of semitones abo
6090: 76 65 20 74 68 65 20 62 61 73 65 20 6e 6f 74 65 ve the base note
60a0: 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b ... * @return {
60b0: 6e 75 6d 62 65 72 7d 20 20 20 20 20 20 20 20 20 number}
60c0: 20 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 72 the frequency r
60d0: 61 74 69 6f 0a 09 09 20 2a 20 20 40 65 78 61 6d atio... * @exam
60e0: 70 6c 65 0a 09 09 20 2a 20 74 6f 6e 65 2e 69 6e ple... * tone.in
60f0: 74 65 72 76 61 6c 54 6f 46 72 65 71 75 65 6e 63 tervalToFrequenc
6100: 79 52 61 74 69 6f 28 30 29 3b 20 2f 2f 20 31 0a yRatio(0); // 1.
6110: 09 09 20 2a 20 74 6f 6e 65 2e 69 6e 74 65 72 76 .. * tone.interv
6120: 61 6c 54 6f 46 72 65 71 75 65 6e 63 79 52 61 74 alToFrequencyRat
6130: 69 6f 28 31 32 29 3b 20 2f 2f 20 32 0a 09 09 20 io(12); // 2...
6140: 2a 20 74 6f 6e 65 2e 69 6e 74 65 72 76 61 6c 54 * tone.intervalT
6150: 6f 46 72 65 71 75 65 6e 63 79 52 61 74 69 6f 28 oFrequencyRatio(
6160: 2d 31 32 29 3b 20 2f 2f 20 30 2e 35 0a 09 09 20 -12); // 0.5...
6170: 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 70 72 6f */.. Tone.pro
6180: 74 6f 74 79 70 65 2e 69 6e 74 65 72 76 61 6c 54 totype.intervalT
6190: 6f 46 72 65 71 75 65 6e 63 79 52 61 74 69 6f 20 oFrequencyRatio
61a0: 3d 20 66 75 6e 63 74 69 6f 6e 20 28 69 6e 74 65 = function (inte
61b0: 72 76 61 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 rval) {..
61c0: 20 72 65 74 75 72 6e 20 4d 61 74 68 2e 70 6f 77 return Math.pow
61d0: 28 32 2c 20 69 6e 74 65 72 76 61 6c 20 2f 20 31 (2, interval / 1
61e0: 32 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 2);.. };..
61f0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ///////////////
6200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 ////////////..
6240: 20 20 2f 2f 09 54 49 4d 49 4e 47 0a 09 20 20 20 //.TIMING..
6250: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ///////////////
6260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 ////////////..
62a0: 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 /**... * Retu
62b0: 72 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 rn the current t
62c0: 69 6d 65 20 6f 66 20 74 68 65 20 41 75 64 69 6f ime of the Audio
62d0: 43 6f 6e 74 65 78 74 20 63 6c 6f 63 6b 2e 0a 09 Context clock...
62e0: 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 4e 75 . * @return {Nu
62f0: 6d 62 65 72 7d 20 74 68 65 20 63 75 72 72 65 6e mber} the curren
6300: 74 54 69 6d 65 20 66 72 6f 6d 20 74 68 65 20 41 tTime from the A
6310: 75 64 69 6f 43 6f 6e 74 65 78 74 0a 09 09 20 2a udioContext... *
6320: 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 /.. Tone.prot
6330: 6f 74 79 70 65 2e 6e 6f 77 20 3d 20 66 75 6e 63 otype.now = func
6340: 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
6350: 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 63 return this.c
6360: 6f 6e 74 65 78 74 2e 63 75 72 72 65 6e 74 54 69 ontext.currentTi
6370: 6d 65 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 me;.. };..
6380: 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 /**... * Retur
6390: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 69 n the current ti
63a0: 6d 65 20 6f 66 20 74 68 65 20 41 75 64 69 6f 43 me of the AudioC
63b0: 6f 6e 74 65 78 74 20 63 6c 6f 63 6b 2e 0a 09 09 ontext clock....
63c0: 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 4e 75 6d * @return {Num
63d0: 62 65 72 7d 20 74 68 65 20 63 75 72 72 65 6e 74 ber} the current
63e0: 54 69 6d 65 20 66 72 6f 6d 20 74 68 65 20 41 75 Time from the Au
63f0: 64 69 6f 43 6f 6e 74 65 78 74 0a 09 09 20 2a 20 dioContext... *
6400: 20 40 73 74 61 74 69 63 0a 09 09 20 2a 2f 0a 09 @static... */..
6410: 20 20 20 20 54 6f 6e 65 2e 6e 6f 77 20 3d 20 66 Tone.now = f
6420: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
6430: 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e return Ton
6440: 65 2e 63 6f 6e 74 65 78 74 2e 63 75 72 72 65 6e e.context.curren
6450: 74 54 69 6d 65 3b 0a 09 20 20 20 20 7d 3b 0a 09 tTime;.. };..
6460: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////
6470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a ///////////////.
64b0: 09 20 20 20 20 2f 2f 09 49 4e 48 45 52 49 54 41 . //.INHERITA
64c0: 4e 43 45 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f NCE.. ///////
64d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
64e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
64f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6510: 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 ////.. /**...
6520: 20 2a 20 20 68 61 76 65 20 61 20 63 68 69 6c 64 * have a child
6530: 20 69 6e 68 65 72 69 74 20 61 6c 6c 20 6f 66 20 inherit all of
6540: 54 6f 6e 65 27 73 20 28 6f 72 20 61 20 70 61 72 Tone's (or a par
6550: 65 6e 74 27 73 29 20 70 72 6f 74 6f 74 79 70 65 ent's) prototype
6560: 0a 09 09 20 2a 20 20 74 6f 20 69 6e 68 65 72 69 ... * to inheri
6570: 74 20 74 68 65 20 70 61 72 65 6e 74 27 73 20 70 t the parent's p
6580: 72 6f 70 65 72 74 69 65 73 2c 20 6d 61 6b 65 20 roperties, make
6590: 73 75 72 65 20 74 6f 20 63 61 6c 6c 20 0a 09 09 sure to call ...
65a0: 20 2a 20 20 50 61 72 65 6e 74 2e 63 61 6c 6c 28 * Parent.call(
65b0: 74 68 69 73 29 20 69 6e 20 74 68 65 20 63 68 69 this) in the chi
65c0: 6c 64 27 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 ld's constructor
65d0: 0a 09 09 20 2a 0a 09 09 20 2a 20 20 62 61 73 65 ... *... * base
65e0: 64 20 6f 6e 20 63 6c 6f 73 75 72 65 20 6c 69 62 d on closure lib
65f0: 72 61 72 79 27 73 20 69 6e 68 65 72 69 74 20 66 rary's inherit f
6600: 75 6e 63 74 69 6f 6e 0a 09 09 20 2a 0a 09 09 20 unction... *...
6610: 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 * @static... *
6620: 20 40 70 61 72 61 6d 20 20 7b 66 75 6e 63 74 69 @param {functi
6630: 6f 6e 7d 20 09 63 68 69 6c 64 20 20 0a 09 09 20 on} .child ...
6640: 2a 20 20 40 70 61 72 61 6d 20 20 7b 66 75 6e 63 * @param {func
6650: 74 69 6f 6e 3d 7d 20 70 61 72 65 6e 74 20 28 6f tion=} parent (o
6660: 70 74 69 6f 6e 61 6c 29 20 70 61 72 65 6e 74 20 ptional) parent
6670: 74 6f 20 69 6e 68 65 72 69 74 20 66 72 6f 6d 0a to inherit from.
6680: 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 .. *
6690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
66a0: 20 69 66 20 6e 6f 20 70 61 72 65 6e 74 20 69 73 if no parent is
66b0: 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20 63 supplied, the c
66c0: 68 69 6c 64 0a 09 09 20 2a 20 20 20 20 20 20 20 hild... *
66d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
66e0: 20 20 20 20 20 20 77 69 6c 6c 20 69 6e 68 65 72 will inher
66f0: 69 74 20 66 72 6f 6d 20 54 6f 6e 65 0a 09 09 20 it from Tone...
6700: 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 */.. Tone.ext
6710: 65 6e 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 end = function (
6720: 63 68 69 6c 64 2c 20 70 61 72 65 6e 74 29 20 7b child, parent) {
6730: 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 69 73 .. if (is
6740: 55 6e 64 65 66 28 70 61 72 65 6e 74 29 29 20 7b Undef(parent)) {
6750: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 70 61 .. pa
6760: 72 65 6e 74 20 3d 20 54 6f 6e 65 3b 0a 09 20 20 rent = Tone;..
6770: 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
6780: 20 66 75 6e 63 74 69 6f 6e 20 54 65 6d 70 43 6f function TempCo
6790: 6e 73 74 72 75 63 74 6f 72 28 29 20 7b 0a 09 20 nstructor() {..
67a0: 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
67b0: 20 20 54 65 6d 70 43 6f 6e 73 74 72 75 63 74 6f TempConstructo
67c0: 72 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 70 61 r.prototype = pa
67d0: 72 65 6e 74 2e 70 72 6f 74 6f 74 79 70 65 3b 0a rent.prototype;.
67e0: 09 20 20 20 20 20 20 20 20 63 68 69 6c 64 2e 70 . child.p
67f0: 72 6f 74 6f 74 79 70 65 20 3d 20 6e 65 77 20 54 rototype = new T
6800: 65 6d 70 43 6f 6e 73 74 72 75 63 74 6f 72 28 29 empConstructor()
6810: 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 20 40 ;.. /** @
6820: 6f 76 65 72 72 69 64 65 20 2a 2f 0a 09 20 20 20 override */..
6830: 20 20 20 20 20 63 68 69 6c 64 2e 70 72 6f 74 6f child.proto
6840: 74 79 70 65 2e 63 6f 6e 73 74 72 75 63 74 6f 72 type.constructor
6850: 20 3d 20 63 68 69 6c 64 3b 0a 09 20 20 20 20 20 = child;..
6860: 20 20 20 63 68 69 6c 64 2e 5f 73 75 70 65 72 20 child._super
6870: 3d 20 70 61 72 65 6e 74 3b 0a 09 20 20 20 20 7d = parent;.. }
6880: 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f ;.. /////////
6890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
68a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
68b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
68c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
68d0: 2f 2f 0a 09 20 20 20 20 2f 2f 09 43 4f 4e 54 45 //.. //.CONTE
68e0: 58 54 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f XT.. ////////
68f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
6930: 2f 2f 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 ///.. /**...
6940: 2a 20 20 61 72 72 61 79 20 6f 66 20 63 61 6c 6c * array of call
6950: 62 61 63 6b 73 20 74 6f 20 62 65 20 69 6e 76 6f backs to be invo
6960: 6b 65 64 20 77 68 65 6e 20 61 20 6e 65 77 20 63 ked when a new c
6970: 6f 6e 74 65 78 74 20 69 73 20 61 64 64 65 64 0a ontext is added.
6980: 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 20 0a .. * @private .
6990: 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
69a0: 09 20 2a 2f 0a 09 20 20 20 20 76 61 72 20 6e 65 . */.. var ne
69b0: 77 43 6f 6e 74 65 78 74 43 61 6c 6c 62 61 63 6b wContextCallback
69c0: 73 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 2f 2a 2a s = [];.. /**
69d0: 0a 09 09 20 2a 20 20 69 6e 76 6f 6b 65 20 74 68 ... * invoke th
69e0: 69 73 20 63 61 6c 6c 62 61 63 6b 20 77 68 65 6e is callback when
69f0: 20 61 20 6e 65 77 20 63 6f 6e 74 65 78 74 20 69 a new context i
6a00: 73 20 61 64 64 65 64 0a 09 09 20 2a 20 20 77 69 s added... * wi
6a10: 6c 6c 20 62 65 20 69 6e 76 6f 6b 65 64 20 69 6e ll be invoked in
6a20: 69 74 69 61 6c 6c 79 20 77 69 74 68 20 74 68 65 itially with the
6a30: 20 66 69 72 73 74 20 63 6f 6e 74 65 78 74 0a 09 first context..
6a40: 09 20 2a 20 20 40 70 72 69 76 61 74 65 20 0a 09 . * @private ..
6a50: 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 . * @static...
6a60: 2a 20 20 40 70 61 72 61 6d 20 7b 66 75 6e 63 74 * @param {funct
6a70: 69 6f 6e 28 41 75 64 69 6f 43 6f 6e 74 65 78 74 ion(AudioContext
6a80: 29 7d 20 63 61 6c 6c 62 61 63 6b 20 74 68 65 20 )} callback the
6a90: 63 61 6c 6c 62 61 63 6b 20 74 6f 20 62 65 20 69 callback to be i
6aa0: 6e 76 6f 6b 65 64 0a 09 09 20 2a 20 20 20 20 20 nvoked... *
6ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6ad0: 20 20 20 20 20 20 77 69 74 68 20 74 68 65 20 61 with the a
6ae0: 75 64 69 6f 20 63 6f 6e 74 65 78 74 0a 09 09 20 udio context...
6af0: 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 5f 69 6e */.. Tone._in
6b00: 69 74 41 75 64 69 6f 43 6f 6e 74 65 78 74 20 3d itAudioContext =
6b10: 20 66 75 6e 63 74 69 6f 6e 20 28 63 61 6c 6c 62 function (callb
6b20: 61 63 6b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ack) {..
6b30: 2f 2f 69 6e 76 6f 6b 65 20 74 68 65 20 63 61 6c //invoke the cal
6b40: 6c 62 61 63 6b 20 77 69 74 68 20 74 68 65 20 65 lback with the e
6b50: 78 69 73 74 69 6e 67 20 41 75 64 69 6f 43 6f 6e xisting AudioCon
6b60: 74 65 78 74 0a 09 20 20 20 20 20 20 20 20 63 61 text.. ca
6b70: 6c 6c 62 61 63 6b 28 54 6f 6e 65 2e 63 6f 6e 74 llback(Tone.cont
6b80: 65 78 74 29 3b 0a 09 20 20 20 20 20 20 20 20 2f ext);.. /
6b90: 2f 61 64 64 20 69 74 20 74 6f 20 74 68 65 20 61 /add it to the a
6ba0: 72 72 61 79 0a 09 20 20 20 20 20 20 20 20 6e 65 rray.. ne
6bb0: 77 43 6f 6e 74 65 78 74 43 61 6c 6c 62 61 63 6b wContextCallback
6bc0: 73 2e 70 75 73 68 28 63 61 6c 6c 62 61 63 6b 29 s.push(callback)
6bd0: 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
6be0: 2a 2a 0a 09 09 20 2a 20 20 54 6f 6e 65 20 61 75 **... * Tone au
6bf0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 63 72 65 61 tomatically crea
6c00: 74 65 73 20 61 20 63 6f 6e 74 65 78 74 20 6f 6e tes a context on
6c10: 20 69 6e 69 74 2c 20 62 75 74 20 69 66 20 79 6f init, but if yo
6c20: 75 20 61 72 65 20 77 6f 72 6b 69 6e 67 0a 09 09 u are working...
6c30: 20 2a 20 20 77 69 74 68 20 6f 74 68 65 72 20 6c * with other l
6c40: 69 62 72 61 72 69 65 73 20 77 68 69 63 68 20 61 ibraries which a
6c50: 6c 73 6f 20 63 72 65 61 74 65 20 61 6e 20 41 75 lso create an Au
6c60: 64 69 6f 43 6f 6e 74 65 78 74 2c 20 69 74 20 63 dioContext, it c
6c70: 61 6e 20 62 65 0a 09 09 20 2a 20 20 75 73 65 66 an be... * usef
6c80: 75 6c 20 74 6f 20 73 65 74 20 79 6f 75 72 20 6f ul to set your o
6c90: 77 6e 2e 20 49 66 20 79 6f 75 20 61 72 65 20 67 wn. If you are g
6ca0: 6f 69 6e 67 20 74 6f 20 73 65 74 20 79 6f 75 72 oing to set your
6cb0: 20 6f 77 6e 20 63 6f 6e 74 65 78 74 2c 20 0a 09 own context, ..
6cc0: 09 20 2a 20 20 62 65 20 73 75 72 65 20 74 6f 20 . * be sure to
6cd0: 64 6f 20 69 74 20 61 74 20 74 68 65 20 73 74 61 do it at the sta
6ce0: 72 74 20 6f 66 20 79 6f 75 72 20 63 6f 64 65 2c rt of your code,
6cf0: 20 62 65 66 6f 72 65 20 63 72 65 61 74 69 6e 67 before creating
6d00: 20 61 6e 79 20 6f 62 6a 65 63 74 73 2e 0a 09 09 any objects....
6d10: 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a * @static... *
6d20: 20 20 40 70 61 72 61 6d 20 7b 41 75 64 69 6f 43 @param {AudioC
6d30: 6f 6e 74 65 78 74 7d 20 63 74 78 20 54 68 65 20 ontext} ctx The
6d40: 6e 65 77 20 61 75 64 69 6f 20 63 6f 6e 74 65 78 new audio contex
6d50: 74 20 74 6f 20 73 65 74 0a 09 09 20 2a 2f 0a 09 t to set... */..
6d60: 20 20 20 20 54 6f 6e 65 2e 73 65 74 43 6f 6e 74 Tone.setCont
6d70: 65 78 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ext = function (
6d80: 63 74 78 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ctx) {..
6d90: 2f 2f 73 65 74 20 74 68 65 20 70 72 6f 74 6f 74 //set the protot
6da0: 79 70 65 73 0a 09 20 20 20 20 20 20 20 20 54 6f ypes.. To
6db0: 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 63 6f 6e ne.prototype.con
6dc0: 74 65 78 74 20 3d 20 63 74 78 3b 0a 09 20 20 20 text = ctx;..
6dd0: 20 20 20 20 20 54 6f 6e 65 2e 63 6f 6e 74 65 78 Tone.contex
6de0: 74 20 3d 20 63 74 78 3b 0a 09 20 20 20 20 20 20 t = ctx;..
6df0: 20 20 2f 2f 69 6e 76 6f 6b 65 20 61 6c 6c 20 74 //invoke all t
6e00: 68 65 20 63 61 6c 6c 62 61 63 6b 73 0a 09 20 20 he callbacks..
6e10: 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 for (var i
6e20: 20 3d 20 30 3b 20 69 20 3c 20 6e 65 77 43 6f 6e = 0; i < newCon
6e30: 74 65 78 74 43 61 6c 6c 62 61 63 6b 73 2e 6c 65 textCallbacks.le
6e40: 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 ngth; i++) {..
6e50: 20 20 20 20 20 20 20 20 20 20 6e 65 77 43 6f 6e newCon
6e60: 74 65 78 74 43 61 6c 6c 62 61 63 6b 73 5b 69 5d textCallbacks[i]
6e70: 28 63 74 78 29 3b 0a 09 20 20 20 20 20 20 20 20 (ctx);..
6e80: 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f }.. };.. /
6e90: 2f 73 65 74 75 70 20 74 68 65 20 63 6f 6e 74 65 /setup the conte
6ea0: 78 74 0a 09 20 20 20 20 54 6f 6e 65 2e 5f 69 6e xt.. Tone._in
6eb0: 69 74 41 75 64 69 6f 43 6f 6e 74 65 78 74 28 66 itAudioContext(f
6ec0: 75 6e 63 74 69 6f 6e 20 28 61 75 64 69 6f 43 6f unction (audioCo
6ed0: 6e 74 65 78 74 29 20 7b 0a 09 20 20 20 20 20 20 ntext) {..
6ee0: 20 20 2f 2f 73 65 74 20 74 68 65 20 62 6c 6f 63 //set the bloc
6ef0: 6b 54 69 6d 65 0a 09 20 20 20 20 20 20 20 20 54 kTime.. T
6f00: 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 62 6c one.prototype.bl
6f10: 6f 63 6b 54 69 6d 65 20 3d 20 31 32 38 20 2f 20 ockTime = 128 /
6f20: 61 75 64 69 6f 43 6f 6e 74 65 78 74 2e 73 61 6d audioContext.sam
6f30: 70 6c 65 52 61 74 65 3b 0a 09 20 20 20 20 20 20 pleRate;..
6f40: 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 Tone.prototype
6f50: 2e 73 61 6d 70 6c 65 54 69 6d 65 20 3d 20 31 20 .sampleTime = 1
6f60: 2f 20 61 75 64 69 6f 43 6f 6e 74 65 78 74 2e 73 / audioContext.s
6f70: 61 6d 70 6c 65 52 61 74 65 3b 0a 09 20 20 20 20 ampleRate;..
6f80: 20 20 20 20 5f 73 69 6c 65 6e 74 4e 6f 64 65 20 _silentNode
6f90: 3d 20 61 75 64 69 6f 43 6f 6e 74 65 78 74 2e 63 = audioContext.c
6fa0: 72 65 61 74 65 47 61 69 6e 28 29 3b 0a 09 20 20 reateGain();..
6fb0: 20 20 20 20 20 20 5f 73 69 6c 65 6e 74 4e 6f 64 _silentNod
6fc0: 65 2e 67 61 69 6e 2e 76 61 6c 75 65 20 3d 20 30 e.gain.value = 0
6fd0: 3b 0a 09 20 20 20 20 20 20 20 20 5f 73 69 6c 65 ;.. _sile
6fe0: 6e 74 4e 6f 64 65 2e 63 6f 6e 6e 65 63 74 28 61 ntNode.connect(a
6ff0: 75 64 69 6f 43 6f 6e 74 65 78 74 2e 64 65 73 74 udioContext.dest
7000: 69 6e 61 74 69 6f 6e 29 3b 0a 09 20 20 20 20 7d ination);.. }
7010: 29 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 76 65 72 );.. Tone.ver
7020: 73 69 6f 6e 20 3d 20 27 72 39 27 3b 0a 09 20 20 sion = 'r9';..
7030: 20 20 2f 2f 20 61 6c 6c 6f 77 20 6f 70 74 69 6f // allow optio
7040: 6e 61 6c 20 73 69 6c 65 6e 63 69 6e 67 20 6f 66 nal silencing of
7050: 20 74 68 69 73 20 6c 6f 67 0a 09 20 20 20 20 69 this log.. i
7060: 66 20 28 21 77 69 6e 64 6f 77 2e 54 4f 4e 45 5f f (!window.TONE_
7070: 53 49 4c 45 4e 43 45 5f 56 45 52 53 49 4f 4e 5f SILENCE_VERSION_
7080: 4c 4f 47 47 49 4e 47 29 20 7b 0a 09 20 20 20 20 LOGGING) {..
7090: 20 20 20 20 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 console.log(
70a0: 27 25 63 20 2a 20 54 6f 6e 65 2e 6a 73 20 27 20 '%c * Tone.js '
70b0: 2b 20 54 6f 6e 65 2e 76 65 72 73 69 6f 6e 20 2b + Tone.version +
70c0: 20 27 20 2a 20 27 2c 20 27 62 61 63 6b 67 72 6f ' * ', 'backgro
70d0: 75 6e 64 3a 20 23 30 30 30 3b 20 63 6f 6c 6f 72 und: #000; color
70e0: 3a 20 23 66 66 66 27 29 3b 0a 09 20 20 20 20 7d : #fff');.. }
70f0: 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e .. return Ton
7100: 65 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 e;..});..Module(
7110: 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 function (Tone)
7120: 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a {.. .. /**
7130: 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 20 42 ... * @class B
7140: 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6c ase class for al
7150: 6c 20 53 69 67 6e 61 6c 73 2e 20 55 73 65 64 20 l Signals. Used
7160: 49 6e 74 65 72 6e 61 6c 6c 79 2e 20 0a 09 09 20 Internally. ...
7170: 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 *... * @constru
7180: 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 74 65 ctor... * @exte
7190: 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 20 2a 2f nds {Tone}... */
71a0: 0a 09 20 20 20 20 54 6f 6e 65 2e 53 69 67 6e 61 .. Tone.Signa
71b0: 6c 42 61 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e lBase = function
71c0: 20 28 29 20 7b 0a 09 20 20 20 20 7d 3b 0a 09 20 () {.. };..
71d0: 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 Tone.extend(T
71e0: 6f 6e 65 2e 53 69 67 6e 61 6c 42 61 73 65 29 3b one.SignalBase);
71f0: 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
7200: 57 68 65 6e 20 73 69 67 6e 61 6c 73 20 63 6f 6e When signals con
7210: 6e 65 63 74 20 74 6f 20 6f 74 68 65 72 20 73 69 nect to other si
7220: 67 6e 61 6c 73 20 6f 72 20 41 75 64 69 6f 50 61 gnals or AudioPa
7230: 72 61 6d 73 2c 20 0a 09 09 20 2a 20 20 74 68 65 rams, ... * the
7240: 79 20 74 61 6b 65 20 6f 76 65 72 20 74 68 65 20 y take over the
7250: 6f 75 74 70 75 74 20 76 61 6c 75 65 20 6f 66 20 output value of
7260: 74 68 61 74 20 73 69 67 6e 61 6c 20 6f 72 20 41 that signal or A
7270: 75 64 69 6f 50 61 72 61 6d 2e 20 0a 09 09 20 2a udioParam. ... *
7280: 20 20 46 6f 72 20 61 6c 6c 20 6f 74 68 65 72 20 For all other
7290: 6e 6f 64 65 73 2c 20 74 68 65 20 62 65 68 61 76 nodes, the behav
72a0: 69 6f 72 20 69 73 20 74 68 65 20 73 61 6d 65 20 ior is the same
72b0: 61 73 20 61 20 64 65 66 61 75 6c 74 20 3c 63 6f as a default <co
72c0: 64 65 3e 63 6f 6e 6e 65 63 74 3c 2f 63 6f 64 65 de>connect</code
72d0: 3e 2e 20 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 >. ... *... * @
72e0: 6f 76 65 72 72 69 64 65 0a 09 09 20 2a 20 20 40 override... * @
72f0: 70 61 72 61 6d 20 7b 41 75 64 69 6f 50 61 72 61 param {AudioPara
7300: 6d 7c 41 75 64 69 6f 4e 6f 64 65 7c 54 6f 6e 65 m|AudioNode|Tone
7310: 2e 53 69 67 6e 61 6c 7c 54 6f 6e 65 7d 20 6e 6f .Signal|Tone} no
7320: 64 65 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d de ... * @param
7330: 20 7b 6e 75 6d 62 65 72 7d 20 5b 6f 75 74 70 75 {number} [outpu
7340: 74 4e 75 6d 62 65 72 3d 30 5d 20 54 68 65 20 6f tNumber=0] The o
7350: 75 74 70 75 74 20 6e 75 6d 62 65 72 20 74 6f 20 utput number to
7360: 63 6f 6e 6e 65 63 74 20 66 72 6f 6d 2e 0a 09 09 connect from....
7370: 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e 75 6d 62 * @param {numb
7380: 65 72 7d 20 5b 69 6e 70 75 74 4e 75 6d 62 65 72 er} [inputNumber
7390: 3d 30 5d 20 54 68 65 20 69 6e 70 75 74 20 6e 75 =0] The input nu
73a0: 6d 62 65 72 20 74 6f 20 63 6f 6e 6e 65 63 74 20 mber to connect
73b0: 74 6f 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 to.... * @retur
73c0: 6e 73 20 7b 54 6f 6e 65 2e 53 69 67 6e 61 6c 42 ns {Tone.SignalB
73d0: 61 73 65 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a ase} this... */.
73e0: 09 20 20 20 20 54 6f 6e 65 2e 53 69 67 6e 61 6c . Tone.Signal
73f0: 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e 63 Base.prototype.c
7400: 6f 6e 6e 65 63 74 20 3d 20 66 75 6e 63 74 69 6f onnect = functio
7410: 6e 20 28 6e 6f 64 65 2c 20 6f 75 74 70 75 74 4e n (node, outputN
7420: 75 6d 62 65 72 2c 20 69 6e 70 75 74 4e 75 6d 62 umber, inputNumb
7430: 65 72 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f er) {.. /
7440: 2f 7a 65 72 6f 20 69 74 20 6f 75 74 20 73 6f 20 /zero it out so
7450: 74 68 61 74 20 74 68 65 20 73 69 67 6e 61 6c 20 that the signal
7460: 63 61 6e 20 68 61 76 65 20 66 75 6c 6c 20 63 6f can have full co
7470: 6e 74 72 6f 6c 0a 09 20 20 20 20 20 20 20 20 69 ntrol.. i
7480: 66 20 28 54 6f 6e 65 2e 53 69 67 6e 61 6c 20 26 f (Tone.Signal &
7490: 26 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 20 3d 3d & Tone.Signal ==
74a0: 3d 20 6e 6f 64 65 2e 63 6f 6e 73 74 72 75 63 74 = node.construct
74b0: 6f 72 20 7c 7c 20 54 6f 6e 65 2e 50 61 72 61 6d or || Tone.Param
74c0: 20 26 26 20 54 6f 6e 65 2e 50 61 72 61 6d 20 3d && Tone.Param =
74d0: 3d 3d 20 6e 6f 64 65 2e 63 6f 6e 73 74 72 75 63 == node.construc
74e0: 74 6f 72 20 7c 7c 20 54 6f 6e 65 2e 54 69 6d 65 tor || Tone.Time
74f0: 6c 69 6e 65 53 69 67 6e 61 6c 20 26 26 20 54 6f lineSignal && To
7500: 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e 61 ne.TimelineSigna
7510: 6c 20 3d 3d 3d 20 6e 6f 64 65 2e 63 6f 6e 73 74 l === node.const
7520: 72 75 63 74 6f 72 29 20 7b 0a 09 20 20 20 20 20 ructor) {..
7530: 20 20 20 20 20 20 20 2f 2f 63 61 6e 63 65 6c 20 //cancel
7540: 63 68 61 6e 67 65 73 0a 09 20 20 20 20 20 20 20 changes..
7550: 20 20 20 20 20 6e 6f 64 65 2e 5f 70 61 72 61 6d node._param
7560: 2e 63 61 6e 63 65 6c 53 63 68 65 64 75 6c 65 64 .cancelScheduled
7570: 56 61 6c 75 65 73 28 30 29 3b 0a 09 20 20 20 20 Values(0);..
7580: 20 20 20 20 20 20 20 20 2f 2f 72 65 73 65 74 20 //reset
7590: 74 68 65 20 76 61 6c 75 65 0a 09 20 20 20 20 20 the value..
75a0: 20 20 20 20 20 20 20 6e 6f 64 65 2e 5f 70 61 72 node._par
75b0: 61 6d 2e 76 61 6c 75 65 20 3d 20 30 3b 0a 09 20 am.value = 0;..
75c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6d 61 72 //mar
75d0: 6b 20 74 68 65 20 76 61 6c 75 65 20 61 73 20 6f k the value as o
75e0: 76 65 72 72 69 64 64 65 6e 0a 09 20 20 20 20 20 verridden..
75f0: 20 20 20 20 20 20 20 6e 6f 64 65 2e 6f 76 65 72 node.over
7600: 72 69 64 64 65 6e 20 3d 20 74 72 75 65 3b 0a 09 ridden = true;..
7610: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 } else i
7620: 66 20 28 6e 6f 64 65 20 69 6e 73 74 61 6e 63 65 f (node instance
7630: 6f 66 20 41 75 64 69 6f 50 61 72 61 6d 29 20 7b of AudioParam) {
7640: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f .. no
7650: 64 65 2e 63 61 6e 63 65 6c 53 63 68 65 64 75 6c de.cancelSchedul
7660: 65 64 56 61 6c 75 65 73 28 30 29 3b 0a 09 20 20 edValues(0);..
7670: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2e 76 node.v
7680: 61 6c 75 65 20 3d 20 30 3b 0a 09 20 20 20 20 20 alue = 0;..
7690: 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 54 6f }.. To
76a0: 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 63 6f 6e ne.prototype.con
76b0: 6e 65 63 74 2e 63 61 6c 6c 28 74 68 69 73 2c 20 nect.call(this,
76c0: 6e 6f 64 65 2c 20 6f 75 74 70 75 74 4e 75 6d 62 node, outputNumb
76d0: 65 72 2c 20 69 6e 70 75 74 4e 75 6d 62 65 72 29 er, inputNumber)
76e0: 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
76f0: 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
7700: 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 . return Tone
7710: 2e 53 69 67 6e 61 6c 42 61 73 65 3b 0a 09 7d 29 .SignalBase;..})
7720: 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 ;..Module(functi
7730: 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 on (Tone) {..
7740: 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 .. /**... *
7750: 20 40 63 6c 61 73 73 20 57 72 61 70 73 20 74 68 @class Wraps th
7760: 65 20 6e 61 74 69 76 65 20 57 65 62 20 41 75 64 e native Web Aud
7770: 69 6f 20 41 50 49 20 0a 09 09 20 2a 20 20 20 20 io API ... *
7780: 20 20 20 20 20 5b 57 61 76 65 53 68 61 70 65 72 [WaveShaper
7790: 4e 6f 64 65 5d 28 68 74 74 70 3a 2f 2f 77 65 62 Node](http://web
77a0: 61 75 64 69 6f 2e 67 69 74 68 75 62 2e 69 6f 2f audio.github.io/
77b0: 77 65 62 2d 61 75 64 69 6f 2d 61 70 69 2f 23 74 web-audio-api/#t
77c0: 68 65 2d 77 61 76 65 73 68 61 70 65 72 6e 6f 64 he-waveshapernod
77d0: 65 2d 69 6e 74 65 72 66 61 63 65 29 2e 0a 09 09 e-interface)....
77e0: 20 2a 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 *... * @extend
77f0: 73 20 7b 54 6f 6e 65 2e 53 69 67 6e 61 6c 42 61 s {Tone.SignalBa
7800: 73 65 7d 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 se}... * @const
7810: 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 70 61 ructor... * @pa
7820: 72 61 6d 20 7b 66 75 6e 63 74 69 6f 6e 7c 41 72 ram {function|Ar
7830: 72 61 79 7c 4e 75 6d 62 65 72 7d 20 6d 61 70 70 ray|Number} mapp
7840: 69 6e 67 20 54 68 65 20 66 75 6e 63 74 69 6f 6e ing The function
7850: 20 75 73 65 64 20 74 6f 20 64 65 66 69 6e 65 20 used to define
7860: 74 68 65 20 76 61 6c 75 65 73 2e 20 0a 09 09 20 the values. ...
7870: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
7880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7890: 20 20 20 20 20 54 68 65 20 6d 61 70 70 69 6e 67 The mapping
78a0: 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 function should
78b0: 20 74 61 6b 65 20 74 77 6f 20 61 72 67 75 6d 65 take two argume
78c0: 6e 74 73 3a 20 0a 09 09 20 2a 20 20 20 20 20 20 nts: ... *
78d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
78e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
78f0: 65 20 66 69 72 73 74 20 69 73 20 74 68 65 20 76 e first is the v
7900: 61 6c 75 65 20 61 74 20 74 68 65 20 63 75 72 72 alue at the curr
7910: 65 6e 74 20 70 6f 73 69 74 69 6f 6e 20 0a 09 09 ent position ...
7920: 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
7930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7940: 20 20 20 20 20 20 61 6e 64 20 74 68 65 20 73 65 and the se
7950: 63 6f 6e 64 20 69 73 20 74 68 65 20 61 72 72 61 cond is the arra
7960: 79 20 70 6f 73 69 74 69 6f 6e 2e 20 0a 09 09 20 y position. ...
7970: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
7980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7990: 20 20 20 20 20 49 66 20 74 68 65 20 61 72 67 75 If the argu
79a0: 6d 65 6e 74 20 69 73 20 61 6e 20 61 72 72 61 79 ment is an array
79b0: 2c 20 74 68 61 74 20 61 72 72 61 79 20 77 69 6c , that array wil
79c0: 6c 20 62 65 0a 09 09 20 2a 20 20 20 20 20 20 20 l be... *
79d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
79e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 set
79f0: 20 61 73 20 74 68 65 20 77 61 76 65 20 73 68 61 as the wave sha
7a00: 70 69 6e 67 20 66 75 6e 63 74 69 6f 6e 2e 20 54 ping function. T
7a10: 68 65 20 69 6e 70 75 74 0a 09 09 20 2a 20 20 20 he input... *
7a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7a40: 20 73 69 67 6e 61 6c 20 69 73 20 61 6e 20 41 75 signal is an Au
7a50: 64 69 6f 52 61 6e 67 65 20 5b 2d 31 2c 20 31 5d dioRange [-1, 1]
7a60: 20 76 61 6c 75 65 20 61 6e 64 20 74 68 65 20 6f value and the o
7a70: 75 74 70 75 74 0a 09 09 20 2a 20 20 20 20 20 20 utput... *
7a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 si
7aa0: 67 6e 61 6c 20 63 61 6e 20 74 61 6b 65 20 6f 6e gnal can take on
7ab0: 20 61 6e 79 20 6e 75 6d 65 72 69 63 61 6c 20 76 any numerical v
7ac0: 61 6c 75 65 73 2e 20 0a 09 09 20 2a 20 20 20 20 alues. ... *
7ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7af0: 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 4e ... * @param {N
7b00: 75 6d 62 65 72 7d 20 5b 62 75 66 66 65 72 4c 65 umber} [bufferLe
7b10: 6e 3d 31 30 32 34 5d 20 54 68 65 20 6c 65 6e 67 n=1024] The leng
7b20: 74 68 20 6f 66 20 74 68 65 20 57 61 76 65 53 68 th of the WaveSh
7b30: 61 70 65 72 4e 6f 64 65 20 62 75 66 66 65 72 2e aperNode buffer.
7b40: 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
7b50: 09 09 20 2a 20 76 61 72 20 74 69 6d 65 73 54 77 .. * var timesTw
7b60: 6f 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 57 61 76 o = new Tone.Wav
7b70: 65 53 68 61 70 65 72 28 66 75 6e 63 74 69 6f 6e eShaper(function
7b80: 28 76 61 6c 29 7b 0a 09 09 20 2a 20 09 72 65 74 (val){... * .ret
7b90: 75 72 6e 20 76 61 6c 20 2a 20 32 3b 0a 09 09 20 urn val * 2;...
7ba0: 2a 20 7d 2c 20 32 30 34 38 29 3b 0a 09 09 20 2a * }, 2048);... *
7bb0: 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 @example... *
7bc0: 2f 2f 61 20 77 61 76 65 73 68 61 70 65 72 20 63 //a waveshaper c
7bd0: 61 6e 20 61 6c 73 6f 20 62 65 20 63 6f 6e 73 74 an also be const
7be0: 72 75 63 74 65 64 20 77 69 74 68 20 61 6e 20 61 ructed with an a
7bf0: 72 72 61 79 20 6f 66 20 76 61 6c 75 65 73 0a 09 rray of values..
7c00: 09 20 2a 20 76 61 72 20 69 6e 76 65 72 74 20 3d . * var invert =
7c10: 20 6e 65 77 20 54 6f 6e 65 2e 57 61 76 65 53 68 new Tone.WaveSh
7c20: 61 70 65 72 28 5b 31 2c 20 2d 31 5d 29 3b 0a 09 aper([1, -1]);..
7c30: 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 57 . */.. Tone.W
7c40: 61 76 65 53 68 61 70 65 72 20 3d 20 66 75 6e 63 aveShaper = func
7c50: 74 69 6f 6e 20 28 6d 61 70 70 69 6e 67 2c 20 62 tion (mapping, b
7c60: 75 66 66 65 72 4c 65 6e 29 20 7b 0a 09 20 20 20 ufferLen) {..
7c70: 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
7c80: 74 68 65 20 77 61 76 65 73 68 61 70 65 72 0a 09 the waveshaper..
7c90: 09 09 20 2a 20 20 40 74 79 70 65 20 7b 57 61 76 .. * @type {Wav
7ca0: 65 53 68 61 70 65 72 4e 6f 64 65 7d 0a 09 09 09 eShaperNode}....
7cb0: 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
7cc0: 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
7cd0: 73 2e 5f 73 68 61 70 65 72 20 3d 20 74 68 69 73 s._shaper = this
7ce0: 2e 69 6e 70 75 74 20 3d 20 74 68 69 73 2e 6f 75 .input = this.ou
7cf0: 74 70 75 74 20 3d 20 74 68 69 73 2e 63 6f 6e 74 tput = this.cont
7d00: 65 78 74 2e 63 72 65 61 74 65 57 61 76 65 53 68 ext.createWaveSh
7d10: 61 70 65 72 28 29 3b 0a 09 20 20 20 20 20 20 20 aper();..
7d20: 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 /**.... * the
7d30: 77 61 76 65 73 68 61 70 65 72 73 20 63 75 72 76 waveshapers curv
7d40: 65 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b e.... * @type {
7d50: 46 6c 6f 61 74 33 32 41 72 72 61 79 7d 0a 09 09 Float32Array}...
7d60: 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
7d70: 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
7d80: 69 73 2e 5f 63 75 72 76 65 20 3d 20 6e 75 6c 6c is._curve = null
7d90: 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 41 ;.. if (A
7da0: 72 72 61 79 2e 69 73 41 72 72 61 79 28 6d 61 70 rray.isArray(map
7db0: 70 69 6e 67 29 29 20 7b 0a 09 20 20 20 20 20 20 ping)) {..
7dc0: 20 20 20 20 20 20 74 68 69 73 2e 63 75 72 76 65 this.curve
7dd0: 20 3d 20 6d 61 70 70 69 6e 67 3b 0a 09 20 20 20 = mapping;..
7de0: 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
7df0: 69 73 46 69 6e 69 74 65 28 6d 61 70 70 69 6e 67 isFinite(mapping
7e00: 29 20 7c 7c 20 74 68 69 73 2e 69 73 55 6e 64 65 ) || this.isUnde
7e10: 66 28 6d 61 70 70 69 6e 67 29 29 20 7b 0a 09 20 f(mapping)) {..
7e20: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
7e30: 5f 63 75 72 76 65 20 3d 20 6e 65 77 20 46 6c 6f _curve = new Flo
7e40: 61 74 33 32 41 72 72 61 79 28 74 68 69 73 2e 64 at32Array(this.d
7e50: 65 66 61 75 6c 74 41 72 67 28 6d 61 70 70 69 6e efaultArg(mappin
7e60: 67 2c 20 31 30 32 34 29 29 3b 0a 09 20 20 20 20 g, 1024));..
7e70: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 } else if (t
7e80: 68 69 73 2e 69 73 46 75 6e 63 74 69 6f 6e 28 6d his.isFunction(m
7e90: 61 70 70 69 6e 67 29 29 20 7b 0a 09 20 20 20 20 apping)) {..
7ea0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 75 this._cu
7eb0: 72 76 65 20 3d 20 6e 65 77 20 46 6c 6f 61 74 33 rve = new Float3
7ec0: 32 41 72 72 61 79 28 74 68 69 73 2e 64 65 66 61 2Array(this.defa
7ed0: 75 6c 74 41 72 67 28 62 75 66 66 65 72 4c 65 6e ultArg(bufferLen
7ee0: 2c 20 31 30 32 34 29 29 3b 0a 09 20 20 20 20 20 , 1024));..
7ef0: 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 74 4d this.setM
7f00: 61 70 28 6d 61 70 70 69 6e 67 29 3b 0a 09 20 20 ap(mapping);..
7f10: 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a }.. };.
7f20: 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 . Tone.extend
7f30: 28 54 6f 6e 65 2e 57 61 76 65 53 68 61 70 65 72 (Tone.WaveShaper
7f40: 2c 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 42 61 73 , Tone.SignalBas
7f50: 65 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 e);.. /**...
7f60: 2a 20 20 55 73 65 73 20 61 20 6d 61 70 70 69 6e * Uses a mappin
7f70: 67 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 73 65 g function to se
7f80: 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 t the value of t
7f90: 68 65 20 63 75 72 76 65 2e 20 0a 09 09 20 2a 20 he curve. ... *
7fa0: 20 40 70 61 72 61 6d 20 7b 66 75 6e 63 74 69 6f @param {functio
7fb0: 6e 7d 20 6d 61 70 70 69 6e 67 20 54 68 65 20 66 n} mapping The f
7fc0: 75 6e 63 74 69 6f 6e 20 75 73 65 64 20 74 6f 20 unction used to
7fd0: 64 65 66 69 6e 65 20 74 68 65 20 76 61 6c 75 65 define the value
7fe0: 73 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 s. ... *
7ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8000: 20 20 20 20 54 68 65 20 6d 61 70 70 69 6e 67 20 The mapping
8010: 66 75 6e 63 74 69 6f 6e 20 74 61 6b 65 20 74 77 function take tw
8020: 6f 20 61 72 67 75 6d 65 6e 74 73 3a 20 0a 09 09 o arguments: ...
8030: 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
8040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
8050: 65 20 66 69 72 73 74 20 69 73 20 74 68 65 20 76 e first is the v
8060: 61 6c 75 65 20 61 74 20 74 68 65 20 63 75 72 72 alue at the curr
8070: 65 6e 74 20 70 6f 73 69 74 69 6f 6e 20 0a 09 09 ent position ...
8080: 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
8090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 wh
80a0: 69 63 68 20 67 6f 65 73 20 66 72 6f 6d 20 2d 31 ich goes from -1
80b0: 20 74 6f 20 31 20 6f 76 65 72 20 74 68 65 20 6e to 1 over the n
80c0: 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 umber of element
80d0: 73 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 s... *
80e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
80f0: 20 20 69 6e 20 74 68 65 20 63 75 72 76 65 20 61 in the curve a
8100: 72 72 61 79 2e 20 54 68 65 20 73 65 63 6f 6e 64 rray. The second
8110: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 argument is the
8120: 20 61 72 72 61 79 20 70 6f 73 69 74 69 6f 6e 2e array position.
8130: 20 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 ... * @returns
8140: 20 7b 54 6f 6e 65 2e 57 61 76 65 53 68 61 70 65 {Tone.WaveShape
8150: 72 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 40 65 r} this... * @e
8160: 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f 6d 61 xample... * //ma
8170: 70 20 74 68 65 20 69 6e 70 75 74 20 73 69 67 6e p the input sign
8180: 61 6c 20 66 72 6f 6d 20 5b 2d 31 2c 20 31 5d 20 al from [-1, 1]
8190: 74 6f 20 5b 30 2c 20 31 30 5d 0a 09 09 20 2a 20 to [0, 10]... *
81a0: 73 68 61 70 65 72 2e 73 65 74 4d 61 70 28 66 75 shaper.setMap(fu
81b0: 6e 63 74 69 6f 6e 28 76 61 6c 2c 20 69 6e 64 65 nction(val, inde
81c0: 78 29 7b 0a 09 09 20 2a 20 09 72 65 74 75 72 6e x){... * .return
81d0: 20 28 76 61 6c 20 2b 20 31 29 20 2a 20 35 3b 0a (val + 1) * 5;.
81e0: 09 09 20 2a 20 7d 29 0a 09 09 20 2a 2f 0a 09 20 .. * })... */..
81f0: 20 20 20 54 6f 6e 65 2e 57 61 76 65 53 68 61 70 Tone.WaveShap
8200: 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73 65 74 er.prototype.set
8210: 4d 61 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 Map = function (
8220: 6d 61 70 70 69 6e 67 29 20 7b 0a 09 20 20 20 20 mapping) {..
8230: 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d for (var i =
8240: 20 30 2c 20 6c 65 6e 20 3d 20 74 68 69 73 2e 5f 0, len = this._
8250: 63 75 72 76 65 2e 6c 65 6e 67 74 68 3b 20 69 20 curve.length; i
8260: 3c 20 6c 65 6e 3b 20 69 2b 2b 29 20 7b 0a 09 20 < len; i++) {..
8270: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e var n
8280: 6f 72 6d 61 6c 69 7a 65 64 20 3d 20 69 20 2f 20 ormalized = i /
8290: 28 6c 65 6e 20 2d 20 31 29 20 2a 20 32 20 2d 20 (len - 1) * 2 -
82a0: 31 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 1;..
82b0: 74 68 69 73 2e 5f 63 75 72 76 65 5b 69 5d 20 3d this._curve[i] =
82c0: 20 6d 61 70 70 69 6e 67 28 6e 6f 72 6d 61 6c 69 mapping(normali
82d0: 7a 65 64 2c 20 69 29 3b 0a 09 20 20 20 20 20 20 zed, i);..
82e0: 20 20 7d 0a 09 20 20 20 20 20 20 20 20 74 68 69 }.. thi
82f0: 73 2e 5f 73 68 61 70 65 72 2e 63 75 72 76 65 20 s._shaper.curve
8300: 3d 20 74 68 69 73 2e 5f 63 75 72 76 65 3b 0a 09 = this._curve;..
8310: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
8320: 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
8330: 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 61 /**... * The a
8340: 72 72 61 79 20 74 6f 20 73 65 74 20 61 73 20 74 rray to set as t
8350: 68 65 20 77 61 76 65 73 68 61 70 65 72 20 63 75 he waveshaper cu
8360: 72 76 65 2e 20 46 6f 72 20 6c 69 6e 65 61 72 20 rve. For linear
8370: 63 75 72 76 65 73 0a 09 09 20 2a 20 61 72 72 61 curves... * arra
8380: 79 20 6c 65 6e 67 74 68 20 64 6f 65 73 20 6e 6f y length does no
8390: 74 20 6d 61 6b 65 20 6d 75 63 68 20 64 69 66 66 t make much diff
83a0: 65 72 65 6e 63 65 2c 20 62 75 74 20 66 6f 72 20 erence, but for
83b0: 63 6f 6d 70 6c 65 78 20 63 75 72 76 65 73 0a 09 complex curves..
83c0: 09 20 2a 20 6c 6f 6e 67 65 72 20 61 72 72 61 79 . * longer array
83d0: 73 20 77 69 6c 6c 20 70 72 6f 76 69 64 65 20 73 s will provide s
83e0: 6d 6f 6f 74 68 65 72 20 69 6e 74 65 72 70 6f 6c moother interpol
83f0: 61 74 69 6f 6e 2e 20 0a 09 09 20 2a 20 40 6d 65 ation. ... * @me
8400: 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 57 61 76 65 mberOf Tone.Wave
8410: 53 68 61 70 65 72 23 0a 09 09 20 2a 20 40 74 79 Shaper#... * @ty
8420: 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 20 2a 20 pe {Array}... *
8430: 40 6e 61 6d 65 20 63 75 72 76 65 0a 09 09 20 2a @name curve... *
8440: 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
8450: 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
8460: 65 2e 57 61 76 65 53 68 61 70 65 72 2e 70 72 6f e.WaveShaper.pro
8470: 74 6f 74 79 70 65 2c 20 27 63 75 72 76 65 27 2c totype, 'curve',
8480: 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
8490: 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
84a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
84b0: 72 6e 20 74 68 69 73 2e 5f 73 68 61 70 65 72 2e rn this._shaper.
84c0: 63 75 72 76 65 3b 0a 09 20 20 20 20 20 20 20 20 curve;..
84d0: 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a },.. set:
84e0: 20 66 75 6e 63 74 69 6f 6e 20 28 6d 61 70 70 69 function (mappi
84f0: 6e 67 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ng) {..
8500: 20 20 20 74 68 69 73 2e 5f 63 75 72 76 65 20 3d this._curve =
8510: 20 6e 65 77 20 46 6c 6f 61 74 33 32 41 72 72 61 new Float32Arra
8520: 79 28 6d 61 70 70 69 6e 67 29 3b 0a 09 20 20 20 y(mapping);..
8530: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 this._s
8540: 68 61 70 65 72 2e 63 75 72 76 65 20 3d 20 74 68 haper.curve = th
8550: 69 73 2e 5f 63 75 72 76 65 3b 0a 09 20 20 20 20 is._curve;..
8560: 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
8570: 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 53 70 65 /**... * Spe
8580: 63 69 66 69 65 73 20 77 68 61 74 20 74 79 70 65 cifies what type
8590: 20 6f 66 20 6f 76 65 72 73 61 6d 70 6c 69 6e 67 of oversampling
85a0: 20 28 69 66 20 61 6e 79 29 20 73 68 6f 75 6c 64 (if any) should
85b0: 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 0a 09 be used when ..
85c0: 09 20 2a 20 61 70 70 6c 79 69 6e 67 20 74 68 65 . * applying the
85d0: 20 73 68 61 70 69 6e 67 20 63 75 72 76 65 2e 20 shaping curve.
85e0: 43 61 6e 20 65 69 74 68 65 72 20 62 65 20 22 6e Can either be "n
85f0: 6f 6e 65 22 2c 20 22 32 78 22 20 6f 72 20 22 34 one", "2x" or "4
8600: 78 22 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 x". ... * @membe
8610: 72 4f 66 20 54 6f 6e 65 2e 57 61 76 65 53 68 61 rOf Tone.WaveSha
8620: 70 65 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 per#... * @type
8630: 7b 73 74 72 69 6e 67 7d 0a 09 09 20 2a 20 40 6e {string}... * @n
8640: 61 6d 65 20 6f 76 65 72 73 61 6d 70 6c 65 0a 09 ame oversample..
8650: 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
8660: 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
8670: 54 6f 6e 65 2e 57 61 76 65 53 68 61 70 65 72 2e Tone.WaveShaper.
8680: 70 72 6f 74 6f 74 79 70 65 2c 20 27 6f 76 65 72 prototype, 'over
8690: 73 61 6d 70 6c 65 27 2c 20 7b 0a 09 20 20 20 20 sample', {..
86a0: 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
86b0: 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
86c0: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
86d0: 5f 73 68 61 70 65 72 2e 6f 76 65 72 73 61 6d 70 _shaper.oversamp
86e0: 6c 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a le;.. },.
86f0: 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
8700: 6e 63 74 69 6f 6e 20 28 6f 76 65 72 73 61 6d 70 nction (oversamp
8710: 6c 69 6e 67 29 20 7b 0a 09 20 20 20 20 20 20 20 ling) {..
8720: 20 20 20 20 20 69 66 20 28 5b 0a 09 20 20 20 20 if ([..
8730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8740: 27 6e 6f 6e 65 27 2c 0a 09 20 20 20 20 20 20 20 'none',..
8750: 20 20 20 20 20 20 20 20 20 20 20 20 20 27 32 78 '2x
8760: 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
8770: 20 20 20 20 20 20 20 20 27 34 78 27 0a 09 20 20 '4x'..
8780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5d 2e ].
8790: 69 6e 64 65 78 4f 66 28 6f 76 65 72 73 61 6d 70 indexOf(oversamp
87a0: 6c 69 6e 67 29 20 21 3d 3d 20 2d 31 29 20 7b 0a ling) !== -1) {.
87b0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
87c0: 20 74 68 69 73 2e 5f 73 68 61 70 65 72 2e 6f 76 this._shaper.ov
87d0: 65 72 73 61 6d 70 6c 65 20 3d 20 6f 76 65 72 73 ersample = overs
87e0: 61 6d 70 6c 69 6e 67 3b 0a 09 20 20 20 20 20 20 ampling;..
87f0: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 } else {..
8800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8810: 74 68 72 6f 77 20 6e 65 77 20 52 61 6e 67 65 45 throw new RangeE
8820: 72 72 6f 72 28 27 54 6f 6e 65 2e 57 61 76 65 53 rror('Tone.WaveS
8830: 68 61 70 65 72 3a 20 6f 76 65 72 73 61 6d 70 6c haper: oversampl
8840: 69 6e 67 20 6d 75 73 74 20 62 65 20 65 69 74 68 ing must be eith
8850: 65 72 20 5c 27 6e 6f 6e 65 5c 27 2c 20 5c 27 32 er \'none\', \'2
8860: 78 5c 27 2c 20 6f 72 20 5c 27 34 78 5c 27 27 29 x\', or \'4x\'')
8870: 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
8880: 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
8890: 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
88a0: 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a 09 09 * Clean up....
88b0: 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f * @returns {To
88c0: 6e 65 2e 57 61 76 65 53 68 61 70 65 72 7d 20 74 ne.WaveShaper} t
88d0: 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
88e0: 6f 6e 65 2e 57 61 76 65 53 68 61 70 65 72 2e 70 one.WaveShaper.p
88f0: 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 rototype.dispose
8900: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
8910: 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 .. Tone.p
8920: 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 rototype.dispose
8930: 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 .call(this);..
8940: 20 20 20 20 20 20 74 68 69 73 2e 5f 73 68 61 70 this._shap
8950: 65 72 2e 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b er.disconnect();
8960: 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
8970: 73 68 61 70 65 72 20 3d 20 6e 75 6c 6c 3b 0a 09 shaper = null;..
8980: 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 75 this._cu
8990: 72 76 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 rve = null;..
89a0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
89b0: 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 ;.. };.. r
89c0: 65 74 75 72 6e 20 54 6f 6e 65 2e 57 61 76 65 53 eturn Tone.WaveS
89d0: 68 61 70 65 72 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 haper;..});..Mod
89e0: 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f ule(function (To
89f0: 6e 65 29 20 7b 0a 09 20 20 20 20 2f 2a 2a 0a 09 ne) {.. /**..
8a00: 09 20 2a 20 20 40 63 6c 61 73 73 20 54 6f 6e 65 . * @class Tone
8a10: 2e 54 69 6d 65 42 61 73 65 20 69 73 20 61 20 66 .TimeBase is a f
8a20: 6c 65 78 69 62 6c 65 20 65 6e 63 6f 64 69 6e 67 lexible encoding
8a30: 20 6f 66 20 74 69 6d 65 0a 09 09 20 2a 20 20 20 of time... *
8a40: 20 20 20 20 20 20 77 68 69 63 68 20 63 61 6e 20 which can
8a50: 62 65 20 65 76 61 6c 75 61 74 65 64 20 74 6f 20 be evaluated to
8a60: 61 6e 64 20 66 72 6f 6d 20 61 20 73 74 72 69 6e and from a strin
8a70: 67 2e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 g.... *
8a80: 50 61 72 73 69 6e 67 20 63 6f 64 65 20 6d 6f 64 Parsing code mod
8a90: 69 66 69 65 64 20 66 72 6f 6d 20 68 74 74 70 73 ified from https
8aa0: 3a 2f 2f 63 6f 64 65 2e 67 6f 6f 67 6c 65 2e 63 ://code.google.c
8ab0: 6f 6d 2f 70 2f 74 61 70 64 69 67 69 74 2f 0a 09 om/p/tapdigit/..
8ac0: 09 20 2a 20 20 20 20 20 20 20 20 20 43 6f 70 79 . * Copy
8ad0: 72 69 67 68 74 20 32 30 31 31 20 32 30 31 32 20 right 2011 2012
8ae0: 41 72 69 79 61 20 48 69 64 61 79 61 74 2c 20 4e Ariya Hidayat, N
8af0: 65 77 20 42 53 44 20 4c 69 63 65 6e 73 65 0a 09 ew BSD License..
8b00: 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 . * @extends {T
8b10: 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 one}... * @para
8b20: 6d 20 20 7b 54 69 6d 65 7d 20 20 76 61 6c 20 20 m {Time} val
8b30: 20 20 54 68 65 20 74 69 6d 65 20 76 61 6c 75 65 The time value
8b40: 20 61 73 20 61 20 6e 75 6d 62 65 72 20 6f 72 20 as a number or
8b50: 73 74 72 69 6e 67 0a 09 09 20 2a 20 20 40 70 61 string... * @pa
8b60: 72 61 6d 20 20 7b 53 74 72 69 6e 67 3d 7d 20 20 ram {String=}
8b70: 75 6e 69 74 73 20 20 55 6e 69 74 20 76 61 6c 75 units Unit valu
8b80: 65 73 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c es... * @exampl
8b90: 65 0a 09 09 20 2a 20 54 6f 6e 65 2e 54 69 6d 65 e... * Tone.Time
8ba0: 42 61 73 65 28 34 2c 20 22 6e 22 29 0a 09 09 20 Base(4, "n")...
8bb0: 2a 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 28 * Tone.TimeBase(
8bc0: 32 2c 20 22 74 22 29 0a 09 09 20 2a 20 54 6f 6e 2, "t")... * Ton
8bd0: 65 2e 54 69 6d 65 42 61 73 65 28 22 32 74 22 29 e.TimeBase("2t")
8be0: 2e 61 64 64 28 22 31 6d 22 29 0a 09 09 20 2a 20 .add("1m")... *
8bf0: 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 28 22 32 Tone.TimeBase("2
8c00: 74 20 2b 20 31 6d 22 29 3b 0a 09 09 20 2a 2f 0a t + 1m");... */.
8c10: 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 42 61 . Tone.TimeBa
8c20: 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 76 se = function (v
8c30: 61 6c 2c 20 75 6e 69 74 73 29 20 7b 0a 09 20 20 al, units) {..
8c40: 20 20 20 20 20 20 2f 2f 61 6c 6c 6f 77 73 20 69 //allows i
8c50: 74 20 74 6f 20 62 65 20 63 6f 6e 73 74 72 75 63 t to be construc
8c60: 74 65 64 20 77 69 74 68 20 6f 72 20 77 69 74 68 ted with or with
8c70: 6f 75 74 20 27 6e 65 77 27 0a 09 20 20 20 20 20 out 'new'..
8c80: 20 20 20 69 66 20 28 74 68 69 73 20 69 6e 73 74 if (this inst
8c90: 61 6e 63 65 6f 66 20 54 6f 6e 65 2e 54 69 6d 65 anceof Tone.Time
8ca0: 42 61 73 65 29 20 7b 0a 09 20 20 20 20 20 20 20 Base) {..
8cb0: 20 20 20 20 20 2f 2a 2a 0a 09 09 09 09 20 2a 20 /**..... *
8cc0: 20 41 6e 79 20 65 78 70 72 65 73 73 69 6f 6e 73 Any expressions
8cd0: 20 70 61 72 73 65 64 20 66 72 6f 6d 20 74 68 65 parsed from the
8ce0: 20 54 69 6d 65 0a 09 09 09 09 20 2a 20 20 40 74 Time..... * @t
8cf0: 79 70 65 20 20 7b 41 72 72 61 79 7d 0a 09 09 09 ype {Array}....
8d00: 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
8d10: 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 20 .. */..
8d20: 20 20 20 74 68 69 73 2e 5f 65 78 70 72 20 3d 20 this._expr =
8d30: 74 68 69 73 2e 5f 6e 6f 4f 70 3b 0a 09 20 20 20 this._noOp;..
8d40: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c if (val
8d50: 20 69 6e 73 74 61 6e 63 65 6f 66 20 54 6f 6e 65 instanceof Tone
8d60: 2e 54 69 6d 65 42 61 73 65 29 20 7b 0a 09 20 20 .TimeBase) {..
8d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
8d80: 69 73 2e 63 6f 70 79 28 76 61 6c 29 3b 0a 09 20 is.copy(val);..
8d90: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
8da0: 65 20 69 66 20 28 21 74 68 69 73 2e 69 73 55 6e e if (!this.isUn
8db0: 64 65 66 28 75 6e 69 74 73 29 20 7c 7c 20 74 68 def(units) || th
8dc0: 69 73 2e 69 73 4e 75 6d 62 65 72 28 76 61 6c 29 is.isNumber(val)
8dd0: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
8de0: 20 20 20 20 20 2f 2f 64 65 66 61 75 6c 74 20 75 //default u
8df0: 6e 69 74 73 0a 09 20 20 20 20 20 20 20 20 20 20 nits..
8e00: 20 20 20 20 20 20 75 6e 69 74 73 20 3d 20 74 68 units = th
8e10: 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 75 6e is.defaultArg(un
8e20: 69 74 73 2c 20 74 68 69 73 2e 5f 64 65 66 61 75 its, this._defau
8e30: 6c 74 55 6e 69 74 73 29 3b 0a 09 20 20 20 20 20 ltUnits);..
8e40: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6d var m
8e50: 65 74 68 6f 64 20 3d 20 74 68 69 73 2e 5f 70 72 ethod = this._pr
8e60: 69 6d 61 72 79 45 78 70 72 65 73 73 69 6f 6e 73 imaryExpressions
8e70: 5b 75 6e 69 74 73 5d 2e 6d 65 74 68 6f 64 3b 0a [units].method;.
8e80: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
8e90: 20 74 68 69 73 2e 5f 65 78 70 72 20 3d 20 6d 65 this._expr = me
8ea0: 74 68 6f 64 2e 62 69 6e 64 28 74 68 69 73 2c 20 thod.bind(this,
8eb0: 76 61 6c 29 3b 0a 09 20 20 20 20 20 20 20 20 20 val);..
8ec0: 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 68 } else if (th
8ed0: 69 73 2e 69 73 53 74 72 69 6e 67 28 76 61 6c 29 is.isString(val)
8ee0: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
8ef0: 20 20 20 20 20 74 68 69 73 2e 73 65 74 28 76 61 this.set(va
8f00: 6c 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 l);..
8f10: 20 7d 20 65 6c 73 65 20 69 66 20 28 74 68 69 73 } else if (this
8f20: 2e 69 73 55 6e 64 65 66 28 76 61 6c 29 29 20 7b .isUndef(val)) {
8f30: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
8f40: 20 20 2f 2f 64 65 66 61 75 6c 74 20 65 78 70 72 //default expr
8f50: 65 73 73 69 6f 6e 0a 09 20 20 20 20 20 20 20 20 ession..
8f60: 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 65 78 this._ex
8f70: 70 72 20 3d 20 74 68 69 73 2e 5f 64 65 66 61 75 pr = this._defau
8f80: 6c 74 45 78 70 72 28 29 3b 0a 09 20 20 20 20 20 ltExpr();..
8f90: 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
8fa0: 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 } else {..
8fb0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n
8fc0: 65 77 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 ew Tone.TimeBase
8fd0: 28 76 61 6c 2c 20 75 6e 69 74 73 29 3b 0a 09 20 (val, units);..
8fe0: 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b }.. };
8ff0: 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e .. Tone.exten
9000: 64 28 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 29 d(Tone.TimeBase)
9010: 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
9020: 20 52 65 70 61 6c 63 65 20 74 68 65 20 63 75 72 Repalce the cur
9030: 72 65 6e 74 20 74 69 6d 65 20 76 61 6c 75 65 20 rent time value
9040: 77 69 74 68 20 74 68 65 20 76 61 6c 75 65 0a 09 with the value..
9050: 09 20 2a 20 20 67 69 76 65 6e 20 62 79 20 74 68 . * given by th
9060: 65 20 65 78 70 72 65 73 73 69 6f 6e 20 73 74 72 e expression str
9070: 69 6e 67 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 ing.... * @para
9080: 6d 20 20 7b 53 74 72 69 6e 67 7d 20 20 65 78 70 m {String} exp
9090: 72 53 74 72 69 6e 67 0a 09 09 20 2a 20 20 40 72 rString... * @r
90a0: 65 74 75 72 6e 20 7b 54 6f 6e 65 2e 54 69 6d 65 eturn {Tone.Time
90b0: 42 61 73 65 7d 20 74 68 69 73 0a 09 09 20 2a 2f Base} this... */
90c0: 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 42 .. Tone.TimeB
90d0: 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e 73 65 ase.prototype.se
90e0: 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 65 78 t = function (ex
90f0: 70 72 53 74 72 69 6e 67 29 20 7b 0a 09 20 20 20 prString) {..
9100: 20 20 20 20 20 74 68 69 73 2e 5f 65 78 70 72 20 this._expr
9110: 3d 20 74 68 69 73 2e 5f 70 61 72 73 65 45 78 70 = this._parseExp
9120: 72 53 74 72 69 6e 67 28 65 78 70 72 53 74 72 69 rString(exprStri
9130: 6e 67 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 ng);.. re
9140: 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 turn this;..
9150: 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
9160: 20 20 52 65 74 75 72 6e 20 61 20 63 6c 6f 6e 65 Return a clone
9170: 20 6f 66 20 74 68 65 20 54 69 6d 65 42 61 73 65 of the TimeBase
9180: 20 6f 62 6a 65 63 74 2e 0a 09 09 20 2a 20 20 40 object.... * @
9190: 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 54 69 return {Tone.Ti
91a0: 6d 65 42 61 73 65 7d 20 54 68 65 20 6e 65 77 20 meBase} The new
91b0: 63 6c 6f 6e 65 64 20 54 6f 6e 65 2e 54 69 6d 65 cloned Tone.Time
91c0: 42 61 73 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 Base... */..
91d0: 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 2e 70 72 Tone.TimeBase.pr
91e0: 6f 74 6f 74 79 70 65 2e 63 6c 6f 6e 65 20 3d 20 ototype.clone =
91f0: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
9200: 20 20 20 20 20 20 20 76 61 72 20 69 6e 73 74 61 var insta
9210: 6e 63 65 20 3d 20 6e 65 77 20 74 68 69 73 2e 63 nce = new this.c
9220: 6f 6e 73 74 72 75 63 74 6f 72 28 29 3b 0a 09 20 onstructor();..
9230: 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 2e instance.
9240: 63 6f 70 79 28 74 68 69 73 29 3b 0a 09 20 20 20 copy(this);..
9250: 20 20 20 20 20 72 65 74 75 72 6e 20 69 6e 73 74 return inst
9260: 61 6e 63 65 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 ance;.. };..
9270: 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6f 70 /**... * Cop
9280: 69 65 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 ies the value of
9290: 20 74 69 6d 65 20 74 6f 20 74 68 69 73 20 54 69 time to this Ti
92a0: 6d 65 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 me... * @param
92b0: 7b 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 7d 20 {Tone.TimeBase}
92c0: 74 69 6d 65 0a 09 09 20 2a 20 20 40 72 65 74 75 time... * @retu
92d0: 72 6e 20 20 7b 54 69 6d 65 42 61 73 65 7d 0a 09 rn {TimeBase}..
92e0: 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 . */.. Tone.T
92f0: 69 6d 65 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 imeBase.prototyp
9300: 65 2e 63 6f 70 79 20 3d 20 66 75 6e 63 74 69 6f e.copy = functio
9310: 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 n (time) {..
9320: 20 20 20 20 76 61 72 20 76 61 6c 20 3d 20 74 69 var val = ti
9330: 6d 65 2e 5f 65 78 70 72 28 29 3b 0a 09 20 20 20 me._expr();..
9340: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
9350: 2e 73 65 74 28 76 61 6c 29 3b 0a 09 20 20 20 20 .set(val);..
9360: 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f };.. ////////
9370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
9380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
9390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
93a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
93b0: 2f 2f 2f 0a 09 20 20 20 20 2f 2f 09 41 42 53 54 ///.. //.ABST
93c0: 52 41 43 54 20 53 59 4e 54 41 58 20 54 52 45 45 RACT SYNTAX TREE
93d0: 20 50 41 52 53 45 52 0a 09 20 20 20 20 2f 2f 2f PARSER.. ///
93e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
93f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
9400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
9410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
9420: 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2a ////////.. /*
9430: 2a 0a 09 09 20 2a 20 20 41 6c 6c 20 74 68 65 20 *... * All the
9440: 70 72 69 6d 61 72 79 20 65 78 70 72 65 73 73 69 primary expressi
9450: 6f 6e 73 2e 0a 09 09 20 2a 20 20 40 70 72 69 76 ons.... * @priv
9460: 61 74 65 0a 09 09 20 2a 20 20 40 74 79 70 65 20 ate... * @type
9470: 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a {Object}... */.
9480: 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 42 61 . Tone.TimeBa
9490: 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 70 72 se.prototype._pr
94a0: 69 6d 61 72 79 45 78 70 72 65 73 73 69 6f 6e 73 imaryExpressions
94b0: 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 27 6e = {.. 'n
94c0: 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 ': {..
94d0: 20 20 72 65 67 65 78 70 3a 20 2f 5e 28 5c 64 2b regexp: /^(\d+
94e0: 29 6e 2f 69 2c 0a 09 20 20 20 20 20 20 20 20 20 )n/i,..
94f0: 20 20 20 6d 65 74 68 6f 64 3a 20 66 75 6e 63 74 method: funct
9500: 69 6f 6e 20 28 76 61 6c 75 65 29 20 7b 0a 09 20 ion (value) {..
9510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 v
9520: 61 6c 75 65 20 3d 20 70 61 72 73 65 49 6e 74 28 alue = parseInt(
9530: 76 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 20 value);..
9540: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c if (val
9550: 75 65 20 3d 3d 3d 20 31 29 20 7b 0a 09 20 20 20 ue === 1) {..
9560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9570: 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 62 65 return this._be
9580: 61 74 73 54 6f 55 6e 69 74 73 28 74 68 69 73 2e atsToUnits(this.
9590: 5f 74 69 6d 65 53 69 67 6e 61 74 75 72 65 28 29 _timeSignature()
95a0: 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
95b0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 } else {..
95c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
95d0: 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 62 return this._b
95e0: 65 61 74 73 54 6f 55 6e 69 74 73 28 34 20 2f 20 eatsToUnits(4 /
95f0: 76 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 20 value);..
9600: 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
9610: 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
9620: 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 27 },.. '
9630: 74 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 t': {..
9640: 20 20 20 72 65 67 65 78 70 3a 20 2f 5e 28 5c 64 regexp: /^(\d
9650: 2b 29 74 2f 69 2c 0a 09 20 20 20 20 20 20 20 20 +)t/i,..
9660: 20 20 20 20 6d 65 74 68 6f 64 3a 20 66 75 6e 63 method: func
9670: 74 69 6f 6e 20 28 76 61 6c 75 65 29 20 7b 0a 09 tion (value) {..
9680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9690: 76 61 6c 75 65 20 3d 20 70 61 72 73 65 49 6e 74 value = parseInt
96a0: 28 76 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 (value);..
96b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
96c0: 20 74 68 69 73 2e 5f 62 65 61 74 73 54 6f 55 6e this._beatsToUn
96d0: 69 74 73 28 38 20 2f 20 28 70 61 72 73 65 49 6e its(8 / (parseIn
96e0: 74 28 76 61 6c 75 65 29 20 2a 20 33 29 29 3b 0a t(value) * 3));.
96f0: 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
9700: 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 },..
9710: 20 20 20 20 27 6d 27 3a 20 7b 0a 09 20 20 20 20 'm': {..
9720: 20 20 20 20 20 20 20 20 72 65 67 65 78 70 3a 20 regexp:
9730: 2f 5e 28 5c 64 2b 29 6d 2f 69 2c 0a 09 20 20 20 /^(\d+)m/i,..
9740: 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 3a method:
9750: 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 75 65 function (value
9760: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
9770: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
9780: 2e 5f 62 65 61 74 73 54 6f 55 6e 69 74 73 28 70 ._beatsToUnits(p
9790: 61 72 73 65 49 6e 74 28 76 61 6c 75 65 29 20 2a arseInt(value) *
97a0: 20 74 68 69 73 2e 5f 74 69 6d 65 53 69 67 6e 61 this._timeSigna
97b0: 74 75 72 65 28 29 29 3b 0a 09 20 20 20 20 20 20 ture());..
97c0: 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
97d0: 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 27 69 27 },.. 'i'
97e0: 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 : {..
97f0: 20 72 65 67 65 78 70 3a 20 2f 5e 28 5c 64 2b 29 regexp: /^(\d+)
9800: 69 2f 69 2c 0a 09 20 20 20 20 20 20 20 20 20 20 i/i,..
9810: 20 20 6d 65 74 68 6f 64 3a 20 66 75 6e 63 74 69 method: functi
9820: 6f 6e 20 28 76 61 6c 75 65 29 20 7b 0a 09 20 20 on (value) {..
9830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
9840: 74 75 72 6e 20 74 68 69 73 2e 5f 74 69 63 6b 73 turn this._ticks
9850: 54 6f 55 6e 69 74 73 28 70 61 72 73 65 49 6e 74 ToUnits(parseInt
9860: 28 76 61 6c 75 65 29 29 3b 0a 09 20 20 20 20 20 (value));..
9870: 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
9880: 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 27 68 },.. 'h
9890: 7a 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 z': {..
98a0: 20 20 20 72 65 67 65 78 70 3a 20 2f 5e 28 5c 64 regexp: /^(\d
98b0: 2b 28 3f 3a 5c 2e 5c 64 2b 29 3f 29 68 7a 2f 69 +(?:\.\d+)?)hz/i
98c0: 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 6d ,.. m
98d0: 65 74 68 6f 64 3a 20 66 75 6e 63 74 69 6f 6e 20 ethod: function
98e0: 28 76 61 6c 75 65 29 20 7b 0a 09 20 20 20 20 20 (value) {..
98f0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
9900: 6e 20 74 68 69 73 2e 5f 66 72 65 71 75 65 6e 63 n this._frequenc
9910: 79 54 6f 55 6e 69 74 73 28 70 61 72 73 65 46 6c yToUnits(parseFl
9920: 6f 61 74 28 76 61 6c 75 65 29 29 3b 0a 09 20 20 oat(value));..
9930: 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
9940: 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
9950: 20 27 74 72 27 3a 20 7b 0a 09 20 20 20 20 20 20 'tr': {..
9960: 20 20 20 20 20 20 72 65 67 65 78 70 3a 20 2f 5e regexp: /^
9970: 28 5c 64 2b 28 3f 3a 5c 2e 5c 64 2b 29 3f 29 3a (\d+(?:\.\d+)?):
9980: 28 5c 64 2b 28 3f 3a 5c 2e 5c 64 2b 29 3f 29 3a (\d+(?:\.\d+)?):
9990: 3f 28 5c 64 2b 28 3f 3a 5c 2e 5c 64 2b 29 3f 29 ?(\d+(?:\.\d+)?)
99a0: 3f 2f 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 ?/,..
99b0: 20 6d 65 74 68 6f 64 3a 20 66 75 6e 63 74 69 6f method: functio
99c0: 6e 20 28 6d 2c 20 71 2c 20 73 29 20 7b 0a 09 20 n (m, q, s) {..
99d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 v
99e0: 61 72 20 74 6f 74 61 6c 20 3d 20 30 3b 0a 09 20 ar total = 0;..
99f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
9a00: 66 20 28 6d 20 26 26 20 6d 20 21 3d 3d 20 27 30 f (m && m !== '0
9a10: 27 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 ') {..
9a20: 20 20 20 20 20 20 20 20 20 20 74 6f 74 61 6c 20 total
9a30: 2b 3d 20 74 68 69 73 2e 5f 62 65 61 74 73 54 6f += this._beatsTo
9a40: 55 6e 69 74 73 28 74 68 69 73 2e 5f 74 69 6d 65 Units(this._time
9a50: 53 69 67 6e 61 74 75 72 65 28 29 20 2a 20 70 61 Signature() * pa
9a60: 72 73 65 46 6c 6f 61 74 28 6d 29 29 3b 0a 09 20 rseFloat(m));..
9a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
9a80: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
9a90: 20 20 69 66 20 28 71 20 26 26 20 71 20 21 3d 3d if (q && q !==
9aa0: 20 27 30 27 29 20 7b 0a 09 20 20 20 20 20 20 20 '0') {..
9ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 74 tot
9ac0: 61 6c 20 2b 3d 20 74 68 69 73 2e 5f 62 65 61 74 al += this._beat
9ad0: 73 54 6f 55 6e 69 74 73 28 70 61 72 73 65 46 6c sToUnits(parseFl
9ae0: 6f 61 74 28 71 29 29 3b 0a 09 20 20 20 20 20 20 oat(q));..
9af0: 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
9b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
9b10: 28 73 20 26 26 20 73 20 21 3d 3d 20 27 30 27 29 (s && s !== '0')
9b20: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
9b30: 20 20 20 20 20 20 20 20 74 6f 74 61 6c 20 2b 3d total +=
9b40: 20 74 68 69 73 2e 5f 62 65 61 74 73 54 6f 55 6e this._beatsToUn
9b50: 69 74 73 28 70 61 72 73 65 46 6c 6f 61 74 28 73 its(parseFloat(s
9b60: 29 20 2f 20 34 29 3b 0a 09 20 20 20 20 20 20 20 ) / 4);..
9b70: 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
9b80: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
9b90: 72 6e 20 74 6f 74 61 6c 3b 0a 09 20 20 20 20 20 rn total;..
9ba0: 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
9bb0: 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 27 73 },.. 's
9bc0: 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 ': {..
9bd0: 20 20 72 65 67 65 78 70 3a 20 2f 5e 28 5c 64 2b regexp: /^(\d+
9be0: 28 3f 3a 5c 2e 5c 64 2b 29 3f 73 29 2f 2c 0a 09 (?:\.\d+)?s)/,..
9bf0: 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 meth
9c00: 6f 64 3a 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 od: function (va
9c10: 6c 75 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 lue) {..
9c20: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
9c30: 68 69 73 2e 5f 73 65 63 6f 6e 64 73 54 6f 55 6e his._secondsToUn
9c40: 69 74 73 28 70 61 72 73 65 46 6c 6f 61 74 28 76 its(parseFloat(v
9c50: 61 6c 75 65 29 29 3b 0a 09 20 20 20 20 20 20 20 alue));..
9c60: 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
9c70: 7d 2c 0a 09 20 20 20 20 20 20 20 20 27 73 61 6d },.. 'sam
9c80: 70 6c 65 73 27 3a 20 7b 0a 09 20 20 20 20 20 20 ples': {..
9c90: 20 20 20 20 20 20 72 65 67 65 78 70 3a 20 2f 5e regexp: /^
9ca0: 28 5c 64 2b 29 73 61 6d 70 6c 65 73 2f 2c 0a 09 (\d+)samples/,..
9cb0: 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 meth
9cc0: 6f 64 3a 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 od: function (va
9cd0: 6c 75 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 lue) {..
9ce0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 return p
9cf0: 61 72 73 65 49 6e 74 28 76 61 6c 75 65 29 20 2f arseInt(value) /
9d00: 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 73 61 this.context.sa
9d10: 6d 70 6c 65 52 61 74 65 3b 0a 09 20 20 20 20 20 mpleRate;..
9d20: 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
9d30: 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 27 64 },.. 'd
9d40: 65 66 61 75 6c 74 27 3a 20 7b 0a 09 20 20 20 20 efault': {..
9d50: 20 20 20 20 20 20 20 20 72 65 67 65 78 70 3a 20 regexp:
9d60: 2f 5e 28 5c 64 2b 28 3f 3a 5c 2e 5c 64 2b 29 3f /^(\d+(?:\.\d+)?
9d70: 29 2f 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 )/,..
9d80: 20 6d 65 74 68 6f 64 3a 20 66 75 6e 63 74 69 6f method: functio
9d90: 6e 20 28 76 61 6c 75 65 29 20 7b 0a 09 20 20 20 n (value) {..
9da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
9db0: 75 72 6e 20 74 68 69 73 2e 5f 70 72 69 6d 61 72 urn this._primar
9dc0: 79 45 78 70 72 65 73 73 69 6f 6e 73 5b 74 68 69 yExpressions[thi
9dd0: 73 2e 5f 64 65 66 61 75 6c 74 55 6e 69 74 73 5d s._defaultUnits]
9de0: 2e 6d 65 74 68 6f 64 2e 63 61 6c 6c 28 74 68 69 .method.call(thi
9df0: 73 2c 20 76 61 6c 75 65 29 3b 0a 09 20 20 20 20 s, value);..
9e00: 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
9e10: 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 }.. };..
9e20: 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 41 6c 6c 20 /**... * All
9e30: 74 68 65 20 62 69 6e 61 72 79 20 65 78 70 72 65 the binary expre
9e40: 73 73 69 6f 6e 73 20 74 68 61 74 20 54 69 6d 65 ssions that Time
9e50: 42 61 73 65 20 63 61 6e 20 61 63 63 65 70 74 2e Base can accept.
9e60: 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
9e70: 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 4f 62 .. * @type {Ob
9e80: 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 ject}... */..
9e90: 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 2e 70 Tone.TimeBase.p
9ea0: 72 6f 74 6f 74 79 70 65 2e 5f 62 69 6e 61 72 79 rototype._binary
9eb0: 45 78 70 72 65 73 73 69 6f 6e 73 20 3d 20 7b 0a Expressions = {.
9ec0: 09 20 20 20 20 20 20 20 20 27 2b 27 3a 20 7b 0a . '+': {.
9ed0: 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 67 . reg
9ee0: 65 78 70 3a 20 2f 5e 5c 2b 2f 2c 0a 09 20 20 20 exp: /^\+/,..
9ef0: 20 20 20 20 20 20 20 20 20 70 72 65 63 65 64 65 precede
9f00: 6e 63 65 3a 20 32 2c 0a 09 20 20 20 20 20 20 20 nce: 2,..
9f10: 20 20 20 20 20 6d 65 74 68 6f 64 3a 20 66 75 6e method: fun
9f20: 63 74 69 6f 6e 20 28 6c 68 2c 20 72 68 29 20 7b ction (lh, rh) {
9f30: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
9f40: 20 20 72 65 74 75 72 6e 20 6c 68 28 29 20 2b 20 return lh() +
9f50: 72 68 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 rh();..
9f60: 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 2c }.. },
9f70: 0a 09 20 20 20 20 20 20 20 20 27 2d 27 3a 20 7b .. '-': {
9f80: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
9f90: 67 65 78 70 3a 20 2f 5e 5c 2d 2f 2c 0a 09 20 20 gexp: /^\-/,..
9fa0: 20 20 20 20 20 20 20 20 20 20 70 72 65 63 65 64 preced
9fb0: 65 6e 63 65 3a 20 32 2c 0a 09 20 20 20 20 20 20 ence: 2,..
9fc0: 20 20 20 20 20 20 6d 65 74 68 6f 64 3a 20 66 75 method: fu
9fd0: 6e 63 74 69 6f 6e 20 28 6c 68 2c 20 72 68 29 20 nction (lh, rh)
9fe0: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
9ff0: 20 20 20 72 65 74 75 72 6e 20 6c 68 28 29 20 2d return lh() -
a000: 20 72 68 28 29 3b 0a 09 20 20 20 20 20 20 20 20 rh();..
a010: 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d }.. }
a020: 2c 0a 09 20 20 20 20 20 20 20 20 27 2a 27 3a 20 ,.. '*':
a030: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
a040: 65 67 65 78 70 3a 20 2f 5e 5c 2a 2f 2c 0a 09 20 egexp: /^\*/,..
a050: 20 20 20 20 20 20 20 20 20 20 20 70 72 65 63 65 prece
a060: 64 65 6e 63 65 3a 20 31 2c 0a 09 20 20 20 20 20 dence: 1,..
a070: 20 20 20 20 20 20 20 6d 65 74 68 6f 64 3a 20 66 method: f
a080: 75 6e 63 74 69 6f 6e 20 28 6c 68 2c 20 72 68 29 unction (lh, rh)
a090: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
a0a0: 20 20 20 20 72 65 74 75 72 6e 20 6c 68 28 29 20 return lh()
a0b0: 2a 20 72 68 28 29 3b 0a 09 20 20 20 20 20 20 20 * rh();..
a0c0: 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
a0d0: 7d 2c 0a 09 20 20 20 20 20 20 20 20 27 2f 27 3a },.. '/':
a0e0: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
a0f0: 72 65 67 65 78 70 3a 20 2f 5e 5c 2f 2f 2c 0a 09 regexp: /^\//,..
a100: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 63 prec
a110: 65 64 65 6e 63 65 3a 20 31 2c 0a 09 20 20 20 20 edence: 1,..
a120: 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 3a 20 method:
a130: 66 75 6e 63 74 69 6f 6e 20 28 6c 68 2c 20 72 68 function (lh, rh
a140: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
a150: 20 20 20 20 20 72 65 74 75 72 6e 20 6c 68 28 29 return lh()
a160: 20 2f 20 72 68 28 29 3b 0a 09 20 20 20 20 20 20 / rh();..
a170: 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
a180: 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 }.. };..
a190: 2f 2a 2a 0a 09 09 20 2a 20 20 41 6c 6c 20 74 68 /**... * All th
a1a0: 65 20 75 6e 61 72 79 20 65 78 70 72 65 73 73 69 e unary expressi
a1b0: 6f 6e 73 2e 0a 09 09 20 2a 20 20 40 70 72 69 76 ons.... * @priv
a1c0: 61 74 65 0a 09 09 20 2a 20 20 40 74 79 70 65 20 ate... * @type
a1d0: 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a {Object}... */.
a1e0: 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 42 61 . Tone.TimeBa
a1f0: 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 75 6e se.prototype._un
a200: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 73 20 3d aryExpressions =
a210: 20 7b 0a 09 20 20 20 20 20 20 20 20 27 6e 65 67 {.. 'neg
a220: 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 ': {..
a230: 20 20 72 65 67 65 78 70 3a 20 2f 5e 5c 2d 2f 2c regexp: /^\-/,
a240: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 .. me
a250: 74 68 6f 64 3a 20 66 75 6e 63 74 69 6f 6e 20 28 thod: function (
a260: 6c 68 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lh) {..
a270: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 6c return -l
a280: 68 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 h();..
a290: 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 }.. }..
a2a0: 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
a2b0: 09 09 20 2a 20 20 53 79 6e 74 61 63 74 69 63 20 .. * Syntactic
a2c0: 67 6c 75 65 20 77 68 69 63 68 20 68 6f 6c 64 73 glue which holds
a2d0: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 6f 67 expressions tog
a2e0: 65 74 68 65 72 0a 09 09 20 2a 20 20 40 70 72 69 ether... * @pri
a2f0: 76 61 74 65 0a 09 09 20 2a 20 20 40 74 79 70 65 vate... * @type
a300: 20 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f {Object}... */
a310: 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 42 .. Tone.TimeB
a320: 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 73 ase.prototype._s
a330: 79 6e 74 61 78 47 6c 75 65 20 3d 20 7b 0a 09 20 yntaxGlue = {..
a340: 20 20 20 20 20 20 20 27 28 27 3a 20 7b 20 72 65 '(': { re
a350: 67 65 78 70 3a 20 2f 5e 5c 28 2f 20 7d 2c 0a 09 gexp: /^\(/ },..
a360: 20 20 20 20 20 20 20 20 27 29 27 3a 20 7b 20 72 ')': { r
a370: 65 67 65 78 70 3a 20 2f 5e 5c 29 2f 20 7d 0a 09 egexp: /^\)/ }..
a380: 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
a390: 09 09 20 2a 20 20 74 6f 6b 65 6e 69 7a 65 20 74 .. * tokenize t
a3a0: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 62 61 he expression ba
a3b0: 73 65 64 20 6f 6e 20 74 68 65 20 45 78 70 72 65 sed on the Expre
a3c0: 73 73 69 6f 6e 73 20 6f 62 6a 65 63 74 0a 09 09 ssions object...
a3d0: 20 2a 20 20 40 70 61 72 61 6d 20 20 20 7b 73 74 * @param {st
a3e0: 72 69 6e 67 7d 20 65 78 70 72 20 0a 09 09 20 2a ring} expr ... *
a3f0: 20 20 40 72 65 74 75 72 6e 20 20 7b 4f 62 6a 65 @return {Obje
a400: 63 74 7d 20 20 20 20 20 20 72 65 74 75 72 6e 73 ct} returns
a410: 20 74 77 6f 20 6d 65 74 68 6f 64 73 20 6f 6e 20 two methods on
a420: 74 68 65 20 74 6f 6b 65 6e 69 7a 65 64 20 6c 69 the tokenized li
a430: 73 74 2c 20 6e 65 78 74 20 61 6e 64 20 70 65 65 st, next and pee
a440: 6b 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 k... * @private
a450: 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
a460: 2e 54 69 6d 65 42 61 73 65 2e 70 72 6f 74 6f 74 .TimeBase.protot
a470: 79 70 65 2e 5f 74 6f 6b 65 6e 69 7a 65 20 3d 20 ype._tokenize =
a480: 66 75 6e 63 74 69 6f 6e 20 28 65 78 70 72 29 20 function (expr)
a490: 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 70 {.. var p
a4a0: 6f 73 69 74 69 6f 6e 20 3d 20 2d 31 3b 0a 09 20 osition = -1;..
a4b0: 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b 65 6e var token
a4c0: 73 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 20 20 s = [];..
a4d0: 20 77 68 69 6c 65 20 28 65 78 70 72 2e 6c 65 6e while (expr.len
a4e0: 67 74 68 20 3e 20 30 29 20 7b 0a 09 20 20 20 20 gth > 0) {..
a4f0: 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 65 expr = e
a500: 78 70 72 2e 74 72 69 6d 28 29 3b 0a 09 20 20 20 xpr.trim();..
a510: 20 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b var tok
a520: 65 6e 20 3d 20 67 65 74 4e 65 78 74 54 6f 6b 65 en = getNextToke
a530: 6e 28 65 78 70 72 2c 20 74 68 69 73 29 3b 0a 09 n(expr, this);..
a540: 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 toke
a550: 6e 73 2e 70 75 73 68 28 74 6f 6b 65 6e 29 3b 0a ns.push(token);.
a560: 09 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 . exp
a570: 72 20 3d 20 65 78 70 72 2e 73 75 62 73 74 72 28 r = expr.substr(
a580: 74 6f 6b 65 6e 2e 76 61 6c 75 65 2e 6c 65 6e 67 token.value.leng
a590: 74 68 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a th);.. }.
a5a0: 09 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f . functio
a5b0: 6e 20 67 65 74 4e 65 78 74 54 6f 6b 65 6e 28 65 n getNextToken(e
a5c0: 78 70 72 2c 20 63 6f 6e 74 65 78 74 29 20 7b 0a xpr, context) {.
a5d0: 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
a5e0: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 3d 20 5b expressions = [
a5f0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
a600: 20 20 27 5f 62 69 6e 61 72 79 45 78 70 72 65 73 '_binaryExpres
a610: 73 69 6f 6e 73 27 2c 0a 09 20 20 20 20 20 20 20 sions',..
a620: 20 20 20 20 20 20 20 20 20 27 5f 75 6e 61 72 79 '_unary
a630: 45 78 70 72 65 73 73 69 6f 6e 73 27 2c 0a 09 20 Expressions',..
a640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 '
a650: 5f 70 72 69 6d 61 72 79 45 78 70 72 65 73 73 69 _primaryExpressi
a660: 6f 6e 73 27 2c 0a 09 20 20 20 20 20 20 20 20 20 ons',..
a670: 20 20 20 20 20 20 20 27 5f 73 79 6e 74 61 78 47 '_syntaxG
a680: 6c 75 65 27 0a 09 20 20 20 20 20 20 20 20 20 20 lue'..
a690: 20 20 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ];..
a6a0: 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 for (var i = 0
a6b0: 3b 20 69 20 3c 20 65 78 70 72 65 73 73 69 6f 6e ; i < expression
a6c0: 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b s.length; i++) {
a6d0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
a6e0: 20 20 76 61 72 20 67 72 6f 75 70 20 3d 20 63 6f var group = co
a6f0: 6e 74 65 78 74 5b 65 78 70 72 65 73 73 69 6f 6e ntext[expression
a700: 73 5b 69 5d 5d 3b 0a 09 20 20 20 20 20 20 20 20 s[i]];..
a710: 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 for (var
a720: 20 6f 70 4e 61 6d 65 20 69 6e 20 67 72 6f 75 70 opName in group
a730: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
a740: 20 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 20 var op
a750: 3d 20 67 72 6f 75 70 5b 6f 70 4e 61 6d 65 5d 3b = group[opName];
a760: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
a770: 20 20 20 20 20 20 76 61 72 20 72 65 67 20 3d 20 var reg =
a780: 6f 70 2e 72 65 67 65 78 70 3b 0a 09 20 20 20 20 op.regexp;..
a790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a7a0: 76 61 72 20 6d 61 74 63 68 20 3d 20 65 78 70 72 var match = expr
a7b0: 2e 6d 61 74 63 68 28 72 65 67 29 3b 0a 09 20 20 .match(reg);..
a7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a7d0: 20 20 69 66 20 28 6d 61 74 63 68 20 21 3d 3d 20 if (match !==
a7e0: 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 null) {..
a7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a800: 20 72 65 74 75 72 6e 20 7b 0a 09 20 20 20 20 20 return {..
a810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a820: 20 20 20 20 20 20 20 6d 65 74 68 6f 64 3a 20 6f method: o
a830: 70 2e 6d 65 74 68 6f 64 2c 0a 09 20 20 20 20 20 p.method,..
a840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a850: 20 20 20 20 20 20 20 70 72 65 63 65 64 65 6e 63 precedenc
a860: 65 3a 20 6f 70 2e 70 72 65 63 65 64 65 6e 63 65 e: op.precedence
a870: 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
a880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
a890: 65 67 65 78 70 3a 20 6f 70 2e 72 65 67 65 78 70 egexp: op.regexp
a8a0: 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
a8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 v
a8c0: 61 6c 75 65 3a 20 6d 61 74 63 68 5b 30 5d 0a 09 alue: match[0]..
a8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a8e0: 20 20 20 20 20 20 20 20 7d 3b 0a 09 20 20 20 20 };..
a8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a900: 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
a910: 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 }..
a920: 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
a930: 20 74 68 72 6f 77 20 6e 65 77 20 53 79 6e 74 61 throw new Synta
a940: 78 45 72 72 6f 72 28 27 54 6f 6e 65 2e 54 69 6d xError('Tone.Tim
a950: 65 42 61 73 65 3a 20 55 6e 65 78 70 65 63 74 65 eBase: Unexpecte
a960: 64 20 74 6f 6b 65 6e 20 27 20 2b 20 65 78 70 72 d token ' + expr
a970: 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
a980: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 7b 0a return {.
a990: 09 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 . nex
a9a0: 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b t: function () {
a9b0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
a9c0: 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e 73 5b return tokens[
a9d0: 2b 2b 70 6f 73 69 74 69 6f 6e 5d 3b 0a 09 20 20 ++position];..
a9e0: 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 },..
a9f0: 20 20 20 20 20 20 20 20 20 20 70 65 65 6b 3a 20 peek:
aa00: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
aa10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
aa20: 65 74 75 72 6e 20 74 6f 6b 65 6e 73 5b 70 6f 73 eturn tokens[pos
aa30: 69 74 69 6f 6e 20 2b 20 31 5d 3b 0a 09 20 20 20 ition + 1];..
aa40: 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
aa50: 20 20 20 20 7d 3b 0a 09 20 20 20 20 7d 3b 0a 09 };.. };..
aa60: 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 47 69 /**... * Gi
aa70: 76 65 6e 20 61 20 74 6f 6b 65 6e 2c 20 66 69 6e ven a token, fin
aa80: 64 20 74 68 65 20 76 61 6c 75 65 20 77 69 74 68 d the value with
aa90: 69 6e 20 74 68 65 20 67 72 6f 75 70 4e 61 6d 65 in the groupName
aaa0: 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 4f ... * @param {O
aab0: 62 6a 65 63 74 7d 20 74 6f 6b 65 6e 0a 09 09 20 bject} token...
aac0: 2a 20 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e * @param {Strin
aad0: 67 7d 20 67 72 6f 75 70 4e 61 6d 65 0a 09 09 20 g} groupName...
aae0: 2a 20 20 40 70 61 72 61 6d 20 7b 4e 75 6d 62 65 * @param {Numbe
aaf0: 72 7d 20 70 72 65 63 65 64 65 6e 63 65 0a 09 09 r} precedence...
ab00: 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 * @private...
ab10: 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d */.. Tone.Tim
ab20: 65 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e eBase.prototype.
ab30: 5f 6d 61 74 63 68 47 72 6f 75 70 20 3d 20 66 75 _matchGroup = fu
ab40: 6e 63 74 69 6f 6e 20 28 74 6f 6b 65 6e 2c 20 67 nction (token, g
ab50: 72 6f 75 70 2c 20 70 72 65 63 29 20 7b 0a 09 20 roup, prec) {..
ab60: 20 20 20 20 20 20 20 76 61 72 20 72 65 74 20 3d var ret =
ab70: 20 66 61 6c 73 65 3b 0a 09 20 20 20 20 20 20 20 false;..
ab80: 20 69 66 20 28 21 74 68 69 73 2e 69 73 55 6e 64 if (!this.isUnd
ab90: 65 66 28 74 6f 6b 65 6e 29 29 20 7b 0a 09 20 20 ef(token)) {..
aba0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 for (v
abb0: 61 72 20 6f 70 4e 61 6d 65 20 69 6e 20 67 72 6f ar opName in gro
abc0: 75 70 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 up) {..
abd0: 20 20 20 20 20 20 20 76 61 72 20 6f 70 20 3d 20 var op =
abe0: 67 72 6f 75 70 5b 6f 70 4e 61 6d 65 5d 3b 0a 09 group[opName];..
abf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ac00: 69 66 20 28 6f 70 2e 72 65 67 65 78 70 2e 74 65 if (op.regexp.te
ac10: 73 74 28 74 6f 6b 65 6e 2e 76 61 6c 75 65 29 29 st(token.value))
ac20: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
ac30: 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69 if (!thi
ac40: 73 2e 69 73 55 6e 64 65 66 28 70 72 65 63 29 29 s.isUndef(prec))
ac50: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
ac60: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
ac70: 6f 70 2e 70 72 65 63 65 64 65 6e 63 65 20 3d 3d op.precedence ==
ac80: 3d 20 70 72 65 63 29 20 7b 0a 09 20 20 20 20 20 = prec) {..
ac90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
aca0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 70 return op
acb0: 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
acc0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
acd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ace0: 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 } else {..
acf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ad00: 20 20 20 20 72 65 74 75 72 6e 20 6f 70 3b 0a 09 return op;..
ad10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ad20: 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
ad30: 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
ad40: 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
ad50: 20 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 }.. retu
ad60: 72 6e 20 72 65 74 3b 0a 09 20 20 20 20 7d 3b 0a rn ret;.. };.
ad70: 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 4d . /**... * M
ad80: 61 74 63 68 20 61 20 62 69 6e 61 72 79 20 65 78 atch a binary ex
ad90: 70 72 65 73 73 69 6f 6e 20 67 69 76 65 6e 20 74 pression given t
ada0: 68 65 20 74 6f 6b 65 6e 20 61 6e 64 20 74 68 65 he token and the
adb0: 20 70 72 65 63 65 64 65 6e 63 65 0a 09 09 20 2a precedence... *
adc0: 20 20 40 70 61 72 61 6d 20 7b 4c 65 78 65 72 7d @param {Lexer}
add0: 20 6c 65 78 65 72 0a 09 09 20 2a 20 20 40 70 61 lexer... * @pa
ade0: 72 61 6d 20 7b 4e 75 6d 62 65 72 7d 20 70 72 65 ram {Number} pre
adf0: 63 65 64 65 6e 63 65 0a 09 09 20 2a 20 20 40 70 cedence... * @p
ae00: 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 rivate... */..
ae10: 20 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 2e Tone.TimeBase.
ae20: 70 72 6f 74 6f 74 79 70 65 2e 5f 70 61 72 73 65 prototype._parse
ae30: 42 69 6e 61 72 79 20 3d 20 66 75 6e 63 74 69 6f Binary = functio
ae40: 6e 20 28 6c 65 78 65 72 2c 20 70 72 65 63 65 64 n (lexer, preced
ae50: 65 6e 63 65 29 20 7b 0a 09 20 20 20 20 20 20 20 ence) {..
ae60: 20 69 66 20 28 74 68 69 73 2e 69 73 55 6e 64 65 if (this.isUnde
ae70: 66 28 70 72 65 63 65 64 65 6e 63 65 29 29 20 7b f(precedence)) {
ae80: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 70 72 .. pr
ae90: 65 63 65 64 65 6e 63 65 20 3d 20 32 3b 0a 09 20 ecedence = 2;..
aea0: 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
aeb0: 20 20 76 61 72 20 65 78 70 72 3b 0a 09 20 20 20 var expr;..
aec0: 20 20 20 20 20 69 66 20 28 70 72 65 63 65 64 65 if (precede
aed0: 6e 63 65 20 3c 20 30 29 20 7b 0a 09 20 20 20 20 nce < 0) {..
aee0: 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 74 expr = t
aef0: 68 69 73 2e 5f 70 61 72 73 65 55 6e 61 72 79 28 his._parseUnary(
af00: 6c 65 78 65 72 29 3b 0a 09 20 20 20 20 20 20 20 lexer);..
af10: 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
af20: 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 74 68 expr = th
af30: 69 73 2e 5f 70 61 72 73 65 42 69 6e 61 72 79 28 is._parseBinary(
af40: 6c 65 78 65 72 2c 20 70 72 65 63 65 64 65 6e 63 lexer, precedenc
af50: 65 20 2d 20 31 29 3b 0a 09 20 20 20 20 20 20 20 e - 1);..
af60: 20 7d 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 }.. var
af70: 74 6f 6b 65 6e 20 3d 20 6c 65 78 65 72 2e 70 65 token = lexer.pe
af80: 65 6b 28 29 3b 0a 09 20 20 20 20 20 20 20 20 77 ek();.. w
af90: 68 69 6c 65 20 28 74 6f 6b 65 6e 20 26 26 20 74 hile (token && t
afa0: 68 69 73 2e 5f 6d 61 74 63 68 47 72 6f 75 70 28 his._matchGroup(
afb0: 74 6f 6b 65 6e 2c 20 74 68 69 73 2e 5f 62 69 6e token, this._bin
afc0: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 73 2c 20 aryExpressions,
afd0: 70 72 65 63 65 64 65 6e 63 65 29 29 20 7b 0a 09 precedence)) {..
afe0: 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 toke
aff0: 6e 20 3d 20 6c 65 78 65 72 2e 6e 65 78 74 28 29 n = lexer.next()
b000: 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 65 ;.. e
b010: 78 70 72 20 3d 20 74 6f 6b 65 6e 2e 6d 65 74 68 xpr = token.meth
b020: 6f 64 2e 62 69 6e 64 28 74 68 69 73 2c 20 65 78 od.bind(this, ex
b030: 70 72 2c 20 74 68 69 73 2e 5f 70 61 72 73 65 42 pr, this._parseB
b040: 69 6e 61 72 79 28 6c 65 78 65 72 2c 20 70 72 65 inary(lexer, pre
b050: 63 65 64 65 6e 63 65 20 2d 20 31 29 29 3b 0a 09 cedence - 1));..
b060: 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 toke
b070: 6e 20 3d 20 6c 65 78 65 72 2e 70 65 65 6b 28 29 n = lexer.peek()
b080: 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
b090: 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 return exp
b0a0: 72 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 r;.. };..
b0b0: 2f 2a 2a 0a 09 09 20 2a 20 20 4d 61 74 63 68 20 /**... * Match
b0c0: 61 20 75 6e 61 72 79 20 65 78 70 72 65 73 73 69 a unary expressi
b0d0: 6f 6e 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d on.... * @param
b0e0: 20 7b 4c 65 78 65 72 7d 20 6c 65 78 65 72 0a 09 {Lexer} lexer..
b0f0: 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
b100: 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 */.. Tone.Ti
b110: 6d 65 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 meBase.prototype
b120: 2e 5f 70 61 72 73 65 55 6e 61 72 79 20 3d 20 66 ._parseUnary = f
b130: 75 6e 63 74 69 6f 6e 20 28 6c 65 78 65 72 29 20 unction (lexer)
b140: 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 74 {.. var t
b150: 6f 6b 65 6e 2c 20 65 78 70 72 3b 0a 09 20 20 20 oken, expr;..
b160: 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 6c 65 78 token = lex
b170: 65 72 2e 70 65 65 6b 28 29 3b 0a 09 20 20 20 20 er.peek();..
b180: 20 20 20 20 76 61 72 20 6f 70 20 3d 20 74 68 69 var op = thi
b190: 73 2e 5f 6d 61 74 63 68 47 72 6f 75 70 28 74 6f s._matchGroup(to
b1a0: 6b 65 6e 2c 20 74 68 69 73 2e 5f 75 6e 61 72 79 ken, this._unary
b1b0: 45 78 70 72 65 73 73 69 6f 6e 73 29 3b 0a 09 20 Expressions);..
b1c0: 20 20 20 20 20 20 20 69 66 20 28 6f 70 29 20 7b if (op) {
b1d0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 6f .. to
b1e0: 6b 65 6e 20 3d 20 6c 65 78 65 72 2e 6e 65 78 74 ken = lexer.next
b1f0: 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ();..
b200: 20 65 78 70 72 20 3d 20 74 68 69 73 2e 5f 70 61 expr = this._pa
b210: 72 73 65 55 6e 61 72 79 28 6c 65 78 65 72 29 3b rseUnary(lexer);
b220: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
b230: 74 75 72 6e 20 6f 70 2e 6d 65 74 68 6f 64 2e 62 turn op.method.b
b240: 69 6e 64 28 74 68 69 73 2c 20 65 78 70 72 29 3b ind(this, expr);
b250: 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
b260: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
b270: 2e 5f 70 61 72 73 65 50 72 69 6d 61 72 79 28 6c ._parsePrimary(l
b280: 65 78 65 72 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 exer);.. };..
b290: 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 4d 61 /**... * Ma
b2a0: 74 63 68 20 61 20 70 72 69 6d 61 72 79 20 65 78 tch a primary ex
b2b0: 70 72 65 73 73 69 6f 6e 20 28 61 20 76 61 6c 75 pression (a valu
b2c0: 65 29 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d e).... * @param
b2d0: 20 7b 4c 65 78 65 72 7d 20 6c 65 78 65 72 0a 09 {Lexer} lexer..
b2e0: 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
b2f0: 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 */.. Tone.Ti
b300: 6d 65 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 meBase.prototype
b310: 2e 5f 70 61 72 73 65 50 72 69 6d 61 72 79 20 3d ._parsePrimary =
b320: 20 66 75 6e 63 74 69 6f 6e 20 28 6c 65 78 65 72 function (lexer
b330: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 ) {.. var
b340: 20 74 6f 6b 65 6e 2c 20 65 78 70 72 3b 0a 09 20 token, expr;..
b350: 20 20 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 6c token = l
b360: 65 78 65 72 2e 70 65 65 6b 28 29 3b 0a 09 20 20 exer.peek();..
b370: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 if (this.i
b380: 73 55 6e 64 65 66 28 74 6f 6b 65 6e 29 29 20 7b sUndef(token)) {
b390: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
b3a0: 72 6f 77 20 6e 65 77 20 53 79 6e 74 61 78 45 72 row new SyntaxEr
b3b0: 72 6f 72 28 27 54 6f 6e 65 2e 54 69 6d 65 42 61 ror('Tone.TimeBa
b3c0: 73 65 3a 20 55 6e 65 78 70 65 63 74 65 64 20 65 se: Unexpected e
b3d0: 6e 64 20 6f 66 20 65 78 70 72 65 73 73 69 6f 6e nd of expression
b3e0: 27 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 ');.. }..
b3f0: 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
b400: 2e 5f 6d 61 74 63 68 47 72 6f 75 70 28 74 6f 6b ._matchGroup(tok
b410: 65 6e 2c 20 74 68 69 73 2e 5f 70 72 69 6d 61 72 en, this._primar
b420: 79 45 78 70 72 65 73 73 69 6f 6e 73 29 29 20 7b yExpressions)) {
b430: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 6f .. to
b440: 6b 65 6e 20 3d 20 6c 65 78 65 72 2e 6e 65 78 74 ken = lexer.next
b450: 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ();..
b460: 20 76 61 72 20 6d 61 74 63 68 69 6e 67 20 3d 20 var matching =
b470: 74 6f 6b 65 6e 2e 76 61 6c 75 65 2e 6d 61 74 63 token.value.matc
b480: 68 28 74 6f 6b 65 6e 2e 72 65 67 65 78 70 29 3b h(token.regexp);
b490: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
b4a0: 74 75 72 6e 20 74 6f 6b 65 6e 2e 6d 65 74 68 6f turn token.metho
b4b0: 64 2e 62 69 6e 64 28 74 68 69 73 2c 20 6d 61 74 d.bind(this, mat
b4c0: 63 68 69 6e 67 5b 31 5d 2c 20 6d 61 74 63 68 69 ching[1], matchi
b4d0: 6e 67 5b 32 5d 2c 20 6d 61 74 63 68 69 6e 67 5b ng[2], matching[
b4e0: 33 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 3]);.. }.
b4f0: 09 20 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b . if (tok
b500: 65 6e 20 26 26 20 74 6f 6b 65 6e 2e 76 61 6c 75 en && token.valu
b510: 65 20 3d 3d 3d 20 27 28 27 29 20 7b 0a 09 20 20 e === '(') {..
b520: 20 20 20 20 20 20 20 20 20 20 6c 65 78 65 72 2e lexer.
b530: 6e 65 78 74 28 29 3b 0a 09 20 20 20 20 20 20 20 next();..
b540: 20 20 20 20 20 65 78 70 72 20 3d 20 74 68 69 73 expr = this
b550: 2e 5f 70 61 72 73 65 42 69 6e 61 72 79 28 6c 65 ._parseBinary(le
b560: 78 65 72 29 3b 0a 09 20 20 20 20 20 20 20 20 20 xer);..
b570: 20 20 20 74 6f 6b 65 6e 20 3d 20 6c 65 78 65 72 token = lexer
b580: 2e 6e 65 78 74 28 29 3b 0a 09 20 20 20 20 20 20 .next();..
b590: 20 20 20 20 20 20 69 66 20 28 21 28 74 6f 6b 65 if (!(toke
b5a0: 6e 20 26 26 20 74 6f 6b 65 6e 2e 76 61 6c 75 65 n && token.value
b5b0: 20 3d 3d 3d 20 27 29 27 29 29 20 7b 0a 09 20 20 === ')')) {..
b5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
b5d0: 72 6f 77 20 6e 65 77 20 53 79 6e 74 61 78 45 72 row new SyntaxEr
b5e0: 72 6f 72 28 27 45 78 70 65 63 74 65 64 20 29 27 ror('Expected )'
b5f0: 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
b600: 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 }.. r
b610: 65 74 75 72 6e 20 65 78 70 72 3b 0a 09 20 20 20 eturn expr;..
b620: 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
b630: 74 68 72 6f 77 20 6e 65 77 20 53 79 6e 74 61 78 throw new Syntax
b640: 45 72 72 6f 72 28 27 54 6f 6e 65 2e 54 69 6d 65 Error('Tone.Time
b650: 42 61 73 65 3a 20 43 61 6e 6e 6f 74 20 70 72 6f Base: Cannot pro
b660: 63 65 73 73 20 74 6f 6b 65 6e 20 27 20 2b 20 74 cess token ' + t
b670: 6f 6b 65 6e 2e 76 61 6c 75 65 29 3b 0a 09 20 20 oken.value);..
b680: 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
b690: 20 2a 20 20 52 65 63 75 72 73 69 76 65 6c 79 20 * Recursively
b6a0: 70 61 72 73 65 20 74 68 65 20 73 74 72 69 6e 67 parse the string
b6b0: 20 65 78 70 72 65 73 73 69 6f 6e 20 69 6e 74 6f expression into
b6c0: 20 61 20 73 79 6e 74 61 78 20 74 72 65 65 2e 0a a syntax tree..
b6d0: 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 20 7b .. * @param {
b6e0: 73 74 72 69 6e 67 7d 20 65 78 70 72 20 0a 09 09 string} expr ...
b6f0: 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 46 75 * @return {Fu
b700: 6e 63 74 69 6f 6e 7d 20 74 68 65 20 62 6f 75 6e nction} the boun
b710: 64 20 6d 65 74 68 6f 64 20 74 6f 20 62 65 20 65 d method to be e
b720: 76 61 6c 75 61 74 65 64 20 6c 61 74 65 72 0a 09 valuated later..
b730: 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
b740: 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 */.. Tone.Ti
b750: 6d 65 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 meBase.prototype
b760: 2e 5f 70 61 72 73 65 45 78 70 72 53 74 72 69 6e ._parseExprStrin
b770: 67 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 65 78 g = function (ex
b780: 70 72 53 74 72 69 6e 67 29 20 7b 0a 09 20 20 20 prString) {..
b790: 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 69 if (!this.i
b7a0: 73 53 74 72 69 6e 67 28 65 78 70 72 53 74 72 69 sString(exprStri
b7b0: 6e 67 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ng)) {..
b7c0: 20 20 20 20 65 78 70 72 53 74 72 69 6e 67 20 3d exprString =
b7d0: 20 65 78 70 72 53 74 72 69 6e 67 2e 74 6f 53 74 exprString.toSt
b7e0: 72 69 6e 67 28 29 3b 0a 09 20 20 20 20 20 20 20 ring();..
b7f0: 20 7d 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 }.. var
b800: 6c 65 78 65 72 20 3d 20 74 68 69 73 2e 5f 74 6f lexer = this._to
b810: 6b 65 6e 69 7a 65 28 65 78 70 72 53 74 72 69 6e kenize(exprStrin
b820: 67 29 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 g);.. var
b830: 20 74 72 65 65 20 3d 20 74 68 69 73 2e 5f 70 61 tree = this._pa
b840: 72 73 65 42 69 6e 61 72 79 28 6c 65 78 65 72 29 rseBinary(lexer)
b850: 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
b860: 6e 20 74 72 65 65 3b 0a 09 20 20 20 20 7d 3b 0a n tree;.. };.
b870: 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f . ///////////
b880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
b890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
b8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
b8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
b8c0: 0a 09 20 20 20 20 2f 2f 09 44 45 46 41 55 4c 54 .. //.DEFAULT
b8d0: 53 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f S.. /////////
b8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
b8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
b900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
b910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
b920: 2f 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a //.. /**... *
b930: 20 20 54 68 65 20 69 6e 69 74 69 61 6c 20 65 78 The initial ex
b940: 70 72 65 73 73 69 6f 6e 20 76 61 6c 75 65 0a 09 pression value..
b950: 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 4e . * @return {N
b960: 75 6d 62 65 72 7d 20 20 54 68 65 20 69 6e 69 74 umber} The init
b970: 69 61 6c 20 76 61 6c 75 65 20 30 0a 09 09 20 2a ial value 0... *
b980: 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f @private... */
b990: 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 42 .. Tone.TimeB
b9a0: 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 6e ase.prototype._n
b9b0: 6f 4f 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 oOp = function (
b9c0: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ) {.. ret
b9d0: 75 72 6e 20 30 3b 0a 09 20 20 20 20 7d 3b 0a 09 urn 0;.. };..
b9e0: 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 /**... * Th
b9f0: 65 20 64 65 66 61 75 6c 74 20 65 78 70 72 65 73 e default expres
ba00: 73 69 6f 6e 20 76 61 6c 75 65 20 69 66 20 6e 6f sion value if no
ba10: 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 67 arguments are g
ba20: 69 76 65 6e 0a 09 09 20 2a 20 20 40 70 72 69 76 iven... * @priv
ba30: 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ate... */.. T
ba40: 6f 6e 65 2e 54 69 6d 65 42 61 73 65 2e 70 72 6f one.TimeBase.pro
ba50: 74 6f 74 79 70 65 2e 5f 64 65 66 61 75 6c 74 45 totype._defaultE
ba60: 78 70 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 xpr = function (
ba70: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ) {.. ret
ba80: 75 72 6e 20 74 68 69 73 2e 5f 6e 6f 4f 70 3b 0a urn this._noOp;.
ba90: 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
baa0: 0a 09 09 20 2a 20 20 54 68 65 20 64 65 66 61 75 ... * The defau
bab0: 6c 74 20 75 6e 69 74 73 20 69 66 20 6e 6f 6e 65 lt units if none
bac0: 20 61 72 65 20 67 69 76 65 6e 2e 0a 09 09 20 2a are given.... *
bad0: 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f @private... */
bae0: 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 42 .. Tone.TimeB
baf0: 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 64 ase.prototype._d
bb00: 65 66 61 75 6c 74 55 6e 69 74 73 20 3d 20 27 73 efaultUnits = 's
bb10: 27 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f ';.. ////////
bb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
bb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
bb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
bb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
bb60: 2f 2f 2f 0a 09 20 20 20 20 2f 2f 09 55 4e 49 54 ///.. //.UNIT
bb70: 20 43 4f 4e 56 45 52 53 49 4f 4e 53 0a 09 20 20 CONVERSIONS..
bb80: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //////////////
bb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
bba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
bbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
bbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 /////////////..
bbd0: 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 /**... * Ret
bbe0: 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f urns the value o
bbf0: 66 20 61 20 66 72 65 71 75 65 6e 63 79 20 69 6e f a frequency in
bc00: 20 74 68 65 20 63 75 72 72 65 6e 74 20 75 6e 69 the current uni
bc10: 74 73 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 ts... * @param
bc20: 7b 46 72 65 71 75 65 6e 63 79 7d 20 66 72 65 71 {Frequency} freq
bc30: 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 ... * @return
bc40: 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 {Number}... * @
bc50: 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 private... */..
bc60: 20 20 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 Tone.TimeBase
bc70: 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 66 72 65 71 .prototype._freq
bc80: 75 65 6e 63 79 54 6f 55 6e 69 74 73 20 3d 20 66 uencyToUnits = f
bc90: 75 6e 63 74 69 6f 6e 20 28 66 72 65 71 29 20 7b unction (freq) {
bca0: 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
bcb0: 20 31 20 2f 20 66 72 65 71 3b 0a 09 20 20 20 20 1 / freq;..
bcc0: 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
bcd0: 20 20 52 65 74 75 72 6e 20 74 68 65 20 76 61 6c Return the val
bce0: 75 65 20 6f 66 20 74 68 65 20 62 65 61 74 73 20 ue of the beats
bcf0: 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 75 in the current u
bd00: 6e 69 74 73 0a 09 09 20 2a 20 20 40 70 61 72 61 nits... * @para
bd10: 6d 20 7b 4e 75 6d 62 65 72 7d 20 62 65 61 74 73 m {Number} beats
bd20: 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 ... * @return
bd30: 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 {Number}... * @
bd40: 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 private... */..
bd50: 20 20 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 Tone.TimeBase
bd60: 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 62 65 61 74 .prototype._beat
bd70: 73 54 6f 55 6e 69 74 73 20 3d 20 66 75 6e 63 74 sToUnits = funct
bd80: 69 6f 6e 20 28 62 65 61 74 73 29 20 7b 0a 09 20 ion (beats) {..
bd90: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 36 30 return 60
bda0: 20 2f 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 / Tone.Transpor
bdb0: 74 2e 62 70 6d 2e 76 61 6c 75 65 20 2a 20 62 65 t.bpm.value * be
bdc0: 61 74 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ats;.. };..
bdd0: 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 /**... * Retu
bde0: 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 rns the value of
bdf0: 20 61 20 73 65 63 6f 6e 64 20 69 6e 20 74 68 65 a second in the
be00: 20 63 75 72 72 65 6e 74 20 75 6e 69 74 73 0a 09 current units..
be10: 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 53 65 63 . * @param {Sec
be20: 6f 6e 64 73 7d 20 73 65 63 6f 6e 64 73 0a 09 09 onds} seconds...
be30: 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 4e 75 * @return {Nu
be40: 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 70 72 69 mber}... * @pri
be50: 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 vate... */..
be60: 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 2e 70 72 Tone.TimeBase.pr
be70: 6f 74 6f 74 79 70 65 2e 5f 73 65 63 6f 6e 64 73 ototype._seconds
be80: 54 6f 55 6e 69 74 73 20 3d 20 66 75 6e 63 74 69 ToUnits = functi
be90: 6f 6e 20 28 73 65 63 6f 6e 64 73 29 20 7b 0a 09 on (seconds) {..
bea0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 return s
beb0: 65 63 6f 6e 64 73 3b 0a 09 20 20 20 20 7d 3b 0a econds;.. };.
bec0: 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 . /**... * R
bed0: 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65 eturns the value
bee0: 20 6f 66 20 61 20 74 69 63 6b 20 69 6e 20 74 68 of a tick in th
bef0: 65 20 63 75 72 72 65 6e 74 20 74 69 6d 65 20 75 e current time u
bf00: 6e 69 74 73 0a 09 09 20 2a 20 20 40 70 61 72 61 nits... * @para
bf10: 6d 20 7b 54 69 63 6b 73 7d 20 74 69 63 6b 73 0a m {Ticks} ticks.
bf20: 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b .. * @return {
bf30: 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 70 Number}... * @p
bf40: 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 rivate... */..
bf50: 20 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 2e Tone.TimeBase.
bf60: 70 72 6f 74 6f 74 79 70 65 2e 5f 74 69 63 6b 73 prototype._ticks
bf70: 54 6f 55 6e 69 74 73 20 3d 20 66 75 6e 63 74 69 ToUnits = functi
bf80: 6f 6e 20 28 74 69 63 6b 73 29 20 7b 0a 09 20 20 on (ticks) {..
bf90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 69 63 return tic
bfa0: 6b 73 20 2a 20 28 74 68 69 73 2e 5f 62 65 61 74 ks * (this._beat
bfb0: 73 54 6f 55 6e 69 74 73 28 31 29 20 2f 20 54 6f sToUnits(1) / To
bfc0: 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 50 50 51 ne.Transport.PPQ
bfd0: 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
bfe0: 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 6e /**... * Return
bff0: 20 74 68 65 20 74 69 6d 65 20 73 69 67 6e 61 74 the time signat
c000: 75 72 65 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 ure.... * @retu
c010: 72 6e 20 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 rn {Number}...
c020: 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a * @private... *
c030: 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 /.. Tone.Time
c040: 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f Base.prototype._
c050: 74 69 6d 65 53 69 67 6e 61 74 75 72 65 20 3d 20 timeSignature =
c060: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
c070: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f return To
c080: 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 74 69 6d ne.Transport.tim
c090: 65 53 69 67 6e 61 74 75 72 65 3b 0a 09 20 20 20 eSignature;..
c0a0: 20 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f };.. ///////
c0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
c0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
c0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
c0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
c0f0: 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2f 09 45 58 50 ////.. //.EXP
c100: 52 45 53 53 49 4f 4e 53 0a 09 20 20 20 20 2f 2f RESSIONS.. //
c110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
c120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
c130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
c140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
c150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f /////////.. /
c160: 2a 2a 0a 09 09 20 2a 20 20 50 75 73 68 20 61 6e **... * Push an
c170: 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 6e 74 6f expression onto
c180: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 the expression
c190: 6c 69 73 74 0a 09 09 20 2a 20 20 40 70 61 72 61 list... * @para
c1a0: 6d 20 20 7b 54 69 6d 65 7d 20 20 76 61 6c 0a 09 m {Time} val..
c1b0: 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 53 74 . * @param {St
c1c0: 72 69 6e 67 7d 20 20 74 79 70 65 0a 09 09 20 2a ring} type... *
c1d0: 20 20 40 70 61 72 61 6d 20 20 7b 53 74 72 69 6e @param {Strin
c1e0: 67 7d 20 20 75 6e 69 74 73 0a 09 09 20 2a 20 20 g} units... *
c1f0: 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 54 @return {Tone.T
c200: 69 6d 65 42 61 73 65 7d 20 0a 09 09 20 2a 20 20 imeBase} ... *
c210: 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 @private... */..
c220: 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 Tone.TimeBas
c230: 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 70 75 73 e.prototype._pus
c240: 68 45 78 70 72 20 3d 20 66 75 6e 63 74 69 6f 6e hExpr = function
c250: 20 28 76 61 6c 2c 20 6e 61 6d 65 2c 20 75 6e 69 (val, name, uni
c260: 74 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f ts) {.. /
c270: 2f 63 72 65 61 74 65 20 74 68 65 20 65 78 70 72 /create the expr
c280: 65 73 73 69 6f 6e 0a 09 20 20 20 20 20 20 20 20 ession..
c290: 69 66 20 28 21 28 76 61 6c 20 69 6e 73 74 61 6e if (!(val instan
c2a0: 63 65 6f 66 20 54 6f 6e 65 2e 54 69 6d 65 42 61 ceof Tone.TimeBa
c2b0: 73 65 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 se)) {..
c2c0: 20 20 20 20 76 61 6c 20 3d 20 6e 65 77 20 74 68 val = new th
c2d0: 69 73 2e 63 6f 6e 73 74 72 75 63 74 6f 72 28 76 is.constructor(v
c2e0: 61 6c 2c 20 75 6e 69 74 73 29 3b 0a 09 20 20 20 al, units);..
c2f0: 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
c300: 74 68 69 73 2e 5f 65 78 70 72 20 3d 20 74 68 69 this._expr = thi
c310: 73 2e 5f 62 69 6e 61 72 79 45 78 70 72 65 73 73 s._binaryExpress
c320: 69 6f 6e 73 5b 6e 61 6d 65 5d 2e 6d 65 74 68 6f ions[name].metho
c330: 64 2e 62 69 6e 64 28 74 68 69 73 2c 20 74 68 69 d.bind(this, thi
c340: 73 2e 5f 65 78 70 72 2c 20 76 61 6c 2e 5f 65 78 s._expr, val._ex
c350: 70 72 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 pr);.. re
c360: 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 turn this;..
c370: 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
c380: 20 20 41 64 64 20 74 6f 20 74 68 65 20 63 75 72 Add to the cur
c390: 72 65 6e 74 20 76 61 6c 75 65 2e 0a 09 09 20 2a rent value.... *
c3a0: 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d @param {Time}
c3b0: 20 20 76 61 6c 20 20 20 20 54 68 65 20 76 61 6c val The val
c3c0: 75 65 20 74 6f 20 61 64 64 0a 09 09 20 2a 20 20 ue to add... *
c3d0: 40 70 61 72 61 6d 20 20 7b 53 74 72 69 6e 67 3d @param {String=
c3e0: 7d 20 20 75 6e 69 74 73 20 20 4f 70 74 69 6f 6e } units Option
c3f0: 61 6c 20 75 6e 69 74 73 20 74 6f 20 75 73 65 20 al units to use
c400: 77 69 74 68 20 74 68 65 20 76 61 6c 75 65 2e 0a with the value..
c410: 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b .. * @return {
c420: 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 7d 20 20 Tone.TimeBase}
c430: 74 68 69 73 0a 09 09 20 2a 20 20 40 65 78 61 6d this... * @exam
c440: 70 6c 65 0a 09 09 20 2a 20 54 6f 6e 65 2e 54 69 ple... * Tone.Ti
c450: 6d 65 42 61 73 65 28 22 32 6d 22 29 2e 61 64 64 meBase("2m").add
c460: 28 22 31 6d 22 29 3b 20 2f 2f 22 33 6d 22 0a 09 ("1m"); //"3m"..
c470: 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 . */.. Tone.T
c480: 69 6d 65 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 imeBase.prototyp
c490: 65 2e 61 64 64 20 3d 20 66 75 6e 63 74 69 6f 6e e.add = function
c4a0: 20 28 76 61 6c 2c 20 75 6e 69 74 73 29 20 7b 0a (val, units) {.
c4b0: 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
c4c0: 74 68 69 73 2e 5f 70 75 73 68 45 78 70 72 28 76 this._pushExpr(v
c4d0: 61 6c 2c 20 27 2b 27 2c 20 75 6e 69 74 73 29 3b al, '+', units);
c4e0: 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
c4f0: 2a 0a 09 09 20 2a 20 20 53 75 62 74 72 61 63 74 *... * Subtract
c500: 20 74 68 65 20 76 61 6c 75 65 20 66 72 6f 6d 20 the value from
c510: 74 68 65 20 63 75 72 72 65 6e 74 20 74 69 6d 65 the current time
c520: 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 .... * @param
c530: 7b 54 69 6d 65 7d 20 20 76 61 6c 20 20 20 20 54 {Time} val T
c540: 68 65 20 76 61 6c 75 65 20 74 6f 20 73 75 62 74 he value to subt
c550: 72 61 63 74 0a 09 09 20 2a 20 20 40 70 61 72 61 ract... * @para
c560: 6d 20 20 7b 53 74 72 69 6e 67 3d 7d 20 20 75 6e m {String=} un
c570: 69 74 73 20 20 4f 70 74 69 6f 6e 61 6c 20 75 6e its Optional un
c580: 69 74 73 20 74 6f 20 75 73 65 20 77 69 74 68 20 its to use with
c590: 74 68 65 20 76 61 6c 75 65 2e 0a 09 09 20 2a 20 the value.... *
c5a0: 20 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e @return {Tone.
c5b0: 54 69 6d 65 42 61 73 65 7d 20 20 74 68 69 73 0a TimeBase} this.
c5c0: 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
c5d0: 09 20 2a 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 . * Tone.TimeBas
c5e0: 65 28 22 32 6d 22 29 2e 73 75 62 28 22 31 6d 22 e("2m").sub("1m"
c5f0: 29 3b 20 2f 2f 22 31 6d 22 0a 09 09 20 2a 2f 0a ); //"1m"... */.
c600: 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 42 61 . Tone.TimeBa
c610: 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e 73 75 62 se.prototype.sub
c620: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c = function (val
c630: 2c 20 75 6e 69 74 73 29 20 7b 0a 09 20 20 20 20 , units) {..
c640: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
c650: 5f 70 75 73 68 45 78 70 72 28 76 61 6c 2c 20 27 _pushExpr(val, '
c660: 2d 27 2c 20 75 6e 69 74 73 29 3b 0a 09 20 20 20 -', units);..
c670: 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
c680: 2a 20 20 4d 75 6c 74 69 70 6c 79 20 74 68 65 20 * Multiply the
c690: 63 75 72 72 65 6e 74 20 76 61 6c 75 65 20 62 79 current value by
c6a0: 20 74 68 65 20 67 69 76 65 6e 20 74 69 6d 65 2e the given time.
c6b0: 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
c6c0: 54 69 6d 65 7d 20 20 76 61 6c 20 20 20 20 54 68 Time} val Th
c6d0: 65 20 76 61 6c 75 65 20 74 6f 20 6d 75 6c 74 69 e value to multi
c6e0: 70 6c 79 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ply... * @param
c6f0: 20 20 7b 53 74 72 69 6e 67 3d 7d 20 20 75 6e 69 {String=} uni
c700: 74 73 20 20 4f 70 74 69 6f 6e 61 6c 20 75 6e 69 ts Optional uni
c710: 74 73 20 74 6f 20 75 73 65 20 77 69 74 68 20 74 ts to use with t
c720: 68 65 20 76 61 6c 75 65 2e 0a 09 09 20 2a 20 20 he value.... *
c730: 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 54 @return {Tone.T
c740: 69 6d 65 42 61 73 65 7d 20 20 74 68 69 73 0a 09 imeBase} this..
c750: 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 . * @example...
c760: 20 2a 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 * Tone.TimeBase
c770: 28 22 32 6d 22 29 2e 6d 75 6c 74 28 22 32 22 29 ("2m").mult("2")
c780: 3b 20 2f 2f 22 34 6d 22 0a 09 09 20 2a 2f 0a 09 ; //"4m"... */..
c790: 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 Tone.TimeBas
c7a0: 65 2e 70 72 6f 74 6f 74 79 70 65 2e 6d 75 6c 74 e.prototype.mult
c7b0: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c = function (val
c7c0: 2c 20 75 6e 69 74 73 29 20 7b 0a 09 20 20 20 20 , units) {..
c7d0: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
c7e0: 5f 70 75 73 68 45 78 70 72 28 76 61 6c 2c 20 27 _pushExpr(val, '
c7f0: 2a 27 2c 20 75 6e 69 74 73 29 3b 0a 09 20 20 20 *', units);..
c800: 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
c810: 2a 20 20 44 69 76 69 64 65 20 74 68 65 20 63 75 * Divide the cu
c820: 72 72 65 6e 74 20 76 61 6c 75 65 20 62 79 20 74 rrent value by t
c830: 68 65 20 67 69 76 65 6e 20 74 69 6d 65 2e 0a 09 he given time...
c840: 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 . * @param {Ti
c850: 6d 65 7d 20 20 76 61 6c 20 20 20 20 54 68 65 20 me} val The
c860: 76 61 6c 75 65 20 74 6f 20 64 69 76 69 64 65 20 value to divide
c870: 62 79 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 by... * @param
c880: 20 7b 53 74 72 69 6e 67 3d 7d 20 20 75 6e 69 74 {String=} unit
c890: 73 20 20 4f 70 74 69 6f 6e 61 6c 20 75 6e 69 74 s Optional unit
c8a0: 73 20 74 6f 20 75 73 65 20 77 69 74 68 20 74 68 s to use with th
c8b0: 65 20 76 61 6c 75 65 2e 0a 09 09 20 2a 20 20 40 e value.... * @
c8c0: 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 54 69 return {Tone.Ti
c8d0: 6d 65 42 61 73 65 7d 20 20 74 68 69 73 0a 09 09 meBase} this...
c8e0: 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 * @example...
c8f0: 2a 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 28 * Tone.TimeBase(
c900: 22 32 6d 22 29 2e 64 69 76 28 32 29 3b 20 2f 2f "2m").div(2); //
c910: 22 31 6d 22 0a 09 09 20 2a 2f 0a 09 20 20 20 20 "1m"... */..
c920: 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 2e 70 72 Tone.TimeBase.pr
c930: 6f 74 6f 74 79 70 65 2e 64 69 76 20 3d 20 66 75 ototype.div = fu
c940: 6e 63 74 69 6f 6e 20 28 76 61 6c 2c 20 75 6e 69 nction (val, uni
c950: 74 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 ts) {.. r
c960: 65 74 75 72 6e 20 74 68 69 73 2e 5f 70 75 73 68 eturn this._push
c970: 45 78 70 72 28 76 61 6c 2c 20 27 2f 27 2c 20 75 Expr(val, '/', u
c980: 6e 69 74 73 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 nits);.. };..
c990: 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 45 76 /**... * Ev
c9a0: 61 6c 75 61 74 65 20 74 68 65 20 74 69 6d 65 20 aluate the time
c9b0: 76 61 6c 75 65 2e 20 52 65 74 75 72 6e 73 20 74 value. Returns t
c9c0: 68 65 20 74 69 6d 65 0a 09 09 20 2a 20 20 69 6e he time... * in
c9d0: 20 73 65 63 6f 6e 64 73 2e 0a 09 09 20 2a 20 20 seconds.... *
c9e0: 40 72 65 74 75 72 6e 20 20 7b 53 65 63 6f 6e 64 @return {Second
c9f0: 73 7d 20 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 s} ... */.. T
ca00: 6f 6e 65 2e 54 69 6d 65 42 61 73 65 2e 70 72 6f one.TimeBase.pro
ca10: 74 6f 74 79 70 65 2e 65 76 61 6c 20 3d 20 66 75 totype.eval = fu
ca20: 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
ca30: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
ca40: 2e 5f 65 78 70 72 28 29 3b 0a 09 20 20 20 20 7d ._expr();.. }
ca50: 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
ca60: 20 43 6c 65 61 6e 20 75 70 0a 09 09 20 2a 20 20 Clean up... *
ca70: 40 72 65 74 75 72 6e 20 7b 54 6f 6e 65 2e 54 69 @return {Tone.Ti
ca80: 6d 65 42 61 73 65 7d 20 74 68 69 73 0a 09 09 20 meBase} this...
ca90: 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d */.. Tone.Tim
caa0: 65 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e eBase.prototype.
cab0: 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 dispose = functi
cac0: 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
cad0: 20 74 68 69 73 2e 5f 65 78 70 72 20 3d 20 6e 75 this._expr = nu
cae0: 6c 6c 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 ll;.. };..
caf0: 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 54 69 6d return Tone.Tim
cb00: 65 42 61 73 65 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 eBase;..});..Mod
cb10: 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f ule(function (To
cb20: 6e 65 29 20 7b 0a 09 20 20 20 20 2f 2a 2a 0a 09 ne) {.. /**..
cb30: 09 20 2a 20 20 40 63 6c 61 73 73 20 54 6f 6e 65 . * @class Tone
cb40: 2e 54 69 6d 65 20 69 73 20 61 20 70 72 69 6d 69 .Time is a primi
cb50: 74 69 76 65 20 74 79 70 65 20 66 6f 72 20 65 6e tive type for en
cb60: 63 6f 64 69 6e 67 20 54 69 6d 65 20 76 61 6c 75 coding Time valu
cb70: 65 73 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 20 es. ... *
cb80: 20 20 45 76 65 6e 74 75 61 6c 6c 79 20 61 6c 6c Eventually all
cb90: 20 74 69 6d 65 20 76 61 6c 75 65 73 20 61 72 65 time values are
cba0: 20 65 76 61 6c 75 61 74 65 64 20 74 6f 20 73 65 evaluated to se
cbb0: 63 6f 6e 64 73 0a 09 09 20 2a 20 20 20 20 20 20 conds... *
cbc0: 20 20 20 75 73 69 6e 67 20 74 68 65 20 60 65 76 using the `ev
cbd0: 61 6c 60 20 6d 65 74 68 6f 64 2e 20 54 6f 6e 65 al` method. Tone
cbe0: 2e 54 69 6d 65 20 63 61 6e 20 62 65 20 63 6f 6e .Time can be con
cbf0: 73 74 72 75 63 74 65 64 0a 09 09 20 2a 20 20 20 structed... *
cc00: 20 20 20 20 20 20 77 69 74 68 20 6f 72 20 77 69 with or wi
cc10: 74 68 6f 75 74 20 74 68 65 20 60 6e 65 77 60 20 thout the `new`
cc20: 6b 65 79 77 6f 72 64 2e 20 54 6f 6e 65 2e 54 69 keyword. Tone.Ti
cc30: 6d 65 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 me can be passed
cc40: 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 69 6e ... * in
cc50: 74 6f 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 to the parameter
cc60: 20 6f 66 20 61 6e 79 20 6d 65 74 68 6f 64 20 77 of any method w
cc70: 68 69 63 68 20 74 61 6b 65 73 20 74 69 6d 65 20 hich takes time
cc80: 61 73 20 61 6e 20 61 72 67 75 6d 65 6e 74 2e 20 as an argument.
cc90: 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 ... * @construc
cca0: 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 74 65 6e tor... * @exten
ccb0: 64 73 20 7b 54 6f 6e 65 2e 54 69 6d 65 42 61 73 ds {Tone.TimeBas
ccc0: 65 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 e}... * @param
ccd0: 20 7b 53 74 72 69 6e 67 7c 4e 75 6d 62 65 72 7d {String|Number}
cce0: 20 20 76 61 6c 20 20 20 20 54 68 65 20 74 69 6d val The tim
ccf0: 65 20 76 61 6c 75 65 2e 0a 09 09 20 2a 20 20 40 e value.... * @
cd00: 70 61 72 61 6d 20 20 7b 53 74 72 69 6e 67 3d 7d param {String=}
cd10: 20 20 75 6e 69 74 73 20 20 54 68 65 20 75 6e 69 units The uni
cd20: 74 73 20 6f 66 20 74 68 65 20 76 61 6c 75 65 2e ts of the value.
cd30: 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
cd40: 09 09 20 2a 20 76 61 72 20 74 20 3d 20 54 6f 6e .. * var t = Ton
cd50: 65 2e 54 69 6d 65 28 22 34 6e 22 29 3b 2f 2f 65 e.Time("4n");//e
cd60: 6e 63 6f 64 65 73 20 61 20 71 75 61 72 74 65 72 ncodes a quarter
cd70: 20 6e 6f 74 65 0a 09 09 20 2a 20 74 2e 6d 75 6c note... * t.mul
cd80: 74 28 34 29 3b 20 2f 2f 20 6d 75 6c 74 69 70 6c t(4); // multipl
cd90: 79 20 74 68 61 74 20 76 61 6c 75 65 20 62 79 20 y that value by
cda0: 34 0a 09 09 20 2a 20 74 2e 74 6f 4e 6f 74 61 74 4... * t.toNotat
cdb0: 69 6f 6e 28 29 3b 20 2f 2f 72 65 74 75 72 6e 73 ion(); //returns
cdc0: 20 22 31 6d 22 0a 09 09 20 2a 2f 0a 09 20 20 20 "1m"... */..
cdd0: 20 54 6f 6e 65 2e 54 69 6d 65 20 3d 20 66 75 6e Tone.Time = fun
cde0: 63 74 69 6f 6e 20 28 76 61 6c 2c 20 75 6e 69 74 ction (val, unit
cdf0: 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 s) {.. if
ce00: 20 28 74 68 69 73 20 69 6e 73 74 61 6e 63 65 6f (this instanceo
ce10: 66 20 54 6f 6e 65 2e 54 69 6d 65 29 20 7b 0a 09 f Tone.Time) {..
ce20: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 2a 0a /**.
ce30: 09 09 09 09 20 2a 20 20 49 66 20 74 68 65 20 63 .... * If the c
ce40: 75 72 72 65 6e 74 20 63 6c 6f 63 6b 20 74 69 6d urrent clock tim
ce50: 65 20 73 68 6f 75 6c 64 0a 09 09 09 09 20 2a 20 e should..... *
ce60: 20 62 65 20 61 64 64 65 64 20 74 6f 20 74 68 65 be added to the
ce70: 20 6f 75 74 70 75 74 0a 09 09 09 09 20 2a 20 20 output..... *
ce80: 40 74 79 70 65 20 20 7b 42 6f 6f 6c 65 61 6e 7d @type {Boolean}
ce90: 0a 09 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 ..... * @privat
cea0: 65 0a 09 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 e..... */..
ceb0: 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 6c 75 this._plu
cec0: 73 4e 6f 77 20 3d 20 66 61 6c 73 65 3b 0a 09 20 sNow = false;..
ced0: 20 20 20 20 20 20 20 20 20 20 20 54 6f 6e 65 2e Tone.
cee0: 54 69 6d 65 42 61 73 65 2e 63 61 6c 6c 28 74 68 TimeBase.call(th
cef0: 69 73 2c 20 76 61 6c 2c 20 75 6e 69 74 73 29 3b is, val, units);
cf00: 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
cf10: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
cf20: 72 65 74 75 72 6e 20 6e 65 77 20 54 6f 6e 65 2e return new Tone.
cf30: 54 69 6d 65 28 76 61 6c 2c 20 75 6e 69 74 73 29 Time(val, units)
cf40: 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
cf50: 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 };.. Tone.e
cf60: 78 74 65 6e 64 28 54 6f 6e 65 2e 54 69 6d 65 2c xtend(Tone.Time,
cf70: 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 29 3b Tone.TimeBase);
cf80: 0a 09 20 20 20 20 2f 2f 63 6c 6f 6e 65 20 74 68 .. //clone th
cf90: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 73 6f e expressions so
cfa0: 20 74 68 61 74 20 0a 09 20 20 20 20 2f 2f 77 65 that .. //we
cfb0: 20 63 61 6e 20 61 64 64 20 6d 6f 72 65 20 77 69 can add more wi
cfc0: 74 68 6f 75 74 20 6d 6f 64 69 66 79 69 6e 67 20 thout modifying
cfd0: 74 68 65 20 6f 72 69 67 69 6e 61 6c 0a 09 20 20 the original..
cfe0: 20 20 54 6f 6e 65 2e 54 69 6d 65 2e 70 72 6f 74 Tone.Time.prot
cff0: 6f 74 79 70 65 2e 5f 75 6e 61 72 79 45 78 70 72 otype._unaryExpr
d000: 65 73 73 69 6f 6e 73 20 3d 20 4f 62 6a 65 63 74 essions = Object
d010: 2e 63 72 65 61 74 65 28 54 6f 6e 65 2e 54 69 6d .create(Tone.Tim
d020: 65 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e eBase.prototype.
d030: 5f 75 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e _unaryExpression
d040: 73 29 3b 0a 09 20 20 20 20 2f 2a 0a 09 09 20 2a s);.. /*... *
d050: 20 20 41 64 64 73 20 61 6e 20 61 64 64 69 74 69 Adds an additi
d060: 6f 6e 61 6c 20 75 6e 61 72 79 20 65 78 70 72 65 onal unary expre
d070: 73 73 69 6f 6e 0a 09 09 20 2a 20 20 77 68 69 63 ssion... * whic
d080: 68 20 71 75 61 6e 74 69 7a 65 73 20 76 61 6c 75 h quantizes valu
d090: 65 73 20 74 6f 20 74 68 65 20 6e 65 78 74 20 73 es to the next s
d0a0: 75 62 64 69 76 69 73 69 6f 6e 0a 09 09 20 2a 20 ubdivision... *
d0b0: 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a @type {Object}.
d0c0: 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
d0d0: 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 . */.. Tone.T
d0e0: 69 6d 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 75 ime.prototype._u
d0f0: 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 73 2e naryExpressions.
d100: 71 75 61 6e 74 69 7a 65 20 3d 20 7b 0a 09 20 20 quantize = {..
d110: 20 20 20 20 20 20 72 65 67 65 78 70 3a 20 2f 5e regexp: /^
d120: 40 2f 2c 0a 09 20 20 20 20 20 20 20 20 6d 65 74 @/,.. met
d130: 68 6f 64 3a 20 66 75 6e 63 74 69 6f 6e 20 28 72 hod: function (r
d140: 68 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 h) {..
d150: 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 54 72 return Tone.Tr
d160: 61 6e 73 70 6f 72 74 2e 6e 65 78 74 53 75 62 64 ansport.nextSubd
d170: 69 76 69 73 69 6f 6e 28 72 68 28 29 29 3b 0a 09 ivision(rh());..
d180: 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
d190: 3b 0a 09 20 20 20 20 2f 2a 0a 09 09 20 2a 20 20 ;.. /*... *
d1a0: 41 64 64 73 20 61 6e 20 61 64 64 69 74 69 6f 6e Adds an addition
d1b0: 61 6c 20 75 6e 61 72 79 20 65 78 70 72 65 73 73 al unary express
d1c0: 69 6f 6e 0a 09 09 20 2a 20 20 77 68 69 63 68 20 ion... * which
d1d0: 61 64 64 73 20 74 68 65 20 63 75 72 72 65 6e 74 adds the current
d1e0: 20 63 6c 6f 63 6b 20 74 69 6d 65 2e 0a 09 09 20 clock time....
d1f0: 2a 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 * @type {Object
d200: 7d 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 }... * @private
d210: 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
d220: 2e 54 69 6d 65 2e 70 72 6f 74 6f 74 79 70 65 2e .Time.prototype.
d230: 5f 75 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e _unaryExpression
d240: 73 2e 6e 6f 77 20 3d 20 7b 0a 09 20 20 20 20 20 s.now = {..
d250: 20 20 20 72 65 67 65 78 70 3a 20 2f 5e 5c 2b 2f regexp: /^\+/
d260: 2c 0a 09 20 20 20 20 20 20 20 20 6d 65 74 68 6f ,.. metho
d270: 64 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6c 68 29 d: function (lh)
d280: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
d290: 74 68 69 73 2e 5f 70 6c 75 73 4e 6f 77 20 3d 20 this._plusNow =
d2a0: 74 72 75 65 3b 0a 09 20 20 20 20 20 20 20 20 20 true;..
d2b0: 20 20 20 72 65 74 75 72 6e 20 6c 68 28 29 3b 0a return lh();.
d2c0: 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
d2d0: 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
d2e0: 20 20 51 75 61 6e 74 69 7a 65 20 74 68 65 20 74 Quantize the t
d2f0: 69 6d 65 20 62 79 20 74 68 65 20 67 69 76 65 6e ime by the given
d300: 20 73 75 62 64 69 76 69 73 69 6f 6e 2e 20 4f 70 subdivision. Op
d310: 74 69 6f 6e 61 6c 6c 79 20 61 64 64 20 61 0a 09 tionally add a..
d320: 09 20 2a 20 20 70 65 72 63 65 6e 74 61 67 65 20 . * percentage
d330: 77 68 69 63 68 20 77 69 6c 6c 20 6d 6f 76 65 20 which will move
d340: 74 68 65 20 74 69 6d 65 20 76 61 6c 75 65 20 74 the time value t
d350: 6f 77 61 72 64 73 20 74 68 65 20 69 64 65 61 6c owards the ideal
d360: 0a 09 09 20 2a 20 20 71 75 61 6e 74 69 7a 65 64 ... * quantized
d370: 20 76 61 6c 75 65 20 62 79 20 74 68 61 74 20 70 value by that p
d380: 65 72 63 65 6e 74 61 67 65 2e 20 0a 09 09 20 2a ercentage. ... *
d390: 20 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 @param {Numbe
d3a0: 72 7c 54 69 6d 65 7d 20 20 76 61 6c 20 20 20 20 r|Time} val
d3b0: 54 68 65 20 73 75 62 64 69 76 69 73 69 6f 6e 20 The subdivision
d3c0: 74 6f 20 71 75 61 6e 74 69 7a 65 20 74 6f 0a 09 to quantize to..
d3d0: 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 4e 6f . * @param {No
d3e0: 72 6d 61 6c 52 61 6e 67 65 7d 20 20 5b 70 65 72 rmalRange} [per
d3f0: 63 65 6e 74 3d 31 5d 20 20 4d 6f 76 65 20 74 68 cent=1] Move th
d400: 65 20 74 69 6d 65 20 76 61 6c 75 65 0a 09 09 20 e time value...
d410: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
d420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d430: 20 20 20 20 74 6f 77 61 72 64 73 20 74 68 65 20 towards the
d440: 71 75 61 6e 74 69 7a 65 64 20 76 61 6c 75 65 20 quantized value
d450: 62 79 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 by... *
d460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
d470: 20 20 20 20 20 20 20 20 20 20 61 20 70 65 72 63 a perc
d480: 65 6e 74 61 67 65 2e 0a 09 09 20 2a 20 20 40 72 entage.... * @r
d490: 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 54 69 6d eturn {Tone.Tim
d4a0: 65 7d 20 20 74 68 69 73 0a 09 09 20 2a 20 20 40 e} this... * @
d4b0: 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 54 6f 6e example... * Ton
d4c0: 65 2e 54 69 6d 65 28 32 31 29 2e 71 75 61 6e 74 e.Time(21).quant
d4d0: 69 7a 65 28 32 29 2e 65 76 61 6c 28 29 20 2f 2f ize(2).eval() //
d4e0: 72 65 74 75 72 6e 73 20 32 32 0a 09 09 20 2a 20 returns 22... *
d4f0: 54 6f 6e 65 2e 54 69 6d 65 28 30 2e 36 29 2e 71 Tone.Time(0.6).q
d500: 75 61 6e 74 69 7a 65 28 22 34 6e 22 2c 20 30 2e uantize("4n", 0.
d510: 35 29 2e 65 76 61 6c 28 29 20 2f 2f 72 65 74 75 5).eval() //retu
d520: 72 6e 73 20 30 2e 35 35 0a 09 09 20 2a 2f 0a 09 rns 0.55... */..
d530: 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 2e 70 72 Tone.Time.pr
d540: 6f 74 6f 74 79 70 65 2e 71 75 61 6e 74 69 7a 65 ototype.quantize
d550: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 73 75 62 = function (sub
d560: 64 69 76 2c 20 70 65 72 63 65 6e 74 29 20 7b 0a div, percent) {.
d570: 09 20 20 20 20 20 20 20 20 70 65 72 63 65 6e 74 . percent
d580: 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 = this.defaultA
d590: 72 67 28 70 65 72 63 65 6e 74 2c 20 31 29 3b 0a rg(percent, 1);.
d5a0: 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 65 . this._e
d5b0: 78 70 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 xpr = function (
d5c0: 65 78 70 72 2c 20 73 75 62 64 69 76 69 73 69 6f expr, subdivisio
d5d0: 6e 2c 20 70 65 72 63 65 6e 74 29 20 7b 0a 09 20 n, percent) {..
d5e0: 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20 expr
d5f0: 3d 20 65 78 70 72 28 29 3b 0a 09 20 20 20 20 20 = expr();..
d600: 20 20 20 20 20 20 20 73 75 62 64 69 76 69 73 69 subdivisi
d610: 6f 6e 20 3d 20 73 75 62 64 69 76 69 73 69 6f 6e on = subdivision
d620: 2e 74 6f 53 65 63 6f 6e 64 73 28 29 3b 0a 09 20 .toSeconds();..
d630: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6d var m
d640: 75 6c 74 69 70 6c 65 20 3d 20 4d 61 74 68 2e 72 ultiple = Math.r
d650: 6f 75 6e 64 28 65 78 70 72 20 2f 20 73 75 62 64 ound(expr / subd
d660: 69 76 69 73 69 6f 6e 29 3b 0a 09 20 20 20 20 20 ivision);..
d670: 20 20 20 20 20 20 20 76 61 72 20 69 64 65 61 6c var ideal
d680: 20 3d 20 6d 75 6c 74 69 70 6c 65 20 2a 20 73 75 = multiple * su
d690: 62 64 69 76 69 73 69 6f 6e 3b 0a 09 20 20 20 20 bdivision;..
d6a0: 20 20 20 20 20 20 20 20 76 61 72 20 64 69 66 66 var diff
d6b0: 20 3d 20 69 64 65 61 6c 20 2d 20 65 78 70 72 3b = ideal - expr;
d6c0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
d6d0: 74 75 72 6e 20 65 78 70 72 20 2b 20 64 69 66 66 turn expr + diff
d6e0: 20 2a 20 70 65 72 63 65 6e 74 3b 0a 09 20 20 20 * percent;..
d6f0: 20 20 20 20 20 7d 2e 62 69 6e 64 28 74 68 69 73 }.bind(this
d700: 2c 20 74 68 69 73 2e 5f 65 78 70 72 2c 20 6e 65 , this._expr, ne
d710: 77 20 74 68 69 73 2e 63 6f 6e 73 74 72 75 63 74 w this.construct
d720: 6f 72 28 73 75 62 64 69 76 29 2c 20 70 65 72 63 or(subdiv), perc
d730: 65 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 20 72 ent);.. r
d740: 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 eturn this;..
d750: 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
d760: 2a 20 20 41 64 64 73 20 74 68 65 20 63 6c 6f 63 * Adds the cloc
d770: 6b 20 74 69 6d 65 20 74 6f 20 74 68 65 20 74 69 k time to the ti
d780: 6d 65 20 65 78 70 72 65 73 73 69 6f 6e 20 61 74 me expression at
d790: 20 74 68 65 20 0a 09 09 20 2a 20 20 6d 6f 6d 65 the ... * mome
d7a0: 6e 74 20 6f 66 20 65 76 61 6c 75 61 74 69 6f 6e nt of evaluation
d7b0: 2e 20 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e . ... * @return
d7c0: 20 20 7b 54 6f 6e 65 2e 54 69 6d 65 7d 20 20 74 {Tone.Time} t
d7d0: 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
d7e0: 6f 6e 65 2e 54 69 6d 65 2e 70 72 6f 74 6f 74 79 one.Time.prototy
d7f0: 70 65 2e 61 64 64 4e 6f 77 20 3d 20 66 75 6e 63 pe.addNow = func
d800: 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
d810: 20 20 20 74 68 69 73 2e 5f 70 6c 75 73 4e 6f 77 this._plusNow
d820: 20 3d 20 74 72 75 65 3b 0a 09 20 20 20 20 20 20 = true;..
d830: 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
d840: 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
d850: 09 09 20 2a 20 20 40 6f 76 65 72 72 69 64 65 0a .. * @override.
d860: 09 09 20 2a 20 20 4f 76 65 72 72 69 64 65 20 74 .. * Override t
d870: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 he default value
d880: 20 72 65 74 75 72 6e 20 77 68 65 6e 20 6e 6f 20 return when no
d890: 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 70 61 arguments are pa
d8a0: 73 73 65 64 20 69 6e 2e 0a 09 09 20 2a 20 20 54 ssed in.... * T
d8b0: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 he default value
d8c0: 20 69 73 20 27 6e 6f 77 27 0a 09 09 20 2a 20 20 is 'now'... *
d8d0: 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 @private... */..
d8e0: 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 2e 70 72 Tone.Time.pr
d8f0: 6f 74 6f 74 79 70 65 2e 5f 64 65 66 61 75 6c 74 ototype._default
d900: 45 78 70 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 Expr = function
d910: 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 () {.. th
d920: 69 73 2e 5f 70 6c 75 73 4e 6f 77 20 3d 20 74 72 is._plusNow = tr
d930: 75 65 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ue;.. ret
d940: 75 72 6e 20 74 68 69 73 2e 5f 6e 6f 4f 70 3b 0a urn this._noOp;.
d950: 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
d960: 0a 09 09 20 2a 20 20 43 6f 70 69 65 73 20 74 68 ... * Copies th
d970: 65 20 76 61 6c 75 65 20 6f 66 20 74 69 6d 65 20 e value of time
d980: 74 6f 20 74 68 69 73 20 54 69 6d 65 0a 09 09 20 to this Time...
d990: 2a 20 20 40 70 61 72 61 6d 20 7b 54 6f 6e 65 2e * @param {Tone.
d9a0: 54 69 6d 65 7d 20 74 69 6d 65 0a 09 09 20 2a 20 Time} time... *
d9b0: 20 40 72 65 74 75 72 6e 20 20 7b 54 69 6d 65 7d @return {Time}
d9c0: 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
d9d0: 2e 54 69 6d 65 2e 70 72 6f 74 6f 74 79 70 65 2e .Time.prototype.
d9e0: 63 6f 70 79 20 3d 20 66 75 6e 63 74 69 6f 6e 20 copy = function
d9f0: 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 (time) {..
da00: 20 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 2e Tone.TimeBase.
da10: 70 72 6f 74 6f 74 79 70 65 2e 63 6f 70 79 2e 63 prototype.copy.c
da20: 61 6c 6c 28 74 68 69 73 2c 20 74 69 6d 65 29 3b all(this, time);
da30: 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
da40: 70 6c 75 73 4e 6f 77 20 3d 20 74 69 6d 65 2e 5f plusNow = time._
da50: 70 6c 75 73 4e 6f 77 3b 0a 09 20 20 20 20 20 20 plusNow;..
da60: 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
da70: 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f 43 4f };.. //CO
da80: 4e 56 45 52 53 49 4f 4e 53 2f 2f 2f 2f 2f 2f 2f NVERSIONS///////
da90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
daa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
dab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
dac0: 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2a 2a ///////.. /**
dad0: 0a 09 09 20 2a 20 20 43 6f 6e 76 65 72 74 20 61 ... * Convert a
dae0: 20 54 69 6d 65 20 74 6f 20 4e 6f 74 61 74 69 6f Time to Notatio
daf0: 6e 2e 20 56 61 6c 75 65 73 20 77 69 6c 6c 20 62 n. Values will b
db00: 65 20 74 68 72 65 73 68 6f 6c 64 65 64 20 74 6f e thresholded to
db10: 20 74 68 65 20 6e 65 61 72 65 73 74 20 31 32 38 the nearest 128
db20: 74 68 20 6e 6f 74 65 2e 20 0a 09 09 20 2a 20 20 th note. ... *
db30: 40 72 65 74 75 72 6e 20 7b 4e 6f 74 61 74 69 6f @return {Notatio
db40: 6e 7d 20 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 n} ... * @examp
db50: 6c 65 0a 09 09 20 2a 20 2f 2f 69 66 20 74 68 65 le... * //if the
db60: 20 54 72 61 6e 73 70 6f 72 74 20 69 73 20 61 74 Transport is at
db70: 20 31 32 30 62 70 6d 3a 0a 09 09 20 2a 20 54 6f 120bpm:... * To
db80: 6e 65 2e 54 69 6d 65 28 32 29 2e 74 6f 4e 6f 74 ne.Time(2).toNot
db90: 61 74 69 6f 6e 28 29 3b 2f 2f 72 65 74 75 72 6e ation();//return
dba0: 73 20 22 31 6d 22 0a 09 09 20 2a 2f 0a 09 20 20 s "1m"... */..
dbb0: 20 20 54 6f 6e 65 2e 54 69 6d 65 2e 70 72 6f 74 Tone.Time.prot
dbc0: 6f 74 79 70 65 2e 74 6f 4e 6f 74 61 74 69 6f 6e otype.toNotation
dbd0: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
dbe0: 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 74 69 .. var ti
dbf0: 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f me = this.toSeco
dc00: 6e 64 73 28 29 3b 0a 09 20 20 20 20 20 20 20 20 nds();..
dc10: 76 61 72 20 74 65 73 74 4e 6f 74 61 74 69 6f 6e var testNotation
dc20: 73 20 3d 20 5b 0a 09 20 20 20 20 20 20 20 20 20 s = [..
dc30: 20 20 20 27 31 6d 27 2c 0a 09 20 20 20 20 20 20 '1m',..
dc40: 20 20 20 20 20 20 27 32 6e 27 2c 0a 09 20 20 20 '2n',..
dc50: 20 20 20 20 20 20 20 20 20 27 34 6e 27 2c 0a 09 '4n',..
dc60: 20 20 20 20 20 20 20 20 20 20 20 20 27 38 6e 27 '8n'
dc70: 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
dc80: 31 36 6e 27 2c 0a 09 20 20 20 20 20 20 20 20 20 16n',..
dc90: 20 20 20 27 33 32 6e 27 2c 0a 09 20 20 20 20 20 '32n',..
dca0: 20 20 20 20 20 20 20 27 36 34 6e 27 2c 0a 09 20 '64n',..
dcb0: 20 20 20 20 20 20 20 20 20 20 20 27 31 32 38 6e '128n
dcc0: 27 0a 09 20 20 20 20 20 20 20 20 5d 3b 0a 09 20 '.. ];..
dcd0: 20 20 20 20 20 20 20 76 61 72 20 72 65 74 4e 6f var retNo
dce0: 74 61 74 69 6f 6e 20 3d 20 74 68 69 73 2e 5f 74 tation = this._t
dcf0: 6f 4e 6f 74 61 74 69 6f 6e 48 65 6c 70 65 72 28 oNotationHelper(
dd00: 74 69 6d 65 2c 20 74 65 73 74 4e 6f 74 61 74 69 time, testNotati
dd10: 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f ons);.. /
dd20: 2f 74 72 79 20 74 68 65 20 73 61 6d 65 20 74 68 /try the same th
dd30: 69 6e 67 20 62 75 74 20 77 69 74 68 20 74 72 69 ing but with tri
dd40: 70 65 6c 65 74 73 0a 09 20 20 20 20 20 20 20 20 pelets..
dd50: 76 61 72 20 74 65 73 74 54 72 69 70 6c 65 74 4e var testTripletN
dd60: 6f 74 61 74 69 6f 6e 73 20 3d 20 5b 0a 09 20 20 otations = [..
dd70: 20 20 20 20 20 20 20 20 20 20 27 31 6d 27 2c 0a '1m',.
dd80: 09 20 20 20 20 20 20 20 20 20 20 20 20 27 32 6e . '2n
dd90: 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
dda0: 27 32 74 27 2c 0a 09 20 20 20 20 20 20 20 20 20 '2t',..
ddb0: 20 20 20 27 34 6e 27 2c 0a 09 20 20 20 20 20 20 '4n',..
ddc0: 20 20 20 20 20 20 27 34 74 27 2c 0a 09 20 20 20 '4t',..
ddd0: 20 20 20 20 20 20 20 20 20 27 38 6e 27 2c 0a 09 '8n',..
dde0: 20 20 20 20 20 20 20 20 20 20 20 20 27 38 74 27 '8t'
ddf0: 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
de00: 31 36 6e 27 2c 0a 09 20 20 20 20 20 20 20 20 20 16n',..
de10: 20 20 20 27 31 36 74 27 2c 0a 09 20 20 20 20 20 '16t',..
de20: 20 20 20 20 20 20 20 27 33 32 6e 27 2c 0a 09 20 '32n',..
de30: 20 20 20 20 20 20 20 20 20 20 20 27 33 32 74 27 '32t'
de40: 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
de50: 36 34 6e 27 2c 0a 09 20 20 20 20 20 20 20 20 20 64n',..
de60: 20 20 20 27 36 34 74 27 2c 0a 09 20 20 20 20 20 '64t',..
de70: 20 20 20 20 20 20 20 27 31 32 38 6e 27 0a 09 20 '128n'..
de80: 20 20 20 20 20 20 20 5d 3b 0a 09 20 20 20 20 20 ];..
de90: 20 20 20 76 61 72 20 72 65 74 54 72 69 70 6c 65 var retTriple
dea0: 74 4e 6f 74 61 74 69 6f 6e 20 3d 20 74 68 69 73 tNotation = this
deb0: 2e 5f 74 6f 4e 6f 74 61 74 69 6f 6e 48 65 6c 70 ._toNotationHelp
dec0: 65 72 28 74 69 6d 65 2c 20 74 65 73 74 54 72 69 er(time, testTri
ded0: 70 6c 65 74 4e 6f 74 61 74 69 6f 6e 73 29 3b 0a pletNotations);.
dee0: 09 20 20 20 20 20 20 20 20 2f 2f 63 68 6f 6f 73 . //choos
def0: 65 20 74 68 65 20 73 69 6d 70 6c 65 72 20 65 78 e the simpler ex
df00: 70 72 65 73 73 69 6f 6e 20 6f 66 20 74 68 65 20 pression of the
df10: 74 77 6f 0a 09 20 20 20 20 20 20 20 20 69 66 20 two.. if
df20: 28 72 65 74 54 72 69 70 6c 65 74 4e 6f 74 61 74 (retTripletNotat
df30: 69 6f 6e 2e 73 70 6c 69 74 28 27 2b 27 29 2e 6c ion.split('+').l
df40: 65 6e 67 74 68 20 3c 20 72 65 74 4e 6f 74 61 74 ength < retNotat
df50: 69 6f 6e 2e 73 70 6c 69 74 28 27 2b 27 29 2e 6c ion.split('+').l
df60: 65 6e 67 74 68 29 20 7b 0a 09 20 20 20 20 20 20 ength) {..
df70: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 return ret
df80: 54 72 69 70 6c 65 74 4e 6f 74 61 74 69 6f 6e 3b TripletNotation;
df90: 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
dfa0: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
dfb0: 72 65 74 75 72 6e 20 72 65 74 4e 6f 74 61 74 69 return retNotati
dfc0: 6f 6e 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 on;.. }..
dfd0: 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
dfe0: 09 09 20 2a 20 20 48 65 6c 70 65 72 20 6d 65 74 .. * Helper met
dff0: 68 6f 64 20 66 6f 72 20 54 6f 6e 65 2e 74 6f 4e hod for Tone.toN
e000: 6f 74 61 74 69 6f 6e 0a 09 09 20 2a 20 20 40 70 otation... * @p
e010: 61 72 61 6d 20 7b 4e 75 6d 62 65 72 7d 20 75 6e aram {Number} un
e020: 69 74 73 20 0a 09 09 20 2a 20 20 40 70 61 72 61 its ... * @para
e030: 6d 20 7b 41 72 72 61 79 7d 20 74 65 73 74 4e 6f m {Array} testNo
e040: 74 61 74 69 6f 6e 73 0a 09 09 20 2a 20 20 40 72 tations... * @r
e050: 65 74 75 72 6e 20 7b 53 74 72 69 6e 67 7d 0a 09 eturn {String}..
e060: 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
e070: 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 */.. Tone.Ti
e080: 6d 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 74 6f me.prototype._to
e090: 4e 6f 74 61 74 69 6f 6e 48 65 6c 70 65 72 20 3d NotationHelper =
e0a0: 20 66 75 6e 63 74 69 6f 6e 20 28 75 6e 69 74 73 function (units
e0b0: 2c 20 74 65 73 74 4e 6f 74 61 74 69 6f 6e 73 29 , testNotations)
e0c0: 20 7b 0a 09 20 20 20 20 20 20 20 20 2f 2f 74 68 {.. //th
e0d0: 65 20 74 68 72 65 73 68 6f 6c 64 20 69 73 20 74 e threshold is t
e0e0: 68 65 20 6c 61 73 74 20 76 61 6c 75 65 20 69 6e he last value in
e0f0: 20 74 68 65 20 61 72 72 61 79 0a 09 20 20 20 20 the array..
e100: 20 20 20 20 76 61 72 20 74 68 72 65 73 68 6f 6c var threshol
e110: 64 20 3d 20 74 68 69 73 2e 5f 6e 6f 74 61 74 69 d = this._notati
e120: 6f 6e 54 6f 55 6e 69 74 73 28 74 65 73 74 4e 6f onToUnits(testNo
e130: 74 61 74 69 6f 6e 73 5b 74 65 73 74 4e 6f 74 61 tations[testNota
e140: 74 69 6f 6e 73 2e 6c 65 6e 67 74 68 20 2d 20 31 tions.length - 1
e150: 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 ]);.. var
e160: 20 72 65 74 4e 6f 74 61 74 69 6f 6e 20 3d 20 27 retNotation = '
e170: 27 3b 0a 09 20 20 20 20 20 20 20 20 66 6f 72 20 ';.. for
e180: 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 (var i = 0; i <
e190: 74 65 73 74 4e 6f 74 61 74 69 6f 6e 73 2e 6c 65 testNotations.le
e1a0: 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 ngth; i++) {..
e1b0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f var no
e1c0: 74 61 74 69 6f 6e 54 69 6d 65 20 3d 20 74 68 69 tationTime = thi
e1d0: 73 2e 5f 6e 6f 74 61 74 69 6f 6e 54 6f 55 6e 69 s._notationToUni
e1e0: 74 73 28 74 65 73 74 4e 6f 74 61 74 69 6f 6e 73 ts(testNotations
e1f0: 5b 69 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 20 [i]);..
e200: 20 20 20 2f 2f 61 63 63 6f 75 6e 74 20 66 6f 72 //account for
e210: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 floating point
e220: 65 72 72 6f 72 73 20 28 69 2e 65 2e 20 72 6f 75 errors (i.e. rou
e230: 6e 64 20 75 70 20 69 66 20 74 68 65 20 76 61 6c nd up if the val
e240: 75 65 20 69 73 20 30 2e 39 39 39 39 39 39 29 0a ue is 0.999999).
e250: 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
e260: 20 6d 75 6c 74 69 70 6c 65 20 3d 20 75 6e 69 74 multiple = unit
e270: 73 20 2f 20 6e 6f 74 61 74 69 6f 6e 54 69 6d 65 s / notationTime
e280: 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 ;.. v
e290: 61 72 20 66 6c 6f 61 74 69 6e 67 50 6f 69 6e 74 ar floatingPoint
e2a0: 45 72 72 6f 72 20 3d 20 30 2e 30 30 30 30 30 31 Error = 0.000001
e2b0: 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 ;.. i
e2c0: 66 20 28 31 20 2d 20 6d 75 6c 74 69 70 6c 65 20 f (1 - multiple
e2d0: 25 20 31 20 3c 20 66 6c 6f 61 74 69 6e 67 50 6f % 1 < floatingPo
e2e0: 69 6e 74 45 72 72 6f 72 29 20 7b 0a 09 20 20 20 intError) {..
e2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 75 6c mul
e300: 74 69 70 6c 65 20 2b 3d 20 66 6c 6f 61 74 69 6e tiple += floatin
e310: 67 50 6f 69 6e 74 45 72 72 6f 72 3b 0a 09 20 20 gPointError;..
e320: 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
e330: 20 20 20 20 20 20 20 20 20 6d 75 6c 74 69 70 6c multipl
e340: 65 20 3d 20 4d 61 74 68 2e 66 6c 6f 6f 72 28 6d e = Math.floor(m
e350: 75 6c 74 69 70 6c 65 29 3b 0a 09 20 20 20 20 20 ultiple);..
e360: 20 20 20 20 20 20 20 69 66 20 28 6d 75 6c 74 69 if (multi
e370: 70 6c 65 20 3e 20 30 29 20 7b 0a 09 20 20 20 20 ple > 0) {..
e380: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
e390: 6d 75 6c 74 69 70 6c 65 20 3d 3d 3d 20 31 29 20 multiple === 1)
e3a0: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
e3b0: 20 20 20 20 20 20 20 72 65 74 4e 6f 74 61 74 69 retNotati
e3c0: 6f 6e 20 2b 3d 20 74 65 73 74 4e 6f 74 61 74 69 on += testNotati
e3d0: 6f 6e 73 5b 69 5d 3b 0a 09 20 20 20 20 20 20 20 ons[i];..
e3e0: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
e3f0: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
e400: 20 20 20 20 20 20 20 72 65 74 4e 6f 74 61 74 69 retNotati
e410: 6f 6e 20 2b 3d 20 6d 75 6c 74 69 70 6c 65 2e 74 on += multiple.t
e420: 6f 53 74 72 69 6e 67 28 29 20 2b 20 27 2a 27 20 oString() + '*'
e430: 2b 20 74 65 73 74 4e 6f 74 61 74 69 6f 6e 73 5b + testNotations[
e440: 69 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 i];..
e450: 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
e460: 20 20 20 20 20 20 20 20 75 6e 69 74 73 20 2d 3d units -=
e470: 20 6d 75 6c 74 69 70 6c 65 20 2a 20 6e 6f 74 61 multiple * nota
e480: 74 69 6f 6e 54 69 6d 65 3b 0a 09 20 20 20 20 20 tionTime;..
e490: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75 if (u
e4a0: 6e 69 74 73 20 3c 20 74 68 72 65 73 68 6f 6c 64 nits < threshold
e4b0: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
e4c0: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a break;.
e4d0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
e4e0: 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
e4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
e500: 65 74 4e 6f 74 61 74 69 6f 6e 20 2b 3d 20 27 20 etNotation += '
e510: 2b 20 27 3b 0a 09 20 20 20 20 20 20 20 20 20 20 + ';..
e520: 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
e530: 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
e540: 7d 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 72 }.. if (r
e550: 65 74 4e 6f 74 61 74 69 6f 6e 20 3d 3d 3d 20 27 etNotation === '
e560: 27 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 ') {..
e570: 20 20 72 65 74 4e 6f 74 61 74 69 6f 6e 20 3d 20 retNotation =
e580: 27 30 27 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a '0';.. }.
e590: 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
e5a0: 72 65 74 4e 6f 74 61 74 69 6f 6e 3b 0a 09 20 20 retNotation;..
e5b0: 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
e5c0: 20 2a 20 20 43 6f 6e 76 65 72 74 20 61 20 6e 6f * Convert a no
e5d0: 74 61 74 69 6f 6e 20 76 61 6c 75 65 20 74 6f 20 tation value to
e5e0: 74 68 65 20 63 75 72 72 65 6e 74 20 75 6e 69 74 the current unit
e5f0: 73 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 s... * @param
e600: 7b 4e 6f 74 61 74 69 6f 6e 7d 20 20 6e 6f 74 61 {Notation} nota
e610: 74 69 6f 6e 20 0a 09 09 20 2a 20 20 40 72 65 74 tion ... * @ret
e620: 75 72 6e 20 20 7b 4e 75 6d 62 65 72 7d 20 0a 09 urn {Number} ..
e630: 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
e640: 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 */.. Tone.Ti
e650: 6d 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 6e 6f me.prototype._no
e660: 74 61 74 69 6f 6e 54 6f 55 6e 69 74 73 20 3d 20 tationToUnits =
e670: 66 75 6e 63 74 69 6f 6e 20 28 6e 6f 74 61 74 69 function (notati
e680: 6f 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 on) {.. v
e690: 61 72 20 70 72 69 6d 61 72 79 45 78 70 72 73 20 ar primaryExprs
e6a0: 3d 20 74 68 69 73 2e 5f 70 72 69 6d 61 72 79 45 = this._primaryE
e6b0: 78 70 72 65 73 73 69 6f 6e 73 3b 0a 09 20 20 20 xpressions;..
e6c0: 20 20 20 20 20 76 61 72 20 6e 6f 74 61 74 69 6f var notatio
e6d0: 6e 45 78 70 72 73 20 3d 20 5b 0a 09 20 20 20 20 nExprs = [..
e6e0: 20 20 20 20 20 20 20 20 70 72 69 6d 61 72 79 45 primaryE
e6f0: 78 70 72 73 2e 6e 2c 0a 09 20 20 20 20 20 20 20 xprs.n,..
e700: 20 20 20 20 20 70 72 69 6d 61 72 79 45 78 70 72 primaryExpr
e710: 73 2e 74 2c 0a 09 20 20 20 20 20 20 20 20 20 20 s.t,..
e720: 20 20 70 72 69 6d 61 72 79 45 78 70 72 73 2e 6d primaryExprs.m
e730: 0a 09 20 20 20 20 20 20 20 20 5d 3b 0a 09 20 20 .. ];..
e740: 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 for (var i
e750: 20 3d 20 30 3b 20 69 20 3c 20 6e 6f 74 61 74 69 = 0; i < notati
e760: 6f 6e 45 78 70 72 73 2e 6c 65 6e 67 74 68 3b 20 onExprs.length;
e770: 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 i++) {..
e780: 20 20 20 20 76 61 72 20 65 78 70 72 20 3d 20 6e var expr = n
e790: 6f 74 61 74 69 6f 6e 45 78 70 72 73 5b 69 5d 3b otationExprs[i];
e7a0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
e7b0: 72 20 6d 61 74 63 68 20 3d 20 6e 6f 74 61 74 69 r match = notati
e7c0: 6f 6e 2e 6d 61 74 63 68 28 65 78 70 72 2e 72 65 on.match(expr.re
e7d0: 67 65 78 70 29 3b 0a 09 20 20 20 20 20 20 20 20 gexp);..
e7e0: 20 20 20 20 69 66 20 28 6d 61 74 63 68 29 20 7b if (match) {
e7f0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
e800: 20 20 72 65 74 75 72 6e 20 65 78 70 72 2e 6d 65 return expr.me
e810: 74 68 6f 64 2e 63 61 6c 6c 28 74 68 69 73 2c 20 thod.call(this,
e820: 6d 61 74 63 68 5b 31 5d 29 3b 0a 09 20 20 20 20 match[1]);..
e830: 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
e840: 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 }.. };..
e850: 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 /**... * Retu
e860: 72 6e 20 74 68 65 20 74 69 6d 65 20 65 6e 63 6f rn the time enco
e870: 64 65 64 20 61 73 20 42 61 72 73 3a 42 65 61 74 ded as Bars:Beat
e880: 73 3a 53 69 78 74 65 65 6e 74 68 73 2e 0a 09 09 s:Sixteenths....
e890: 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 42 61 * @return {Ba
e8a0: 72 73 42 65 61 74 73 53 69 78 74 65 65 6e 74 68 rsBeatsSixteenth
e8b0: 73 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f s}... */.. To
e8c0: 6e 65 2e 54 69 6d 65 2e 70 72 6f 74 6f 74 79 70 ne.Time.prototyp
e8d0: 65 2e 74 6f 42 61 72 73 42 65 61 74 73 53 69 78 e.toBarsBeatsSix
e8e0: 74 65 65 6e 74 68 73 20 3d 20 66 75 6e 63 74 69 teenths = functi
e8f0: 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
e900: 20 76 61 72 20 71 75 61 72 74 65 72 54 69 6d 65 var quarterTime
e910: 20 3d 20 74 68 69 73 2e 5f 62 65 61 74 73 54 6f = this._beatsTo
e920: 55 6e 69 74 73 28 31 29 3b 0a 09 20 20 20 20 20 Units(1);..
e930: 20 20 20 76 61 72 20 71 75 61 72 74 65 72 73 20 var quarters
e940: 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 = this.toSeconds
e950: 28 29 20 2f 20 71 75 61 72 74 65 72 54 69 6d 65 () / quarterTime
e960: 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 6d ;.. var m
e970: 65 61 73 75 72 65 73 20 3d 20 4d 61 74 68 2e 66 easures = Math.f
e980: 6c 6f 6f 72 28 71 75 61 72 74 65 72 73 20 2f 20 loor(quarters /
e990: 74 68 69 73 2e 5f 74 69 6d 65 53 69 67 6e 61 74 this._timeSignat
e9a0: 75 72 65 28 29 29 3b 0a 09 20 20 20 20 20 20 20 ure());..
e9b0: 20 76 61 72 20 73 69 78 74 65 65 6e 74 68 73 20 var sixteenths
e9c0: 3d 20 71 75 61 72 74 65 72 73 20 25 20 31 20 2a = quarters % 1 *
e9d0: 20 34 3b 0a 09 20 20 20 20 20 20 20 20 71 75 61 4;.. qua
e9e0: 72 74 65 72 73 20 3d 20 4d 61 74 68 2e 66 6c 6f rters = Math.flo
e9f0: 6f 72 28 71 75 61 72 74 65 72 73 29 20 25 20 74 or(quarters) % t
ea00: 68 69 73 2e 5f 74 69 6d 65 53 69 67 6e 61 74 75 his._timeSignatu
ea10: 72 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 73 re();.. s
ea20: 69 78 74 65 65 6e 74 68 73 20 3d 20 73 69 78 74 ixteenths = sixt
ea30: 65 65 6e 74 68 73 2e 74 6f 53 74 72 69 6e 67 28 eenths.toString(
ea40: 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 );.. if (
ea50: 73 69 78 74 65 65 6e 74 68 73 2e 6c 65 6e 67 74 sixteenths.lengt
ea60: 68 20 3e 20 33 29 20 7b 0a 09 20 20 20 20 20 20 h > 3) {..
ea70: 20 20 20 20 20 20 73 69 78 74 65 65 6e 74 68 73 sixteenths
ea80: 20 3d 20 70 61 72 73 65 46 6c 6f 61 74 28 73 69 = parseFloat(si
ea90: 78 74 65 65 6e 74 68 73 29 2e 74 6f 46 69 78 65 xteenths).toFixe
eaa0: 64 28 33 29 3b 0a 09 20 20 20 20 20 20 20 20 7d d(3);.. }
eab0: 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 70 72 .. var pr
eac0: 6f 67 72 65 73 73 20 3d 20 5b 0a 09 20 20 20 20 ogress = [..
ead0: 20 20 20 20 20 20 20 20 6d 65 61 73 75 72 65 73 measures
eae0: 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 71 ,.. q
eaf0: 75 61 72 74 65 72 73 2c 0a 09 20 20 20 20 20 20 uarters,..
eb00: 20 20 20 20 20 20 73 69 78 74 65 65 6e 74 68 73 sixteenths
eb10: 0a 09 20 20 20 20 20 20 20 20 5d 3b 0a 09 20 20 .. ];..
eb20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f return pro
eb30: 67 72 65 73 73 2e 6a 6f 69 6e 28 27 3a 27 29 3b gress.join(':');
eb40: 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
eb50: 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 6e 20 74 *... * Return t
eb60: 68 65 20 74 69 6d 65 20 69 6e 20 74 69 63 6b 73 he time in ticks
eb70: 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 .... * @return
eb80: 20 7b 54 69 63 6b 73 7d 0a 09 09 20 2a 2f 0a 09 {Ticks}... */..
eb90: 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 2e 70 72 Tone.Time.pr
eba0: 6f 74 6f 74 79 70 65 2e 74 6f 54 69 63 6b 73 20 ototype.toTicks
ebb0: 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
ebc0: 09 20 20 20 20 20 20 20 20 76 61 72 20 71 75 61 . var qua
ebd0: 72 74 65 72 54 69 6d 65 20 3d 20 74 68 69 73 2e rterTime = this.
ebe0: 5f 62 65 61 74 73 54 6f 55 6e 69 74 73 28 31 29 _beatsToUnits(1)
ebf0: 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 71 ;.. var q
ec00: 75 61 72 74 65 72 73 20 3d 20 74 68 69 73 2e 65 uarters = this.e
ec10: 76 61 6c 28 29 20 2f 20 71 75 61 72 74 65 72 54 val() / quarterT
ec20: 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 72 65 ime;.. re
ec30: 74 75 72 6e 20 4d 61 74 68 2e 66 6c 6f 6f 72 28 turn Math.floor(
ec40: 71 75 61 72 74 65 72 73 20 2a 20 54 6f 6e 65 2e quarters * Tone.
ec50: 54 72 61 6e 73 70 6f 72 74 2e 50 50 51 29 3b 0a Transport.PPQ);.
ec60: 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
ec70: 0a 09 09 20 2a 20 20 52 65 74 75 72 6e 20 74 68 ... * Return th
ec80: 65 20 74 69 6d 65 20 69 6e 20 73 61 6d 70 6c 65 e time in sample
ec90: 73 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 s... * @return
eca0: 20 7b 53 61 6d 70 6c 65 73 7d 20 20 0a 09 09 20 {Samples} ...
ecb0: 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d */.. Tone.Tim
ecc0: 65 2e 70 72 6f 74 6f 74 79 70 65 2e 74 6f 53 61 e.prototype.toSa
ecd0: 6d 70 6c 65 73 20 3d 20 66 75 6e 63 74 69 6f 6e mples = function
ece0: 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 () {.. r
ecf0: 65 74 75 72 6e 20 74 68 69 73 2e 74 6f 53 65 63 eturn this.toSec
ed00: 6f 6e 64 73 28 29 20 2a 20 74 68 69 73 2e 63 6f onds() * this.co
ed10: 6e 74 65 78 74 2e 73 61 6d 70 6c 65 52 61 74 65 ntext.sampleRate
ed20: 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
ed30: 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 6e 20 **... * Return
ed40: 74 68 65 20 74 69 6d 65 20 61 73 20 61 20 66 72 the time as a fr
ed50: 65 71 75 65 6e 63 79 20 76 61 6c 75 65 0a 09 09 equency value...
ed60: 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 46 72 * @return {Fr
ed70: 65 71 75 65 6e 63 79 7d 20 0a 09 09 20 2a 20 20 equency} ... *
ed80: 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 54 6f @example... * To
ed90: 6e 65 2e 54 69 6d 65 28 32 29 2e 74 6f 46 72 65 ne.Time(2).toFre
eda0: 71 75 65 6e 63 79 28 29 3b 20 2f 2f 30 2e 35 0a quency(); //0.5.
edb0: 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
edc0: 54 69 6d 65 2e 70 72 6f 74 6f 74 79 70 65 2e 74 Time.prototype.t
edd0: 6f 46 72 65 71 75 65 6e 63 79 20 3d 20 66 75 6e oFrequency = fun
ede0: 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
edf0: 20 20 20 20 72 65 74 75 72 6e 20 31 20 2f 20 74 return 1 / t
ee00: 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 29 3b his.toSeconds();
ee10: 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
ee20: 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 6e 20 74 *... * Return t
ee30: 68 65 20 74 69 6d 65 20 69 6e 20 73 65 63 6f 6e he time in secon
ee40: 64 73 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 ds.... * @retur
ee50: 6e 20 20 7b 53 65 63 6f 6e 64 73 7d 20 0a 09 09 n {Seconds} ...
ee60: 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 */.. Tone.Ti
ee70: 6d 65 2e 70 72 6f 74 6f 74 79 70 65 2e 74 6f 53 me.prototype.toS
ee80: 65 63 6f 6e 64 73 20 3d 20 66 75 6e 63 74 69 6f econds = functio
ee90: 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
eea0: 72 65 74 75 72 6e 20 74 68 69 73 2e 65 76 61 6c return this.eval
eeb0: 28 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 ();.. };..
eec0: 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 /**... * Retur
eed0: 6e 20 74 68 65 20 74 69 6d 65 20 69 6e 20 6d 69 n the time in mi
eee0: 6c 6c 69 73 65 63 6f 6e 64 73 2e 0a 09 09 20 2a lliseconds.... *
eef0: 20 20 40 72 65 74 75 72 6e 20 20 7b 4d 69 6c 6c @return {Mill
ef00: 69 73 65 63 6f 6e 64 73 7d 20 0a 09 09 20 2a 2f iseconds} ... */
ef10: 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 2e .. Tone.Time.
ef20: 70 72 6f 74 6f 74 79 70 65 2e 74 6f 4d 69 6c 6c prototype.toMill
ef30: 69 73 65 63 6f 6e 64 73 20 3d 20 66 75 6e 63 74 iseconds = funct
ef40: 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
ef50: 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 74 6f return this.to
ef60: 53 65 63 6f 6e 64 73 28 29 20 2a 20 31 30 30 30 Seconds() * 1000
ef70: 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
ef80: 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 6e 20 **... * Return
ef90: 74 68 65 20 74 69 6d 65 20 69 6e 20 73 65 63 6f the time in seco
efa0: 6e 64 73 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 nds.... * @retu
efb0: 72 6e 20 20 7b 53 65 63 6f 6e 64 73 7d 20 0a 09 rn {Seconds} ..
efc0: 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 . */.. Tone.T
efd0: 69 6d 65 2e 70 72 6f 74 6f 74 79 70 65 2e 65 76 ime.prototype.ev
efe0: 61 6c 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 al = function ()
eff0: 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
f000: 76 61 6c 20 3d 20 74 68 69 73 2e 5f 65 78 70 72 val = this._expr
f010: 28 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ();.. ret
f020: 75 72 6e 20 76 61 6c 20 2b 20 28 74 68 69 73 2e urn val + (this.
f030: 5f 70 6c 75 73 4e 6f 77 20 3f 20 74 68 69 73 2e _plusNow ? this.
f040: 6e 6f 77 28 29 20 3a 20 30 29 3b 0a 09 20 20 20 now() : 0);..
f050: 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 };.. return
f060: 54 6f 6e 65 2e 54 69 6d 65 3b 0a 09 7d 29 3b 0a Tone.Time;..});.
f070: 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e .Module(function
f080: 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 2f (Tone) {.. /
f090: 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 **... * @class
f0a0: 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 20 69 Tone.Frequency i
f0b0: 73 20 61 20 70 72 69 6d 69 74 69 76 65 20 74 79 s a primitive ty
f0c0: 70 65 20 66 6f 72 20 65 6e 63 6f 64 69 6e 67 20 pe for encoding
f0d0: 46 72 65 71 75 65 6e 63 79 20 76 61 6c 75 65 73 Frequency values
f0e0: 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 . ... *
f0f0: 45 76 65 6e 74 75 61 6c 6c 79 20 61 6c 6c 20 74 Eventually all t
f100: 69 6d 65 20 76 61 6c 75 65 73 20 61 72 65 20 65 ime values are e
f110: 76 61 6c 75 61 74 65 64 20 74 6f 20 68 65 72 74 valuated to hert
f120: 7a 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 75 z... * u
f130: 73 69 6e 67 20 74 68 65 20 60 65 76 61 6c 60 20 sing the `eval`
f140: 6d 65 74 68 6f 64 2e 20 0a 09 09 20 2a 20 20 40 method. ... * @
f150: 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a constructor... *
f160: 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
f170: 2e 54 69 6d 65 42 61 73 65 7d 0a 09 09 20 2a 20 .TimeBase}... *
f180: 20 40 70 61 72 61 6d 20 20 7b 53 74 72 69 6e 67 @param {String
f190: 7c 4e 75 6d 62 65 72 7d 20 20 76 61 6c 20 20 20 |Number} val
f1a0: 20 54 68 65 20 74 69 6d 65 20 76 61 6c 75 65 2e The time value.
f1b0: 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
f1c0: 53 74 72 69 6e 67 3d 7d 20 20 75 6e 69 74 73 20 String=} units
f1d0: 20 54 68 65 20 75 6e 69 74 73 20 6f 66 20 74 68 The units of th
f1e0: 65 20 76 61 6c 75 65 2e 0a 09 09 20 2a 20 20 40 e value.... * @
f1f0: 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 54 6f 6e example... * Ton
f200: 65 2e 46 72 65 71 75 65 6e 63 79 28 22 43 33 22 e.Frequency("C3"
f210: 29 2e 65 76 61 6c 28 29 20 2f 2f 20 32 36 31 0a ).eval() // 261.
f220: 09 09 20 2a 20 54 6f 6e 65 2e 46 72 65 71 75 65 .. * Tone.Freque
f230: 6e 63 79 28 33 38 2c 20 22 6d 69 64 69 22 29 2e ncy(38, "midi").
f240: 65 76 61 6c 28 29 20 2f 2f 0a 09 09 20 2a 20 54 eval() //... * T
f250: 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 28 22 43 one.Frequency("C
f260: 33 22 29 2e 74 72 61 6e 73 70 6f 73 65 28 34 29 3").transpose(4)
f270: 2e 65 76 61 6c 28 29 3b 0a 09 09 20 2a 2f 0a 09 .eval();... */..
f280: 20 20 20 20 54 6f 6e 65 2e 46 72 65 71 75 65 6e Tone.Frequen
f290: 63 79 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 76 cy = function (v
f2a0: 61 6c 2c 20 75 6e 69 74 73 29 20 7b 0a 09 20 20 al, units) {..
f2b0: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 20 69 if (this i
f2c0: 6e 73 74 61 6e 63 65 6f 66 20 54 6f 6e 65 2e 46 nstanceof Tone.F
f2d0: 72 65 71 75 65 6e 63 79 29 20 7b 0a 09 20 20 20 requency) {..
f2e0: 20 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 54 69 Tone.Ti
f2f0: 6d 65 42 61 73 65 2e 63 61 6c 6c 28 74 68 69 73 meBase.call(this
f300: 2c 20 76 61 6c 2c 20 75 6e 69 74 73 29 3b 0a 09 , val, units);..
f310: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
f320: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
f330: 74 75 72 6e 20 6e 65 77 20 54 6f 6e 65 2e 46 72 turn new Tone.Fr
f340: 65 71 75 65 6e 63 79 28 76 61 6c 2c 20 75 6e 69 equency(val, uni
f350: 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a ts);.. }.
f360: 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e . };.. Ton
f370: 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 46 72 e.extend(Tone.Fr
f380: 65 71 75 65 6e 63 79 2c 20 54 6f 6e 65 2e 54 69 equency, Tone.Ti
f390: 6d 65 42 61 73 65 29 3b 0a 09 20 20 20 20 2f 2f meBase);.. //
f3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
f3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
f3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
f3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
f3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f /////////.. /
f3f0: 2f 09 41 55 47 4d 45 4e 54 20 42 41 53 45 20 45 /.AUGMENT BASE E
f400: 58 50 52 45 53 53 49 4f 4e 53 0a 09 20 20 20 20 XPRESSIONS..
f410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
f420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
f430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
f440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
f450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 ///////////..
f460: 20 2f 2f 63 6c 6f 6e 65 20 74 68 65 20 65 78 70 //clone the exp
f470: 72 65 73 73 69 6f 6e 73 20 73 6f 20 74 68 61 74 ressions so that
f480: 20 0a 09 20 20 20 20 2f 2f 77 65 20 63 61 6e 20 .. //we can
f490: 61 64 64 20 6d 6f 72 65 20 77 69 74 68 6f 75 74 add more without
f4a0: 20 6d 6f 64 69 66 79 69 6e 67 20 74 68 65 20 6f modifying the o
f4b0: 72 69 67 69 6e 61 6c 0a 09 20 20 20 20 54 6f 6e riginal.. Ton
f4c0: 65 2e 46 72 65 71 75 65 6e 63 79 2e 70 72 6f 74 e.Frequency.prot
f4d0: 6f 74 79 70 65 2e 5f 70 72 69 6d 61 72 79 45 78 otype._primaryEx
f4e0: 70 72 65 73 73 69 6f 6e 73 20 3d 20 4f 62 6a 65 pressions = Obje
f4f0: 63 74 2e 63 72 65 61 74 65 28 54 6f 6e 65 2e 54 ct.create(Tone.T
f500: 69 6d 65 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 imeBase.prototyp
f510: 65 2e 5f 70 72 69 6d 61 72 79 45 78 70 72 65 73 e._primaryExpres
f520: 73 69 6f 6e 73 29 3b 0a 09 20 20 20 20 2f 2a 0a sions);.. /*.
f530: 09 09 20 2a 20 20 6d 69 64 69 20 74 79 70 65 20 .. * midi type
f540: 70 72 69 6d 61 72 79 20 65 78 70 72 65 73 73 69 primary expressi
f550: 6f 6e 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b on... * @type {
f560: 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 20 20 40 70 Object}... * @p
f570: 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 rivate... */..
f580: 20 20 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 Tone.Frequency
f590: 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 70 72 69 6d .prototype._prim
f5a0: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 73 2e 6d aryExpressions.m
f5b0: 69 64 69 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 idi = {..
f5c0: 20 72 65 67 65 78 70 3a 20 2f 5e 28 5c 64 2b 28 regexp: /^(\d+(
f5d0: 3f 3a 5c 2e 5c 64 2b 29 3f 6d 69 64 69 29 2f 2c ?:\.\d+)?midi)/,
f5e0: 0a 09 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 .. method
f5f0: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 75 : function (valu
f600: 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
f610: 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 6d 69 return this.mi
f620: 64 69 54 6f 46 72 65 71 75 65 6e 63 79 28 76 61 diToFrequency(va
f630: 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 20 20 7d lue);.. }
f640: 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
f650: 0a 09 09 20 2a 20 20 6e 6f 74 65 20 74 79 70 65 ... * note type
f660: 20 70 72 69 6d 61 72 79 20 65 78 70 72 65 73 73 primary express
f670: 69 6f 6e 0a 09 09 20 2a 20 20 40 74 79 70 65 20 ion... * @type
f680: 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 20 20 40 {Object}... * @
f690: 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 private... */..
f6a0: 20 20 20 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 Tone.Frequenc
f6b0: 79 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 70 72 69 y.prototype._pri
f6c0: 6d 61 72 79 45 78 70 72 65 73 73 69 6f 6e 73 2e maryExpressions.
f6d0: 6e 6f 74 65 20 3d 20 7b 0a 09 20 20 20 20 20 20 note = {..
f6e0: 20 20 72 65 67 65 78 70 3a 20 2f 5e 28 5b 61 2d regexp: /^([a-
f6f0: 67 5d 7b 31 7d 28 3f 3a 62 7c 23 7c 78 7c 62 62 g]{1}(?:b|#|x|bb
f700: 29 3f 29 28 2d 3f 5b 30 2d 39 5d 2b 29 2f 69 2c )?)(-?[0-9]+)/i,
f710: 0a 09 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 .. method
f720: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 70 69 74 63 : function (pitc
f730: 68 2c 20 6f 63 74 61 76 65 29 20 7b 0a 09 20 20 h, octave) {..
f740: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 6e var in
f750: 64 65 78 20 3d 20 6e 6f 74 65 54 6f 53 63 61 6c dex = noteToScal
f760: 65 49 6e 64 65 78 5b 70 69 74 63 68 2e 74 6f 4c eIndex[pitch.toL
f770: 6f 77 65 72 43 61 73 65 28 29 5d 3b 0a 09 20 20 owerCase()];..
f780: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f var no
f790: 74 65 4e 75 6d 62 65 72 20 3d 20 69 6e 64 65 78 teNumber = index
f7a0: 20 2b 20 28 70 61 72 73 65 49 6e 74 28 6f 63 74 + (parseInt(oct
f7b0: 61 76 65 29 20 2b 20 31 29 20 2a 20 31 32 3b 0a ave) + 1) * 12;.
f7c0: 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
f7d0: 75 72 6e 20 74 68 69 73 2e 6d 69 64 69 54 6f 46 urn this.midiToF
f7e0: 72 65 71 75 65 6e 63 79 28 6e 6f 74 65 4e 75 6d requency(noteNum
f7f0: 62 65 72 29 3b 0a 09 20 20 20 20 20 20 20 20 7d ber);.. }
f800: 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
f810: 0a 09 09 20 2a 20 20 42 65 61 74 73 42 61 72 73 ... * BeatsBars
f820: 53 69 78 74 65 65 6e 74 68 73 20 74 79 70 65 20 Sixteenths type
f830: 70 72 69 6d 61 72 79 20 65 78 70 72 65 73 73 69 primary expressi
f840: 6f 6e 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b on... * @type {
f850: 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 20 20 40 70 Object}... * @p
f860: 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 rivate... */..
f870: 20 20 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 Tone.Frequency
f880: 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 70 72 69 6d .prototype._prim
f890: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 73 2e 74 aryExpressions.t
f8a0: 72 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 72 r = {.. r
f8b0: 65 67 65 78 70 3a 20 2f 5e 28 5c 64 2b 28 3f 3a egexp: /^(\d+(?:
f8c0: 5c 2e 5c 64 2b 29 3f 29 3a 28 5c 64 2b 28 3f 3a \.\d+)?):(\d+(?:
f8d0: 5c 2e 5c 64 2b 29 3f 29 3a 3f 28 5c 64 2b 28 3f \.\d+)?):?(\d+(?
f8e0: 3a 5c 2e 5c 64 2b 29 3f 29 3f 2f 2c 0a 09 20 20 :\.\d+)?)?/,..
f8f0: 20 20 20 20 20 20 6d 65 74 68 6f 64 3a 20 66 75 method: fu
f900: 6e 63 74 69 6f 6e 20 28 6d 2c 20 71 2c 20 73 29 nction (m, q, s)
f910: 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
f920: 76 61 72 20 74 6f 74 61 6c 20 3d 20 31 3b 0a 09 var total = 1;..
f930: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
f940: 6d 20 26 26 20 6d 20 21 3d 3d 20 27 30 27 29 20 m && m !== '0')
f950: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
f960: 20 20 20 74 6f 74 61 6c 20 2a 3d 20 74 68 69 73 total *= this
f970: 2e 5f 62 65 61 74 73 54 6f 55 6e 69 74 73 28 74 ._beatsToUnits(t
f980: 68 69 73 2e 5f 74 69 6d 65 53 69 67 6e 61 74 75 his._timeSignatu
f990: 72 65 28 29 20 2a 20 70 61 72 73 65 46 6c 6f 61 re() * parseFloa
f9a0: 74 28 6d 29 29 3b 0a 09 20 20 20 20 20 20 20 20 t(m));..
f9b0: 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
f9c0: 20 20 20 69 66 20 28 71 20 26 26 20 71 20 21 3d if (q && q !=
f9d0: 3d 20 27 30 27 29 20 7b 0a 09 20 20 20 20 20 20 = '0') {..
f9e0: 20 20 20 20 20 20 20 20 20 20 74 6f 74 61 6c 20 total
f9f0: 2a 3d 20 74 68 69 73 2e 5f 62 65 61 74 73 54 6f *= this._beatsTo
fa00: 55 6e 69 74 73 28 70 61 72 73 65 46 6c 6f 61 74 Units(parseFloat
fa10: 28 71 29 29 3b 0a 09 20 20 20 20 20 20 20 20 20 (q));..
fa20: 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 }..
fa30: 20 20 69 66 20 28 73 20 26 26 20 73 20 21 3d 3d if (s && s !==
fa40: 20 27 30 27 29 20 7b 0a 09 20 20 20 20 20 20 20 '0') {..
fa50: 20 20 20 20 20 20 20 20 20 74 6f 74 61 6c 20 2a total *
fa60: 3d 20 74 68 69 73 2e 5f 62 65 61 74 73 54 6f 55 = this._beatsToU
fa70: 6e 69 74 73 28 70 61 72 73 65 46 6c 6f 61 74 28 nits(parseFloat(
fa80: 73 29 20 2f 20 34 29 3b 0a 09 20 20 20 20 20 20 s) / 4);..
fa90: 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
faa0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 74 61 return tota
fab0: 6c 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 l;.. }..
fac0: 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f };.. /////
fad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
fae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
faf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
fb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
fb10: 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2f 09 45 //////.. //.E
fb20: 58 50 52 45 53 53 49 4f 4e 53 0a 09 20 20 20 20 XPRESSIONS..
fb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
fb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
fb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
fb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
fb70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 ///////////..
fb80: 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 72 61 6e 73 /**... * Trans
fb90: 70 6f 73 65 73 20 74 68 65 20 66 72 65 71 75 65 poses the freque
fba0: 6e 63 79 20 62 79 20 74 68 65 20 67 69 76 65 6e ncy by the given
fbb0: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 6d 69 74 number of semit
fbc0: 6f 6e 65 73 2e 0a 09 09 20 2a 20 20 40 70 61 72 ones.... * @par
fbd0: 61 6d 20 20 7b 49 6e 74 65 72 76 61 6c 7d 20 20 am {Interval}
fbe0: 69 6e 74 65 72 76 61 6c 0a 09 09 20 2a 20 20 40 interval... * @
fbf0: 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 46 72 return {Tone.Fr
fc00: 65 71 75 65 6e 63 79 7d 20 74 68 69 73 0a 09 09 equency} this...
fc10: 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 * @example...
fc20: 2a 20 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 * Tone.Frequency
fc30: 28 22 41 34 22 29 2e 74 72 61 6e 73 70 6f 73 65 ("A4").transpose
fc40: 28 33 29 3b 20 2f 2f 22 43 35 22 0a 09 09 20 2a (3); //"C5"... *
fc50: 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 72 65 71 /.. Tone.Freq
fc60: 75 65 6e 63 79 2e 70 72 6f 74 6f 74 79 70 65 2e uency.prototype.
fc70: 74 72 61 6e 73 70 6f 73 65 20 3d 20 66 75 6e 63 transpose = func
fc80: 74 69 6f 6e 20 28 69 6e 74 65 72 76 61 6c 29 20 tion (interval)
fc90: 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e {.. this.
fca0: 5f 65 78 70 72 20 3d 20 66 75 6e 63 74 69 6f 6e _expr = function
fcb0: 20 28 65 78 70 72 2c 20 69 6e 74 65 72 76 61 6c (expr, interval
fcc0: 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
fcd0: 20 76 61 72 20 76 61 6c 20 3d 20 65 78 70 72 28 var val = expr(
fce0: 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
fcf0: 72 65 74 75 72 6e 20 76 61 6c 20 2a 20 74 68 69 return val * thi
fd00: 73 2e 69 6e 74 65 72 76 61 6c 54 6f 46 72 65 71 s.intervalToFreq
fd10: 75 65 6e 63 79 52 61 74 69 6f 28 69 6e 74 65 72 uencyRatio(inter
fd20: 76 61 6c 29 3b 0a 09 20 20 20 20 20 20 20 20 7d val);.. }
fd30: 2e 62 69 6e 64 28 74 68 69 73 2c 20 74 68 69 73 .bind(this, this
fd40: 2e 5f 65 78 70 72 2c 20 69 6e 74 65 72 76 61 6c ._expr, interval
fd50: 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 );.. retu
fd60: 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
fd70: 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
fd80: 54 61 6b 65 73 20 61 6e 20 61 72 72 61 79 20 6f Takes an array o
fd90: 66 20 73 65 6d 69 74 6f 6e 65 20 69 6e 74 65 72 f semitone inter
fda0: 76 61 6c 73 20 61 6e 64 20 72 65 74 75 72 6e 73 vals and returns
fdb0: 0a 09 09 20 2a 20 20 61 6e 20 61 72 72 61 79 20 ... * an array
fdc0: 6f 66 20 66 72 65 71 75 65 6e 63 69 65 73 20 74 of frequencies t
fdd0: 72 61 6e 73 70 6f 73 65 64 20 62 79 20 74 68 6f ransposed by tho
fde0: 73 65 20 69 6e 74 65 72 76 61 6c 73 2e 0a 09 09 se intervals....
fdf0: 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 41 72 72 * @param {Arr
fe00: 61 79 7d 20 20 69 6e 74 65 72 76 61 6c 73 0a 09 ay} intervals..
fe10: 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 . * @return {T
fe20: 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 7d 20 74 one.Frequency} t
fe30: 68 69 73 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 his... * @examp
fe40: 6c 65 0a 09 09 20 2a 20 54 6f 6e 65 2e 46 72 65 le... * Tone.Fre
fe50: 71 75 65 6e 63 79 28 22 41 34 22 29 2e 68 61 72 quency("A4").har
fe60: 6d 6f 6e 69 7a 65 28 5b 30 2c 20 33 2c 20 37 5d monize([0, 3, 7]
fe70: 29 3b 20 2f 2f 5b 22 41 34 22 2c 20 22 43 35 22 ); //["A4", "C5"
fe80: 2c 20 22 45 35 22 5d 0a 09 09 20 2a 2f 0a 09 20 , "E5"]... */..
fe90: 20 20 20 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 Tone.Frequenc
fea0: 79 2e 70 72 6f 74 6f 74 79 70 65 2e 68 61 72 6d y.prototype.harm
feb0: 6f 6e 69 7a 65 20 3d 20 66 75 6e 63 74 69 6f 6e onize = function
fec0: 20 28 69 6e 74 65 72 76 61 6c 73 29 20 7b 0a 09 (intervals) {..
fed0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 65 78 this._ex
fee0: 70 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 65 pr = function (e
fef0: 78 70 72 2c 20 69 6e 74 65 72 76 61 6c 73 29 20 xpr, intervals)
ff00: 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 {.. v
ff10: 61 72 20 76 61 6c 20 3d 20 65 78 70 72 28 29 3b ar val = expr();
ff20: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
ff30: 72 20 72 65 74 20 3d 20 5b 5d 3b 0a 09 20 20 20 r ret = [];..
ff40: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 for (va
ff50: 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 69 6e 74 r i = 0; i < int
ff60: 65 72 76 61 6c 73 2e 6c 65 6e 67 74 68 3b 20 69 ervals.length; i
ff70: 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ++) {..
ff80: 20 20 20 20 20 20 20 72 65 74 5b 69 5d 20 3d 20 ret[i] =
ff90: 76 61 6c 20 2a 20 74 68 69 73 2e 69 6e 74 65 72 val * this.inter
ffa0: 76 61 6c 54 6f 46 72 65 71 75 65 6e 63 79 52 61 valToFrequencyRa
ffb0: 74 69 6f 28 69 6e 74 65 72 76 61 6c 73 5b 69 5d tio(intervals[i]
ffc0: 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
ffd0: 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 }.. r
ffe0: 65 74 75 72 6e 20 72 65 74 3b 0a 09 20 20 20 20 eturn ret;..
fff0: 20 20 20 20 7d 2e 62 69 6e 64 28 74 68 69 73 2c }.bind(this,
10000 20 74 68 69 73 2e 5f 65 78 70 72 2c 20 69 6e 74 this._expr, int
10010 65 72 76 61 6c 73 29 3b 0a 09 20 20 20 20 20 20 ervals);..
10020 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
10030 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f };.. ////
10040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10080 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2f 09 ///////.. //.
10090 55 4e 49 54 20 43 4f 4e 56 45 52 53 49 4f 4e 53 UNIT CONVERSIONS
100a0 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f .. //////////
100b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
100c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
100d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
100e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
100f0 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 /.. /**... *
10100 20 52 65 74 75 72 6e 20 74 68 65 20 76 61 6c 75 Return the valu
10110 65 20 6f 66 20 74 68 65 20 66 72 65 71 75 65 6e e of the frequen
10120 63 79 20 61 73 20 61 20 4d 49 44 49 20 6e 6f 74 cy as a MIDI not
10130 65 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 e... * @return
10140 20 7b 4d 49 44 49 7d 0a 09 09 20 2a 20 20 40 65 {MIDI}... * @e
10150 78 61 6d 70 6c 65 0a 09 09 20 2a 20 54 6f 6e 65 xample... * Tone
10160 2e 46 72 65 71 75 65 6e 63 79 28 22 43 34 22 29 .Frequency("C4")
10170 2e 74 6f 4d 69 64 69 28 29 3b 20 2f 2f 36 30 0a .toMidi(); //60.
10180 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
10190 46 72 65 71 75 65 6e 63 79 2e 70 72 6f 74 6f 74 Frequency.protot
101a0 79 70 65 2e 74 6f 4d 69 64 69 20 3d 20 66 75 6e ype.toMidi = fun
101b0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
101c0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
101d0 66 72 65 71 75 65 6e 63 79 54 6f 4d 69 64 69 28 frequencyToMidi(
101e0 74 68 69 73 2e 65 76 61 6c 28 29 29 3b 0a 09 20 this.eval());..
101f0 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
10200 09 20 2a 20 20 52 65 74 75 72 6e 20 74 68 65 20 . * Return the
10210 76 61 6c 75 65 20 6f 66 20 74 68 65 20 66 72 65 value of the fre
10220 71 75 65 6e 63 79 20 69 6e 20 53 63 69 65 6e 74 quency in Scient
10230 69 66 69 63 20 50 69 74 63 68 20 4e 6f 74 61 74 ific Pitch Notat
10240 69 6f 6e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 ion... * @retur
10250 6e 20 20 7b 4e 6f 74 65 7d 0a 09 09 20 2a 20 20 n {Note}... *
10260 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 54 6f @example... * To
10270 6e 65 2e 46 72 65 71 75 65 6e 63 79 28 36 39 2c ne.Frequency(69,
10280 20 22 6d 69 64 69 22 29 2e 74 6f 4e 6f 74 65 28 "midi").toNote(
10290 29 3b 20 2f 2f 22 41 34 22 0a 09 09 20 2a 2f 0a ); //"A4"... */.
102a0 09 20 20 20 20 54 6f 6e 65 2e 46 72 65 71 75 65 . Tone.Freque
102b0 6e 63 79 2e 70 72 6f 74 6f 74 79 70 65 2e 74 6f ncy.prototype.to
102c0 4e 6f 74 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 Note = function
102d0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 () {.. va
102e0 72 20 66 72 65 71 20 3d 20 74 68 69 73 2e 65 76 r freq = this.ev
102f0 61 6c 28 29 3b 0a 09 20 20 20 20 20 20 20 20 76 al();.. v
10300 61 72 20 6c 6f 67 20 3d 20 4d 61 74 68 2e 6c 6f ar log = Math.lo
10310 67 28 66 72 65 71 20 2f 20 54 6f 6e 65 2e 46 72 g(freq / Tone.Fr
10320 65 71 75 65 6e 63 79 2e 41 34 29 20 2f 20 4d 61 equency.A4) / Ma
10330 74 68 2e 4c 4e 32 3b 0a 09 20 20 20 20 20 20 20 th.LN2;..
10340 20 76 61 72 20 6e 6f 74 65 4e 75 6d 62 65 72 20 var noteNumber
10350 3d 20 4d 61 74 68 2e 72 6f 75 6e 64 28 31 32 20 = Math.round(12
10360 2a 20 6c 6f 67 29 20 2b 20 35 37 3b 0a 09 20 20 * log) + 57;..
10370 20 20 20 20 20 20 76 61 72 20 6f 63 74 61 76 65 var octave
10380 20 3d 20 4d 61 74 68 2e 66 6c 6f 6f 72 28 6e 6f = Math.floor(no
10390 74 65 4e 75 6d 62 65 72 20 2f 20 31 32 29 3b 0a teNumber / 12);.
103a0 09 20 20 20 20 20 20 20 20 69 66 20 28 6f 63 74 . if (oct
103b0 61 76 65 20 3c 20 30 29 20 7b 0a 09 20 20 20 20 ave < 0) {..
103c0 20 20 20 20 20 20 20 20 6e 6f 74 65 4e 75 6d 62 noteNumb
103d0 65 72 20 2b 3d 20 2d 31 32 20 2a 20 6f 63 74 61 er += -12 * octa
103e0 76 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 ve;.. }..
103f0 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 74 65 var note
10400 4e 61 6d 65 20 3d 20 73 63 61 6c 65 49 6e 64 65 Name = scaleInde
10410 78 54 6f 4e 6f 74 65 5b 6e 6f 74 65 4e 75 6d 62 xToNote[noteNumb
10420 65 72 20 25 20 31 32 5d 3b 0a 09 20 20 20 20 20 er % 12];..
10430 20 20 20 72 65 74 75 72 6e 20 6e 6f 74 65 4e 61 return noteNa
10440 6d 65 20 2b 20 6f 63 74 61 76 65 2e 74 6f 53 74 me + octave.toSt
10450 72 69 6e 67 28 29 3b 0a 09 20 20 20 20 7d 3b 0a ring();.. };.
10460 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 . /**... * R
10470 65 74 75 72 6e 20 74 68 65 20 64 75 72 61 74 69 eturn the durati
10480 6f 6e 20 6f 66 20 6f 6e 65 20 63 79 63 6c 65 20 on of one cycle
10490 69 6e 20 73 65 63 6f 6e 64 73 2e 0a 09 09 20 2a in seconds.... *
104a0 20 20 40 72 65 74 75 72 6e 20 20 7b 53 65 63 6f @return {Seco
104b0 6e 64 73 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 nds}... */..
104c0 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 2e 70 Tone.Frequency.p
104d0 72 6f 74 6f 74 79 70 65 2e 74 6f 53 65 63 6f 6e rototype.toSecon
104e0 64 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 ds = function ()
104f0 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 {.. retu
10500 72 6e 20 31 20 2f 20 74 68 69 73 2e 65 76 61 6c rn 1 / this.eval
10510 28 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 ();.. };..
10520 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 /**... * Retur
10530 6e 20 74 68 65 20 76 61 6c 75 65 20 69 6e 20 48 n the value in H
10540 65 72 74 7a 0a 09 09 20 2a 20 20 40 72 65 74 75 ertz... * @retu
10550 72 6e 20 20 7b 46 72 65 71 75 65 6e 63 79 7d 0a rn {Frequency}.
10560 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
10570 46 72 65 71 75 65 6e 63 79 2e 70 72 6f 74 6f 74 Frequency.protot
10580 79 70 65 2e 74 6f 46 72 65 71 75 65 6e 63 79 20 ype.toFrequency
10590 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
105a0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
105b0 74 68 69 73 2e 65 76 61 6c 28 29 3b 0a 09 20 20 this.eval();..
105c0 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
105d0 20 2a 20 20 52 65 74 75 72 6e 20 74 68 65 20 64 * Return the d
105e0 75 72 61 74 69 6f 6e 20 6f 66 20 6f 6e 65 20 63 uration of one c
105f0 79 63 6c 65 20 69 6e 20 74 69 63 6b 73 0a 09 09 ycle in ticks...
10600 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 69 * @return {Ti
10610 63 6b 73 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 cks}... */..
10620 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 2e 70 Tone.Frequency.p
10630 72 6f 74 6f 74 79 70 65 2e 74 6f 54 69 63 6b 73 rototype.toTicks
10640 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
10650 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 71 75 .. var qu
10660 61 72 74 65 72 54 69 6d 65 20 3d 20 74 68 69 73 arterTime = this
10670 2e 5f 62 65 61 74 73 54 6f 55 6e 69 74 73 28 31 ._beatsToUnits(1
10680 29 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 );.. var
10690 71 75 61 72 74 65 72 73 20 3d 20 74 68 69 73 2e quarters = this.
106a0 65 76 61 6c 28 29 20 2f 20 71 75 61 72 74 65 72 eval() / quarter
106b0 54 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 72 Time;.. r
106c0 65 74 75 72 6e 20 4d 61 74 68 2e 66 6c 6f 6f 72 eturn Math.floor
106d0 28 71 75 61 72 74 65 72 73 20 2a 20 54 6f 6e 65 (quarters * Tone
106e0 2e 54 72 61 6e 73 70 6f 72 74 2e 50 50 51 29 3b .Transport.PPQ);
106f0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f .. };.. //
10700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10740 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f /////////.. /
10750 2f 09 55 4e 49 54 20 43 4f 4e 56 45 52 53 49 4f /.UNIT CONVERSIO
10760 4e 53 20 48 45 4c 50 45 52 53 0a 09 20 20 20 20 NS HELPERS..
10770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
107a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
107b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 ///////////..
107c0 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 /**... * Retur
107d0 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 ns the value of
107e0 61 20 66 72 65 71 75 65 6e 63 79 20 69 6e 20 74 a frequency in t
107f0 68 65 20 63 75 72 72 65 6e 74 20 75 6e 69 74 73 he current units
10800 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 46 ... * @param {F
10810 72 65 71 75 65 6e 63 79 7d 20 66 72 65 71 0a 09 requency} freq..
10820 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 4e . * @return {N
10830 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 70 72 umber}... * @pr
10840 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 ivate... */..
10850 20 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 2e Tone.Frequency.
10860 70 72 6f 74 6f 74 79 70 65 2e 5f 66 72 65 71 75 prototype._frequ
10870 65 6e 63 79 54 6f 55 6e 69 74 73 20 3d 20 66 75 encyToUnits = fu
10880 6e 63 74 69 6f 6e 20 28 66 72 65 71 29 20 7b 0a nction (freq) {.
10890 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
108a0 66 72 65 71 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 freq;.. };..
108b0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 /**... * Ret
108c0 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f urns the value o
108d0 66 20 61 20 74 69 63 6b 20 69 6e 20 74 68 65 20 f a tick in the
108e0 63 75 72 72 65 6e 74 20 74 69 6d 65 20 75 6e 69 current time uni
108f0 74 73 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 ts... * @param
10900 7b 54 69 63 6b 73 7d 20 74 69 63 6b 73 0a 09 09 {Ticks} ticks...
10910 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 4e 75 * @return {Nu
10920 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 70 72 69 mber}... * @pri
10930 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 vate... */..
10940 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 2e 70 Tone.Frequency.p
10950 72 6f 74 6f 74 79 70 65 2e 5f 74 69 63 6b 73 54 rototype._ticksT
10960 6f 55 6e 69 74 73 20 3d 20 66 75 6e 63 74 69 6f oUnits = functio
10970 6e 20 28 74 69 63 6b 73 29 20 7b 0a 09 20 20 20 n (ticks) {..
10980 20 20 20 20 20 72 65 74 75 72 6e 20 31 20 2f 20 return 1 /
10990 28 74 69 63 6b 73 20 2a 20 36 30 20 2f 20 28 54 (ticks * 60 / (T
109a0 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 62 70 one.Transport.bp
109b0 6d 2e 76 61 6c 75 65 20 2a 20 54 6f 6e 65 2e 54 m.value * Tone.T
109c0 72 61 6e 73 70 6f 72 74 2e 50 50 51 29 29 3b 0a ransport.PPQ));.
109d0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
109e0 0a 09 09 20 2a 20 20 52 65 74 75 72 6e 20 74 68 ... * Return th
109f0 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 62 e value of the b
10a00 65 61 74 73 20 69 6e 20 74 68 65 20 63 75 72 72 eats in the curr
10a10 65 6e 74 20 75 6e 69 74 73 0a 09 09 20 2a 20 20 ent units... *
10a20 40 70 61 72 61 6d 20 7b 4e 75 6d 62 65 72 7d 20 @param {Number}
10a30 62 65 61 74 73 0a 09 09 20 2a 20 20 40 72 65 74 beats... * @ret
10a40 75 72 6e 20 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 urn {Number}...
10a50 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 * @private...
10a60 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 72 65 */.. Tone.Fre
10a70 71 75 65 6e 63 79 2e 70 72 6f 74 6f 74 79 70 65 quency.prototype
10a80 2e 5f 62 65 61 74 73 54 6f 55 6e 69 74 73 20 3d ._beatsToUnits =
10a90 20 66 75 6e 63 74 69 6f 6e 20 28 62 65 61 74 73 function (beats
10aa0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ) {.. ret
10ab0 75 72 6e 20 31 20 2f 20 54 6f 6e 65 2e 54 69 6d urn 1 / Tone.Tim
10ac0 65 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e eBase.prototype.
10ad0 5f 62 65 61 74 73 54 6f 55 6e 69 74 73 2e 63 61 _beatsToUnits.ca
10ae0 6c 6c 28 74 68 69 73 2c 20 62 65 61 74 73 29 3b ll(this, beats);
10af0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
10b00 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 6e 73 20 *... * Returns
10b10 74 68 65 20 76 61 6c 75 65 20 6f 66 20 61 20 73 the value of a s
10b20 65 63 6f 6e 64 20 69 6e 20 74 68 65 20 63 75 72 econd in the cur
10b30 72 65 6e 74 20 75 6e 69 74 73 0a 09 09 20 2a 20 rent units... *
10b40 20 40 70 61 72 61 6d 20 7b 53 65 63 6f 6e 64 73 @param {Seconds
10b50 7d 20 73 65 63 6f 6e 64 73 0a 09 09 20 2a 20 20 } seconds... *
10b60 40 72 65 74 75 72 6e 20 20 7b 4e 75 6d 62 65 72 @return {Number
10b70 7d 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 }... * @private
10b80 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
10b90 2e 46 72 65 71 75 65 6e 63 79 2e 70 72 6f 74 6f .Frequency.proto
10ba0 74 79 70 65 2e 5f 73 65 63 6f 6e 64 73 54 6f 55 type._secondsToU
10bb0 6e 69 74 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 nits = function
10bc0 28 73 65 63 6f 6e 64 73 29 20 7b 0a 09 20 20 20 (seconds) {..
10bd0 20 20 20 20 20 72 65 74 75 72 6e 20 31 20 2f 20 return 1 /
10be0 73 65 63 6f 6e 64 73 3b 0a 09 20 20 20 20 7d 3b seconds;.. };
10bf0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
10c00 54 68 65 20 64 65 66 61 75 6c 74 20 75 6e 69 74 The default unit
10c10 73 20 69 66 20 6e 6f 6e 65 20 61 72 65 20 67 69 s if none are gi
10c20 76 65 6e 2e 0a 09 09 20 2a 20 20 40 70 72 69 76 ven.... * @priv
10c30 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ate... */.. T
10c40 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 2e 70 72 one.Frequency.pr
10c50 6f 74 6f 74 79 70 65 2e 5f 64 65 66 61 75 6c 74 ototype._default
10c60 55 6e 69 74 73 20 3d 20 27 68 7a 27 3b 0a 09 20 Units = 'hz';..
10c70 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f /////////////
10c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 //////////////..
10cc0 20 20 20 20 2f 2f 09 46 52 45 51 55 45 4e 43 59 //.FREQUENCY
10cd0 20 43 4f 4e 56 45 52 53 49 4f 4e 53 0a 09 20 20 CONVERSIONS..
10ce0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //////////////
10cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
10d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 /////////////..
10d30 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 4e 6f 74 /**... * Not
10d40 65 20 74 6f 20 73 63 61 6c 65 20 69 6e 64 65 78 e to scale index
10d50 0a 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 4f ... * @type {O
10d60 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 bject}... */..
10d70 20 20 76 61 72 20 6e 6f 74 65 54 6f 53 63 61 6c var noteToScal
10d80 65 49 6e 64 65 78 20 3d 20 7b 0a 09 20 20 20 20 eIndex = {..
10d90 20 20 20 20 27 63 62 62 27 3a 20 2d 32 2c 0a 09 'cbb': -2,..
10da0 20 20 20 20 20 20 20 20 27 63 62 27 3a 20 2d 31 'cb': -1
10db0 2c 0a 09 20 20 20 20 20 20 20 20 27 63 27 3a 20 ,.. 'c':
10dc0 30 2c 0a 09 20 20 20 20 20 20 20 20 27 63 23 27 0,.. 'c#'
10dd0 3a 20 31 2c 0a 09 20 20 20 20 20 20 20 20 27 63 : 1,.. 'c
10de0 78 27 3a 20 32 2c 0a 09 20 20 20 20 20 20 20 20 x': 2,..
10df0 27 64 62 62 27 3a 20 30 2c 0a 09 20 20 20 20 20 'dbb': 0,..
10e00 20 20 20 27 64 62 27 3a 20 31 2c 0a 09 20 20 20 'db': 1,..
10e10 20 20 20 20 20 27 64 27 3a 20 32 2c 0a 09 20 20 'd': 2,..
10e20 20 20 20 20 20 20 27 64 23 27 3a 20 33 2c 0a 09 'd#': 3,..
10e30 20 20 20 20 20 20 20 20 27 64 78 27 3a 20 34 2c 'dx': 4,
10e40 0a 09 20 20 20 20 20 20 20 20 27 65 62 62 27 3a .. 'ebb':
10e50 20 32 2c 0a 09 20 20 20 20 20 20 20 20 27 65 62 2,.. 'eb
10e60 27 3a 20 33 2c 0a 09 20 20 20 20 20 20 20 20 27 ': 3,.. '
10e70 65 27 3a 20 34 2c 0a 09 20 20 20 20 20 20 20 20 e': 4,..
10e80 27 65 23 27 3a 20 35 2c 0a 09 20 20 20 20 20 20 'e#': 5,..
10e90 20 20 27 65 78 27 3a 20 36 2c 0a 09 20 20 20 20 'ex': 6,..
10ea0 20 20 20 20 27 66 62 62 27 3a 20 33 2c 0a 09 20 'fbb': 3,..
10eb0 20 20 20 20 20 20 20 27 66 62 27 3a 20 34 2c 0a 'fb': 4,.
10ec0 09 20 20 20 20 20 20 20 20 27 66 27 3a 20 35 2c . 'f': 5,
10ed0 0a 09 20 20 20 20 20 20 20 20 27 66 23 27 3a 20 .. 'f#':
10ee0 36 2c 0a 09 20 20 20 20 20 20 20 20 27 66 78 27 6,.. 'fx'
10ef0 3a 20 37 2c 0a 09 20 20 20 20 20 20 20 20 27 67 : 7,.. 'g
10f00 62 62 27 3a 20 35 2c 0a 09 20 20 20 20 20 20 20 bb': 5,..
10f10 20 27 67 62 27 3a 20 36 2c 0a 09 20 20 20 20 20 'gb': 6,..
10f20 20 20 20 27 67 27 3a 20 37 2c 0a 09 20 20 20 20 'g': 7,..
10f30 20 20 20 20 27 67 23 27 3a 20 38 2c 0a 09 20 20 'g#': 8,..
10f40 20 20 20 20 20 20 27 67 78 27 3a 20 39 2c 0a 09 'gx': 9,..
10f50 20 20 20 20 20 20 20 20 27 61 62 62 27 3a 20 37 'abb': 7
10f60 2c 0a 09 20 20 20 20 20 20 20 20 27 61 62 27 3a ,.. 'ab':
10f70 20 38 2c 0a 09 20 20 20 20 20 20 20 20 27 61 27 8,.. 'a'
10f80 3a 20 39 2c 0a 09 20 20 20 20 20 20 20 20 27 61 : 9,.. 'a
10f90 23 27 3a 20 31 30 2c 0a 09 20 20 20 20 20 20 20 #': 10,..
10fa0 20 27 61 78 27 3a 20 31 31 2c 0a 09 20 20 20 20 'ax': 11,..
10fb0 20 20 20 20 27 62 62 62 27 3a 20 39 2c 0a 09 20 'bbb': 9,..
10fc0 20 20 20 20 20 20 20 27 62 62 27 3a 20 31 30 2c 'bb': 10,
10fd0 0a 09 20 20 20 20 20 20 20 20 27 62 27 3a 20 31 .. 'b': 1
10fe0 31 2c 0a 09 20 20 20 20 20 20 20 20 27 62 23 27 1,.. 'b#'
10ff0 3a 20 31 32 2c 0a 09 20 20 20 20 20 20 20 20 27 : 12,.. '
11000 62 78 27 3a 20 31 33 0a 09 20 20 20 20 7d 3b 0a bx': 13.. };.
11010 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 73 . /**... * s
11020 63 61 6c 65 20 69 6e 64 65 78 20 74 6f 20 6e 6f cale index to no
11030 74 65 20 28 73 68 61 72 70 73 29 0a 09 09 20 2a te (sharps)... *
11040 20 20 40 74 79 70 65 20 20 7b 41 72 72 61 79 7d @type {Array}
11050 0a 09 09 20 2a 2f 0a 09 20 20 20 20 76 61 72 20 ... */.. var
11060 73 63 61 6c 65 49 6e 64 65 78 54 6f 4e 6f 74 65 scaleIndexToNote
11070 20 3d 20 5b 0a 09 20 20 20 20 20 20 20 20 27 43 = [.. 'C
11080 27 2c 0a 09 20 20 20 20 20 20 20 20 27 43 23 27 ',.. 'C#'
11090 2c 0a 09 20 20 20 20 20 20 20 20 27 44 27 2c 0a ,.. 'D',.
110a0 09 20 20 20 20 20 20 20 20 27 44 23 27 2c 0a 09 . 'D#',..
110b0 20 20 20 20 20 20 20 20 27 45 27 2c 0a 09 20 20 'E',..
110c0 20 20 20 20 20 20 27 46 27 2c 0a 09 20 20 20 20 'F',..
110d0 20 20 20 20 27 46 23 27 2c 0a 09 20 20 20 20 20 'F#',..
110e0 20 20 20 27 47 27 2c 0a 09 20 20 20 20 20 20 20 'G',..
110f0 20 27 47 23 27 2c 0a 09 20 20 20 20 20 20 20 20 'G#',..
11100 27 41 27 2c 0a 09 20 20 20 20 20 20 20 20 27 41 'A',.. 'A
11110 23 27 2c 0a 09 20 20 20 20 20 20 20 20 27 42 27 #',.. 'B'
11120 0a 09 20 20 20 20 5d 3b 0a 09 20 20 20 20 2f 2a .. ];.. /*
11130 2a 0a 09 09 20 2a 20 20 54 68 65 20 5b 63 6f 6e *... * The [con
11140 63 65 72 74 20 70 69 74 63 68 5d 28 68 74 74 70 cert pitch](http
11150 73 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 s://en.wikipedia
11160 2e 6f 72 67 2f 77 69 6b 69 2f 43 6f 6e 63 65 72 .org/wiki/Concer
11170 74 5f 70 69 74 63 68 29 0a 09 09 20 2a 20 20 41 t_pitch)... * A
11180 34 27 73 20 76 61 6c 75 65 73 20 69 6e 20 48 65 4's values in He
11190 72 74 7a 2e 20 0a 09 09 20 2a 20 20 40 74 79 70 rtz. ... * @typ
111a0 65 20 7b 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 e {Frequency}...
111b0 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a * @static... *
111c0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 72 65 71 /.. Tone.Freq
111d0 75 65 6e 63 79 2e 41 34 20 3d 20 34 34 30 3b 0a uency.A4 = 440;.
111e0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 . /**... * C
111f0 6f 6e 76 65 72 74 20 61 20 4d 49 44 49 20 6e 6f onvert a MIDI no
11200 74 65 20 74 6f 20 66 72 65 71 75 65 6e 63 79 20 te to frequency
11210 76 61 6c 75 65 2e 20 0a 09 09 20 2a 20 20 40 70 value. ... * @p
11220 61 72 61 6d 20 20 7b 4d 49 44 49 7d 20 6d 69 64 aram {MIDI} mid
11230 69 20 54 68 65 20 6d 69 64 69 20 6e 75 6d 62 65 i The midi numbe
11240 72 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0a 09 09 r to convert....
11250 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 46 72 65 * @return {Fre
11260 71 75 65 6e 63 79 7d 20 74 68 65 20 63 6f 72 72 quency} the corr
11270 65 73 70 6f 6e 64 69 6e 67 20 66 72 65 71 75 65 esponding freque
11280 6e 63 79 20 76 61 6c 75 65 0a 09 09 20 2a 20 20 ncy value... *
11290 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 74 6f @example... * to
112a0 6e 65 2e 6d 69 64 69 54 6f 46 72 65 71 75 65 6e ne.midiToFrequen
112b0 63 79 28 36 39 29 3b 20 2f 2f 20 72 65 74 75 72 cy(69); // retur
112c0 6e 73 20 34 34 30 0a 09 09 20 2a 2f 0a 09 20 20 ns 440... */..
112d0 20 20 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 Tone.Frequency
112e0 2e 70 72 6f 74 6f 74 79 70 65 2e 6d 69 64 69 54 .prototype.midiT
112f0 6f 46 72 65 71 75 65 6e 63 79 20 3d 20 66 75 6e oFrequency = fun
11300 63 74 69 6f 6e 20 28 6d 69 64 69 29 20 7b 0a 09 ction (midi) {..
11310 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 return T
11320 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 2e 41 34 one.Frequency.A4
11330 20 2a 20 4d 61 74 68 2e 70 6f 77 28 32 2c 20 28 * Math.pow(2, (
11340 6d 69 64 69 20 2d 20 36 39 29 20 2f 20 31 32 29 midi - 69) / 12)
11350 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
11360 2a 2a 0a 09 09 20 2a 20 20 43 6f 6e 76 65 72 74 **... * Convert
11370 20 61 20 66 72 65 71 75 65 6e 63 79 20 76 61 6c a frequency val
11380 75 65 20 74 6f 20 61 20 4d 49 44 49 20 6e 6f 74 ue to a MIDI not
11390 65 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 e.... * @param
113a0 7b 46 72 65 71 75 65 6e 63 79 7d 20 66 72 65 71 {Frequency} freq
113b0 75 65 6e 63 79 20 54 68 65 20 76 61 6c 75 65 20 uency The value
113c0 74 6f 20 66 72 65 71 75 65 6e 63 79 20 76 61 6c to frequency val
113d0 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0a 09 ue to convert...
113e0 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 20 7b . * @returns {
113f0 4d 49 44 49 7d 0a 09 09 20 2a 20 20 40 65 78 61 MIDI}... * @exa
11400 6d 70 6c 65 0a 09 09 20 2a 20 74 6f 6e 65 2e 6d mple... * tone.m
11410 69 64 69 54 6f 46 72 65 71 75 65 6e 63 79 28 34 idiToFrequency(4
11420 34 30 29 3b 20 2f 2f 20 72 65 74 75 72 6e 73 20 40); // returns
11430 36 39 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 69... */.. To
11440 6e 65 2e 46 72 65 71 75 65 6e 63 79 2e 70 72 6f ne.Frequency.pro
11450 74 6f 74 79 70 65 2e 66 72 65 71 75 65 6e 63 79 totype.frequency
11460 54 6f 4d 69 64 69 20 3d 20 66 75 6e 63 74 69 6f ToMidi = functio
11470 6e 20 28 66 72 65 71 75 65 6e 63 79 29 20 7b 0a n (frequency) {.
11480 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
11490 36 39 20 2b 20 31 32 20 2a 20 4d 61 74 68 2e 6c 69 + 12 * Math.l
114a0 6f 67 28 66 72 65 71 75 65 6e 63 79 20 2f 20 54 og(frequency / T
114b0 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 2e 41 34 one.Frequency.A4
114c0 29 20 2f 20 4d 61 74 68 2e 4c 4e 32 3b 0a 09 20 ) / Math.LN2;..
114d0 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
114e0 6e 20 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 n Tone.Frequency
114f0 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 ;..});..Module(f
11500 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b unction (Tone) {
11510 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
11520 40 63 6c 61 73 73 20 54 6f 6e 65 2e 54 72 61 6e @class Tone.Tran
11530 73 70 6f 72 74 54 69 6d 65 20 69 73 20 61 20 74 sportTime is a t
11540 68 65 20 74 69 6d 65 20 61 6c 6f 6e 67 20 74 68 he time along th
11550 65 20 54 72 61 6e 73 70 6f 72 74 27 73 0a 09 09 e Transport's...
11560 20 2a 20 20 20 20 20 20 20 20 20 74 69 6d 65 6c * timel
11570 69 6e 65 2e 20 49 74 20 69 73 20 73 69 6d 69 6c ine. It is simil
11580 61 72 20 74 6f 20 54 6f 6e 65 2e 54 69 6d 65 2c ar to Tone.Time,
11590 20 62 75 74 20 69 6e 73 74 65 61 64 20 6f 66 20 but instead of
115a0 65 76 61 6c 75 61 74 69 6e 67 0a 09 09 20 2a 20 evaluating... *
115b0 20 20 20 20 20 20 20 20 61 67 61 69 6e 73 74 20 against
115c0 74 68 65 20 41 75 64 69 6f 43 6f 6e 74 65 78 74 the AudioContext
115d0 27 73 20 63 6c 6f 63 6b 2c 20 69 74 20 69 73 20 's clock, it is
115e0 65 76 61 6c 75 61 74 65 64 20 61 67 61 69 6e 73 evaluated agains
115f0 74 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 74 t... * t
11600 68 65 20 54 72 61 6e 73 70 6f 72 74 27 73 20 70 he Transport's p
11610 6f 73 69 74 69 6f 6e 2e 20 53 65 65 20 5b 54 72 osition. See [Tr
11620 61 6e 73 70 6f 72 74 54 69 6d 65 20 77 69 6b 69 ansportTime wiki
11630 5d 28 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 ](https://github
11640 2e 63 6f 6d 2f 54 6f 6e 65 6a 73 2f 54 6f 6e 65 .com/Tonejs/Tone
11650 2e 6a 73 2f 77 69 6b 69 2f 54 72 61 6e 73 70 6f .js/wiki/Transpo
11660 72 74 54 69 6d 65 29 2e 0a 09 09 20 2a 20 20 40 rtTime).... * @
11670 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a constructor... *
11680 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d @param {Time}
11690 20 20 76 61 6c 20 20 20 20 54 68 65 20 74 69 6d val The tim
116a0 65 20 76 61 6c 75 65 20 61 73 20 61 20 6e 75 6d e value as a num
116b0 62 65 72 20 6f 72 20 73 74 72 69 6e 67 0a 09 09 ber or string...
116c0 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 53 74 72 * @param {Str
116d0 69 6e 67 3d 7d 20 20 75 6e 69 74 73 20 20 55 6e ing=} units Un
116e0 69 74 20 76 61 6c 75 65 73 0a 09 09 20 2a 20 20 it values... *
116f0 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 54 @extends {Tone.T
11700 69 6d 65 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ime}... */..
11710 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 54 69 Tone.TransportTi
11720 6d 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 76 me = function (v
11730 61 6c 2c 20 75 6e 69 74 73 29 20 7b 0a 09 20 20 al, units) {..
11740 20 20 20 20 20 20 69 66 20 28 74 68 69 73 20 69 if (this i
11750 6e 73 74 61 6e 63 65 6f 66 20 54 6f 6e 65 2e 54 nstanceof Tone.T
11760 72 61 6e 73 70 6f 72 74 54 69 6d 65 29 20 7b 0a ransportTime) {.
11770 09 20 20 20 20 20 20 20 20 20 20 20 20 54 6f 6e . Ton
11780 65 2e 54 69 6d 65 2e 63 61 6c 6c 28 74 68 69 73 e.Time.call(this
11790 2c 20 76 61 6c 2c 20 75 6e 69 74 73 29 3b 0a 09 , val, units);..
117a0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
117b0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
117c0 74 75 72 6e 20 6e 65 77 20 54 6f 6e 65 2e 54 72 turn new Tone.Tr
117d0 61 6e 73 70 6f 72 74 54 69 6d 65 28 76 61 6c 2c ansportTime(val,
117e0 20 75 6e 69 74 73 29 3b 0a 09 20 20 20 20 20 20 units);..
117f0 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 }.. };..
11800 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e Tone.extend(Ton
11810 65 2e 54 72 61 6e 73 70 6f 72 74 54 69 6d 65 2c e.TransportTime,
11820 20 54 6f 6e 65 2e 54 69 6d 65 29 3b 0a 09 20 20 Tone.Time);..
11830 20 20 2f 2f 63 6c 6f 6e 65 20 74 68 65 20 65 78 //clone the ex
11840 70 72 65 73 73 69 6f 6e 73 20 73 6f 20 74 68 61 pressions so tha
11850 74 20 0a 09 20 20 20 20 2f 2f 77 65 20 63 61 6e t .. //we can
11860 20 61 64 64 20 6d 6f 72 65 20 77 69 74 68 6f 75 add more withou
11870 74 20 6d 6f 64 69 66 79 69 6e 67 20 74 68 65 20 t modifying the
11880 6f 72 69 67 69 6e 61 6c 0a 09 20 20 20 20 54 6f original.. To
11890 6e 65 2e 54 72 61 6e 73 70 6f 72 74 54 69 6d 65 ne.TransportTime
118a0 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 75 6e 61 72 .prototype._unar
118b0 79 45 78 70 72 65 73 73 69 6f 6e 73 20 3d 20 4f yExpressions = O
118c0 62 6a 65 63 74 2e 63 72 65 61 74 65 28 54 6f 6e bject.create(Ton
118d0 65 2e 54 69 6d 65 2e 70 72 6f 74 6f 74 79 70 65 e.Time.prototype
118e0 2e 5f 75 6e 61 72 79 45 78 70 72 65 73 73 69 6f ._unaryExpressio
118f0 6e 73 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 ns);.. /**...
11900 20 2a 20 20 41 64 64 73 20 61 6e 20 61 64 64 69 * Adds an addi
11910 74 69 6f 6e 61 6c 20 75 6e 61 72 79 20 65 78 70 tional unary exp
11920 72 65 73 73 69 6f 6e 0a 09 09 20 2a 20 20 77 68 ression... * wh
11930 69 63 68 20 71 75 61 6e 74 69 7a 65 73 20 76 61 ich quantizes va
11940 6c 75 65 73 20 74 6f 20 74 68 65 20 6e 65 78 74 lues to the next
11950 20 73 75 62 64 69 76 69 73 69 6f 6e 0a 09 09 20 subdivision...
11960 2a 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 * @type {Object
11970 7d 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 }... * @private
11980 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
11990 2e 54 72 61 6e 73 70 6f 72 74 54 69 6d 65 2e 70 .TransportTime.p
119a0 72 6f 74 6f 74 79 70 65 2e 5f 75 6e 61 72 79 45 rototype._unaryE
119b0 78 70 72 65 73 73 69 6f 6e 73 2e 71 75 61 6e 74 xpressions.quant
119c0 69 7a 65 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 ize = {..
119d0 20 72 65 67 65 78 70 3a 20 2f 5e 40 2f 2c 0a 09 regexp: /^@/,..
119e0 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 3a 20 method:
119f0 66 75 6e 63 74 69 6f 6e 20 28 72 68 29 20 7b 0a function (rh) {.
11a00 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
11a10 20 73 75 62 64 69 76 69 73 69 6f 6e 20 3d 20 74 subdivision = t
11a20 68 69 73 2e 5f 73 65 63 6f 6e 64 73 54 6f 54 69 his._secondsToTi
11a30 63 6b 73 28 72 68 28 29 29 3b 0a 09 20 20 20 20 cks(rh());..
11a40 20 20 20 20 20 20 20 20 76 61 72 20 6d 75 6c 74 var mult
11a50 69 70 6c 65 20 3d 20 4d 61 74 68 2e 63 65 69 6c iple = Math.ceil
11a60 28 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e (Tone.Transport.
11a70 74 69 63 6b 73 20 2f 20 73 75 62 64 69 76 69 73 ticks / subdivis
11a80 69 6f 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 20 ion);..
11a90 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
11aa0 74 69 63 6b 73 54 6f 55 6e 69 74 73 28 6d 75 6c ticksToUnits(mul
11ab0 74 69 70 6c 65 20 2a 20 73 75 62 64 69 76 69 73 tiple * subdivis
11ac0 69 6f 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 7d ion);.. }
11ad0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
11ae0 2a 0a 09 09 20 2a 20 20 43 6f 6e 76 65 72 74 20 *... * Convert
11af0 73 65 63 6f 6e 64 73 20 69 6e 74 6f 20 74 69 63 seconds into tic
11b00 6b 73 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 ks... * @param
11b10 7b 53 65 63 6f 6e 64 73 7d 20 73 65 63 6f 6e 64 {Seconds} second
11b20 73 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 s... * @return
11b30 20 7b 54 69 63 6b 73 7d 0a 09 09 20 2a 20 20 40 {Ticks}... * @
11b40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 private... */..
11b50 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 Tone.Transpor
11b60 74 54 69 6d 65 2e 70 72 6f 74 6f 74 79 70 65 2e tTime.prototype.
11b70 5f 73 65 63 6f 6e 64 73 54 6f 54 69 63 6b 73 20 _secondsToTicks
11b80 3d 20 66 75 6e 63 74 69 6f 6e 20 28 73 65 63 6f = function (seco
11b90 6e 64 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 nds) {..
11ba0 76 61 72 20 71 75 61 72 74 65 72 54 69 6d 65 20 var quarterTime
11bb0 3d 20 74 68 69 73 2e 5f 62 65 61 74 73 54 6f 55 = this._beatsToU
11bc0 6e 69 74 73 28 31 29 3b 0a 09 20 20 20 20 20 20 nits(1);..
11bd0 20 20 76 61 72 20 71 75 61 72 74 65 72 73 20 3d var quarters =
11be0 20 73 65 63 6f 6e 64 73 20 2f 20 71 75 61 72 74 seconds / quart
11bf0 65 72 54 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 erTime;..
11c00 20 72 65 74 75 72 6e 20 4d 61 74 68 2e 72 6f 75 return Math.rou
11c10 6e 64 28 71 75 61 72 74 65 72 73 20 2a 20 54 6f nd(quarters * To
11c20 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 50 50 51 ne.Transport.PPQ
11c30 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
11c40 2f 2a 2a 0a 09 09 20 2a 20 20 45 76 61 6c 75 61 /**... * Evalua
11c50 74 65 20 74 68 65 20 74 69 6d 65 20 65 78 70 72 te the time expr
11c60 65 73 73 69 6f 6e 2e 20 52 65 74 75 72 6e 73 20 ession. Returns
11c70 76 61 6c 75 65 73 20 69 6e 20 74 69 63 6b 73 0a values in ticks.
11c80 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 54 .. * @return {T
11c90 69 63 6b 73 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 icks}... */..
11ca0 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 54 Tone.TransportT
11cb0 69 6d 65 2e 70 72 6f 74 6f 74 79 70 65 2e 65 76 ime.prototype.ev
11cc0 61 6c 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 al = function ()
11cd0 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
11ce0 76 61 6c 20 3d 20 74 68 69 73 2e 5f 73 65 63 6f val = this._seco
11cf0 6e 64 73 54 6f 54 69 63 6b 73 28 74 68 69 73 2e ndsToTicks(this.
11d00 5f 65 78 70 72 28 29 29 3b 0a 09 20 20 20 20 20 _expr());..
11d10 20 20 20 72 65 74 75 72 6e 20 76 61 6c 20 2b 20 return val +
11d20 28 74 68 69 73 2e 5f 70 6c 75 73 4e 6f 77 20 3f (this._plusNow ?
11d30 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e Tone.Transport.
11d40 74 69 63 6b 73 20 3a 20 30 29 3b 0a 09 20 20 20 ticks : 0);..
11d50 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
11d60 2a 20 20 52 65 74 75 72 6e 20 74 68 65 20 74 69 * Return the ti
11d70 6d 65 20 69 6e 20 74 69 63 6b 73 2e 0a 09 09 20 me in ticks....
11d80 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 69 63 * @return {Tic
11d90 6b 73 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ks}... */.. T
11da0 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 54 69 6d one.TransportTim
11db0 65 2e 70 72 6f 74 6f 74 79 70 65 2e 74 6f 54 69 e.prototype.toTi
11dc0 63 6b 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 cks = function (
11dd0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ) {.. ret
11de0 75 72 6e 20 74 68 69 73 2e 65 76 61 6c 28 29 3b urn this.eval();
11df0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
11e00 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 6e 20 74 *... * Return t
11e10 68 65 20 74 69 6d 65 20 69 6e 20 73 65 63 6f 6e he time in secon
11e20 64 73 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 ds.... * @retur
11e30 6e 20 20 7b 53 65 63 6f 6e 64 73 7d 0a 09 09 20 n {Seconds}...
11e40 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 72 61 */.. Tone.Tra
11e50 6e 73 70 6f 72 74 54 69 6d 65 2e 70 72 6f 74 6f nsportTime.proto
11e60 74 79 70 65 2e 74 6f 53 65 63 6f 6e 64 73 20 3d type.toSeconds =
11e70 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
11e80 20 20 20 20 20 20 20 20 76 61 72 20 76 61 6c 20 var val
11e90 3d 20 74 68 69 73 2e 5f 65 78 70 72 28 29 3b 0a = this._expr();.
11ea0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
11eb0 76 61 6c 20 2b 20 28 74 68 69 73 2e 5f 70 6c 75 val + (this._plu
11ec0 73 4e 6f 77 20 3f 20 54 6f 6e 65 2e 54 72 61 6e sNow ? Tone.Tran
11ed0 73 70 6f 72 74 2e 73 65 63 6f 6e 64 73 20 3a 20 sport.seconds :
11ee0 30 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 0);.. };..
11ef0 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 /**... * Retur
11f00 6e 20 74 68 65 20 74 69 6d 65 20 61 73 20 61 20 n the time as a
11f10 66 72 65 71 75 65 6e 63 79 20 76 61 6c 75 65 0a frequency value.
11f20 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b .. * @return {
11f30 46 72 65 71 75 65 6e 63 79 7d 20 0a 09 09 20 2a Frequency} ... *
11f40 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e /.. Tone.Tran
11f50 73 70 6f 72 74 54 69 6d 65 2e 70 72 6f 74 6f 74 sportTime.protot
11f60 79 70 65 2e 74 6f 46 72 65 71 75 65 6e 63 79 20 ype.toFrequency
11f70 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
11f80 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
11f90 31 20 2f 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 1 / this.toSecon
11fa0 64 73 28 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 ds();.. };..
11fb0 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 54 return Tone.T
11fc0 72 61 6e 73 70 6f 72 74 54 69 6d 65 3b 0a 09 7d ransportTime;..}
11fd0 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
11fe0 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
11ff0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //////////////
12000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
12010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
12020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
12030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 /////////////..
12040 20 20 20 2f 2f 09 54 59 50 45 53 0a 09 20 20 20 //.TYPES..
12050 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ///////////////
12060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
12070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
12080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
12090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 ////////////..
120a0 20 20 2f 2a 2a 0a 09 09 20 2a 20 55 6e 69 74 73 /**... * Units
120b0 20 77 68 69 63 68 20 61 20 76 61 6c 75 65 20 63 which a value c
120c0 61 6e 20 74 61 6b 65 20 6f 6e 2e 0a 09 09 20 2a an take on.... *
120d0 20 40 65 6e 75 6d 20 7b 53 74 72 69 6e 67 7d 0a @enum {String}.
120e0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
120f0 54 79 70 65 20 3d 20 7b 0a 09 20 20 20 20 20 20 Type = {..
12100 20 20 2f 2a 2a 20 0a 09 09 09 20 2a 20 20 44 65 /** .... * De
12110 66 61 75 6c 74 20 75 6e 69 74 73 0a 09 09 09 20 fault units....
12120 2a 20 20 40 74 79 70 65 64 65 66 20 7b 44 65 66 * @typedef {Def
12130 61 75 6c 74 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 ault}.... */..
12140 20 20 20 20 20 20 44 65 66 61 75 6c 74 3a 20 27 Default: '
12150 6e 75 6d 62 65 72 27 2c 0a 09 20 20 20 20 20 20 number',..
12160 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 69 6d /**.... * Tim
12170 65 20 63 61 6e 20 62 65 20 64 65 73 63 72 69 62 e can be describ
12180 65 64 20 69 6e 20 61 20 6e 75 6d 62 65 72 20 6f ed in a number o
12190 66 20 77 61 79 73 2e 20 52 65 61 64 20 6d 6f 72 f ways. Read mor
121a0 65 20 5b 54 69 6d 65 5d 28 68 74 74 70 73 3a 2f e [Time](https:/
121b0 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 54 6f 6e 65 /github.com/Tone
121c0 6a 73 2f 54 6f 6e 65 2e 6a 73 2f 77 69 6b 69 2f js/Tone.js/wiki/
121d0 54 69 6d 65 29 2e 0a 09 09 09 20 2a 0a 09 09 09 Time)..... *....
121e0 20 2a 20 20 3c 75 6c 3e 0a 09 09 09 20 2a 20 20 * <ul>.... *
121f0 3c 6c 69 3e 4e 75 6d 62 65 72 73 2c 20 77 68 69 <li>Numbers, whi
12200 63 68 20 77 69 6c 6c 20 62 65 20 74 61 6b 65 6e ch will be taken
12210 20 6c 69 74 65 72 61 6c 6c 79 20 61 73 20 74 68 literally as th
12220 65 20 74 69 6d 65 20 28 69 6e 20 73 65 63 6f 6e e time (in secon
12230 64 73 29 2e 3c 2f 6c 69 3e 0a 09 09 09 20 2a 20 ds).</li>.... *
12240 20 3c 6c 69 3e 4e 6f 74 61 74 69 6f 6e 2c 20 28 <li>Notation, (
12250 22 34 6e 22 2c 20 22 38 74 22 29 20 64 65 73 63 "4n", "8t") desc
12260 72 69 62 65 73 20 74 69 6d 65 20 69 6e 20 42 50 ribes time in BP
12270 4d 20 61 6e 64 20 74 69 6d 65 20 73 69 67 6e 61 M and time signa
12280 74 75 72 65 20 72 65 6c 61 74 69 76 65 20 76 61 ture relative va
12290 6c 75 65 73 2e 3c 2f 6c 69 3e 0a 09 09 09 20 2a lues.</li>.... *
122a0 20 20 3c 6c 69 3e 54 72 61 6e 73 70 6f 72 74 54 <li>TransportT
122b0 69 6d 65 2c 20 28 22 34 3a 33 3a 32 22 29 20 77 ime, ("4:3:2") w
122c0 69 6c 6c 20 61 6c 73 6f 20 70 72 6f 76 69 64 65 ill also provide
122d0 20 74 65 6d 70 6f 20 61 6e 64 20 74 69 6d 65 20 tempo and time
122e0 73 69 67 6e 61 74 75 72 65 20 72 65 6c 61 74 69 signature relati
122f0 76 65 20 74 69 6d 65 73 20 0a 09 09 09 20 2a 20 ve times .... *
12300 20 69 6e 20 74 68 65 20 66 6f 72 6d 20 42 41 52 in the form BAR
12310 53 3a 51 55 41 52 54 45 52 53 3a 53 49 58 54 45 S:QUARTERS:SIXTE
12320 45 4e 54 48 53 2e 3c 2f 6c 69 3e 0a 09 09 09 20 ENTHS.</li>....
12330 2a 20 20 3c 6c 69 3e 46 72 65 71 75 65 6e 63 79 * <li>Frequency
12340 2c 20 28 22 38 68 7a 22 29 20 69 73 20 63 6f 6e , ("8hz") is con
12350 76 65 72 74 65 64 20 74 6f 20 74 68 65 20 6c 65 verted to the le
12360 6e 67 74 68 20 6f 66 20 74 68 65 20 63 79 63 6c ngth of the cycl
12370 65 20 69 6e 20 73 65 63 6f 6e 64 73 2e 3c 2f 6c e in seconds.</l
12380 69 3e 0a 09 09 09 20 2a 20 20 3c 6c 69 3e 4e 6f i>.... * <li>No
12390 77 2d 52 65 6c 61 74 69 76 65 2c 20 28 22 2b 31 w-Relative, ("+1
123a0 22 29 20 70 72 65 66 69 78 20 61 6e 79 20 6f 66 ") prefix any of
123b0 20 74 68 65 20 61 62 6f 76 65 20 77 69 74 68 20 the above with
123c0 22 2b 22 20 61 6e 64 20 69 74 20 77 69 6c 6c 20 "+" and it will
123d0 62 65 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 be interpreted a
123e0 73 20 0a 09 09 09 20 2a 20 20 22 74 68 65 20 63 s .... * "the c
123f0 75 72 72 65 6e 74 20 74 69 6d 65 20 70 6c 75 73 urrent time plus
12400 20 77 68 61 74 65 76 65 72 20 65 78 70 72 65 73 whatever expres
12410 73 69 6f 6e 20 66 6f 6c 6c 6f 77 73 22 2e 3c 2f sion follows".</
12420 6c 69 3e 0a 09 09 09 20 2a 20 20 3c 6c 69 3e 45 li>.... * <li>E
12430 78 70 72 65 73 73 69 6f 6e 73 2c 20 28 22 33 3a xpressions, ("3:
12440 30 20 2b 20 32 20 2d 20 28 31 6d 20 2f 20 37 29 0 + 2 - (1m / 7)
12450 22 29 20 61 6e 79 20 6f 66 20 74 68 65 20 61 62 ") any of the ab
12460 6f 76 65 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 ove can also be
12470 63 6f 6d 62 69 6e 65 64 20 0a 09 09 09 20 2a 20 combined .... *
12480 20 69 6e 74 6f 20 61 20 6d 61 74 68 65 6d 61 74 into a mathemat
12490 69 63 61 6c 20 65 78 70 72 65 73 73 69 6f 6e 20 ical expression
124a0 77 68 69 63 68 20 77 69 6c 6c 20 62 65 20 65 76 which will be ev
124b0 61 6c 75 61 74 65 64 20 74 6f 20 63 6f 6d 70 75 aluated to compu
124c0 74 65 20 74 68 65 20 64 65 73 69 72 65 64 20 74 te the desired t
124d0 69 6d 65 2e 3c 2f 6c 69 3e 0a 09 09 09 20 2a 20 ime.</li>.... *
124e0 20 3c 6c 69 3e 4e 6f 20 41 72 67 75 6d 65 6e 74 <li>No Argument
124f0 2c 20 66 6f 72 20 6d 65 74 68 6f 64 73 20 77 68 , for methods wh
12500 69 63 68 20 61 63 63 65 70 74 20 74 69 6d 65 2c ich accept time,
12510 20 6e 6f 20 61 72 67 75 6d 65 6e 74 20 77 69 6c no argument wil
12520 6c 20 62 65 20 69 6e 74 65 72 70 72 65 74 65 64 l be interpreted
12530 20 61 73 20 0a 09 09 09 20 2a 20 20 22 6e 6f 77 as .... * "now
12540 22 20 28 69 2e 65 2e 20 74 68 65 20 63 75 72 72 " (i.e. the curr
12550 65 6e 74 54 69 6d 65 29 2e 3c 2f 6c 69 3e 0a 09 entTime).</li>..
12560 09 09 20 2a 20 20 3c 2f 75 6c 3e 0a 09 09 09 20 .. * </ul>....
12570 2a 20 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 * .... * @type
12580 64 65 66 20 7b 54 69 6d 65 7d 0a 09 09 09 20 2a def {Time}.... *
12590 2f 0a 09 20 20 20 20 20 20 20 20 54 69 6d 65 3a /.. Time:
125a0 20 27 74 69 6d 65 27 2c 0a 09 20 20 20 20 20 20 'time',..
125b0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 46 72 65 /**.... * Fre
125c0 71 75 65 6e 63 79 20 63 61 6e 20 62 65 20 64 65 quency can be de
125d0 73 63 72 69 62 65 64 20 73 69 6d 69 6c 61 72 20 scribed similar
125e0 74 6f 20 74 69 6d 65 2c 20 65 78 63 65 70 74 20 to time, except
125f0 75 6c 74 69 6d 61 74 65 6c 79 20 74 68 65 0a 09 ultimately the..
12600 09 09 20 2a 20 20 76 61 6c 75 65 73 20 61 72 65 .. * values are
12610 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 66 72 converted to fr
12620 65 71 75 65 6e 63 79 20 69 6e 73 74 65 61 64 20 equency instead
12630 6f 66 20 73 65 63 6f 6e 64 73 2e 20 41 20 6e 75 of seconds. A nu
12640 6d 62 65 72 0a 09 09 09 20 2a 20 20 69 73 20 74 mber.... * is t
12650 61 6b 65 6e 20 6c 69 74 65 72 61 6c 6c 79 20 61 aken literally a
12660 73 20 74 68 65 20 76 61 6c 75 65 20 69 6e 20 68 s the value in h
12670 65 72 74 7a 2e 20 41 64 64 69 74 69 6f 6e 61 6c ertz. Additional
12680 6c 79 20 61 6e 79 20 6f 66 20 74 68 65 20 0a 09 ly any of the ..
12690 09 09 20 2a 20 20 54 69 6d 65 20 65 6e 63 6f 64 .. * Time encod
126a0 69 6e 67 73 20 63 61 6e 20 62 65 20 75 73 65 64 ings can be used
126b0 2e 20 4e 6f 74 65 20 6e 61 6d 65 73 20 69 6e 20 . Note names in
126c0 74 68 65 20 66 6f 72 6d 0a 09 09 09 20 2a 20 20 the form.... *
126d0 6f 66 20 4e 4f 54 45 20 4f 43 54 41 56 45 20 28 of NOTE OCTAVE (
126e0 69 2e 65 2e 20 43 34 29 20 61 72 65 20 61 6c 73 i.e. C4) are als
126f0 6f 20 61 63 63 65 70 74 65 64 20 61 6e 64 20 63 o accepted and c
12700 6f 6e 76 65 72 74 65 64 20 74 6f 20 74 68 65 69 onverted to thei
12710 72 0a 09 09 09 20 2a 20 20 66 72 65 71 75 65 6e r.... * frequen
12720 63 79 20 76 61 6c 75 65 2e 20 0a 09 09 09 20 2a cy value. .... *
12730 20 20 40 74 79 70 65 64 65 66 20 7b 46 72 65 71 @typedef {Freq
12740 75 65 6e 63 79 7d 0a 09 09 09 20 2a 2f 0a 09 20 uency}.... */..
12750 20 20 20 20 20 20 20 46 72 65 71 75 65 6e 63 79 Frequency
12760 3a 20 27 66 72 65 71 75 65 6e 63 79 27 2c 0a 09 : 'frequency',..
12770 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
12780 2a 20 20 54 72 61 6e 73 70 6f 72 74 54 69 6d 65 * TransportTime
12790 20 64 65 73 63 72 69 62 65 73 20 61 20 70 6f 73 describes a pos
127a0 69 74 69 6f 6e 20 61 6c 6f 6e 67 20 74 68 65 20 ition along the
127b0 54 72 61 6e 73 70 6f 72 74 27 73 20 74 69 6d 65 Transport's time
127c0 6c 69 6e 65 2e 20 49 74 20 69 73 0a 09 09 09 20 line. It is....
127d0 2a 20 20 73 69 6d 69 6c 61 72 20 74 6f 20 54 69 * similar to Ti
127e0 6d 65 20 69 6e 20 74 68 61 74 20 69 74 20 75 73 me in that it us
127f0 65 73 20 61 6c 6c 20 74 68 65 20 73 61 6d 65 20 es all the same
12800 65 6e 63 6f 64 69 6e 67 73 2c 20 62 75 74 20 54 encodings, but T
12810 72 61 6e 73 70 6f 72 74 54 69 6d 65 20 73 70 65 ransportTime spe
12820 63 69 66 69 63 61 6c 6c 79 0a 09 09 09 20 2a 20 cifically.... *
12830 20 70 65 72 74 61 69 6e 73 20 74 6f 20 74 68 65 pertains to the
12840 20 54 72 61 6e 73 70 6f 72 74 27 73 20 74 69 6d Transport's tim
12850 65 6c 69 6e 65 2c 20 77 68 69 63 68 20 69 73 20 eline, which is
12860 73 74 61 72 74 61 62 6c 65 2c 20 73 74 6f 70 70 startable, stopp
12870 61 62 6c 65 2c 20 6c 6f 6f 70 61 62 6c 65 2c 20 able, loopable,
12880 61 6e 64 20 73 65 65 6b 61 62 6c 65 2e 20 0a 09 and seekable. ..
12890 09 09 20 2a 20 20 5b 52 65 61 64 20 6d 6f 72 65 .. * [Read more
128a0 5d 28 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 ](https://github
128b0 2e 63 6f 6d 2f 54 6f 6e 65 6a 73 2f 54 6f 6e 65 .com/Tonejs/Tone
128c0 2e 6a 73 2f 77 69 6b 69 2f 54 72 61 6e 73 70 6f .js/wiki/Transpo
128d0 72 74 54 69 6d 65 29 0a 09 09 09 20 2a 20 20 40 rtTime).... * @
128e0 74 79 70 65 64 65 66 20 7b 54 72 61 6e 73 70 6f typedef {Transpo
128f0 72 74 54 69 6d 65 7d 0a 09 09 09 20 2a 2f 0a 09 rtTime}.... */..
12900 20 20 20 20 20 20 20 20 54 72 61 6e 73 70 6f 72 Transpor
12910 74 54 69 6d 65 3a 20 27 74 72 61 6e 73 70 6f 72 tTime: 'transpor
12920 74 54 69 6d 65 27 2c 0a 09 20 20 20 20 20 20 20 tTime',..
12930 20 2f 2a 2a 20 0a 09 09 09 20 2a 20 20 54 69 63 /** .... * Tic
12940 6b 73 20 61 72 65 20 74 68 65 20 62 61 73 69 63 ks are the basic
12950 20 73 75 62 75 6e 69 74 20 6f 66 20 74 68 65 20 subunit of the
12960 54 72 61 6e 73 70 6f 72 74 2e 20 54 68 65 79 20 Transport. They
12970 61 72 65 0a 09 09 09 20 2a 20 20 74 68 65 20 73 are.... * the s
12980 6d 61 6c 6c 65 73 74 20 75 6e 69 74 20 6f 66 20 mallest unit of
12990 74 69 6d 65 20 74 68 61 74 20 74 68 65 20 54 72 time that the Tr
129a0 61 6e 73 70 6f 72 74 20 73 75 70 70 6f 72 74 73 ansport supports
129b0 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 64 65 ..... * @typede
129c0 66 20 7b 54 69 63 6b 73 7d 0a 09 09 09 20 2a 2f f {Ticks}.... */
129d0 0a 09 20 20 20 20 20 20 20 20 54 69 63 6b 73 3a .. Ticks:
129e0 20 27 74 69 63 6b 73 27 2c 0a 09 20 20 20 20 20 'ticks',..
129f0 20 20 20 2f 2a 2a 20 0a 09 09 09 20 2a 20 20 4e /** .... * N
12a00 6f 72 6d 61 6c 20 76 61 6c 75 65 73 20 61 72 65 ormal values are
12a10 20 77 69 74 68 69 6e 20 74 68 65 20 72 61 6e 67 within the rang
12a20 65 20 5b 30 2c 20 31 5d 2e 0a 09 09 09 20 2a 20 e [0, 1]..... *
12a30 20 40 74 79 70 65 64 65 66 20 7b 4e 6f 72 6d 61 @typedef {Norma
12a40 6c 52 61 6e 67 65 7d 0a 09 09 09 20 2a 2f 0a 09 lRange}.... */..
12a50 20 20 20 20 20 20 20 20 4e 6f 72 6d 61 6c 52 61 NormalRa
12a60 6e 67 65 3a 20 27 6e 6f 72 6d 61 6c 52 61 6e 67 nge: 'normalRang
12a70 65 27 2c 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a e',.. /**
12a80 20 0a 09 09 09 20 2a 20 20 41 75 64 69 6f 52 61 .... * AudioRa
12a90 6e 67 65 20 76 61 6c 75 65 73 20 61 72 65 20 62 nge values are b
12aa0 65 74 77 65 65 6e 20 5b 2d 31 2c 20 31 5d 2e 0a etween [-1, 1]..
12ab0 09 09 09 20 2a 20 20 40 74 79 70 65 64 65 66 20 ... * @typedef
12ac0 7b 41 75 64 69 6f 52 61 6e 67 65 7d 0a 09 09 09 {AudioRange}....
12ad0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 41 75 64 */.. Aud
12ae0 69 6f 52 61 6e 67 65 3a 20 27 61 75 64 69 6f 52 ioRange: 'audioR
12af0 61 6e 67 65 27 2c 0a 09 20 20 20 20 20 20 20 20 ange',..
12b00 2f 2a 2a 20 0a 09 09 09 20 2a 20 20 44 65 63 69 /** .... * Deci
12b10 62 65 6c 73 20 61 72 65 20 61 20 6c 6f 67 61 72 bels are a logar
12b20 69 74 68 6d 69 63 20 75 6e 69 74 20 6f 66 20 6d ithmic unit of m
12b30 65 61 73 75 72 65 6d 65 6e 74 20 77 68 69 63 68 easurement which
12b40 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 76 is useful for v
12b50 6f 6c 75 6d 65 0a 09 09 09 20 2a 20 20 62 65 63 olume.... * bec
12b60 61 75 73 65 20 6f 66 20 74 68 65 20 6c 6f 67 61 ause of the loga
12b70 72 69 74 68 6d 69 63 20 77 61 79 20 74 68 61 74 rithmic way that
12b80 20 77 65 20 70 65 72 63 65 69 76 65 20 6c 6f 75 we perceive lou
12b90 64 6e 65 73 73 2e 20 30 20 64 65 63 69 62 65 6c dness. 0 decibel
12ba0 73 20 0a 09 09 09 20 2a 20 20 6d 65 61 6e 73 20 s .... * means
12bb0 6e 6f 20 63 68 61 6e 67 65 20 69 6e 20 76 6f 6c no change in vol
12bc0 75 6d 65 2e 20 2d 31 30 64 62 20 69 73 20 61 70 ume. -10db is ap
12bd0 70 72 6f 78 69 6d 61 74 65 6c 79 20 68 61 6c 66 proximately half
12be0 20 61 73 20 6c 6f 75 64 20 61 6e 64 20 31 30 64 as loud and 10d
12bf0 62 20 0a 09 09 09 20 2a 20 20 69 73 20 74 77 69 b .... * is twi
12c00 63 65 20 69 73 20 6c 6f 75 64 2e 20 0a 09 09 09 ce is loud. ....
12c10 20 2a 20 20 40 74 79 70 65 64 65 66 20 7b 44 65 * @typedef {De
12c20 63 69 62 65 6c 73 7d 0a 09 09 09 20 2a 2f 0a 09 cibels}.... */..
12c30 20 20 20 20 20 20 20 20 44 65 63 69 62 65 6c 73 Decibels
12c40 3a 20 27 64 62 27 2c 0a 09 20 20 20 20 20 20 20 : 'db',..
12c50 20 2f 2a 2a 20 0a 09 09 09 20 2a 20 20 48 61 6c /** .... * Hal
12c60 66 2d 73 74 65 70 20 6e 6f 74 65 20 69 6e 63 72 f-step note incr
12c70 65 6d 65 6e 74 73 2c 20 69 2e 65 2e 20 31 32 20 ements, i.e. 12
12c80 69 73 20 61 6e 20 6f 63 74 61 76 65 20 61 62 6f is an octave abo
12c90 76 65 20 74 68 65 20 72 6f 6f 74 2e 20 61 6e 64 ve the root. and
12ca0 20 31 20 69 73 20 61 20 68 61 6c 66 2d 73 74 65 1 is a half-ste
12cb0 70 20 75 70 2e 0a 09 09 09 20 2a 20 20 40 74 79 p up..... * @ty
12cc0 70 65 64 65 66 20 7b 49 6e 74 65 72 76 61 6c 7d pedef {Interval}
12cd0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
12ce0 20 49 6e 74 65 72 76 61 6c 3a 20 27 69 6e 74 65 Interval: 'inte
12cf0 72 76 61 6c 27 2c 0a 09 20 20 20 20 20 20 20 20 rval',..
12d00 2f 2a 2a 20 0a 09 09 09 20 2a 20 20 42 65 61 74 /** .... * Beat
12d10 73 20 70 65 72 20 6d 69 6e 75 74 65 2e 20 0a 09 s per minute. ..
12d20 09 09 20 2a 20 20 40 74 79 70 65 64 65 66 20 7b .. * @typedef {
12d30 42 50 4d 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 BPM}.... */..
12d40 20 20 20 20 20 42 50 4d 3a 20 27 62 70 6d 27 2c BPM: 'bpm',
12d50 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 20 0a 09 .. /** ..
12d60 09 09 20 2a 20 20 54 68 65 20 76 61 6c 75 65 20 .. * The value
12d70 6d 75 73 74 20 62 65 20 67 72 65 61 74 65 72 20 must be greater
12d80 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f than or equal to
12d90 20 30 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 0..... * @type
12da0 64 65 66 20 7b 50 6f 73 69 74 69 76 65 7d 0a 09 def {Positive}..
12db0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 50 .. */.. P
12dc0 6f 73 69 74 69 76 65 3a 20 27 70 6f 73 69 74 69 ositive: 'positi
12dd0 76 65 27 2c 0a 09 20 20 20 20 20 20 20 20 2f 2a ve',.. /*
12de0 2a 20 0a 09 09 09 20 2a 20 20 41 20 63 65 6e 74 * .... * A cent
12df0 20 69 73 20 61 20 68 75 6e 64 72 65 64 74 68 20 is a hundredth
12e00 6f 66 20 61 20 73 65 6d 69 74 6f 6e 65 2e 20 0a of a semitone. .
12e10 09 09 09 20 2a 20 20 40 74 79 70 65 64 65 66 20 ... * @typedef
12e20 7b 43 65 6e 74 73 7d 0a 09 09 09 20 2a 2f 0a 09 {Cents}.... */..
12e30 20 20 20 20 20 20 20 20 43 65 6e 74 73 3a 20 27 Cents: '
12e40 63 65 6e 74 73 27 2c 0a 09 20 20 20 20 20 20 20 cents',..
12e50 20 2f 2a 2a 20 0a 09 09 09 20 2a 20 20 41 6e 67 /** .... * Ang
12e60 6c 65 20 62 65 74 77 65 65 6e 20 30 20 61 6e 64 le between 0 and
12e70 20 33 36 30 2e 20 0a 09 09 09 20 2a 20 20 40 74 360. .... * @t
12e80 79 70 65 64 65 66 20 7b 44 65 67 72 65 65 73 7d ypedef {Degrees}
12e90 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
12ea0 20 44 65 67 72 65 65 73 3a 20 27 64 65 67 72 65 Degrees: 'degre
12eb0 65 73 27 2c 0a 09 20 20 20 20 20 20 20 20 2f 2a es',.. /*
12ec0 2a 20 0a 09 09 09 20 2a 20 20 41 20 6e 75 6d 62 * .... * A numb
12ed0 65 72 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 er representing
12ee0 61 20 6d 69 64 69 20 6e 6f 74 65 2e 0a 09 09 09 a midi note.....
12ef0 20 2a 20 20 40 74 79 70 65 64 65 66 20 7b 4d 49 * @typedef {MI
12f00 44 49 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 DI}.... */..
12f10 20 20 20 20 4d 49 44 49 3a 20 27 6d 69 64 69 27 MIDI: 'midi'
12f20 2c 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 20 0a ,.. /** .
12f30 09 09 09 20 2a 20 20 41 20 63 6f 6c 6f 6e 2d 73 ... * A colon-s
12f40 65 70 61 72 61 74 65 64 20 72 65 70 72 65 73 65 eparated represe
12f50 6e 74 61 74 69 6f 6e 20 6f 66 20 74 69 6d 65 20 ntation of time
12f60 69 6e 20 74 68 65 20 66 6f 72 6d 20 6f 66 0a 09 in the form of..
12f70 09 09 20 2a 20 20 42 61 72 73 3a 42 65 61 74 73 .. * Bars:Beats
12f80 3a 53 69 78 74 65 65 6e 74 68 73 2e 20 0a 09 09 :Sixteenths. ...
12f90 09 20 2a 20 20 40 74 79 70 65 64 65 66 20 7b 42 . * @typedef {B
12fa0 61 72 73 42 65 61 74 73 53 69 78 74 65 65 6e 74 arsBeatsSixteent
12fb0 68 73 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 hs}.... */..
12fc0 20 20 20 20 42 61 72 73 42 65 61 74 73 53 69 78 BarsBeatsSix
12fd0 74 65 65 6e 74 68 73 3a 20 27 62 61 72 73 42 65 teenths: 'barsBe
12fe0 61 74 73 53 69 78 74 65 65 6e 74 68 73 27 2c 0a atsSixteenths',.
12ff0 09 20 20 20 20 20 20 20 20 2f 2a 2a 20 0a 09 09 . /** ...
13000 09 20 2a 20 20 53 61 6d 70 6c 69 6e 67 20 69 73 . * Sampling is
13010 20 74 68 65 20 72 65 64 75 63 74 69 6f 6e 20 6f the reduction o
13020 66 20 61 20 63 6f 6e 74 69 6e 75 6f 75 73 20 73 f a continuous s
13030 69 67 6e 61 6c 20 74 6f 20 61 20 64 69 73 63 72 ignal to a discr
13040 65 74 65 20 73 69 67 6e 61 6c 2e 0a 09 09 09 20 ete signal.....
13050 2a 20 20 41 75 64 69 6f 20 69 73 20 74 79 70 69 * Audio is typi
13060 63 61 6c 6c 79 20 73 61 6d 70 6c 65 64 20 34 34 cally sampled 44
13070 31 30 30 20 74 69 6d 65 73 20 70 65 72 20 73 65 100 times per se
13080 63 6f 6e 64 2e 20 0a 09 09 09 20 2a 20 20 40 74 cond. .... * @t
13090 79 70 65 64 65 66 20 7b 53 61 6d 70 6c 65 73 7d ypedef {Samples}
130a0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
130b0 20 53 61 6d 70 6c 65 73 3a 20 27 73 61 6d 70 6c Samples: 'sampl
130c0 65 73 27 2c 0a 09 20 20 20 20 20 20 20 20 2f 2a es',.. /*
130d0 2a 20 0a 09 09 09 20 2a 20 20 48 65 72 74 7a 20 * .... * Hertz
130e0 61 72 65 20 61 20 66 72 65 71 75 65 6e 63 79 20 are a frequency
130f0 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 64 representation d
13100 65 66 69 6e 65 64 20 61 73 20 6f 6e 65 20 63 79 efined as one cy
13110 63 6c 65 20 70 65 72 20 73 65 63 6f 6e 64 2e 0a cle per second..
13120 09 09 09 20 2a 20 20 40 74 79 70 65 64 65 66 20 ... * @typedef
13130 7b 48 65 72 74 7a 7d 0a 09 09 09 20 2a 2f 0a 09 {Hertz}.... */..
13140 20 20 20 20 20 20 20 20 48 65 72 74 7a 3a 20 27 Hertz: '
13150 68 65 72 74 7a 27 2c 0a 09 20 20 20 20 20 20 20 hertz',..
13160 20 2f 2a 2a 20 0a 09 09 09 20 2a 20 20 41 20 66 /** .... * A f
13170 72 65 71 75 65 6e 63 79 20 72 65 70 72 65 73 65 requency represe
13180 6e 74 65 64 20 62 79 20 61 20 6c 65 74 74 65 72 nted by a letter
13190 20 6e 61 6d 65 2c 20 0a 09 09 09 20 2a 20 20 61 name, .... * a
131a0 63 63 69 64 65 6e 74 61 6c 20 61 6e 64 20 6f 63 ccidental and oc
131b0 74 61 76 65 2e 20 54 68 69 73 20 73 79 73 74 65 tave. This syste
131c0 6d 20 69 73 20 6b 6e 6f 77 6e 20 61 73 0a 09 09 m is known as...
131d0 09 20 2a 20 20 5b 53 63 69 65 6e 74 69 66 69 63 . * [Scientific
131e0 20 50 69 74 63 68 20 4e 6f 74 61 74 69 6f 6e 5d Pitch Notation]
131f0 28 68 74 74 70 73 3a 2f 2f 65 6e 2e 77 69 6b 69 (https://en.wiki
13200 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 53 pedia.org/wiki/S
13210 63 69 65 6e 74 69 66 69 63 5f 70 69 74 63 68 5f cientific_pitch_
13220 6e 6f 74 61 74 69 6f 6e 29 2e 0a 09 09 09 20 2a notation)..... *
13230 20 20 40 74 79 70 65 64 65 66 20 7b 4e 6f 74 65 @typedef {Note
13240 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 }.... */..
13250 20 20 4e 6f 74 65 3a 20 27 6e 6f 74 65 27 2c 0a Note: 'note',.
13260 09 20 20 20 20 20 20 20 20 2f 2a 2a 20 0a 09 09 . /** ...
13270 09 20 2a 20 20 4f 6e 65 20 6d 69 6c 6c 69 73 65 . * One millise
13280 63 6f 6e 64 20 69 73 20 61 20 74 68 6f 75 73 61 cond is a thousa
13290 6e 64 74 68 20 6f 66 20 61 20 73 65 63 6f 6e 64 ndth of a second
132a0 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 64 . .... * @typed
132b0 65 66 20 7b 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 ef {Milliseconds
132c0 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 }.... */..
132d0 20 20 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 3a 20 Milliseconds:
132e0 27 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 27 2c 0a 'milliseconds',.
132f0 09 20 20 20 20 20 20 20 20 2f 2a 2a 20 0a 09 09 . /** ...
13300 09 20 2a 20 20 53 65 63 6f 6e 64 73 20 61 72 65 . * Seconds are
13310 20 74 68 65 20 74 69 6d 65 20 75 6e 69 74 20 6f the time unit o
13320 66 20 74 68 65 20 41 75 64 69 6f 43 6f 6e 74 65 f the AudioConte
13330 78 74 2e 20 49 6e 20 74 68 65 20 65 6e 64 2c 20 xt. In the end,
13340 0a 09 09 09 20 2a 20 20 61 6c 6c 20 76 61 6c 75 .... * all valu
13350 65 73 20 6e 65 65 64 20 74 6f 20 62 65 20 65 76 es need to be ev
13360 61 6c 75 61 74 65 64 20 74 6f 20 73 65 63 6f 6e aluated to secon
13370 64 73 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 70 ds. .... * @typ
13380 65 64 65 66 20 7b 53 65 63 6f 6e 64 73 7d 0a 09 edef {Seconds}..
13390 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 53 .. */.. S
133a0 65 63 6f 6e 64 73 3a 20 27 73 65 63 6f 6e 64 73 econds: 'seconds
133b0 27 2c 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 20 ',.. /**
133c0 0a 09 09 09 20 2a 20 20 41 20 73 74 72 69 6e 67 .... * A string
133d0 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 61 20 representing a
133e0 64 75 72 61 74 69 6f 6e 20 72 65 6c 61 74 69 76 duration relativ
133f0 65 20 74 6f 20 61 20 6d 65 61 73 75 72 65 2e 20 e to a measure.
13400 0a 09 09 09 20 2a 20 20 3c 75 6c 3e 0a 09 09 09 .... * <ul>....
13410 20 2a 20 20 09 3c 6c 69 3e 22 34 6e 22 20 3d 20 * .<li>"4n" =
13420 71 75 61 72 74 65 72 20 6e 6f 74 65 3c 2f 6c 69 quarter note</li
13430 3e 0a 09 09 09 20 2a 20 20 20 09 3c 6c 69 3e 22 >.... * .<li>"
13440 32 6d 22 20 3d 20 74 77 6f 20 6d 65 61 73 75 72 2m" = two measur
13450 65 73 3c 2f 6c 69 3e 0a 09 09 09 20 2a 20 20 20 es</li>.... *
13460 20 09 3c 6c 69 3e 22 38 74 22 20 3d 20 65 69 67 .<li>"8t" = eig
13470 68 74 68 2d 6e 6f 74 65 20 74 72 69 70 6c 65 74 hth-note triplet
13480 3c 2f 6c 69 3e 0a 09 09 09 20 2a 20 20 3c 2f 75 </li>.... * </u
13490 6c 3e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 64 l>.... * @typed
134a0 65 66 20 7b 4e 6f 74 61 74 69 6f 6e 7d 0a 09 09 ef {Notation}...
134b0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 4e 6f . */.. No
134c0 74 61 74 69 6f 6e 3a 20 27 6e 6f 74 61 74 69 6f tation: 'notatio
134d0 6e 27 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 n'.. };..
134e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
134f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
13500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
13510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
13520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 ///////////..
13530 20 2f 2f 20 41 55 47 4d 45 4e 54 20 54 4f 4e 45 // AUGMENT TONE
13540 27 73 20 50 52 4f 54 4f 54 59 50 45 0a 09 20 20 's PROTOTYPE..
13550 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //////////////
13560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
13570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
13580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
13590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 /////////////..
135a0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6f 6e /**... * Con
135b0 76 65 72 74 20 54 69 6d 65 20 69 6e 74 6f 20 73 vert Time into s
135c0 65 63 6f 6e 64 73 2e 0a 09 09 20 2a 20 20 0a 09 econds.... * ..
135d0 09 20 2a 20 20 55 6e 6c 69 6b 65 20 74 68 65 20 . * Unlike the
135e0 6d 65 74 68 6f 64 20 77 68 69 63 68 20 69 74 20 method which it
135f0 6f 76 65 72 72 69 64 65 73 2c 20 74 68 69 73 20 overrides, this
13600 74 61 6b 65 73 20 69 6e 74 6f 20 61 63 63 6f 75 takes into accou
13610 6e 74 20 0a 09 09 20 2a 20 20 74 72 61 6e 73 70 nt ... * transp
13620 6f 72 74 74 69 6d 65 20 61 6e 64 20 6d 75 73 69 orttime and musi
13630 63 61 6c 20 6e 6f 74 61 74 69 6f 6e 2e 0a 09 09 cal notation....
13640 20 2a 0a 09 09 20 2a 20 20 54 69 6d 65 20 3a 20 *... * Time :
13650 31 2e 34 30 0a 09 09 20 2a 20 20 4e 6f 74 61 74 1.40... * Notat
13660 69 6f 6e 3a 20 34 6e 7c 31 6d 7c 32 74 0a 09 09 ion: 4n|1m|2t...
13670 20 2a 20 20 4e 6f 77 20 52 65 6c 61 74 69 76 65 * Now Relative
13680 3a 20 2b 33 6e 0a 09 09 20 2a 20 20 4d 61 74 68 : +3n... * Math
13690 3a 20 33 6e 2b 31 36 6e 20 6f 72 20 65 76 65 6e : 3n+16n or even
136a0 20 63 6f 6d 70 6c 69 63 61 74 65 64 20 65 78 70 complicated exp
136b0 72 65 73 73 69 6f 6e 73 20 28 28 33 6e 2a 32 29 ressions ((3n*2)
136c0 2f 36 20 2b 20 31 29 0a 09 09 20 2a 0a 09 09 20 /6 + 1)... *...
136d0 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 * @param {Time
136e0 7d 20 74 69 6d 65 20 0a 09 09 20 2a 20 20 40 72 } time ... * @r
136f0 65 74 75 72 6e 20 7b 53 65 63 6f 6e 64 73 7d 20 eturn {Seconds}
13700 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
13710 2e 70 72 6f 74 6f 74 79 70 65 2e 74 6f 53 65 63 .prototype.toSec
13720 6f 6e 64 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 onds = function
13730 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 (time) {..
13740 20 20 69 66 20 28 74 68 69 73 2e 69 73 4e 75 6d if (this.isNum
13750 62 65 72 28 74 69 6d 65 29 29 20 7b 0a 09 20 20 ber(time)) {..
13760 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
13770 20 74 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 time;..
13780 7d 20 65 6c 73 65 20 69 66 20 28 74 68 69 73 2e } else if (this.
13790 69 73 55 6e 64 65 66 28 74 69 6d 65 29 29 20 7b isUndef(time)) {
137a0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
137b0 74 75 72 6e 20 74 68 69 73 2e 6e 6f 77 28 29 3b turn this.now();
137c0 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
137d0 20 69 66 20 28 74 68 69 73 2e 69 73 53 74 72 69 if (this.isStri
137e0 6e 67 28 74 69 6d 65 29 29 20 7b 0a 09 20 20 20 ng(time)) {..
137f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
13800 6e 65 77 20 54 6f 6e 65 2e 54 69 6d 65 28 74 69 new Tone.Time(ti
13810 6d 65 29 2e 74 6f 53 65 63 6f 6e 64 73 28 29 3b me).toSeconds();
13820 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
13830 20 69 66 20 28 74 69 6d 65 20 69 6e 73 74 61 6e if (time instan
13840 63 65 6f 66 20 54 6f 6e 65 2e 54 69 6d 65 42 61 ceof Tone.TimeBa
13850 73 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 se) {..
13860 20 20 20 72 65 74 75 72 6e 20 74 69 6d 65 2e 74 return time.t
13870 6f 53 65 63 6f 6e 64 73 28 29 3b 0a 09 20 20 20 oSeconds();..
13880 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 }.. };..
13890 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6f /**... * Co
138a0 6e 76 65 72 74 20 61 20 66 72 65 71 75 65 6e 63 nvert a frequenc
138b0 79 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e y representation
138c0 20 69 6e 74 6f 20 61 20 6e 75 6d 62 65 72 2e 0a into a number..
138d0 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 46 .. * @param {F
138e0 72 65 71 75 65 6e 63 79 7d 20 66 72 65 71 20 0a requency} freq .
138f0 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 48 .. * @return {H
13900 65 72 74 7a 7d 20 20 20 20 20 20 74 68 65 20 66 ertz} the f
13910 72 65 71 75 65 6e 63 79 20 69 6e 20 68 65 72 74 requency in hert
13920 7a 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e z... */.. Ton
13930 65 2e 70 72 6f 74 6f 74 79 70 65 2e 74 6f 46 72 e.prototype.toFr
13940 65 71 75 65 6e 63 79 20 3d 20 66 75 6e 63 74 69 equency = functi
13950 6f 6e 20 28 66 72 65 71 29 20 7b 0a 09 20 20 20 on (freq) {..
13960 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 if (this.is
13970 4e 75 6d 62 65 72 28 66 72 65 71 29 29 20 7b 0a Number(freq)) {.
13980 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
13990 75 72 6e 20 66 72 65 71 3b 0a 09 20 20 20 20 20 urn freq;..
139a0 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 68 } else if (th
139b0 69 73 2e 69 73 53 74 72 69 6e 67 28 66 72 65 71 is.isString(freq
139c0 29 20 7c 7c 20 74 68 69 73 2e 69 73 55 6e 64 65 ) || this.isUnde
139d0 66 28 66 72 65 71 29 29 20 7b 0a 09 20 20 20 20 f(freq)) {..
139e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n
139f0 65 77 20 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 ew Tone.Frequenc
13a00 79 28 66 72 65 71 29 2e 65 76 61 6c 28 29 3b 0a y(freq).eval();.
13a10 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 . } else
13a20 69 66 20 28 66 72 65 71 20 69 6e 73 74 61 6e 63 if (freq instanc
13a30 65 6f 66 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 eof Tone.TimeBas
13a40 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
13a50 20 20 72 65 74 75 72 6e 20 66 72 65 71 2e 74 6f return freq.to
13a60 46 72 65 71 75 65 6e 63 79 28 29 3b 0a 09 20 20 Frequency();..
13a70 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a }.. };.
13a80 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 . /**... * C
13a90 6f 6e 76 65 72 74 20 61 20 74 69 6d 65 20 72 65 onvert a time re
13aa0 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 69 6e 74 presentation int
13ab0 6f 20 74 69 63 6b 73 2e 0a 09 09 20 2a 20 20 40 o ticks.... * @
13ac0 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 74 69 param {Time} ti
13ad0 6d 65 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e me... * @return
13ae0 20 7b 54 69 63 6b 73 7d 20 20 74 68 65 20 74 69 {Ticks} the ti
13af0 6d 65 20 69 6e 20 74 69 63 6b 73 0a 09 09 20 2a me in ticks... *
13b00 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 /.. Tone.prot
13b10 6f 74 79 70 65 2e 74 6f 54 69 63 6b 73 20 3d 20 otype.toTicks =
13b20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 function (time)
13b30 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 {.. if (t
13b40 68 69 73 2e 69 73 4e 75 6d 62 65 72 28 74 69 6d his.isNumber(tim
13b50 65 29 20 7c 7c 20 74 68 69 73 2e 69 73 53 74 72 e) || this.isStr
13b60 69 6e 67 28 74 69 6d 65 29 29 20 7b 0a 09 20 20 ing(time)) {..
13b70 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
13b80 20 6e 65 77 20 54 6f 6e 65 2e 54 72 61 6e 73 70 new Tone.Transp
13b90 6f 72 74 54 69 6d 65 28 74 69 6d 65 29 2e 74 6f ortTime(time).to
13ba0 54 69 63 6b 73 28 29 3b 0a 09 20 20 20 20 20 20 Ticks();..
13bb0 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 68 69 } else if (thi
13bc0 73 2e 69 73 55 6e 64 65 66 28 74 69 6d 65 29 29 s.isUndef(time))
13bd0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
13be0 72 65 74 75 72 6e 20 54 6f 6e 65 2e 54 72 61 6e return Tone.Tran
13bf0 73 70 6f 72 74 2e 74 69 63 6b 73 3b 0a 09 20 20 sport.ticks;..
13c00 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 } else if
13c10 28 74 69 6d 65 20 69 6e 73 74 61 6e 63 65 6f 66 (time instanceof
13c20 20 54 6f 6e 65 2e 54 69 6d 65 42 61 73 65 29 20 Tone.TimeBase)
13c30 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
13c40 65 74 75 72 6e 20 74 69 6d 65 2e 74 6f 54 69 63 eturn time.toTic
13c50 6b 73 28 29 3b 0a 09 20 20 20 20 20 20 20 20 7d ks();.. }
13c60 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 .. };.. re
13c70 74 75 72 6e 20 54 6f 6e 65 3b 0a 09 7d 29 3b 0a turn Tone;..});.
13c80 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e .Module(function
13c90 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a (Tone) {.. .
13ca0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 . /**... * @
13cb0 63 6c 61 73 73 20 54 6f 6e 65 2e 50 61 72 61 6d class Tone.Param
13cc0 20 77 72 61 70 73 20 74 68 65 20 6e 61 74 69 76 wraps the nativ
13cd0 65 20 57 65 62 20 41 75 64 69 6f 27 73 20 41 75 e Web Audio's Au
13ce0 64 69 6f 50 61 72 61 6d 20 74 6f 20 70 72 6f 76 dioParam to prov
13cf0 69 64 65 0a 09 09 20 2a 20 20 20 20 20 20 20 20 ide... *
13d00 20 61 64 64 69 74 69 6f 6e 61 6c 20 75 6e 69 74 additional unit
13d10 20 63 6f 6e 76 65 72 73 69 6f 6e 20 66 75 6e 63 conversion func
13d20 74 69 6f 6e 61 6c 69 74 79 2e 20 49 74 20 61 6c tionality. It al
13d30 73 6f 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 so... *
13d40 73 65 72 76 65 73 20 61 73 20 61 20 62 61 73 65 serves as a base
13d50 2d 63 6c 61 73 73 20 66 6f 72 20 63 6c 61 73 73 -class for class
13d60 65 73 20 77 68 69 63 68 20 68 61 76 65 20 61 20 es which have a
13d70 73 69 6e 67 6c 65 2c 0a 09 09 20 2a 20 20 20 20 single,... *
13d80 20 20 20 20 20 61 75 74 6f 6d 61 74 61 62 6c 65 automatable
13d90 20 70 61 72 61 6d 65 74 65 72 2e 20 0a 09 09 20 parameter. ...
13da0 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e * @extends {Ton
13db0 65 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 e}... * @param
13dc0 20 7b 41 75 64 69 6f 50 61 72 61 6d 7d 20 20 70 {AudioParam} p
13dd0 61 72 61 6d 20 20 54 68 65 20 70 61 72 61 6d 65 aram The parame
13de0 74 65 72 20 74 6f 20 77 72 61 70 2e 0a 09 09 20 ter to wrap....
13df0 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 6f 6e 65 * @param {Tone
13e00 2e 54 79 70 65 7d 20 75 6e 69 74 73 20 54 68 65 .Type} units The
13e10 20 75 6e 69 74 73 20 6f 66 20 74 68 65 20 61 75 units of the au
13e20 64 69 6f 20 70 61 72 61 6d 2e 0a 09 09 20 2a 20 dio param.... *
13e30 20 40 70 61 72 61 6d 20 20 7b 42 6f 6f 6c 65 61 @param {Boolea
13e40 6e 7d 20 63 6f 6e 76 65 72 74 20 49 66 20 74 68 n} convert If th
13e50 65 20 70 61 72 61 6d 20 73 68 6f 75 6c 64 20 62 e param should b
13e60 65 20 63 6f 6e 76 65 72 74 65 64 2e 0a 09 09 20 e converted....
13e70 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 72 */.. Tone.Par
13e80 61 6d 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 am = function ()
13e90 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
13ea0 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f options = this.o
13eb0 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 ptionsObject(arg
13ec0 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 uments, [..
13ed0 20 20 20 20 20 20 20 27 70 61 72 61 6d 27 2c 0a 'param',.
13ee0 09 20 20 20 20 20 20 20 20 20 20 20 20 27 75 6e . 'un
13ef0 69 74 73 27 2c 0a 09 20 20 20 20 20 20 20 20 20 its',..
13f00 20 20 20 27 63 6f 6e 76 65 72 74 27 0a 09 20 20 'convert'..
13f10 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 50 61 ], Tone.Pa
13f20 72 61 6d 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 ram.defaults);..
13f30 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
13f40 2a 20 20 54 68 65 20 6e 61 74 69 76 65 20 70 61 * The native pa
13f50 72 61 6d 65 74 65 72 20 74 6f 20 63 6f 6e 74 72 rameter to contr
13f60 6f 6c 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 ol.... * @type
13f70 20 7b 41 75 64 69 6f 50 61 72 61 6d 7d 0a 09 09 {AudioParam}...
13f80 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
13f90 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
13fa0 69 73 2e 5f 70 61 72 61 6d 20 3d 20 74 68 69 73 is._param = this
13fb0 2e 69 6e 70 75 74 20 3d 20 6f 70 74 69 6f 6e 73 .input = options
13fc0 2e 70 61 72 61 6d 3b 0a 09 20 20 20 20 20 20 20 .param;..
13fd0 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
13fe0 75 6e 69 74 73 20 6f 66 20 74 68 65 20 70 61 72 units of the par
13ff0 61 6d 65 74 65 72 0a 09 09 09 20 2a 20 20 40 74 ameter.... * @t
14000 79 70 65 20 7b 54 6f 6e 65 2e 54 79 70 65 7d 0a ype {Tone.Type}.
14010 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
14020 74 68 69 73 2e 75 6e 69 74 73 20 3d 20 6f 70 74 this.units = opt
14030 69 6f 6e 73 2e 75 6e 69 74 73 3b 0a 09 20 20 20 ions.units;..
14040 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
14050 49 66 20 74 68 65 20 76 61 6c 75 65 20 73 68 6f If the value sho
14060 75 6c 64 20 62 65 20 63 6f 6e 76 65 72 74 65 64 uld be converted
14070 20 6f 72 20 6e 6f 74 0a 09 09 09 20 2a 20 20 40 or not.... * @
14080 74 79 70 65 20 7b 42 6f 6f 6c 65 61 6e 7d 0a 09 type {Boolean}..
14090 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
140a0 68 69 73 2e 63 6f 6e 76 65 72 74 20 3d 20 6f 70 his.convert = op
140b0 74 69 6f 6e 73 2e 63 6f 6e 76 65 72 74 3b 0a 09 tions.convert;..
140c0 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
140d0 2a 20 20 54 72 75 65 20 69 66 20 74 68 65 20 73 * True if the s
140e0 69 67 6e 61 6c 20 76 61 6c 75 65 20 69 73 20 62 ignal value is b
140f0 65 69 6e 67 20 6f 76 65 72 72 69 64 64 65 6e 20 eing overridden
14100 62 79 20 0a 09 09 09 20 2a 20 20 61 20 63 6f 6e by .... * a con
14110 6e 65 63 74 65 64 20 73 69 67 6e 61 6c 2e 0a 09 nected signal...
14120 09 09 20 2a 20 20 40 72 65 61 64 4f 6e 6c 79 0a .. * @readOnly.
14130 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 62 ... * @type {b
14140 6f 6f 6c 65 61 6e 7d 0a 09 09 09 20 2a 20 20 40 oolean}.... * @
14150 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
14160 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 76 65 this.ove
14170 72 72 69 64 64 65 6e 20 3d 20 66 61 6c 73 65 3b rridden = false;
14180 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
14190 09 20 2a 20 20 49 66 20 74 68 65 72 65 20 69 73 . * If there is
141a0 20 61 6e 20 4c 46 4f 2c 20 74 68 69 73 20 69 73 an LFO, this is
141b0 20 77 68 65 72 65 20 69 74 20 69 73 20 68 65 6c where it is hel
141c0 64 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 d..... * @type
141d0 20 7b 54 6f 6e 65 2e 4c 46 4f 7d 0a 09 09 09 20 {Tone.LFO}....
141e0 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
141f0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
14200 2e 5f 6c 66 6f 20 3d 20 6e 75 6c 6c 3b 0a 09 20 ._lfo = null;..
14210 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e if (this.
14220 69 73 4f 62 6a 65 63 74 28 6f 70 74 69 6f 6e 73 isObject(options
14230 2e 6c 66 6f 29 29 20 7b 0a 09 20 20 20 20 20 20 .lfo)) {..
14240 20 20 20 20 20 20 74 68 69 73 2e 76 61 6c 75 65 this.value
14250 20 3d 20 6f 70 74 69 6f 6e 73 2e 6c 66 6f 3b 0a = options.lfo;.
14260 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 . } else
14270 69 66 20 28 21 74 68 69 73 2e 69 73 55 6e 64 65 if (!this.isUnde
14280 66 28 6f 70 74 69 6f 6e 73 2e 76 61 6c 75 65 29 f(options.value)
14290 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
142a0 20 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 6f 70 this.value = op
142b0 74 69 6f 6e 73 2e 76 61 6c 75 65 3b 0a 09 20 20 tions.value;..
142c0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a }.. };.
142d0 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 . Tone.extend
142e0 28 54 6f 6e 65 2e 50 61 72 61 6d 29 3b 0a 09 20 (Tone.Param);..
142f0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 44 65 66 /**... * Def
14300 61 75 6c 74 73 0a 09 09 20 2a 20 20 40 74 79 70 aults... * @typ
14310 65 20 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a e {Object}... *
14320 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a 2f 0a 09 @const... */..
14330 20 20 20 20 54 6f 6e 65 2e 50 61 72 61 6d 2e 64 Tone.Param.d
14340 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 efaults = {..
14350 20 20 20 20 20 27 75 6e 69 74 73 27 3a 20 54 6f 'units': To
14360 6e 65 2e 54 79 70 65 2e 44 65 66 61 75 6c 74 2c ne.Type.Default,
14370 0a 09 20 20 20 20 20 20 20 20 27 63 6f 6e 76 65 .. 'conve
14380 72 74 27 3a 20 74 72 75 65 2c 0a 09 20 20 20 20 rt': true,..
14390 20 20 20 20 27 70 61 72 61 6d 27 3a 20 75 6e 64 'param': und
143a0 65 66 69 6e 65 64 0a 09 20 20 20 20 7d 3b 0a 09 efined.. };..
143b0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 /**... * The
143c0 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 20 6f current value o
143d0 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 2e f the parameter.
143e0 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
143f0 20 54 6f 6e 65 2e 50 61 72 61 6d 23 0a 09 09 20 Tone.Param#...
14400 2a 20 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d * @type {Number}
14410 0a 09 09 20 2a 20 40 6e 61 6d 65 20 76 61 6c 75 ... * @name valu
14420 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a e... */.. Obj
14430 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
14440 74 79 28 54 6f 6e 65 2e 50 61 72 61 6d 2e 70 72 ty(Tone.Param.pr
14450 6f 74 6f 74 79 70 65 2c 20 27 76 61 6c 75 65 27 ototype, 'value'
14460 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
14470 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
14480 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
14490 75 72 6e 20 74 68 69 73 2e 5f 74 6f 55 6e 69 74 urn this._toUnit
144a0 73 28 74 68 69 73 2e 5f 70 61 72 61 6d 2e 76 61 s(this._param.va
144b0 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 20 20 7d lue);.. }
144c0 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 ,.. set:
144d0 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 75 65 29 function (value)
144e0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
144f0 69 66 20 28 74 68 69 73 2e 69 73 4f 62 6a 65 63 if (this.isObjec
14500 74 28 76 61 6c 75 65 29 29 20 7b 0a 09 20 20 20 t(value)) {..
14510 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 74 //t
14520 68 72 6f 77 20 61 6e 20 65 72 72 6f 72 20 69 66 hrow an error if
14530 20 74 68 65 20 4c 46 4f 20 6e 65 65 64 73 20 74 the LFO needs t
14540 6f 20 62 65 20 69 6e 63 6c 75 64 65 64 0a 09 20 o be included..
14550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
14560 66 20 28 74 68 69 73 2e 69 73 55 6e 64 65 66 28 f (this.isUndef(
14570 54 6f 6e 65 2e 4c 46 4f 29 29 20 7b 0a 09 20 20 Tone.LFO)) {..
14580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
14590 20 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f throw new Erro
145a0 72 28 27 49 6e 63 6c 75 64 65 20 5c 27 54 6f 6e r('Include \'Ton
145b0 65 2e 4c 46 4f 5c 27 20 74 6f 20 75 73 65 20 61 e.LFO\' to use a
145c0 6e 20 4c 46 4f 20 61 73 20 61 20 50 61 72 61 6d n LFO as a Param
145d0 20 76 61 6c 75 65 2e 27 29 3b 0a 09 20 20 20 20 value.');..
145e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
145f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
14600 2f 72 65 6d 6f 76 65 20 74 68 65 20 6f 6c 64 20 /remove the old
14610 6f 6e 65 0a 09 20 20 20 20 20 20 20 20 20 20 20 one..
14620 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 6c if (this._l
14630 66 6f 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 fo) {..
14640 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
14650 5f 6c 66 6f 2e 64 69 73 70 6f 73 65 28 29 3b 0a _lfo.dispose();.
14660 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
14670 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
14680 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 20 3d 20 this._lfo =
14690 6e 65 77 20 54 6f 6e 65 2e 4c 46 4f 28 76 61 6c new Tone.LFO(val
146a0 75 65 29 2e 73 74 61 72 74 28 29 3b 0a 09 20 20 ue).start();..
146b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
146c0 69 73 2e 5f 6c 66 6f 2e 63 6f 6e 6e 65 63 74 28 is._lfo.connect(
146d0 74 68 69 73 2e 69 6e 70 75 74 29 3b 0a 09 20 20 this.input);..
146e0 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
146f0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
14700 20 20 20 20 76 61 72 20 63 6f 6e 76 65 72 74 65 var converte
14710 64 56 61 6c 20 3d 20 74 68 69 73 2e 5f 66 72 6f dVal = this._fro
14720 6d 55 6e 69 74 73 28 76 61 6c 75 65 29 3b 0a 09 mUnits(value);..
14730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
14740 74 68 69 73 2e 5f 70 61 72 61 6d 2e 63 61 6e 63 this._param.canc
14750 65 6c 53 63 68 65 64 75 6c 65 64 56 61 6c 75 65 elScheduledValue
14760 73 28 30 29 3b 0a 09 20 20 20 20 20 20 20 20 20 s(0);..
14770 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 61 72 this._par
14780 61 6d 2e 76 61 6c 75 65 20 3d 20 63 6f 6e 76 65 am.value = conve
14790 72 74 65 64 56 61 6c 3b 0a 09 20 20 20 20 20 20 rtedVal;..
147a0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
147b0 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
147c0 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6f 6e 76 65 /**... * Conve
147d0 72 74 20 74 68 65 20 67 69 76 65 6e 20 76 61 6c rt the given val
147e0 75 65 20 66 72 6f 6d 20 74 68 65 20 74 79 70 65 ue from the type
147f0 20 73 70 65 63 69 66 69 65 64 20 62 79 20 54 6f specified by To
14800 6e 65 2e 50 61 72 61 6d 2e 75 6e 69 74 73 0a 09 ne.Param.units..
14810 09 20 2a 20 20 69 6e 74 6f 20 74 68 65 20 64 65 . * into the de
14820 73 74 69 6e 61 74 69 6f 6e 20 76 61 6c 75 65 20 stination value
14830 28 73 75 63 68 20 61 73 20 47 61 69 6e 20 6f 72 (such as Gain or
14840 20 46 72 65 71 75 65 6e 63 79 29 2e 0a 09 09 20 Frequency)....
14850 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a * @private... *
14860 20 20 40 70 61 72 61 6d 20 20 7b 2a 7d 20 76 61 @param {*} va
14870 6c 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20 63 l the value to c
14880 6f 6e 76 65 72 74 0a 09 09 20 2a 20 20 40 72 65 onvert... * @re
14890 74 75 72 6e 20 7b 6e 75 6d 62 65 72 7d 20 20 20 turn {number}
148a0 20 20 74 68 65 20 6e 75 6d 62 65 72 20 77 68 69 the number whi
148b0 63 68 20 74 68 65 20 76 61 6c 75 65 20 73 68 6f ch the value sho
148c0 75 6c 64 20 62 65 20 73 65 74 20 74 6f 0a 09 09 uld be set to...
148d0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 */.. Tone.Pa
148e0 72 61 6d 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 66 ram.prototype._f
148f0 72 6f 6d 55 6e 69 74 73 20 3d 20 66 75 6e 63 74 romUnits = funct
14900 69 6f 6e 20 28 76 61 6c 29 20 7b 0a 09 20 20 20 ion (val) {..
14910 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 63 6f if (this.co
14920 6e 76 65 72 74 20 7c 7c 20 74 68 69 73 2e 69 73 nvert || this.is
14930 55 6e 64 65 66 28 74 68 69 73 2e 63 6f 6e 76 65 Undef(this.conve
14940 72 74 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 rt)) {..
14950 20 20 20 20 73 77 69 74 63 68 20 28 74 68 69 73 switch (this
14960 2e 75 6e 69 74 73 29 20 7b 0a 09 20 20 20 20 20 .units) {..
14970 20 20 20 20 20 20 20 63 61 73 65 20 54 6f 6e 65 case Tone
14980 2e 54 79 70 65 2e 54 69 6d 65 3a 0a 09 20 20 20 .Type.Time:..
14990 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
149a0 75 72 6e 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e urn this.toSecon
149b0 64 73 28 76 61 6c 29 3b 0a 09 20 20 20 20 20 20 ds(val);..
149c0 20 20 20 20 20 20 63 61 73 65 20 54 6f 6e 65 2e case Tone.
149d0 54 79 70 65 2e 46 72 65 71 75 65 6e 63 79 3a 0a Type.Frequency:.
149e0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
149f0 20 72 65 74 75 72 6e 20 74 68 69 73 2e 74 6f 46 return this.toF
14a00 72 65 71 75 65 6e 63 79 28 76 61 6c 29 3b 0a 09 requency(val);..
14a10 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case
14a20 20 54 6f 6e 65 2e 54 79 70 65 2e 44 65 63 69 62 Tone.Type.Decib
14a30 65 6c 73 3a 0a 09 20 20 20 20 20 20 20 20 20 20 els:..
14a40 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
14a50 73 2e 64 62 54 6f 47 61 69 6e 28 76 61 6c 29 3b s.dbToGain(val);
14a60 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61 .. ca
14a70 73 65 20 54 6f 6e 65 2e 54 79 70 65 2e 4e 6f 72 se Tone.Type.Nor
14a80 6d 61 6c 52 61 6e 67 65 3a 0a 09 20 20 20 20 20 malRange:..
14a90 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
14aa0 6e 20 4d 61 74 68 2e 6d 69 6e 28 4d 61 74 68 2e n Math.min(Math.
14ab0 6d 61 78 28 76 61 6c 2c 20 30 29 2c 20 31 29 3b max(val, 0), 1);
14ac0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61 .. ca
14ad0 73 65 20 54 6f 6e 65 2e 54 79 70 65 2e 41 75 64 se Tone.Type.Aud
14ae0 69 6f 52 61 6e 67 65 3a 0a 09 20 20 20 20 20 20 ioRange:..
14af0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
14b00 20 4d 61 74 68 2e 6d 69 6e 28 4d 61 74 68 2e 6d Math.min(Math.m
14b10 61 78 28 76 61 6c 2c 20 2d 31 29 2c 20 31 29 3b ax(val, -1), 1);
14b20 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 63 61 .. ca
14b30 73 65 20 54 6f 6e 65 2e 54 79 70 65 2e 50 6f 73 se Tone.Type.Pos
14b40 69 74 69 76 65 3a 0a 09 20 20 20 20 20 20 20 20 itive:..
14b50 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d return M
14b60 61 74 68 2e 6d 61 78 28 76 61 6c 2c 20 30 29 3b ath.max(val, 0);
14b70 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 64 65 .. de
14b80 66 61 75 6c 74 3a 0a 09 20 20 20 20 20 20 20 20 fault:..
14b90 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 return v
14ba0 61 6c 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 al;..
14bb0 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c }.. } el
14bc0 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 se {..
14bd0 20 20 72 65 74 75 72 6e 20 76 61 6c 3b 0a 09 20 return val;..
14be0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b }.. };
14bf0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 43 .. /**... * C
14c00 6f 6e 76 65 72 74 20 74 68 65 20 70 61 72 61 6d onvert the param
14c10 65 74 65 72 73 20 76 61 6c 75 65 20 69 6e 74 6f eters value into
14c20 20 74 68 65 20 75 6e 69 74 73 20 73 70 65 63 69 the units speci
14c30 66 69 65 64 20 62 79 20 54 6f 6e 65 2e 50 61 72 fied by Tone.Par
14c40 61 6d 2e 75 6e 69 74 73 2e 0a 09 09 20 2a 20 40 am.units.... * @
14c50 70 72 69 76 61 74 65 0a 09 09 20 2a 20 40 70 61 private... * @pa
14c60 72 61 6d 20 20 7b 6e 75 6d 62 65 72 7d 20 76 61 ram {number} va
14c70 6c 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20 63 l the value to c
14c80 6f 6e 76 65 72 74 0a 09 09 20 2a 20 40 72 65 74 onvert... * @ret
14c90 75 72 6e 20 7b 6e 75 6d 62 65 72 7d 0a 09 09 20 urn {number}...
14ca0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 72 */.. Tone.Par
14cb0 61 6d 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 74 6f am.prototype._to
14cc0 55 6e 69 74 73 20 3d 20 66 75 6e 63 74 69 6f 6e Units = function
14cd0 20 28 76 61 6c 29 20 7b 0a 09 20 20 20 20 20 20 (val) {..
14ce0 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6e 76 65 if (this.conve
14cf0 72 74 20 7c 7c 20 74 68 69 73 2e 69 73 55 6e 64 rt || this.isUnd
14d00 65 66 28 74 68 69 73 2e 63 6f 6e 76 65 72 74 29 ef(this.convert)
14d10 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
14d20 20 73 77 69 74 63 68 20 28 74 68 69 73 2e 75 6e switch (this.un
14d30 69 74 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 its) {..
14d40 20 20 20 20 63 61 73 65 20 54 6f 6e 65 2e 54 79 case Tone.Ty
14d50 70 65 2e 44 65 63 69 62 65 6c 73 3a 0a 09 20 20 pe.Decibels:..
14d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
14d70 74 75 72 6e 20 74 68 69 73 2e 67 61 69 6e 54 6f turn this.gainTo
14d80 44 62 28 76 61 6c 29 3b 0a 09 20 20 20 20 20 20 Db(val);..
14d90 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 09 default:..
14da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
14db0 72 65 74 75 72 6e 20 76 61 6c 3b 0a 09 20 20 20 return val;..
14dc0 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
14dd0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 } else {..
14de0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
14df0 20 76 61 6c 3b 0a 09 20 20 20 20 20 20 20 20 7d val;.. }
14e00 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
14e10 2a 0a 09 09 20 2a 20 20 74 68 65 20 6d 69 6e 69 *... * the mini
14e20 6d 75 6d 20 6f 75 74 70 75 74 20 76 61 6c 75 65 mum output value
14e30 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e 75 ... * @type {Nu
14e40 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 70 72 69 mber}... * @pri
14e50 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 vate... */..
14e60 54 6f 6e 65 2e 50 61 72 61 6d 2e 70 72 6f 74 6f Tone.Param.proto
14e70 74 79 70 65 2e 5f 6d 69 6e 4f 75 74 70 75 74 20 type._minOutput
14e80 3d 20 30 2e 30 30 30 30 31 3b 0a 09 20 20 20 20 = 0.00001;..
14e90 2f 2a 2a 0a 09 09 20 2a 20 20 53 63 68 65 64 75 /**... * Schedu
14ea0 6c 65 73 20 61 20 70 61 72 61 6d 65 74 65 72 20 les a parameter
14eb0 76 61 6c 75 65 20 63 68 61 6e 67 65 20 61 74 20 value change at
14ec0 74 68 65 20 67 69 76 65 6e 20 74 69 6d 65 2e 0a the given time..
14ed0 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 2a 7d .. * @param {*}
14ee0 09 76 61 6c 75 65 20 54 68 65 20 76 61 6c 75 65 .value The value
14ef0 20 74 6f 20 73 65 74 20 74 68 65 20 73 69 67 6e to set the sign
14f00 61 6c 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d al.... * @param
14f10 20 7b 54 69 6d 65 7d 20 20 74 69 6d 65 20 54 68 {Time} time Th
14f20 65 20 74 69 6d 65 20 77 68 65 6e 20 74 68 65 20 e time when the
14f30 63 68 61 6e 67 65 20 73 68 6f 75 6c 64 20 6f 63 change should oc
14f40 63 75 72 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 cur.... * @retu
14f50 72 6e 73 20 7b 54 6f 6e 65 2e 50 61 72 61 6d 7d rns {Tone.Param}
14f60 20 74 68 69 73 0a 09 09 20 2a 20 20 40 65 78 61 this... * @exa
14f70 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f 73 65 74 20 mple... * //set
14f80 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 74 6f the frequency to
14f90 20 22 47 34 22 20 69 6e 20 65 78 61 63 74 6c 79 "G4" in exactly
14fa0 20 31 20 73 65 63 6f 6e 64 20 66 72 6f 6d 20 6e 1 second from n
14fb0 6f 77 2e 20 0a 09 09 20 2a 20 66 72 65 71 2e 73 ow. ... * freq.s
14fc0 65 74 56 61 6c 75 65 41 74 54 69 6d 65 28 22 47 etValueAtTime("G
14fd0 34 22 2c 20 22 2b 31 22 29 3b 0a 09 09 20 2a 2f 4", "+1");... */
14fe0 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 72 61 6d .. Tone.Param
14ff0 2e 70 72 6f 74 6f 74 79 70 65 2e 73 65 74 56 61 .prototype.setVa
15000 6c 75 65 41 74 54 69 6d 65 20 3d 20 66 75 6e 63 lueAtTime = func
15010 74 69 6f 6e 20 28 76 61 6c 75 65 2c 20 74 69 6d tion (value, tim
15020 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 e) {.. va
15030 6c 75 65 20 3d 20 74 68 69 73 2e 5f 66 72 6f 6d lue = this._from
15040 55 6e 69 74 73 28 76 61 6c 75 65 29 3b 0a 09 20 Units(value);..
15050 20 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 time = th
15060 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d is.toSeconds(tim
15070 65 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 e);.. if
15080 28 74 69 6d 65 20 3c 3d 20 74 68 69 73 2e 6e 6f (time <= this.no
15090 77 28 29 20 2b 20 74 68 69 73 2e 62 6c 6f 63 6b w() + this.block
150a0 54 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 Time) {..
150b0 20 20 20 20 20 74 68 69 73 2e 5f 70 61 72 61 6d this._param
150c0 2e 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 3b 0a .value = value;.
150d0 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 . } else
150e0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
150f0 68 69 73 2e 5f 70 61 72 61 6d 2e 73 65 74 56 61 his._param.setVa
15100 6c 75 65 41 74 54 69 6d 65 28 76 61 6c 75 65 2c lueAtTime(value,
15110 20 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 time);..
15120 20 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 }.. retu
15130 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
15140 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
15150 43 72 65 61 74 65 73 20 61 20 73 63 68 65 64 75 Creates a schedu
15160 6c 65 20 70 6f 69 6e 74 20 77 69 74 68 20 74 68 le point with th
15170 65 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 20 e current value
15180 61 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 at the current t
15190 69 6d 65 2e 0a 09 09 20 2a 20 20 54 68 69 73 20 ime.... * This
151a0 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 63 72 is useful for cr
151b0 65 61 74 69 6e 67 20 61 6e 20 61 75 74 6f 6d 61 eating an automa
151c0 74 69 6f 6e 20 61 6e 63 68 6f 72 20 70 6f 69 6e tion anchor poin
151d0 74 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 0a 09 t in order to ..
151e0 09 20 2a 20 20 73 63 68 65 64 75 6c 65 20 63 68 . * schedule ch
151f0 61 6e 67 65 73 20 66 72 6f 6d 20 74 68 65 20 63 anges from the c
15200 75 72 72 65 6e 74 20 76 61 6c 75 65 2e 20 0a 09 urrent value. ..
15210 09 20 2a 0a 09 09 20 2a 20 20 40 70 61 72 61 6d . *... * @param
15220 20 7b 6e 75 6d 62 65 72 3d 7d 20 6e 6f 77 20 28 {number=} now (
15230 4f 70 74 69 6f 6e 61 6c 6c 79 29 20 70 61 73 73 Optionally) pass
15240 20 74 68 65 20 6e 6f 77 20 76 61 6c 75 65 20 69 the now value i
15250 6e 2e 20 0a 09 09 20 2a 20 20 40 72 65 74 75 72 n. ... * @retur
15260 6e 73 20 7b 54 6f 6e 65 2e 50 61 72 61 6d 7d 20 ns {Tone.Param}
15270 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
15280 54 6f 6e 65 2e 50 61 72 61 6d 2e 70 72 6f 74 6f Tone.Param.proto
15290 74 79 70 65 2e 73 65 74 52 61 6d 70 50 6f 69 6e type.setRampPoin
152a0 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6e 6f t = function (no
152b0 77 29 20 7b 0a 09 20 20 20 20 20 20 20 20 6e 6f w) {.. no
152c0 77 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 w = this.default
152d0 41 72 67 28 6e 6f 77 2c 20 74 68 69 73 2e 6e 6f Arg(now, this.no
152e0 77 28 29 29 3b 0a 09 20 20 20 20 20 20 20 20 76 w());.. v
152f0 61 72 20 63 75 72 72 65 6e 74 56 61 6c 20 3d 20 ar currentVal =
15300 74 68 69 73 2e 5f 70 61 72 61 6d 2e 76 61 6c 75 this._param.valu
15310 65 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 20 65 e;.. // e
15320 78 70 6f 6e 65 6e 74 69 61 6c 52 61 6d 70 54 6f xponentialRampTo
15330 56 61 6c 75 65 41 74 20 63 61 6e 6e 6f 74 20 65 ValueAt cannot e
15340 76 65 72 20 72 61 6d 70 20 66 72 6f 6d 20 6f 72 ver ramp from or
15350 20 74 6f 20 30 0a 09 20 20 20 20 20 20 20 20 2f to 0.. /
15360 2f 20 4d 6f 72 65 20 69 6e 66 6f 3a 20 68 74 74 / More info: htt
15370 70 73 3a 2f 2f 62 75 67 7a 69 6c 6c 61 2e 6d 6f ps://bugzilla.mo
15380 7a 69 6c 6c 61 2e 6f 72 67 2f 73 68 6f 77 5f 62 zilla.org/show_b
15390 75 67 2e 63 67 69 3f 69 64 3d 31 31 32 35 36 30 ug.cgi?id=112560
153a0 30 23 63 32 0a 09 20 20 20 20 20 20 20 20 69 66 0#c2.. if
153b0 20 28 63 75 72 72 65 6e 74 56 61 6c 20 3d 3d 3d (currentVal ===
153c0 20 30 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 0) {..
153d0 20 20 20 63 75 72 72 65 6e 74 56 61 6c 20 3d 20 currentVal =
153e0 74 68 69 73 2e 5f 6d 69 6e 4f 75 74 70 75 74 3b this._minOutput;
153f0 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
15400 20 20 20 20 20 74 68 69 73 2e 5f 70 61 72 61 6d this._param
15410 2e 73 65 74 56 61 6c 75 65 41 74 54 69 6d 65 28 .setValueAtTime(
15420 63 75 72 72 65 6e 74 56 61 6c 2c 20 6e 6f 77 29 currentVal, now)
15430 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
15440 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
15450 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 . /**... * S
15460 63 68 65 64 75 6c 65 73 20 61 20 6c 69 6e 65 61 chedules a linea
15470 72 20 63 6f 6e 74 69 6e 75 6f 75 73 20 63 68 61 r continuous cha
15480 6e 67 65 20 69 6e 20 70 61 72 61 6d 65 74 65 72 nge in parameter
15490 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 value from the
154a0 0a 09 09 20 2a 20 20 70 72 65 76 69 6f 75 73 20 ... * previous
154b0 73 63 68 65 64 75 6c 65 64 20 70 61 72 61 6d 65 scheduled parame
154c0 74 65 72 20 76 61 6c 75 65 20 74 6f 20 74 68 65 ter value to the
154d0 20 67 69 76 65 6e 20 76 61 6c 75 65 2e 0a 09 09 given value....
154e0 20 2a 20 20 0a 09 09 20 2a 20 20 40 70 61 72 61 * ... * @para
154f0 6d 20 20 7b 6e 75 6d 62 65 72 7d 20 76 61 6c 75 m {number} valu
15500 65 20 20 20 0a 09 09 20 2a 20 20 40 70 61 72 61 e ... * @para
15510 6d 20 20 7b 54 69 6d 65 7d 20 65 6e 64 54 69 6d m {Time} endTim
15520 65 20 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e e ... * @return
15530 73 20 7b 54 6f 6e 65 2e 50 61 72 61 6d 7d 20 74 s {Tone.Param} t
15540 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
15550 6f 6e 65 2e 50 61 72 61 6d 2e 70 72 6f 74 6f 74 one.Param.protot
15560 79 70 65 2e 6c 69 6e 65 61 72 52 61 6d 70 54 6f ype.linearRampTo
15570 56 61 6c 75 65 41 74 54 69 6d 65 20 3d 20 66 75 ValueAtTime = fu
15580 6e 63 74 69 6f 6e 20 28 76 61 6c 75 65 2c 20 65 nction (value, e
15590 6e 64 54 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 ndTime) {..
155a0 20 20 20 76 61 6c 75 65 20 3d 20 74 68 69 73 2e value = this.
155b0 5f 66 72 6f 6d 55 6e 69 74 73 28 76 61 6c 75 65 _fromUnits(value
155c0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
155d0 2e 5f 70 61 72 61 6d 2e 6c 69 6e 65 61 72 52 61 ._param.linearRa
155e0 6d 70 54 6f 56 61 6c 75 65 41 74 54 69 6d 65 28 mpToValueAtTime(
155f0 76 61 6c 75 65 2c 20 74 68 69 73 2e 74 6f 53 65 value, this.toSe
15600 63 6f 6e 64 73 28 65 6e 64 54 69 6d 65 29 29 3b conds(endTime));
15610 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
15620 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
15630 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 63 /**... * Sc
15640 68 65 64 75 6c 65 73 20 61 6e 20 65 78 70 6f 6e hedules an expon
15650 65 6e 74 69 61 6c 20 63 6f 6e 74 69 6e 75 6f 75 ential continuou
15660 73 20 63 68 61 6e 67 65 20 69 6e 20 70 61 72 61 s change in para
15670 6d 65 74 65 72 20 76 61 6c 75 65 20 66 72 6f 6d meter value from
15680 20 0a 09 09 20 2a 20 20 74 68 65 20 70 72 65 76 ... * the prev
15690 69 6f 75 73 20 73 63 68 65 64 75 6c 65 64 20 70 ious scheduled p
156a0 61 72 61 6d 65 74 65 72 20 76 61 6c 75 65 20 74 arameter value t
156b0 6f 20 74 68 65 20 67 69 76 65 6e 20 76 61 6c 75 o the given valu
156c0 65 2e 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 e.... * ... *
156d0 40 70 61 72 61 6d 20 20 7b 6e 75 6d 62 65 72 7d @param {number}
156e0 20 76 61 6c 75 65 20 20 20 0a 09 09 20 2a 20 20 value ... *
156f0 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 65 @param {Time} e
15700 6e 64 54 69 6d 65 20 0a 09 09 20 2a 20 20 40 72 ndTime ... * @r
15710 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 50 61 72 eturns {Tone.Par
15720 61 6d 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 am} this... */..
15730 20 20 20 20 54 6f 6e 65 2e 50 61 72 61 6d 2e 70 Tone.Param.p
15740 72 6f 74 6f 74 79 70 65 2e 65 78 70 6f 6e 65 6e rototype.exponen
15750 74 69 61 6c 52 61 6d 70 54 6f 56 61 6c 75 65 41 tialRampToValueA
15760 74 54 69 6d 65 20 3d 20 66 75 6e 63 74 69 6f 6e tTime = function
15770 20 28 76 61 6c 75 65 2c 20 65 6e 64 54 69 6d 65 (value, endTime
15780 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 6c ) {.. val
15790 75 65 20 3d 20 74 68 69 73 2e 5f 66 72 6f 6d 55 ue = this._fromU
157a0 6e 69 74 73 28 76 61 6c 75 65 29 3b 0a 09 20 20 nits(value);..
157b0 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 4d 61 value = Ma
157c0 74 68 2e 6d 61 78 28 74 68 69 73 2e 5f 6d 69 6e th.max(this._min
157d0 4f 75 74 70 75 74 2c 20 76 61 6c 75 65 29 3b 0a Output, value);.
157e0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 . this._p
157f0 61 72 61 6d 2e 65 78 70 6f 6e 65 6e 74 69 61 6c aram.exponential
15800 52 61 6d 70 54 6f 56 61 6c 75 65 41 74 54 69 6d RampToValueAtTim
15810 65 28 76 61 6c 75 65 2c 20 74 68 69 73 2e 74 6f e(value, this.to
15820 53 65 63 6f 6e 64 73 28 65 6e 64 54 69 6d 65 29 Seconds(endTime)
15830 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 );.. retu
15840 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
15850 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
15860 53 63 68 65 64 75 6c 65 73 20 61 6e 20 65 78 70 Schedules an exp
15870 6f 6e 65 6e 74 69 61 6c 20 63 6f 6e 74 69 6e 75 onential continu
15880 6f 75 73 20 63 68 61 6e 67 65 20 69 6e 20 70 61 ous change in pa
15890 72 61 6d 65 74 65 72 20 76 61 6c 75 65 20 66 72 rameter value fr
158a0 6f 6d 20 0a 09 09 20 2a 20 20 74 68 65 20 63 75 om ... * the cu
158b0 72 72 65 6e 74 20 74 69 6d 65 20 61 6e 64 20 63 rrent time and c
158c0 75 72 72 65 6e 74 20 76 61 6c 75 65 20 74 6f 20 urrent value to
158d0 74 68 65 20 67 69 76 65 6e 20 76 61 6c 75 65 20 the given value
158e0 6f 76 65 72 20 74 68 65 20 0a 09 09 20 2a 20 20 over the ... *
158f0 64 75 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 duration of the
15900 72 61 6d 70 54 69 6d 65 2e 0a 09 09 20 2a 20 20 rampTime.... *
15910 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
15920 6e 75 6d 62 65 72 7d 20 76 61 6c 75 65 20 20 20 number} value
15930 54 68 65 20 76 61 6c 75 65 20 74 6f 20 72 61 6d The value to ram
15940 70 20 74 6f 2e 0a 09 09 20 2a 20 20 40 70 61 72 p to.... * @par
15950 61 6d 20 20 7b 54 69 6d 65 7d 20 72 61 6d 70 54 am {Time} rampT
15960 69 6d 65 20 74 68 65 20 74 69 6d 65 20 74 68 61 ime the time tha
15970 74 20 69 74 20 74 61 6b 65 73 20 74 68 65 20 0a t it takes the .
15980 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 .. *
15990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
159a0 20 20 20 76 61 6c 75 65 20 74 6f 20 72 61 6d 70 value to ramp
159b0 20 66 72 6f 6d 20 69 74 27 73 20 63 75 72 72 65 from it's curre
159c0 6e 74 20 76 61 6c 75 65 0a 09 09 20 2a 20 20 40 nt value... * @
159d0 70 61 72 61 6d 20 7b 54 69 6d 65 7d 09 5b 73 74 param {Time}.[st
159e0 61 72 74 54 69 6d 65 3d 6e 6f 77 5d 20 09 57 68 artTime=now] .Wh
159f0 65 6e 20 74 68 65 20 72 61 6d 70 20 73 68 6f 75 en the ramp shou
15a00 6c 64 20 73 74 61 72 74 2e 20 0a 09 09 20 2a 20 ld start. ... *
15a10 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e @returns {Tone.
15a20 50 61 72 61 6d 7d 20 74 68 69 73 0a 09 09 20 2a Param} this... *
15a30 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 @example... *
15a40 2f 2f 65 78 70 6f 6e 65 6e 74 69 61 6c 6c 79 20 //exponentially
15a50 72 61 6d 70 20 74 6f 20 74 68 65 20 76 61 6c 75 ramp to the valu
15a60 65 20 32 20 6f 76 65 72 20 34 20 73 65 63 6f 6e e 2 over 4 secon
15a70 64 73 2e 20 0a 09 09 20 2a 20 73 69 67 6e 61 6c ds. ... * signal
15a80 2e 65 78 70 6f 6e 65 6e 74 69 61 6c 52 61 6d 70 .exponentialRamp
15a90 54 6f 56 61 6c 75 65 28 32 2c 20 34 29 3b 0a 09 ToValue(2, 4);..
15aa0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 . */.. Tone.P
15ab0 61 72 61 6d 2e 70 72 6f 74 6f 74 79 70 65 2e 65 aram.prototype.e
15ac0 78 70 6f 6e 65 6e 74 69 61 6c 52 61 6d 70 54 6f xponentialRampTo
15ad0 56 61 6c 75 65 20 3d 20 66 75 6e 63 74 69 6f 6e Value = function
15ae0 20 28 76 61 6c 75 65 2c 20 72 61 6d 70 54 69 6d (value, rampTim
15af0 65 2c 20 73 74 61 72 74 54 69 6d 65 29 20 7b 0a e, startTime) {.
15b00 09 20 20 20 20 20 20 20 20 73 74 61 72 74 54 69 . startTi
15b10 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f me = this.toSeco
15b20 6e 64 73 28 73 74 61 72 74 54 69 6d 65 29 3b 0a nds(startTime);.
15b30 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 . this.se
15b40 74 52 61 6d 70 50 6f 69 6e 74 28 73 74 61 72 74 tRampPoint(start
15b50 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 Time);..
15b60 74 68 69 73 2e 65 78 70 6f 6e 65 6e 74 69 61 6c this.exponential
15b70 52 61 6d 70 54 6f 56 61 6c 75 65 41 74 54 69 6d RampToValueAtTim
15b80 65 28 76 61 6c 75 65 2c 20 73 74 61 72 74 54 69 e(value, startTi
15b90 6d 65 20 2b 20 74 68 69 73 2e 74 6f 53 65 63 6f me + this.toSeco
15ba0 6e 64 73 28 72 61 6d 70 54 69 6d 65 29 29 3b 0a nds(rampTime));.
15bb0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
15bc0 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
15bd0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 63 68 /**... * Sch
15be0 65 64 75 6c 65 73 20 61 6e 20 6c 69 6e 65 61 72 edules an linear
15bf0 20 63 6f 6e 74 69 6e 75 6f 75 73 20 63 68 61 6e continuous chan
15c00 67 65 20 69 6e 20 70 61 72 61 6d 65 74 65 72 20 ge in parameter
15c10 76 61 6c 75 65 20 66 72 6f 6d 20 0a 09 09 20 2a value from ... *
15c20 20 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 69 the current ti
15c30 6d 65 20 61 6e 64 20 63 75 72 72 65 6e 74 20 76 me and current v
15c40 61 6c 75 65 20 74 6f 20 74 68 65 20 67 69 76 65 alue to the give
15c50 6e 20 76 61 6c 75 65 20 6f 76 65 72 20 74 68 65 n value over the
15c60 20 0a 09 09 20 2a 20 20 64 75 72 61 74 69 6f 6e ... * duration
15c70 20 6f 66 20 74 68 65 20 72 61 6d 70 54 69 6d 65 of the rampTime
15c80 2e 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 .... * ... * @
15c90 70 61 72 61 6d 20 20 7b 6e 75 6d 62 65 72 7d 20 param {number}
15ca0 76 61 6c 75 65 20 20 20 54 68 65 20 76 61 6c 75 value The valu
15cb0 65 20 74 6f 20 72 61 6d 70 20 74 6f 2e 0a 09 09 e to ramp to....
15cc0 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d * @param {Tim
15cd0 65 7d 20 72 61 6d 70 54 69 6d 65 20 74 68 65 20 e} rampTime the
15ce0 74 69 6d 65 20 74 68 61 74 20 69 74 20 74 61 6b time that it tak
15cf0 65 73 20 74 68 65 20 0a 09 09 20 2a 20 20 20 20 es the ... *
15d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15d10 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 value
15d20 20 74 6f 20 72 61 6d 70 20 66 72 6f 6d 20 69 74 to ramp from it
15d30 27 73 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 's current value
15d40 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 ... * @param {T
15d50 69 6d 65 7d 09 5b 73 74 61 72 74 54 69 6d 65 3d ime}.[startTime=
15d60 6e 6f 77 5d 20 09 57 68 65 6e 20 74 68 65 20 72 now] .When the r
15d70 61 6d 70 20 73 68 6f 75 6c 64 20 73 74 61 72 74 amp should start
15d80 2e 20 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e . ... * @return
15d90 73 20 7b 54 6f 6e 65 2e 50 61 72 61 6d 7d 20 74 s {Tone.Param} t
15da0 68 69 73 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 his... * @examp
15db0 6c 65 0a 09 09 20 2a 20 2f 2f 6c 69 6e 65 61 72 le... * //linear
15dc0 6c 79 20 72 61 6d 70 20 74 6f 20 74 68 65 20 76 ly ramp to the v
15dd0 61 6c 75 65 20 34 20 6f 76 65 72 20 33 20 73 65 alue 4 over 3 se
15de0 63 6f 6e 64 73 2e 20 0a 09 09 20 2a 20 73 69 67 conds. ... * sig
15df0 6e 61 6c 2e 6c 69 6e 65 61 72 52 61 6d 70 54 6f nal.linearRampTo
15e00 56 61 6c 75 65 28 34 2c 20 33 29 3b 0a 09 09 20 Value(4, 3);...
15e10 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 72 */.. Tone.Par
15e20 61 6d 2e 70 72 6f 74 6f 74 79 70 65 2e 6c 69 6e am.prototype.lin
15e30 65 61 72 52 61 6d 70 54 6f 56 61 6c 75 65 20 3d earRampToValue =
15e40 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 75 65 function (value
15e50 2c 20 72 61 6d 70 54 69 6d 65 2c 20 73 74 61 72 , rampTime, star
15e60 74 54 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 tTime) {..
15e70 20 20 73 74 61 72 74 54 69 6d 65 20 3d 20 74 68 startTime = th
15e80 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 73 74 61 is.toSeconds(sta
15e90 72 74 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 rtTime);..
15ea0 20 20 74 68 69 73 2e 73 65 74 52 61 6d 70 50 6f this.setRampPo
15eb0 69 6e 74 28 73 74 61 72 74 54 69 6d 65 29 3b 0a int(startTime);.
15ec0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 69 . this.li
15ed0 6e 65 61 72 52 61 6d 70 54 6f 56 61 6c 75 65 41 nearRampToValueA
15ee0 74 54 69 6d 65 28 76 61 6c 75 65 2c 20 73 74 61 tTime(value, sta
15ef0 72 74 54 69 6d 65 20 2b 20 74 68 69 73 2e 74 6f rtTime + this.to
15f00 53 65 63 6f 6e 64 73 28 72 61 6d 70 54 69 6d 65 Seconds(rampTime
15f10 29 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ));.. ret
15f20 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
15f30 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
15f40 20 53 74 61 72 74 20 65 78 70 6f 6e 65 6e 74 69 Start exponenti
15f50 61 6c 6c 79 20 61 70 70 72 6f 61 63 68 69 6e 67 ally approaching
15f60 20 74 68 65 20 74 61 72 67 65 74 20 76 61 6c 75 the target valu
15f70 65 20 61 74 20 74 68 65 20 67 69 76 65 6e 20 74 e at the given t
15f80 69 6d 65 20 77 69 74 68 0a 09 09 20 2a 20 20 61 ime with... * a
15f90 20 72 61 74 65 20 68 61 76 69 6e 67 20 74 68 65 rate having the
15fa0 20 67 69 76 65 6e 20 74 69 6d 65 20 63 6f 6e 73 given time cons
15fb0 74 61 6e 74 2e 0a 09 09 20 2a 20 20 40 70 61 72 tant.... * @par
15fc0 61 6d 20 7b 6e 75 6d 62 65 72 7d 20 76 61 6c 75 am {number} valu
15fd0 65 20 20 20 20 20 20 20 20 0a 09 09 20 2a 20 20 e ... *
15fe0 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 73 74 @param {Time} st
15ff0 61 72 74 54 69 6d 65 20 20 20 20 0a 09 09 20 2a artTime ... *
16000 20 20 40 70 61 72 61 6d 20 7b 6e 75 6d 62 65 72 @param {number
16010 7d 20 74 69 6d 65 43 6f 6e 73 74 61 6e 74 20 0a } timeConstant .
16020 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
16030 54 6f 6e 65 2e 50 61 72 61 6d 7d 20 74 68 69 73 Tone.Param} this
16040 20 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e ... */.. Ton
16050 65 2e 50 61 72 61 6d 2e 70 72 6f 74 6f 74 79 70 e.Param.prototyp
16060 65 2e 73 65 74 54 61 72 67 65 74 41 74 54 69 6d e.setTargetAtTim
16070 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 e = function (va
16080 6c 75 65 2c 20 73 74 61 72 74 54 69 6d 65 2c 20 lue, startTime,
16090 74 69 6d 65 43 6f 6e 73 74 61 6e 74 29 20 7b 0a timeConstant) {.
160a0 09 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d . value =
160b0 20 74 68 69 73 2e 5f 66 72 6f 6d 55 6e 69 74 73 this._fromUnits
160c0 28 76 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 (value);..
160d0 20 20 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 77 // The value w
160e0 69 6c 6c 20 6e 65 76 65 72 20 62 65 20 61 62 6c ill never be abl
160f0 65 20 74 6f 20 61 70 70 72 6f 61 63 68 20 77 69 e to approach wi
16100 74 68 6f 75 74 20 74 69 6d 65 43 6f 6e 73 74 61 thout timeConsta
16110 6e 74 20 3e 20 30 2e 0a 09 20 20 20 20 20 20 20 nt > 0...
16120 20 2f 2f 20 68 74 74 70 3a 2f 2f 77 77 77 2e 77 // http://www.w
16130 33 2e 6f 72 67 2f 54 52 2f 77 65 62 61 75 64 69 3.org/TR/webaudi
16140 6f 2f 23 64 66 6e 2d 73 65 74 54 61 72 67 65 74 o/#dfn-setTarget
16150 41 74 54 69 6d 65 2c 20 77 68 65 72 65 20 74 68 AtTime, where th
16160 65 20 65 71 75 61 74 69 6f 6e 0a 09 20 20 20 20 e equation..
16170 20 20 20 20 2f 2f 20 69 73 20 64 65 73 63 72 69 // is descri
16180 62 65 64 2e 20 30 20 72 65 73 75 6c 74 73 20 69 bed. 0 results i
16190 6e 20 61 20 64 69 76 69 73 69 6f 6e 20 62 79 20 n a division by
161a0 30 2e 0a 09 20 20 20 20 20 20 20 20 76 61 6c 75 0... valu
161b0 65 20 3d 20 4d 61 74 68 2e 6d 61 78 28 74 68 69 e = Math.max(thi
161c0 73 2e 5f 6d 69 6e 4f 75 74 70 75 74 2c 20 76 61 s._minOutput, va
161d0 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 lue);.. t
161e0 69 6d 65 43 6f 6e 73 74 61 6e 74 20 3d 20 4d 61 imeConstant = Ma
161f0 74 68 2e 6d 61 78 28 74 68 69 73 2e 5f 6d 69 6e th.max(this._min
16200 4f 75 74 70 75 74 2c 20 74 69 6d 65 43 6f 6e 73 Output, timeCons
16210 74 61 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 20 tant);..
16220 74 68 69 73 2e 5f 70 61 72 61 6d 2e 73 65 74 54 this._param.setT
16230 61 72 67 65 74 41 74 54 69 6d 65 28 76 61 6c 75 argetAtTime(valu
16240 65 2c 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 e, this.toSecond
16250 73 28 73 74 61 72 74 54 69 6d 65 29 2c 20 74 69 s(startTime), ti
16260 6d 65 43 6f 6e 73 74 61 6e 74 29 3b 0a 09 20 20 meConstant);..
16270 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
16280 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
16290 2f 2a 2a 0a 09 09 20 2a 20 20 53 65 74 73 20 61 /**... * Sets a
162a0 6e 20 61 72 72 61 79 20 6f 66 20 61 72 62 69 74 n array of arbit
162b0 72 61 72 79 20 70 61 72 61 6d 65 74 65 72 20 76 rary parameter v
162c0 61 6c 75 65 73 20 73 74 61 72 74 69 6e 67 20 61 alues starting a
162d0 74 20 74 68 65 20 67 69 76 65 6e 20 74 69 6d 65 t the given time
162e0 0a 09 09 20 2a 20 20 66 6f 72 20 74 68 65 20 67 ... * for the g
162f0 69 76 65 6e 20 64 75 72 61 74 69 6f 6e 2e 0a 09 iven duration...
16300 09 20 2a 20 20 09 0a 09 09 20 2a 20 20 40 70 61 . * .... * @pa
16310 72 61 6d 20 7b 41 72 72 61 79 7d 20 76 61 6c 75 ram {Array} valu
16320 65 73 20 20 20 20 0a 09 09 20 2a 20 20 40 70 61 es ... * @pa
16330 72 61 6d 20 7b 54 69 6d 65 7d 20 73 74 61 72 74 ram {Time} start
16340 54 69 6d 65 20 0a 09 09 20 2a 20 20 40 70 61 72 Time ... * @par
16350 61 6d 20 7b 54 69 6d 65 7d 20 64 75 72 61 74 69 am {Time} durati
16360 6f 6e 20 20 0a 09 09 20 2a 20 20 40 72 65 74 75 on ... * @retu
16370 72 6e 73 20 7b 54 6f 6e 65 2e 50 61 72 61 6d 7d rns {Tone.Param}
16380 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
16390 20 54 6f 6e 65 2e 50 61 72 61 6d 2e 70 72 6f 74 Tone.Param.prot
163a0 6f 74 79 70 65 2e 73 65 74 56 61 6c 75 65 43 75 otype.setValueCu
163b0 72 76 65 41 74 54 69 6d 65 20 3d 20 66 75 6e 63 rveAtTime = func
163c0 74 69 6f 6e 20 28 76 61 6c 75 65 73 2c 20 73 74 tion (values, st
163d0 61 72 74 54 69 6d 65 2c 20 64 75 72 61 74 69 6f artTime, duratio
163e0 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 20 66 6f n) {.. fo
163f0 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 r (var i = 0; i
16400 3c 20 76 61 6c 75 65 73 2e 6c 65 6e 67 74 68 3b < values.length;
16410 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 i++) {..
16420 20 20 20 20 20 76 61 6c 75 65 73 5b 69 5d 20 3d values[i] =
16430 20 74 68 69 73 2e 5f 66 72 6f 6d 55 6e 69 74 73 this._fromUnits
16440 28 76 61 6c 75 65 73 5b 69 5d 29 3b 0a 09 20 20 (values[i]);..
16450 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
16460 20 74 68 69 73 2e 5f 70 61 72 61 6d 2e 73 65 74 this._param.set
16470 56 61 6c 75 65 43 75 72 76 65 41 74 54 69 6d 65 ValueCurveAtTime
16480 28 76 61 6c 75 65 73 2c 20 74 68 69 73 2e 74 6f (values, this.to
16490 53 65 63 6f 6e 64 73 28 73 74 61 72 74 54 69 6d Seconds(startTim
164a0 65 29 2c 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e e), this.toSecon
164b0 64 73 28 64 75 72 61 74 69 6f 6e 29 29 3b 0a 09 ds(duration));..
164c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
164d0 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
164e0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 61 6e 63 /**... * Canc
164f0 65 6c 73 20 61 6c 6c 20 73 63 68 65 64 75 6c 65 els all schedule
16500 64 20 70 61 72 61 6d 65 74 65 72 20 63 68 61 6e d parameter chan
16510 67 65 73 20 77 69 74 68 20 74 69 6d 65 73 20 67 ges with times g
16520 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 0a reater than or .
16530 09 09 20 2a 20 20 65 71 75 61 6c 20 74 6f 20 73 .. * equal to s
16540 74 61 72 74 54 69 6d 65 2e 0a 09 09 20 2a 20 20 tartTime.... *
16550 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
16560 54 69 6d 65 7d 20 73 74 61 72 74 54 69 6d 65 0a Time} startTime.
16570 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
16580 54 6f 6e 65 2e 50 61 72 61 6d 7d 20 74 68 69 73 Tone.Param} this
16590 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
165a0 2e 50 61 72 61 6d 2e 70 72 6f 74 6f 74 79 70 65 .Param.prototype
165b0 2e 63 61 6e 63 65 6c 53 63 68 65 64 75 6c 65 64 .cancelScheduled
165c0 56 61 6c 75 65 73 20 3d 20 66 75 6e 63 74 69 6f Values = functio
165d0 6e 20 28 73 74 61 72 74 54 69 6d 65 29 20 7b 0a n (startTime) {.
165e0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 . this._p
165f0 61 72 61 6d 2e 63 61 6e 63 65 6c 53 63 68 65 64 aram.cancelSched
16600 75 6c 65 64 56 61 6c 75 65 73 28 74 68 69 73 2e uledValues(this.
16610 74 6f 53 65 63 6f 6e 64 73 28 73 74 61 72 74 54 toSeconds(startT
16620 69 6d 65 29 29 3b 0a 09 20 20 20 20 20 20 20 20 ime));..
16630 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 return this;..
16640 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
16650 20 2a 20 20 52 61 6d 70 73 20 74 6f 20 74 68 65 * Ramps to the
16660 20 67 69 76 65 6e 20 76 61 6c 75 65 20 6f 76 65 given value ove
16670 72 20 74 68 65 20 64 75 72 61 74 69 6f 6e 20 6f r the duration o
16680 66 20 74 68 65 20 72 61 6d 70 54 69 6d 65 2e 20 f the rampTime.
16690 0a 09 09 20 2a 20 20 41 75 74 6f 6d 61 74 69 63 ... * Automatic
166a0 61 6c 6c 79 20 73 65 6c 65 63 74 73 20 74 68 65 ally selects the
166b0 20 62 65 73 74 20 72 61 6d 70 20 74 79 70 65 20 best ramp type
166c0 28 65 78 70 6f 6e 65 6e 74 69 61 6c 20 6f 72 20 (exponential or
166d0 6c 69 6e 65 61 72 29 0a 09 09 20 2a 20 20 64 65 linear)... * de
166e0 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 60 pending on the `
166f0 75 6e 69 74 73 60 20 6f 66 20 74 68 65 20 73 69 units` of the si
16700 67 6e 61 6c 0a 09 09 20 2a 20 20 0a 09 09 20 2a gnal... * ... *
16710 20 20 40 70 61 72 61 6d 20 20 7b 6e 75 6d 62 65 @param {numbe
16720 72 7d 20 76 61 6c 75 65 20 20 20 0a 09 09 20 2a r} value ... *
16730 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d @param {Time}
16740 20 72 61 6d 70 54 69 6d 65 20 09 54 68 65 20 74 rampTime .The t
16750 69 6d 65 20 74 68 61 74 20 69 74 20 74 61 6b 65 ime that it take
16760 73 20 74 68 65 20 0a 09 09 20 2a 20 20 20 20 20 s the ... *
16770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
16780 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 74 value t
16790 6f 20 72 61 6d 70 20 66 72 6f 6d 20 69 74 27 73 o ramp from it's
167a0 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 0a 09 current value..
167b0 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 6d . * @param {Tim
167c0 65 7d 09 5b 73 74 61 72 74 54 69 6d 65 3d 6e 6f e}.[startTime=no
167d0 77 5d 20 09 57 68 65 6e 20 74 68 65 20 72 61 6d w] .When the ram
167e0 70 20 73 68 6f 75 6c 64 20 73 74 61 72 74 2e 20 p should start.
167f0 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
16800 7b 54 6f 6e 65 2e 50 61 72 61 6d 7d 20 74 68 69 {Tone.Param} thi
16810 73 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 s... * @example
16820 0a 09 09 20 2a 20 2f 2f 72 61 6d 70 20 74 6f 20 ... * //ramp to
16830 74 68 65 20 76 61 6c 75 65 20 65 69 74 68 65 72 the value either
16840 20 6c 69 6e 65 61 72 6c 79 20 6f 72 20 65 78 70 linearly or exp
16850 6f 6e 65 6e 74 69 61 6c 6c 79 20 0a 09 09 20 2a onentially ... *
16860 20 2f 2f 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 //depending on
16870 74 68 65 20 22 75 6e 69 74 73 22 20 76 61 6c 75 the "units" valu
16880 65 20 6f 66 20 74 68 65 20 73 69 67 6e 61 6c 0a e of the signal.
16890 09 09 20 2a 20 73 69 67 6e 61 6c 2e 72 61 6d 70 .. * signal.ramp
168a0 54 6f 28 30 2c 20 31 30 29 3b 0a 09 09 20 2a 20 To(0, 10);... *
168b0 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f @example... * /
168c0 2f 73 63 68 65 64 75 6c 65 20 69 74 20 74 6f 20 /schedule it to
168d0 72 61 6d 70 20 73 74 61 72 74 69 6e 67 20 61 74 ramp starting at
168e0 20 61 20 73 70 65 63 69 66 69 63 20 74 69 6d 65 a specific time
168f0 0a 09 09 20 2a 20 73 69 67 6e 61 6c 2e 72 61 6d ... * signal.ram
16900 70 54 6f 28 30 2c 20 31 30 2c 20 35 29 0a 09 09 pTo(0, 10, 5)...
16910 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 */.. Tone.Pa
16920 72 61 6d 2e 70 72 6f 74 6f 74 79 70 65 2e 72 61 ram.prototype.ra
16930 6d 70 54 6f 20 3d 20 66 75 6e 63 74 69 6f 6e 20 mpTo = function
16940 28 76 61 6c 75 65 2c 20 72 61 6d 70 54 69 6d 65 (value, rampTime
16950 2c 20 73 74 61 72 74 54 69 6d 65 29 20 7b 0a 09 , startTime) {..
16960 20 20 20 20 20 20 20 20 72 61 6d 70 54 69 6d 65 rampTime
16970 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 = this.defaultA
16980 72 67 28 72 61 6d 70 54 69 6d 65 2c 20 30 29 3b rg(rampTime, 0);
16990 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
169a0 69 73 2e 75 6e 69 74 73 20 3d 3d 3d 20 54 6f 6e is.units === Ton
169b0 65 2e 54 79 70 65 2e 46 72 65 71 75 65 6e 63 79 e.Type.Frequency
169c0 20 7c 7c 20 74 68 69 73 2e 75 6e 69 74 73 20 3d || this.units =
169d0 3d 3d 20 54 6f 6e 65 2e 54 79 70 65 2e 42 50 4d == Tone.Type.BPM
169e0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
169f0 20 74 68 69 73 2e 65 78 70 6f 6e 65 6e 74 69 61 this.exponentia
16a00 6c 52 61 6d 70 54 6f 56 61 6c 75 65 28 76 61 6c lRampToValue(val
16a10 75 65 2c 20 72 61 6d 70 54 69 6d 65 2c 20 73 74 ue, rampTime, st
16a20 61 72 74 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 artTime);..
16a30 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
16a40 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 69 this.li
16a50 6e 65 61 72 52 61 6d 70 54 6f 56 61 6c 75 65 28 nearRampToValue(
16a60 76 61 6c 75 65 2c 20 72 61 6d 70 54 69 6d 65 2c value, rampTime,
16a70 20 73 74 61 72 74 54 69 6d 65 29 3b 0a 09 20 20 startTime);..
16a80 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
16a90 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
16aa0 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
16ab0 09 20 2a 20 20 54 68 65 20 4c 46 4f 20 63 72 65 . * The LFO cre
16ac0 61 74 65 64 20 62 79 20 74 68 65 20 73 69 67 6e ated by the sign
16ad0 61 6c 20 69 6e 73 74 61 6e 63 65 2e 20 49 66 20 al instance. If
16ae0 6e 6f 6e 65 0a 09 09 20 2a 20 20 77 61 73 20 63 none... * was c
16af0 72 65 61 74 65 64 2c 20 74 68 69 73 20 69 73 20 reated, this is
16b00 6e 75 6c 6c 2e 0a 09 09 20 2a 20 20 40 74 79 70 null.... * @typ
16b10 65 20 7b 54 6f 6e 65 2e 4c 46 4f 7d 0a 09 09 20 e {Tone.LFO}...
16b20 2a 20 20 40 72 65 61 64 4f 6e 6c 79 0a 09 09 20 * @readOnly...
16b30 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
16b40 65 2e 50 61 72 61 6d 23 0a 09 09 20 2a 20 20 40 e.Param#... * @
16b50 6e 61 6d 65 20 6c 66 6f 0a 09 09 20 2a 2f 0a 09 name lfo... */..
16b60 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
16b70 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 eProperty(Tone.P
16b80 61 72 61 6d 2e 70 72 6f 74 6f 74 79 70 65 2c 20 aram.prototype,
16b90 27 6c 66 6f 27 2c 20 7b 0a 09 20 20 20 20 20 20 'lfo', {..
16ba0 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
16bb0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
16bc0 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6c return this._l
16bd0 66 6f 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 fo;.. }..
16be0 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
16bf0 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 0a ... * Clean up.
16c00 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
16c10 54 6f 6e 65 2e 50 61 72 61 6d 7d 20 74 68 69 73 Tone.Param} this
16c20 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
16c30 2e 50 61 72 61 6d 2e 70 72 6f 74 6f 74 79 70 65 .Param.prototype
16c40 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 .dispose = funct
16c50 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
16c60 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 Tone.prototype
16c70 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 .dispose.call(th
16c80 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 is);.. th
16c90 69 73 2e 5f 70 61 72 61 6d 20 3d 20 6e 75 6c 6c is._param = null
16ca0 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 ;.. if (t
16cb0 68 69 73 2e 5f 6c 66 6f 29 20 7b 0a 09 20 20 20 his._lfo) {..
16cc0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c this._l
16cd0 66 6f 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 fo.dispose();..
16ce0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
16cf0 5f 6c 66 6f 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 _lfo = null;..
16d00 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
16d10 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
16d20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
16d30 6e 20 54 6f 6e 65 2e 50 61 72 61 6d 3b 0a 09 7d n Tone.Param;..}
16d40 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
16d50 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
16d60 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a .. /**... *
16d70 20 20 40 63 6c 61 73 73 20 41 20 74 68 69 6e 20 @class A thin
16d80 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 wrapper around t
16d90 68 65 20 4e 61 74 69 76 65 20 57 65 62 20 41 75 he Native Web Au
16da0 64 69 6f 20 47 61 69 6e 4e 6f 64 65 2e 0a 09 09 dio GainNode....
16db0 20 2a 20 20 20 20 20 20 20 20 20 54 68 65 20 47 * The G
16dc0 61 69 6e 4e 6f 64 65 20 69 73 20 61 20 62 61 73 ainNode is a bas
16dd0 69 63 20 62 75 69 6c 64 69 6e 67 20 62 6c 6f 63 ic building bloc
16de0 6b 20 6f 66 20 74 68 65 20 57 65 62 20 41 75 64 k of the Web Aud
16df0 69 6f 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 io... *
16e00 41 50 49 20 61 6e 64 20 69 73 20 75 73 65 66 75 API and is usefu
16e10 6c 20 66 6f 72 20 72 6f 75 74 69 6e 67 20 61 75 l for routing au
16e20 64 69 6f 20 61 6e 64 20 61 64 6a 75 73 74 69 6e dio and adjustin
16e30 67 20 67 61 69 6e 73 2e 20 0a 09 09 20 2a 20 20 g gains. ... *
16e40 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a @extends {Tone}.
16e50 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 4e .. * @param {N
16e60 75 6d 62 65 72 3d 7d 20 20 67 61 69 6e 20 20 54 umber=} gain T
16e70 68 65 20 69 6e 69 74 69 61 6c 20 67 61 69 6e 20 he initial gain
16e80 6f 66 20 74 68 65 20 47 61 69 6e 4e 6f 64 65 0a of the GainNode.
16e90 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 6f .. * @param {To
16ea0 6e 65 2e 54 79 70 65 3d 7d 20 75 6e 69 74 73 20 ne.Type=} units
16eb0 54 68 65 20 75 6e 69 74 73 20 6f 66 20 74 68 65 The units of the
16ec0 20 67 61 69 6e 20 70 61 72 61 6d 65 74 65 72 2e gain parameter.
16ed0 20 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e ... */.. Ton
16ee0 65 2e 47 61 69 6e 20 3d 20 66 75 6e 63 74 69 6f e.Gain = functio
16ef0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
16f00 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 var options = th
16f10 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 is.optionsObject
16f20 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 (arguments, [..
16f30 20 20 20 20 20 20 20 20 20 20 20 27 67 61 69 6e 'gain
16f40 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
16f50 27 75 6e 69 74 73 27 0a 09 20 20 20 20 20 20 20 'units'..
16f60 20 5d 2c 20 54 6f 6e 65 2e 47 61 69 6e 2e 64 65 ], Tone.Gain.de
16f70 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 faults);..
16f80 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
16f90 20 47 61 69 6e 4e 6f 64 65 0a 09 09 09 20 2a 20 GainNode.... *
16fa0 20 40 74 79 70 65 20 20 7b 47 61 69 6e 4e 6f 64 @type {GainNod
16fb0 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 e}.... * @priva
16fc0 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
16fd0 20 20 20 74 68 69 73 2e 69 6e 70 75 74 20 3d 20 this.input =
16fe0 74 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 74 68 this.output = th
16ff0 69 73 2e 5f 67 61 69 6e 4e 6f 64 65 20 3d 20 74 is._gainNode = t
17000 68 69 73 2e 63 6f 6e 74 65 78 74 2e 63 72 65 61 his.context.crea
17010 74 65 47 61 69 6e 28 29 3b 0a 09 20 20 20 20 20 teGain();..
17020 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 /**.... * Th
17030 65 20 67 61 69 6e 20 70 61 72 61 6d 65 74 65 72 e gain parameter
17040 20 6f 66 20 74 68 65 20 67 61 69 6e 20 6e 6f 64 of the gain nod
17050 65 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 e..... * @type
17060 7b 54 6f 6e 65 2e 50 61 72 61 6d 7d 0a 09 09 09 {Tone.Param}....
17070 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 * @signal....
17080 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
17090 2e 67 61 69 6e 20 3d 20 6e 65 77 20 54 6f 6e 65 .gain = new Tone
170a0 2e 50 61 72 61 6d 28 7b 0a 09 20 20 20 20 20 20 .Param({..
170b0 20 20 20 20 20 20 27 70 61 72 61 6d 27 3a 20 74 'param': t
170c0 68 69 73 2e 5f 67 61 69 6e 4e 6f 64 65 2e 67 61 his._gainNode.ga
170d0 69 6e 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 in,..
170e0 20 27 75 6e 69 74 73 27 3a 20 6f 70 74 69 6f 6e 'units': option
170f0 73 2e 75 6e 69 74 73 2c 0a 09 20 20 20 20 20 20 s.units,..
17100 20 20 20 20 20 20 27 76 61 6c 75 65 27 3a 20 6f 'value': o
17110 70 74 69 6f 6e 73 2e 67 61 69 6e 2c 0a 09 20 20 ptions.gain,..
17120 20 20 20 20 20 20 20 20 20 20 27 63 6f 6e 76 65 'conve
17130 72 74 27 3a 20 6f 70 74 69 6f 6e 73 2e 63 6f 6e rt': options.con
17140 76 65 72 74 0a 09 20 20 20 20 20 20 20 20 7d 29 vert.. })
17150 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
17160 5f 72 65 61 64 4f 6e 6c 79 28 27 67 61 69 6e 27 _readOnly('gain'
17170 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
17180 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 Tone.extend(Tone
17190 2e 47 61 69 6e 29 3b 0a 09 20 20 20 20 2f 2a 2a .Gain);.. /**
171a0 0a 09 09 20 2a 20 20 54 68 65 20 64 65 66 61 75 ... * The defau
171b0 6c 74 73 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 lts... * @const
171c0 0a 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 4f ... * @type {O
171d0 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 bject}... */..
171e0 20 20 54 6f 6e 65 2e 47 61 69 6e 2e 64 65 66 61 Tone.Gain.defa
171f0 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 ults = {..
17200 20 20 27 67 61 69 6e 27 3a 20 31 2c 0a 09 20 20 'gain': 1,..
17210 20 20 20 20 20 20 27 63 6f 6e 76 65 72 74 27 3a 'convert':
17220 20 74 72 75 65 0a 09 20 20 20 20 7d 3b 0a 09 20 true.. };..
17230 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 /**... * Cle
17240 61 6e 20 75 70 2e 0a 09 09 20 2a 20 20 40 72 65 an up.... * @re
17250 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 47 61 69 6e turn {Tone.Gain
17260 7d 20 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 } this... */..
17270 20 20 20 54 6f 6e 65 2e 47 61 69 6e 2e 70 72 6f Tone.Gain.pro
17280 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d totype.dispose =
17290 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
172a0 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 50 61 72 Tone.Par
172b0 61 6d 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 am.prototype.dis
172c0 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b pose.call(this);
172d0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
172e0 67 61 69 6e 4e 6f 64 65 2e 64 69 73 63 6f 6e 6e gainNode.disconn
172f0 65 63 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ect();..
17300 74 68 69 73 2e 5f 67 61 69 6e 4e 6f 64 65 20 3d this._gainNode =
17310 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
17320 74 68 69 73 2e 5f 77 72 69 74 61 62 6c 65 28 27 this._writable('
17330 67 61 69 6e 27 29 3b 0a 09 20 20 20 20 20 20 20 gain');..
17340 20 74 68 69 73 2e 67 61 69 6e 2e 64 69 73 70 6f this.gain.dispo
17350 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
17360 68 69 73 2e 67 61 69 6e 20 3d 20 6e 75 6c 6c 3b his.gain = null;
17370 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f .. };.. //
17380 53 54 41 54 49 43 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f STATIC//////////
17390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
173a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
173b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
173c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f /////////.. /
173d0 2a 2a 0a 09 09 20 2a 20 20 43 72 65 61 74 65 20 **... * Create
173e0 69 6e 70 75 74 20 61 6e 64 20 6f 75 74 70 75 74 input and output
173f0 73 20 66 6f 72 20 74 68 69 73 20 6f 62 6a 65 63 s for this objec
17400 74 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 t.... * @param
17410 20 7b 4e 75 6d 62 65 72 7d 20 20 69 6e 70 75 74 {Number} input
17420 20 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 The number of
17430 20 69 6e 70 75 74 73 0a 09 09 20 2a 20 20 40 70 inputs... * @p
17440 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 3d 7d 20 aram {Number=}
17450 20 6f 75 74 70 75 74 73 20 20 54 68 65 20 6e 75 outputs The nu
17460 6d 62 65 72 20 6f 66 20 6f 75 74 70 75 74 73 0a mber of outputs.
17470 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b .. * @return {
17480 54 6f 6e 65 7d 20 20 74 68 69 73 0a 09 09 20 2a Tone} this... *
17490 20 20 40 69 6e 74 65 72 6e 61 6c 0a 09 09 20 2a @internal... *
174a0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 /.. Tone.prot
174b0 6f 74 79 70 65 2e 63 72 65 61 74 65 49 6e 73 4f otype.createInsO
174c0 75 74 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 uts = function (
174d0 69 6e 70 75 74 73 2c 20 6f 75 74 70 75 74 73 29 inputs, outputs)
174e0 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
174f0 69 6e 70 75 74 73 20 3d 3d 3d 20 31 29 20 7b 0a inputs === 1) {.
17500 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
17510 73 2e 69 6e 70 75 74 20 3d 20 6e 65 77 20 54 6f s.input = new To
17520 6e 65 2e 47 61 69 6e 28 29 3b 0a 09 20 20 20 20 ne.Gain();..
17530 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 69 } else if (i
17540 6e 70 75 74 73 20 3e 20 31 29 20 7b 0a 09 20 20 nputs > 1) {..
17550 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 this.i
17560 6e 70 75 74 20 3d 20 6e 65 77 20 41 72 72 61 79 nput = new Array
17570 28 69 6e 70 75 74 73 29 3b 0a 09 20 20 20 20 20 (inputs);..
17580 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 69 66 }.. if
17590 20 28 6f 75 74 70 75 74 73 20 3d 3d 3d 20 31 29 (outputs === 1)
175a0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
175b0 74 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 6e 65 this.output = ne
175c0 77 20 54 6f 6e 65 2e 47 61 69 6e 28 29 3b 0a 09 w Tone.Gain();..
175d0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 } else i
175e0 66 20 28 6f 75 74 70 75 74 73 20 3e 20 31 29 20 f (outputs > 1)
175f0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
17600 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 6e 65 77 his.output = new
17610 20 41 72 72 61 79 28 69 6e 70 75 74 73 29 3b 0a Array(inputs);.
17620 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
17630 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f };.. ////////
17640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
17650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
17660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
17670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
17680 2f 2f 2f 0a 09 20 20 20 20 72 65 74 75 72 6e 20 ///.. return
17690 54 6f 6e 65 2e 47 61 69 6e 3b 0a 09 7d 29 3b 0a Tone.Gain;..});.
176a0 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e .Module(function
176b0 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a (Tone) {.. .
176c0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 . /**... * @
176d0 63 6c 61 73 73 20 20 41 20 73 69 67 6e 61 6c 20 class A signal
176e0 69 73 20 61 6e 20 61 75 64 69 6f 2d 72 61 74 65 is an audio-rate
176f0 20 76 61 6c 75 65 2e 20 54 6f 6e 65 2e 53 69 67 value. Tone.Sig
17700 6e 61 6c 20 69 73 20 61 20 63 6f 72 65 20 63 6f nal is a core co
17710 6d 70 6f 6e 65 6e 74 20 6f 66 20 74 68 65 20 6c mponent of the l
17720 69 62 72 61 72 79 2e 0a 09 09 20 2a 20 20 20 20 ibrary.... *
17730 20 20 20 20 20 20 55 6e 6c 69 6b 65 20 61 20 6e Unlike a n
17740 75 6d 62 65 72 2c 20 53 69 67 6e 61 6c 73 20 63 umber, Signals c
17750 61 6e 20 62 65 20 73 63 68 65 64 75 6c 65 64 20 an be scheduled
17760 77 69 74 68 20 73 61 6d 70 6c 65 2d 6c 65 76 65 with sample-leve
17770 6c 20 61 63 63 75 72 61 63 79 2e 20 54 6f 6e 65 l accuracy. Tone
17780 2e 53 69 67 6e 61 6c 0a 09 09 20 2a 20 20 20 20 .Signal... *
17790 20 20 20 20 20 20 68 61 73 20 61 6c 6c 20 6f 66 has all of
177a0 20 74 68 65 20 6d 65 74 68 6f 64 73 20 61 76 61 the methods ava
177b0 69 6c 61 62 6c 65 20 74 6f 20 6e 61 74 69 76 65 ilable to native
177c0 20 57 65 62 20 41 75 64 69 6f 20 0a 09 09 20 2a Web Audio ... *
177d0 20 20 20 20 20 20 20 20 20 20 5b 41 75 64 69 6f [Audio
177e0 50 61 72 61 6d 5d 28 68 74 74 70 3a 2f 2f 77 65 Param](http://we
177f0 62 61 75 64 69 6f 2e 67 69 74 68 75 62 2e 69 6f baudio.github.io
17800 2f 77 65 62 2d 61 75 64 69 6f 2d 61 70 69 2f 23 /web-audio-api/#
17810 74 68 65 2d 61 75 64 69 6f 70 61 72 61 6d 2d 69 the-audioparam-i
17820 6e 74 65 72 66 61 63 65 29 0a 09 09 20 2a 20 20 nterface)... *
17830 20 20 20 20 20 20 20 20 61 73 20 77 65 6c 6c 20 as well
17840 61 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f as additional co
17850 6e 76 65 6e 69 65 6e 63 65 73 2e 20 52 65 61 64 nveniences. Read
17860 20 6d 6f 72 65 20 61 62 6f 75 74 20 77 6f 72 6b more about work
17870 69 6e 67 20 77 69 74 68 20 73 69 67 6e 61 6c 73 ing with signals
17880 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 ... *
17890 5b 68 65 72 65 5d 28 68 74 74 70 73 3a 2f 2f 67 [here](https://g
178a0 69 74 68 75 62 2e 63 6f 6d 2f 54 6f 6e 65 6a 73 ithub.com/Tonejs
178b0 2f 54 6f 6e 65 2e 6a 73 2f 77 69 6b 69 2f 53 69 /Tone.js/wiki/Si
178c0 67 6e 61 6c 73 29 2e 0a 09 09 20 2a 0a 09 09 20 gnals).... *...
178d0 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a * @constructor.
178e0 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b .. * @extends {
178f0 54 6f 6e 65 2e 50 61 72 61 6d 7d 0a 09 09 20 2a Tone.Param}... *
17900 20 20 40 70 61 72 61 6d 20 7b 4e 75 6d 62 65 72 @param {Number
17910 7c 41 75 64 69 6f 50 61 72 61 6d 7d 20 5b 76 61 |AudioParam} [va
17920 6c 75 65 5d 20 49 6e 69 74 69 61 6c 20 76 61 6c lue] Initial val
17930 75 65 20 6f 66 20 74 68 65 20 73 69 67 6e 61 6c ue of the signal
17940 2e 20 49 66 20 61 6e 20 41 75 64 69 6f 50 61 72 . If an AudioPar
17950 61 6d 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 am... *
17960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17970 20 20 20 20 20 20 20 20 20 20 20 20 69 73 20 70 is p
17980 61 73 73 65 64 20 69 6e 2c 20 74 68 61 74 20 70 assed in, that p
17990 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 arameter will be
179a0 20 77 72 61 70 70 65 64 0a 09 09 20 2a 20 20 20 wrapped... *
179b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
179c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
179d0 20 20 61 6e 64 20 63 6f 6e 74 72 6f 6c 6c 65 64 and controlled
179e0 20 62 79 20 74 68 65 20 53 69 67 6e 61 6c 2e 20 by the Signal.
179f0 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 73 ... * @param {s
17a00 74 72 69 6e 67 7d 20 5b 75 6e 69 74 73 3d 4e 75 tring} [units=Nu
17a10 6d 62 65 72 5d 20 75 6e 69 74 20 54 68 65 20 75 mber] unit The u
17a20 6e 69 74 73 20 74 68 65 20 73 69 67 6e 61 6c 20 nits the signal
17a30 69 73 20 69 6e 2e 20 0a 09 09 20 2a 20 20 40 65 is in. ... * @e
17a40 78 61 6d 70 6c 65 0a 09 09 20 2a 20 76 61 72 20 xample... * var
17a50 73 69 67 6e 61 6c 20 3d 20 6e 65 77 20 54 6f 6e signal = new Ton
17a60 65 2e 53 69 67 6e 61 6c 28 31 30 29 3b 0a 09 09 e.Signal(10);...
17a70 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 69 */.. Tone.Si
17a80 67 6e 61 6c 20 3d 20 66 75 6e 63 74 69 6f 6e 20 gnal = function
17a90 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 () {.. va
17aa0 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 r options = this
17ab0 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 .optionsObject(a
17ac0 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 rguments, [..
17ad0 20 20 20 20 20 20 20 20 20 27 76 61 6c 75 65 27 'value'
17ae0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
17af0 75 6e 69 74 73 27 0a 09 20 20 20 20 20 20 20 20 units'..
17b00 5d 2c 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 2e 64 ], Tone.Signal.d
17b10 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 efaults);..
17b20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 54 68 65 /**.... * The
17b30 20 6e 6f 64 65 20 77 68 65 72 65 20 74 68 65 20 node where the
17b40 63 6f 6e 73 74 61 6e 74 20 73 69 67 6e 61 6c 20 constant signal
17b50 76 61 6c 75 65 20 69 73 20 73 63 61 6c 65 64 2e value is scaled.
17b60 0a 09 09 09 20 2a 20 40 74 79 70 65 20 7b 47 61 .... * @type {Ga
17b70 69 6e 4e 6f 64 65 7d 0a 09 09 09 20 2a 20 40 70 inNode}.... * @p
17b80 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
17b90 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75 74 70 this.outp
17ba0 75 74 20 3d 20 74 68 69 73 2e 5f 67 61 69 6e 20 ut = this._gain
17bb0 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 63 = this.context.c
17bc0 72 65 61 74 65 47 61 69 6e 28 29 3b 0a 09 20 20 reateGain();..
17bd0 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 2e 70 61 options.pa
17be0 72 61 6d 20 3d 20 74 68 69 73 2e 5f 67 61 69 6e ram = this._gain
17bf0 2e 67 61 69 6e 3b 0a 09 20 20 20 20 20 20 20 20 .gain;..
17c00 54 6f 6e 65 2e 50 61 72 61 6d 2e 63 61 6c 6c 28 Tone.Param.call(
17c10 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a this, options);.
17c20 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
17c30 20 2a 20 54 68 65 20 6e 6f 64 65 20 77 68 65 72 * The node wher
17c40 65 20 74 68 65 20 76 61 6c 75 65 20 69 73 20 73 e the value is s
17c50 65 74 2e 0a 09 09 09 20 2a 20 40 74 79 70 65 20 et..... * @type
17c60 7b 54 6f 6e 65 2e 50 61 72 61 6d 7d 0a 09 09 09 {Tone.Param}....
17c70 20 2a 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
17c80 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
17c90 2e 69 6e 70 75 74 20 3d 20 74 68 69 73 2e 5f 70 .input = this._p
17ca0 61 72 61 6d 20 3d 20 74 68 69 73 2e 5f 67 61 69 aram = this._gai
17cb0 6e 2e 67 61 69 6e 3b 0a 09 20 20 20 20 20 20 20 n.gain;..
17cc0 20 2f 2f 63 6f 6e 6e 65 63 74 20 74 68 65 20 63 //connect the c
17cd0 6f 6e 73 74 20 6f 75 74 70 75 74 20 74 6f 20 74 onst output to t
17ce0 68 65 20 6e 6f 64 65 20 6f 75 74 70 75 74 0a 09 he node output..
17cf0 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 53 69 67 Tone.Sig
17d00 6e 61 6c 2e 5f 63 6f 6e 73 74 61 6e 74 2e 63 68 nal._constant.ch
17d10 61 69 6e 28 74 68 69 73 2e 5f 67 61 69 6e 29 3b ain(this._gain);
17d20 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f .. };.. To
17d30 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 53 ne.extend(Tone.S
17d40 69 67 6e 61 6c 2c 20 54 6f 6e 65 2e 50 61 72 61 ignal, Tone.Para
17d50 6d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 m);.. /**...
17d60 2a 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 * The default v
17d70 61 6c 75 65 73 0a 09 09 20 2a 20 20 40 74 79 70 alues... * @typ
17d80 65 20 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a e {Object}... *
17d90 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 @static... *
17da0 40 63 6f 6e 73 74 0a 09 09 20 2a 2f 0a 09 20 20 @const... */..
17db0 20 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 2e 64 65 Tone.Signal.de
17dc0 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 faults = {..
17dd0 20 20 20 20 27 76 61 6c 75 65 27 3a 20 30 2c 0a 'value': 0,.
17de0 09 20 20 20 20 20 20 20 20 27 75 6e 69 74 73 27 . 'units'
17df0 3a 20 54 6f 6e 65 2e 54 79 70 65 2e 44 65 66 61 : Tone.Type.Defa
17e00 75 6c 74 2c 0a 09 20 20 20 20 20 20 20 20 27 63 ult,.. 'c
17e10 6f 6e 76 65 72 74 27 3a 20 74 72 75 65 0a 09 20 onvert': true..
17e20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
17e30 09 20 2a 20 20 57 68 65 6e 20 73 69 67 6e 61 6c . * When signal
17e40 73 20 63 6f 6e 6e 65 63 74 20 74 6f 20 6f 74 68 s connect to oth
17e50 65 72 20 73 69 67 6e 61 6c 73 20 6f 72 20 41 75 er signals or Au
17e60 64 69 6f 50 61 72 61 6d 73 2c 20 0a 09 09 20 2a dioParams, ... *
17e70 20 20 74 68 65 79 20 74 61 6b 65 20 6f 76 65 72 they take over
17e80 20 74 68 65 20 6f 75 74 70 75 74 20 76 61 6c 75 the output valu
17e90 65 20 6f 66 20 74 68 61 74 20 73 69 67 6e 61 6c e of that signal
17ea0 20 6f 72 20 41 75 64 69 6f 50 61 72 61 6d 2e 20 or AudioParam.
17eb0 0a 09 09 20 2a 20 20 46 6f 72 20 61 6c 6c 20 6f ... * For all o
17ec0 74 68 65 72 20 6e 6f 64 65 73 2c 20 74 68 65 20 ther nodes, the
17ed0 62 65 68 61 76 69 6f 72 20 69 73 20 74 68 65 20 behavior is the
17ee0 73 61 6d 65 20 61 73 20 61 20 64 65 66 61 75 6c same as a defaul
17ef0 74 20 3c 63 6f 64 65 3e 63 6f 6e 6e 65 63 74 3c t <code>connect<
17f00 2f 63 6f 64 65 3e 2e 20 0a 09 09 20 2a 0a 09 09 /code>. ... *...
17f10 20 2a 20 20 40 6f 76 65 72 72 69 64 65 0a 09 09 * @override...
17f20 20 2a 20 20 40 70 61 72 61 6d 20 7b 41 75 64 69 * @param {Audi
17f30 6f 50 61 72 61 6d 7c 41 75 64 69 6f 4e 6f 64 65 oParam|AudioNode
17f40 7c 54 6f 6e 65 2e 53 69 67 6e 61 6c 7c 54 6f 6e |Tone.Signal|Ton
17f50 65 7d 20 6e 6f 64 65 20 0a 09 09 20 2a 20 20 40 e} node ... * @
17f60 70 61 72 61 6d 20 7b 6e 75 6d 62 65 72 7d 20 5b param {number} [
17f70 6f 75 74 70 75 74 4e 75 6d 62 65 72 3d 30 5d 20 outputNumber=0]
17f80 54 68 65 20 6f 75 74 70 75 74 20 6e 75 6d 62 65 The output numbe
17f90 72 20 74 6f 20 63 6f 6e 6e 65 63 74 20 66 72 6f r to connect fro
17fa0 6d 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 m.... * @param
17fb0 7b 6e 75 6d 62 65 72 7d 20 5b 69 6e 70 75 74 4e {number} [inputN
17fc0 75 6d 62 65 72 3d 30 5d 20 54 68 65 20 69 6e 70 umber=0] The inp
17fd0 75 74 20 6e 75 6d 62 65 72 20 74 6f 20 63 6f 6e ut number to con
17fe0 6e 65 63 74 20 74 6f 2e 0a 09 09 20 2a 20 20 40 nect to.... * @
17ff0 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 69 returns {Tone.Si
18000 67 6e 61 6c 42 61 73 65 7d 20 74 68 69 73 0a 09 gnalBase} this..
18010 09 20 2a 20 20 40 6d 65 74 68 6f 64 0a 09 09 20 . * @method...
18020 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 69 67 */.. Tone.Sig
18030 6e 61 6c 2e 70 72 6f 74 6f 74 79 70 65 2e 63 6f nal.prototype.co
18040 6e 6e 65 63 74 20 3d 20 54 6f 6e 65 2e 53 69 67 nnect = Tone.Sig
18050 6e 61 6c 42 61 73 65 2e 70 72 6f 74 6f 74 79 70 nalBase.prototyp
18060 65 2e 63 6f 6e 6e 65 63 74 3b 0a 09 20 20 20 20 e.connect;..
18070 2f 2a 2a 0a 09 09 20 2a 20 20 64 69 73 70 6f 73 /**... * dispos
18080 65 20 61 6e 64 20 64 69 73 63 6f 6e 6e 65 63 74 e and disconnect
18090 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
180a0 7b 54 6f 6e 65 2e 53 69 67 6e 61 6c 7d 20 74 68 {Tone.Signal} th
180b0 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
180c0 6e 65 2e 53 69 67 6e 61 6c 2e 70 72 6f 74 6f 74 ne.Signal.protot
180d0 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 ype.dispose = fu
180e0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
180f0 20 20 20 20 20 54 6f 6e 65 2e 50 61 72 61 6d 2e Tone.Param.
18100 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
18110 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 e.call(this);..
18120 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 61 72 this._par
18130 61 6d 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 am = null;..
18140 20 20 20 20 74 68 69 73 2e 5f 67 61 69 6e 2e 64 this._gain.d
18150 69 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 20 20 isconnect();..
18160 20 20 20 20 20 20 74 68 69 73 2e 5f 67 61 69 6e this._gain
18170 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
18180 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
18190 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f };.. ////
181a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
181b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
181c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
181d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
181e0 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2f 09 ///////.. //.
181f0 53 54 41 54 49 43 0a 09 20 20 20 20 2f 2f 2f 2f STATIC.. ////
18200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
18210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
18220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
18230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
18240 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2a 2a ///////.. /**
18250 0a 09 09 20 2a 20 20 47 65 6e 65 72 61 74 65 73 ... * Generates
18260 20 61 20 63 6f 6e 73 74 61 6e 74 20 6f 75 74 70 a constant outp
18270 75 74 20 6f 66 20 31 2e 0a 09 09 20 2a 20 20 40 ut of 1.... * @
18280 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 70 72 static... * @pr
18290 69 76 61 74 65 0a 09 09 20 2a 20 20 40 63 6f 6e ivate... * @con
182a0 73 74 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b st... * @type {
182b0 41 75 64 69 6f 42 75 66 66 65 72 53 6f 75 72 63 AudioBufferSourc
182c0 65 4e 6f 64 65 7d 0a 09 09 20 2a 2f 0a 09 20 20 eNode}... */..
182d0 20 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 2e 5f 63 Tone.Signal._c
182e0 6f 6e 73 74 61 6e 74 20 3d 20 6e 75 6c 6c 3b 0a onstant = null;.
182f0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 69 . /**... * i
18300 6e 69 74 69 61 6c 69 7a 65 72 20 66 75 6e 63 74 nitializer funct
18310 69 6f 6e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ion... */.. T
18320 6f 6e 65 2e 5f 69 6e 69 74 41 75 64 69 6f 43 6f one._initAudioCo
18330 6e 74 65 78 74 28 66 75 6e 63 74 69 6f 6e 20 28 ntext(function (
18340 61 75 64 69 6f 43 6f 6e 74 65 78 74 29 20 7b 0a audioContext) {.
18350 09 20 20 20 20 20 20 20 20 76 61 72 20 62 75 66 . var buf
18360 66 65 72 20 3d 20 61 75 64 69 6f 43 6f 6e 74 65 fer = audioConte
18370 78 74 2e 63 72 65 61 74 65 42 75 66 66 65 72 28 xt.createBuffer(
18380 31 2c 20 31 32 38 2c 20 61 75 64 69 6f 43 6f 6e 1, 128, audioCon
18390 74 65 78 74 2e 73 61 6d 70 6c 65 52 61 74 65 29 text.sampleRate)
183a0 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 61 ;.. var a
183b0 72 72 20 3d 20 62 75 66 66 65 72 2e 67 65 74 43 rr = buffer.getC
183c0 68 61 6e 6e 65 6c 44 61 74 61 28 30 29 3b 0a 09 hannelData(0);..
183d0 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 for (var
183e0 20 69 20 3d 20 30 3b 20 69 20 3c 20 61 72 72 2e i = 0; i < arr.
183f0 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 length; i++) {..
18400 20 20 20 20 20 20 20 20 20 20 20 20 61 72 72 5b arr[
18410 69 5d 20 3d 20 31 3b 0a 09 20 20 20 20 20 20 20 i] = 1;..
18420 20 7d 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 }.. Tone
18430 2e 53 69 67 6e 61 6c 2e 5f 63 6f 6e 73 74 61 6e .Signal._constan
18440 74 20 3d 20 61 75 64 69 6f 43 6f 6e 74 65 78 74 t = audioContext
18450 2e 63 72 65 61 74 65 42 75 66 66 65 72 53 6f 75 .createBufferSou
18460 72 63 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 rce();..
18470 54 6f 6e 65 2e 53 69 67 6e 61 6c 2e 5f 63 6f 6e Tone.Signal._con
18480 73 74 61 6e 74 2e 63 68 61 6e 6e 65 6c 43 6f 75 stant.channelCou
18490 6e 74 20 3d 20 31 3b 0a 09 20 20 20 20 20 20 20 nt = 1;..
184a0 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 2e 5f 63 6f Tone.Signal._co
184b0 6e 73 74 61 6e 74 2e 63 68 61 6e 6e 65 6c 43 6f nstant.channelCo
184c0 75 6e 74 4d 6f 64 65 20 3d 20 27 65 78 70 6c 69 untMode = 'expli
184d0 63 69 74 27 3b 0a 09 20 20 20 20 20 20 20 20 54 cit';.. T
184e0 6f 6e 65 2e 53 69 67 6e 61 6c 2e 5f 63 6f 6e 73 one.Signal._cons
184f0 74 61 6e 74 2e 62 75 66 66 65 72 20 3d 20 62 75 tant.buffer = bu
18500 66 66 65 72 3b 0a 09 20 20 20 20 20 20 20 20 54 ffer;.. T
18510 6f 6e 65 2e 53 69 67 6e 61 6c 2e 5f 63 6f 6e 73 one.Signal._cons
18520 74 61 6e 74 2e 6c 6f 6f 70 20 3d 20 74 72 75 65 tant.loop = true
18530 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e ;.. Tone.
18540 53 69 67 6e 61 6c 2e 5f 63 6f 6e 73 74 61 6e 74 Signal._constant
18550 2e 73 74 61 72 74 28 30 29 3b 0a 09 20 20 20 20 .start(0);..
18560 20 20 20 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 2e Tone.Signal.
18570 5f 63 6f 6e 73 74 61 6e 74 2e 6e 6f 47 43 28 29 _constant.noGC()
18580 3b 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 ;.. });..
18590 72 65 74 75 72 6e 20 54 6f 6e 65 2e 53 69 67 6e return Tone.Sign
185a0 61 6c 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 al;..});..Module
185b0 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 (function (Tone)
185c0 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a {.. .. /*
185d0 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 41 *... * @class A
185e0 20 54 69 6d 65 6c 69 6e 65 20 63 6c 61 73 73 20 Timeline class
185f0 66 6f 72 20 73 63 68 65 64 75 6c 69 6e 67 20 61 for scheduling a
18600 6e 64 20 6d 61 69 6e 74 61 69 6e 69 6e 67 20 73 nd maintaining s
18610 74 61 74 65 0a 09 09 20 2a 20 20 20 20 20 20 20 tate... *
18620 20 20 61 6c 6f 6e 67 20 61 20 74 69 6d 65 6c 69 along a timeli
18630 6e 65 2e 20 41 6c 6c 20 65 76 65 6e 74 73 20 6d ne. All events m
18640 75 73 74 20 68 61 76 65 20 61 20 22 74 69 6d 65 ust have a "time
18650 22 20 70 72 6f 70 65 72 74 79 2e 20 0a 09 09 20 " property. ...
18660 2a 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6e * Intern
18670 61 6c 6c 79 2c 20 65 76 65 6e 74 73 20 61 72 65 ally, events are
18680 20 73 74 6f 72 65 64 20 69 6e 20 74 69 6d 65 20 stored in time
18690 6f 72 64 65 72 20 66 6f 72 20 66 61 73 74 20 0a order for fast .
186a0 09 09 20 2a 20 20 20 20 20 20 20 20 20 72 65 74 .. * ret
186b0 72 69 65 76 61 6c 2e 0a 09 09 20 2a 20 20 40 65 rieval.... * @e
186c0 78 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 xtends {Tone}...
186d0 20 2a 20 20 40 70 61 72 61 6d 20 7b 50 6f 73 69 * @param {Posi
186e0 74 69 76 65 7d 20 5b 6d 65 6d 6f 72 79 3d 49 6e tive} [memory=In
186f0 66 69 6e 69 74 79 5d 20 54 68 65 20 6e 75 6d 62 finity] The numb
18700 65 72 20 6f 66 20 70 72 65 76 69 6f 75 73 20 65 er of previous e
18710 76 65 6e 74 73 20 74 68 61 74 20 61 72 65 20 72 vents that are r
18720 65 74 61 69 6e 65 64 2e 0a 09 09 20 2a 2f 0a 09 etained.... */..
18730 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e Tone.Timelin
18740 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 e = function ()
18750 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 6f {.. var o
18760 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 ptions = this.op
18770 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 tionsObject(argu
18780 6d 65 6e 74 73 2c 20 5b 27 6d 65 6d 6f 72 79 27 ments, ['memory'
18790 5d 2c 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 ], Tone.Timeline
187a0 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 .defaults);..
187b0 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
187c0 54 68 65 20 61 72 72 61 79 20 6f 66 20 73 63 68 The array of sch
187d0 65 64 75 6c 65 64 20 74 69 6d 65 6c 69 6e 65 20 eduled timeline
187e0 65 76 65 6e 74 73 0a 09 09 09 20 2a 20 20 40 74 events.... * @t
187f0 79 70 65 20 20 7b 41 72 72 61 79 7d 0a 09 09 09 ype {Array}....
18800 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
18810 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
18820 73 2e 5f 74 69 6d 65 6c 69 6e 65 20 3d 20 5b 5d s._timeline = []
18830 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
18840 09 09 20 2a 20 20 41 6e 20 61 72 72 61 79 20 6f .. * An array o
18850 66 20 69 74 65 6d 73 20 74 6f 20 72 65 6d 6f 76 f items to remov
18860 65 20 66 72 6f 6d 20 74 68 65 20 6c 69 73 74 2e e from the list.
18870 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b .... * @type {
18880 41 72 72 61 79 7d 0a 09 09 09 20 2a 20 20 40 70 Array}.... * @p
18890 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
188a0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 74 6f 52 this._toR
188b0 65 6d 6f 76 65 20 3d 20 5b 5d 3b 0a 09 20 20 20 emove = [];..
188c0 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
188d0 46 6c 61 67 20 69 66 20 74 68 65 20 74 69 65 6c Flag if the tiel
188e0 69 6e 65 20 69 73 20 6d 69 64 20 69 74 65 72 61 ine is mid itera
188f0 74 69 6f 6e 0a 09 09 09 20 2a 20 20 40 70 72 69 tion.... * @pri
18900 76 61 74 65 0a 09 09 09 20 2a 20 20 40 74 79 70 vate.... * @typ
18910 65 20 7b 42 6f 6f 6c 65 61 6e 7d 0a 09 09 09 20 e {Boolean}....
18920 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
18930 2e 5f 69 74 65 72 61 74 69 6e 67 20 3d 20 66 61 ._iterating = fa
18940 6c 73 65 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a lse;.. /*
18950 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 6d 65 6d *.... * The mem
18960 6f 72 79 20 6f 66 20 74 68 65 20 74 69 6d 65 6c ory of the timel
18970 69 6e 65 2c 20 69 2e 65 2e 0a 09 09 09 20 2a 20 ine, i.e..... *
18980 20 68 6f 77 20 6d 61 6e 79 20 65 76 65 6e 74 73 how many events
18990 20 69 6e 20 74 68 65 20 70 61 73 74 20 69 74 20 in the past it
189a0 77 69 6c 6c 20 72 65 74 61 69 6e 0a 09 09 09 20 will retain....
189b0 2a 20 20 40 74 79 70 65 20 7b 50 6f 73 69 74 69 * @type {Positi
189c0 76 65 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ve}.... */..
189d0 20 20 20 20 74 68 69 73 2e 6d 65 6d 6f 72 79 20 this.memory
189e0 3d 20 6f 70 74 69 6f 6e 73 2e 6d 65 6d 6f 72 79 = options.memory
189f0 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 ;.. };.. T
18a00 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e one.extend(Tone.
18a10 54 69 6d 65 6c 69 6e 65 29 3b 0a 09 20 20 20 20 Timeline);..
18a20 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 65 20 64 65 /**... * the de
18a30 66 61 75 6c 74 20 70 61 72 61 6d 65 74 65 72 73 fault parameters
18a40 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 ... * @static..
18a50 09 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a . * @const... *
18a60 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 /.. Tone.Time
18a70 6c 69 6e 65 2e 64 65 66 61 75 6c 74 73 20 3d 20 line.defaults =
18a80 7b 20 27 6d 65 6d 6f 72 79 27 3a 20 49 6e 66 69 { 'memory': Infi
18a90 6e 69 74 79 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a nity };.. /**
18aa0 0a 09 09 20 2a 20 20 54 68 65 20 6e 75 6d 62 65 ... * The numbe
18ab0 72 20 6f 66 20 69 74 65 6d 73 20 69 6e 20 74 68 r of items in th
18ac0 65 20 74 69 6d 65 6c 69 6e 65 2e 0a 09 09 20 2a e timeline.... *
18ad0 20 20 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d @type {Number}
18ae0 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
18af0 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 23 0a Tone.Timeline#.
18b00 09 09 20 2a 20 20 40 6e 61 6d 65 20 6c 65 6e 67 .. * @name leng
18b10 74 68 0a 09 09 20 2a 20 20 40 72 65 61 64 4f 6e th... * @readOn
18b20 6c 79 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 ly... */.. Ob
18b30 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
18b40 72 74 79 28 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e rty(Tone.Timelin
18b50 65 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 6c 65 e.prototype, 'le
18b60 6e 67 74 68 27 2c 20 7b 0a 09 20 20 20 20 20 20 ngth', {..
18b70 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
18b80 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
18b90 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 74 return this._t
18ba0 69 6d 65 6c 69 6e 65 2e 6c 65 6e 67 74 68 3b 0a imeline.length;.
18bb0 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
18bc0 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 });.. /**...
18bd0 2a 20 20 49 6e 73 65 72 74 20 61 6e 20 65 76 65 * Insert an eve
18be0 6e 74 20 6f 62 6a 65 63 74 20 6f 6e 74 6f 20 74 nt object onto t
18bf0 68 65 20 74 69 6d 65 6c 69 6e 65 2e 20 45 76 65 he timeline. Eve
18c00 6e 74 73 20 6d 75 73 74 20 68 61 76 65 20 61 20 nts must have a
18c10 22 74 69 6d 65 22 20 61 74 74 72 69 62 75 74 65 "time" attribute
18c20 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 .... * @param
18c30 7b 4f 62 6a 65 63 74 7d 20 20 65 76 65 6e 74 20 {Object} event
18c40 20 54 68 65 20 65 76 65 6e 74 20 6f 62 6a 65 63 The event objec
18c50 74 20 74 6f 20 69 6e 73 65 72 74 20 69 6e 74 6f t to insert into
18c60 20 74 68 65 20 0a 09 09 20 2a 20 20 20 20 20 20 the ... *
18c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
18c80 20 20 20 20 20 74 69 6d 65 6c 69 6e 65 2e 20 0a timeline. .
18c90 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
18ca0 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 7d 20 74 Tone.Timeline} t
18cb0 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
18cc0 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 2e 70 72 6f one.Timeline.pro
18cd0 74 6f 74 79 70 65 2e 61 64 64 20 3d 20 66 75 6e totype.add = fun
18ce0 63 74 69 6f 6e 20 28 65 76 65 6e 74 29 20 7b 0a ction (event) {.
18cf0 09 20 20 20 20 20 20 20 20 2f 2f 74 68 65 20 65 . //the e
18d00 76 65 6e 74 20 6e 65 65 64 73 20 74 6f 20 68 61 vent needs to ha
18d10 76 65 20 61 20 74 69 6d 65 20 61 74 74 72 69 62 ve a time attrib
18d20 75 74 65 0a 09 20 20 20 20 20 20 20 20 69 66 20 ute.. if
18d30 28 74 68 69 73 2e 69 73 55 6e 64 65 66 28 65 76 (this.isUndef(ev
18d40 65 6e 74 2e 74 69 6d 65 29 29 20 7b 0a 09 20 20 ent.time)) {..
18d50 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 throw
18d60 6e 65 77 20 45 72 72 6f 72 28 27 54 6f 6e 65 2e new Error('Tone.
18d70 54 69 6d 65 6c 69 6e 65 3a 20 65 76 65 6e 74 73 Timeline: events
18d80 20 6d 75 73 74 20 68 61 76 65 20 61 20 74 69 6d must have a tim
18d90 65 20 61 74 74 72 69 62 75 74 65 27 29 3b 0a 09 e attribute');..
18da0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
18db0 20 20 20 69 66 20 28 74 68 69 73 2e 5f 74 69 6d if (this._tim
18dc0 65 6c 69 6e 65 2e 6c 65 6e 67 74 68 29 20 7b 0a eline.length) {.
18dd0 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
18de0 20 69 6e 64 65 78 20 3d 20 74 68 69 73 2e 5f 73 index = this._s
18df0 65 61 72 63 68 28 65 76 65 6e 74 2e 74 69 6d 65 earch(event.time
18e00 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
18e10 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 2e 73 this._timeline.s
18e20 70 6c 69 63 65 28 69 6e 64 65 78 20 2b 20 31 2c plice(index + 1,
18e30 20 30 2c 20 65 76 65 6e 74 29 3b 0a 09 20 20 20 0, event);..
18e40 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
18e50 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
18e60 5f 74 69 6d 65 6c 69 6e 65 2e 70 75 73 68 28 65 _timeline.push(e
18e70 76 65 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 20 vent);..
18e80 7d 0a 09 20 20 20 20 20 20 20 20 2f 2f 69 66 20 }.. //if
18e90 74 68 65 20 6c 65 6e 67 74 68 20 69 73 20 6d 6f the length is mo
18ea0 72 65 20 74 68 61 6e 20 74 68 65 20 6d 65 6d 6f re than the memo
18eb0 72 79 2c 20 72 65 6d 6f 76 65 20 74 68 65 20 70 ry, remove the p
18ec0 72 65 76 69 6f 75 73 20 6f 6e 65 73 0a 09 20 20 revious ones..
18ed0 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c if (this.l
18ee0 65 6e 67 74 68 20 3e 20 74 68 69 73 2e 6d 65 6d ength > this.mem
18ef0 6f 72 79 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ory) {..
18f00 20 20 20 20 76 61 72 20 64 69 66 66 20 3d 20 74 var diff = t
18f10 68 69 73 2e 6c 65 6e 67 74 68 20 2d 20 74 68 69 his.length - thi
18f20 73 2e 6d 65 6d 6f 72 79 3b 0a 09 20 20 20 20 20 s.memory;..
18f30 20 20 20 20 20 20 20 74 68 69 73 2e 5f 74 69 6d this._tim
18f40 65 6c 69 6e 65 2e 73 70 6c 69 63 65 28 30 2c 20 eline.splice(0,
18f50 64 69 66 66 29 3b 0a 09 20 20 20 20 20 20 20 20 diff);..
18f60 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 }.. retur
18f70 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
18f80 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 . /**... * R
18f90 65 6d 6f 76 65 20 61 6e 20 65 76 65 6e 74 20 66 emove an event f
18fa0 72 6f 6d 20 74 68 65 20 74 69 6d 65 6c 69 6e 65 rom the timeline
18fb0 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 .... * @param
18fc0 7b 4f 62 6a 65 63 74 7d 20 20 65 76 65 6e 74 20 {Object} event
18fd0 20 54 68 65 20 65 76 65 6e 74 20 6f 62 6a 65 63 The event objec
18fe0 74 20 74 6f 20 72 65 6d 6f 76 65 20 66 72 6f 6d t to remove from
18ff0 20 74 68 65 20 6c 69 73 74 2e 0a 09 09 20 2a 20 the list.... *
19000 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e @returns {Tone.
19010 54 69 6d 65 6c 69 6e 65 7d 20 74 68 69 73 0a 09 Timeline} this..
19020 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 . */.. Tone.T
19030 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f 74 79 70 imeline.prototyp
19040 65 2e 72 65 6d 6f 76 65 20 3d 20 66 75 6e 63 74 e.remove = funct
19050 69 6f 6e 20 28 65 76 65 6e 74 29 20 7b 0a 09 20 ion (event) {..
19060 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e if (this.
19070 5f 69 74 65 72 61 74 69 6e 67 29 20 7b 0a 09 20 _iterating) {..
19080 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
19090 5f 74 6f 52 65 6d 6f 76 65 2e 70 75 73 68 28 65 _toRemove.push(e
190a0 76 65 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 20 vent);..
190b0 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 } else {..
190c0 20 20 20 20 20 20 76 61 72 20 69 6e 64 65 78 20 var index
190d0 3d 20 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 = this._timeline
190e0 2e 69 6e 64 65 78 4f 66 28 65 76 65 6e 74 29 3b .indexOf(event);
190f0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
19100 20 28 69 6e 64 65 78 20 21 3d 3d 20 2d 31 29 20 (index !== -1)
19110 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
19120 20 20 20 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e this._timelin
19130 65 2e 73 70 6c 69 63 65 28 69 6e 64 65 78 2c 20 e.splice(index,
19140 31 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 1);..
19150 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 }.. }..
19160 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
19170 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
19180 20 2f 2a 2a 0a 09 09 20 2a 20 20 47 65 74 20 74 /**... * Get t
19190 68 65 20 6e 65 61 72 65 73 74 20 65 76 65 6e 74 he nearest event
191a0 20 77 68 6f 73 65 20 74 69 6d 65 20 69 73 20 6c whose time is l
191b0 65 73 73 20 74 68 61 6e 20 6f 72 20 65 71 75 61 ess than or equa
191c0 6c 20 74 6f 20 74 68 65 20 67 69 76 65 6e 20 74 l to the given t
191d0 69 6d 65 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 ime.... * @para
191e0 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 20 74 69 6d m {Number} tim
191f0 65 20 20 54 68 65 20 74 69 6d 65 20 74 6f 20 71 e The time to q
19200 75 65 72 79 2e 0a 09 09 20 2a 20 20 40 72 65 74 uery.... * @ret
19210 75 72 6e 73 20 7b 4f 62 6a 65 63 74 7d 20 54 68 urns {Object} Th
19220 65 20 65 76 65 6e 74 20 6f 62 6a 65 63 74 20 73 e event object s
19230 65 74 20 61 66 74 65 72 20 74 68 61 74 20 74 69 et after that ti
19240 6d 65 2e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 me.... */.. T
19250 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 2e 70 72 6f one.Timeline.pro
19260 74 6f 74 79 70 65 2e 67 65 74 20 3d 20 66 75 6e totype.get = fun
19270 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 ction (time) {..
19280 20 20 20 20 20 20 20 20 76 61 72 20 69 6e 64 65 var inde
19290 78 20 3d 20 74 68 69 73 2e 5f 73 65 61 72 63 68 x = this._search
192a0 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 (time);..
192b0 20 69 66 20 28 69 6e 64 65 78 20 21 3d 3d 20 2d if (index !== -
192c0 31 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 1) {..
192d0 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 74 return this._t
192e0 69 6d 65 6c 69 6e 65 5b 69 6e 64 65 78 5d 3b 0a imeline[index];.
192f0 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 . } else
19300 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
19310 65 74 75 72 6e 20 6e 75 6c 6c 3b 0a 09 20 20 20 eturn null;..
19320 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 }.. };..
19330 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 /**... * Re
19340 74 75 72 6e 20 74 68 65 20 66 69 72 73 74 20 65 turn the first e
19350 76 65 6e 74 20 69 6e 20 74 68 65 20 74 69 6d 65 vent in the time
19360 6c 69 6e 65 20 77 69 74 68 6f 75 74 20 72 65 6d line without rem
19370 6f 76 69 6e 67 20 69 74 0a 09 09 20 2a 20 20 40 oving it... * @
19380 72 65 74 75 72 6e 73 20 7b 4f 62 6a 65 63 74 7d returns {Object}
19390 20 54 68 65 20 66 69 72 73 74 20 65 76 65 6e 74 The first event
193a0 20 6f 62 6a 65 63 74 0a 09 09 20 2a 2f 0a 09 20 object... */..
193b0 20 20 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 Tone.Timeline
193c0 2e 70 72 6f 74 6f 74 79 70 65 2e 70 65 65 6b 20 .prototype.peek
193d0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
193e0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
193f0 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 5b 30 this._timeline[0
19400 5d 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 ];.. };..
19410 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 6e /**... * Return
19420 20 74 68 65 20 66 69 72 73 74 20 65 76 65 6e 74 the first event
19430 20 69 6e 20 74 68 65 20 74 69 6d 65 6c 69 6e 65 in the timeline
19440 20 61 6e 64 20 72 65 6d 6f 76 65 20 69 74 0a 09 and remove it..
19450 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 4f . * @returns {O
19460 62 6a 65 63 74 7d 20 54 68 65 20 66 69 72 73 74 bject} The first
19470 20 65 76 65 6e 74 20 6f 62 6a 65 63 74 0a 09 09 event object...
19480 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 */.. Tone.Ti
19490 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f 74 79 70 65 meline.prototype
194a0 2e 73 68 69 66 74 20 3d 20 66 75 6e 63 74 69 6f .shift = functio
194b0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
194c0 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 74 69 6d return this._tim
194d0 65 6c 69 6e 65 2e 73 68 69 66 74 28 29 3b 0a 09 eline.shift();..
194e0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
194f0 09 09 20 2a 20 20 47 65 74 20 74 68 65 20 65 76 .. * Get the ev
19500 65 6e 74 20 77 68 69 63 68 20 69 73 20 73 63 68 ent which is sch
19510 65 64 75 6c 65 64 20 61 66 74 65 72 20 74 68 65 eduled after the
19520 20 67 69 76 65 6e 20 74 69 6d 65 2e 0a 09 09 20 given time....
19530 2a 20 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 * @param {Numb
19540 65 72 7d 20 20 74 69 6d 65 20 20 54 68 65 20 74 er} time The t
19550 69 6d 65 20 74 6f 20 71 75 65 72 79 2e 0a 09 09 ime to query....
19560 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 4f 62 * @returns {Ob
19570 6a 65 63 74 7d 20 54 68 65 20 65 76 65 6e 74 20 ject} The event
19580 6f 62 6a 65 63 74 20 61 66 74 65 72 20 74 68 65 object after the
19590 20 67 69 76 65 6e 20 74 69 6d 65 0a 09 09 20 2a given time... *
195a0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 /.. Tone.Time
195b0 6c 69 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 67 line.prototype.g
195c0 65 74 41 66 74 65 72 20 3d 20 66 75 6e 63 74 69 etAfter = functi
195d0 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 on (time) {..
195e0 20 20 20 20 20 76 61 72 20 69 6e 64 65 78 20 3d var index =
195f0 20 74 68 69 73 2e 5f 73 65 61 72 63 68 28 74 69 this._search(ti
19600 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 me);.. if
19610 20 28 69 6e 64 65 78 20 2b 20 31 20 3c 20 74 68 (index + 1 < th
19620 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 2e 6c 65 6e is._timeline.len
19630 67 74 68 29 20 7b 0a 09 20 20 20 20 20 20 20 20 gth) {..
19640 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
19650 5f 74 69 6d 65 6c 69 6e 65 5b 69 6e 64 65 78 20 _timeline[index
19660 2b 20 31 5d 3b 0a 09 20 20 20 20 20 20 20 20 7d + 1];.. }
19670 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
19680 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c return null
19690 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
196a0 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
196b0 20 2a 20 20 47 65 74 20 74 68 65 20 65 76 65 6e * Get the even
196c0 74 20 62 65 66 6f 72 65 20 74 68 65 20 65 76 65 t before the eve
196d0 6e 74 20 61 74 20 74 68 65 20 67 69 76 65 6e 20 nt at the given
196e0 74 69 6d 65 2e 0a 09 09 20 2a 20 20 40 70 61 72 time.... * @par
196f0 61 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 20 74 69 am {Number} ti
19700 6d 65 20 20 54 68 65 20 74 69 6d 65 20 74 6f 20 me The time to
19710 71 75 65 72 79 2e 0a 09 09 20 2a 20 20 40 72 65 query.... * @re
19720 74 75 72 6e 73 20 7b 4f 62 6a 65 63 74 7d 20 54 turns {Object} T
19730 68 65 20 65 76 65 6e 74 20 6f 62 6a 65 63 74 20 he event object
19740 62 65 66 6f 72 65 20 74 68 65 20 67 69 76 65 6e before the given
19750 20 74 69 6d 65 0a 09 09 20 2a 2f 0a 09 20 20 20 time... */..
19760 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 2e 70 Tone.Timeline.p
19770 72 6f 74 6f 74 79 70 65 2e 67 65 74 42 65 66 6f rototype.getBefo
19780 72 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 re = function (t
19790 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ime) {..
197a0 76 61 72 20 6c 65 6e 20 3d 20 74 68 69 73 2e 5f var len = this._
197b0 74 69 6d 65 6c 69 6e 65 2e 6c 65 6e 67 74 68 3b timeline.length;
197c0 0a 09 20 20 20 20 20 20 20 20 2f 2f 69 66 20 69 .. //if i
197d0 74 27 73 20 61 66 74 65 72 20 74 68 65 20 6c 61 t's after the la
197e0 73 74 20 69 74 65 6d 2c 20 72 65 74 75 72 6e 20 st item, return
197f0 74 68 65 20 6c 61 73 74 20 69 74 65 6d 0a 09 20 the last item..
19800 20 20 20 20 20 20 20 69 66 20 28 6c 65 6e 20 3e if (len >
19810 20 30 20 26 26 20 74 68 69 73 2e 5f 74 69 6d 65 0 && this._time
19820 6c 69 6e 65 5b 6c 65 6e 20 2d 20 31 5d 2e 74 69 line[len - 1].ti
19830 6d 65 20 3c 20 74 69 6d 65 29 20 7b 0a 09 20 20 me < time) {..
19840 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
19850 20 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 5b this._timeline[
19860 6c 65 6e 20 2d 20 31 5d 3b 0a 09 20 20 20 20 20 len - 1];..
19870 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 76 61 }.. va
19880 72 20 69 6e 64 65 78 20 3d 20 74 68 69 73 2e 5f r index = this._
19890 73 65 61 72 63 68 28 74 69 6d 65 29 3b 0a 09 20 search(time);..
198a0 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65 78 if (index
198b0 20 2d 20 31 20 3e 3d 20 30 29 20 7b 0a 09 20 20 - 1 >= 0) {..
198c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
198d0 20 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 5b this._timeline[
198e0 69 6e 64 65 78 20 2d 20 31 5d 3b 0a 09 20 20 20 index - 1];..
198f0 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
19900 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
19910 6e 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 n null;..
19920 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 }.. };..
19930 2f 2a 2a 0a 09 09 20 2a 20 20 43 61 6e 63 65 6c /**... * Cancel
19940 20 65 76 65 6e 74 73 20 61 66 74 65 72 20 74 68 events after th
19950 65 20 67 69 76 65 6e 20 74 69 6d 65 0a 09 09 20 e given time...
19960 2a 20 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 * @param {Numb
19970 65 72 7d 20 20 74 69 6d 65 20 20 54 68 65 20 74 er} time The t
19980 69 6d 65 20 74 6f 20 71 75 65 72 79 2e 0a 09 09 ime to query....
19990 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f * @returns {To
199a0 6e 65 2e 54 69 6d 65 6c 69 6e 65 7d 20 74 68 69 ne.Timeline} thi
199b0 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
199c0 65 2e 54 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f e.Timeline.proto
199d0 74 79 70 65 2e 63 61 6e 63 65 6c 20 3d 20 66 75 type.cancel = fu
199e0 6e 63 74 69 6f 6e 20 28 61 66 74 65 72 29 20 7b nction (after) {
199f0 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
19a00 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 2e 6c 65 6e is._timeline.len
19a10 67 74 68 20 3e 20 31 29 20 7b 0a 09 20 20 20 20 gth > 1) {..
19a20 20 20 20 20 20 20 20 20 76 61 72 20 69 6e 64 65 var inde
19a30 78 20 3d 20 74 68 69 73 2e 5f 73 65 61 72 63 68 x = this._search
19a40 28 61 66 74 65 72 29 3b 0a 09 20 20 20 20 20 20 (after);..
19a50 20 20 20 20 20 20 69 66 20 28 69 6e 64 65 78 20 if (index
19a60 3e 3d 20 30 29 20 7b 0a 09 20 20 20 20 20 20 20 >= 0) {..
19a70 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 if (thi
19a80 73 2e 5f 74 69 6d 65 6c 69 6e 65 5b 69 6e 64 65 s._timeline[inde
19a90 78 5d 2e 74 69 6d 65 20 3d 3d 3d 20 61 66 74 65 x].time === afte
19aa0 72 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 r) {..
19ab0 20 20 20 20 20 20 20 20 20 20 2f 2f 67 65 74 20 //get
19ac0 74 68 65 20 66 69 72 73 74 20 69 74 65 6d 20 77 the first item w
19ad0 69 74 68 20 74 68 61 74 20 74 69 6d 65 0a 09 20 ith that time..
19ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19af0 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 for (var i =
19b00 69 6e 64 65 78 3b 20 69 20 3e 3d 20 30 3b 20 69 index; i >= 0; i
19b10 2d 2d 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 --) {..
19b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
19b30 66 20 28 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e f (this._timelin
19b40 65 5b 69 5d 2e 74 69 6d 65 20 3d 3d 3d 20 61 66 e[i].time === af
19b50 74 65 72 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ter) {..
19b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19b70 20 20 20 20 69 6e 64 65 78 20 3d 20 69 3b 0a 09 index = i;..
19b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19b90 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
19ba0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
19bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
19bc0 65 61 6b 3b 0a 09 20 20 20 20 20 20 20 20 20 20 eak;..
19bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }.
19be0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
19bf0 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
19c00 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
19c10 2e 5f 74 69 6d 65 6c 69 6e 65 20 3d 20 74 68 69 ._timeline = thi
19c20 73 2e 5f 74 69 6d 65 6c 69 6e 65 2e 73 6c 69 63 s._timeline.slic
19c30 65 28 30 2c 20 69 6e 64 65 78 29 3b 0a 09 20 20 e(0, index);..
19c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 }
19c50 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 else {..
19c60 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
19c70 2e 5f 74 69 6d 65 6c 69 6e 65 20 3d 20 74 68 69 ._timeline = thi
19c80 73 2e 5f 74 69 6d 65 6c 69 6e 65 2e 73 6c 69 63 s._timeline.slic
19c90 65 28 30 2c 20 69 6e 64 65 78 20 2b 20 31 29 3b e(0, index + 1);
19ca0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
19cb0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
19cc0 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
19cd0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
19ce0 5f 74 69 6d 65 6c 69 6e 65 20 3d 20 5b 5d 3b 0a _timeline = [];.
19cf0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
19d00 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 } else i
19d10 66 20 28 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e f (this._timelin
19d20 65 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 31 29 20 e.length === 1)
19d30 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f {.. /
19d40 2f 74 68 65 20 66 69 72 73 74 20 69 74 65 6d 27 /the first item'
19d50 73 20 74 69 6d 65 0a 09 20 20 20 20 20 20 20 20 s time..
19d60 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 74 69 if (this._ti
19d70 6d 65 6c 69 6e 65 5b 30 5d 2e 74 69 6d 65 20 3e meline[0].time >
19d80 3d 20 61 66 74 65 72 29 20 7b 0a 09 20 20 20 20 = after) {..
19d90 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
19da0 2e 5f 74 69 6d 65 6c 69 6e 65 20 3d 20 5b 5d 3b ._timeline = [];
19db0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
19dc0 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
19dd0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
19de0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
19df0 2a 0a 09 09 20 2a 20 20 43 61 6e 63 65 6c 20 65 *... * Cancel e
19e00 76 65 6e 74 73 20 62 65 66 6f 72 65 20 6f 72 20 vents before or
19e10 65 71 75 61 6c 20 74 6f 20 74 68 65 20 67 69 76 equal to the giv
19e20 65 6e 20 74 69 6d 65 2e 0a 09 09 20 2a 20 20 40 en time.... * @
19e30 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 param {Number}
19e40 20 74 69 6d 65 20 20 54 68 65 20 74 69 6d 65 20 time The time
19e50 74 6f 20 63 61 6e 63 65 6c 20 62 65 66 6f 72 65 to cancel before
19e60 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 .... * @returns
19e70 20 7b 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 7d {Tone.Timeline}
19e80 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
19e90 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 2e 70 Tone.Timeline.p
19ea0 72 6f 74 6f 74 79 70 65 2e 63 61 6e 63 65 6c 42 rototype.cancelB
19eb0 65 66 6f 72 65 20 3d 20 66 75 6e 63 74 69 6f 6e efore = function
19ec0 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 (time) {..
19ed0 20 20 20 69 66 20 28 74 68 69 73 2e 5f 74 69 6d if (this._tim
19ee0 65 6c 69 6e 65 2e 6c 65 6e 67 74 68 29 20 7b 0a eline.length) {.
19ef0 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
19f00 20 69 6e 64 65 78 20 3d 20 74 68 69 73 2e 5f 73 index = this._s
19f10 65 61 72 63 68 28 74 69 6d 65 29 3b 0a 09 20 20 earch(time);..
19f20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e if (in
19f30 64 65 78 20 3e 3d 20 30 29 20 7b 0a 09 20 20 20 dex >= 0) {..
19f40 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
19f50 73 2e 5f 74 69 6d 65 6c 69 6e 65 20 3d 20 74 68 s._timeline = th
19f60 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 2e 73 6c 69 is._timeline.sli
19f70 63 65 28 69 6e 64 65 78 20 2b 20 31 29 3b 0a 09 ce(index + 1);..
19f80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
19f90 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
19fa0 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
19fb0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
19fc0 09 09 20 2a 20 20 44 6f 65 73 20 61 20 62 69 6e .. * Does a bin
19fd0 61 72 79 20 73 65 72 61 63 68 20 6f 6e 20 74 68 ary serach on th
19fe0 65 20 74 69 6d 65 6c 69 6e 65 20 61 72 72 61 79 e timeline array
19ff0 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 and returns the
1a000 20 0a 09 09 20 2a 20 20 6e 65 61 72 65 73 74 20 ... * nearest
1a010 65 76 65 6e 74 20 69 6e 64 65 78 20 77 68 6f 73 event index whos
1a020 65 20 74 69 6d 65 20 69 73 20 61 66 74 65 72 20 e time is after
1a030 6f 72 20 65 71 75 61 6c 20 74 6f 20 74 68 65 20 or equal to the
1a040 67 69 76 65 6e 20 74 69 6d 65 2e 0a 09 09 20 2a given time.... *
1a050 20 20 49 66 20 61 20 74 69 6d 65 20 69 73 20 73 If a time is s
1a060 65 61 72 63 68 65 64 20 62 65 66 6f 72 65 20 74 earched before t
1a070 68 65 20 66 69 72 73 74 20 69 6e 64 65 78 20 69 he first index i
1a080 6e 20 74 68 65 20 74 69 6d 65 6c 69 6e 65 2c 20 n the timeline,
1a090 2d 31 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a -1 is returned..
1a0a0 09 09 20 2a 20 20 49 66 20 74 68 65 20 74 69 6d .. * If the tim
1a0b0 65 20 69 73 20 61 66 74 65 72 20 74 68 65 20 65 e is after the e
1a0c0 6e 64 2c 20 74 68 65 20 69 6e 64 65 78 20 6f 66 nd, the index of
1a0d0 20 74 68 65 20 6c 61 73 74 20 69 74 65 6d 20 69 the last item i
1a0e0 73 20 72 65 74 75 72 6e 65 64 2e 0a 09 09 20 2a s returned.... *
1a0f0 20 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 @param {Numbe
1a100 72 7d 20 20 74 69 6d 65 20 20 0a 09 09 20 2a 20 r} time ... *
1a110 20 40 72 65 74 75 72 6e 20 20 7b 4e 75 6d 62 65 @return {Numbe
1a120 72 7d 20 74 68 65 20 69 6e 64 65 78 20 69 6e 20 r} the index in
1a130 74 68 65 20 74 69 6d 65 6c 69 6e 65 20 61 72 72 the timeline arr
1a140 61 79 20 0a 09 09 20 2a 20 20 40 70 72 69 76 61 ay ... * @priva
1a150 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f te... */.. To
1a160 6e 65 2e 54 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 ne.Timeline.prot
1a170 6f 74 79 70 65 2e 5f 73 65 61 72 63 68 20 3d 20 otype._search =
1a180 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 function (time)
1a190 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 62 {.. var b
1a1a0 65 67 69 6e 6e 69 6e 67 20 3d 20 30 3b 0a 09 20 eginning = 0;..
1a1b0 20 20 20 20 20 20 20 76 61 72 20 6c 65 6e 20 3d var len =
1a1c0 20 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 2e this._timeline.
1a1d0 6c 65 6e 67 74 68 3b 0a 09 20 20 20 20 20 20 20 length;..
1a1e0 20 76 61 72 20 65 6e 64 20 3d 20 6c 65 6e 3b 0a var end = len;.
1a1f0 09 20 20 20 20 20 20 20 20 69 66 20 28 6c 65 6e . if (len
1a200 20 3e 20 30 20 26 26 20 74 68 69 73 2e 5f 74 69 > 0 && this._ti
1a210 6d 65 6c 69 6e 65 5b 6c 65 6e 20 2d 20 31 5d 2e meline[len - 1].
1a220 74 69 6d 65 20 3c 3d 20 74 69 6d 65 29 20 7b 0a time <= time) {.
1a230 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
1a240 75 72 6e 20 6c 65 6e 20 2d 20 31 3b 0a 09 20 20 urn len - 1;..
1a250 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
1a260 20 77 68 69 6c 65 20 28 62 65 67 69 6e 6e 69 6e while (beginnin
1a270 67 20 3c 20 65 6e 64 29 20 7b 0a 09 20 20 20 20 g < end) {..
1a280 20 20 20 20 20 20 20 20 2f 2f 20 63 61 6c 63 75 // calcu
1a290 6c 61 74 65 20 74 68 65 20 6d 69 64 70 6f 69 6e late the midpoin
1a2a0 74 20 66 6f 72 20 72 6f 75 67 68 6c 79 20 65 71 t for roughly eq
1a2b0 75 61 6c 20 70 61 72 74 69 74 69 6f 6e 0a 09 20 ual partition..
1a2c0 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6d var m
1a2d0 69 64 50 6f 69 6e 74 20 3d 20 4d 61 74 68 2e 66 idPoint = Math.f
1a2e0 6c 6f 6f 72 28 62 65 67 69 6e 6e 69 6e 67 20 2b loor(beginning +
1a2f0 20 28 65 6e 64 20 2d 20 62 65 67 69 6e 6e 69 6e (end - beginnin
1a300 67 29 20 2f 20 32 29 3b 0a 09 20 20 20 20 20 20 g) / 2);..
1a310 20 20 20 20 20 20 76 61 72 20 65 76 65 6e 74 20 var event
1a320 3d 20 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 = this._timeline
1a330 5b 6d 69 64 50 6f 69 6e 74 5d 3b 0a 09 20 20 20 [midPoint];..
1a340 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 65 78 var nex
1a350 74 45 76 65 6e 74 20 3d 20 74 68 69 73 2e 5f 74 tEvent = this._t
1a360 69 6d 65 6c 69 6e 65 5b 6d 69 64 50 6f 69 6e 74 imeline[midPoint
1a370 20 2b 20 31 5d 3b 0a 09 20 20 20 20 20 20 20 20 + 1];..
1a380 20 20 20 20 69 66 20 28 65 76 65 6e 74 2e 74 69 if (event.ti
1a390 6d 65 20 3d 3d 3d 20 74 69 6d 65 29 20 7b 0a 09 me === time) {..
1a3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a3b0 2f 2f 63 68 6f 6f 73 65 20 74 68 65 20 6c 61 73 //choose the las
1a3c0 74 20 6f 6e 65 20 74 68 61 74 20 68 61 73 20 74 t one that has t
1a3d0 68 65 20 73 61 6d 65 20 74 69 6d 65 0a 09 20 20 he same time..
1a3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f fo
1a3f0 72 20 28 76 61 72 20 69 20 3d 20 6d 69 64 50 6f r (var i = midPo
1a400 69 6e 74 3b 20 69 20 3c 20 74 68 69 73 2e 5f 74 int; i < this._t
1a410 69 6d 65 6c 69 6e 65 2e 6c 65 6e 67 74 68 3b 20 imeline.length;
1a420 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 i++) {..
1a430 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
1a440 74 65 73 74 45 76 65 6e 74 20 3d 20 74 68 69 73 testEvent = this
1a450 2e 5f 74 69 6d 65 6c 69 6e 65 5b 69 5d 3b 0a 09 ._timeline[i];..
1a460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a470 20 20 20 20 69 66 20 28 74 65 73 74 45 76 65 6e if (testEven
1a480 74 2e 74 69 6d 65 20 3d 3d 3d 20 74 69 6d 65 29 t.time === time)
1a490 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
1a4a0 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 64 50 midP
1a4b0 6f 69 6e 74 20 3d 20 69 3b 0a 09 20 20 20 20 20 oint = i;..
1a4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
1a4d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1a4e0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
1a4f0 20 20 20 20 20 72 65 74 75 72 6e 20 6d 69 64 50 return midP
1a500 6f 69 6e 74 3b 0a 09 20 20 20 20 20 20 20 20 20 oint;..
1a510 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 65 76 } else if (ev
1a520 65 6e 74 2e 74 69 6d 65 20 3c 20 74 69 6d 65 20 ent.time < time
1a530 26 26 20 6e 65 78 74 45 76 65 6e 74 2e 74 69 6d && nextEvent.tim
1a540 65 20 3e 20 74 69 6d 65 29 20 7b 0a 09 20 20 20 e > time) {..
1a550 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
1a560 75 72 6e 20 6d 69 64 50 6f 69 6e 74 3b 0a 09 20 urn midPoint;..
1a570 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
1a580 65 20 69 66 20 28 65 76 65 6e 74 2e 74 69 6d 65 e if (event.time
1a590 20 3e 20 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 > time) {..
1a5a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 73 65 //se
1a5b0 61 72 63 68 20 6c 6f 77 65 72 0a 09 20 20 20 20 arch lower..
1a5c0 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 20 end
1a5d0 3d 20 6d 69 64 50 6f 69 6e 74 3b 0a 09 20 20 20 = midPoint;..
1a5e0 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
1a5f0 69 66 20 28 65 76 65 6e 74 2e 74 69 6d 65 20 3c if (event.time <
1a600 20 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 time) {..
1a610 20 20 20 20 20 20 20 20 20 20 2f 2f 73 65 61 72 //sear
1a620 63 68 20 75 70 70 65 72 0a 09 20 20 20 20 20 20 ch upper..
1a630 20 20 20 20 20 20 20 20 20 20 62 65 67 69 6e 6e beginn
1a640 69 6e 67 20 3d 20 6d 69 64 50 6f 69 6e 74 20 2b ing = midPoint +
1a650 20 31 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 1;..
1a660 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 }.. }..
1a670 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 return -1
1a680 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
1a690 2a 2a 0a 09 09 20 2a 20 20 49 6e 74 65 72 6e 61 **... * Interna
1a6a0 6c 20 69 74 65 72 61 74 6f 72 2e 20 41 70 70 6c l iterator. Appl
1a6b0 69 65 73 20 65 78 74 72 61 20 73 61 66 65 74 79 ies extra safety
1a6c0 20 63 68 65 63 6b 73 20 66 6f 72 20 0a 09 09 20 checks for ...
1a6d0 2a 20 20 72 65 6d 6f 76 69 6e 67 20 69 74 65 6d * removing item
1a6e0 73 20 66 72 6f 6d 20 74 68 65 20 61 72 72 61 79 s from the array
1a6f0 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 . ... * @param
1a700 20 7b 46 75 6e 63 74 69 6f 6e 7d 20 20 63 61 6c {Function} cal
1a710 6c 62 61 63 6b 20 0a 09 09 20 2a 20 20 40 70 61 lback ... * @pa
1a720 72 61 6d 20 20 7b 4e 75 6d 62 65 72 3d 7d 20 20 ram {Number=}
1a730 20 20 6c 6f 77 65 72 42 6f 75 6e 64 20 20 20 20 lowerBound
1a740 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 ... * @param
1a750 7b 4e 75 6d 62 65 72 3d 7d 20 20 20 20 75 70 70 {Number=} upp
1a760 65 72 42 6f 75 6e 64 20 20 20 20 0a 09 09 20 2a erBound ... *
1a770 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f @private... */
1a780 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 6c .. Tone.Timel
1a790 69 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 69 ine.prototype._i
1a7a0 74 65 72 61 74 65 20 3d 20 66 75 6e 63 74 69 6f terate = functio
1a7b0 6e 20 28 63 61 6c 6c 62 61 63 6b 2c 20 6c 6f 77 n (callback, low
1a7c0 65 72 42 6f 75 6e 64 2c 20 75 70 70 65 72 42 6f erBound, upperBo
1a7d0 75 6e 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 und) {..
1a7e0 74 68 69 73 2e 5f 69 74 65 72 61 74 69 6e 67 20 this._iterating
1a7f0 3d 20 74 72 75 65 3b 0a 09 20 20 20 20 20 20 20 = true;..
1a800 20 6c 6f 77 65 72 42 6f 75 6e 64 20 3d 20 74 68 lowerBound = th
1a810 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 6c 6f is.defaultArg(lo
1a820 77 65 72 42 6f 75 6e 64 2c 20 30 29 3b 0a 09 20 werBound, 0);..
1a830 20 20 20 20 20 20 20 75 70 70 65 72 42 6f 75 6e upperBoun
1a840 64 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 d = this.default
1a850 41 72 67 28 75 70 70 65 72 42 6f 75 6e 64 2c 20 Arg(upperBound,
1a860 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 2e 6c this._timeline.l
1a870 65 6e 67 74 68 20 2d 20 31 29 3b 0a 09 20 20 20 ength - 1);..
1a880 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 for (var i
1a890 3d 20 6c 6f 77 65 72 42 6f 75 6e 64 3b 20 69 20 = lowerBound; i
1a8a0 3c 3d 20 75 70 70 65 72 42 6f 75 6e 64 3b 20 69 <= upperBound; i
1a8b0 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ++) {..
1a8c0 20 20 20 63 61 6c 6c 62 61 63 6b 28 74 68 69 73 callback(this
1a8d0 2e 5f 74 69 6d 65 6c 69 6e 65 5b 69 5d 29 3b 0a ._timeline[i]);.
1a8e0 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
1a8f0 20 20 20 20 74 68 69 73 2e 5f 69 74 65 72 61 74 this._iterat
1a900 69 6e 67 20 3d 20 66 61 6c 73 65 3b 0a 09 20 20 ing = false;..
1a910 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f if (this._
1a920 74 6f 52 65 6d 6f 76 65 2e 6c 65 6e 67 74 68 20 toRemove.length
1a930 3e 20 30 29 20 7b 0a 09 20 20 20 20 20 20 20 20 > 0) {..
1a940 20 20 20 20 66 6f 72 20 28 76 61 72 20 6a 20 3d for (var j =
1a950 20 30 3b 20 6a 20 3c 20 74 68 69 73 2e 5f 74 6f 0; j < this._to
1a960 52 65 6d 6f 76 65 2e 6c 65 6e 67 74 68 3b 20 6a Remove.length; j
1a970 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ++) {..
1a980 20 20 20 20 20 20 20 76 61 72 20 69 6e 64 65 78 var index
1a990 20 3d 20 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e = this._timelin
1a9a0 65 2e 69 6e 64 65 78 4f 66 28 74 68 69 73 2e 5f e.indexOf(this._
1a9b0 74 6f 52 65 6d 6f 76 65 5b 6a 5d 29 3b 0a 09 20 toRemove[j]);..
1a9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
1a9d0 66 20 28 69 6e 64 65 78 20 21 3d 3d 20 2d 31 29 f (index !== -1)
1a9e0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
1a9f0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 74 69 this._ti
1aa00 6d 65 6c 69 6e 65 2e 73 70 6c 69 63 65 28 69 6e meline.splice(in
1aa10 64 65 78 2c 20 31 29 3b 0a 09 20 20 20 20 20 20 dex, 1);..
1aa20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
1aa30 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
1aa40 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 74 6f this._to
1aa50 52 65 6d 6f 76 65 20 3d 20 5b 5d 3b 0a 09 20 20 Remove = [];..
1aa60 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a }.. };.
1aa70 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 49 . /**... * I
1aa80 74 65 72 61 74 65 20 6f 76 65 72 20 65 76 65 72 terate over ever
1aa90 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 61 72 ything in the ar
1aaa0 72 61 79 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ray... * @param
1aab0 20 20 7b 46 75 6e 63 74 69 6f 6e 7d 20 20 63 61 {Function} ca
1aac0 6c 6c 62 61 63 6b 20 54 68 65 20 63 61 6c 6c 62 llback The callb
1aad0 61 63 6b 20 74 6f 20 69 6e 76 6f 6b 65 20 77 69 ack to invoke wi
1aae0 74 68 20 65 76 65 72 79 20 69 74 65 6d 0a 09 09 th every item...
1aaf0 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f * @returns {To
1ab00 6e 65 2e 54 69 6d 65 6c 69 6e 65 7d 20 74 68 69 ne.Timeline} thi
1ab10 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
1ab20 65 2e 54 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f e.Timeline.proto
1ab30 74 79 70 65 2e 66 6f 72 45 61 63 68 20 3d 20 66 type.forEach = f
1ab40 75 6e 63 74 69 6f 6e 20 28 63 61 6c 6c 62 61 63 unction (callbac
1ab50 6b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 k) {.. th
1ab60 69 73 2e 5f 69 74 65 72 61 74 65 28 63 61 6c 6c is._iterate(call
1ab70 62 61 63 6b 29 3b 0a 09 20 20 20 20 20 20 20 20 back);..
1ab80 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 return this;..
1ab90 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
1aba0 20 2a 20 20 49 74 65 72 61 74 65 20 6f 76 65 72 * Iterate over
1abb0 20 65 76 65 72 79 74 68 69 6e 67 20 69 6e 20 74 everything in t
1abc0 68 65 20 61 72 72 61 79 20 61 74 20 6f 72 20 62 he array at or b
1abd0 65 66 6f 72 65 20 74 68 65 20 67 69 76 65 6e 20 efore the given
1abe0 74 69 6d 65 2e 0a 09 09 20 2a 20 20 40 70 61 72 time.... * @par
1abf0 61 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 20 74 69 am {Number} ti
1ac00 6d 65 20 54 68 65 20 74 69 6d 65 20 74 6f 20 63 me The time to c
1ac10 68 65 63 6b 20 69 66 20 69 74 65 6d 73 20 61 72 heck if items ar
1ac20 65 20 62 65 66 6f 72 65 0a 09 09 20 2a 20 20 40 e before... * @
1ac30 70 61 72 61 6d 20 20 7b 46 75 6e 63 74 69 6f 6e param {Function
1ac40 7d 20 20 63 61 6c 6c 62 61 63 6b 20 54 68 65 20 } callback The
1ac50 63 61 6c 6c 62 61 63 6b 20 74 6f 20 69 6e 76 6f callback to invo
1ac60 6b 65 20 77 69 74 68 20 65 76 65 72 79 20 69 74 ke with every it
1ac70 65 6d 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e em... * @return
1ac80 73 20 7b 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 s {Tone.Timeline
1ac90 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 } this... */..
1aca0 20 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 2e Tone.Timeline.
1acb0 70 72 6f 74 6f 74 79 70 65 2e 66 6f 72 45 61 63 prototype.forEac
1acc0 68 42 65 66 6f 72 65 20 3d 20 66 75 6e 63 74 69 hBefore = functi
1acd0 6f 6e 20 28 74 69 6d 65 2c 20 63 61 6c 6c 62 61 on (time, callba
1ace0 63 6b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f ck) {.. /
1acf0 2f 69 74 65 72 61 74 65 20 6f 76 65 72 20 74 68 /iterate over th
1ad00 65 20 69 74 65 6d 73 20 69 6e 20 72 65 76 65 72 e items in rever
1ad10 73 65 20 73 6f 20 74 68 61 74 20 72 65 6d 6f 76 se so that remov
1ad20 69 6e 67 20 61 6e 20 69 74 65 6d 20 64 6f 65 73 ing an item does
1ad30 6e 27 74 20 62 72 65 61 6b 20 74 68 69 6e 67 73 n't break things
1ad40 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 75 70 .. var up
1ad50 70 65 72 42 6f 75 6e 64 20 3d 20 74 68 69 73 2e perBound = this.
1ad60 5f 73 65 61 72 63 68 28 74 69 6d 65 29 3b 0a 09 _search(time);..
1ad70 20 20 20 20 20 20 20 20 69 66 20 28 75 70 70 65 if (uppe
1ad80 72 42 6f 75 6e 64 20 21 3d 3d 20 2d 31 29 20 7b rBound !== -1) {
1ad90 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
1ada0 69 73 2e 5f 69 74 65 72 61 74 65 28 63 61 6c 6c is._iterate(call
1adb0 62 61 63 6b 2c 20 30 2c 20 75 70 70 65 72 42 6f back, 0, upperBo
1adc0 75 6e 64 29 3b 0a 09 20 20 20 20 20 20 20 20 7d und);.. }
1add0 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
1ade0 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
1adf0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 49 74 /**... * It
1ae00 65 72 61 74 65 20 6f 76 65 72 20 65 76 65 72 79 erate over every
1ae10 74 68 69 6e 67 20 69 6e 20 74 68 65 20 61 72 72 thing in the arr
1ae20 61 79 20 61 66 74 65 72 20 74 68 65 20 67 69 76 ay after the giv
1ae30 65 6e 20 74 69 6d 65 2e 0a 09 09 20 2a 20 20 40 en time.... * @
1ae40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 param {Number}
1ae50 20 74 69 6d 65 20 54 68 65 20 74 69 6d 65 20 74 time The time t
1ae60 6f 20 63 68 65 63 6b 20 69 66 20 69 74 65 6d 73 o check if items
1ae70 20 61 72 65 20 62 65 66 6f 72 65 0a 09 09 20 2a are before... *
1ae80 20 20 40 70 61 72 61 6d 20 20 7b 46 75 6e 63 74 @param {Funct
1ae90 69 6f 6e 7d 20 20 63 61 6c 6c 62 61 63 6b 20 54 ion} callback T
1aea0 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 69 he callback to i
1aeb0 6e 76 6f 6b 65 20 77 69 74 68 20 65 76 65 72 79 nvoke with every
1aec0 20 69 74 65 6d 0a 09 09 20 2a 20 20 40 72 65 74 item... * @ret
1aed0 75 72 6e 73 20 7b 54 6f 6e 65 2e 54 69 6d 65 6c urns {Tone.Timel
1aee0 69 6e 65 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a ine} this... */.
1aef0 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 . Tone.Timeli
1af00 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 66 6f 72 ne.prototype.for
1af10 45 61 63 68 41 66 74 65 72 20 3d 20 66 75 6e 63 EachAfter = func
1af20 74 69 6f 6e 20 28 74 69 6d 65 2c 20 63 61 6c 6c tion (time, call
1af30 62 61 63 6b 29 20 7b 0a 09 20 20 20 20 20 20 20 back) {..
1af40 20 2f 2f 69 74 65 72 61 74 65 20 6f 76 65 72 20 //iterate over
1af50 74 68 65 20 69 74 65 6d 73 20 69 6e 20 72 65 76 the items in rev
1af60 65 72 73 65 20 73 6f 20 74 68 61 74 20 72 65 6d erse so that rem
1af70 6f 76 69 6e 67 20 61 6e 20 69 74 65 6d 20 64 6f oving an item do
1af80 65 73 6e 27 74 20 62 72 65 61 6b 20 74 68 69 6e esn't break thin
1af90 67 73 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 gs.. var
1afa0 6c 6f 77 65 72 42 6f 75 6e 64 20 3d 20 74 68 69 lowerBound = thi
1afb0 73 2e 5f 73 65 61 72 63 68 28 74 69 6d 65 29 3b s._search(time);
1afc0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
1afd0 69 74 65 72 61 74 65 28 63 61 6c 6c 62 61 63 6b iterate(callback
1afe0 2c 20 6c 6f 77 65 72 42 6f 75 6e 64 20 2b 20 31 , lowerBound + 1
1aff0 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 );.. retu
1b000 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
1b010 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
1b020 49 74 65 72 61 74 65 20 6f 76 65 72 20 65 76 65 Iterate over eve
1b030 72 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 61 rything in the a
1b040 72 72 61 79 20 61 74 20 6f 72 20 61 66 74 65 72 rray at or after
1b050 20 74 68 65 20 67 69 76 65 6e 20 74 69 6d 65 2e the given time.
1b060 20 53 69 6d 69 6c 61 72 20 74 6f 20 0a 09 09 20 Similar to ...
1b070 2a 20 20 66 6f 72 45 61 63 68 41 66 74 65 72 2c * forEachAfter,
1b080 20 62 75 74 20 69 6e 63 6c 75 64 65 73 20 74 68 but includes th
1b090 65 20 69 74 65 6d 28 73 29 20 61 74 20 74 68 65 e item(s) at the
1b0a0 20 67 69 76 65 6e 20 74 69 6d 65 2e 0a 09 09 20 given time....
1b0b0 2a 20 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 * @param {Numb
1b0c0 65 72 7d 20 20 74 69 6d 65 20 54 68 65 20 74 69 er} time The ti
1b0d0 6d 65 20 74 6f 20 63 68 65 63 6b 20 69 66 20 69 me to check if i
1b0e0 74 65 6d 73 20 61 72 65 20 62 65 66 6f 72 65 0a tems are before.
1b0f0 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 46 .. * @param {F
1b100 75 6e 63 74 69 6f 6e 7d 20 20 63 61 6c 6c 62 61 unction} callba
1b110 63 6b 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 ck The callback
1b120 74 6f 20 69 6e 76 6f 6b 65 20 77 69 74 68 20 65 to invoke with e
1b130 76 65 72 79 20 69 74 65 6d 0a 09 09 20 2a 20 20 very item... *
1b140 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 54 @returns {Tone.T
1b150 69 6d 65 6c 69 6e 65 7d 20 74 68 69 73 0a 09 09 imeline} this...
1b160 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 */.. Tone.Ti
1b170 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f 74 79 70 65 meline.prototype
1b180 2e 66 6f 72 45 61 63 68 46 72 6f 6d 20 3d 20 66 .forEachFrom = f
1b190 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 2c 20 63 unction (time, c
1b1a0 61 6c 6c 62 61 63 6b 29 20 7b 0a 09 20 20 20 20 allback) {..
1b1b0 20 20 20 20 2f 2f 69 74 65 72 61 74 65 20 6f 76 //iterate ov
1b1c0 65 72 20 74 68 65 20 69 74 65 6d 73 20 69 6e 20 er the items in
1b1d0 72 65 76 65 72 73 65 20 73 6f 20 74 68 61 74 20 reverse so that
1b1e0 72 65 6d 6f 76 69 6e 67 20 61 6e 20 69 74 65 6d removing an item
1b1f0 20 64 6f 65 73 6e 27 74 20 62 72 65 61 6b 20 74 doesn't break t
1b200 68 69 6e 67 73 0a 09 20 20 20 20 20 20 20 20 76 hings.. v
1b210 61 72 20 6c 6f 77 65 72 42 6f 75 6e 64 20 3d 20 ar lowerBound =
1b220 74 68 69 73 2e 5f 73 65 61 72 63 68 28 74 69 6d this._search(tim
1b230 65 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 77 e);.. //w
1b240 6f 72 6b 20 62 61 63 6b 77 61 72 64 73 20 75 6e ork backwards un
1b250 74 69 6c 20 74 68 65 20 65 76 65 6e 74 20 74 69 til the event ti
1b260 6d 65 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 me is less than
1b270 74 69 6d 65 0a 09 20 20 20 20 20 20 20 20 77 68 time.. wh
1b280 69 6c 65 20 28 6c 6f 77 65 72 42 6f 75 6e 64 20 ile (lowerBound
1b290 3e 3d 20 30 20 26 26 20 74 68 69 73 2e 5f 74 69 >= 0 && this._ti
1b2a0 6d 65 6c 69 6e 65 5b 6c 6f 77 65 72 42 6f 75 6e meline[lowerBoun
1b2b0 64 5d 2e 74 69 6d 65 20 3e 3d 20 74 69 6d 65 29 d].time >= time)
1b2c0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
1b2d0 6c 6f 77 65 72 42 6f 75 6e 64 2d 2d 3b 0a 09 20 lowerBound--;..
1b2e0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
1b2f0 20 20 74 68 69 73 2e 5f 69 74 65 72 61 74 65 28 this._iterate(
1b300 63 61 6c 6c 62 61 63 6b 2c 20 6c 6f 77 65 72 42 callback, lowerB
1b310 6f 75 6e 64 20 2b 20 31 29 3b 0a 09 20 20 20 20 ound + 1);..
1b320 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
1b330 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
1b340 2a 0a 09 09 20 2a 20 20 49 74 65 72 61 74 65 20 *... * Iterate
1b350 6f 76 65 72 20 65 76 65 72 79 74 68 69 6e 67 20 over everything
1b360 69 6e 20 74 68 65 20 61 72 72 61 79 20 61 74 20 in the array at
1b370 74 68 65 20 67 69 76 65 6e 20 74 69 6d 65 0a 09 the given time..
1b380 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 4e 75 . * @param {Nu
1b390 6d 62 65 72 7d 20 20 74 69 6d 65 20 54 68 65 20 mber} time The
1b3a0 74 69 6d 65 20 74 6f 20 63 68 65 63 6b 20 69 66 time to check if
1b3b0 20 69 74 65 6d 73 20 61 72 65 20 62 65 66 6f 72 items are befor
1b3c0 65 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 e... * @param
1b3d0 7b 46 75 6e 63 74 69 6f 6e 7d 20 20 63 61 6c 6c {Function} call
1b3e0 62 61 63 6b 20 54 68 65 20 63 61 6c 6c 62 61 63 back The callbac
1b3f0 6b 20 74 6f 20 69 6e 76 6f 6b 65 20 77 69 74 68 k to invoke with
1b400 20 65 76 65 72 79 20 69 74 65 6d 0a 09 09 20 2a every item... *
1b410 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
1b420 2e 54 69 6d 65 6c 69 6e 65 7d 20 74 68 69 73 0a .Timeline} this.
1b430 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
1b440 54 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f 74 79 Timeline.prototy
1b450 70 65 2e 66 6f 72 45 61 63 68 41 74 54 69 6d 65 pe.forEachAtTime
1b460 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d = function (tim
1b470 65 2c 20 63 61 6c 6c 62 61 63 6b 29 20 7b 0a 09 e, callback) {..
1b480 20 20 20 20 20 20 20 20 2f 2f 69 74 65 72 61 74 //iterat
1b490 65 20 6f 76 65 72 20 74 68 65 20 69 74 65 6d 73 e over the items
1b4a0 20 69 6e 20 72 65 76 65 72 73 65 20 73 6f 20 74 in reverse so t
1b4b0 68 61 74 20 72 65 6d 6f 76 69 6e 67 20 61 6e 20 hat removing an
1b4c0 69 74 65 6d 20 64 6f 65 73 6e 27 74 20 62 72 65 item doesn't bre
1b4d0 61 6b 20 74 68 69 6e 67 73 0a 09 20 20 20 20 20 ak things..
1b4e0 20 20 20 76 61 72 20 75 70 70 65 72 42 6f 75 6e var upperBoun
1b4f0 64 20 3d 20 74 68 69 73 2e 5f 73 65 61 72 63 68 d = this._search
1b500 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 (time);..
1b510 20 69 66 20 28 75 70 70 65 72 42 6f 75 6e 64 20 if (upperBound
1b520 21 3d 3d 20 2d 31 29 20 7b 0a 09 20 20 20 20 20 !== -1) {..
1b530 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69 74 65 this._ite
1b540 72 61 74 65 28 66 75 6e 63 74 69 6f 6e 20 28 65 rate(function (e
1b550 76 65 6e 74 29 20 7b 0a 09 20 20 20 20 20 20 20 vent) {..
1b560 20 20 20 20 20 20 20 20 20 69 66 20 28 65 76 65 if (eve
1b570 6e 74 2e 74 69 6d 65 20 3d 3d 3d 20 74 69 6d 65 nt.time === time
1b580 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
1b590 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 callbac
1b5a0 6b 28 65 76 65 6e 74 29 3b 0a 09 20 20 20 20 20 k(event);..
1b5b0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
1b5c0 20 20 20 20 20 20 20 20 20 20 7d 2c 20 30 2c 20 }, 0,
1b5d0 75 70 70 65 72 42 6f 75 6e 64 29 3b 0a 09 20 20 upperBound);..
1b5e0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
1b5f0 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
1b600 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
1b610 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a 09 . * Clean up...
1b620 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 . * @return {T
1b630 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 7d 20 20 74 one.Timeline} t
1b640 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
1b650 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 2e 70 72 6f one.Timeline.pro
1b660 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d totype.dispose =
1b670 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
1b680 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 6f Tone.pro
1b690 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 totype.dispose.c
1b6a0 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 all(this);..
1b6b0 20 20 20 20 74 68 69 73 2e 5f 74 69 6d 65 6c 69 this._timeli
1b6c0 6e 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 ne = null;..
1b6d0 20 20 20 20 74 68 69 73 2e 5f 74 6f 52 65 6d 6f this._toRemo
1b6e0 76 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 ve = null;..
1b6f0 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 };.. return T
1b700 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 3b 0a 09 7d one.Timeline;..}
1b710 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
1b720 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
1b730 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a .. /**... *
1b740 20 20 40 63 6c 61 73 73 20 41 20 73 69 67 6e 61 @class A signa
1b750 6c 20 77 68 69 63 68 20 61 64 64 73 20 74 68 65 l which adds the
1b760 20 6d 65 74 68 6f 64 20 67 65 74 56 61 6c 75 65 method getValue
1b770 41 74 54 69 6d 65 2e 20 0a 09 09 20 2a 20 20 20 AtTime. ... *
1b780 20 20 20 20 20 20 43 6f 64 65 20 61 6e 64 20 69 Code and i
1b790 6e 73 70 69 72 61 74 69 6f 6e 20 66 72 6f 6d 20 nspiration from
1b7a0 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 https://github.c
1b7b0 6f 6d 2f 6a 73 61 6e 74 65 6c 6c 2f 77 65 62 2d om/jsantell/web-
1b7c0 61 75 64 69 6f 2d 61 75 74 6f 6d 61 74 69 6f 6e audio-automation
1b7d0 2d 74 69 6d 65 6c 69 6e 65 0a 09 09 20 2a 20 20 -timeline... *
1b7e0 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 50 @extends {Tone.P
1b7f0 61 72 61 6d 7d 0a 09 09 20 2a 20 20 40 70 61 72 aram}... * @par
1b800 61 6d 20 7b 4e 75 6d 62 65 72 3d 7d 20 76 61 6c am {Number=} val
1b810 75 65 20 54 68 65 20 69 6e 69 74 69 61 6c 20 76 ue The initial v
1b820 61 6c 75 65 20 6f 66 20 74 68 65 20 73 69 67 6e alue of the sign
1b830 61 6c 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 al... * @param
1b840 7b 53 74 72 69 6e 67 3d 7d 20 75 6e 69 74 73 20 {String=} units
1b850 54 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20 75 The conversion u
1b860 6e 69 74 73 20 6f 66 20 74 68 65 20 73 69 67 6e nits of the sign
1b870 61 6c 2e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 al.... */.. T
1b880 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e one.TimelineSign
1b890 61 6c 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 al = function ()
1b8a0 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
1b8b0 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f options = this.o
1b8c0 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 ptionsObject(arg
1b8d0 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 uments, [..
1b8e0 20 20 20 20 20 20 20 27 76 61 6c 75 65 27 2c 0a 'value',.
1b8f0 09 20 20 20 20 20 20 20 20 20 20 20 20 27 75 6e . 'un
1b900 69 74 73 27 0a 09 20 20 20 20 20 20 20 20 5d 2c its'.. ],
1b910 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 2e 64 65 66 Tone.Signal.def
1b920 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 aults);..
1b930 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
1b940 73 63 68 65 64 75 6c 65 64 20 65 76 65 6e 74 73 scheduled events
1b950 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 .... * @type {T
1b960 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 7d 0a 09 09 one.Timeline}...
1b970 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
1b980 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
1b990 69 73 2e 5f 65 76 65 6e 74 73 20 3d 20 6e 65 77 is._events = new
1b9a0 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 28 31 Tone.Timeline(1
1b9b0 30 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 0);.. //c
1b9c0 6f 6e 73 74 72 75 63 74 6f 72 73 0a 09 20 20 20 onstructors..
1b9d0 20 20 20 20 20 54 6f 6e 65 2e 53 69 67 6e 61 6c Tone.Signal
1b9e0 2e 61 70 70 6c 79 28 74 68 69 73 2c 20 6f 70 74 .apply(this, opt
1b9f0 69 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 ions);..
1ba00 6f 70 74 69 6f 6e 73 2e 70 61 72 61 6d 20 3d 20 options.param =
1ba10 74 68 69 73 2e 5f 70 61 72 61 6d 3b 0a 09 20 20 this._param;..
1ba20 20 20 20 20 20 20 54 6f 6e 65 2e 50 61 72 61 6d Tone.Param
1ba30 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 .call(this, opti
1ba40 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f ons);.. /
1ba50 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 69 6e **.... * The in
1ba60 69 74 69 61 6c 20 73 63 68 65 64 75 6c 65 64 20 itial scheduled
1ba70 76 61 6c 75 65 0a 09 09 09 20 2a 20 20 40 74 79 value.... * @ty
1ba80 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 09 20 pe {Number}....
1ba90 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
1baa0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
1bab0 2e 5f 69 6e 69 74 69 61 6c 20 3d 20 74 68 69 73 ._initial = this
1bac0 2e 5f 66 72 6f 6d 55 6e 69 74 73 28 74 68 69 73 ._fromUnits(this
1bad0 2e 5f 70 61 72 61 6d 2e 76 61 6c 75 65 29 3b 0a ._param.value);.
1bae0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e . };.. Ton
1baf0 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 54 69 e.extend(Tone.Ti
1bb00 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 2c 20 54 6f melineSignal, To
1bb10 6e 65 2e 50 61 72 61 6d 29 3b 0a 09 20 20 20 20 ne.Param);..
1bb20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 65 76 /**... * The ev
1bb30 65 6e 74 20 74 79 70 65 73 20 6f 66 20 61 20 73 ent types of a s
1bb40 63 68 65 64 75 6c 61 62 6c 65 20 73 69 67 6e 61 chedulable signa
1bb50 6c 2e 0a 09 09 20 2a 20 20 40 65 6e 75 6d 20 7b l.... * @enum {
1bb60 53 74 72 69 6e 67 7d 0a 09 09 20 2a 20 20 40 70 String}... * @p
1bb70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 rivate... */..
1bb80 20 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 Tone.TimelineS
1bb90 69 67 6e 61 6c 2e 54 79 70 65 20 3d 20 7b 0a 09 ignal.Type = {..
1bba0 20 20 20 20 20 20 20 20 4c 69 6e 65 61 72 3a 20 Linear:
1bbb0 27 6c 69 6e 65 61 72 27 2c 0a 09 20 20 20 20 20 'linear',..
1bbc0 20 20 20 45 78 70 6f 6e 65 6e 74 69 61 6c 3a 20 Exponential:
1bbd0 27 65 78 70 6f 6e 65 6e 74 69 61 6c 27 2c 0a 09 'exponential',..
1bbe0 20 20 20 20 20 20 20 20 54 61 72 67 65 74 3a 20 Target:
1bbf0 27 74 61 72 67 65 74 27 2c 0a 09 20 20 20 20 20 'target',..
1bc00 20 20 20 43 75 72 76 65 3a 20 27 63 75 72 76 65 Curve: 'curve
1bc10 27 2c 0a 09 20 20 20 20 20 20 20 20 53 65 74 3a ',.. Set:
1bc20 20 27 73 65 74 27 0a 09 20 20 20 20 7d 3b 0a 09 'set'.. };..
1bc30 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 /**... * The
1bc40 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 20 6f current value o
1bc50 66 20 74 68 65 20 73 69 67 6e 61 6c 2e 20 0a 09 f the signal. ..
1bc60 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f . * @memberOf To
1bc70 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e 61 ne.TimelineSigna
1bc80 6c 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 4e l#... * @type {N
1bc90 75 6d 62 65 72 7d 0a 09 09 20 2a 20 40 6e 61 6d umber}... * @nam
1bca0 65 20 76 61 6c 75 65 0a 09 09 20 2a 2f 0a 09 20 e value... */..
1bcb0 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
1bcc0 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 54 69 Property(Tone.Ti
1bcd0 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 2e 70 72 6f melineSignal.pro
1bce0 74 6f 74 79 70 65 2c 20 27 76 61 6c 75 65 27 2c totype, 'value',
1bcf0 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
1bd00 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
1bd10 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
1bd20 6e 6f 77 20 3d 20 74 68 69 73 2e 6e 6f 77 28 29 now = this.now()
1bd30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 ;.. v
1bd40 61 72 20 76 61 6c 20 3d 20 74 68 69 73 2e 67 65 ar val = this.ge
1bd50 74 56 61 6c 75 65 41 74 54 69 6d 65 28 6e 6f 77 tValueAtTime(now
1bd60 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
1bd70 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 74 6f 55 return this._toU
1bd80 6e 69 74 73 28 76 61 6c 29 3b 0a 09 20 20 20 20 nits(val);..
1bd90 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
1bda0 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 76 set: function (v
1bdb0 61 6c 75 65 29 20 7b 0a 09 20 20 20 20 20 20 20 alue) {..
1bdc0 20 20 20 20 20 76 61 72 20 63 6f 6e 76 65 72 74 var convert
1bdd0 65 64 56 61 6c 20 3d 20 74 68 69 73 2e 5f 66 72 edVal = this._fr
1bde0 6f 6d 55 6e 69 74 73 28 76 61 6c 75 65 29 3b 0a omUnits(value);.
1bdf0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
1be00 73 2e 5f 69 6e 69 74 69 61 6c 20 3d 20 63 6f 6e s._initial = con
1be10 76 65 72 74 65 64 56 61 6c 3b 0a 09 20 20 20 20 vertedVal;..
1be20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 61 6e this.can
1be30 63 65 6c 53 63 68 65 64 75 6c 65 64 56 61 6c 75 celScheduledValu
1be40 65 73 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 es();..
1be50 20 20 20 74 68 69 73 2e 5f 70 61 72 61 6d 2e 76 this._param.v
1be60 61 6c 75 65 20 3d 20 63 6f 6e 76 65 72 74 65 64 alue = converted
1be70 56 61 6c 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a Val;.. }.
1be80 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2f . });.. //
1be90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1bea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1beb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1bec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1bed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f /////////.. /
1bee0 2f 09 53 43 48 45 44 55 4c 49 4e 47 0a 09 20 20 /.SCHEDULING..
1bef0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //////////////
1bf00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1bf10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1bf20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1bf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 /////////////..
1bf40 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 63 68 /**... * Sch
1bf50 65 64 75 6c 65 73 20 61 20 70 61 72 61 6d 65 74 edules a paramet
1bf60 65 72 20 76 61 6c 75 65 20 63 68 61 6e 67 65 20 er value change
1bf70 61 74 20 74 68 65 20 67 69 76 65 6e 20 74 69 6d at the given tim
1bf80 65 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 e.... * @param
1bf90 7b 2a 7d 09 76 61 6c 75 65 20 54 68 65 20 76 61 {*}.value The va
1bfa0 6c 75 65 20 74 6f 20 73 65 74 20 74 68 65 20 73 lue to set the s
1bfb0 69 67 6e 61 6c 2e 0a 09 09 20 2a 20 20 40 70 61 ignal.... * @pa
1bfc0 72 61 6d 20 7b 54 69 6d 65 7d 20 20 74 69 6d 65 ram {Time} time
1bfd0 20 54 68 65 20 74 69 6d 65 20 77 68 65 6e 20 74 The time when t
1bfe0 68 65 20 63 68 61 6e 67 65 20 73 68 6f 75 6c 64 he change should
1bff0 20 6f 63 63 75 72 2e 0a 09 09 20 2a 20 20 40 72 occur.... * @r
1c000 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 54 69 6d eturns {Tone.Tim
1c010 65 6c 69 6e 65 53 69 67 6e 61 6c 7d 20 74 68 69 elineSignal} thi
1c020 73 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 s... * @example
1c030 0a 09 09 20 2a 20 2f 2f 73 65 74 20 74 68 65 20 ... * //set the
1c040 66 72 65 71 75 65 6e 63 79 20 74 6f 20 22 47 34 frequency to "G4
1c050 22 20 69 6e 20 65 78 61 63 74 6c 79 20 31 20 73 " in exactly 1 s
1c060 65 63 6f 6e 64 20 66 72 6f 6d 20 6e 6f 77 2e 20 econd from now.
1c070 0a 09 09 20 2a 20 66 72 65 71 2e 73 65 74 56 61 ... * freq.setVa
1c080 6c 75 65 41 74 54 69 6d 65 28 22 47 34 22 2c 20 lueAtTime("G4",
1c090 22 2b 31 22 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 "+1");... */..
1c0a0 20 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 Tone.TimelineS
1c0b0 69 67 6e 61 6c 2e 70 72 6f 74 6f 74 79 70 65 2e ignal.prototype.
1c0c0 73 65 74 56 61 6c 75 65 41 74 54 69 6d 65 20 3d setValueAtTime =
1c0d0 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 75 65 function (value
1c0e0 2c 20 73 74 61 72 74 54 69 6d 65 29 20 7b 0a 09 , startTime) {..
1c0f0 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 value =
1c100 74 68 69 73 2e 5f 66 72 6f 6d 55 6e 69 74 73 28 this._fromUnits(
1c110 76 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 20 value);..
1c120 20 73 74 61 72 74 54 69 6d 65 20 3d 20 74 68 69 startTime = thi
1c130 73 2e 74 6f 53 65 63 6f 6e 64 73 28 73 74 61 72 s.toSeconds(star
1c140 74 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 tTime);..
1c150 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 2e 61 64 this._events.ad
1c160 64 28 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 d({..
1c170 20 27 74 79 70 65 27 3a 20 54 6f 6e 65 2e 54 69 'type': Tone.Ti
1c180 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 2e 54 79 70 melineSignal.Typ
1c190 65 2e 53 65 74 2c 0a 09 20 20 20 20 20 20 20 20 e.Set,..
1c1a0 20 20 20 20 27 76 61 6c 75 65 27 3a 20 76 61 6c 'value': val
1c1b0 75 65 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 ue,..
1c1c0 20 27 74 69 6d 65 27 3a 20 73 74 61 72 74 54 69 'time': startTi
1c1d0 6d 65 0a 09 20 20 20 20 20 20 20 20 7d 29 3b 0a me.. });.
1c1e0 09 20 20 20 20 20 20 20 20 2f 2f 69 6e 76 6f 6b . //invok
1c1f0 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 65 e the original e
1c200 76 65 6e 74 0a 09 20 20 20 20 20 20 20 20 74 68 vent.. th
1c210 69 73 2e 5f 70 61 72 61 6d 2e 73 65 74 56 61 6c is._param.setVal
1c220 75 65 41 74 54 69 6d 65 28 76 61 6c 75 65 2c 20 ueAtTime(value,
1c230 73 74 61 72 74 54 69 6d 65 29 3b 0a 09 20 20 20 startTime);..
1c240 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
1c250 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
1c260 2a 2a 0a 09 09 20 2a 20 20 53 63 68 65 64 75 6c **... * Schedul
1c270 65 73 20 61 20 6c 69 6e 65 61 72 20 63 6f 6e 74 es a linear cont
1c280 69 6e 75 6f 75 73 20 63 68 61 6e 67 65 20 69 6e inuous change in
1c290 20 70 61 72 61 6d 65 74 65 72 20 76 61 6c 75 65 parameter value
1c2a0 20 66 72 6f 6d 20 74 68 65 20 0a 09 09 20 2a 20 from the ... *
1c2b0 20 70 72 65 76 69 6f 75 73 20 73 63 68 65 64 75 previous schedu
1c2c0 6c 65 64 20 70 61 72 61 6d 65 74 65 72 20 76 61 led parameter va
1c2d0 6c 75 65 20 74 6f 20 74 68 65 20 67 69 76 65 6e lue to the given
1c2e0 20 76 61 6c 75 65 2e 0a 09 09 20 2a 20 20 0a 09 value.... * ..
1c2f0 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 6e 75 . * @param {nu
1c300 6d 62 65 72 7d 20 76 61 6c 75 65 20 20 20 0a 09 mber} value ..
1c310 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 . * @param {Ti
1c320 6d 65 7d 20 65 6e 64 54 69 6d 65 20 0a 09 09 20 me} endTime ...
1c330 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
1c340 65 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e 61 6c e.TimelineSignal
1c350 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 } this... */..
1c360 20 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 Tone.TimelineS
1c370 69 67 6e 61 6c 2e 70 72 6f 74 6f 74 79 70 65 2e ignal.prototype.
1c380 6c 69 6e 65 61 72 52 61 6d 70 54 6f 56 61 6c 75 linearRampToValu
1c390 65 41 74 54 69 6d 65 20 3d 20 66 75 6e 63 74 69 eAtTime = functi
1c3a0 6f 6e 20 28 76 61 6c 75 65 2c 20 65 6e 64 54 69 on (value, endTi
1c3b0 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 me) {.. v
1c3c0 61 6c 75 65 20 3d 20 74 68 69 73 2e 5f 66 72 6f alue = this._fro
1c3d0 6d 55 6e 69 74 73 28 76 61 6c 75 65 29 3b 0a 09 mUnits(value);..
1c3e0 20 20 20 20 20 20 20 20 65 6e 64 54 69 6d 65 20 endTime
1c3f0 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 = this.toSeconds
1c400 28 65 6e 64 54 69 6d 65 29 3b 0a 09 20 20 20 20 (endTime);..
1c410 20 20 20 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 this._events
1c420 2e 61 64 64 28 7b 0a 09 20 20 20 20 20 20 20 20 .add({..
1c430 20 20 20 20 27 74 79 70 65 27 3a 20 54 6f 6e 65 'type': Tone
1c440 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 2e .TimelineSignal.
1c450 54 79 70 65 2e 4c 69 6e 65 61 72 2c 0a 09 20 20 Type.Linear,..
1c460 20 20 20 20 20 20 20 20 20 20 27 76 61 6c 75 65 'value
1c470 27 3a 20 76 61 6c 75 65 2c 0a 09 20 20 20 20 20 ': value,..
1c480 20 20 20 20 20 20 20 27 74 69 6d 65 27 3a 20 65 'time': e
1c490 6e 64 54 69 6d 65 0a 09 20 20 20 20 20 20 20 20 ndTime..
1c4a0 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 });.. thi
1c4b0 73 2e 5f 70 61 72 61 6d 2e 6c 69 6e 65 61 72 52 s._param.linearR
1c4c0 61 6d 70 54 6f 56 61 6c 75 65 41 74 54 69 6d 65 ampToValueAtTime
1c4d0 28 76 61 6c 75 65 2c 20 65 6e 64 54 69 6d 65 29 (value, endTime)
1c4e0 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
1c4f0 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
1c500 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 . /**... * S
1c510 63 68 65 64 75 6c 65 73 20 61 6e 20 65 78 70 6f chedules an expo
1c520 6e 65 6e 74 69 61 6c 20 63 6f 6e 74 69 6e 75 6f nential continuo
1c530 75 73 20 63 68 61 6e 67 65 20 69 6e 20 70 61 72 us change in par
1c540 61 6d 65 74 65 72 20 76 61 6c 75 65 20 66 72 6f ameter value fro
1c550 6d 20 0a 09 09 20 2a 20 20 74 68 65 20 70 72 65 m ... * the pre
1c560 76 69 6f 75 73 20 73 63 68 65 64 75 6c 65 64 20 vious scheduled
1c570 70 61 72 61 6d 65 74 65 72 20 76 61 6c 75 65 20 parameter value
1c580 74 6f 20 74 68 65 20 67 69 76 65 6e 20 76 61 6c to the given val
1c590 75 65 2e 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 ue.... * ... *
1c5a0 20 40 70 61 72 61 6d 20 20 7b 6e 75 6d 62 65 72 @param {number
1c5b0 7d 20 76 61 6c 75 65 20 20 20 0a 09 09 20 2a 20 } value ... *
1c5c0 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 @param {Time}
1c5d0 65 6e 64 54 69 6d 65 20 0a 09 09 20 2a 20 20 40 endTime ... * @
1c5e0 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 54 69 returns {Tone.Ti
1c5f0 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 7d 20 74 68 melineSignal} th
1c600 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
1c610 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e 61 ne.TimelineSigna
1c620 6c 2e 70 72 6f 74 6f 74 79 70 65 2e 65 78 70 6f l.prototype.expo
1c630 6e 65 6e 74 69 61 6c 52 61 6d 70 54 6f 56 61 6c nentialRampToVal
1c640 75 65 41 74 54 69 6d 65 20 3d 20 66 75 6e 63 74 ueAtTime = funct
1c650 69 6f 6e 20 28 76 61 6c 75 65 2c 20 65 6e 64 54 ion (value, endT
1c660 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ime) {..
1c670 2f 2f 67 65 74 20 74 68 65 20 70 72 65 76 69 6f //get the previo
1c680 75 73 20 65 76 65 6e 74 20 61 6e 64 20 6d 61 6b us event and mak
1c690 65 20 73 75 72 65 20 69 74 27 73 20 6e 6f 74 20 e sure it's not
1c6a0 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 30 0a starting from 0.
1c6b0 09 20 20 20 20 20 20 20 20 65 6e 64 54 69 6d 65 . endTime
1c6c0 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 = this.toSecond
1c6d0 73 28 65 6e 64 54 69 6d 65 29 3b 0a 09 20 20 20 s(endTime);..
1c6e0 20 20 20 20 20 76 61 72 20 62 65 66 6f 72 65 45 var beforeE
1c6f0 76 65 6e 74 20 3d 20 74 68 69 73 2e 5f 73 65 61 vent = this._sea
1c700 72 63 68 42 65 66 6f 72 65 28 65 6e 64 54 69 6d rchBefore(endTim
1c710 65 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 e);.. if
1c720 28 62 65 66 6f 72 65 45 76 65 6e 74 20 26 26 20 (beforeEvent &&
1c730 62 65 66 6f 72 65 45 76 65 6e 74 2e 76 61 6c 75 beforeEvent.valu
1c740 65 20 3d 3d 3d 20 30 29 20 7b 0a 09 20 20 20 20 e === 0) {..
1c750 20 20 20 20 20 20 20 20 2f 2f 72 65 73 63 68 65 //resche
1c760 64 75 6c 65 20 74 68 61 74 20 65 76 65 6e 74 0a dule that event.
1c770 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
1c780 73 2e 73 65 74 56 61 6c 75 65 41 74 54 69 6d 65 s.setValueAtTime
1c790 28 74 68 69 73 2e 5f 6d 69 6e 4f 75 74 70 75 74 (this._minOutput
1c7a0 2c 20 62 65 66 6f 72 65 45 76 65 6e 74 2e 74 69 , beforeEvent.ti
1c7b0 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a me);.. }.
1c7c0 09 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d . value =
1c7d0 20 74 68 69 73 2e 5f 66 72 6f 6d 55 6e 69 74 73 this._fromUnits
1c7e0 28 76 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 (value);..
1c7f0 20 20 76 61 72 20 73 65 74 56 61 6c 75 65 20 3d var setValue =
1c800 20 4d 61 74 68 2e 6d 61 78 28 76 61 6c 75 65 2c Math.max(value,
1c810 20 74 68 69 73 2e 5f 6d 69 6e 4f 75 74 70 75 74 this._minOutput
1c820 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
1c830 2e 5f 65 76 65 6e 74 73 2e 61 64 64 28 7b 0a 09 ._events.add({..
1c840 20 20 20 20 20 20 20 20 20 20 20 20 27 74 79 70 'typ
1c850 65 27 3a 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e e': Tone.Timelin
1c860 65 53 69 67 6e 61 6c 2e 54 79 70 65 2e 45 78 70 eSignal.Type.Exp
1c870 6f 6e 65 6e 74 69 61 6c 2c 0a 09 20 20 20 20 20 onential,..
1c880 20 20 20 20 20 20 20 27 76 61 6c 75 65 27 3a 20 'value':
1c890 73 65 74 56 61 6c 75 65 2c 0a 09 20 20 20 20 20 setValue,..
1c8a0 20 20 20 20 20 20 20 27 74 69 6d 65 27 3a 20 65 'time': e
1c8b0 6e 64 54 69 6d 65 0a 09 20 20 20 20 20 20 20 20 ndTime..
1c8c0 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 69 });.. //i
1c8d0 66 20 74 68 65 20 72 61 6d 70 65 64 20 74 6f 20 f the ramped to
1c8e0 76 61 6c 75 65 20 69 73 20 30 2c 20 6d 61 6b 65 value is 0, make
1c8f0 20 69 74 20 67 6f 20 74 6f 20 74 68 65 20 6d 69 it go to the mi
1c900 6e 20 6f 75 74 70 75 74 2c 20 61 6e 64 20 74 68 n output, and th
1c910 65 6e 20 73 65 74 20 74 6f 20 30 2e 0a 09 20 20 en set to 0...
1c920 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 if (value
1c930 3c 20 74 68 69 73 2e 5f 6d 69 6e 4f 75 74 70 75 < this._minOutpu
1c940 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 t) {..
1c950 20 20 74 68 69 73 2e 5f 70 61 72 61 6d 2e 65 78 this._param.ex
1c960 70 6f 6e 65 6e 74 69 61 6c 52 61 6d 70 54 6f 56 ponentialRampToV
1c970 61 6c 75 65 41 74 54 69 6d 65 28 74 68 69 73 2e alueAtTime(this.
1c980 5f 6d 69 6e 4f 75 74 70 75 74 2c 20 65 6e 64 54 _minOutput, endT
1c990 69 6d 65 20 2d 20 74 68 69 73 2e 73 61 6d 70 6c ime - this.sampl
1c9a0 65 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 eTime);..
1c9b0 20 20 20 20 20 74 68 69 73 2e 73 65 74 56 61 6c this.setVal
1c9c0 75 65 41 74 54 69 6d 65 28 30 2c 20 65 6e 64 54 ueAtTime(0, endT
1c9d0 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 7d ime);.. }
1c9e0 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
1c9f0 20 20 20 20 20 74 68 69 73 2e 5f 70 61 72 61 6d this._param
1ca00 2e 65 78 70 6f 6e 65 6e 74 69 61 6c 52 61 6d 70 .exponentialRamp
1ca10 54 6f 56 61 6c 75 65 41 74 54 69 6d 65 28 76 61 ToValueAtTime(va
1ca20 6c 75 65 2c 20 65 6e 64 54 69 6d 65 29 3b 0a 09 lue, endTime);..
1ca30 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
1ca40 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
1ca50 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
1ca60 0a 09 09 20 2a 20 20 53 74 61 72 74 20 65 78 70 ... * Start exp
1ca70 6f 6e 65 6e 74 69 61 6c 6c 79 20 61 70 70 72 6f onentially appro
1ca80 61 63 68 69 6e 67 20 74 68 65 20 74 61 72 67 65 aching the targe
1ca90 74 20 76 61 6c 75 65 20 61 74 20 74 68 65 20 67 t value at the g
1caa0 69 76 65 6e 20 74 69 6d 65 20 77 69 74 68 0a 09 iven time with..
1cab0 09 20 2a 20 20 61 20 72 61 74 65 20 68 61 76 69 . * a rate havi
1cac0 6e 67 20 74 68 65 20 67 69 76 65 6e 20 74 69 6d ng the given tim
1cad0 65 20 63 6f 6e 73 74 61 6e 74 2e 0a 09 09 20 2a e constant.... *
1cae0 20 20 40 70 61 72 61 6d 20 7b 6e 75 6d 62 65 72 @param {number
1caf0 7d 20 76 61 6c 75 65 20 20 20 20 20 20 20 20 0a } value .
1cb00 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 .. * @param {Ti
1cb10 6d 65 7d 20 73 74 61 72 74 54 69 6d 65 20 20 20 me} startTime
1cb20 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b ... * @param {
1cb30 6e 75 6d 62 65 72 7d 20 74 69 6d 65 43 6f 6e 73 number} timeCons
1cb40 74 61 6e 74 20 0a 09 09 20 2a 20 20 40 72 65 74 tant ... * @ret
1cb50 75 72 6e 73 20 7b 54 6f 6e 65 2e 54 69 6d 65 6c urns {Tone.Timel
1cb60 69 6e 65 53 69 67 6e 61 6c 7d 20 74 68 69 73 20 ineSignal} this
1cb70 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
1cb80 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 2e .TimelineSignal.
1cb90 70 72 6f 74 6f 74 79 70 65 2e 73 65 74 54 61 72 prototype.setTar
1cba0 67 65 74 41 74 54 69 6d 65 20 3d 20 66 75 6e 63 getAtTime = func
1cbb0 74 69 6f 6e 20 28 76 61 6c 75 65 2c 20 73 74 61 tion (value, sta
1cbc0 72 74 54 69 6d 65 2c 20 74 69 6d 65 43 6f 6e 73 rtTime, timeCons
1cbd0 74 61 6e 74 29 20 7b 0a 09 20 20 20 20 20 20 20 tant) {..
1cbe0 20 76 61 6c 75 65 20 3d 20 74 68 69 73 2e 5f 66 value = this._f
1cbf0 72 6f 6d 55 6e 69 74 73 28 76 61 6c 75 65 29 3b romUnits(value);
1cc00 0a 09 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 .. value
1cc10 3d 20 4d 61 74 68 2e 6d 61 78 28 74 68 69 73 2e = Math.max(this.
1cc20 5f 6d 69 6e 4f 75 74 70 75 74 2c 20 76 61 6c 75 _minOutput, valu
1cc30 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 69 6d e);.. tim
1cc40 65 43 6f 6e 73 74 61 6e 74 20 3d 20 4d 61 74 68 eConstant = Math
1cc50 2e 6d 61 78 28 74 68 69 73 2e 5f 6d 69 6e 4f 75 .max(this._minOu
1cc60 74 70 75 74 2c 20 74 69 6d 65 43 6f 6e 73 74 61 tput, timeConsta
1cc70 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 20 73 74 nt);.. st
1cc80 61 72 74 54 69 6d 65 20 3d 20 74 68 69 73 2e 74 artTime = this.t
1cc90 6f 53 65 63 6f 6e 64 73 28 73 74 61 72 74 54 69 oSeconds(startTi
1cca0 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 me);.. th
1ccb0 69 73 2e 5f 65 76 65 6e 74 73 2e 61 64 64 28 7b is._events.add({
1ccc0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 74 .. 't
1ccd0 79 70 65 27 3a 20 54 6f 6e 65 2e 54 69 6d 65 6c ype': Tone.Timel
1cce0 69 6e 65 53 69 67 6e 61 6c 2e 54 79 70 65 2e 54 ineSignal.Type.T
1ccf0 61 72 67 65 74 2c 0a 09 20 20 20 20 20 20 20 20 arget,..
1cd00 20 20 20 20 27 76 61 6c 75 65 27 3a 20 76 61 6c 'value': val
1cd10 75 65 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 ue,..
1cd20 20 27 74 69 6d 65 27 3a 20 73 74 61 72 74 54 69 'time': startTi
1cd30 6d 65 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 me,..
1cd40 20 27 63 6f 6e 73 74 61 6e 74 27 3a 20 74 69 6d 'constant': tim
1cd50 65 43 6f 6e 73 74 61 6e 74 0a 09 20 20 20 20 20 eConstant..
1cd60 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 });..
1cd70 74 68 69 73 2e 5f 70 61 72 61 6d 2e 73 65 74 54 this._param.setT
1cd80 61 72 67 65 74 41 74 54 69 6d 65 28 76 61 6c 75 argetAtTime(valu
1cd90 65 2c 20 73 74 61 72 74 54 69 6d 65 2c 20 74 69 e, startTime, ti
1cda0 6d 65 43 6f 6e 73 74 61 6e 74 29 3b 0a 09 20 20 meConstant);..
1cdb0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
1cdc0 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
1cdd0 2f 2a 2a 0a 09 09 20 2a 20 20 53 65 74 20 61 6e /**... * Set an
1cde0 20 61 72 72 61 79 20 6f 66 20 61 72 62 69 74 72 array of arbitr
1cdf0 61 72 79 20 76 61 6c 75 65 73 20 73 74 61 72 74 ary values start
1ce00 69 6e 67 20 61 74 20 74 68 65 20 67 69 76 65 6e ing at the given
1ce10 20 74 69 6d 65 20 66 6f 72 20 74 68 65 20 67 69 time for the gi
1ce20 76 65 6e 20 64 75 72 61 74 69 6f 6e 2e 0a 09 09 ven duration....
1ce30 20 2a 20 20 40 70 61 72 61 6d 20 7b 46 6c 6f 61 * @param {Floa
1ce40 74 33 32 41 72 72 61 79 7d 20 76 61 6c 75 65 73 t32Array} values
1ce50 20 20 20 20 20 20 20 20 0a 09 09 20 2a 20 20 40 ... * @
1ce60 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 73 74 61 param {Time} sta
1ce70 72 74 54 69 6d 65 20 20 20 20 0a 09 09 20 2a 20 rtTime ... *
1ce80 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 64 @param {Time} d
1ce90 75 72 61 74 69 6f 6e 0a 09 09 20 2a 20 20 40 70 uration... * @p
1cea0 61 72 61 6d 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 aram {NormalRang
1ceb0 65 7d 20 5b 73 63 61 6c 69 6e 67 3d 31 5d 20 49 e} [scaling=1] I
1cec0 66 20 74 68 65 20 76 61 6c 75 65 73 20 69 6e 20 f the values in
1ced0 74 68 65 20 63 75 72 76 65 20 73 68 6f 75 6c 64 the curve should
1cee0 20 62 65 20 73 63 61 6c 65 64 20 62 79 20 73 6f be scaled by so
1cef0 6d 65 20 76 61 6c 75 65 0a 09 09 20 2a 20 20 40 me value... * @
1cf00 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 54 69 returns {Tone.Ti
1cf10 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 7d 20 74 68 melineSignal} th
1cf20 69 73 20 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 is ... */.. T
1cf30 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e one.TimelineSign
1cf40 61 6c 2e 70 72 6f 74 6f 74 79 70 65 2e 73 65 74 al.prototype.set
1cf50 56 61 6c 75 65 43 75 72 76 65 41 74 54 69 6d 65 ValueCurveAtTime
1cf60 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c = function (val
1cf70 75 65 73 2c 20 73 74 61 72 74 54 69 6d 65 2c 20 ues, startTime,
1cf80 64 75 72 61 74 69 6f 6e 2c 20 73 63 61 6c 69 6e duration, scalin
1cf90 67 29 20 7b 0a 09 20 20 20 20 20 20 20 20 73 63 g) {.. sc
1cfa0 61 6c 69 6e 67 20 3d 20 74 68 69 73 2e 64 65 66 aling = this.def
1cfb0 61 75 6c 74 41 72 67 28 73 63 61 6c 69 6e 67 2c aultArg(scaling,
1cfc0 20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 1);.. //
1cfd0 63 6f 70 79 20 74 68 65 20 61 72 72 61 79 0a 09 copy the array..
1cfe0 20 20 20 20 20 20 20 20 76 61 72 20 66 6c 6f 61 var floa
1cff0 74 73 20 3d 20 6e 65 77 20 41 72 72 61 79 28 76 ts = new Array(v
1d000 61 6c 75 65 73 2e 6c 65 6e 67 74 68 29 3b 0a 09 alues.length);..
1d010 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 for (var
1d020 20 69 20 3d 20 30 3b 20 69 20 3c 20 66 6c 6f 61 i = 0; i < floa
1d030 74 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 ts.length; i++)
1d040 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 66 {.. f
1d050 6c 6f 61 74 73 5b 69 5d 20 3d 20 74 68 69 73 2e loats[i] = this.
1d060 5f 66 72 6f 6d 55 6e 69 74 73 28 76 61 6c 75 65 _fromUnits(value
1d070 73 5b 69 5d 29 20 2a 20 73 63 61 6c 69 6e 67 3b s[i]) * scaling;
1d080 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
1d090 20 20 20 20 20 73 74 61 72 74 54 69 6d 65 20 3d startTime =
1d0a0 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 this.toSeconds(
1d0b0 73 74 61 72 74 54 69 6d 65 29 3b 0a 09 20 20 20 startTime);..
1d0c0 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 duration =
1d0d0 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 64 this.toSeconds(d
1d0e0 75 72 61 74 69 6f 6e 29 3b 0a 09 20 20 20 20 20 uration);..
1d0f0 20 20 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 2e this._events.
1d100 61 64 64 28 7b 0a 09 20 20 20 20 20 20 20 20 20 add({..
1d110 20 20 20 27 74 79 70 65 27 3a 20 54 6f 6e 65 2e 'type': Tone.
1d120 54 69 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 2e 54 TimelineSignal.T
1d130 79 70 65 2e 43 75 72 76 65 2c 0a 09 20 20 20 20 ype.Curve,..
1d140 20 20 20 20 20 20 20 20 27 76 61 6c 75 65 27 3a 'value':
1d150 20 66 6c 6f 61 74 73 2c 0a 09 20 20 20 20 20 20 floats,..
1d160 20 20 20 20 20 20 27 74 69 6d 65 27 3a 20 73 74 'time': st
1d170 61 72 74 54 69 6d 65 2c 0a 09 20 20 20 20 20 20 artTime,..
1d180 20 20 20 20 20 20 27 64 75 72 61 74 69 6f 6e 27 'duration'
1d190 3a 20 64 75 72 61 74 69 6f 6e 0a 09 20 20 20 20 : duration..
1d1a0 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 });..
1d1b0 20 2f 2f 73 65 74 20 74 68 65 20 66 69 72 73 74 //set the first
1d1c0 20 76 61 6c 75 65 0a 09 20 20 20 20 20 20 20 20 value..
1d1d0 74 68 69 73 2e 5f 70 61 72 61 6d 2e 73 65 74 56 this._param.setV
1d1e0 61 6c 75 65 41 74 54 69 6d 65 28 66 6c 6f 61 74 alueAtTime(float
1d1f0 73 5b 30 5d 2c 20 73 74 61 72 74 54 69 6d 65 29 s[0], startTime)
1d200 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 73 63 68 ;.. //sch
1d210 65 64 75 6c 65 20 61 20 6c 69 65 6e 61 72 20 72 edule a lienar r
1d220 61 6d 70 20 66 6f 72 20 65 61 63 68 20 6f 66 20 amp for each of
1d230 74 68 65 20 73 65 67 6d 65 6e 74 73 0a 09 20 20 the segments..
1d240 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 6a for (var j
1d250 20 3d 20 31 3b 20 6a 20 3c 20 66 6c 6f 61 74 73 = 1; j < floats
1d260 2e 6c 65 6e 67 74 68 3b 20 6a 2b 2b 29 20 7b 0a .length; j++) {.
1d270 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
1d280 20 73 65 67 6d 65 6e 74 54 69 6d 65 20 3d 20 73 segmentTime = s
1d290 74 61 72 74 54 69 6d 65 20 2b 20 6a 20 2f 20 28 tartTime + j / (
1d2a0 66 6c 6f 61 74 73 2e 6c 65 6e 67 74 68 20 2d 20 floats.length -
1d2b0 31 29 20 2a 20 64 75 72 61 74 69 6f 6e 3b 0a 09 1) * duration;..
1d2c0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
1d2d0 2e 5f 70 61 72 61 6d 2e 6c 69 6e 65 61 72 52 61 ._param.linearRa
1d2e0 6d 70 54 6f 56 61 6c 75 65 41 74 54 69 6d 65 28 mpToValueAtTime(
1d2f0 66 6c 6f 61 74 73 5b 6a 5d 2c 20 73 65 67 6d 65 floats[j], segme
1d300 6e 74 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 ntTime);..
1d310 20 20 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 }.. ret
1d320 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
1d330 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
1d340 20 43 61 6e 63 65 6c 73 20 61 6c 6c 20 73 63 68 Cancels all sch
1d350 65 64 75 6c 65 64 20 70 61 72 61 6d 65 74 65 72 eduled parameter
1d360 20 63 68 61 6e 67 65 73 20 77 69 74 68 20 74 69 changes with ti
1d370 6d 65 73 20 67 72 65 61 74 65 72 20 74 68 61 6e mes greater than
1d380 20 6f 72 20 0a 09 09 20 2a 20 20 65 71 75 61 6c or ... * equal
1d390 20 74 6f 20 73 74 61 72 74 54 69 6d 65 2e 0a 09 to startTime...
1d3a0 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 70 61 72 . * ... * @par
1d3b0 61 6d 20 20 7b 54 69 6d 65 7d 20 73 74 61 72 74 am {Time} start
1d3c0 54 69 6d 65 0a 09 09 20 2a 20 20 40 72 65 74 75 Time... * @retu
1d3d0 72 6e 73 20 7b 54 6f 6e 65 2e 54 69 6d 65 6c 69 rns {Tone.Timeli
1d3e0 6e 65 53 69 67 6e 61 6c 7d 20 74 68 69 73 0a 09 neSignal} this..
1d3f0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 . */.. Tone.T
1d400 69 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 2e 70 72 imelineSignal.pr
1d410 6f 74 6f 74 79 70 65 2e 63 61 6e 63 65 6c 53 63 ototype.cancelSc
1d420 68 65 64 75 6c 65 64 56 61 6c 75 65 73 20 3d 20 heduledValues =
1d430 66 75 6e 63 74 69 6f 6e 20 28 61 66 74 65 72 29 function (after)
1d440 20 7b 0a 09 20 20 20 20 20 20 20 20 61 66 74 65 {.. afte
1d450 72 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e r = this.toSecon
1d460 64 73 28 61 66 74 65 72 29 3b 0a 09 20 20 20 20 ds(after);..
1d470 20 20 20 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 this._events
1d480 2e 63 61 6e 63 65 6c 28 61 66 74 65 72 29 3b 0a .cancel(after);.
1d490 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 . this._p
1d4a0 61 72 61 6d 2e 63 61 6e 63 65 6c 53 63 68 65 64 aram.cancelSched
1d4b0 75 6c 65 64 56 61 6c 75 65 73 28 61 66 74 65 72 uledValues(after
1d4c0 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 );.. retu
1d4d0 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
1d4e0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
1d4f0 53 65 74 73 20 74 68 65 20 63 6f 6d 70 75 74 65 Sets the compute
1d500 64 20 76 61 6c 75 65 20 61 74 20 74 68 65 20 67 d value at the g
1d510 69 76 65 6e 20 74 69 6d 65 2e 20 54 68 69 73 20 iven time. This
1d520 70 72 6f 76 69 64 65 73 0a 09 09 20 2a 20 20 61 provides... * a
1d530 20 70 6f 69 6e 74 20 66 72 6f 6d 20 77 68 69 63 point from whic
1d540 68 20 61 20 6c 69 6e 65 61 72 20 6f 72 20 65 78 h a linear or ex
1d550 70 6f 6e 65 6e 74 69 61 6c 20 63 75 72 76 65 0a ponential curve.
1d560 09 09 20 2a 20 20 63 61 6e 20 62 65 20 73 63 68 .. * can be sch
1d570 65 64 75 6c 65 64 20 61 66 74 65 72 2e 20 57 69 eduled after. Wi
1d580 6c 6c 20 63 61 6e 63 65 6c 20 65 76 65 6e 74 73 ll cancel events
1d590 20 61 66 74 65 72 20 0a 09 09 20 2a 20 20 74 68 after ... * th
1d5a0 65 20 67 69 76 65 6e 20 74 69 6d 65 20 61 6e 64 e given time and
1d5b0 20 73 68 6f 72 74 65 6e 20 74 68 65 20 63 75 72 shorten the cur
1d5c0 72 65 6e 74 6c 79 20 73 63 68 65 64 75 6c 65 64 rently scheduled
1d5d0 0a 09 09 20 2a 20 20 6c 69 6e 65 61 72 20 6f 72 ... * linear or
1d5e0 20 65 78 70 6f 6e 65 6e 74 69 61 6c 20 72 61 6d exponential ram
1d5f0 70 20 73 6f 20 74 68 61 74 20 69 74 20 65 6e 64 p so that it end
1d600 73 20 61 74 20 60 74 69 6d 65 60 20 2e 0a 09 09 s at `time` ....
1d610 20 2a 20 20 54 68 69 73 20 69 73 20 74 6f 20 61 * This is to a
1d620 76 6f 69 64 20 64 69 73 63 6f 6e 74 69 6e 75 69 void discontinui
1d630 74 69 65 73 20 61 6e 64 20 63 6c 69 63 6b 73 20 ties and clicks
1d640 69 6e 20 65 6e 76 65 6c 6f 70 65 73 2e 20 0a 09 in envelopes. ..
1d650 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 6d . * @param {Tim
1d660 65 7d 20 74 69 6d 65 20 57 68 65 6e 20 74 6f 20 e} time When to
1d670 73 65 74 20 74 68 65 20 72 61 6d 70 20 70 6f 69 set the ramp poi
1d680 6e 74 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e nt... * @return
1d690 73 20 7b 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 s {Tone.Timeline
1d6a0 53 69 67 6e 61 6c 7d 20 74 68 69 73 0a 09 09 20 Signal} this...
1d6b0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d */.. Tone.Tim
1d6c0 65 6c 69 6e 65 53 69 67 6e 61 6c 2e 70 72 6f 74 elineSignal.prot
1d6d0 6f 74 79 70 65 2e 73 65 74 52 61 6d 70 50 6f 69 otype.setRampPoi
1d6e0 6e 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 nt = function (t
1d6f0 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ime) {..
1d700 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 time = this.toSe
1d710 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 20 conds(time);..
1d720 20 20 20 20 20 20 2f 2f 67 65 74 20 74 68 65 20 //get the
1d730 76 61 6c 75 65 20 61 74 20 74 68 65 20 67 69 76 value at the giv
1d740 65 6e 20 74 69 6d 65 0a 09 20 20 20 20 20 20 20 en time..
1d750 20 76 61 72 20 76 61 6c 20 3d 20 74 68 69 73 2e var val = this.
1d760 5f 74 6f 55 6e 69 74 73 28 74 68 69 73 2e 67 65 _toUnits(this.ge
1d770 74 56 61 6c 75 65 41 74 54 69 6d 65 28 74 69 6d tValueAtTime(tim
1d780 65 29 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f e));.. //
1d790 69 66 20 74 68 65 72 65 20 69 73 20 61 6e 20 65 if there is an e
1d7a0 76 65 6e 74 20 61 74 20 74 68 65 20 67 69 76 65 vent at the give
1d7b0 6e 20 74 69 6d 65 0a 09 20 20 20 20 20 20 20 20 n time..
1d7c0 2f 2f 61 6e 64 20 74 68 61 74 20 65 76 65 6e 20 //and that even
1d7d0 69 73 20 6e 6f 74 20 61 20 22 73 65 74 22 0a 09 is not a "set"..
1d7e0 20 20 20 20 20 20 20 20 76 61 72 20 62 65 66 6f var befo
1d7f0 72 65 20 3d 20 74 68 69 73 2e 5f 73 65 61 72 63 re = this._searc
1d800 68 42 65 66 6f 72 65 28 74 69 6d 65 29 3b 0a 09 hBefore(time);..
1d810 20 20 20 20 20 20 20 20 69 66 20 28 62 65 66 6f if (befo
1d820 72 65 20 26 26 20 62 65 66 6f 72 65 2e 74 69 6d re && before.tim
1d830 65 20 3d 3d 3d 20 74 69 6d 65 29 20 7b 0a 09 20 e === time) {..
1d840 20 20 20 20 20 20 20 20 20 20 20 2f 2f 72 65 6d //rem
1d850 6f 76 65 20 65 76 65 72 79 74 68 69 6e 67 20 61 ove everything a
1d860 66 74 65 72 0a 09 20 20 20 20 20 20 20 20 20 20 fter..
1d870 20 20 74 68 69 73 2e 63 61 6e 63 65 6c 53 63 68 this.cancelSch
1d880 65 64 75 6c 65 64 56 61 6c 75 65 73 28 74 69 6d eduledValues(tim
1d890 65 20 2b 20 74 68 69 73 2e 73 61 6d 70 6c 65 54 e + this.sampleT
1d8a0 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 7d ime);.. }
1d8b0 20 65 6c 73 65 20 69 66 20 28 62 65 66 6f 72 65 else if (before
1d8c0 20 26 26 20 62 65 66 6f 72 65 2e 74 79 70 65 20 && before.type
1d8d0 3d 3d 3d 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e === Tone.Timelin
1d8e0 65 53 69 67 6e 61 6c 2e 54 79 70 65 2e 43 75 72 eSignal.Type.Cur
1d8f0 76 65 20 26 26 20 62 65 66 6f 72 65 2e 74 69 6d ve && before.tim
1d900 65 20 2b 20 62 65 66 6f 72 65 2e 64 75 72 61 74 e + before.durat
1d910 69 6f 6e 20 3e 20 74 69 6d 65 29 20 7b 0a 09 20 ion > time) {..
1d920 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20 //if
1d930 74 68 65 20 63 75 72 76 65 20 69 73 20 73 74 69 the curve is sti
1d940 6c 6c 20 70 6c 61 79 69 6e 67 0a 09 20 20 20 20 ll playing..
1d950 20 20 20 20 20 20 20 20 2f 2f 63 61 6e 63 65 6c //cancel
1d960 20 74 68 65 20 63 75 72 76 65 0a 09 20 20 20 20 the curve..
1d970 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 61 6e this.can
1d980 63 65 6c 53 63 68 65 64 75 6c 65 64 56 61 6c 75 celScheduledValu
1d990 65 73 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 es(time);..
1d9a0 20 20 20 20 20 20 20 74 68 69 73 2e 6c 69 6e 65 this.line
1d9b0 61 72 52 61 6d 70 54 6f 56 61 6c 75 65 41 74 54 arRampToValueAtT
1d9c0 69 6d 65 28 76 61 6c 2c 20 74 69 6d 65 29 3b 0a ime(val, time);.
1d9d0 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 . } else
1d9e0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f {.. /
1d9f0 2f 72 65 73 63 68 65 64 75 6c 65 20 74 68 65 20 /reschedule the
1da00 6e 65 78 74 20 65 76 65 6e 74 20 74 6f 20 65 6e next event to en
1da10 64 20 61 74 20 74 68 65 20 67 69 76 65 6e 20 74 d at the given t
1da20 69 6d 65 0a 09 20 20 20 20 20 20 20 20 20 20 20 ime..
1da30 20 76 61 72 20 61 66 74 65 72 20 3d 20 74 68 69 var after = thi
1da40 73 2e 5f 73 65 61 72 63 68 41 66 74 65 72 28 74 s._searchAfter(t
1da50 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 ime);..
1da60 20 20 20 69 66 20 28 61 66 74 65 72 29 20 7b 0a if (after) {.
1da70 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
1da80 20 2f 2f 63 61 6e 63 65 6c 20 74 68 65 20 6e 65 //cancel the ne
1da90 78 74 20 65 76 65 6e 74 28 73 29 0a 09 20 20 20 xt event(s)..
1daa0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
1dab0 73 2e 63 61 6e 63 65 6c 53 63 68 65 64 75 6c 65 s.cancelSchedule
1dac0 64 56 61 6c 75 65 73 28 74 69 6d 65 29 3b 0a 09 dValues(time);..
1dad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1dae0 69 66 20 28 61 66 74 65 72 2e 74 79 70 65 20 3d if (after.type =
1daf0 3d 3d 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 == Tone.Timeline
1db00 53 69 67 6e 61 6c 2e 54 79 70 65 2e 4c 69 6e 65 Signal.Type.Line
1db10 61 72 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ar) {..
1db20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
1db30 6c 69 6e 65 61 72 52 61 6d 70 54 6f 56 61 6c 75 linearRampToValu
1db40 65 41 74 54 69 6d 65 28 76 61 6c 2c 20 74 69 6d eAtTime(val, tim
1db50 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e);..
1db60 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
1db70 61 66 74 65 72 2e 74 79 70 65 20 3d 3d 3d 20 54 after.type === T
1db80 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e one.TimelineSign
1db90 61 6c 2e 54 79 70 65 2e 45 78 70 6f 6e 65 6e 74 al.Type.Exponent
1dba0 69 61 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ial) {..
1dbb0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
1dbc0 2e 65 78 70 6f 6e 65 6e 74 69 61 6c 52 61 6d 70 .exponentialRamp
1dbd0 54 6f 56 61 6c 75 65 41 74 54 69 6d 65 28 76 61 ToValueAtTime(va
1dbe0 6c 2c 20 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 l, time);..
1dbf0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
1dc00 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
1dc10 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 this.se
1dc20 74 56 61 6c 75 65 41 74 54 69 6d 65 28 76 61 6c tValueAtTime(val
1dc30 2c 20 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 , time);..
1dc40 20 20 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 }.. ret
1dc50 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
1dc60 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
1dc70 20 44 6f 20 61 20 6c 69 6e 65 61 72 20 72 61 6d Do a linear ram
1dc80 70 20 74 6f 20 74 68 65 20 67 69 76 65 6e 20 76 p to the given v
1dc90 61 6c 75 65 20 62 65 74 77 65 65 6e 20 74 68 65 alue between the
1dca0 20 73 74 61 72 74 20 61 6e 64 20 66 69 6e 69 73 start and finis
1dcb0 68 20 74 69 6d 65 73 2e 0a 09 09 20 2a 20 20 40 h times.... * @
1dcc0 70 61 72 61 6d 20 7b 4e 75 6d 62 65 72 7d 20 76 param {Number} v
1dcd0 61 6c 75 65 20 54 68 65 20 76 61 6c 75 65 20 74 alue The value t
1dce0 6f 20 72 61 6d 70 20 74 6f 2e 0a 09 09 20 2a 20 o ramp to.... *
1dcf0 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 73 @param {Time} s
1dd00 74 61 72 74 20 54 68 65 20 62 65 67 69 6e 6e 69 tart The beginni
1dd10 6e 67 20 61 6e 63 68 6f 72 20 70 6f 69 6e 74 20 ng anchor point
1dd20 74 6f 20 64 6f 20 74 68 65 20 6c 69 6e 65 61 72 to do the linear
1dd30 20 72 61 6d 70 0a 09 09 20 2a 20 20 40 70 61 72 ramp... * @par
1dd40 61 6d 20 7b 54 69 6d 65 7d 20 66 69 6e 69 73 68 am {Time} finish
1dd50 20 54 68 65 20 65 6e 64 69 6e 67 20 61 6e 63 68 The ending anch
1dd60 6f 72 20 70 6f 69 6e 74 20 62 79 20 77 68 69 63 or point by whic
1dd70 68 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 09 h the value of..
1dd80 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 . *
1dd90 20 20 20 20 20 20 20 20 20 20 74 68 65 20 73 69 the si
1dda0 67 6e 61 6c 20 77 69 6c 6c 20 65 71 75 61 6c 20 gnal will equal
1ddb0 74 68 65 20 67 69 76 65 6e 20 76 61 6c 75 65 2e the given value.
1ddc0 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
1ddd0 7b 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 69 {Tone.TimelineSi
1dde0 67 6e 61 6c 7d 20 74 68 69 73 0a 09 09 20 2a 2f gnal} this... */
1ddf0 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 6c .. Tone.Timel
1de00 69 6e 65 53 69 67 6e 61 6c 2e 70 72 6f 74 6f 74 ineSignal.protot
1de10 79 70 65 2e 6c 69 6e 65 61 72 52 61 6d 70 54 6f ype.linearRampTo
1de20 56 61 6c 75 65 42 65 74 77 65 65 6e 20 3d 20 66 ValueBetween = f
1de30 75 6e 63 74 69 6f 6e 20 28 76 61 6c 75 65 2c 20 unction (value,
1de40 73 74 61 72 74 2c 20 66 69 6e 69 73 68 29 20 7b start, finish) {
1de50 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 .. this.s
1de60 65 74 52 61 6d 70 50 6f 69 6e 74 28 73 74 61 72 etRampPoint(star
1de70 74 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 t);.. thi
1de80 73 2e 6c 69 6e 65 61 72 52 61 6d 70 54 6f 56 61 s.linearRampToVa
1de90 6c 75 65 41 74 54 69 6d 65 28 76 61 6c 75 65 2c lueAtTime(value,
1dea0 20 66 69 6e 69 73 68 29 3b 0a 09 20 20 20 20 20 finish);..
1deb0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
1dec0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
1ded0 0a 09 09 20 2a 20 20 44 6f 20 61 20 65 78 70 6f ... * Do a expo
1dee0 6e 65 6e 74 69 61 6c 20 72 61 6d 70 20 74 6f 20 nential ramp to
1def0 74 68 65 20 67 69 76 65 6e 20 76 61 6c 75 65 20 the given value
1df00 62 65 74 77 65 65 6e 20 74 68 65 20 73 74 61 72 between the star
1df10 74 20 61 6e 64 20 66 69 6e 69 73 68 20 74 69 6d t and finish tim
1df20 65 73 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d es.... * @param
1df30 20 7b 4e 75 6d 62 65 72 7d 20 76 61 6c 75 65 20 {Number} value
1df40 54 68 65 20 76 61 6c 75 65 20 74 6f 20 72 61 6d The value to ram
1df50 70 20 74 6f 2e 0a 09 09 20 2a 20 20 40 70 61 72 p to.... * @par
1df60 61 6d 20 7b 54 69 6d 65 7d 20 73 74 61 72 74 20 am {Time} start
1df70 54 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e The beginning an
1df80 63 68 6f 72 20 70 6f 69 6e 74 20 74 6f 20 64 6f chor point to do
1df90 20 74 68 65 20 65 78 70 6f 6e 65 6e 74 69 61 6c the exponential
1dfa0 20 72 61 6d 70 0a 09 09 20 2a 20 20 40 70 61 72 ramp... * @par
1dfb0 61 6d 20 7b 54 69 6d 65 7d 20 66 69 6e 69 73 68 am {Time} finish
1dfc0 20 54 68 65 20 65 6e 64 69 6e 67 20 61 6e 63 68 The ending anch
1dfd0 6f 72 20 70 6f 69 6e 74 20 62 79 20 77 68 69 63 or point by whic
1dfe0 68 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 09 h the value of..
1dff0 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 . *
1e000 20 20 20 20 20 20 20 20 20 20 74 68 65 20 73 69 the si
1e010 67 6e 61 6c 20 77 69 6c 6c 20 65 71 75 61 6c 20 gnal will equal
1e020 74 68 65 20 67 69 76 65 6e 20 76 61 6c 75 65 2e the given value.
1e030 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
1e040 7b 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 69 {Tone.TimelineSi
1e050 67 6e 61 6c 7d 20 74 68 69 73 0a 09 09 20 2a 2f gnal} this... */
1e060 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 6c .. Tone.Timel
1e070 69 6e 65 53 69 67 6e 61 6c 2e 70 72 6f 74 6f 74 ineSignal.protot
1e080 79 70 65 2e 65 78 70 6f 6e 65 6e 74 69 61 6c 52 ype.exponentialR
1e090 61 6d 70 54 6f 56 61 6c 75 65 42 65 74 77 65 65 ampToValueBetwee
1e0a0 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 n = function (va
1e0b0 6c 75 65 2c 20 73 74 61 72 74 2c 20 66 69 6e 69 lue, start, fini
1e0c0 73 68 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 sh) {.. t
1e0d0 68 69 73 2e 73 65 74 52 61 6d 70 50 6f 69 6e 74 his.setRampPoint
1e0e0 28 73 74 61 72 74 29 3b 0a 09 20 20 20 20 20 20 (start);..
1e0f0 20 20 74 68 69 73 2e 65 78 70 6f 6e 65 6e 74 69 this.exponenti
1e100 61 6c 52 61 6d 70 54 6f 56 61 6c 75 65 41 74 54 alRampToValueAtT
1e110 69 6d 65 28 76 61 6c 75 65 2c 20 66 69 6e 69 73 ime(value, finis
1e120 68 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 h);.. ret
1e130 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
1e140 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f ;.. /////////
1e150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1e160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1e170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1e180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1e190 2f 2f 0a 09 20 20 20 20 2f 2f 09 47 45 54 54 49 //.. //.GETTI
1e1a0 4e 47 20 53 43 48 45 44 55 4c 45 44 20 56 41 4c NG SCHEDULED VAL
1e1b0 55 45 53 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f UES.. ///////
1e1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1e1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1e1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1e1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1e200 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 ////.. /**...
1e210 20 2a 20 20 52 65 74 75 72 6e 73 20 74 68 65 20 * Returns the
1e220 76 61 6c 75 65 20 62 65 66 6f 72 65 20 6f 72 20 value before or
1e230 65 71 75 61 6c 20 74 6f 20 74 68 65 20 67 69 76 equal to the giv
1e240 65 6e 20 74 69 6d 65 0a 09 09 20 2a 20 20 40 70 en time... * @p
1e250 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 20 aram {Number}
1e260 74 69 6d 65 20 20 54 68 65 20 74 69 6d 65 20 74 time The time t
1e270 6f 20 71 75 65 72 79 0a 09 09 20 2a 20 20 40 72 o query... * @r
1e280 65 74 75 72 6e 20 20 7b 4f 62 6a 65 63 74 7d 20 eturn {Object}
1e290 20 54 68 65 20 65 76 65 6e 74 20 61 74 20 6f 72 The event at or
1e2a0 20 62 65 66 6f 72 65 20 74 68 65 20 67 69 76 65 before the give
1e2b0 6e 20 74 69 6d 65 2e 0a 09 09 20 2a 20 20 40 70 n time.... * @p
1e2c0 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 rivate... */..
1e2d0 20 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 Tone.TimelineS
1e2e0 69 67 6e 61 6c 2e 70 72 6f 74 6f 74 79 70 65 2e ignal.prototype.
1e2f0 5f 73 65 61 72 63 68 42 65 66 6f 72 65 20 3d 20 _searchBefore =
1e300 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 function (time)
1e310 7b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 {.. retur
1e320 6e 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 2e 67 n this._events.g
1e330 65 74 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 7d et(time);.. }
1e340 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
1e350 20 54 68 65 20 65 76 65 6e 74 20 61 66 74 65 72 The event after
1e360 20 74 68 65 20 67 69 76 65 6e 20 74 69 6d 65 0a the given time.
1e370 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 4e .. * @param {N
1e380 75 6d 62 65 72 7d 20 20 74 69 6d 65 20 20 54 68 umber} time Th
1e390 65 20 74 69 6d 65 20 74 6f 20 71 75 65 72 79 2e e time to query.
1e3a0 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 ... * @return
1e3b0 7b 4f 62 6a 65 63 74 7d 20 20 54 68 65 20 6e 65 {Object} The ne
1e3c0 78 74 20 65 76 65 6e 74 20 61 66 74 65 72 20 74 xt event after t
1e3d0 68 65 20 67 69 76 65 6e 20 74 69 6d 65 0a 09 09 he given time...
1e3e0 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 * @private...
1e3f0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d */.. Tone.Tim
1e400 65 6c 69 6e 65 53 69 67 6e 61 6c 2e 70 72 6f 74 elineSignal.prot
1e410 6f 74 79 70 65 2e 5f 73 65 61 72 63 68 41 66 74 otype._searchAft
1e420 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 er = function (t
1e430 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ime) {..
1e440 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 65 76 65 return this._eve
1e450 6e 74 73 2e 67 65 74 41 66 74 65 72 28 74 69 6d nts.getAfter(tim
1e460 65 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 e);.. };..
1e470 20 2f 2a 2a 0a 09 09 20 2a 20 20 47 65 74 20 74 /**... * Get t
1e480 68 65 20 73 63 68 65 64 75 6c 65 64 20 76 61 6c he scheduled val
1e490 75 65 20 61 74 20 74 68 65 20 67 69 76 65 6e 20 ue at the given
1e4a0 74 69 6d 65 2e 20 54 68 69 73 20 77 69 6c 6c 0a time. This will.
1e4b0 09 09 20 2a 20 20 72 65 74 75 72 6e 20 74 68 65 .. * return the
1e4c0 20 75 6e 63 6f 6e 76 65 72 74 65 64 20 28 72 61 unconverted (ra
1e4d0 77 29 20 76 61 6c 75 65 2e 0a 09 09 20 2a 20 20 w) value.... *
1e4e0 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 7d @param {Number}
1e4f0 20 20 74 69 6d 65 20 20 54 68 65 20 74 69 6d 65 time The time
1e500 20 69 6e 20 73 65 63 6f 6e 64 73 2e 0a 09 09 20 in seconds....
1e510 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 4e 75 6d * @return {Num
1e520 62 65 72 7d 20 20 54 68 65 20 73 63 68 65 64 75 ber} The schedu
1e530 6c 65 64 20 76 61 6c 75 65 20 61 74 20 74 68 65 led value at the
1e540 20 67 69 76 65 6e 20 74 69 6d 65 2e 0a 09 09 20 given time....
1e550 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d */.. Tone.Tim
1e560 65 6c 69 6e 65 53 69 67 6e 61 6c 2e 70 72 6f 74 elineSignal.prot
1e570 6f 74 79 70 65 2e 67 65 74 56 61 6c 75 65 41 74 otype.getValueAt
1e580 54 69 6d 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 Time = function
1e590 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 (time) {..
1e5a0 20 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f time = this.to
1e5b0 53 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 Seconds(time);..
1e5c0 20 20 20 20 20 20 20 20 76 61 72 20 61 66 74 65 var afte
1e5d0 72 20 3d 20 74 68 69 73 2e 5f 73 65 61 72 63 68 r = this._search
1e5e0 41 66 74 65 72 28 74 69 6d 65 29 3b 0a 09 20 20 After(time);..
1e5f0 20 20 20 20 20 20 76 61 72 20 62 65 66 6f 72 65 var before
1e600 20 3d 20 74 68 69 73 2e 5f 73 65 61 72 63 68 42 = this._searchB
1e610 65 66 6f 72 65 28 74 69 6d 65 29 3b 0a 09 20 20 efore(time);..
1e620 20 20 20 20 20 20 76 61 72 20 76 61 6c 75 65 20 var value
1e630 3d 20 74 68 69 73 2e 5f 69 6e 69 74 69 61 6c 3b = this._initial;
1e640 0a 09 20 20 20 20 20 20 20 20 2f 2f 69 66 20 69 .. //if i
1e650 74 20 77 61 73 20 73 65 74 20 62 79 0a 09 20 20 t was set by..
1e660 20 20 20 20 20 20 69 66 20 28 62 65 66 6f 72 65 if (before
1e670 20 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 === null) {..
1e680 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 value
1e690 3d 20 74 68 69 73 2e 5f 69 6e 69 74 69 61 6c 3b = this._initial;
1e6a0 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
1e6b0 20 69 66 20 28 62 65 66 6f 72 65 2e 74 79 70 65 if (before.type
1e6c0 20 3d 3d 3d 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 === Tone.Timeli
1e6d0 6e 65 53 69 67 6e 61 6c 2e 54 79 70 65 2e 54 61 neSignal.Type.Ta
1e6e0 72 67 65 74 29 20 7b 0a 09 20 20 20 20 20 20 20 rget) {..
1e6f0 20 20 20 20 20 76 61 72 20 70 72 65 76 69 6f 75 var previou
1e700 73 20 3d 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 s = this._events
1e710 2e 67 65 74 42 65 66 6f 72 65 28 62 65 66 6f 72 .getBefore(befor
1e720 65 2e 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 e.time);..
1e730 20 20 20 20 20 20 76 61 72 20 70 72 65 76 69 6f var previo
1e740 75 56 61 6c 3b 0a 09 20 20 20 20 20 20 20 20 20 uVal;..
1e750 20 20 20 69 66 20 28 70 72 65 76 69 6f 75 73 20 if (previous
1e760 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 === null) {..
1e770 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 pre
1e780 76 69 6f 75 56 61 6c 20 3d 20 74 68 69 73 2e 5f viouVal = this._
1e790 69 6e 69 74 69 61 6c 3b 0a 09 20 20 20 20 20 20 initial;..
1e7a0 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 } else {..
1e7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1e7c0 70 72 65 76 69 6f 75 56 61 6c 20 3d 20 70 72 65 previouVal = pre
1e7d0 76 69 6f 75 73 2e 76 61 6c 75 65 3b 0a 09 20 20 vious.value;..
1e7e0 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
1e7f0 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d value =
1e800 20 74 68 69 73 2e 5f 65 78 70 6f 6e 65 6e 74 69 this._exponenti
1e810 61 6c 41 70 70 72 6f 61 63 68 28 62 65 66 6f 72 alApproach(befor
1e820 65 2e 74 69 6d 65 2c 20 70 72 65 76 69 6f 75 56 e.time, previouV
1e830 61 6c 2c 20 62 65 66 6f 72 65 2e 76 61 6c 75 65 al, before.value
1e840 2c 20 62 65 66 6f 72 65 2e 63 6f 6e 73 74 61 6e , before.constan
1e850 74 2c 20 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 t, time);..
1e860 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 62 65 } else if (be
1e870 66 6f 72 65 2e 74 79 70 65 20 3d 3d 3d 20 54 6f fore.type === To
1e880 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e 61 ne.TimelineSigna
1e890 6c 2e 54 79 70 65 2e 43 75 72 76 65 29 20 7b 0a l.Type.Curve) {.
1e8a0 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c . val
1e8b0 75 65 20 3d 20 74 68 69 73 2e 5f 63 75 72 76 65 ue = this._curve
1e8c0 49 6e 74 65 72 70 6f 6c 61 74 65 28 62 65 66 6f Interpolate(befo
1e8d0 72 65 2e 74 69 6d 65 2c 20 62 65 66 6f 72 65 2e re.time, before.
1e8e0 76 61 6c 75 65 2c 20 62 65 66 6f 72 65 2e 64 75 value, before.du
1e8f0 72 61 74 69 6f 6e 2c 20 74 69 6d 65 29 3b 0a 09 ration, time);..
1e900 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 } else i
1e910 66 20 28 61 66 74 65 72 20 3d 3d 3d 20 6e 75 6c f (after === nul
1e920 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 l) {..
1e930 20 20 76 61 6c 75 65 20 3d 20 62 65 66 6f 72 65 value = before
1e940 2e 76 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 20 .value;..
1e950 20 7d 20 65 6c 73 65 20 69 66 20 28 61 66 74 65 } else if (afte
1e960 72 2e 74 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e r.type === Tone.
1e970 54 69 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 2e 54 TimelineSignal.T
1e980 79 70 65 2e 4c 69 6e 65 61 72 29 20 7b 0a 09 20 ype.Linear) {..
1e990 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 value
1e9a0 20 3d 20 74 68 69 73 2e 5f 6c 69 6e 65 61 72 49 = this._linearI
1e9b0 6e 74 65 72 70 6f 6c 61 74 65 28 62 65 66 6f 72 nterpolate(befor
1e9c0 65 2e 74 69 6d 65 2c 20 62 65 66 6f 72 65 2e 76 e.time, before.v
1e9d0 61 6c 75 65 2c 20 61 66 74 65 72 2e 74 69 6d 65 alue, after.time
1e9e0 2c 20 61 66 74 65 72 2e 76 61 6c 75 65 2c 20 74 , after.value, t
1e9f0 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 7d ime);.. }
1ea00 20 65 6c 73 65 20 69 66 20 28 61 66 74 65 72 2e else if (after.
1ea10 74 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 54 69 type === Tone.Ti
1ea20 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 2e 54 79 70 melineSignal.Typ
1ea30 65 2e 45 78 70 6f 6e 65 6e 74 69 61 6c 29 20 7b e.Exponential) {
1ea40 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
1ea50 6c 75 65 20 3d 20 74 68 69 73 2e 5f 65 78 70 6f lue = this._expo
1ea60 6e 65 6e 74 69 61 6c 49 6e 74 65 72 70 6f 6c 61 nentialInterpola
1ea70 74 65 28 62 65 66 6f 72 65 2e 74 69 6d 65 2c 20 te(before.time,
1ea80 62 65 66 6f 72 65 2e 76 61 6c 75 65 2c 20 61 66 before.value, af
1ea90 74 65 72 2e 74 69 6d 65 2c 20 61 66 74 65 72 2e ter.time, after.
1eaa0 76 61 6c 75 65 2c 20 74 69 6d 65 29 3b 0a 09 20 value, time);..
1eab0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
1eac0 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c . val
1ead0 75 65 20 3d 20 62 65 66 6f 72 65 2e 76 61 6c 75 ue = before.valu
1eae0 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 e;.. }..
1eaf0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 return va
1eb00 6c 75 65 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 lue;.. };..
1eb10 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 57 68 65 6e /**... * When
1eb20 20 73 69 67 6e 61 6c 73 20 63 6f 6e 6e 65 63 74 signals connect
1eb30 20 74 6f 20 6f 74 68 65 72 20 73 69 67 6e 61 6c to other signal
1eb40 73 20 6f 72 20 41 75 64 69 6f 50 61 72 61 6d 73 s or AudioParams
1eb50 2c 20 0a 09 09 20 2a 20 20 74 68 65 79 20 74 61 , ... * they ta
1eb60 6b 65 20 6f 76 65 72 20 74 68 65 20 6f 75 74 70 ke over the outp
1eb70 75 74 20 76 61 6c 75 65 20 6f 66 20 74 68 61 74 ut value of that
1eb80 20 73 69 67 6e 61 6c 20 6f 72 20 41 75 64 69 6f signal or Audio
1eb90 50 61 72 61 6d 2e 20 0a 09 09 20 2a 20 20 46 6f Param. ... * Fo
1eba0 72 20 61 6c 6c 20 6f 74 68 65 72 20 6e 6f 64 65 r all other node
1ebb0 73 2c 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 s, the behavior
1ebc0 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 61 is the same as a
1ebd0 20 64 65 66 61 75 6c 74 20 3c 63 6f 64 65 3e 63 default <code>c
1ebe0 6f 6e 6e 65 63 74 3c 2f 63 6f 64 65 3e 2e 20 0a onnect</code>. .
1ebf0 09 09 20 2a 0a 09 09 20 2a 20 20 40 6f 76 65 72 .. *... * @over
1ec00 72 69 64 65 0a 09 09 20 2a 20 20 40 70 61 72 61 ride... * @para
1ec10 6d 20 7b 41 75 64 69 6f 50 61 72 61 6d 7c 41 75 m {AudioParam|Au
1ec20 64 69 6f 4e 6f 64 65 7c 54 6f 6e 65 2e 53 69 67 dioNode|Tone.Sig
1ec30 6e 61 6c 7c 54 6f 6e 65 7d 20 6e 6f 64 65 20 0a nal|Tone} node .
1ec40 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e 75 .. * @param {nu
1ec50 6d 62 65 72 7d 20 5b 6f 75 74 70 75 74 4e 75 6d mber} [outputNum
1ec60 62 65 72 3d 30 5d 20 54 68 65 20 6f 75 74 70 75 ber=0] The outpu
1ec70 74 20 6e 75 6d 62 65 72 20 74 6f 20 63 6f 6e 6e t number to conn
1ec80 65 63 74 20 66 72 6f 6d 2e 0a 09 09 20 2a 20 20 ect from.... *
1ec90 40 70 61 72 61 6d 20 7b 6e 75 6d 62 65 72 7d 20 @param {number}
1eca0 5b 69 6e 70 75 74 4e 75 6d 62 65 72 3d 30 5d 20 [inputNumber=0]
1ecb0 54 68 65 20 69 6e 70 75 74 20 6e 75 6d 62 65 72 The input number
1ecc0 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 6f 2e 0a to connect to..
1ecd0 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
1ece0 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 69 67 Tone.TimelineSig
1ecf0 6e 61 6c 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 nal} this... *
1ed00 40 6d 65 74 68 6f 64 0a 09 09 20 2a 2f 0a 09 20 @method... */..
1ed10 20 20 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 Tone.Timeline
1ed20 53 69 67 6e 61 6c 2e 70 72 6f 74 6f 74 79 70 65 Signal.prototype
1ed30 2e 63 6f 6e 6e 65 63 74 20 3d 20 54 6f 6e 65 2e .connect = Tone.
1ed40 53 69 67 6e 61 6c 42 61 73 65 2e 70 72 6f 74 6f SignalBase.proto
1ed50 74 79 70 65 2e 63 6f 6e 6e 65 63 74 3b 0a 09 20 type.connect;..
1ed60 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f /////////////
1ed70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1ed80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1ed90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1eda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 //////////////..
1edb0 20 20 20 20 2f 2f 09 41 55 54 4f 4d 41 54 49 4f //.AUTOMATIO
1edc0 4e 20 43 55 52 56 45 20 43 41 4c 43 55 4c 41 54 N CURVE CALCULAT
1edd0 49 4f 4e 53 0a 09 20 20 20 20 2f 2f 09 4d 49 54 IONS.. //.MIT
1ede0 20 4c 69 63 65 6e 73 65 2c 20 63 6f 70 79 72 69 License, copyri
1edf0 67 68 74 20 28 63 29 20 32 30 31 34 20 4a 6f 72 ght (c) 2014 Jor
1ee00 64 61 6e 20 53 61 6e 74 65 6c 6c 0a 09 20 20 20 dan Santell..
1ee10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ///////////////
1ee20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1ee30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1ee40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
1ee50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 ////////////..
1ee60 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 61 6c 63 /**... * Calc
1ee70 75 6c 61 74 65 73 20 74 68 65 20 74 68 65 20 76 ulates the the v
1ee80 61 6c 75 65 20 61 6c 6f 6e 67 20 74 68 65 20 63 alue along the c
1ee90 75 72 76 65 20 70 72 6f 64 75 63 65 64 20 62 79 urve produced by
1eea0 20 73 65 74 54 61 72 67 65 74 41 74 54 69 6d 65 setTargetAtTime
1eeb0 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
1eec0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
1eed0 54 69 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 2e 70 TimelineSignal.p
1eee0 72 6f 74 6f 74 79 70 65 2e 5f 65 78 70 6f 6e 65 rototype._expone
1eef0 6e 74 69 61 6c 41 70 70 72 6f 61 63 68 20 3d 20 ntialApproach =
1ef00 66 75 6e 63 74 69 6f 6e 20 28 74 30 2c 20 76 30 function (t0, v0
1ef10 2c 20 76 31 2c 20 74 69 6d 65 43 6f 6e 73 74 61 , v1, timeConsta
1ef20 6e 74 2c 20 74 29 20 7b 0a 09 20 20 20 20 20 20 nt, t) {..
1ef30 20 20 72 65 74 75 72 6e 20 76 31 20 2b 20 28 76 return v1 + (v
1ef40 30 20 2d 20 76 31 29 20 2a 20 4d 61 74 68 2e 65 0 - v1) * Math.e
1ef50 78 70 28 2d 28 74 20 2d 20 74 30 29 20 2f 20 74 xp(-(t - t0) / t
1ef60 69 6d 65 43 6f 6e 73 74 61 6e 74 29 3b 0a 09 20 imeConstant);..
1ef70 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
1ef80 09 20 2a 20 20 43 61 6c 63 75 6c 61 74 65 73 20 . * Calculates
1ef90 74 68 65 20 74 68 65 20 76 61 6c 75 65 20 61 6c the the value al
1efa0 6f 6e 67 20 74 68 65 20 63 75 72 76 65 20 70 72 ong the curve pr
1efb0 6f 64 75 63 65 64 20 62 79 20 6c 69 6e 65 61 72 oduced by linear
1efc0 52 61 6d 70 54 6f 56 61 6c 75 65 41 74 54 69 6d RampToValueAtTim
1efd0 65 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 e... * @private
1efe0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
1eff0 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 2e .TimelineSignal.
1f000 70 72 6f 74 6f 74 79 70 65 2e 5f 6c 69 6e 65 61 prototype._linea
1f010 72 49 6e 74 65 72 70 6f 6c 61 74 65 20 3d 20 66 rInterpolate = f
1f020 75 6e 63 74 69 6f 6e 20 28 74 30 2c 20 76 30 2c unction (t0, v0,
1f030 20 74 31 2c 20 76 31 2c 20 74 29 20 7b 0a 09 20 t1, v1, t) {..
1f040 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 30 return v0
1f050 20 2b 20 28 76 31 20 2d 20 76 30 29 20 2a 20 28 + (v1 - v0) * (
1f060 28 74 20 2d 20 74 30 29 20 2f 20 28 74 31 20 2d (t - t0) / (t1 -
1f070 20 74 30 29 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 t0));.. };..
1f080 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 61 /**... * Ca
1f090 6c 63 75 6c 61 74 65 73 20 74 68 65 20 74 68 65 lculates the the
1f0a0 20 76 61 6c 75 65 20 61 6c 6f 6e 67 20 74 68 65 value along the
1f0b0 20 63 75 72 76 65 20 70 72 6f 64 75 63 65 64 20 curve produced
1f0c0 62 79 20 65 78 70 6f 6e 65 6e 74 69 61 6c 52 61 by exponentialRa
1f0d0 6d 70 54 6f 56 61 6c 75 65 41 74 54 69 6d 65 0a mpToValueAtTime.
1f0e0 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
1f0f0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 . */.. Tone.T
1f100 69 6d 65 6c 69 6e 65 53 69 67 6e 61 6c 2e 70 72 imelineSignal.pr
1f110 6f 74 6f 74 79 70 65 2e 5f 65 78 70 6f 6e 65 6e ototype._exponen
1f120 74 69 61 6c 49 6e 74 65 72 70 6f 6c 61 74 65 20 tialInterpolate
1f130 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 30 2c 20 = function (t0,
1f140 76 30 2c 20 74 31 2c 20 76 31 2c 20 74 29 20 7b v0, t1, v1, t) {
1f150 0a 09 20 20 20 20 20 20 20 20 76 30 20 3d 20 4d .. v0 = M
1f160 61 74 68 2e 6d 61 78 28 74 68 69 73 2e 5f 6d 69 ath.max(this._mi
1f170 6e 4f 75 74 70 75 74 2c 20 76 30 29 3b 0a 09 20 nOutput, v0);..
1f180 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 30 return v0
1f190 20 2a 20 4d 61 74 68 2e 70 6f 77 28 76 31 20 2f * Math.pow(v1 /
1f1a0 20 76 30 2c 20 28 74 20 2d 20 74 30 29 20 2f 20 v0, (t - t0) /
1f1b0 28 74 31 20 2d 20 74 30 29 29 3b 0a 09 20 20 20 (t1 - t0));..
1f1c0 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
1f1d0 2a 20 20 43 61 6c 63 75 6c 61 74 65 73 20 74 68 * Calculates th
1f1e0 65 20 74 68 65 20 76 61 6c 75 65 20 61 6c 6f 6e e the value alon
1f1f0 67 20 74 68 65 20 63 75 72 76 65 20 70 72 6f 64 g the curve prod
1f200 75 63 65 64 20 62 79 20 73 65 74 56 61 6c 75 65 uced by setValue
1f210 43 75 72 76 65 41 74 54 69 6d 65 0a 09 09 20 2a CurveAtTime... *
1f220 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f @private... */
1f230 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 6c .. Tone.Timel
1f240 69 6e 65 53 69 67 6e 61 6c 2e 70 72 6f 74 6f 74 ineSignal.protot
1f250 79 70 65 2e 5f 63 75 72 76 65 49 6e 74 65 72 70 ype._curveInterp
1f260 6f 6c 61 74 65 20 3d 20 66 75 6e 63 74 69 6f 6e olate = function
1f270 20 28 73 74 61 72 74 2c 20 63 75 72 76 65 2c 20 (start, curve,
1f280 64 75 72 61 74 69 6f 6e 2c 20 74 69 6d 65 29 20 duration, time)
1f290 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 6c {.. var l
1f2a0 65 6e 20 3d 20 63 75 72 76 65 2e 6c 65 6e 67 74 en = curve.lengt
1f2b0 68 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 20 49 h;.. // I
1f2c0 66 20 74 69 6d 65 20 69 73 20 61 66 74 65 72 20 f time is after
1f2d0 64 75 72 61 74 69 6f 6e 2c 20 72 65 74 75 72 6e duration, return
1f2e0 20 74 68 65 20 6c 61 73 74 20 63 75 72 76 65 20 the last curve
1f2f0 76 61 6c 75 65 0a 09 20 20 20 20 20 20 20 20 69 value.. i
1f300 66 20 28 74 69 6d 65 20 3e 3d 20 73 74 61 72 74 f (time >= start
1f310 20 2b 20 64 75 72 61 74 69 6f 6e 29 20 7b 0a 09 + duration) {..
1f320 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
1f330 72 6e 20 63 75 72 76 65 5b 6c 65 6e 20 2d 20 31 rn curve[len - 1
1f340 5d 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c ];.. } el
1f350 73 65 20 69 66 20 28 74 69 6d 65 20 3c 3d 20 73 se if (time <= s
1f360 74 61 72 74 29 20 7b 0a 09 20 20 20 20 20 20 20 tart) {..
1f370 20 20 20 20 20 72 65 74 75 72 6e 20 63 75 72 76 return curv
1f380 65 5b 30 5d 3b 0a 09 20 20 20 20 20 20 20 20 7d e[0];.. }
1f390 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
1f3a0 20 20 20 20 20 76 61 72 20 70 72 6f 67 72 65 73 var progres
1f3b0 73 20 3d 20 28 74 69 6d 65 20 2d 20 73 74 61 72 s = (time - star
1f3c0 74 29 20 2f 20 64 75 72 61 74 69 6f 6e 3b 0a 09 t) / duration;..
1f3d0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
1f3e0 6c 6f 77 65 72 49 6e 64 65 78 20 3d 20 4d 61 74 lowerIndex = Mat
1f3f0 68 2e 66 6c 6f 6f 72 28 28 6c 65 6e 20 2d 20 31 h.floor((len - 1
1f400 29 20 2a 20 70 72 6f 67 72 65 73 73 29 3b 0a 09 ) * progress);..
1f410 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
1f420 75 70 70 65 72 49 6e 64 65 78 20 3d 20 4d 61 74 upperIndex = Mat
1f430 68 2e 63 65 69 6c 28 28 6c 65 6e 20 2d 20 31 29 h.ceil((len - 1)
1f440 20 2a 20 70 72 6f 67 72 65 73 73 29 3b 0a 09 20 * progress);..
1f450 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6c var l
1f460 6f 77 65 72 56 61 6c 20 3d 20 63 75 72 76 65 5b owerVal = curve[
1f470 6c 6f 77 65 72 49 6e 64 65 78 5d 3b 0a 09 20 20 lowerIndex];..
1f480 20 20 20 20 20 20 20 20 20 20 76 61 72 20 75 70 var up
1f490 70 65 72 56 61 6c 20 3d 20 63 75 72 76 65 5b 75 perVal = curve[u
1f4a0 70 70 65 72 49 6e 64 65 78 5d 3b 0a 09 20 20 20 pperIndex];..
1f4b0 20 20 20 20 20 20 20 20 20 69 66 20 28 75 70 70 if (upp
1f4c0 65 72 49 6e 64 65 78 20 3d 3d 3d 20 6c 6f 77 65 erIndex === lowe
1f4d0 72 49 6e 64 65 78 29 20 7b 0a 09 20 20 20 20 20 rIndex) {..
1f4e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
1f4f0 6e 20 6c 6f 77 65 72 56 61 6c 3b 0a 09 20 20 20 n lowerVal;..
1f500 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
1f510 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
1f520 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
1f530 6c 69 6e 65 61 72 49 6e 74 65 72 70 6f 6c 61 74 linearInterpolat
1f540 65 28 6c 6f 77 65 72 49 6e 64 65 78 2c 20 6c 6f e(lowerIndex, lo
1f550 77 65 72 56 61 6c 2c 20 75 70 70 65 72 49 6e 64 werVal, upperInd
1f560 65 78 2c 20 75 70 70 65 72 56 61 6c 2c 20 70 72 ex, upperVal, pr
1f570 6f 67 72 65 73 73 20 2a 20 28 6c 65 6e 20 2d 20 ogress * (len -
1f580 31 29 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 1));..
1f590 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 }.. }..
1f5a0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
1f5b0 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a .. * Clean up..
1f5c0 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 54 .. * @return {T
1f5d0 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e one.TimelineSign
1f5e0 61 6c 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 al} this... */..
1f5f0 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e Tone.Timelin
1f600 65 53 69 67 6e 61 6c 2e 70 72 6f 74 6f 74 79 70 eSignal.prototyp
1f610 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 e.dispose = func
1f620 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
1f630 20 20 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 2e 70 Tone.Signal.p
1f640 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 rototype.dispose
1f650 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 .call(this);..
1f660 20 20 20 20 20 20 54 6f 6e 65 2e 50 61 72 61 6d Tone.Param
1f670 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
1f680 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 se.call(this);..
1f690 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 65 76 this._ev
1f6a0 65 6e 74 73 2e 64 69 73 70 6f 73 65 28 29 3b 0a ents.dispose();.
1f6b0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 65 . this._e
1f6c0 76 65 6e 74 73 20 3d 20 6e 75 6c 6c 3b 0a 09 20 vents = null;..
1f6d0 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
1f6e0 6e 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 n Tone.TimelineS
1f6f0 69 67 6e 61 6c 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 ignal;..});..Mod
1f700 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f ule(function (To
1f710 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 ne) {.. ..
1f720 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 /**... * @clas
1f730 73 20 50 6f 77 20 61 70 70 6c 69 65 73 20 61 6e s Pow applies an
1f740 20 65 78 70 6f 6e 65 6e 74 20 74 6f 20 74 68 65 exponent to the
1f750 20 69 6e 63 6f 6d 69 6e 67 20 73 69 67 6e 61 6c incoming signal
1f760 2e 20 54 68 65 20 69 6e 63 6f 6d 69 6e 67 20 73 . The incoming s
1f770 69 67 6e 61 6c 0a 09 09 20 2a 20 20 20 20 20 20 ignal... *
1f780 20 20 20 6d 75 73 74 20 62 65 20 41 75 64 69 6f must be Audio
1f790 52 61 6e 67 65 2e 0a 09 09 20 2a 0a 09 09 20 2a Range.... *... *
1f7a0 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
1f7b0 2e 53 69 67 6e 61 6c 42 61 73 65 7d 0a 09 09 20 .SignalBase}...
1f7c0 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a * @constructor.
1f7d0 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 50 6f .. * @param {Po
1f7e0 73 69 74 69 76 65 7d 20 65 78 70 20 54 68 65 20 sitive} exp The
1f7f0 65 78 70 6f 6e 65 6e 74 20 74 6f 20 61 70 70 6c exponent to appl
1f800 79 20 74 6f 20 74 68 65 20 69 6e 63 6f 6d 69 6e y to the incomin
1f810 67 20 73 69 67 6e 61 6c 2c 20 6d 75 73 74 20 62 g signal, must b
1f820 65 20 61 74 20 6c 65 61 73 74 20 32 2e 20 0a 09 e at least 2. ..
1f830 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 . * @example...
1f840 20 2a 20 76 61 72 20 70 6f 77 20 3d 20 6e 65 77 * var pow = new
1f850 20 54 6f 6e 65 2e 50 6f 77 28 32 29 3b 0a 09 09 Tone.Pow(2);...
1f860 20 2a 20 76 61 72 20 73 69 67 20 3d 20 6e 65 77 * var sig = new
1f870 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 30 2e 35 Tone.Signal(0.5
1f880 29 2e 63 6f 6e 6e 65 63 74 28 70 6f 77 29 3b 0a ).connect(pow);.
1f890 09 09 20 2a 20 2f 2f 6f 75 74 70 75 74 20 6f 66 .. * //output of
1f8a0 20 70 6f 77 20 69 73 20 30 2e 32 35 2e 20 0a 09 pow is 0.25. ..
1f8b0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 . */.. Tone.P
1f8c0 6f 77 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 65 ow = function (e
1f8d0 78 70 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f xp) {.. /
1f8e0 2a 2a 0a 09 09 09 20 2a 20 74 68 65 20 65 78 70 **.... * the exp
1f8f0 6f 6e 65 6e 74 0a 09 09 09 20 2a 20 40 70 72 69 onent.... * @pri
1f900 76 61 74 65 0a 09 09 09 20 2a 20 40 74 79 70 65 vate.... * @type
1f910 20 7b 6e 75 6d 62 65 72 7d 0a 09 09 09 20 2a 2f {number}.... */
1f920 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
1f930 65 78 70 20 3d 20 74 68 69 73 2e 64 65 66 61 75 exp = this.defau
1f940 6c 74 41 72 67 28 65 78 70 2c 20 31 29 3b 0a 09 ltArg(exp, 1);..
1f950 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
1f960 2a 20 20 40 74 79 70 65 20 7b 57 61 76 65 53 68 * @type {WaveSh
1f970 61 70 65 72 4e 6f 64 65 7d 0a 09 09 09 20 2a 20 aperNode}.... *
1f980 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
1f990 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
1f9a0 65 78 70 53 63 61 6c 65 72 20 3d 20 74 68 69 73 expScaler = this
1f9b0 2e 69 6e 70 75 74 20 3d 20 74 68 69 73 2e 6f 75 .input = this.ou
1f9c0 74 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e tput = new Tone.
1f9d0 57 61 76 65 53 68 61 70 65 72 28 74 68 69 73 2e WaveShaper(this.
1f9e0 5f 65 78 70 46 75 6e 63 28 74 68 69 73 2e 5f 65 _expFunc(this._e
1f9f0 78 70 29 2c 20 38 31 39 32 29 3b 0a 09 20 20 20 xp), 8192);..
1fa00 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 };.. Tone.ex
1fa10 74 65 6e 64 28 54 6f 6e 65 2e 50 6f 77 2c 20 54 tend(Tone.Pow, T
1fa20 6f 6e 65 2e 53 69 67 6e 61 6c 42 61 73 65 29 3b one.SignalBase);
1fa30 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 .. /**... * T
1fa40 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 he value of the
1fa50 65 78 70 6f 6e 65 6e 74 2e 0a 09 09 20 2a 20 40 exponent.... * @
1fa60 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 50 6f memberOf Tone.Po
1fa70 77 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 6e w#... * @type {n
1fa80 75 6d 62 65 72 7d 0a 09 09 20 2a 20 40 6e 61 6d umber}... * @nam
1fa90 65 20 76 61 6c 75 65 0a 09 09 20 2a 2f 0a 09 20 e value... */..
1faa0 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
1fab0 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 6f Property(Tone.Po
1fac0 77 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 76 61 w.prototype, 'va
1fad0 6c 75 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 lue', {..
1fae0 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
1faf0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
1fb00 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 65 78 return this._ex
1fb10 70 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 p;.. },..
1fb20 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e set: fun
1fb30 63 74 69 6f 6e 20 28 65 78 70 29 20 7b 0a 09 20 ction (exp) {..
1fb40 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
1fb50 5f 65 78 70 20 3d 20 65 78 70 3b 0a 09 20 20 20 _exp = exp;..
1fb60 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 65 this._e
1fb70 78 70 53 63 61 6c 65 72 2e 73 65 74 4d 61 70 28 xpScaler.setMap(
1fb80 74 68 69 73 2e 5f 65 78 70 46 75 6e 63 28 74 68 this._expFunc(th
1fb90 69 73 2e 5f 65 78 70 29 29 3b 0a 09 20 20 20 20 is._exp));..
1fba0 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
1fbb0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 /**... * th
1fbc0 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 69 63 68 e function which
1fbd0 20 6d 61 70 73 20 74 68 65 20 77 61 76 65 73 68 maps the wavesh
1fbe0 61 70 65 72 0a 09 09 20 2a 20 20 40 70 61 72 61 aper... * @para
1fbf0 6d 20 20 20 7b 6e 75 6d 62 65 72 7d 20 65 78 70 m {number} exp
1fc00 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b ... * @return {
1fc10 66 75 6e 63 74 69 6f 6e 7d 0a 09 09 20 2a 20 20 function}... *
1fc20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 @private... */..
1fc30 20 20 20 20 54 6f 6e 65 2e 50 6f 77 2e 70 72 6f Tone.Pow.pro
1fc40 74 6f 74 79 70 65 2e 5f 65 78 70 46 75 6e 63 20 totype._expFunc
1fc50 3d 20 66 75 6e 63 74 69 6f 6e 20 28 65 78 70 29 = function (exp)
1fc60 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 {.. retu
1fc70 72 6e 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c rn function (val
1fc80 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
1fc90 20 72 65 74 75 72 6e 20 4d 61 74 68 2e 70 6f 77 return Math.pow
1fca0 28 4d 61 74 68 2e 61 62 73 28 76 61 6c 29 2c 20 (Math.abs(val),
1fcb0 65 78 70 29 3b 0a 09 20 20 20 20 20 20 20 20 7d exp);.. }
1fcc0 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
1fcd0 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 **... * Clean u
1fce0 70 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e p.... * @return
1fcf0 73 20 7b 54 6f 6e 65 2e 50 6f 77 7d 20 74 68 69 s {Tone.Pow} thi
1fd00 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
1fd10 65 2e 50 6f 77 2e 70 72 6f 74 6f 74 79 70 65 2e e.Pow.prototype.
1fd20 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 dispose = functi
1fd30 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
1fd40 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e Tone.prototype.
1fd50 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 dispose.call(thi
1fd60 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 s);.. thi
1fd70 73 2e 5f 65 78 70 53 63 61 6c 65 72 2e 64 69 73 s._expScaler.dis
1fd80 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
1fd90 20 74 68 69 73 2e 5f 65 78 70 53 63 61 6c 65 72 this._expScaler
1fda0 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
1fdb0 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
1fdc0 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 };.. retu
1fdd0 72 6e 20 54 6f 6e 65 2e 50 6f 77 3b 0a 09 7d 29 rn Tone.Pow;..})
1fde0 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 ;..Module(functi
1fdf0 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 on (Tone) {..
1fe00 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 .. /**... *
1fe10 20 40 63 6c 61 73 73 20 20 54 6f 6e 65 2e 45 6e @class Tone.En
1fe20 76 65 6c 6f 70 65 20 69 73 20 61 6e 20 5b 41 44 velope is an [AD
1fe30 53 52 5d 28 68 74 74 70 73 3a 2f 2f 65 6e 2e 77 SR](https://en.w
1fe40 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b ikipedia.org/wik
1fe50 69 2f 53 79 6e 74 68 65 73 69 7a 65 72 23 41 44 i/Synthesizer#AD
1fe60 53 52 5f 65 6e 76 65 6c 6f 70 65 29 0a 09 09 20 SR_envelope)...
1fe70 2a 20 20 20 20 20 20 20 20 20 20 65 6e 76 65 6c * envel
1fe80 6f 70 65 20 67 65 6e 65 72 61 74 6f 72 2e 20 54 ope generator. T
1fe90 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 20 6f 75 74 one.Envelope out
1fea0 70 75 74 73 20 61 20 73 69 67 6e 61 6c 20 77 68 puts a signal wh
1feb0 69 63 68 20 0a 09 09 20 2a 20 20 20 20 20 20 20 ich ... *
1fec0 20 20 20 63 61 6e 20 62 65 20 63 6f 6e 6e 65 63 can be connec
1fed0 74 65 64 20 74 6f 20 61 6e 20 41 75 64 69 6f 50 ted to an AudioP
1fee0 61 72 61 6d 20 6f 72 20 54 6f 6e 65 2e 53 69 67 aram or Tone.Sig
1fef0 6e 61 6c 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 nal. ... *
1ff00 20 20 20 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 <img src="ht
1ff10 74 70 73 3a 2f 2f 75 70 6c 6f 61 64 2e 77 69 6b tps://upload.wik
1ff20 69 6d 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 70 imedia.org/wikip
1ff30 65 64 69 61 2f 63 6f 6d 6d 6f 6e 73 2f 65 2f 65 edia/commons/e/e
1ff40 61 2f 41 44 53 52 5f 70 61 72 61 6d 65 74 65 72 a/ADSR_parameter
1ff50 2e 73 76 67 22 3e 0a 09 09 20 2a 0a 09 09 20 2a .svg">... *... *
1ff60 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 @constructor..
1ff70 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 . * @extends {T
1ff80 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 one}... * @para
1ff90 6d 20 7b 54 69 6d 65 7d 20 5b 61 74 74 61 63 6b m {Time} [attack
1ffa0 5d 20 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 ] The amount of
1ffb0 74 69 6d 65 20 69 74 20 74 61 6b 65 73 20 66 6f time it takes fo
1ffc0 72 20 74 68 65 20 65 6e 76 65 6c 6f 70 65 20 74 r the envelope t
1ffd0 6f 20 67 6f 20 66 72 6f 6d 20 0a 09 09 20 2a 20 o go from ... *
1ffe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1fff0 20 20 20 20 20 20 20 20 30 20 74 6f 20 69 74 27 0 to it'
20000 73 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 2e s maximum value.
20010 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b ... * @param {
20020 54 69 6d 65 7d 20 5b 64 65 63 61 79 5d 09 54 68 Time} [decay].Th
20030 65 20 70 65 72 69 6f 64 20 6f 66 20 74 69 6d 65 e period of time
20040 20 61 66 74 65 72 20 74 68 65 20 61 74 74 61 63 after the attac
20050 6b 20 74 68 61 74 20 69 74 20 74 61 6b 65 73 20 k that it takes
20060 66 6f 72 20 74 68 65 20 65 6e 76 65 6c 6f 70 65 for the envelope
20070 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 ... *
20080 20 20 20 20 20 20 20 20 20 20 20 20 09 74 6f 20 .to
20090 66 61 6c 6c 20 74 6f 20 74 68 65 20 73 75 73 74 fall to the sust
200a0 61 69 6e 20 76 61 6c 75 65 2e 20 0a 09 09 20 2a ain value. ... *
200b0 20 20 40 70 61 72 61 6d 20 7b 4e 6f 72 6d 61 6c @param {Normal
200c0 52 61 6e 67 65 7d 20 5b 73 75 73 74 61 69 6e 5d Range} [sustain]
200d0 09 54 68 65 20 70 65 72 63 65 6e 74 20 6f 66 20 .The percent of
200e0 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 the maximum valu
200f0 65 20 74 68 61 74 20 74 68 65 20 65 6e 76 65 6c e that the envel
20100 6f 70 65 20 72 65 73 74 73 20 61 74 20 75 6e 74 ope rests at unt
20110 69 6c 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 il... *
20120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20130 20 20 20 20 20 20 20 09 74 68 65 20 72 65 6c 65 .the rele
20140 61 73 65 20 69 73 20 74 72 69 67 67 65 72 65 64 ase is triggered
20150 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 . ... * @param
20160 7b 54 69 6d 65 7d 20 5b 72 65 6c 65 61 73 65 5d {Time} [release]
20170 09 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 74 .The amount of t
20180 69 6d 65 20 61 66 74 65 72 20 74 68 65 20 72 65 ime after the re
20190 6c 65 61 73 65 20 69 73 20 74 72 69 67 67 65 72 lease is trigger
201a0 65 64 20 69 74 20 74 61 6b 65 73 20 74 6f 20 72 ed it takes to r
201b0 65 61 63 68 20 30 2e 20 0a 09 09 20 2a 20 20 40 each 0. ... * @
201c0 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f 61 example... * //a
201d0 6e 20 61 6d 70 6c 69 74 75 64 65 20 65 6e 76 65 n amplitude enve
201e0 6c 6f 70 65 0a 09 09 20 2a 20 76 61 72 20 67 61 lope... * var ga
201f0 69 6e 4e 6f 64 65 20 3d 20 54 6f 6e 65 2e 63 6f inNode = Tone.co
20200 6e 74 65 78 74 2e 63 72 65 61 74 65 47 61 69 6e ntext.createGain
20210 28 29 3b 0a 09 09 20 2a 20 76 61 72 20 65 6e 76 ();... * var env
20220 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 45 6e 76 65 = new Tone.Enve
20230 6c 6f 70 65 28 7b 0a 09 09 20 2a 20 09 22 61 74 lope({... * ."at
20240 74 61 63 6b 22 20 3a 20 30 2e 31 2c 0a 09 09 20 tack" : 0.1,...
20250 2a 20 09 22 64 65 63 61 79 22 20 3a 20 30 2e 32 * ."decay" : 0.2
20260 2c 0a 09 09 20 2a 20 09 22 73 75 73 74 61 69 6e ,... * ."sustain
20270 22 20 3a 20 31 2c 0a 09 09 20 2a 20 09 22 72 65 " : 1,... * ."re
20280 6c 65 61 73 65 22 20 3a 20 30 2e 38 2c 0a 09 09 lease" : 0.8,...
20290 20 2a 20 7d 29 3b 0a 09 09 20 2a 20 65 6e 76 2e * });... * env.
202a0 63 6f 6e 6e 65 63 74 28 67 61 69 6e 4e 6f 64 65 connect(gainNode
202b0 2e 67 61 69 6e 29 3b 0a 09 09 20 2a 2f 0a 09 20 .gain);... */..
202c0 20 20 20 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 Tone.Envelope
202d0 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
202e0 0a 09 20 20 20 20 20 20 20 20 2f 2f 67 65 74 20 .. //get
202f0 61 6c 6c 20 6f 66 20 74 68 65 20 64 65 66 61 75 all of the defau
20300 6c 74 73 0a 09 20 20 20 20 20 20 20 20 76 61 72 lts.. var
20310 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e options = this.
20320 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 optionsObject(ar
20330 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 guments, [..
20340 20 20 20 20 20 20 20 20 27 61 74 74 61 63 6b 27 'attack'
20350 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
20360 64 65 63 61 79 27 2c 0a 09 20 20 20 20 20 20 20 decay',..
20370 20 20 20 20 20 27 73 75 73 74 61 69 6e 27 2c 0a 'sustain',.
20380 09 20 20 20 20 20 20 20 20 20 20 20 20 27 72 65 . 're
20390 6c 65 61 73 65 27 0a 09 20 20 20 20 20 20 20 20 lease'..
203a0 5d 2c 20 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 ], Tone.Envelope
203b0 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 .defaults);..
203c0 20 20 20 20 20 2f 2a 2a 20 0a 09 09 09 20 2a 20 /** .... *
203d0 20 57 68 65 6e 20 74 72 69 67 67 65 72 41 74 74 When triggerAtt
203e0 61 63 6b 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 ack is called, t
203f0 68 65 20 61 74 74 61 63 6b 20 74 69 6d 65 20 69 he attack time i
20400 73 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 0a s the amount of.
20410 09 09 09 20 2a 20 20 74 69 6d 65 20 69 74 20 74 ... * time it t
20420 61 6b 65 73 20 66 6f 72 20 74 68 65 20 65 6e 76 akes for the env
20430 65 6c 6f 70 65 20 74 6f 20 72 65 61 63 68 20 69 elope to reach i
20440 74 27 73 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 t's maximum valu
20450 65 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 e. .... * @type
20460 20 7b 54 69 6d 65 7d 0a 09 09 09 20 2a 2f 0a 09 {Time}.... */..
20470 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 74 74 this.att
20480 61 63 6b 20 3d 20 6f 70 74 69 6f 6e 73 2e 61 74 ack = options.at
20490 74 61 63 6b 3b 0a 09 20 20 20 20 20 20 20 20 2f tack;.. /
204a0 2a 2a 0a 09 09 09 20 2a 20 20 41 66 74 65 72 20 **.... * After
204b0 74 68 65 20 61 74 74 61 63 6b 20 70 6f 72 74 69 the attack porti
204c0 6f 6e 20 6f 66 20 74 68 65 20 65 6e 76 65 6c 6f on of the envelo
204d0 70 65 2c 20 74 68 65 20 76 61 6c 75 65 20 77 69 pe, the value wi
204e0 6c 6c 20 66 61 6c 6c 0a 09 09 09 20 2a 20 20 6f ll fall.... * o
204f0 76 65 72 20 74 68 65 20 64 75 72 61 74 69 6f 6e ver the duration
20500 20 6f 66 20 74 68 65 20 64 65 63 61 79 20 74 69 of the decay ti
20510 6d 65 20 74 6f 20 69 74 27 73 20 73 75 73 74 61 me to it's susta
20520 69 6e 20 76 61 6c 75 65 2e 20 0a 09 09 09 20 2a in value. .... *
20530 20 20 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a 09 @type {Time}..
20540 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
20550 68 69 73 2e 64 65 63 61 79 20 3d 20 6f 70 74 69 his.decay = opti
20560 6f 6e 73 2e 64 65 63 61 79 3b 0a 09 20 20 20 20 ons.decay;..
20570 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 09 54 /**.... * .T
20580 68 65 20 73 75 73 74 61 69 6e 20 76 61 6c 75 65 he sustain value
20590 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 0a 09 is the value ..
205a0 09 09 20 2a 20 09 77 68 69 63 68 20 74 68 65 20 .. * .which the
205b0 65 6e 76 65 6c 6f 70 65 20 72 65 73 74 73 20 61 envelope rests a
205c0 74 20 61 66 74 65 72 20 74 72 69 67 67 65 72 41 t after triggerA
205d0 74 74 61 63 6b 20 69 73 0a 09 09 09 20 2a 20 09 ttack is.... * .
205e0 63 61 6c 6c 65 64 2c 20 62 75 74 20 62 65 66 6f called, but befo
205f0 72 65 20 74 72 69 67 67 65 72 52 65 6c 65 61 73 re triggerReleas
20600 65 20 69 73 20 69 6e 76 6f 6b 65 64 2e 20 0a 09 e is invoked. ..
20610 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e 6f 72 .. * @type {Nor
20620 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 09 20 2a 2f malRange}.... */
20630 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 .. this.s
20640 75 73 74 61 69 6e 20 3d 20 6f 70 74 69 6f 6e 73 ustain = options
20650 2e 73 75 73 74 61 69 6e 3b 0a 09 20 20 20 20 20 .sustain;..
20660 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 41 66 /**.... * Af
20670 74 65 72 20 74 72 69 67 67 65 72 52 65 6c 65 61 ter triggerRelea
20680 73 65 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 se is called, th
20690 65 20 65 6e 76 65 6c 6f 70 65 27 73 0a 09 09 09 e envelope's....
206a0 20 2a 20 20 76 61 6c 75 65 20 77 69 6c 6c 20 66 * value will f
206b0 61 6c 6c 20 74 6f 20 69 74 27 73 20 6d 69 6d 69 all to it's mimi
206c0 6e 75 6d 20 76 61 6c 75 65 20 6f 76 65 72 20 74 num value over t
206d0 68 65 0a 09 09 09 20 2a 20 20 64 75 72 61 74 69 he.... * durati
206e0 6f 6e 20 6f 66 20 74 68 65 20 72 65 6c 65 61 73 on of the releas
206f0 65 20 74 69 6d 65 2e 20 0a 09 09 09 20 2a 20 20 e time. .... *
20700 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a 09 09 09 @type {Time}....
20710 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
20720 73 2e 72 65 6c 65 61 73 65 20 3d 20 6f 70 74 69 s.release = opti
20730 6f 6e 73 2e 72 65 6c 65 61 73 65 3b 0a 09 20 20 ons.release;..
20740 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
20750 20 74 68 65 20 6e 65 78 74 20 74 69 6d 65 20 74 the next time t
20760 68 65 20 65 6e 76 65 6c 6f 70 65 20 69 73 20 61 he envelope is a
20770 74 20 73 74 61 6e 64 62 79 0a 09 09 09 20 2a 20 t standby.... *
20780 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 7d 0a @type {number}.
20790 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
207a0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
207b0 74 68 69 73 2e 5f 61 74 74 61 63 6b 43 75 72 76 this._attackCurv
207c0 65 20 3d 20 27 6c 69 6e 65 61 72 27 3b 0a 09 20 e = 'linear';..
207d0 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
207e0 20 20 74 68 65 20 6e 65 78 74 20 74 69 6d 65 20 the next time
207f0 74 68 65 20 65 6e 76 65 6c 6f 70 65 20 69 73 20 the envelope is
20800 61 74 20 73 74 61 6e 64 62 79 0a 09 09 09 20 2a at standby.... *
20810 20 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 7d @type {number}
20820 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
20830 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
20840 20 74 68 69 73 2e 5f 72 65 6c 65 61 73 65 43 75 this._releaseCu
20850 72 76 65 20 3d 20 27 65 78 70 6f 6e 65 6e 74 69 rve = 'exponenti
20860 61 6c 27 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a al';.. /*
20870 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 73 69 67 *.... * the sig
20880 6e 61 6c 0a 09 09 09 20 2a 20 20 40 74 79 70 65 nal.... * @type
20890 20 7b 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 {Tone.TimelineS
208a0 69 67 6e 61 6c 7d 0a 09 09 09 20 2a 20 20 40 70 ignal}.... * @p
208b0 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
208c0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 69 67 this._sig
208d0 20 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 20 3d = this.output =
208e0 20 6e 65 77 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 new Tone.Timeli
208f0 6e 65 53 69 67 6e 61 6c 28 29 3b 0a 09 20 20 20 neSignal();..
20900 20 20 20 20 20 74 68 69 73 2e 5f 73 69 67 2e 73 this._sig.s
20910 65 74 56 61 6c 75 65 41 74 54 69 6d 65 28 30 2c etValueAtTime(0,
20920 20 30 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 0);.. //
20930 73 65 74 20 74 68 65 20 61 74 74 61 63 6b 43 75 set the attackCu
20940 72 76 65 20 69 6e 69 74 69 61 6c 6c 79 0a 09 20 rve initially..
20950 20 20 20 20 20 20 20 74 68 69 73 2e 61 74 74 61 this.atta
20960 63 6b 43 75 72 76 65 20 3d 20 6f 70 74 69 6f 6e ckCurve = option
20970 73 2e 61 74 74 61 63 6b 43 75 72 76 65 3b 0a 09 s.attackCurve;..
20980 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 65 6c this.rel
20990 65 61 73 65 43 75 72 76 65 20 3d 20 6f 70 74 69 easeCurve = opti
209a0 6f 6e 73 2e 72 65 6c 65 61 73 65 43 75 72 76 65 ons.releaseCurve
209b0 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 ;.. };.. T
209c0 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e one.extend(Tone.
209d0 45 6e 76 65 6c 6f 70 65 29 3b 0a 09 20 20 20 20 Envelope);..
209e0 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 65 20 64 65 /**... * the de
209f0 66 61 75 6c 74 20 70 61 72 61 6d 65 74 65 72 73 fault parameters
20a00 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 ... * @static..
20a10 09 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a . * @const... *
20a20 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 6e 76 65 /.. Tone.Enve
20a30 6c 6f 70 65 2e 64 65 66 61 75 6c 74 73 20 3d 20 lope.defaults =
20a40 7b 0a 09 20 20 20 20 20 20 20 20 27 61 74 74 61 {.. 'atta
20a50 63 6b 27 3a 20 30 2e 30 31 2c 0a 09 20 20 20 20 ck': 0.01,..
20a60 20 20 20 20 27 64 65 63 61 79 27 3a 20 30 2e 31 'decay': 0.1
20a70 2c 0a 09 20 20 20 20 20 20 20 20 27 73 75 73 74 ,.. 'sust
20a80 61 69 6e 27 3a 20 30 2e 35 2c 0a 09 20 20 20 20 ain': 0.5,..
20a90 20 20 20 20 27 72 65 6c 65 61 73 65 27 3a 20 31 'release': 1
20aa0 2c 0a 09 20 20 20 20 20 20 20 20 27 61 74 74 61 ,.. 'atta
20ab0 63 6b 43 75 72 76 65 27 3a 20 27 6c 69 6e 65 61 ckCurve': 'linea
20ac0 72 27 2c 0a 09 20 20 20 20 20 20 20 20 27 72 65 r',.. 're
20ad0 6c 65 61 73 65 43 75 72 76 65 27 3a 20 27 65 78 leaseCurve': 'ex
20ae0 70 6f 6e 65 6e 74 69 61 6c 27 0a 09 20 20 20 20 ponential'..
20af0 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
20b00 20 52 65 61 64 20 74 68 65 20 63 75 72 72 65 6e Read the curren
20b10 74 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 65 t value of the e
20b20 6e 76 65 6c 6f 70 65 2e 20 55 73 65 66 75 6c 20 nvelope. Useful
20b30 66 6f 72 20 0a 09 09 20 2a 20 73 79 6e 63 72 6f for ... * syncro
20b40 6e 69 7a 69 6e 67 20 76 69 73 75 61 6c 20 6f 75 nizing visual ou
20b50 74 70 75 74 20 74 6f 20 74 68 65 20 65 6e 76 65 tput to the enve
20b60 6c 6f 70 65 2e 20 0a 09 09 20 2a 20 40 6d 65 6d lope. ... * @mem
20b70 62 65 72 4f 66 20 54 6f 6e 65 2e 45 6e 76 65 6c berOf Tone.Envel
20b80 6f 70 65 23 0a 09 09 20 2a 20 40 74 79 70 65 20 ope#... * @type
20b90 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 40 6e {Number}... * @n
20ba0 61 6d 65 20 76 61 6c 75 65 0a 09 09 20 2a 20 40 ame value... * @
20bb0 72 65 61 64 4f 6e 6c 79 0a 09 09 20 2a 2f 0a 09 readOnly... */..
20bc0 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
20bd0 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 45 eProperty(Tone.E
20be0 6e 76 65 6c 6f 70 65 2e 70 72 6f 74 6f 74 79 70 nvelope.prototyp
20bf0 65 2c 20 27 76 61 6c 75 65 27 2c 20 7b 0a 09 20 e, 'value', {..
20c00 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
20c10 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
20c20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
20c30 69 73 2e 67 65 74 56 61 6c 75 65 41 74 54 69 6d is.getValueAtTim
20c40 65 28 74 68 69 73 2e 6e 6f 77 28 29 29 3b 0a 09 e(this.now());..
20c50 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
20c60 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
20c70 20 54 68 65 20 73 68 61 70 65 20 6f 66 20 74 68 The shape of th
20c80 65 20 61 74 74 61 63 6b 2e 20 0a 09 09 20 2a 20 e attack. ... *
20c90 43 61 6e 20 62 65 20 61 6e 79 20 6f 66 20 74 68 Can be any of th
20ca0 65 73 65 20 73 74 72 69 6e 67 73 3a 0a 09 09 20 ese strings:...
20cb0 2a 20 3c 75 6c 3e 0a 09 09 20 2a 20 20 20 3c 6c * <ul>... * <l
20cc0 69 3e 6c 69 6e 65 61 72 3c 2f 6c 69 3e 0a 09 09 i>linear</li>...
20cd0 20 2a 20 20 20 3c 6c 69 3e 65 78 70 6f 6e 65 6e * <li>exponen
20ce0 74 69 61 6c 3c 2f 6c 69 3e 0a 09 09 20 2a 20 20 tial</li>... *
20cf0 20 3c 6c 69 3e 73 69 6e 65 3c 2f 6c 69 3e 0a 09 <li>sine</li>..
20d00 09 20 2a 20 20 20 3c 6c 69 3e 63 6f 73 69 6e 65 . * <li>cosine
20d10 3c 2f 6c 69 3e 0a 09 09 20 2a 20 20 20 3c 6c 69 </li>... * <li
20d20 3e 62 6f 75 6e 63 65 3c 2f 6c 69 3e 0a 09 09 20 >bounce</li>...
20d30 2a 20 20 20 3c 6c 69 3e 72 69 70 70 6c 65 3c 2f * <li>ripple</
20d40 6c 69 3e 0a 09 09 20 2a 20 20 20 3c 6c 69 3e 73 li>... * <li>s
20d50 74 65 70 3c 2f 6c 69 3e 0a 09 09 20 2a 20 3c 2f tep</li>... * </
20d60 75 6c 3e 0a 09 09 20 2a 20 43 61 6e 20 61 6c 73 ul>... * Can als
20d70 6f 20 62 65 20 61 6e 20 61 72 72 61 79 20 77 68 o be an array wh
20d80 69 63 68 20 64 65 73 63 72 69 62 65 73 20 74 68 ich describes th
20d90 65 20 63 75 72 76 65 2e 20 56 61 6c 75 65 73 0a e curve. Values.
20da0 09 09 20 2a 20 69 6e 20 74 68 65 20 61 72 72 61 .. * in the arra
20db0 79 20 61 72 65 20 65 76 65 6e 6c 79 20 73 75 62 y are evenly sub
20dc0 64 69 76 69 64 65 64 20 61 6e 64 20 6c 69 6e 65 divided and line
20dd0 61 72 6c 79 0a 09 09 20 2a 20 69 6e 74 65 72 70 arly... * interp
20de0 6f 6c 61 74 65 64 20 6f 76 65 72 20 74 68 65 20 olated over the
20df0 64 75 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 duration of the
20e00 61 74 74 61 63 6b 2e 20 0a 09 09 20 2a 20 40 6d attack. ... * @m
20e10 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 45 6e 76 emberOf Tone.Env
20e20 65 6c 6f 70 65 23 0a 09 09 20 2a 20 40 74 79 70 elope#... * @typ
20e30 65 20 7b 53 74 72 69 6e 67 7c 41 72 72 61 79 7d e {String|Array}
20e40 0a 09 09 20 2a 20 40 6e 61 6d 65 20 61 74 74 61 ... * @name atta
20e50 63 6b 43 75 72 76 65 0a 09 09 20 2a 20 40 65 78 ckCurve... * @ex
20e60 61 6d 70 6c 65 0a 09 09 20 2a 20 65 6e 76 2e 61 ample... * env.a
20e70 74 74 61 63 6b 43 75 72 76 65 20 3d 20 22 6c 69 ttackCurve = "li
20e80 6e 65 61 72 22 3b 0a 09 09 20 2a 20 40 65 78 61 near";... * @exa
20e90 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f 63 61 6e 20 mple... * //can
20ea0 61 6c 73 6f 20 62 65 20 61 6e 20 61 72 72 61 79 also be an array
20eb0 0a 09 09 20 2a 20 65 6e 76 2e 61 74 74 61 63 6b ... * env.attack
20ec0 43 75 72 76 65 20 3d 20 5b 30 2c 20 30 2e 32 2c Curve = [0, 0.2,
20ed0 20 30 2e 33 2c 20 30 2e 34 2c 20 31 5d 0a 09 09 0.3, 0.4, 1]...
20ee0 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
20ef0 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
20f00 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 2e 70 72 6f one.Envelope.pro
20f10 74 6f 74 79 70 65 2c 20 27 61 74 74 61 63 6b 43 totype, 'attackC
20f20 75 72 76 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 urve', {..
20f30 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
20f40 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
20f50 20 20 69 66 20 28 74 68 69 73 2e 69 73 53 74 72 if (this.isStr
20f60 69 6e 67 28 74 68 69 73 2e 5f 61 74 74 61 63 6b ing(this._attack
20f70 43 75 72 76 65 29 29 20 7b 0a 09 20 20 20 20 20 Curve)) {..
20f80 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
20f90 6e 20 74 68 69 73 2e 5f 61 74 74 61 63 6b 43 75 n this._attackCu
20fa0 72 76 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 rve;..
20fb0 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 68 69 } else if (thi
20fc0 73 2e 69 73 41 72 72 61 79 28 74 68 69 73 2e 5f s.isArray(this._
20fd0 61 74 74 61 63 6b 43 75 72 76 65 29 29 20 7b 0a attackCurve)) {.
20fe0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
20ff0 20 2f 2f 6c 6f 6f 6b 20 75 70 20 74 68 65 20 6e //look up the n
21000 61 6d 65 20 69 6e 20 74 68 65 20 63 75 72 76 65 ame in the curve
21010 73 20 61 72 72 61 79 0a 09 20 20 20 20 20 20 20 s array..
21020 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 for (va
21030 72 20 74 79 70 65 20 69 6e 20 54 6f 6e 65 2e 45 r type in Tone.E
21040 6e 76 65 6c 6f 70 65 2e 54 79 70 65 29 20 7b 0a nvelope.Type) {.
21050 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
21060 20 20 20 20 20 69 66 20 28 54 6f 6e 65 2e 45 6e if (Tone.En
21070 76 65 6c 6f 70 65 2e 54 79 70 65 5b 74 79 70 65 velope.Type[type
21080 5d 2e 49 6e 20 3d 3d 3d 20 74 68 69 73 2e 5f 61 ].In === this._a
21090 74 74 61 63 6b 43 75 72 76 65 29 20 7b 0a 09 20 ttackCurve) {..
210a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
210b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 79 return ty
210c0 70 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 pe;..
210d0 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
210e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
210f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
21100 2f 6f 74 68 65 72 77 69 73 65 20 6a 75 73 74 20 /otherwise just
21110 72 65 74 75 72 6e 20 74 68 65 20 61 72 72 61 79 return the array
21120 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
21130 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 61 return this._a
21140 74 74 61 63 6b 43 75 72 76 65 3b 0a 09 20 20 20 ttackCurve;..
21150 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
21160 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
21170 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 63 set: function (c
21180 75 72 76 65 29 20 7b 0a 09 20 20 20 20 20 20 20 urve) {..
21190 20 20 20 20 20 2f 2f 63 68 65 63 6b 20 69 66 20 //check if
211a0 69 74 27 73 20 61 20 76 61 6c 69 64 20 74 79 70 it's a valid typ
211b0 65 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 e.. i
211c0 66 20 28 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 f (Tone.Envelope
211d0 2e 54 79 70 65 2e 68 61 73 4f 77 6e 50 72 6f 70 .Type.hasOwnProp
211e0 65 72 74 79 28 63 75 72 76 65 29 29 20 7b 0a 09 erty(curve)) {..
211f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21200 76 61 72 20 63 75 72 76 65 44 65 66 20 3d 20 54 var curveDef = T
21210 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 2e 54 79 70 one.Envelope.Typ
21220 65 5b 63 75 72 76 65 5d 3b 0a 09 20 20 20 20 20 e[curve];..
21230 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 if (t
21240 68 69 73 2e 69 73 4f 62 6a 65 63 74 28 63 75 72 his.isObject(cur
21250 76 65 44 65 66 29 29 20 7b 0a 09 20 20 20 20 20 veDef)) {..
21260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
21270 68 69 73 2e 5f 61 74 74 61 63 6b 43 75 72 76 65 his._attackCurve
21280 20 3d 20 63 75 72 76 65 44 65 66 2e 49 6e 3b 0a = curveDef.In;.
21290 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
212a0 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
212b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
212c0 68 69 73 2e 5f 61 74 74 61 63 6b 43 75 72 76 65 his._attackCurve
212d0 20 3d 20 63 75 72 76 65 44 65 66 3b 0a 09 20 20 = curveDef;..
212e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }.
212f0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
21300 6c 73 65 20 69 66 20 28 74 68 69 73 2e 69 73 41 lse if (this.isA
21310 72 72 61 79 28 63 75 72 76 65 29 29 20 7b 0a 09 rray(curve)) {..
21320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21330 74 68 69 73 2e 5f 61 74 74 61 63 6b 43 75 72 76 this._attackCurv
21340 65 20 3d 20 63 75 72 76 65 3b 0a 09 20 20 20 20 e = curve;..
21350 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
21360 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
21370 20 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f throw new Erro
21380 72 28 27 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 r('Tone.Envelope
21390 3a 20 69 6e 76 61 6c 69 64 20 63 75 72 76 65 3a : invalid curve:
213a0 20 27 20 2b 20 63 75 72 76 65 29 3b 0a 09 20 20 ' + curve);..
213b0 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
213c0 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
213d0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 . /**... * Th
213e0 65 20 73 68 61 70 65 20 6f 66 20 74 68 65 20 72 e shape of the r
213f0 65 6c 65 61 73 65 2e 20 53 65 65 20 74 68 65 20 elease. See the
21400 61 74 74 61 63 6b 20 63 75 72 76 65 20 74 79 70 attack curve typ
21410 65 73 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 es. ... * @membe
21420 72 4f 66 20 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 rOf Tone.Envelop
21430 65 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 53 e#... * @type {S
21440 74 72 69 6e 67 7c 41 72 72 61 79 7d 0a 09 09 20 tring|Array}...
21450 2a 20 40 6e 61 6d 65 20 72 65 6c 65 61 73 65 43 * @name releaseC
21460 75 72 76 65 0a 09 09 20 2a 20 40 65 78 61 6d 70 urve... * @examp
21470 6c 65 0a 09 09 20 2a 20 65 6e 76 2e 72 65 6c 65 le... * env.rele
21480 61 73 65 43 75 72 76 65 20 3d 20 22 6c 69 6e 65 aseCurve = "line
21490 61 72 22 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ar";... */..
214a0 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
214b0 70 65 72 74 79 28 54 6f 6e 65 2e 45 6e 76 65 6c perty(Tone.Envel
214c0 6f 70 65 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 ope.prototype, '
214d0 72 65 6c 65 61 73 65 43 75 72 76 65 27 2c 20 7b releaseCurve', {
214e0 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 .. get: f
214f0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
21500 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 if (th
21510 69 73 2e 69 73 53 74 72 69 6e 67 28 74 68 69 73 is.isString(this
21520 2e 5f 72 65 6c 65 61 73 65 43 75 72 76 65 29 29 ._releaseCurve))
21530 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
21540 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
21550 5f 72 65 6c 65 61 73 65 43 75 72 76 65 3b 0a 09 _releaseCurve;..
21560 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
21570 73 65 20 69 66 20 28 74 68 69 73 2e 69 73 41 72 se if (this.isAr
21580 72 61 79 28 74 68 69 73 2e 5f 72 65 6c 65 61 73 ray(this._releas
21590 65 43 75 72 76 65 29 29 20 7b 0a 09 20 20 20 20 eCurve)) {..
215a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6c 6f //lo
215b0 6f 6b 20 75 70 20 74 68 65 20 6e 61 6d 65 20 69 ok up the name i
215c0 6e 20 74 68 65 20 63 75 72 76 65 73 20 61 72 72 n the curves arr
215d0 61 79 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ay..
215e0 20 20 20 20 66 6f 72 20 28 76 61 72 20 74 79 70 for (var typ
215f0 65 20 69 6e 20 54 6f 6e 65 2e 45 6e 76 65 6c 6f e in Tone.Envelo
21600 70 65 2e 54 79 70 65 29 20 7b 0a 09 20 20 20 20 pe.Type) {..
21610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21620 69 66 20 28 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 if (Tone.Envelop
21630 65 2e 54 79 70 65 5b 74 79 70 65 5d 2e 4f 75 74 e.Type[type].Out
21640 20 3d 3d 3d 20 74 68 69 73 2e 5f 72 65 6c 65 61 === this._relea
21650 73 65 43 75 72 76 65 29 20 7b 0a 09 20 20 20 20 seCurve) {..
21660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21670 20 20 20 20 72 65 74 75 72 6e 20 74 79 70 65 3b return type;
21680 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
21690 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
216a0 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
216b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6f 74 //ot
216c0 68 65 72 77 69 73 65 20 6a 75 73 74 20 72 65 74 herwise just ret
216d0 75 72 6e 20 74 68 65 20 61 72 72 61 79 0a 09 20 urn the array..
216e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
216f0 65 74 75 72 6e 20 74 68 69 73 2e 5f 72 65 6c 65 eturn this._rele
21700 61 73 65 43 75 72 76 65 3b 0a 09 20 20 20 20 20 aseCurve;..
21710 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
21720 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
21730 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 63 75 72 t: function (cur
21740 76 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ve) {..
21750 20 20 20 2f 2f 63 68 65 63 6b 20 69 66 20 69 74 //check if it
21760 27 73 20 61 20 76 61 6c 69 64 20 74 79 70 65 0a 's a valid type.
21770 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
21780 28 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 2e 54 (Tone.Envelope.T
21790 79 70 65 2e 68 61 73 4f 77 6e 50 72 6f 70 65 72 ype.hasOwnProper
217a0 74 79 28 63 75 72 76 65 29 29 20 7b 0a 09 20 20 ty(curve)) {..
217b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va
217c0 72 20 63 75 72 76 65 44 65 66 20 3d 20 54 6f 6e r curveDef = Ton
217d0 65 2e 45 6e 76 65 6c 6f 70 65 2e 54 79 70 65 5b e.Envelope.Type[
217e0 63 75 72 76 65 5d 3b 0a 09 20 20 20 20 20 20 20 curve];..
217f0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 if (thi
21800 73 2e 69 73 4f 62 6a 65 63 74 28 63 75 72 76 65 s.isObject(curve
21810 44 65 66 29 29 20 7b 0a 09 20 20 20 20 20 20 20 Def)) {..
21820 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
21830 73 2e 5f 72 65 6c 65 61 73 65 43 75 72 76 65 20 s._releaseCurve
21840 3d 20 63 75 72 76 65 44 65 66 2e 4f 75 74 3b 0a = curveDef.Out;.
21850 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
21860 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
21870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
21880 68 69 73 2e 5f 72 65 6c 65 61 73 65 43 75 72 76 his._releaseCurv
21890 65 20 3d 20 63 75 72 76 65 44 65 66 3b 0a 09 20 e = curveDef;..
218a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
218b0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 .. }
218c0 65 6c 73 65 20 69 66 20 28 74 68 69 73 2e 69 73 else if (this.is
218d0 41 72 72 61 79 28 63 75 72 76 65 29 29 20 7b 0a Array(curve)) {.
218e0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
218f0 20 74 68 69 73 2e 5f 72 65 6c 65 61 73 65 43 75 this._releaseCu
21900 72 76 65 20 3d 20 63 75 72 76 65 3b 0a 09 20 20 rve = curve;..
21910 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
21920 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
21930 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 45 72 throw new Er
21940 72 6f 72 28 27 54 6f 6e 65 2e 45 6e 76 65 6c 6f ror('Tone.Envelo
21950 70 65 3a 20 69 6e 76 61 6c 69 64 20 63 75 72 76 pe: invalid curv
21960 65 3a 20 27 20 2b 20 63 75 72 76 65 29 3b 0a 09 e: ' + curve);..
21970 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
21980 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 }.. })
21990 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
219a0 20 54 72 69 67 67 65 72 20 74 68 65 20 61 74 74 Trigger the att
219b0 61 63 6b 2f 64 65 63 61 79 20 70 6f 72 74 69 6f ack/decay portio
219c0 6e 20 6f 66 20 74 68 65 20 41 44 53 52 20 65 6e n of the ADSR en
219d0 76 65 6c 6f 70 65 2e 20 0a 09 09 20 2a 20 20 40 velope. ... * @
219e0 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 5b 74 param {Time} [t
219f0 69 6d 65 3d 6e 6f 77 5d 20 57 68 65 6e 20 74 68 ime=now] When th
21a00 65 20 61 74 74 61 63 6b 20 73 68 6f 75 6c 64 20 e attack should
21a10 73 74 61 72 74 2e 0a 09 09 20 2a 20 20 40 70 61 start.... * @pa
21a20 72 61 6d 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 ram {NormalRange
21a30 7d 20 5b 76 65 6c 6f 63 69 74 79 3d 31 5d 20 54 } [velocity=1] T
21a40 68 65 20 76 65 6c 6f 63 69 74 79 20 6f 66 20 74 he velocity of t
21a50 68 65 20 65 6e 76 65 6c 6f 70 65 20 73 63 61 6c he envelope scal
21a60 65 73 20 74 68 65 20 76 61 6c 65 73 2e 0a 09 09 es the vales....
21a70 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
21a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
21a90 20 6e 75 6d 62 65 72 20 62 65 74 77 65 65 6e 20 number between
21aa0 30 2d 31 0a 09 09 20 2a 20 20 40 72 65 74 75 72 0-1... * @retur
21ab0 6e 73 20 7b 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 ns {Tone.Envelop
21ac0 65 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 40 65 e} this... * @e
21ad0 78 61 6d 70 6c 65 0a 09 09 20 2a 20 20 2f 2f 74 xample... * //t
21ae0 72 69 67 67 65 72 20 74 68 65 20 61 74 74 61 63 rigger the attac
21af0 6b 20 30 2e 35 20 73 65 63 6f 6e 64 73 20 66 72 k 0.5 seconds fr
21b00 6f 6d 20 6e 6f 77 20 77 69 74 68 20 61 20 76 65 om now with a ve
21b10 6c 6f 63 69 74 79 20 6f 66 20 30 2e 32 0a 09 09 locity of 0.2...
21b20 20 2a 20 20 65 6e 76 2e 74 72 69 67 67 65 72 41 * env.triggerA
21b30 74 74 61 63 6b 28 22 2b 30 2e 35 22 2c 20 30 2e ttack("+0.5", 0.
21b40 32 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 2);... */.. T
21b50 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 2e 70 72 6f one.Envelope.pro
21b60 74 6f 74 79 70 65 2e 74 72 69 67 67 65 72 41 74 totype.triggerAt
21b70 74 61 63 6b 20 3d 20 66 75 6e 63 74 69 6f 6e 20 tack = function
21b80 28 74 69 6d 65 2c 20 76 65 6c 6f 63 69 74 79 29 (time, velocity)
21b90 20 7b 0a 09 20 20 20 20 20 20 20 20 74 69 6d 65 {.. time
21ba0 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 = this.toSecond
21bb0 73 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 s(time);..
21bc0 20 20 76 61 72 20 6f 72 69 67 69 6e 61 6c 41 74 var originalAt
21bd0 74 61 63 6b 20 3d 20 74 68 69 73 2e 74 6f 53 65 tack = this.toSe
21be0 63 6f 6e 64 73 28 74 68 69 73 2e 61 74 74 61 63 conds(this.attac
21bf0 6b 29 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 k);.. var
21c00 20 61 74 74 61 63 6b 20 3d 20 6f 72 69 67 69 6e attack = origin
21c10 61 6c 41 74 74 61 63 6b 3b 0a 09 20 20 20 20 20 alAttack;..
21c20 20 20 20 76 61 72 20 64 65 63 61 79 20 3d 20 74 var decay = t
21c30 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 68 his.toSeconds(th
21c40 69 73 2e 64 65 63 61 79 29 3b 0a 09 20 20 20 20 is.decay);..
21c50 20 20 20 20 76 65 6c 6f 63 69 74 79 20 3d 20 74 velocity = t
21c60 68 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 76 his.defaultArg(v
21c70 65 6c 6f 63 69 74 79 2c 20 31 29 3b 0a 09 20 20 elocity, 1);..
21c80 20 20 20 20 20 20 2f 2f 63 68 65 63 6b 20 69 66 //check if
21c90 20 69 74 27 73 20 6e 6f 74 20 61 20 63 6f 6d 70 it's not a comp
21ca0 6c 65 74 65 20 61 74 74 61 63 6b 0a 09 20 20 20 lete attack..
21cb0 20 20 20 20 20 76 61 72 20 63 75 72 72 65 6e 74 var current
21cc0 56 61 6c 75 65 20 3d 20 74 68 69 73 2e 67 65 74 Value = this.get
21cd0 56 61 6c 75 65 41 74 54 69 6d 65 28 74 69 6d 65 ValueAtTime(time
21ce0 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 );.. if (
21cf0 63 75 72 72 65 6e 74 56 61 6c 75 65 20 3e 20 30 currentValue > 0
21d00 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
21d10 20 2f 2f 73 75 62 74 72 61 63 74 20 74 68 65 20 //subtract the
21d20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 20 66 72 current value fr
21d30 6f 6d 20 74 68 65 20 61 74 74 61 63 6b 20 74 69 om the attack ti
21d40 6d 65 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 me..
21d50 76 61 72 20 61 74 74 61 63 6b 52 61 74 65 20 3d var attackRate =
21d60 20 31 20 2f 20 61 74 74 61 63 6b 3b 0a 09 20 20 1 / attack;..
21d70 20 20 20 20 20 20 20 20 20 20 76 61 72 20 72 65 var re
21d80 6d 61 69 6e 69 6e 67 44 69 73 74 61 6e 63 65 20 mainingDistance
21d90 3d 20 31 20 2d 20 63 75 72 72 65 6e 74 56 61 6c = 1 - currentVal
21da0 75 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ue;..
21db0 20 2f 2f 74 68 65 20 61 74 74 61 63 6b 20 69 73 //the attack is
21dc0 20 6e 6f 77 20 74 68 65 20 72 65 6d 61 69 6e 69 now the remaini
21dd0 6e 67 20 74 69 6d 65 0a 09 20 20 20 20 20 20 20 ng time..
21de0 20 20 20 20 20 61 74 74 61 63 6b 20 3d 20 72 65 attack = re
21df0 6d 61 69 6e 69 6e 67 44 69 73 74 61 6e 63 65 20 mainingDistance
21e00 2f 20 61 74 74 61 63 6b 52 61 74 65 3b 0a 09 20 / attackRate;..
21e10 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
21e20 20 20 2f 2f 61 74 74 61 63 6b 0a 09 20 20 20 20 //attack..
21e30 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 61 74 if (this._at
21e40 74 61 63 6b 43 75 72 76 65 20 3d 3d 3d 20 27 6c tackCurve === 'l
21e50 69 6e 65 61 72 27 29 20 7b 0a 09 20 20 20 20 20 inear') {..
21e60 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 69 67 this._sig
21e70 2e 6c 69 6e 65 61 72 52 61 6d 70 54 6f 56 61 6c .linearRampToVal
21e80 75 65 28 76 65 6c 6f 63 69 74 79 2c 20 61 74 74 ue(velocity, att
21e90 61 63 6b 2c 20 74 69 6d 65 29 3b 0a 09 20 20 20 ack, time);..
21ea0 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
21eb0 74 68 69 73 2e 5f 61 74 74 61 63 6b 43 75 72 76 this._attackCurv
21ec0 65 20 3d 3d 3d 20 27 65 78 70 6f 6e 65 6e 74 69 e === 'exponenti
21ed0 61 6c 27 29 20 7b 0a 09 20 20 20 20 20 20 20 20 al') {..
21ee0 20 20 20 20 74 68 69 73 2e 5f 73 69 67 2e 65 78 this._sig.ex
21ef0 70 6f 6e 65 6e 74 69 61 6c 52 61 6d 70 54 6f 56 ponentialRampToV
21f00 61 6c 75 65 28 76 65 6c 6f 63 69 74 79 2c 20 61 alue(velocity, a
21f10 74 74 61 63 6b 2c 20 74 69 6d 65 29 3b 0a 09 20 ttack, time);..
21f20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 } else if
21f30 20 28 61 74 74 61 63 6b 20 3e 20 30 29 20 7b 0a (attack > 0) {.
21f40 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
21f50 73 2e 5f 73 69 67 2e 73 65 74 52 61 6d 70 50 6f s._sig.setRampPo
21f60 69 6e 74 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 int(time);..
21f70 20 20 20 20 20 20 20 20 76 61 72 20 63 75 72 76 var curv
21f80 65 20 3d 20 74 68 69 73 2e 5f 61 74 74 61 63 6b e = this._attack
21f90 43 75 72 76 65 3b 0a 09 20 20 20 20 20 20 20 20 Curve;..
21fa0 20 20 20 20 2f 2f 74 61 6b 65 20 6f 6e 6c 79 20 //take only
21fb0 61 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 a portion of the
21fc0 20 63 75 72 76 65 0a 09 20 20 20 20 20 20 20 20 curve..
21fd0 20 20 20 20 69 66 20 28 61 74 74 61 63 6b 20 3c if (attack <
21fe0 20 6f 72 69 67 69 6e 61 6c 41 74 74 61 63 6b 29 originalAttack)
21ff0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
22000 20 20 20 20 76 61 72 20 70 65 72 63 65 6e 74 43 var percentC
22010 6f 6d 70 6c 65 74 65 20 3d 20 31 20 2d 20 61 74 omplete = 1 - at
22020 74 61 63 6b 20 2f 20 6f 72 69 67 69 6e 61 6c 41 tack / originalA
22030 74 74 61 63 6b 3b 0a 09 20 20 20 20 20 20 20 20 ttack;..
22040 20 20 20 20 20 20 20 20 76 61 72 20 73 6c 69 63 var slic
22050 65 49 6e 64 65 78 20 3d 20 4d 61 74 68 2e 66 6c eIndex = Math.fl
22060 6f 6f 72 28 70 65 72 63 65 6e 74 43 6f 6d 70 6c oor(percentCompl
22070 65 74 65 20 2a 20 74 68 69 73 2e 5f 61 74 74 61 ete * this._atta
22080 63 6b 43 75 72 76 65 2e 6c 65 6e 67 74 68 29 3b ckCurve.length);
22090 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
220a0 20 20 63 75 72 76 65 20 3d 20 74 68 69 73 2e 5f curve = this._
220b0 61 74 74 61 63 6b 43 75 72 76 65 2e 73 6c 69 63 attackCurve.slic
220c0 65 28 73 6c 69 63 65 49 6e 64 65 78 29 3b 0a 09 e(sliceIndex);..
220d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
220e0 2f 2f 74 68 65 20 66 69 72 73 74 20 69 6e 64 65 //the first inde
220f0 78 20 69 73 20 74 68 65 20 63 75 72 72 65 6e 74 x is the current
22100 20 76 61 6c 75 65 0a 09 20 20 20 20 20 20 20 20 value..
22110 20 20 20 20 20 20 20 20 63 75 72 76 65 5b 30 5d curve[0]
22120 20 3d 20 63 75 72 72 65 6e 74 56 61 6c 75 65 3b = currentValue;
22130 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
22140 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
22150 73 2e 5f 73 69 67 2e 73 65 74 56 61 6c 75 65 43 s._sig.setValueC
22160 75 72 76 65 41 74 54 69 6d 65 28 63 75 72 76 65 urveAtTime(curve
22170 2c 20 74 69 6d 65 2c 20 61 74 74 61 63 6b 2c 20 , time, attack,
22180 76 65 6c 6f 63 69 74 79 29 3b 0a 09 20 20 20 20 velocity);..
22190 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 2f }.. /
221a0 2f 64 65 63 61 79 0a 09 20 20 20 20 20 20 20 20 /decay..
221b0 74 68 69 73 2e 5f 73 69 67 2e 65 78 70 6f 6e 65 this._sig.expone
221c0 6e 74 69 61 6c 52 61 6d 70 54 6f 56 61 6c 75 65 ntialRampToValue
221d0 28 76 65 6c 6f 63 69 74 79 20 2a 20 74 68 69 73 (velocity * this
221e0 2e 73 75 73 74 61 69 6e 2c 20 64 65 63 61 79 2c .sustain, decay,
221f0 20 61 74 74 61 63 6b 20 2b 20 74 69 6d 65 29 3b attack + time);
22200 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
22210 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
22220 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 72 /**... * Tr
22230 69 67 67 65 72 73 20 74 68 65 20 72 65 6c 65 61 iggers the relea
22240 73 65 20 6f 66 20 74 68 65 20 65 6e 76 65 6c 6f se of the envelo
22250 70 65 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d pe.... * @param
22260 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e {Time} [time=n
22270 6f 77 5d 20 57 68 65 6e 20 74 68 65 20 72 65 6c ow] When the rel
22280 65 61 73 65 20 70 6f 72 74 69 6f 6e 20 6f 66 20 ease portion of
22290 74 68 65 20 65 6e 76 65 6c 6f 70 65 20 73 68 6f the envelope sho
222a0 75 6c 64 20 73 74 61 72 74 2e 20 0a 09 09 20 2a uld start. ... *
222b0 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
222c0 2e 45 6e 76 65 6c 6f 70 65 7d 20 74 68 69 73 0a .Envelope} this.
222d0 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
222e0 09 20 2a 20 20 2f 2f 74 72 69 67 67 65 72 20 72 . * //trigger r
222f0 65 6c 65 61 73 65 20 69 6d 6d 65 64 69 61 74 65 elease immediate
22300 6c 79 0a 09 09 20 2a 20 20 65 6e 76 2e 74 72 69 ly... * env.tri
22310 67 67 65 72 52 65 6c 65 61 73 65 28 29 3b 0a 09 ggerRelease();..
22320 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 . */.. Tone.E
22330 6e 76 65 6c 6f 70 65 2e 70 72 6f 74 6f 74 79 70 nvelope.prototyp
22340 65 2e 74 72 69 67 67 65 72 52 65 6c 65 61 73 65 e.triggerRelease
22350 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d = function (tim
22360 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 69 e) {.. ti
22370 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f me = this.toSeco
22380 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 nds(time);..
22390 20 20 20 20 76 61 72 20 63 75 72 72 65 6e 74 56 var currentV
223a0 61 6c 75 65 20 3d 20 74 68 69 73 2e 67 65 74 56 alue = this.getV
223b0 61 6c 75 65 41 74 54 69 6d 65 28 74 69 6d 65 29 alueAtTime(time)
223c0 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 63 ;.. if (c
223d0 75 72 72 65 6e 74 56 61 6c 75 65 20 3e 20 30 29 urrentValue > 0)
223e0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
223f0 76 61 72 20 72 65 6c 65 61 73 65 20 3d 20 74 68 var release = th
22400 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 68 69 is.toSeconds(thi
22410 73 2e 72 65 6c 65 61 73 65 29 3b 0a 09 20 20 20 s.release);..
22420 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 if (thi
22430 73 2e 5f 72 65 6c 65 61 73 65 43 75 72 76 65 20 s._releaseCurve
22440 3d 3d 3d 20 27 6c 69 6e 65 61 72 27 29 20 7b 0a === 'linear') {.
22450 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
22460 20 74 68 69 73 2e 5f 73 69 67 2e 6c 69 6e 65 61 this._sig.linea
22470 72 52 61 6d 70 54 6f 56 61 6c 75 65 28 30 2c 20 rRampToValue(0,
22480 72 65 6c 65 61 73 65 2c 20 74 69 6d 65 29 3b 0a release, time);.
22490 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
224a0 6c 73 65 20 69 66 20 28 74 68 69 73 2e 5f 72 65 lse if (this._re
224b0 6c 65 61 73 65 43 75 72 76 65 20 3d 3d 3d 20 27 leaseCurve === '
224c0 65 78 70 6f 6e 65 6e 74 69 61 6c 27 29 20 7b 0a exponential') {.
224d0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
224e0 20 74 68 69 73 2e 5f 73 69 67 2e 65 78 70 6f 6e this._sig.expon
224f0 65 6e 74 69 61 6c 52 61 6d 70 54 6f 56 61 6c 75 entialRampToValu
22500 65 28 30 2c 20 72 65 6c 65 61 73 65 2c 20 74 69 e(0, release, ti
22510 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 me);..
22520 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 } else {..
22530 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
22540 63 75 72 76 65 20 3d 20 74 68 69 73 2e 5f 72 65 curve = this._re
22550 6c 65 61 73 65 43 75 72 76 65 3b 0a 09 20 20 20 leaseCurve;..
22560 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
22570 28 74 68 69 73 2e 69 73 41 72 72 61 79 28 63 75 (this.isArray(cu
22580 72 76 65 29 29 20 7b 0a 09 20 20 20 20 20 20 20 rve)) {..
22590 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
225a0 73 2e 5f 73 69 67 2e 73 65 74 52 61 6d 70 50 6f s._sig.setRampPo
225b0 69 6e 74 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 int(time);..
225c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
225d0 74 68 69 73 2e 5f 73 69 67 2e 73 65 74 56 61 6c this._sig.setVal
225e0 75 65 43 75 72 76 65 41 74 54 69 6d 65 28 63 75 ueCurveAtTime(cu
225f0 72 76 65 2c 20 74 69 6d 65 2c 20 72 65 6c 65 61 rve, time, relea
22600 73 65 2c 20 63 75 72 72 65 6e 74 56 61 6c 75 65 se, currentValue
22610 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
22620 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
22630 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a }.. }.
22640 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
22650 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
22660 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 47 65 74 /**... * Get
22670 20 74 68 65 20 73 63 68 65 64 75 6c 65 64 20 76 the scheduled v
22680 61 6c 75 65 20 61 74 20 74 68 65 20 67 69 76 65 alue at the give
22690 6e 20 74 69 6d 65 2e 20 54 68 69 73 20 77 69 6c n time. This wil
226a0 6c 0a 09 09 20 2a 20 20 72 65 74 75 72 6e 20 74 l... * return t
226b0 68 65 20 75 6e 63 6f 6e 76 65 72 74 65 64 20 28 he unconverted (
226c0 72 61 77 29 20 76 61 6c 75 65 2e 0a 09 09 20 2a raw) value.... *
226d0 20 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 @param {Numbe
226e0 72 7d 20 20 74 69 6d 65 20 20 54 68 65 20 74 69 r} time The ti
226f0 6d 65 20 69 6e 20 73 65 63 6f 6e 64 73 2e 0a 09 me in seconds...
22700 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 4e . * @return {N
22710 75 6d 62 65 72 7d 20 20 54 68 65 20 73 63 68 65 umber} The sche
22720 64 75 6c 65 64 20 76 61 6c 75 65 20 61 74 20 74 duled value at t
22730 68 65 20 67 69 76 65 6e 20 74 69 6d 65 2e 0a 09 he given time...
22740 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 . */.. Tone.E
22750 6e 76 65 6c 6f 70 65 2e 70 72 6f 74 6f 74 79 70 nvelope.prototyp
22760 65 2e 67 65 74 56 61 6c 75 65 41 74 54 69 6d 65 e.getValueAtTime
22770 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d = function (tim
22780 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 e) {.. re
22790 74 75 72 6e 20 74 68 69 73 2e 5f 73 69 67 2e 67 turn this._sig.g
227a0 65 74 56 61 6c 75 65 41 74 54 69 6d 65 28 74 69 etValueAtTime(ti
227b0 6d 65 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 me);.. };..
227c0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 72 69 67 /**... * trig
227d0 67 65 72 41 74 74 61 63 6b 52 65 6c 65 61 73 65 gerAttackRelease
227e0 20 69 73 20 73 68 6f 72 74 68 61 6e 64 20 66 6f is shorthand fo
227f0 72 20 74 72 69 67 67 65 72 41 74 74 61 63 6b 2c r triggerAttack,
22800 20 74 68 65 6e 20 77 61 69 74 69 6e 67 0a 09 09 then waiting...
22810 20 2a 20 20 73 6f 6d 65 20 64 75 72 61 74 69 6f * some duratio
22820 6e 2c 20 74 68 65 6e 20 74 72 69 67 67 65 72 52 n, then triggerR
22830 65 6c 65 61 73 65 2e 20 0a 09 09 20 2a 20 20 40 elease. ... * @
22840 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 64 75 72 param {Time} dur
22850 61 74 69 6f 6e 20 54 68 65 20 64 75 72 61 74 69 ation The durati
22860 6f 6e 20 6f 66 20 74 68 65 20 73 75 73 74 61 69 on of the sustai
22870 6e 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 n.... * @param
22880 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 {Time} [time=now
22890 5d 20 57 68 65 6e 20 74 68 65 20 61 74 74 61 63 ] When the attac
228a0 6b 20 73 68 6f 75 6c 64 20 62 65 20 74 72 69 67 k should be trig
228b0 67 65 72 65 64 2e 0a 09 09 20 2a 20 20 40 70 61 gered.... * @pa
228c0 72 61 6d 20 7b 6e 75 6d 62 65 72 7d 20 5b 76 65 ram {number} [ve
228d0 6c 6f 63 69 74 79 3d 31 5d 20 54 68 65 20 76 65 locity=1] The ve
228e0 6c 6f 63 69 74 79 20 6f 66 20 74 68 65 20 65 6e locity of the en
228f0 76 65 6c 6f 70 65 2e 20 0a 09 09 20 2a 20 20 40 velope. ... * @
22900 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 45 6e returns {Tone.En
22910 76 65 6c 6f 70 65 7d 20 74 68 69 73 0a 09 09 20 velope} this...
22920 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
22930 20 2f 2f 74 72 69 67 67 65 72 20 74 68 65 20 61 //trigger the a
22940 74 74 61 63 6b 20 61 6e 64 20 74 68 65 6e 20 74 ttack and then t
22950 68 65 20 72 65 6c 65 61 73 65 20 61 66 74 65 72 he release after
22960 20 30 2e 36 20 73 65 63 6f 6e 64 73 2e 0a 09 09 0.6 seconds....
22970 20 2a 20 65 6e 76 2e 74 72 69 67 67 65 72 41 74 * env.triggerAt
22980 74 61 63 6b 52 65 6c 65 61 73 65 28 30 2e 36 29 tackRelease(0.6)
22990 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e ;... */.. Ton
229a0 65 2e 45 6e 76 65 6c 6f 70 65 2e 70 72 6f 74 6f e.Envelope.proto
229b0 74 79 70 65 2e 74 72 69 67 67 65 72 41 74 74 61 type.triggerAtta
229c0 63 6b 52 65 6c 65 61 73 65 20 3d 20 66 75 6e 63 ckRelease = func
229d0 74 69 6f 6e 20 28 64 75 72 61 74 69 6f 6e 2c 20 tion (duration,
229e0 74 69 6d 65 2c 20 76 65 6c 6f 63 69 74 79 29 20 time, velocity)
229f0 7b 0a 09 20 20 20 20 20 20 20 20 74 69 6d 65 20 {.. time
22a00 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 = this.toSeconds
22a10 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 (time);..
22a20 20 74 68 69 73 2e 74 72 69 67 67 65 72 41 74 74 this.triggerAtt
22a30 61 63 6b 28 74 69 6d 65 2c 20 76 65 6c 6f 63 69 ack(time, veloci
22a40 74 79 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ty);.. th
22a50 69 73 2e 74 72 69 67 67 65 72 52 65 6c 65 61 73 is.triggerReleas
22a60 65 28 74 69 6d 65 20 2b 20 74 68 69 73 2e 74 6f e(time + this.to
22a70 53 65 63 6f 6e 64 73 28 64 75 72 61 74 69 6f 6e Seconds(duration
22a80 29 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ));.. ret
22a90 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
22aa0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
22ab0 20 43 61 6e 63 65 6c 73 20 61 6c 6c 20 73 63 68 Cancels all sch
22ac0 65 64 75 6c 65 64 20 65 6e 76 65 6c 6f 70 65 20 eduled envelope
22ad0 63 68 61 6e 67 65 73 20 61 66 74 65 72 20 74 68 changes after th
22ae0 65 20 67 69 76 65 6e 20 74 69 6d 65 2e 0a 09 09 e given time....
22af0 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d * @param {Tim
22b00 65 7d 20 61 66 74 65 72 0a 09 09 20 2a 20 20 40 e} after... * @
22b10 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 45 6e returns {Tone.En
22b20 76 65 6c 6f 70 65 7d 20 74 68 69 73 0a 09 09 20 velope} this...
22b30 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 6e 76 */.. Tone.Env
22b40 65 6c 6f 70 65 2e 70 72 6f 74 6f 74 79 70 65 2e elope.prototype.
22b50 63 61 6e 63 65 6c 20 3d 20 66 75 6e 63 74 69 6f cancel = functio
22b60 6e 20 28 61 66 74 65 72 29 20 7b 0a 09 20 20 20 n (after) {..
22b70 20 20 20 20 20 74 68 69 73 2e 5f 73 69 67 2e 63 this._sig.c
22b80 61 6e 63 65 6c 53 63 68 65 64 75 6c 65 64 56 61 ancelScheduledVa
22b90 6c 75 65 73 28 61 66 74 65 72 29 3b 0a 09 20 20 lues(after);..
22ba0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
22bb0 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
22bc0 2f 2a 2a 0a 09 09 20 2a 20 20 42 6f 72 72 6f 77 /**... * Borrow
22bd0 73 20 74 68 65 20 63 6f 6e 6e 65 63 74 20 6d 65 s the connect me
22be0 74 68 6f 64 20 66 72 6f 6d 20 54 6f 6e 65 2e 53 thod from Tone.S
22bf0 69 67 6e 61 6c 2e 20 0a 09 09 20 2a 20 20 40 66 ignal. ... * @f
22c00 75 6e 63 74 69 6f 6e 0a 09 09 20 2a 20 20 40 70 unction... * @p
22c10 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 rivate... */..
22c20 20 20 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 2e Tone.Envelope.
22c30 70 72 6f 74 6f 74 79 70 65 2e 63 6f 6e 6e 65 63 prototype.connec
22c40 74 20 3d 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 2e t = Tone.Signal.
22c50 70 72 6f 74 6f 74 79 70 65 2e 63 6f 6e 6e 65 63 prototype.connec
22c60 74 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 20 09 20 t;.. /**.. .
22c70 2a 20 20 47 65 6e 65 72 61 74 65 20 73 6f 6d 65 * Generate some
22c80 20 63 6f 6d 70 6c 65 78 20 65 6e 76 65 6c 6f 70 complex envelop
22c90 65 20 63 75 72 76 65 73 2e 20 0a 09 20 09 20 2a e curves. .. . *
22ca0 2f 0a 09 20 20 20 20 28 66 75 6e 63 74 69 6f 6e /.. (function
22cb0 20 5f 63 72 65 61 74 65 43 75 72 76 65 73 28 29 _createCurves()
22cc0 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
22cd0 63 75 72 76 65 4c 65 6e 20 3d 20 31 32 38 3b 0a curveLen = 128;.
22ce0 09 20 20 20 20 20 20 20 20 76 61 72 20 69 2c 20 . var i,
22cf0 6b 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 6f k;.. //co
22d00 73 69 6e 65 20 63 75 72 76 65 0a 09 20 20 20 20 sine curve..
22d10 20 20 20 20 76 61 72 20 63 6f 73 69 6e 65 43 75 var cosineCu
22d20 72 76 65 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 rve = [];..
22d30 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 for (i = 0; i
22d40 20 3c 20 63 75 72 76 65 4c 65 6e 3b 20 69 2b 2b < curveLen; i++
22d50 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
22d60 20 63 6f 73 69 6e 65 43 75 72 76 65 5b 69 5d 20 cosineCurve[i]
22d70 3d 20 4d 61 74 68 2e 73 69 6e 28 69 20 2f 20 28 = Math.sin(i / (
22d80 63 75 72 76 65 4c 65 6e 20 2d 20 31 29 20 2a 20 curveLen - 1) *
22d90 28 4d 61 74 68 2e 50 49 20 2f 20 32 29 29 3b 0a (Math.PI / 2));.
22da0 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
22db0 20 20 20 20 2f 2f 72 69 70 70 6c 65 20 63 75 72 //ripple cur
22dc0 76 65 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 ve.. var
22dd0 72 69 70 70 6c 65 43 75 72 76 65 20 3d 20 5b 5d rippleCurve = []
22de0 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 72 ;.. var r
22df0 69 70 70 6c 65 43 75 72 76 65 46 72 65 71 20 3d ippleCurveFreq =
22e00 20 36 2e 34 3b 0a 09 20 20 20 20 20 20 20 20 66 6.4;.. f
22e10 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 63 or (i = 0; i < c
22e20 75 72 76 65 4c 65 6e 20 2d 20 31 3b 20 69 2b 2b urveLen - 1; i++
22e30 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
22e40 20 6b 20 3d 20 69 20 2f 20 28 63 75 72 76 65 4c k = i / (curveL
22e50 65 6e 20 2d 20 31 29 3b 0a 09 20 20 20 20 20 20 en - 1);..
22e60 20 20 20 20 20 20 76 61 72 20 73 69 6e 65 57 61 var sineWa
22e70 76 65 20 3d 20 4d 61 74 68 2e 73 69 6e 28 6b 20 ve = Math.sin(k
22e80 2a 20 28 4d 61 74 68 2e 50 49 20 2a 20 32 29 20 * (Math.PI * 2)
22e90 2a 20 72 69 70 70 6c 65 43 75 72 76 65 46 72 65 * rippleCurveFre
22ea0 71 20 2d 20 4d 61 74 68 2e 50 49 20 2f 20 32 29 q - Math.PI / 2)
22eb0 20 2b 20 31 3b 0a 09 20 20 20 20 20 20 20 20 20 + 1;..
22ec0 20 20 20 72 69 70 70 6c 65 43 75 72 76 65 5b 69 rippleCurve[i
22ed0 5d 20 3d 20 73 69 6e 65 57 61 76 65 20 2f 20 31 ] = sineWave / 1
22ee0 30 20 2b 20 6b 20 2a 20 30 2e 38 33 3b 0a 09 20 0 + k * 0.83;..
22ef0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
22f00 20 20 72 69 70 70 6c 65 43 75 72 76 65 5b 63 75 rippleCurve[cu
22f10 72 76 65 4c 65 6e 20 2d 20 31 5d 20 3d 20 31 3b rveLen - 1] = 1;
22f20 0a 09 20 20 20 20 20 20 20 20 2f 2f 73 74 61 69 .. //stai
22f30 72 73 20 63 75 72 76 65 0a 09 20 20 20 20 20 20 rs curve..
22f40 20 20 76 61 72 20 73 74 61 69 72 73 43 75 72 76 var stairsCurv
22f50 65 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 20 20 e = [];..
22f60 20 76 61 72 20 73 74 65 70 73 20 3d 20 35 3b 0a var steps = 5;.
22f70 09 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 20 . for (i
22f80 3d 20 30 3b 20 69 20 3c 20 63 75 72 76 65 4c 65 = 0; i < curveLe
22f90 6e 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 n; i++) {..
22fa0 20 20 20 20 20 20 20 73 74 61 69 72 73 43 75 72 stairsCur
22fb0 76 65 5b 69 5d 20 3d 20 4d 61 74 68 2e 63 65 69 ve[i] = Math.cei
22fc0 6c 28 69 20 2f 20 28 63 75 72 76 65 4c 65 6e 20 l(i / (curveLen
22fd0 2d 20 31 29 20 2a 20 73 74 65 70 73 29 20 2f 20 - 1) * steps) /
22fe0 73 74 65 70 73 3b 0a 09 20 20 20 20 20 20 20 20 steps;..
22ff0 7d 0a 09 20 20 20 20 20 20 20 20 2f 2f 69 6e 2d }.. //in-
23000 6f 75 74 20 65 61 73 69 6e 67 20 63 75 72 76 65 out easing curve
23010 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 73 69 .. var si
23020 6e 65 43 75 72 76 65 20 3d 20 5b 5d 3b 0a 09 20 neCurve = [];..
23030 20 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20 for (i =
23040 30 3b 20 69 20 3c 20 63 75 72 76 65 4c 65 6e 3b 0; i < curveLen;
23050 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 i++) {..
23060 20 20 20 20 20 6b 20 3d 20 69 20 2f 20 28 63 75 k = i / (cu
23070 72 76 65 4c 65 6e 20 2d 20 31 29 3b 0a 09 20 20 rveLen - 1);..
23080 20 20 20 20 20 20 20 20 20 20 73 69 6e 65 43 75 sineCu
23090 72 76 65 5b 69 5d 20 3d 20 30 2e 35 20 2a 20 28 rve[i] = 0.5 * (
230a0 31 20 2d 20 4d 61 74 68 2e 63 6f 73 28 4d 61 74 1 - Math.cos(Mat
230b0 68 2e 50 49 20 2a 20 6b 29 29 3b 0a 09 20 20 20 h.PI * k));..
230c0 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
230d0 2f 2f 61 20 62 6f 75 6e 63 65 20 63 75 72 76 65 //a bounce curve
230e0 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 62 6f .. var bo
230f0 75 6e 63 65 43 75 72 76 65 20 3d 20 5b 5d 3b 0a unceCurve = [];.
23100 09 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 20 . for (i
23110 3d 20 30 3b 20 69 20 3c 20 63 75 72 76 65 4c 65 = 0; i < curveLe
23120 6e 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 n; i++) {..
23130 20 20 20 20 20 20 20 6b 20 3d 20 69 20 2f 20 28 k = i / (
23140 63 75 72 76 65 4c 65 6e 20 2d 20 31 29 3b 0a 09 curveLen - 1);..
23150 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
23160 66 72 65 71 20 3d 20 4d 61 74 68 2e 70 6f 77 28 freq = Math.pow(
23170 6b 2c 20 33 29 20 2a 20 34 20 2b 20 30 2e 32 3b k, 3) * 4 + 0.2;
23180 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
23190 72 20 76 61 6c 20 3d 20 4d 61 74 68 2e 63 6f 73 r val = Math.cos
231a0 28 66 72 65 71 20 2a 20 4d 61 74 68 2e 50 49 20 (freq * Math.PI
231b0 2a 20 32 20 2a 20 6b 29 3b 0a 09 20 20 20 20 20 * 2 * k);..
231c0 20 20 20 20 20 20 20 62 6f 75 6e 63 65 43 75 72 bounceCur
231d0 76 65 5b 69 5d 20 3d 20 4d 61 74 68 2e 61 62 73 ve[i] = Math.abs
231e0 28 76 61 6c 20 2a 20 28 31 20 2d 20 6b 29 29 3b (val * (1 - k));
231f0 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
23200 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
23210 49 6e 76 65 72 74 20 61 20 76 61 6c 75 65 20 63 Invert a value c
23220 75 72 76 65 20 74 6f 20 6d 61 6b 65 20 69 74 20 urve to make it
23230 77 6f 72 6b 20 66 6f 72 20 74 68 65 20 72 65 6c work for the rel
23240 65 61 73 65 0a 09 09 09 20 2a 20 20 40 70 72 69 ease.... * @pri
23250 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
23260 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 6e function in
23270 76 65 72 74 43 75 72 76 65 28 63 75 72 76 65 29 vertCurve(curve)
23280 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
23290 76 61 72 20 6f 75 74 20 3d 20 6e 65 77 20 41 72 var out = new Ar
232a0 72 61 79 28 63 75 72 76 65 2e 6c 65 6e 67 74 68 ray(curve.length
232b0 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
232c0 66 6f 72 20 28 76 61 72 20 6a 20 3d 20 30 3b 20 for (var j = 0;
232d0 6a 20 3c 20 63 75 72 76 65 2e 6c 65 6e 67 74 68 j < curve.length
232e0 3b 20 6a 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 ; j++) {..
232f0 20 20 20 20 20 20 20 20 20 20 6f 75 74 5b 6a 5d out[j]
23300 20 3d 20 31 20 2d 20 63 75 72 76 65 5b 6a 5d 3b = 1 - curve[j];
23310 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
23320 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
23330 75 72 6e 20 6f 75 74 3b 0a 09 20 20 20 20 20 20 urn out;..
23340 20 20 7d 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a }.. /**
23350 0a 09 09 09 20 2a 20 20 72 65 76 65 72 73 65 20 .... * reverse
23360 74 68 65 20 63 75 72 76 65 0a 09 09 09 20 2a 20 the curve.... *
23370 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
23380 0a 09 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 .. functi
23390 6f 6e 20 72 65 76 65 72 73 65 43 75 72 76 65 28 on reverseCurve(
233a0 63 75 72 76 65 29 20 7b 0a 09 20 20 20 20 20 20 curve) {..
233b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 75 72 return cur
233c0 76 65 2e 73 6c 69 63 65 28 30 29 2e 72 65 76 65 ve.slice(0).reve
233d0 72 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 rse();..
233e0 7d 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 }.. /**..
233f0 09 09 20 2a 20 20 61 74 74 61 63 6b 20 61 6e 64 .. * attack and
23400 20 72 65 6c 65 61 73 65 20 63 75 72 76 65 20 61 release curve a
23410 72 72 61 79 73 0a 09 09 09 20 2a 20 20 40 74 79 rrays.... * @ty
23420 70 65 20 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 09 pe {Object}....
23430 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
23440 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 54 6f 6e */.. Ton
23450 65 2e 45 6e 76 65 6c 6f 70 65 2e 54 79 70 65 20 e.Envelope.Type
23460 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 = {..
23470 20 27 6c 69 6e 65 61 72 27 3a 20 27 6c 69 6e 65 'linear': 'line
23480 61 72 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 ar',..
23490 20 20 27 65 78 70 6f 6e 65 6e 74 69 61 6c 27 3a 'exponential':
234a0 20 27 65 78 70 6f 6e 65 6e 74 69 61 6c 27 2c 0a 'exponential',.
234b0 09 20 20 20 20 20 20 20 20 20 20 20 20 27 62 6f . 'bo
234c0 75 6e 63 65 27 3a 20 7b 0a 09 20 20 20 20 20 20 unce': {..
234d0 20 20 20 20 20 20 20 20 20 20 49 6e 3a 20 69 6e In: in
234e0 76 65 72 74 43 75 72 76 65 28 62 6f 75 6e 63 65 vertCurve(bounce
234f0 43 75 72 76 65 29 2c 0a 09 20 20 20 20 20 20 20 Curve),..
23500 20 20 20 20 20 20 20 20 20 4f 75 74 3a 20 62 6f Out: bo
23510 75 6e 63 65 43 75 72 76 65 0a 09 20 20 20 20 20 unceCurve..
23520 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 },..
23530 20 20 20 20 20 20 20 27 63 6f 73 69 6e 65 27 3a 'cosine':
23540 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
23550 20 20 20 20 49 6e 3a 20 63 6f 73 69 6e 65 43 75 In: cosineCu
23560 72 76 65 2c 0a 09 20 20 20 20 20 20 20 20 20 20 rve,..
23570 20 20 20 20 20 20 4f 75 74 3a 20 72 65 76 65 72 Out: rever
23580 73 65 43 75 72 76 65 28 63 6f 73 69 6e 65 43 75 seCurve(cosineCu
23590 72 76 65 29 0a 09 20 20 20 20 20 20 20 20 20 20 rve)..
235a0 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 20 20 },..
235b0 20 20 27 73 74 65 70 27 3a 20 7b 0a 09 20 20 20 'step': {..
235c0 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 3a In:
235d0 20 73 74 61 69 72 73 43 75 72 76 65 2c 0a 09 20 stairsCurve,..
235e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4f O
235f0 75 74 3a 20 69 6e 76 65 72 74 43 75 72 76 65 28 ut: invertCurve(
23600 73 74 61 69 72 73 43 75 72 76 65 29 0a 09 20 20 stairsCurve)..
23610 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 },..
23620 20 20 20 20 20 20 20 20 20 20 27 72 69 70 70 6c 'rippl
23630 65 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 e': {..
23640 20 20 20 20 20 20 20 49 6e 3a 20 72 69 70 70 6c In: rippl
23650 65 43 75 72 76 65 2c 0a 09 20 20 20 20 20 20 20 eCurve,..
23660 20 20 20 20 20 20 20 20 20 4f 75 74 3a 20 69 6e Out: in
23670 76 65 72 74 43 75 72 76 65 28 72 69 70 70 6c 65 vertCurve(ripple
23680 43 75 72 76 65 29 0a 09 20 20 20 20 20 20 20 20 Curve)..
23690 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
236a0 20 20 20 20 27 73 69 6e 65 27 3a 20 7b 0a 09 20 'sine': {..
236b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 I
236c0 6e 3a 20 73 69 6e 65 43 75 72 76 65 2c 0a 09 20 n: sineCurve,..
236d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4f O
236e0 75 74 3a 20 69 6e 76 65 72 74 43 75 72 76 65 28 ut: invertCurve(
236f0 73 69 6e 65 43 75 72 76 65 29 0a 09 20 20 20 20 sineCurve)..
23700 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
23710 20 20 20 7d 3b 0a 09 20 20 20 20 7d 28 29 29 3b };.. }());
23720 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
23730 44 69 73 63 6f 6e 6e 65 63 74 20 61 6e 64 20 64 Disconnect and d
23740 69 73 70 6f 73 65 2e 0a 09 09 20 2a 20 20 40 72 ispose.... * @r
23750 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 45 6e 76 eturns {Tone.Env
23760 65 6c 6f 70 65 7d 20 74 68 69 73 0a 09 09 20 2a elope} this... *
23770 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 6e 76 65 /.. Tone.Enve
23780 6c 6f 70 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 lope.prototype.d
23790 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f ispose = functio
237a0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
237b0 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 Tone.prototype.d
237c0 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 ispose.call(this
237d0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
237e0 2e 5f 73 69 67 2e 64 69 73 70 6f 73 65 28 29 3b ._sig.dispose();
237f0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
23800 73 69 67 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 sig = null;..
23810 20 20 20 20 20 74 68 69 73 2e 5f 61 74 74 61 63 this._attac
23820 6b 43 75 72 76 65 20 3d 20 6e 75 6c 6c 3b 0a 09 kCurve = null;..
23830 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 this._re
23840 6c 65 61 73 65 43 75 72 76 65 20 3d 20 6e 75 6c leaseCurve = nul
23850 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 l;.. retu
23860 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
23870 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e .. return Ton
23880 65 2e 45 6e 76 65 6c 6f 70 65 3b 0a 09 7d 29 3b e.Envelope;..});
23890 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f ..Module(functio
238a0 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 n (Tone) {..
238b0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
238c0 40 63 6c 61 73 73 20 20 54 6f 6e 65 2e 41 6d 70 @class Tone.Amp
238d0 6c 69 74 75 64 65 45 6e 76 65 6c 6f 70 65 20 69 litudeEnvelope i
238e0 73 20 61 20 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 s a Tone.Envelop
238f0 65 20 63 6f 6e 6e 65 63 74 65 64 20 74 6f 20 61 e connected to a
23900 20 67 61 69 6e 20 6e 6f 64 65 2e 20 0a 09 09 20 gain node. ...
23910 2a 20 20 20 20 20 20 20 20 20 20 55 6e 6c 69 6b * Unlik
23920 65 20 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 2c e Tone.Envelope,
23930 20 77 68 69 63 68 20 6f 75 74 70 75 74 73 20 74 which outputs t
23940 68 65 20 65 6e 76 65 6c 6f 70 65 27 73 20 76 61 he envelope's va
23950 6c 75 65 2c 20 54 6f 6e 65 2e 41 6d 70 6c 69 74 lue, Tone.Amplit
23960 75 64 65 45 6e 76 65 6c 6f 70 65 20 61 63 63 65 udeEnvelope acce
23970 70 74 73 0a 09 09 20 2a 20 20 20 20 20 20 20 20 pts... *
23980 20 20 61 6e 20 61 75 64 69 6f 20 73 69 67 6e 61 an audio signa
23990 6c 20 61 73 20 74 68 65 20 69 6e 70 75 74 20 61 l as the input a
239a0 6e 64 20 77 69 6c 6c 20 61 70 70 6c 79 20 74 68 nd will apply th
239b0 65 20 65 6e 76 65 6c 6f 70 65 20 74 6f 20 74 68 e envelope to th
239c0 65 20 61 6d 70 6c 69 74 75 64 65 0a 09 09 20 2a e amplitude... *
239d0 20 20 20 20 20 20 20 20 20 20 6f 66 20 74 68 65 of the
239e0 20 73 69 67 6e 61 6c 2e 20 52 65 61 64 20 6d 6f signal. Read mo
239f0 72 65 20 61 62 6f 75 74 20 41 44 53 52 20 45 6e re about ADSR En
23a00 76 65 6c 6f 70 65 73 20 6f 6e 20 5b 57 69 6b 69 velopes on [Wiki
23a10 70 65 64 69 61 5d 28 68 74 74 70 73 3a 2f 2f 65 pedia](https://e
23a20 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f n.wikipedia.org/
23a30 77 69 6b 69 2f 53 79 6e 74 68 65 73 69 7a 65 72 wiki/Synthesizer
23a40 23 41 44 53 52 5f 65 6e 76 65 6c 6f 70 65 29 2e #ADSR_envelope).
23a50 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 63 ... * ... * @c
23a60 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 onstructor... *
23a70 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e @extends {Tone.
23a80 45 6e 76 65 6c 6f 70 65 7d 0a 09 09 20 2a 20 20 Envelope}... *
23a90 40 70 61 72 61 6d 20 7b 54 69 6d 65 7c 4f 62 6a @param {Time|Obj
23aa0 65 63 74 7d 20 5b 61 74 74 61 63 6b 5d 20 54 68 ect} [attack] Th
23ab0 65 20 61 6d 6f 75 6e 74 20 6f 66 20 74 69 6d 65 e amount of time
23ac0 20 69 74 20 74 61 6b 65 73 20 66 6f 72 20 74 68 it takes for th
23ad0 65 20 65 6e 76 65 6c 6f 70 65 20 74 6f 20 67 6f e envelope to go
23ae0 20 66 72 6f 6d 20 0a 09 09 20 2a 20 20 20 20 20 from ... *
23af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23b00 20 20 20 20 20 20 20 20 20 20 30 20 74 6f 20 69 0 to i
23b10 74 27 73 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 t's maximum valu
23b20 65 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d e. ... * @param
23b30 20 7b 54 69 6d 65 7d 20 5b 64 65 63 61 79 5d 09 {Time} [decay].
23b40 54 68 65 20 70 65 72 69 6f 64 20 6f 66 20 74 69 The period of ti
23b50 6d 65 20 61 66 74 65 72 20 74 68 65 20 61 74 74 me after the att
23b60 61 63 6b 20 74 68 61 74 20 69 74 20 74 61 6b 65 ack that it take
23b70 73 20 66 6f 72 20 74 68 65 20 65 6e 76 65 6c 6f s for the envelo
23b80 70 65 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 pe... *
23b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 74 .t
23ba0 6f 20 66 61 6c 6c 20 74 6f 20 74 68 65 20 73 75 o fall to the su
23bb0 73 74 61 69 6e 20 76 61 6c 75 65 2e 20 0a 09 09 stain value. ...
23bc0 20 2a 20 20 40 70 61 72 61 6d 20 7b 4e 6f 72 6d * @param {Norm
23bd0 61 6c 52 61 6e 67 65 7d 20 5b 73 75 73 74 61 69 alRange} [sustai
23be0 6e 5d 09 54 68 65 20 70 65 72 63 65 6e 74 20 6f n].The percent o
23bf0 66 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 f the maximum va
23c00 6c 75 65 20 74 68 61 74 20 74 68 65 20 65 6e 76 lue that the env
23c10 65 6c 6f 70 65 20 72 65 73 74 73 20 61 74 20 75 elope rests at u
23c20 6e 74 69 6c 0a 09 09 20 2a 20 20 20 20 20 20 20 ntil... *
23c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
23c40 20 20 20 20 20 20 20 20 20 09 74 68 65 20 72 65 .the re
23c50 6c 65 61 73 65 20 69 73 20 74 72 69 67 67 65 72 lease is trigger
23c60 65 64 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 ed. ... * @para
23c70 6d 20 7b 54 69 6d 65 7d 20 5b 72 65 6c 65 61 73 m {Time} [releas
23c80 65 5d 09 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 e].The amount of
23c90 20 74 69 6d 65 20 61 66 74 65 72 20 74 68 65 20 time after the
23ca0 72 65 6c 65 61 73 65 20 69 73 20 74 72 69 67 67 release is trigg
23cb0 65 72 65 64 20 69 74 20 74 61 6b 65 73 20 74 6f ered it takes to
23cc0 20 72 65 61 63 68 20 30 2e 20 0a 09 09 20 2a 20 reach 0. ... *
23cd0 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 76 @example... * v
23ce0 61 72 20 61 6d 70 45 6e 76 20 3d 20 6e 65 77 20 ar ampEnv = new
23cf0 54 6f 6e 65 2e 41 6d 70 6c 69 74 75 64 65 45 6e Tone.AmplitudeEn
23d00 76 65 6c 6f 70 65 28 7b 0a 09 09 20 2a 20 09 22 velope({... * ."
23d10 61 74 74 61 63 6b 22 3a 20 30 2e 31 2c 0a 09 09 attack": 0.1,...
23d20 20 2a 20 09 22 64 65 63 61 79 22 3a 20 30 2e 32 * ."decay": 0.2
23d30 2c 0a 09 09 20 2a 20 09 22 73 75 73 74 61 69 6e ,... * ."sustain
23d40 22 3a 20 31 2e 30 2c 0a 09 09 20 2a 20 09 22 72 ": 1.0,... * ."r
23d50 65 6c 65 61 73 65 22 3a 20 30 2e 38 0a 09 09 20 elease": 0.8...
23d60 2a 20 7d 29 2e 74 6f 4d 61 73 74 65 72 28 29 3b * }).toMaster();
23d70 0a 09 09 20 2a 20 2f 2f 63 72 65 61 74 65 20 61 ... * //create a
23d80 6e 20 6f 73 63 69 6c 6c 61 74 6f 72 20 61 6e 64 n oscillator and
23d90 20 63 6f 6e 6e 65 63 74 20 69 74 0a 09 09 20 2a connect it... *
23da0 20 76 61 72 20 6f 73 63 20 3d 20 6e 65 77 20 54 var osc = new T
23db0 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 28 29 one.Oscillator()
23dc0 2e 63 6f 6e 6e 65 63 74 28 61 6d 70 45 6e 76 29 .connect(ampEnv)
23dd0 2e 73 74 61 72 74 28 29 3b 0a 09 09 20 2a 20 2f .start();... * /
23de0 2f 74 72 69 67 67 65 72 20 74 68 65 20 65 6e 76 /trigger the env
23df0 65 6c 6f 70 65 73 20 61 74 74 61 63 6b 20 61 6e elopes attack an
23e00 64 20 72 65 6c 65 61 73 65 20 22 38 74 22 20 61 d release "8t" a
23e10 70 61 72 74 0a 09 09 20 2a 20 61 6d 70 45 6e 76 part... * ampEnv
23e20 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b 52 65 .triggerAttackRe
23e30 6c 65 61 73 65 28 22 38 74 22 29 3b 0a 09 09 20 lease("8t");...
23e40 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 41 6d 70 */.. Tone.Amp
23e50 6c 69 74 75 64 65 45 6e 76 65 6c 6f 70 65 20 3d litudeEnvelope =
23e60 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
23e70 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 45 6e 76 Tone.Env
23e80 65 6c 6f 70 65 2e 61 70 70 6c 79 28 74 68 69 73 elope.apply(this
23e90 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b 0a 09 20 , arguments);..
23ea0 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
23eb0 20 20 74 68 65 20 69 6e 70 75 74 20 6e 6f 64 65 the input node
23ec0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 47 .... * @type {G
23ed0 61 69 6e 4e 6f 64 65 7d 0a 09 09 09 20 2a 20 20 ainNode}.... *
23ee0 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
23ef0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e . this.in
23f00 70 75 74 20 3d 20 74 68 69 73 2e 6f 75 74 70 75 put = this.outpu
23f10 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 t = new Tone.Gai
23f20 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 n();.. th
23f30 69 73 2e 5f 73 69 67 2e 63 6f 6e 6e 65 63 74 28 is._sig.connect(
23f40 74 68 69 73 2e 6f 75 74 70 75 74 2e 67 61 69 6e this.output.gain
23f50 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
23f60 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 Tone.extend(Tone
23f70 2e 41 6d 70 6c 69 74 75 64 65 45 6e 76 65 6c 6f .AmplitudeEnvelo
23f80 70 65 2c 20 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 pe, Tone.Envelop
23f90 65 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 e);.. /**...
23fa0 2a 20 20 43 6c 65 61 6e 20 75 70 0a 09 09 20 2a * Clean up... *
23fb0 20 20 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 @return {Tone
23fc0 2e 41 6d 70 6c 69 74 75 64 65 45 6e 76 65 6c 6f .AmplitudeEnvelo
23fd0 70 65 7d 20 20 74 68 69 73 0a 09 09 20 2a 2f 0a pe} this... */.
23fe0 09 20 20 20 20 54 6f 6e 65 2e 41 6d 70 6c 69 74 . Tone.Amplit
23ff0 75 64 65 45 6e 76 65 6c 6f 70 65 2e 70 72 6f 74 udeEnvelope.prot
24000 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 otype.dispose =
24010 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
24020 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 70 75 this.inpu
24030 74 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 t.dispose();..
24040 20 20 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74 this.input
24050 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
24060 20 20 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 2e Tone.Envelope.
24070 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
24080 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 e.call(this);..
24090 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
240a0 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
240b0 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 41 6d 70 return Tone.Amp
240c0 6c 69 74 75 64 65 45 6e 76 65 6c 6f 70 65 3b 0a litudeEnvelope;.
240d0 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e .});..Module(fun
240e0 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 ction (Tone) {..
240f0 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
24100 20 2a 20 20 40 63 6c 61 73 73 20 20 57 72 61 70 * @class Wrap
24110 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 6e per around the n
24120 61 74 69 76 65 20 57 65 62 20 41 75 64 69 6f 27 ative Web Audio'
24130 73 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 s ... *
24140 20 5b 41 6e 61 6c 79 73 65 72 4e 6f 64 65 5d 28 [AnalyserNode](
24150 68 74 74 70 3a 2f 2f 77 65 62 61 75 64 69 6f 2e http://webaudio.
24160 67 69 74 68 75 62 2e 69 6f 2f 77 65 62 2d 61 75 github.io/web-au
24170 64 69 6f 2d 61 70 69 2f 23 69 64 6c 2d 64 65 66 dio-api/#idl-def
24180 2d 41 6e 61 6c 79 73 65 72 4e 6f 64 65 29 2e 0a -AnalyserNode)..
24190 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 45 78 .. * Ex
241a0 74 72 61 63 74 73 20 46 46 54 20 6f 72 20 57 61 tracts FFT or Wa
241b0 76 65 66 6f 72 6d 20 64 61 74 61 20 66 72 6f 6d veform data from
241c0 20 74 68 65 20 69 6e 63 6f 6d 69 6e 67 20 73 69 the incoming si
241d0 67 6e 61 6c 2e 0a 09 09 20 2a 20 20 40 65 78 74 gnal.... * @ext
241e0 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 20 2a ends {Tone}... *
241f0 20 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e 67 @param {String
24200 3d 7d 20 74 79 70 65 20 54 68 65 20 72 65 74 75 =} type The retu
24210 72 6e 20 74 79 70 65 20 6f 66 20 74 68 65 20 61 rn type of the a
24220 6e 61 6c 79 73 69 73 2c 20 65 69 74 68 65 72 20 nalysis, either
24230 22 66 66 74 22 2c 20 6f 72 20 22 77 61 76 65 66 "fft", or "wavef
24240 6f 72 6d 22 2e 20 0a 09 09 20 2a 20 20 40 70 61 orm". ... * @pa
24250 72 61 6d 20 7b 4e 75 6d 62 65 72 3d 7d 20 73 69 ram {Number=} si
24260 7a 65 20 54 68 65 20 73 69 7a 65 20 6f 66 20 74 ze The size of t
24270 68 65 20 46 46 54 2e 20 56 61 6c 75 65 20 6d 75 he FFT. Value mu
24280 73 74 20 62 65 20 61 20 70 6f 77 65 72 20 6f 66 st be a power of
24290 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 ... *
242a0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 77 6f two
242b0 20 69 6e 20 74 68 65 20 72 61 6e 67 65 20 33 32 in the range 32
242c0 20 74 6f 20 33 32 37 36 38 2e 0a 09 09 20 2a 2f to 32768.... */
242d0 0a 09 20 20 20 20 54 6f 6e 65 2e 41 6e 61 6c 79 .. Tone.Analy
242e0 73 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ser = function (
242f0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 ) {.. var
24300 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e options = this.
24310 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 optionsObject(ar
24320 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 guments, [..
24330 20 20 20 20 20 20 20 20 27 74 79 70 65 27 2c 0a 'type',.
24340 09 20 20 20 20 20 20 20 20 20 20 20 20 27 73 69 . 'si
24350 7a 65 27 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 ze'.. ],
24360 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 2e 64 65 Tone.Analyser.de
24370 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 faults);..
24380 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
24390 20 61 6e 61 6c 79 73 65 72 20 6e 6f 64 65 2e 0a analyser node..
243a0 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
243b0 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 41 6e ... * @type {An
243c0 61 6c 79 73 65 72 4e 6f 64 65 7d 0a 09 09 09 20 alyserNode}....
243d0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
243e0 2e 5f 61 6e 61 6c 79 73 65 72 20 3d 20 74 68 69 ._analyser = thi
243f0 73 2e 69 6e 70 75 74 20 3d 20 74 68 69 73 2e 6f s.input = this.o
24400 75 74 70 75 74 20 3d 20 74 68 69 73 2e 63 6f 6e utput = this.con
24410 74 65 78 74 2e 63 72 65 61 74 65 41 6e 61 6c 79 text.createAnaly
24420 73 65 72 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ser();..
24430 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 61 /**.... * The a
24440 6e 61 6c 79 73 69 73 20 74 79 70 65 0a 09 09 09 nalysis type....
24450 20 2a 20 20 40 74 79 70 65 20 7b 53 74 72 69 6e * @type {Strin
24460 67 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 g}.... * @priva
24470 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
24480 20 20 20 74 68 69 73 2e 5f 74 79 70 65 20 3d 20 this._type =
24490 6f 70 74 69 6f 6e 73 2e 74 79 70 65 3b 0a 09 20 options.type;..
244a0 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
244b0 20 20 54 68 65 20 72 65 74 75 72 6e 20 74 79 70 The return typ
244c0 65 20 6f 66 20 74 68 65 20 61 6e 61 6c 79 73 69 e of the analysi
244d0 73 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b s.... * @type {
244e0 53 74 72 69 6e 67 7d 0a 09 09 09 20 2a 20 20 40 String}.... * @
244f0 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
24500 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 this._re
24510 74 75 72 6e 54 79 70 65 20 3d 20 6f 70 74 69 6f turnType = optio
24520 6e 73 2e 72 65 74 75 72 6e 54 79 70 65 3b 0a 09 ns.returnType;..
24530 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
24540 2a 20 20 54 68 65 20 62 75 66 66 65 72 20 74 68 * The buffer th
24550 61 74 20 74 68 65 20 46 46 54 20 64 61 74 61 20 at the FFT data
24560 69 73 20 77 72 69 74 74 65 6e 20 74 6f 0a 09 09 is written to...
24570 09 20 2a 20 20 40 74 79 70 65 20 7b 54 79 70 65 . * @type {Type
24580 64 41 72 72 61 79 7d 0a 09 09 09 20 2a 20 20 40 dArray}.... * @
24590 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
245a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 62 75 this._bu
245b0 66 66 65 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 ffer = null;..
245c0 20 20 20 20 20 20 2f 2f 73 65 74 20 74 68 65 20 //set the
245d0 76 61 6c 75 65 73 20 69 6e 69 74 69 61 6c 6c 79 values initially
245e0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 .. this.s
245f0 69 7a 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 73 69 ize = options.si
24600 7a 65 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ze;.. thi
24610 73 2e 74 79 70 65 20 3d 20 6f 70 74 69 6f 6e 73 s.type = options
24620 2e 74 79 70 65 3b 0a 09 20 20 20 20 20 20 20 20 .type;..
24630 74 68 69 73 2e 72 65 74 75 72 6e 54 79 70 65 20 this.returnType
24640 3d 20 6f 70 74 69 6f 6e 73 2e 72 65 74 75 72 6e = options.return
24650 54 79 70 65 3b 0a 09 20 20 20 20 20 20 20 20 74 Type;.. t
24660 68 69 73 2e 6d 69 6e 44 65 63 69 62 65 6c 73 20 his.minDecibels
24670 3d 20 6f 70 74 69 6f 6e 73 2e 6d 69 6e 44 65 63 = options.minDec
24680 69 62 65 6c 73 3b 0a 09 20 20 20 20 20 20 20 20 ibels;..
24690 74 68 69 73 2e 6d 61 78 44 65 63 69 62 65 6c 73 this.maxDecibels
246a0 20 3d 20 6f 70 74 69 6f 6e 73 2e 6d 61 78 44 65 = options.maxDe
246b0 63 69 62 65 6c 73 3b 0a 09 20 20 20 20 7d 3b 0a cibels;.. };.
246c0 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 . Tone.extend
246d0 28 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 29 3b (Tone.Analyser);
246e0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
246f0 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 The default valu
24700 65 73 2e 0a 09 09 20 2a 20 20 40 74 79 70 65 20 es.... * @type
24710 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 20 20 40 {Object}... * @
24720 63 6f 6e 73 74 0a 09 09 20 2a 2f 0a 09 20 20 20 const... */..
24730 20 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 2e 64 Tone.Analyser.d
24740 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 efaults = {..
24750 20 20 20 20 20 27 73 69 7a 65 27 3a 20 31 30 32 'size': 102
24760 34 2c 0a 09 20 20 20 20 20 20 20 20 27 72 65 74 4,.. 'ret
24770 75 72 6e 54 79 70 65 27 3a 20 27 62 79 74 65 27 urnType': 'byte'
24780 2c 0a 09 20 20 20 20 20 20 20 20 27 74 79 70 65 ,.. 'type
24790 27 3a 20 27 66 66 74 27 2c 0a 09 20 20 20 20 20 ': 'fft',..
247a0 20 20 20 27 73 6d 6f 6f 74 68 69 6e 67 27 3a 20 'smoothing':
247b0 30 2e 38 2c 0a 09 20 20 20 20 20 20 20 20 27 6d 0.8,.. 'm
247c0 61 78 44 65 63 69 62 65 6c 73 27 3a 20 2d 33 30 axDecibels': -30
247d0 2c 0a 09 20 20 20 20 20 20 20 20 27 6d 69 6e 44 ,.. 'minD
247e0 65 63 69 62 65 6c 73 27 3a 20 2d 31 30 30 0a 09 ecibels': -100..
247f0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
24800 09 09 20 2a 20 20 50 6f 73 73 69 62 6c 65 20 72 .. * Possible r
24810 65 74 75 72 6e 20 74 79 70 65 73 20 6f 66 20 54 eturn types of T
24820 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 2e 61 6e 61 one.Analyser.ana
24830 6c 79 73 65 28 29 0a 09 09 20 2a 20 20 40 65 6e lyse()... * @en
24840 75 6d 20 7b 53 74 72 69 6e 67 7d 0a 09 09 20 2a um {String}... *
24850 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 41 6e 61 6c /.. Tone.Anal
24860 79 73 65 72 2e 54 79 70 65 20 3d 20 7b 0a 09 20 yser.Type = {..
24870 20 20 20 20 20 20 20 57 61 76 65 66 6f 72 6d 3a Waveform:
24880 20 27 77 61 76 65 66 6f 72 6d 27 2c 0a 09 20 20 'waveform',..
24890 20 20 20 20 20 20 46 46 54 3a 20 27 66 66 74 27 FFT: 'fft'
248a0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
248b0 2a 0a 09 09 20 2a 20 20 50 6f 73 73 69 62 6c 65 *... * Possible
248c0 20 72 65 74 75 72 6e 20 74 79 70 65 73 20 6f 66 return types of
248d0 20 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 2e 61 Tone.Analyser.a
248e0 6e 61 6c 79 73 65 28 29 2e 20 0a 09 09 20 2a 20 nalyse(). ... *
248f0 20 62 79 74 65 20 76 61 6c 75 65 73 20 61 72 65 byte values are
24900 20 62 65 74 77 65 65 6e 20 5b 30 2c 32 35 35 5d between [0,255]
24910 2e 20 66 6c 6f 61 74 20 76 61 6c 75 65 73 20 61 . float values a
24920 72 65 20 62 65 74 77 65 65 6e 20 0a 09 09 20 2a re between ... *
24930 20 20 5b 2d 31 2c 20 31 5d 20 77 68 65 6e 20 74 [-1, 1] when t
24940 68 65 20 74 79 70 65 20 69 73 20 73 65 74 20 74 he type is set t
24950 6f 20 22 77 61 76 65 66 6f 72 6d 22 20 61 6e 64 o "waveform" and
24960 20 62 65 74 77 65 65 6e 20 0a 09 09 20 2a 20 20 between ... *
24970 5b 6d 69 6e 44 65 63 69 62 65 6c 73 2c 6d 61 78 [minDecibels,max
24980 44 65 63 69 62 65 6c 73 5d 20 77 68 65 6e 20 74 Decibels] when t
24990 68 65 20 74 79 70 65 20 69 73 20 22 66 66 74 22 he type is "fft"
249a0 2e 0a 09 09 20 2a 20 20 40 65 6e 75 6d 20 7b 53 .... * @enum {S
249b0 74 72 69 6e 67 7d 0a 09 09 20 2a 2f 0a 09 20 20 tring}... */..
249c0 20 20 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 2e Tone.Analyser.
249d0 52 65 74 75 72 6e 54 79 70 65 20 3d 20 7b 0a 09 ReturnType = {..
249e0 20 20 20 20 20 20 20 20 42 79 74 65 3a 20 27 62 Byte: 'b
249f0 79 74 65 27 2c 0a 09 20 20 20 20 20 20 20 20 46 yte',.. F
24a00 6c 6f 61 74 3a 20 27 66 6c 6f 61 74 27 0a 09 20 loat: 'float'..
24a10 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
24a20 09 20 2a 20 20 52 75 6e 20 74 68 65 20 61 6e 61 . * Run the ana
24a30 6c 79 73 69 73 20 67 69 76 65 6e 20 74 68 65 20 lysis given the
24a40 63 75 72 72 65 6e 74 20 73 65 74 74 69 6e 67 73 current settings
24a50 20 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65 20 and return the
24a60 0a 09 09 20 2a 20 20 72 65 73 75 6c 74 20 61 73 ... * result as
24a70 20 61 20 54 79 70 65 64 41 72 72 61 79 2e 20 0a a TypedArray. .
24a80 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
24a90 54 79 70 65 64 41 72 72 61 79 7d 0a 09 09 20 2a TypedArray}... *
24aa0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 41 6e 61 6c /.. Tone.Anal
24ab0 79 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 61 yser.prototype.a
24ac0 6e 61 6c 79 73 65 20 3d 20 66 75 6e 63 74 69 6f nalyse = functio
24ad0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
24ae0 69 66 20 28 74 68 69 73 2e 5f 74 79 70 65 20 3d if (this._type =
24af0 3d 3d 20 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 == Tone.Analyser
24b00 2e 54 79 70 65 2e 46 46 54 29 20 7b 0a 09 20 20 .Type.FFT) {..
24b10 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 if (th
24b20 69 73 2e 5f 72 65 74 75 72 6e 54 79 70 65 20 3d is._returnType =
24b30 3d 3d 20 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 == Tone.Analyser
24b40 2e 52 65 74 75 72 6e 54 79 70 65 2e 42 79 74 65 .ReturnType.Byte
24b50 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
24b60 20 20 20 20 20 74 68 69 73 2e 5f 61 6e 61 6c 79 this._analy
24b70 73 65 72 2e 67 65 74 42 79 74 65 46 72 65 71 75 ser.getByteFrequ
24b80 65 6e 63 79 44 61 74 61 28 74 68 69 73 2e 5f 62 encyData(this._b
24b90 75 66 66 65 72 29 3b 0a 09 20 20 20 20 20 20 20 uffer);..
24ba0 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
24bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
24bc0 68 69 73 2e 5f 61 6e 61 6c 79 73 65 72 2e 67 65 his._analyser.ge
24bd0 74 46 6c 6f 61 74 46 72 65 71 75 65 6e 63 79 44 tFloatFrequencyD
24be0 61 74 61 28 74 68 69 73 2e 5f 62 75 66 66 65 72 ata(this._buffer
24bf0 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
24c00 7d 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 }.. } els
24c10 65 20 69 66 20 28 74 68 69 73 2e 5f 74 79 70 65 e if (this._type
24c20 20 3d 3d 3d 20 54 6f 6e 65 2e 41 6e 61 6c 79 73 === Tone.Analys
24c30 65 72 2e 54 79 70 65 2e 57 61 76 65 66 6f 72 6d er.Type.Waveform
24c40 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
24c50 20 69 66 20 28 74 68 69 73 2e 5f 72 65 74 75 72 if (this._retur
24c60 6e 54 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 41 nType === Tone.A
24c70 6e 61 6c 79 73 65 72 2e 52 65 74 75 72 6e 54 79 nalyser.ReturnTy
24c80 70 65 2e 42 79 74 65 29 20 7b 0a 09 20 20 20 20 pe.Byte) {..
24c90 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
24ca0 2e 5f 61 6e 61 6c 79 73 65 72 2e 67 65 74 42 79 ._analyser.getBy
24cb0 74 65 54 69 6d 65 44 6f 6d 61 69 6e 44 61 74 61 teTimeDomainData
24cc0 28 74 68 69 73 2e 5f 62 75 66 66 65 72 29 3b 0a (this._buffer);.
24cd0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
24ce0 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
24cf0 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e if (this.
24d00 69 73 46 75 6e 63 74 69 6f 6e 28 41 6e 61 6c 79 isFunction(Analy
24d10 73 65 72 4e 6f 64 65 2e 70 72 6f 74 6f 74 79 70 serNode.prototyp
24d20 65 2e 67 65 74 46 6c 6f 61 74 54 69 6d 65 44 6f e.getFloatTimeDo
24d30 6d 61 69 6e 44 61 74 61 29 29 20 7b 0a 09 20 20 mainData)) {..
24d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24d50 20 20 74 68 69 73 2e 5f 61 6e 61 6c 79 73 65 72 this._analyser
24d60 2e 67 65 74 46 6c 6f 61 74 54 69 6d 65 44 6f 6d .getFloatTimeDom
24d70 61 69 6e 44 61 74 61 28 74 68 69 73 2e 5f 62 75 ainData(this._bu
24d80 66 66 65 72 29 3b 0a 09 20 20 20 20 20 20 20 20 ffer);..
24d90 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
24da0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
24db0 20 20 20 20 20 20 76 61 72 20 75 69 6e 74 38 20 var uint8
24dc0 3d 20 6e 65 77 20 55 69 6e 74 38 41 72 72 61 79 = new Uint8Array
24dd0 28 74 68 69 73 2e 5f 62 75 66 66 65 72 2e 6c 65 (this._buffer.le
24de0 6e 67 74 68 29 3b 0a 09 20 20 20 20 20 20 20 20 ngth);..
24df0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
24e00 2e 5f 61 6e 61 6c 79 73 65 72 2e 67 65 74 42 79 ._analyser.getBy
24e10 74 65 54 69 6d 65 44 6f 6d 61 69 6e 44 61 74 61 teTimeDomainData
24e20 28 75 69 6e 74 38 29 3b 0a 09 20 20 20 20 20 20 (uint8);..
24e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
24e40 72 65 66 65 72 65 6e 63 65 64 20 68 74 74 70 73 referenced https
24e50 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 6f ://github.com/mo
24e60 68 61 79 6f 6e 61 6f 2f 67 65 74 2d 66 6c 6f 61 hayonao/get-floa
24e70 74 2d 74 69 6d 65 2d 64 6f 6d 61 69 6e 2d 64 61 t-time-domain-da
24e80 74 61 20 0a 09 20 20 20 20 20 20 20 20 20 20 20 ta ..
24e90 20 20 20 20 20 20 20 20 20 2f 2f 20 50 4f 4c 59 // POLY
24ea0 46 49 4c 4c 0a 09 20 20 20 20 20 20 20 20 20 20 FILL..
24eb0 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 for (v
24ec0 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 75 69 ar i = 0; i < ui
24ed0 6e 74 38 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 nt8.length; i++)
24ee0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
24ef0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
24f00 2e 5f 62 75 66 66 65 72 5b 69 5d 20 3d 20 28 75 ._buffer[i] = (u
24f10 69 6e 74 38 5b 69 5d 20 2d 20 31 32 38 29 20 2a int8[i] - 128) *
24f20 20 30 2e 30 30 37 38 31 32 35 3b 0a 09 20 20 20 0.0078125;..
24f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24f40 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
24f50 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
24f60 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a }.. }.
24f70 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
24f80 74 68 69 73 2e 5f 62 75 66 66 65 72 3b 0a 09 20 this._buffer;..
24f90 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
24fa0 09 20 2a 20 20 54 68 65 20 73 69 7a 65 20 6f 66 . * The size of
24fb0 20 61 6e 61 6c 79 73 69 73 2e 20 54 68 69 73 20 analysis. This
24fc0 6d 75 73 74 20 62 65 20 61 20 70 6f 77 65 72 20 must be a power
24fd0 6f 66 20 74 77 6f 20 69 6e 20 74 68 65 20 72 61 of two in the ra
24fe0 6e 67 65 20 33 32 20 74 6f 20 33 32 37 36 38 2e nge 32 to 32768.
24ff0 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
25000 20 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 23 0a Tone.Analyser#.
25010 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e 75 6d .. * @type {Num
25020 62 65 72 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 ber}... * @name
25030 20 73 69 7a 65 0a 09 09 20 2a 2f 0a 09 20 20 20 size... */..
25040 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
25050 6f 70 65 72 74 79 28 54 6f 6e 65 2e 41 6e 61 6c operty(Tone.Anal
25060 79 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 yser.prototype,
25070 27 73 69 7a 65 27 2c 20 7b 0a 09 20 20 20 20 20 'size', {..
25080 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e get: function
25090 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 () {..
250a0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
250b0 61 6e 61 6c 79 73 65 72 2e 66 72 65 71 75 65 6e analyser.frequen
250c0 63 79 42 69 6e 43 6f 75 6e 74 3b 0a 09 20 20 20 cyBinCount;..
250d0 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
250e0 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 set: function (
250f0 73 69 7a 65 29 20 7b 0a 09 20 20 20 20 20 20 20 size) {..
25100 20 20 20 20 20 74 68 69 73 2e 5f 61 6e 61 6c 79 this._analy
25110 73 65 72 2e 66 66 74 53 69 7a 65 20 3d 20 73 69 ser.fftSize = si
25120 7a 65 20 2a 20 32 3b 0a 09 20 20 20 20 20 20 20 ze * 2;..
25130 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d this.type =
25140 20 74 68 69 73 2e 5f 74 79 70 65 3b 0a 09 20 20 this._type;..
25150 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b }.. });
25160 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
25170 54 68 65 20 72 65 74 75 72 6e 20 74 79 70 65 20 The return type
25180 6f 66 20 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 of Tone.Analyser
25190 2e 61 6e 61 6c 79 73 65 28 29 2c 20 65 69 74 68 .analyse(), eith
251a0 65 72 20 22 62 79 74 65 22 20 6f 72 20 22 66 6c er "byte" or "fl
251b0 6f 61 74 22 2e 20 0a 09 09 20 2a 20 20 57 68 65 oat". ... * Whe
251c0 6e 20 74 68 65 20 74 79 70 65 20 69 73 20 73 65 n the type is se
251d0 74 20 74 6f 20 22 62 79 74 65 22 20 74 68 65 20 t to "byte" the
251e0 72 61 6e 67 65 20 6f 66 20 76 61 6c 75 65 73 20 range of values
251f0 72 65 74 75 72 6e 65 64 20 69 6e 20 74 68 65 20 returned in the
25200 61 72 72 61 79 0a 09 09 20 2a 20 20 61 72 65 20 array... * are
25210 62 65 74 77 65 65 6e 20 30 2d 32 35 35 2e 20 22 between 0-255. "
25220 66 6c 6f 61 74 22 20 76 61 6c 75 65 73 20 61 72 float" values ar
25230 65 20 62 65 74 77 65 65 6e 20 0a 09 09 20 2a 20 e between ... *
25240 20 5b 2d 31 2c 20 31 5d 20 77 68 65 6e 20 74 68 [-1, 1] when th
25250 65 20 74 79 70 65 20 69 73 20 73 65 74 20 74 6f e type is set to
25260 20 22 77 61 76 65 66 6f 72 6d 22 20 61 6e 64 20 "waveform" and
25270 62 65 74 77 65 65 6e 20 0a 09 09 20 2a 20 20 5b between ... * [
25280 6d 69 6e 44 65 63 69 62 65 6c 73 2c 6d 61 78 44 minDecibels,maxD
25290 65 63 69 62 65 6c 73 5d 20 77 68 65 6e 20 74 68 ecibels] when th
252a0 65 20 74 79 70 65 20 69 73 20 22 66 66 74 22 2e e type is "fft".
252b0 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
252c0 20 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 23 0a Tone.Analyser#.
252d0 09 09 20 2a 20 20 40 74 79 70 65 20 7b 53 74 72 .. * @type {Str
252e0 69 6e 67 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 ing}... * @name
252f0 20 74 79 70 65 0a 09 09 20 2a 2f 0a 09 20 20 20 type... */..
25300 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
25310 6f 70 65 72 74 79 28 54 6f 6e 65 2e 41 6e 61 6c operty(Tone.Anal
25320 79 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 yser.prototype,
25330 27 72 65 74 75 72 6e 54 79 70 65 27 2c 20 7b 0a 'returnType', {.
25340 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
25350 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
25360 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
25370 74 68 69 73 2e 5f 72 65 74 75 72 6e 54 79 70 65 this._returnType
25380 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 ;.. },..
25390 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 set: func
253a0 74 69 6f 6e 20 28 74 79 70 65 29 20 7b 0a 09 20 tion (type) {..
253b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 if (t
253c0 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 41 6e 61 ype === Tone.Ana
253d0 6c 79 73 65 72 2e 52 65 74 75 72 6e 54 79 70 65 lyser.ReturnType
253e0 2e 42 79 74 65 29 20 7b 0a 09 20 20 20 20 20 20 .Byte) {..
253f0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
25400 62 75 66 66 65 72 20 3d 20 6e 65 77 20 55 69 6e buffer = new Uin
25410 74 38 41 72 72 61 79 28 74 68 69 73 2e 5f 61 6e t8Array(this._an
25420 61 6c 79 73 65 72 2e 66 72 65 71 75 65 6e 63 79 alyser.frequency
25430 42 69 6e 43 6f 75 6e 74 29 3b 0a 09 20 20 20 20 BinCount);..
25440 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 } else i
25450 66 20 28 74 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 f (type === Tone
25460 2e 41 6e 61 6c 79 73 65 72 2e 52 65 74 75 72 6e .Analyser.Return
25470 54 79 70 65 2e 46 6c 6f 61 74 29 20 7b 0a 09 20 Type.Float) {..
25480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
25490 68 69 73 2e 5f 62 75 66 66 65 72 20 3d 20 6e 65 his._buffer = ne
254a0 77 20 46 6c 6f 61 74 33 32 41 72 72 61 79 28 74 w Float32Array(t
254b0 68 69 73 2e 5f 61 6e 61 6c 79 73 65 72 2e 66 72 his._analyser.fr
254c0 65 71 75 65 6e 63 79 42 69 6e 43 6f 75 6e 74 29 equencyBinCount)
254d0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
254e0 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
254f0 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e throw n
25500 65 77 20 54 79 70 65 45 72 72 6f 72 28 27 54 6f ew TypeError('To
25510 6e 65 2e 41 6e 61 6c 61 79 73 65 72 3a 20 69 6e ne.Analayser: in
25520 76 61 6c 69 64 20 72 65 74 75 72 6e 20 74 79 70 valid return typ
25530 65 3a 20 27 20 2b 20 74 79 70 65 29 3b 0a 09 20 e: ' + type);..
25540 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
25550 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
25560 72 65 74 75 72 6e 54 79 70 65 20 3d 20 74 79 70 returnType = typ
25570 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 e;.. }..
25580 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
25590 09 09 20 2a 20 20 54 68 65 20 61 6e 61 6c 79 73 .. * The analys
255a0 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 is function retu
255b0 72 6e 65 64 20 62 79 20 54 6f 6e 65 2e 41 6e 61 rned by Tone.Ana
255c0 6c 79 73 65 72 2e 61 6e 61 6c 79 73 65 28 29 2c lyser.analyse(),
255d0 20 65 69 74 68 65 72 20 22 66 66 74 22 20 6f 72 either "fft" or
255e0 20 22 77 61 76 65 66 6f 72 6d 22 2e 20 0a 09 09 "waveform". ...
255f0 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
25600 6e 65 2e 41 6e 61 6c 79 73 65 72 23 0a 09 09 20 ne.Analyser#...
25610 2a 20 20 40 74 79 70 65 20 7b 53 74 72 69 6e 67 * @type {String
25620 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 74 79 }... * @name ty
25630 70 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 pe... */.. Ob
25640 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
25650 72 74 79 28 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 rty(Tone.Analyse
25660 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 74 79 r.prototype, 'ty
25670 70 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 pe', {..
25680 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 get: function ()
25690 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
256a0 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 74 79 70 return this._typ
256b0 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 e;.. },..
256c0 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e set: fun
256d0 63 74 69 6f 6e 20 28 74 79 70 65 29 20 7b 0a 09 ction (type) {..
256e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
256f0 74 79 70 65 20 21 3d 3d 20 54 6f 6e 65 2e 41 6e type !== Tone.An
25700 61 6c 79 73 65 72 2e 54 79 70 65 2e 57 61 76 65 alyser.Type.Wave
25710 66 6f 72 6d 20 26 26 20 74 79 70 65 20 21 3d 3d form && type !==
25720 20 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 2e 54 Tone.Analyser.T
25730 79 70 65 2e 46 46 54 29 20 7b 0a 09 20 20 20 20 ype.FFT) {..
25740 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f thro
25750 77 20 6e 65 77 20 54 79 70 65 45 72 72 6f 72 28 w new TypeError(
25760 27 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 3a 20 'Tone.Analyser:
25770 69 6e 76 61 6c 69 64 20 74 79 70 65 3a 20 27 20 invalid type: '
25780 2b 20 74 79 70 65 29 3b 0a 09 20 20 20 20 20 20 + type);..
25790 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
257a0 20 20 20 20 20 74 68 69 73 2e 5f 74 79 70 65 20 this._type
257b0 3d 20 74 79 70 65 3b 0a 09 20 20 20 20 20 20 20 = type;..
257c0 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
257d0 20 2f 2a 2a 0a 09 09 20 2a 20 20 30 20 72 65 70 /**... * 0 rep
257e0 72 65 73 65 6e 74 73 20 6e 6f 20 74 69 6d 65 20 resents no time
257f0 61 76 65 72 61 67 69 6e 67 20 77 69 74 68 20 74 averaging with t
25800 68 65 20 6c 61 73 74 20 61 6e 61 6c 79 73 69 73 he last analysis
25810 20 66 72 61 6d 65 2e 0a 09 09 20 2a 20 20 40 6d frame.... * @m
25820 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 41 6e 61 emberOf Tone.Ana
25830 6c 79 73 65 72 23 0a 09 09 20 2a 20 20 40 74 79 lyser#... * @ty
25840 70 65 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d pe {NormalRange}
25850 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 73 6d 6f ... * @name smo
25860 6f 74 68 69 6e 67 0a 09 09 20 2a 2f 0a 09 20 20 othing... */..
25870 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
25880 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 41 6e 61 roperty(Tone.Ana
25890 6c 79 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c lyser.prototype,
258a0 20 27 73 6d 6f 6f 74 68 69 6e 67 27 2c 20 7b 0a 'smoothing', {.
258b0 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
258c0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
258d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
258e0 74 68 69 73 2e 5f 61 6e 61 6c 79 73 65 72 2e 73 this._analyser.s
258f0 6d 6f 6f 74 68 69 6e 67 54 69 6d 65 43 6f 6e 73 moothingTimeCons
25900 74 61 6e 74 3b 0a 09 20 20 20 20 20 20 20 20 7d tant;.. }
25910 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 ,.. set:
25920 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 29 20 7b function (val) {
25930 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
25940 69 73 2e 5f 61 6e 61 6c 79 73 65 72 2e 73 6d 6f is._analyser.smo
25950 6f 74 68 69 6e 67 54 69 6d 65 43 6f 6e 73 74 61 othingTimeConsta
25960 6e 74 20 3d 20 76 61 6c 3b 0a 09 20 20 20 20 20 nt = val;..
25970 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
25980 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 /**... * The
25990 20 73 6d 61 6c 6c 65 73 74 20 64 65 63 69 62 65 smallest decibe
259a0 6c 20 76 61 6c 75 65 20 77 68 69 63 68 20 69 73 l value which is
259b0 20 61 6e 61 6c 79 73 65 64 20 62 79 20 74 68 65 analysed by the
259c0 20 46 46 54 2e 20 0a 09 09 20 2a 20 20 40 6d 65 FFT. ... * @me
259d0 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 41 6e 61 6c mberOf Tone.Anal
259e0 79 73 65 72 23 0a 09 09 20 2a 20 20 40 74 79 70 yser#... * @typ
259f0 65 20 7b 44 65 63 69 62 65 6c 73 7d 0a 09 09 20 e {Decibels}...
25a00 2a 20 20 40 6e 61 6d 65 20 6d 69 6e 44 65 63 69 * @name minDeci
25a10 62 65 6c 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 bels... */..
25a20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
25a30 70 65 72 74 79 28 54 6f 6e 65 2e 41 6e 61 6c 79 perty(Tone.Analy
25a40 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 ser.prototype, '
25a50 6d 69 6e 44 65 63 69 62 65 6c 73 27 2c 20 7b 0a minDecibels', {.
25a60 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
25a70 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
25a80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
25a90 74 68 69 73 2e 5f 61 6e 61 6c 79 73 65 72 2e 6d this._analyser.m
25aa0 69 6e 44 65 63 69 62 65 6c 73 3b 0a 09 20 20 20 inDecibels;..
25ab0 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
25ac0 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 set: function (
25ad0 76 61 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 val) {..
25ae0 20 20 20 20 74 68 69 73 2e 5f 61 6e 61 6c 79 73 this._analys
25af0 65 72 2e 6d 69 6e 44 65 63 69 62 65 6c 73 20 3d er.minDecibels =
25b00 20 76 61 6c 3b 0a 09 20 20 20 20 20 20 20 20 7d val;.. }
25b10 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f .. });.. /
25b20 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 6c 61 72 **... * The lar
25b30 67 65 73 74 20 64 65 63 69 62 65 6c 20 76 61 6c gest decibel val
25b40 75 65 20 77 68 69 63 68 20 69 73 20 61 6e 61 6c ue which is anal
25b50 79 73 65 64 20 62 79 20 74 68 65 20 46 46 54 2e ysed by the FFT.
25b60 20 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f ... * @memberO
25b70 66 20 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 23 f Tone.Analyser#
25b80 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 44 65 ... * @type {De
25b90 63 69 62 65 6c 73 7d 0a 09 09 20 2a 20 20 40 6e cibels}... * @n
25ba0 61 6d 65 20 6d 61 78 44 65 63 69 62 65 6c 73 0a ame maxDecibels.
25bb0 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 .. */.. Objec
25bc0 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 t.defineProperty
25bd0 28 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 2e 70 (Tone.Analyser.p
25be0 72 6f 74 6f 74 79 70 65 2c 20 27 6d 61 78 44 65 rototype, 'maxDe
25bf0 63 69 62 65 6c 73 27 2c 20 7b 0a 09 20 20 20 20 cibels', {..
25c00 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
25c10 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
25c20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
25c30 5f 61 6e 61 6c 79 73 65 72 2e 6d 61 78 44 65 63 _analyser.maxDec
25c40 69 62 65 6c 73 3b 0a 09 20 20 20 20 20 20 20 20 ibels;..
25c50 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a },.. set:
25c60 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 29 20 function (val)
25c70 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
25c80 68 69 73 2e 5f 61 6e 61 6c 79 73 65 72 2e 6d 61 his._analyser.ma
25c90 78 44 65 63 69 62 65 6c 73 20 3d 20 76 61 6c 3b xDecibels = val;
25ca0 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
25cb0 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
25cc0 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a 09 09 * Clean up....
25cd0 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 6f * @return {To
25ce0 6e 65 2e 41 6e 61 6c 79 73 65 72 7d 20 20 74 68 ne.Analyser} th
25cf0 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
25d00 6e 65 2e 41 6e 61 6c 79 73 65 72 2e 70 72 6f 74 ne.Analyser.prot
25d10 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 otype.dispose =
25d20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
25d30 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 Tone.prot
25d40 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 otype.dispose.ca
25d50 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 ll(this);..
25d60 20 20 20 74 68 69 73 2e 5f 61 6e 61 6c 79 73 65 this._analyse
25d70 72 2e 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b 0a r.disconnect();.
25d80 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 61 . this._a
25d90 6e 61 6c 79 73 65 72 20 3d 20 6e 75 6c 6c 3b 0a nalyser = null;.
25da0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 62 . this._b
25db0 75 66 66 65 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 uffer = null;..
25dc0 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
25dd0 6e 20 54 6f 6e 65 2e 41 6e 61 6c 79 73 65 72 3b n Tone.Analyser;
25de0 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 ..});..Module(fu
25df0 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a nction (Tone) {.
25e00 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 . .. /**..
25e10 09 20 2a 20 20 40 63 6c 61 73 73 20 54 6f 6e 65 . * @class Tone
25e20 2e 43 6f 6d 70 72 65 73 73 6f 72 20 69 73 20 61 .Compressor is a
25e30 20 74 68 69 6e 20 77 72 61 70 70 65 72 20 61 72 thin wrapper ar
25e40 6f 75 6e 64 20 74 68 65 20 57 65 62 20 41 75 64 ound the Web Aud
25e50 69 6f 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 io ... *
25e60 20 5b 44 79 6e 61 6d 69 63 73 43 6f 6d 70 72 65 [DynamicsCompre
25e70 73 73 6f 72 4e 6f 64 65 5d 28 68 74 74 70 3a 2f ssorNode](http:/
25e80 2f 77 65 62 61 75 64 69 6f 2e 67 69 74 68 75 62 /webaudio.github
25e90 2e 69 6f 2f 77 65 62 2d 61 75 64 69 6f 2d 61 70 .io/web-audio-ap
25ea0 69 2f 23 74 68 65 2d 64 79 6e 61 6d 69 63 73 63 i/#the-dynamicsc
25eb0 6f 6d 70 72 65 73 73 6f 72 6e 6f 64 65 2d 69 6e ompressornode-in
25ec0 74 65 72 66 61 63 65 29 2e 0a 09 09 20 2a 20 20 terface).... *
25ed0 20 20 20 20 20 20 20 43 6f 6d 70 72 65 73 73 69 Compressi
25ee0 6f 6e 20 72 65 64 75 63 65 73 20 74 68 65 20 76 on reduces the v
25ef0 6f 6c 75 6d 65 20 6f 66 20 6c 6f 75 64 20 73 6f olume of loud so
25f00 75 6e 64 73 20 6f 72 20 61 6d 70 6c 69 66 69 65 unds or amplifie
25f10 73 20 71 75 69 65 74 20 73 6f 75 6e 64 73 20 0a s quiet sounds .
25f20 09 09 20 2a 20 20 20 20 20 20 20 20 20 62 79 20 .. * by
25f30 6e 61 72 72 6f 77 69 6e 67 20 6f 72 20 22 63 6f narrowing or "co
25f40 6d 70 72 65 73 73 69 6e 67 22 20 61 6e 20 61 75 mpressing" an au
25f50 64 69 6f 20 73 69 67 6e 61 6c 27 73 20 64 79 6e dio signal's dyn
25f60 61 6d 69 63 20 72 61 6e 67 65 2e 20 0a 09 09 20 amic range. ...
25f70 2a 20 20 20 20 20 20 20 20 20 52 65 61 64 20 6d * Read m
25f80 6f 72 65 20 6f 6e 20 5b 57 69 6b 69 70 65 64 69 ore on [Wikipedi
25f90 61 5d 28 68 74 74 70 73 3a 2f 2f 65 6e 2e 77 69 a](https://en.wi
25fa0 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 kipedia.org/wiki
25fb0 2f 44 79 6e 61 6d 69 63 5f 72 61 6e 67 65 5f 63 /Dynamic_range_c
25fc0 6f 6d 70 72 65 73 73 69 6f 6e 29 2e 0a 09 09 20 ompression)....
25fd0 2a 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 *... * @extends
25fe0 20 7b 54 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 63 {Tone}... * @c
25ff0 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 onstructor... *
26000 20 40 70 61 72 61 6d 20 7b 44 65 63 69 62 65 6c @param {Decibel
26010 73 7c 4f 62 6a 65 63 74 7d 20 5b 74 68 72 65 73 s|Object} [thres
26020 68 6f 6c 64 5d 20 54 68 65 20 76 61 6c 75 65 20 hold] The value
26030 61 62 6f 76 65 20 77 68 69 63 68 20 74 68 65 20 above which the
26040 63 6f 6d 70 72 65 73 73 69 6f 6e 20 73 74 61 72 compression star
26050 74 73 20 74 6f 20 62 65 20 61 70 70 6c 69 65 64 ts to be applied
26060 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b .... * @param {
26070 50 6f 73 69 74 69 76 65 7d 20 5b 72 61 74 69 6f Positive} [ratio
26080 5d 20 54 68 65 20 67 61 69 6e 20 72 65 64 75 63 ] The gain reduc
26090 74 69 6f 6e 20 72 61 74 69 6f 2e 0a 09 09 20 2a tion ratio.... *
260a0 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 @example... *
260b0 76 61 72 20 63 6f 6d 70 20 3d 20 6e 65 77 20 54 var comp = new T
260c0 6f 6e 65 2e 43 6f 6d 70 72 65 73 73 6f 72 28 2d one.Compressor(-
260d0 33 30 2c 20 33 29 3b 0a 09 09 20 2a 2f 0a 09 20 30, 3);... */..
260e0 20 20 20 54 6f 6e 65 2e 43 6f 6d 70 72 65 73 73 Tone.Compress
260f0 6f 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 or = function ()
26100 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
26110 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f options = this.o
26120 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 ptionsObject(arg
26130 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 uments, [..
26140 20 20 20 20 20 20 20 27 74 68 72 65 73 68 6f 6c 'threshol
26150 64 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 d',..
26160 20 27 72 61 74 69 6f 27 0a 09 20 20 20 20 20 20 'ratio'..
26170 20 20 5d 2c 20 54 6f 6e 65 2e 43 6f 6d 70 72 65 ], Tone.Compre
26180 73 73 6f 72 2e 64 65 66 61 75 6c 74 73 29 3b 0a ssor.defaults);.
26190 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
261a0 20 2a 20 20 74 68 65 20 63 6f 6d 70 72 65 73 73 * the compress
261b0 6f 72 20 6e 6f 64 65 0a 09 09 09 20 2a 20 20 40 or node.... * @
261c0 74 79 70 65 20 7b 44 79 6e 61 6d 69 63 73 43 6f type {DynamicsCo
261d0 6d 70 72 65 73 73 6f 72 4e 6f 64 65 7d 0a 09 09 mpressorNode}...
261e0 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
261f0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
26200 69 73 2e 5f 63 6f 6d 70 72 65 73 73 6f 72 20 3d is._compressor =
26210 20 74 68 69 73 2e 69 6e 70 75 74 20 3d 20 74 68 this.input = th
26220 69 73 2e 6f 75 74 70 75 74 20 3d 20 74 68 69 73 is.output = this
26230 2e 63 6f 6e 74 65 78 74 2e 63 72 65 61 74 65 44 .context.createD
26240 79 6e 61 6d 69 63 73 43 6f 6d 70 72 65 73 73 6f ynamicsCompresso
26250 72 28 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a r();.. /*
26260 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 74 68 72 *.... * the thr
26270 65 73 68 6f 6c 64 20 76 61 75 65 0a 09 09 09 20 eshold vaue....
26280 2a 20 20 40 74 79 70 65 20 7b 44 65 63 69 62 65 * @type {Decibe
26290 6c 73 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e ls}.... * @sign
262a0 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 al.... */..
262b0 20 20 20 74 68 69 73 2e 74 68 72 65 73 68 6f 6c this.threshol
262c0 64 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 50 61 72 d = new Tone.Par
262d0 61 6d 28 7b 0a 09 20 20 20 20 20 20 20 20 20 20 am({..
262e0 20 20 27 70 61 72 61 6d 27 3a 20 74 68 69 73 2e 'param': this.
262f0 5f 63 6f 6d 70 72 65 73 73 6f 72 2e 74 68 72 65 _compressor.thre
26300 73 68 6f 6c 64 2c 0a 09 20 20 20 20 20 20 20 20 shold,..
26310 20 20 20 20 27 75 6e 69 74 73 27 3a 20 54 6f 6e 'units': Ton
26320 65 2e 54 79 70 65 2e 44 65 63 69 62 65 6c 73 2c e.Type.Decibels,
26330 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 63 .. 'c
26340 6f 6e 76 65 72 74 27 3a 20 66 61 6c 73 65 0a 09 onvert': false..
26350 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 });..
26360 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
26370 54 68 65 20 61 74 74 61 63 6b 20 70 61 72 61 6d The attack param
26380 65 74 65 72 0a 09 09 09 20 2a 20 20 40 74 79 70 eter.... * @typ
26390 65 20 7b 54 69 6d 65 7d 0a 09 09 09 20 2a 20 20 e {Time}.... *
263a0 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 @signal.... */..
263b0 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 74 74 this.att
263c0 61 63 6b 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 50 ack = new Tone.P
263d0 61 72 61 6d 28 74 68 69 73 2e 5f 63 6f 6d 70 72 aram(this._compr
263e0 65 73 73 6f 72 2e 61 74 74 61 63 6b 2c 20 54 6f essor.attack, To
263f0 6e 65 2e 54 79 70 65 2e 54 69 6d 65 29 3b 0a 09 ne.Type.Time);..
26400 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
26410 2a 20 20 54 68 65 20 72 65 6c 65 61 73 65 20 70 * The release p
26420 61 72 61 6d 65 74 65 72 0a 09 09 09 20 2a 20 20 arameter.... *
26430 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a 09 09 09 @type {Time}....
26440 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 * @signal....
26450 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
26460 2e 72 65 6c 65 61 73 65 20 3d 20 6e 65 77 20 54 .release = new T
26470 6f 6e 65 2e 50 61 72 61 6d 28 74 68 69 73 2e 5f one.Param(this._
26480 63 6f 6d 70 72 65 73 73 6f 72 2e 72 65 6c 65 61 compressor.relea
26490 73 65 2c 20 54 6f 6e 65 2e 54 79 70 65 2e 54 69 se, Tone.Type.Ti
264a0 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a me);.. /*
264b0 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 6b 6e 65 *.... * The kne
264c0 65 20 70 61 72 61 6d 65 74 65 72 0a 09 09 09 20 e parameter....
264d0 2a 20 20 40 74 79 70 65 20 7b 44 65 63 69 62 65 * @type {Decibe
264e0 6c 73 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e ls}.... * @sign
264f0 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 al.... */..
26500 20 20 20 74 68 69 73 2e 6b 6e 65 65 20 3d 20 6e this.knee = n
26510 65 77 20 54 6f 6e 65 2e 50 61 72 61 6d 28 7b 0a ew Tone.Param({.
26520 09 20 20 20 20 20 20 20 20 20 20 20 20 27 70 61 . 'pa
26530 72 61 6d 27 3a 20 74 68 69 73 2e 5f 63 6f 6d 70 ram': this._comp
26540 72 65 73 73 6f 72 2e 6b 6e 65 65 2c 0a 09 20 20 ressor.knee,..
26550 20 20 20 20 20 20 20 20 20 20 27 75 6e 69 74 73 'units
26560 27 3a 20 54 6f 6e 65 2e 54 79 70 65 2e 44 65 63 ': Tone.Type.Dec
26570 69 62 65 6c 73 2c 0a 09 20 20 20 20 20 20 20 20 ibels,..
26580 20 20 20 20 27 63 6f 6e 76 65 72 74 27 3a 20 66 'convert': f
26590 61 6c 73 65 0a 09 20 20 20 20 20 20 20 20 7d 29 alse.. })
265a0 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
265b0 09 09 20 2a 20 20 54 68 65 20 72 61 74 69 6f 20 .. * The ratio
265c0 76 61 6c 75 65 0a 09 09 09 20 2a 20 20 40 74 79 value.... * @ty
265d0 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 09 20 pe {Number}....
265e0 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a * @signal.... *
265f0 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
26600 72 61 74 69 6f 20 3d 20 6e 65 77 20 54 6f 6e 65 ratio = new Tone
26610 2e 50 61 72 61 6d 28 7b 0a 09 20 20 20 20 20 20 .Param({..
26620 20 20 20 20 20 20 27 70 61 72 61 6d 27 3a 20 74 'param': t
26630 68 69 73 2e 5f 63 6f 6d 70 72 65 73 73 6f 72 2e his._compressor.
26640 72 61 74 69 6f 2c 0a 09 20 20 20 20 20 20 20 20 ratio,..
26650 20 20 20 20 27 63 6f 6e 76 65 72 74 27 3a 20 66 'convert': f
26660 61 6c 73 65 0a 09 20 20 20 20 20 20 20 20 7d 29 alse.. })
26670 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 73 65 74 ;.. //set
26680 20 74 68 65 20 64 65 66 61 75 6c 74 73 0a 09 20 the defaults..
26690 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 this._rea
266a0 64 4f 6e 6c 79 28 5b 0a 09 20 20 20 20 20 20 20 dOnly([..
266b0 20 20 20 20 20 27 6b 6e 65 65 27 2c 0a 09 20 20 'knee',..
266c0 20 20 20 20 20 20 20 20 20 20 27 72 65 6c 65 61 'relea
266d0 73 65 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 se',..
266e0 20 20 27 61 74 74 61 63 6b 27 2c 0a 09 20 20 20 'attack',..
266f0 20 20 20 20 20 20 20 20 20 27 72 61 74 69 6f 27 'ratio'
26700 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
26710 74 68 72 65 73 68 6f 6c 64 27 0a 09 20 20 20 20 threshold'..
26720 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 ]);..
26730 20 74 68 69 73 2e 73 65 74 28 6f 70 74 69 6f 6e this.set(option
26740 73 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 s);.. };..
26750 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e Tone.extend(Ton
26760 65 2e 43 6f 6d 70 72 65 73 73 6f 72 29 3b 0a 09 e.Compressor);..
26770 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 73 /**... * @s
26780 74 61 74 69 63 0a 09 09 20 2a 20 20 40 63 6f 6e tatic... * @con
26790 73 74 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b st... * @type {
267a0 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 Object}... */..
267b0 20 20 20 54 6f 6e 65 2e 43 6f 6d 70 72 65 73 73 Tone.Compress
267c0 6f 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a or.defaults = {.
267d0 09 20 20 20 20 20 20 20 20 27 72 61 74 69 6f 27 . 'ratio'
267e0 3a 20 31 32 2c 0a 09 20 20 20 20 20 20 20 20 27 : 12,.. '
267f0 74 68 72 65 73 68 6f 6c 64 27 3a 20 2d 32 34 2c threshold': -24,
26800 0a 09 20 20 20 20 20 20 20 20 27 72 65 6c 65 61 .. 'relea
26810 73 65 27 3a 20 30 2e 32 35 2c 0a 09 20 20 20 20 se': 0.25,..
26820 20 20 20 20 27 61 74 74 61 63 6b 27 3a 20 30 2e 'attack': 0.
26830 30 30 33 2c 0a 09 20 20 20 20 20 20 20 20 27 6b 003,.. 'k
26840 6e 65 65 27 3a 20 33 30 0a 09 20 20 20 20 7d 3b nee': 30.. };
26850 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
26860 63 6c 65 61 6e 20 75 70 0a 09 09 20 2a 20 20 40 clean up... * @
26870 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 43 6f returns {Tone.Co
26880 6d 70 72 65 73 73 6f 72 7d 20 74 68 69 73 0a 09 mpressor} this..
26890 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 43 . */.. Tone.C
268a0 6f 6d 70 72 65 73 73 6f 72 2e 70 72 6f 74 6f 74 ompressor.protot
268b0 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 ype.dispose = fu
268c0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
268d0 20 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 Tone.protot
268e0 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c ype.dispose.call
268f0 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 (this);..
26900 20 74 68 69 73 2e 5f 77 72 69 74 61 62 6c 65 28 this._writable(
26910 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 [.. '
26920 6b 6e 65 65 27 2c 0a 09 20 20 20 20 20 20 20 20 knee',..
26930 20 20 20 20 27 72 65 6c 65 61 73 65 27 2c 0a 09 'release',..
26940 20 20 20 20 20 20 20 20 20 20 20 20 27 61 74 74 'att
26950 61 63 6b 27 2c 0a 09 20 20 20 20 20 20 20 20 20 ack',..
26960 20 20 20 27 72 61 74 69 6f 27 2c 0a 09 20 20 20 'ratio',..
26970 20 20 20 20 20 20 20 20 20 27 74 68 72 65 73 68 'thresh
26980 6f 6c 64 27 0a 09 20 20 20 20 20 20 20 20 5d 29 old'.. ])
26990 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
269a0 5f 63 6f 6d 70 72 65 73 73 6f 72 2e 64 69 73 63 _compressor.disc
269b0 6f 6e 6e 65 63 74 28 29 3b 0a 09 20 20 20 20 20 onnect();..
269c0 20 20 20 74 68 69 73 2e 5f 63 6f 6d 70 72 65 73 this._compres
269d0 73 6f 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 sor = null;..
269e0 20 20 20 20 20 74 68 69 73 2e 61 74 74 61 63 6b this.attack
269f0 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
26a00 20 20 20 20 20 74 68 69 73 2e 61 74 74 61 63 6b this.attack
26a10 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
26a20 20 20 74 68 69 73 2e 72 65 6c 65 61 73 65 2e 64 this.release.d
26a30 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
26a40 20 20 20 74 68 69 73 2e 72 65 6c 65 61 73 65 20 this.release
26a50 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
26a60 20 74 68 69 73 2e 74 68 72 65 73 68 6f 6c 64 2e this.threshold.
26a70 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
26a80 20 20 20 20 74 68 69 73 2e 74 68 72 65 73 68 6f this.thresho
26a90 6c 64 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 ld = null;..
26aa0 20 20 20 20 74 68 69 73 2e 72 61 74 69 6f 2e 64 this.ratio.d
26ab0 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
26ac0 20 20 20 74 68 69 73 2e 72 61 74 69 6f 20 3d 20 this.ratio =
26ad0 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 null;.. t
26ae0 68 69 73 2e 6b 6e 65 65 2e 64 69 73 70 6f 73 65 his.knee.dispose
26af0 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
26b00 73 2e 6b 6e 65 65 20 3d 20 6e 75 6c 6c 3b 0a 09 s.knee = null;..
26b10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
26b20 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
26b30 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 43 6f return Tone.Co
26b40 6d 70 72 65 73 73 6f 72 3b 0a 09 7d 29 3b 0a 09 mpressor;..});..
26b50 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 Module(function
26b60 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 (Tone) {.. ..
26b70 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 /**... * @c
26b80 6c 61 73 73 20 41 64 64 20 61 20 73 69 67 6e 61 lass Add a signa
26b90 6c 20 61 6e 64 20 61 20 6e 75 6d 62 65 72 20 6f l and a number o
26ba0 72 20 74 77 6f 20 73 69 67 6e 61 6c 73 2e 20 57 r two signals. W
26bb0 68 65 6e 20 6e 6f 20 76 61 6c 75 65 20 69 73 0a hen no value is.
26bc0 09 09 20 2a 20 20 20 20 20 20 20 20 20 70 61 73 .. * pas
26bd0 73 65 64 20 69 6e 74 6f 20 74 68 65 20 63 6f 6e sed into the con
26be0 73 74 72 75 63 74 6f 72 2c 20 54 6f 6e 65 2e 41 structor, Tone.A
26bf0 64 64 20 77 69 6c 6c 20 73 75 6d 20 3c 63 6f 64 dd will sum <cod
26c00 65 3e 69 6e 70 75 74 5b 30 5d 3c 2f 63 6f 64 65 e>input[0]</code
26c10 3e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 61 >... * a
26c20 6e 64 20 3c 63 6f 64 65 3e 69 6e 70 75 74 5b 31 nd <code>input[1
26c30 5d 3c 2f 63 6f 64 65 3e 2e 20 49 66 20 61 20 76 ]</code>. If a v
26c40 61 6c 75 65 20 69 73 20 70 61 73 73 65 64 20 69 alue is passed i
26c50 6e 74 6f 20 74 68 65 20 63 6f 6e 73 74 72 75 63 nto the construc
26c60 74 6f 72 2c 20 0a 09 09 20 2a 20 20 20 20 20 20 tor, ... *
26c70 20 20 20 74 68 65 20 69 74 20 77 69 6c 6c 20 62 the it will b
26c80 65 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 69 e added to the i
26c90 6e 70 75 74 2e 0a 09 09 20 2a 20 20 0a 09 09 20 nput.... * ...
26ca0 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a * @constructor.
26cb0 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b .. * @extends {
26cc0 54 6f 6e 65 2e 53 69 67 6e 61 6c 7d 0a 09 09 20 Tone.Signal}...
26cd0 2a 20 20 40 70 61 72 61 6d 20 7b 6e 75 6d 62 65 * @param {numbe
26ce0 72 3d 7d 20 76 61 6c 75 65 20 49 66 20 6e 6f 20 r=} value If no
26cf0 76 61 6c 75 65 20 69 73 20 70 72 6f 76 69 64 65 value is provide
26d00 64 2c 20 54 6f 6e 65 2e 41 64 64 20 77 69 6c 6c d, Tone.Add will
26d10 20 73 75 6d 20 74 68 65 20 66 69 72 73 74 0a 09 sum the first..
26d20 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 . *
26d30 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 and
26d40 73 65 63 6f 6e 64 20 69 6e 70 75 74 73 2e 20 0a second inputs. .
26d50 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
26d60 09 20 2a 20 76 61 72 20 73 69 67 6e 61 6c 20 3d . * var signal =
26d70 20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c new Tone.Signal
26d80 28 32 29 3b 0a 09 09 20 2a 20 76 61 72 20 61 64 (2);... * var ad
26d90 64 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 41 64 64 d = new Tone.Add
26da0 28 32 29 3b 0a 09 09 20 2a 20 73 69 67 6e 61 6c (2);... * signal
26db0 2e 63 6f 6e 6e 65 63 74 28 61 64 64 29 3b 0a 09 .connect(add);..
26dc0 09 20 2a 20 2f 2f 74 68 65 20 6f 75 74 70 75 74 . * //the output
26dd0 20 6f 66 20 61 64 64 20 65 71 75 61 6c 73 20 34 of add equals 4
26de0 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
26df0 09 09 20 2a 20 2f 2f 69 66 20 63 6f 6e 73 74 72 .. * //if constr
26e00 75 63 74 65 64 20 77 69 74 68 20 6e 6f 20 61 72 ucted with no ar
26e10 67 75 6d 65 6e 74 73 0a 09 09 20 2a 20 2f 2f 69 guments... * //i
26e20 74 20 77 69 6c 6c 20 61 64 64 20 74 68 65 20 66 t will add the f
26e30 69 72 73 74 20 61 6e 64 20 73 65 63 6f 6e 64 20 irst and second
26e40 69 6e 70 75 74 73 0a 09 09 20 2a 20 76 61 72 20 inputs... * var
26e50 61 64 64 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 41 add = new Tone.A
26e60 64 64 28 29 3b 0a 09 09 20 2a 20 76 61 72 20 73 dd();... * var s
26e70 69 67 30 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 ig0 = new Tone.S
26e80 69 67 6e 61 6c 28 33 29 2e 63 6f 6e 6e 65 63 74 ignal(3).connect
26e90 28 61 64 64 2c 20 30 2c 20 30 29 3b 0a 09 09 20 (add, 0, 0);...
26ea0 2a 20 76 61 72 20 73 69 67 31 20 3d 20 6e 65 77 * var sig1 = new
26eb0 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 34 29 2e Tone.Signal(4).
26ec0 63 6f 6e 6e 65 63 74 28 61 64 64 2c 20 30 2c 20 connect(add, 0,
26ed0 31 29 3b 0a 09 09 20 2a 20 2f 2f 74 68 65 20 6f 1);... * //the o
26ee0 75 74 70 75 74 20 6f 66 20 61 64 64 20 65 71 75 utput of add equ
26ef0 61 6c 73 20 37 2e 20 0a 09 09 20 2a 2f 0a 09 20 als 7. ... */..
26f00 20 20 20 54 6f 6e 65 2e 41 64 64 20 3d 20 66 75 Tone.Add = fu
26f10 6e 63 74 69 6f 6e 20 28 76 61 6c 75 65 29 20 7b nction (value) {
26f20 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 .. this.c
26f30 72 65 61 74 65 49 6e 73 4f 75 74 73 28 32 2c 20 reateInsOuts(2,
26f40 30 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0);.. /**
26f50 0a 09 09 09 20 2a 20 20 74 68 65 20 73 75 6d 6d .... * the summ
26f60 69 6e 67 20 6e 6f 64 65 0a 09 09 09 20 2a 20 20 ing node.... *
26f70 40 74 79 70 65 20 7b 47 61 69 6e 4e 6f 64 65 7d @type {GainNode}
26f80 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
26f90 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
26fa0 20 74 68 69 73 2e 5f 73 75 6d 20 3d 20 74 68 69 this._sum = thi
26fb0 73 2e 69 6e 70 75 74 5b 30 5d 20 3d 20 74 68 69 s.input[0] = thi
26fc0 73 2e 69 6e 70 75 74 5b 31 5d 20 3d 20 74 68 69 s.input[1] = thi
26fd0 73 2e 6f 75 74 70 75 74 20 3d 20 6e 65 77 20 54 s.output = new T
26fe0 6f 6e 65 2e 47 61 69 6e 28 29 3b 0a 09 20 20 20 one.Gain();..
26ff0 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
27000 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 20 20 @private.... *
27010 40 74 79 70 65 20 7b 54 6f 6e 65 2e 53 69 67 6e @type {Tone.Sign
27020 61 6c 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 al}.... */..
27030 20 20 20 20 74 68 69 73 2e 5f 70 61 72 61 6d 20 this._param
27040 3d 20 74 68 69 73 2e 69 6e 70 75 74 5b 31 5d 20 = this.input[1]
27050 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e 61 = new Tone.Signa
27060 6c 28 76 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 l(value);..
27070 20 20 20 74 68 69 73 2e 5f 70 61 72 61 6d 2e 63 this._param.c
27080 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 73 75 6d onnect(this._sum
27090 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
270a0 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 Tone.extend(Tone
270b0 2e 41 64 64 2c 20 54 6f 6e 65 2e 53 69 67 6e 61 .Add, Tone.Signa
270c0 6c 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 l);.. /**...
270d0 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a 09 09 20 * Clean up....
270e0 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
270f0 65 2e 41 64 64 7d 20 74 68 69 73 0a 09 09 20 2a e.Add} this... *
27100 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 41 64 64 2e /.. Tone.Add.
27110 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
27120 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 e = function ()
27130 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e {.. Tone.
27140 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
27150 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 e.call(this);..
27160 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 75 6d this._sum
27170 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
27180 20 20 20 20 20 74 68 69 73 2e 5f 73 75 6d 20 3d this._sum =
27190 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
271a0 74 68 69 73 2e 5f 70 61 72 61 6d 2e 64 69 73 70 this._param.disp
271b0 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
271c0 74 68 69 73 2e 5f 70 61 72 61 6d 20 3d 20 6e 75 this._param = nu
271d0 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ll;.. ret
271e0 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
271f0 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f ;.. return To
27200 6e 65 2e 41 64 64 3b 0a 09 7d 29 3b 0a 09 4d 6f ne.Add;..});..Mo
27210 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 dule(function (T
27220 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 one) {.. ..
27230 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 /**... * @cla
27240 73 73 20 20 4d 75 6c 74 69 70 6c 79 20 74 77 6f ss Multiply two
27250 20 69 6e 63 6f 6d 69 6e 67 20 73 69 67 6e 61 6c incoming signal
27260 73 2e 20 4f 72 2c 20 69 66 20 61 20 6e 75 6d 62 s. Or, if a numb
27270 65 72 20 69 73 20 67 69 76 65 6e 20 69 6e 20 74 er is given in t
27280 68 65 20 63 6f 6e 73 74 72 75 63 74 6f 72 2c 20 he constructor,
27290 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 6d ... * m
272a0 75 6c 74 69 70 6c 69 65 73 20 74 68 65 20 69 6e ultiplies the in
272b0 63 6f 6d 69 6e 67 20 73 69 67 6e 61 6c 20 62 79 coming signal by
272c0 20 74 68 61 74 20 76 61 6c 75 65 2e 20 0a 09 09 that value. ...
272d0 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 *... * @constr
272e0 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 74 uctor... * @ext
272f0 65 6e 64 73 20 7b 54 6f 6e 65 2e 53 69 67 6e 61 ends {Tone.Signa
27300 6c 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 l}... * @param
27310 7b 6e 75 6d 62 65 72 3d 7d 20 76 61 6c 75 65 20 {number=} value
27320 43 6f 6e 73 74 61 6e 74 20 76 61 6c 75 65 20 74 Constant value t
27330 6f 20 6d 75 6c 74 69 70 6c 65 2e 20 49 66 20 6e o multiple. If n
27340 6f 20 76 61 6c 75 65 20 69 73 20 70 72 6f 76 69 o value is provi
27350 64 65 64 2c 0a 09 09 20 2a 20 20 20 20 20 20 20 ded,... *
27360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
27370 20 20 69 74 20 77 69 6c 6c 20 72 65 74 75 72 6e it will return
27380 20 74 68 65 20 70 72 6f 64 75 63 74 20 6f 66 20 the product of
27390 74 68 65 20 66 69 72 73 74 20 61 6e 64 20 73 65 the first and se
273a0 63 6f 6e 64 20 69 6e 70 75 74 73 0a 09 09 20 2a cond inputs... *
273b0 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 @example... *
273c0 76 61 72 20 6d 75 6c 74 20 3d 20 6e 65 77 20 54 var mult = new T
273d0 6f 6e 65 2e 4d 75 6c 74 69 70 6c 79 28 29 3b 0a one.Multiply();.
273e0 09 09 20 2a 20 76 61 72 20 73 69 67 41 20 3d 20 .. * var sigA =
273f0 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 new Tone.Signal(
27400 33 29 3b 0a 09 09 20 2a 20 76 61 72 20 73 69 67 3);... * var sig
27410 42 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 B = new Tone.Sig
27420 6e 61 6c 28 34 29 3b 0a 09 09 20 2a 20 73 69 67 nal(4);... * sig
27430 41 2e 63 6f 6e 6e 65 63 74 28 6d 75 6c 74 2c 20 A.connect(mult,
27440 30 2c 20 30 29 3b 0a 09 09 20 2a 20 73 69 67 42 0, 0);... * sigB
27450 2e 63 6f 6e 6e 65 63 74 28 6d 75 6c 74 2c 20 30 .connect(mult, 0
27460 2c 20 31 29 3b 0a 09 09 20 2a 20 2f 2f 6f 75 74 , 1);... * //out
27470 70 75 74 20 6f 66 20 6d 75 6c 74 20 69 73 20 31 put of mult is 1
27480 32 2e 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 2.... * @exampl
27490 65 0a 09 09 20 2a 20 76 61 72 20 6d 75 6c 74 20 e... * var mult
274a0 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 75 6c 74 69 = new Tone.Multi
274b0 70 6c 79 28 31 30 29 3b 0a 09 09 20 2a 20 76 61 ply(10);... * va
274c0 72 20 73 69 67 20 3d 20 6e 65 77 20 54 6f 6e 65 r sig = new Tone
274d0 2e 53 69 67 6e 61 6c 28 32 29 2e 63 6f 6e 6e 65 .Signal(2).conne
274e0 63 74 28 6d 75 6c 74 29 3b 0a 09 09 20 2a 20 2f ct(mult);... * /
274f0 2f 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 6d /the output of m
27500 75 6c 74 20 69 73 20 32 30 2e 20 0a 09 09 20 2a ult is 20. ... *
27510 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 75 6c 74 /.. Tone.Mult
27520 69 70 6c 79 20 3d 20 66 75 6e 63 74 69 6f 6e 20 iply = function
27530 28 76 61 6c 75 65 29 20 7b 0a 09 20 20 20 20 20 (value) {..
27540 20 20 20 74 68 69 73 2e 63 72 65 61 74 65 49 6e this.createIn
27550 73 4f 75 74 73 28 32 2c 20 30 29 3b 0a 09 20 20 sOuts(2, 0);..
27560 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
27570 20 74 68 65 20 69 6e 70 75 74 20 6e 6f 64 65 20 the input node
27580 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 is the same as t
27590 68 65 20 6f 75 74 70 75 74 20 6e 6f 64 65 0a 09 he output node..
275a0 09 09 20 2a 20 20 69 74 20 69 73 20 61 6c 73 6f .. * it is also
275b0 20 74 68 65 20 47 61 69 6e 4e 6f 64 65 20 77 68 the GainNode wh
275c0 69 63 68 20 68 61 6e 64 6c 65 73 20 74 68 65 20 ich handles the
275d0 73 63 61 6c 69 6e 67 20 6f 66 20 69 6e 63 6f 6d scaling of incom
275e0 69 6e 67 20 73 69 67 6e 61 6c 0a 09 09 09 20 2a ing signal.... *
275f0 20 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 .... * @type
27600 7b 47 61 69 6e 4e 6f 64 65 7d 0a 09 09 09 20 2a {GainNode}.... *
27610 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
27620 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
27630 5f 6d 75 6c 74 20 3d 20 74 68 69 73 2e 69 6e 70 _mult = this.inp
27640 75 74 5b 30 5d 20 3d 20 74 68 69 73 2e 6f 75 74 ut[0] = this.out
27650 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 put = new Tone.G
27660 61 69 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ain();..
27670 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 73 /**.... * the s
27680 63 61 6c 69 6e 67 20 70 61 72 61 6d 65 74 65 72 caling parameter
27690 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 41 .... * @type {A
276a0 75 64 69 6f 50 61 72 61 6d 7d 0a 09 09 09 20 2a udioParam}.... *
276b0 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
276c0 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
276d0 5f 70 61 72 61 6d 20 3d 20 74 68 69 73 2e 69 6e _param = this.in
276e0 70 75 74 5b 31 5d 20 3d 20 74 68 69 73 2e 6f 75 put[1] = this.ou
276f0 74 70 75 74 2e 67 61 69 6e 3b 0a 09 20 20 20 20 tput.gain;..
27700 20 20 20 20 74 68 69 73 2e 5f 70 61 72 61 6d 2e this._param.
27710 76 61 6c 75 65 20 3d 20 74 68 69 73 2e 64 65 66 value = this.def
27720 61 75 6c 74 41 72 67 28 76 61 6c 75 65 2c 20 30 aultArg(value, 0
27730 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
27740 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 Tone.extend(Tone
27750 2e 4d 75 6c 74 69 70 6c 79 2c 20 54 6f 6e 65 2e .Multiply, Tone.
27760 53 69 67 6e 61 6c 29 3b 0a 09 20 20 20 20 2f 2a Signal);.. /*
27770 2a 0a 09 09 20 2a 20 20 63 6c 65 61 6e 20 75 70 *... * clean up
27780 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
27790 7b 54 6f 6e 65 2e 4d 75 6c 74 69 70 6c 79 7d 20 {Tone.Multiply}
277a0 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
277b0 54 6f 6e 65 2e 4d 75 6c 74 69 70 6c 79 2e 70 72 Tone.Multiply.pr
277c0 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 ototype.dispose
277d0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
277e0 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 . Tone.pr
277f0 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e ototype.dispose.
27800 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 call(this);..
27810 20 20 20 20 20 74 68 69 73 2e 5f 6d 75 6c 74 2e this._mult.
27820 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
27830 20 20 20 20 74 68 69 73 2e 5f 6d 75 6c 74 20 3d this._mult =
27840 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
27850 74 68 69 73 2e 5f 70 61 72 61 6d 20 3d 20 6e 75 this._param = nu
27860 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ll;.. ret
27870 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
27880 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f ;.. return To
27890 6e 65 2e 4d 75 6c 74 69 70 6c 79 3b 0a 09 7d 29 ne.Multiply;..})
278a0 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 ;..Module(functi
278b0 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 on (Tone) {..
278c0 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 .. /**... *
278d0 20 40 63 6c 61 73 73 20 4e 65 67 61 74 65 20 74 @class Negate t
278e0 68 65 20 69 6e 63 6f 6d 69 6e 67 20 73 69 67 6e he incoming sign
278f0 61 6c 2e 20 69 2e 65 2e 20 61 6e 20 69 6e 70 75 al. i.e. an inpu
27900 74 20 73 69 67 6e 61 6c 20 6f 66 20 31 30 20 77 t signal of 10 w
27910 69 6c 6c 20 6f 75 74 70 75 74 20 2d 31 30 0a 09 ill output -10..
27920 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 . *... * @const
27930 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 ructor... * @ex
27940 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 53 69 67 6e tends {Tone.Sign
27950 61 6c 42 61 73 65 7d 0a 09 09 20 2a 20 20 40 65 alBase}... * @e
27960 78 61 6d 70 6c 65 0a 09 09 20 2a 20 76 61 72 20 xample... * var
27970 6e 65 67 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4e neg = new Tone.N
27980 65 67 61 74 65 28 29 3b 0a 09 09 20 2a 20 76 61 egate();... * va
27990 72 20 73 69 67 20 3d 20 6e 65 77 20 54 6f 6e 65 r sig = new Tone
279a0 2e 53 69 67 6e 61 6c 28 2d 32 29 2e 63 6f 6e 6e .Signal(-2).conn
279b0 65 63 74 28 6e 65 67 29 3b 0a 09 09 20 2a 20 2f ect(neg);... * /
279c0 2f 6f 75 74 70 75 74 20 6f 66 20 6e 65 67 20 69 /output of neg i
279d0 73 20 70 6f 73 69 74 69 76 65 20 32 2e 20 0a 09 s positive 2. ..
279e0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4e . */.. Tone.N
279f0 65 67 61 74 65 20 3d 20 66 75 6e 63 74 69 6f 6e egate = function
27a00 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f () {.. /
27a10 2a 2a 0a 09 09 09 20 2a 20 20 6e 65 67 61 74 69 **.... * negati
27a20 6f 6e 20 69 73 20 64 6f 6e 65 20 62 79 20 6d 75 on is done by mu
27a30 6c 74 69 70 6c 79 69 6e 67 20 62 79 20 2d 31 0a ltiplying by -1.
27a40 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f ... * @type {To
27a50 6e 65 2e 4d 75 6c 74 69 70 6c 79 7d 0a 09 09 09 ne.Multiply}....
27a60 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
27a70 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
27a80 73 2e 5f 6d 75 6c 74 69 70 6c 79 20 3d 20 74 68 s._multiply = th
27a90 69 73 2e 69 6e 70 75 74 20 3d 20 74 68 69 73 2e is.input = this.
27aa0 6f 75 74 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e output = new Ton
27ab0 65 2e 4d 75 6c 74 69 70 6c 79 28 2d 31 29 3b 0a e.Multiply(-1);.
27ac0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e . };.. Ton
27ad0 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 4e 65 e.extend(Tone.Ne
27ae0 67 61 74 65 2c 20 54 6f 6e 65 2e 53 69 67 6e 61 gate, Tone.Signa
27af0 6c 42 61 73 65 29 3b 0a 09 20 20 20 20 2f 2a 2a lBase);.. /**
27b00 0a 09 09 20 2a 20 20 63 6c 65 61 6e 20 75 70 0a ... * clean up.
27b10 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
27b20 54 6f 6e 65 2e 4e 65 67 61 74 65 7d 20 74 68 69 Tone.Negate} thi
27b30 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
27b40 65 2e 4e 65 67 61 74 65 2e 70 72 6f 74 6f 74 79 e.Negate.prototy
27b50 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e pe.dispose = fun
27b60 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
27b70 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 Tone.prototy
27b80 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 pe.dispose.call(
27b90 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 this);..
27ba0 74 68 69 73 2e 5f 6d 75 6c 74 69 70 6c 79 2e 64 this._multiply.d
27bb0 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
27bc0 20 20 20 74 68 69 73 2e 5f 6d 75 6c 74 69 70 6c this._multipl
27bd0 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 y = null;..
27be0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
27bf0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 . };.. ret
27c00 75 72 6e 20 54 6f 6e 65 2e 4e 65 67 61 74 65 3b urn Tone.Negate;
27c10 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 ..});..Module(fu
27c20 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a nction (Tone) {.
27c30 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 . .. /**..
27c40 09 20 2a 20 20 40 63 6c 61 73 73 20 53 75 62 74 . * @class Subt
27c50 72 61 63 74 20 74 68 65 20 73 69 67 6e 61 6c 20 ract the signal
27c60 63 6f 6e 6e 65 63 74 65 64 20 74 6f 20 3c 63 6f connected to <co
27c70 64 65 3e 69 6e 70 75 74 5b 31 5d 3c 2f 63 6f 64 de>input[1]</cod
27c80 65 3e 20 66 72 6f 6d 20 74 68 65 20 73 69 67 6e e> from the sign
27c90 61 6c 20 63 6f 6e 6e 65 63 74 65 64 20 0a 09 09 al connected ...
27ca0 20 2a 20 20 20 20 20 20 20 20 20 74 6f 20 3c 63 * to <c
27cb0 6f 64 65 3e 69 6e 70 75 74 5b 30 5d 3c 2f 63 6f ode>input[0]</co
27cc0 64 65 3e 2e 20 49 66 20 61 6e 20 61 72 67 75 6d de>. If an argum
27cd0 65 6e 74 20 69 73 20 70 72 6f 76 69 64 65 64 20 ent is provided
27ce0 69 6e 20 74 68 65 20 63 6f 6e 73 74 72 75 63 74 in the construct
27cf0 6f 72 2c 20 74 68 65 20 0a 09 09 20 2a 20 20 20 or, the ... *
27d00 20 20 20 20 20 20 73 69 67 6e 61 6c 73 20 3c 63 signals <c
27d10 6f 64 65 3e 2e 76 61 6c 75 65 3c 2f 63 6f 64 65 ode>.value</code
27d20 3e 20 77 69 6c 6c 20 62 65 20 73 75 62 74 72 61 > will be subtra
27d30 63 74 65 64 20 66 72 6f 6d 20 74 68 65 20 69 6e cted from the in
27d40 63 6f 6d 69 6e 67 20 73 69 67 6e 61 6c 2e 0a 09 coming signal...
27d50 09 20 2a 0a 09 09 20 2a 20 20 40 65 78 74 65 6e . *... * @exten
27d60 64 73 20 7b 54 6f 6e 65 2e 53 69 67 6e 61 6c 7d ds {Tone.Signal}
27d70 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 ... * @construc
27d80 74 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d tor... * @param
27d90 20 7b 6e 75 6d 62 65 72 3d 7d 20 76 61 6c 75 65 {number=} value
27da0 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 73 75 The value to su
27db0 62 74 72 61 63 74 20 66 72 6f 6d 20 74 68 65 20 btract from the
27dc0 69 6e 63 6f 6d 69 6e 67 20 73 69 67 6e 61 6c 2e incoming signal.
27dd0 20 49 66 20 74 68 65 20 76 61 6c 75 65 0a 09 09 If the value...
27de0 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
27df0 20 20 20 20 20 20 20 20 20 20 20 69 73 20 6f 6d is om
27e00 69 74 74 65 64 2c 20 69 74 20 77 69 6c 6c 20 73 itted, it will s
27e10 75 62 74 72 61 63 74 20 74 68 65 20 73 65 63 6f ubtract the seco
27e20 6e 64 20 73 69 67 6e 61 6c 20 66 72 6f 6d 20 74 nd signal from t
27e30 68 65 20 66 69 72 73 74 2e 0a 09 09 20 2a 20 20 he first.... *
27e40 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 76 61 @example... * va
27e50 72 20 73 75 62 20 3d 20 6e 65 77 20 54 6f 6e 65 r sub = new Tone
27e60 2e 53 75 62 74 72 61 63 74 28 31 29 3b 0a 09 09 .Subtract(1);...
27e70 20 2a 20 76 61 72 20 73 69 67 20 3d 20 6e 65 77 * var sig = new
27e80 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 34 29 2e Tone.Signal(4).
27e90 63 6f 6e 6e 65 63 74 28 73 75 62 29 3b 0a 09 09 connect(sub);...
27ea0 20 2a 20 2f 2f 74 68 65 20 6f 75 74 70 75 74 20 * //the output
27eb0 6f 66 20 73 75 62 20 69 73 20 33 2e 20 0a 09 09 of sub is 3. ...
27ec0 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 * @example...
27ed0 2a 20 76 61 72 20 73 75 62 20 3d 20 6e 65 77 20 * var sub = new
27ee0 54 6f 6e 65 2e 53 75 62 74 72 61 63 74 28 29 3b Tone.Subtract();
27ef0 0a 09 09 20 2a 20 76 61 72 20 73 69 67 41 20 3d ... * var sigA =
27f00 20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c new Tone.Signal
27f10 28 31 30 29 3b 0a 09 09 20 2a 20 76 61 72 20 73 (10);... * var s
27f20 69 67 42 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 igB = new Tone.S
27f30 69 67 6e 61 6c 28 32 2e 35 29 3b 0a 09 09 20 2a ignal(2.5);... *
27f40 20 73 69 67 41 2e 63 6f 6e 6e 65 63 74 28 73 75 sigA.connect(su
27f50 62 2c 20 30 2c 20 30 29 3b 0a 09 09 20 2a 20 73 b, 0, 0);... * s
27f60 69 67 42 2e 63 6f 6e 6e 65 63 74 28 73 75 62 2c igB.connect(sub,
27f70 20 30 2c 20 31 29 3b 0a 09 09 20 2a 20 2f 2f 6f 0, 1);... * //o
27f80 75 74 70 75 74 20 6f 66 20 73 75 62 20 69 73 20 utput of sub is
27f90 37 2e 35 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 7.5... */.. T
27fa0 6f 6e 65 2e 53 75 62 74 72 61 63 74 20 3d 20 66 one.Subtract = f
27fb0 75 6e 63 74 69 6f 6e 20 28 76 61 6c 75 65 29 20 unction (value)
27fc0 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e {.. this.
27fd0 63 72 65 61 74 65 49 6e 73 4f 75 74 73 28 32 2c createInsOuts(2,
27fe0 20 30 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 0);.. /*
27ff0 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 73 75 6d *.... * the sum
28000 6d 69 6e 67 20 6e 6f 64 65 0a 09 09 09 20 2a 20 ming node.... *
28010 20 40 74 79 70 65 20 7b 47 61 69 6e 4e 6f 64 65 @type {GainNode
28020 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
28030 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
28040 20 20 74 68 69 73 2e 5f 73 75 6d 20 3d 20 74 68 this._sum = th
28050 69 73 2e 69 6e 70 75 74 5b 30 5d 20 3d 20 74 68 is.input[0] = th
28060 69 73 2e 6f 75 74 70 75 74 20 3d 20 6e 65 77 20 is.output = new
28070 54 6f 6e 65 2e 47 61 69 6e 28 29 3b 0a 09 20 20 Tone.Gain();..
28080 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
28090 20 6e 65 67 61 74 65 20 74 68 65 20 69 6e 70 75 negate the inpu
280a0 74 20 6f 66 20 74 68 65 20 73 65 63 6f 6e 64 20 t of the second
280b0 69 6e 70 75 74 20 62 65 66 6f 72 65 20 63 6f 6e input before con
280c0 6e 65 63 74 69 6e 67 20 69 74 0a 09 09 09 20 2a necting it.... *
280d0 20 20 74 6f 20 74 68 65 20 73 75 6d 6d 69 6e 67 to the summing
280e0 20 6e 6f 64 65 2e 0a 09 09 09 20 2a 20 20 40 74 node..... * @t
280f0 79 70 65 20 7b 54 6f 6e 65 2e 4e 65 67 61 74 65 ype {Tone.Negate
28100 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
28110 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
28120 20 20 74 68 69 73 2e 5f 6e 65 67 20 3d 20 6e 65 this._neg = ne
28130 77 20 54 6f 6e 65 2e 4e 65 67 61 74 65 28 29 3b w Tone.Negate();
28140 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
28150 09 20 2a 20 20 74 68 65 20 6e 6f 64 65 20 77 68 . * the node wh
28160 65 72 65 20 74 68 65 20 76 61 6c 75 65 20 69 73 ere the value is
28170 20 73 65 74 0a 09 09 09 20 2a 20 20 40 70 72 69 set.... * @pri
28180 76 61 74 65 0a 09 09 09 20 2a 20 20 40 74 79 70 vate.... * @typ
28190 65 20 7b 54 6f 6e 65 2e 53 69 67 6e 61 6c 7d 0a e {Tone.Signal}.
281a0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
281b0 74 68 69 73 2e 5f 70 61 72 61 6d 20 3d 20 74 68 this._param = th
281c0 69 73 2e 69 6e 70 75 74 5b 31 5d 20 3d 20 6e 65 is.input[1] = ne
281d0 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 76 61 w Tone.Signal(va
281e0 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 lue);.. t
281f0 68 69 73 2e 5f 70 61 72 61 6d 2e 63 68 61 69 6e his._param.chain
28200 28 74 68 69 73 2e 5f 6e 65 67 2c 20 74 68 69 73 (this._neg, this
28210 2e 5f 73 75 6d 29 3b 0a 09 20 20 20 20 7d 3b 0a ._sum);.. };.
28220 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 . Tone.extend
28230 28 54 6f 6e 65 2e 53 75 62 74 72 61 63 74 2c 20 (Tone.Subtract,
28240 54 6f 6e 65 2e 53 69 67 6e 61 6c 29 3b 0a 09 20 Tone.Signal);..
28250 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 /**... * Cle
28260 61 6e 20 75 70 2e 0a 09 09 20 2a 20 20 40 72 65 an up.... * @re
28270 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 69 67 6e turns {Tone.Sign
28280 61 6c 42 61 73 65 7d 20 74 68 69 73 0a 09 09 20 alBase} this...
28290 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 75 62 */.. Tone.Sub
282a0 74 72 61 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e tract.prototype.
282b0 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 dispose = functi
282c0 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
282d0 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e Tone.prototype.
282e0 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 dispose.call(thi
282f0 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 s);.. thi
28300 73 2e 5f 6e 65 67 2e 64 69 73 70 6f 73 65 28 29 s._neg.dispose()
28310 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
28320 5f 6e 65 67 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 _neg = null;..
28330 20 20 20 20 20 20 74 68 69 73 2e 5f 73 75 6d 2e this._sum.
28340 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 20 disconnect();..
28350 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 75 6d this._sum
28360 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
28370 20 20 74 68 69 73 2e 5f 70 61 72 61 6d 2e 64 69 this._param.di
28380 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
28390 20 20 74 68 69 73 2e 5f 70 61 72 61 6d 20 3d 20 this._param =
283a0 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 null;.. r
283b0 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 eturn this;..
283c0 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 };.. return
283d0 54 6f 6e 65 2e 53 75 62 74 72 61 63 74 3b 0a 09 Tone.Subtract;..
283e0 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 });..Module(func
283f0 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 tion (Tone) {..
28400 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 .. /**...
28410 2a 20 20 40 63 6c 61 73 73 20 20 47 72 65 61 74 * @class Great
28420 65 72 54 68 61 6e 5a 65 72 6f 20 6f 75 74 70 75 erThanZero outpu
28430 74 73 20 31 20 77 68 65 6e 20 74 68 65 20 69 6e ts 1 when the in
28440 70 75 74 20 69 73 20 73 74 72 69 63 74 6c 79 20 put is strictly
28450 67 72 65 61 74 65 72 20 74 68 61 6e 20 7a 65 72 greater than zer
28460 6f 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 o... * ... * @
28470 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a constructor... *
28480 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
28490 2e 53 69 67 6e 61 6c 42 61 73 65 7d 0a 09 09 20 .SignalBase}...
284a0 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
284b0 20 76 61 72 20 67 74 30 20 3d 20 6e 65 77 20 54 var gt0 = new T
284c0 6f 6e 65 2e 47 72 65 61 74 65 72 54 68 61 6e 5a one.GreaterThanZ
284d0 65 72 6f 28 29 3b 0a 09 09 20 2a 20 76 61 72 20 ero();... * var
284e0 73 69 67 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 sig = new Tone.S
284f0 69 67 6e 61 6c 28 30 2e 30 31 29 2e 63 6f 6e 6e ignal(0.01).conn
28500 65 63 74 28 67 74 30 29 3b 0a 09 09 20 2a 20 2f ect(gt0);... * /
28510 2f 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 67 /the output of g
28520 74 30 20 69 73 20 31 2e 20 0a 09 09 20 2a 20 73 t0 is 1. ... * s
28530 69 67 2e 76 61 6c 75 65 20 3d 20 30 3b 0a 09 09 ig.value = 0;...
28540 20 2a 20 2f 2f 74 68 65 20 6f 75 74 70 75 74 20 * //the output
28550 6f 66 20 67 74 30 20 69 73 20 30 2e 20 0a 09 09 of gt0 is 0. ...
28560 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 47 72 */.. Tone.Gr
28570 65 61 74 65 72 54 68 61 6e 5a 65 72 6f 20 3d 20 eaterThanZero =
28580 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
28590 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
285a0 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 57 61 @type {Tone.Wa
285b0 76 65 53 68 61 70 65 72 7d 0a 09 09 09 20 2a 20 veShaper}.... *
285c0 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
285d0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
285e0 74 68 72 65 73 68 20 3d 20 74 68 69 73 2e 6f 75 thresh = this.ou
285f0 74 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e tput = new Tone.
28600 57 61 76 65 53 68 61 70 65 72 28 66 75 6e 63 74 WaveShaper(funct
28610 69 6f 6e 20 28 76 61 6c 29 20 7b 0a 09 20 20 20 ion (val) {..
28620 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c if (val
28630 20 3c 3d 20 30 29 20 7b 0a 09 20 20 20 20 20 20 <= 0) {..
28640 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
28650 20 30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 0;..
28660 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
28670 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
28680 6e 20 31 3b 0a 09 20 20 20 20 20 20 20 20 20 20 n 1;..
28690 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 2c 20 }.. },
286a0 31 32 37 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 127);.. /
286b0 2a 2a 0a 09 09 09 20 2a 20 20 73 63 61 6c 65 20 **.... * scale
286c0 74 68 65 20 66 69 72 73 74 20 74 68 72 65 73 68 the first thresh
286d0 6f 6c 64 65 64 20 73 69 67 6e 61 6c 20 62 79 20 olded signal by
286e0 61 20 6c 61 72 67 65 20 76 61 6c 75 65 2e 0a 09 a large value...
286f0 09 09 20 2a 20 20 74 68 69 73 20 77 69 6c 6c 20 .. * this will
28700 68 65 6c 70 20 77 69 74 68 20 76 61 6c 75 65 73 help with values
28710 20 77 68 69 63 68 20 61 72 65 20 76 65 72 79 20 which are very
28720 63 6c 6f 73 65 20 74 6f 20 30 0a 09 09 09 20 2a close to 0.... *
28730 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4d 75 @type {Tone.Mu
28740 6c 74 69 70 6c 79 7d 0a 09 09 09 20 2a 20 20 40 ltiply}.... * @
28750 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
28760 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 63 this._sc
28770 61 6c 65 20 3d 20 74 68 69 73 2e 69 6e 70 75 74 ale = this.input
28780 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 75 6c 74 = new Tone.Mult
28790 69 70 6c 79 28 31 30 30 30 30 29 3b 0a 09 20 20 iply(10000);..
287a0 20 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 63 74 69 //connecti
287b0 6f 6e 73 0a 09 20 20 20 20 20 20 20 20 74 68 69 ons.. thi
287c0 73 2e 5f 73 63 61 6c 65 2e 63 6f 6e 6e 65 63 74 s._scale.connect
287d0 28 74 68 69 73 2e 5f 74 68 72 65 73 68 29 3b 0a (this._thresh);.
287e0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e . };.. Ton
287f0 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 47 72 e.extend(Tone.Gr
28800 65 61 74 65 72 54 68 61 6e 5a 65 72 6f 2c 20 54 eaterThanZero, T
28810 6f 6e 65 2e 53 69 67 6e 61 6c 42 61 73 65 29 3b one.SignalBase);
28820 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
28830 64 69 73 70 6f 73 65 20 6d 65 74 68 6f 64 0a 09 dispose method..
28840 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 . * @returns {T
28850 6f 6e 65 2e 47 72 65 61 74 65 72 54 68 61 6e 5a one.GreaterThanZ
28860 65 72 6f 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a ero} this... */.
28870 09 20 20 20 20 54 6f 6e 65 2e 47 72 65 61 74 65 . Tone.Greate
28880 72 54 68 61 6e 5a 65 72 6f 2e 70 72 6f 74 6f 74 rThanZero.protot
28890 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 ype.dispose = fu
288a0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
288b0 20 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 Tone.protot
288c0 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c ype.dispose.call
288d0 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 (this);..
288e0 20 74 68 69 73 2e 5f 73 63 61 6c 65 2e 64 69 73 this._scale.dis
288f0 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
28900 20 74 68 69 73 2e 5f 73 63 61 6c 65 20 3d 20 6e this._scale = n
28910 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
28920 69 73 2e 5f 74 68 72 65 73 68 2e 64 69 73 70 6f is._thresh.dispo
28930 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
28940 68 69 73 2e 5f 74 68 72 65 73 68 20 3d 20 6e 75 his._thresh = nu
28950 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ll;.. ret
28960 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
28970 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f ;.. return To
28980 6e 65 2e 47 72 65 61 74 65 72 54 68 61 6e 5a 65 ne.GreaterThanZe
28990 72 6f 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 ro;..});..Module
289a0 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 (function (Tone)
289b0 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a {.. .. /*
289c0 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 20 *... * @class
289d0 4f 75 74 70 75 74 20 31 20 69 66 20 74 68 65 20 Output 1 if the
289e0 73 69 67 6e 61 6c 20 69 73 20 67 72 65 61 74 65 signal is greate
289f0 72 20 74 68 61 6e 20 74 68 65 20 76 61 6c 75 65 r than the value
28a00 2c 20 6f 74 68 65 72 77 69 73 65 20 6f 75 74 70 , otherwise outp
28a10 75 74 73 20 30 2e 0a 09 09 20 2a 20 20 20 20 20 uts 0.... *
28a20 20 20 20 20 20 63 61 6e 20 63 6f 6d 70 61 72 65 can compare
28a30 20 74 77 6f 20 73 69 67 6e 61 6c 73 20 6f 72 20 two signals or
28a40 61 20 73 69 67 6e 61 6c 20 61 6e 64 20 61 20 6e a signal and a n
28a50 75 6d 62 65 72 2e 20 0a 09 09 20 2a 20 20 0a 09 umber. ... * ..
28a60 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f . * @constructo
28a70 72 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 r... * @extends
28a80 20 7b 54 6f 6e 65 2e 53 69 67 6e 61 6c 7d 0a 09 {Tone.Signal}..
28a90 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e 75 6d . * @param {num
28aa0 62 65 72 7d 20 5b 76 61 6c 75 65 3d 30 5d 20 74 ber} [value=0] t
28ab0 68 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6d 70 he value to comp
28ac0 61 72 65 20 74 6f 20 74 68 65 20 69 6e 63 6f 6d are to the incom
28ad0 69 6e 67 20 73 69 67 6e 61 6c 0a 09 09 20 2a 20 ing signal... *
28ae0 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 76 @example... * v
28af0 61 72 20 67 74 20 3d 20 6e 65 77 20 54 6f 6e 65 ar gt = new Tone
28b00 2e 47 72 65 61 74 65 72 54 68 61 6e 28 32 29 3b .GreaterThan(2);
28b10 0a 09 09 20 2a 20 76 61 72 20 73 69 67 20 3d 20 ... * var sig =
28b20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 new Tone.Signal(
28b30 34 29 2e 63 6f 6e 6e 65 63 74 28 67 74 29 3b 0a 4).connect(gt);.
28b40 09 09 20 2a 20 2f 2f 6f 75 74 70 75 74 20 6f 66 .. * //output of
28b50 20 67 74 20 69 73 20 65 71 75 61 6c 20 31 2e 20 gt is equal 1.
28b60 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
28b70 2e 47 72 65 61 74 65 72 54 68 61 6e 20 3d 20 66 .GreaterThan = f
28b80 75 6e 63 74 69 6f 6e 20 28 76 61 6c 75 65 29 20 unction (value)
28b90 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e {.. this.
28ba0 63 72 65 61 74 65 49 6e 73 4f 75 74 73 28 32 2c createInsOuts(2,
28bb0 20 30 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 0);.. /*
28bc0 2a 0a 09 09 09 20 2a 20 20 73 75 62 74 72 61 63 *.... * subtrac
28bd0 74 20 74 68 65 20 61 6d 6f 75 6e 74 20 66 72 6f t the amount fro
28be0 6d 20 74 68 65 20 69 6e 63 6f 6d 69 6e 67 20 73 m the incoming s
28bf0 69 67 6e 61 6c 0a 09 09 09 20 2a 20 20 40 74 79 ignal.... * @ty
28c00 70 65 20 7b 54 6f 6e 65 2e 53 75 62 74 72 61 63 pe {Tone.Subtrac
28c10 74 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 t}.... * @priva
28c20 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
28c30 20 20 20 74 68 69 73 2e 5f 70 61 72 61 6d 20 3d this._param =
28c40 20 74 68 69 73 2e 69 6e 70 75 74 5b 30 5d 20 3d this.input[0] =
28c50 20 6e 65 77 20 54 6f 6e 65 2e 53 75 62 74 72 61 new Tone.Subtra
28c60 63 74 28 76 61 6c 75 65 29 3b 0a 09 20 20 20 20 ct(value);..
28c70 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74 5b 31 this.input[1
28c80 5d 20 3d 20 74 68 69 73 2e 5f 70 61 72 61 6d 2e ] = this._param.
28c90 69 6e 70 75 74 5b 31 5d 3b 0a 09 20 20 20 20 20 input[1];..
28ca0 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 63 6f /**.... * co
28cb0 6d 70 61 72 65 20 74 68 61 74 20 61 6d 6f 75 6e mpare that amoun
28cc0 74 20 74 6f 20 7a 65 72 6f 0a 09 09 09 20 2a 20 t to zero.... *
28cd0 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 47 72 65 @type {Tone.Gre
28ce0 61 74 65 72 54 68 61 6e 5a 65 72 6f 7d 0a 09 09 aterThanZero}...
28cf0 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
28d00 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
28d10 69 73 2e 5f 67 74 7a 20 3d 20 74 68 69 73 2e 6f is._gtz = this.o
28d20 75 74 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 utput = new Tone
28d30 2e 47 72 65 61 74 65 72 54 68 61 6e 5a 65 72 6f .GreaterThanZero
28d40 28 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 ();.. //c
28d50 6f 6e 6e 65 63 74 0a 09 20 20 20 20 20 20 20 20 onnect..
28d60 74 68 69 73 2e 5f 70 61 72 61 6d 2e 63 6f 6e 6e this._param.conn
28d70 65 63 74 28 74 68 69 73 2e 5f 67 74 7a 29 3b 0a ect(this._gtz);.
28d80 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e . };.. Ton
28d90 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 47 72 e.extend(Tone.Gr
28da0 65 61 74 65 72 54 68 61 6e 2c 20 54 6f 6e 65 2e eaterThan, Tone.
28db0 53 69 67 6e 61 6c 29 3b 0a 09 20 20 20 20 2f 2a Signal);.. /*
28dc0 2a 0a 09 09 20 2a 20 20 64 69 73 70 6f 73 65 20 *... * dispose
28dd0 6d 65 74 68 6f 64 0a 09 09 20 2a 20 20 40 72 65 method... * @re
28de0 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 47 72 65 61 turns {Tone.Grea
28df0 74 65 72 54 68 61 6e 7d 20 74 68 69 73 0a 09 09 terThan} this...
28e00 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 47 72 */.. Tone.Gr
28e10 65 61 74 65 72 54 68 61 6e 2e 70 72 6f 74 6f 74 eaterThan.protot
28e20 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 ype.dispose = fu
28e30 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
28e40 20 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 Tone.protot
28e50 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c ype.dispose.call
28e60 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 (this);..
28e70 20 74 68 69 73 2e 5f 70 61 72 61 6d 2e 64 69 73 this._param.dis
28e80 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
28e90 20 74 68 69 73 2e 5f 70 61 72 61 6d 20 3d 20 6e this._param = n
28ea0 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
28eb0 69 73 2e 5f 67 74 7a 2e 64 69 73 70 6f 73 65 28 is._gtz.dispose(
28ec0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
28ed0 2e 5f 67 74 7a 20 3d 20 6e 75 6c 6c 3b 0a 09 20 ._gtz = null;..
28ee0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
28ef0 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
28f00 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 47 72 65 return Tone.Gre
28f10 61 74 65 72 54 68 61 6e 3b 0a 09 7d 29 3b 0a 09 aterThan;..});..
28f20 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 Module(function
28f30 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 (Tone) {.. ..
28f40 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 /**... * @c
28f50 6c 61 73 73 20 52 65 74 75 72 6e 20 74 68 65 20 lass Return the
28f60 61 62 73 6f 6c 75 74 65 20 76 61 6c 75 65 20 6f absolute value o
28f70 66 20 61 6e 20 69 6e 63 6f 6d 69 6e 67 20 73 69 f an incoming si
28f80 67 6e 61 6c 2e 20 0a 09 09 20 2a 20 20 0a 09 09 gnal. ... * ...
28f90 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 * @constructor
28fa0 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 ... * @extends
28fb0 7b 54 6f 6e 65 2e 53 69 67 6e 61 6c 42 61 73 65 {Tone.SignalBase
28fc0 7d 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 }... * @example
28fd0 0a 09 09 20 2a 20 76 61 72 20 73 69 67 6e 61 6c ... * var signal
28fe0 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e = new Tone.Sign
28ff0 61 6c 28 2d 31 29 3b 0a 09 09 20 2a 20 76 61 72 al(-1);... * var
29000 20 61 62 73 20 3d 20 6e 65 77 20 54 6f 6e 65 2e abs = new Tone.
29010 41 62 73 28 29 3b 0a 09 09 20 2a 20 73 69 67 6e Abs();... * sign
29020 61 6c 2e 63 6f 6e 6e 65 63 74 28 61 62 73 29 3b al.connect(abs);
29030 0a 09 09 20 2a 20 2f 2f 74 68 65 20 6f 75 74 70 ... * //the outp
29040 75 74 20 6f 66 20 61 62 73 20 69 73 20 31 2e 20 ut of abs is 1.
29050 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
29060 2e 41 62 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 .Abs = function
29070 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f 2a () {.. /*
29080 2a 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b *.... * @type {
29090 54 6f 6e 65 2e 4c 65 73 73 54 68 61 6e 7d 0a 09 Tone.LessThan}..
290a0 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
290b0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
290c0 68 69 73 2e 5f 61 62 73 20 3d 20 74 68 69 73 2e his._abs = this.
290d0 69 6e 70 75 74 20 3d 20 74 68 69 73 2e 6f 75 74 input = this.out
290e0 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 57 put = new Tone.W
290f0 61 76 65 53 68 61 70 65 72 28 66 75 6e 63 74 69 aveShaper(functi
29100 6f 6e 20 28 76 61 6c 29 20 7b 0a 09 20 20 20 20 on (val) {..
29110 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 20 if (val
29120 3d 3d 3d 20 30 29 20 7b 0a 09 20 20 20 20 20 20 === 0) {..
29130 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
29140 20 30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 0;..
29150 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
29160 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
29170 6e 20 4d 61 74 68 2e 61 62 73 28 76 61 6c 29 3b n Math.abs(val);
29180 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
29190 09 20 20 20 20 20 20 20 20 7d 2c 20 31 32 37 29 . }, 127)
291a0 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 ;.. };.. T
291b0 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e one.extend(Tone.
291c0 41 62 73 2c 20 54 6f 6e 65 2e 53 69 67 6e 61 6c Abs, Tone.Signal
291d0 42 61 73 65 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a Base);.. /**.
291e0 09 09 20 2a 20 20 64 69 73 70 6f 73 65 20 6d 65 .. * dispose me
291f0 74 68 6f 64 0a 09 09 20 2a 20 20 40 72 65 74 75 thod... * @retu
29200 72 6e 73 20 7b 54 6f 6e 65 2e 41 62 73 7d 20 74 rns {Tone.Abs} t
29210 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
29220 6f 6e 65 2e 41 62 73 2e 70 72 6f 74 6f 74 79 70 one.Abs.prototyp
29230 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 e.dispose = func
29240 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
29250 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 Tone.prototyp
29260 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 e.dispose.call(t
29270 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 his);.. t
29280 68 69 73 2e 5f 61 62 73 2e 64 69 73 70 6f 73 65 his._abs.dispose
29290 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
292a0 73 2e 5f 61 62 73 20 3d 20 6e 75 6c 6c 3b 0a 09 s._abs = null;..
292b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
292c0 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
292d0 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 41 62 return Tone.Ab
292e0 73 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 s;..});..Module(
292f0 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 function (Tone)
29300 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a {.. .. /**
29310 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 53 69 ... * @class Si
29320 67 6e 61 6c 2d 72 61 74 65 20 6d 6f 64 75 6c 6f gnal-rate modulo
29330 20 6f 70 65 72 61 74 6f 72 2e 20 4f 6e 6c 79 20 operator. Only
29340 77 6f 72 6b 73 20 69 6e 20 41 75 64 69 6f 52 61 works in AudioRa
29350 6e 67 65 20 5b 2d 31 2c 20 31 5d 20 61 6e 64 20 nge [-1, 1] and
29360 66 6f 72 20 6d 6f 64 75 6c 75 73 0a 09 09 20 2a for modulus... *
29370 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 73 20 values
29380 69 6e 20 74 68 65 20 4e 6f 72 6d 61 6c 52 61 6e in the NormalRan
29390 67 65 2e 20 0a 09 09 20 2a 0a 09 09 20 2a 20 20 ge. ... *... *
293a0 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 @constructor...
293b0 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e * @extends {Ton
293c0 65 2e 53 69 67 6e 61 6c 42 61 73 65 7d 0a 09 09 e.SignalBase}...
293d0 20 2a 20 20 40 70 61 72 61 6d 20 7b 4e 6f 72 6d * @param {Norm
293e0 61 6c 52 61 6e 67 65 7d 20 6d 6f 64 75 6c 75 73 alRange} modulus
293f0 20 54 68 65 20 6d 6f 64 75 6c 75 73 20 74 6f 20 The modulus to
29400 61 70 70 6c 79 2e 0a 09 09 20 2a 20 20 40 65 78 apply.... * @ex
29410 61 6d 70 6c 65 0a 09 09 20 2a 20 76 61 72 20 6d ample... * var m
29420 6f 64 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 6f od = new Tone.Mo
29430 64 75 6c 6f 28 30 2e 32 29 0a 09 09 20 2a 20 76 dulo(0.2)... * v
29440 61 72 20 73 69 67 20 3d 20 6e 65 77 20 54 6f 6e ar sig = new Ton
29450 65 2e 53 69 67 6e 61 6c 28 30 2e 35 29 2e 63 6f e.Signal(0.5).co
29460 6e 6e 65 63 74 28 6d 6f 64 29 3b 0a 09 09 20 2a nnect(mod);... *
29470 20 2f 2f 6d 6f 64 20 6f 75 74 70 75 74 73 20 30 //mod outputs 0
29480 2e 31 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f .1... */.. To
29490 6e 65 2e 4d 6f 64 75 6c 6f 20 3d 20 66 75 6e 63 ne.Modulo = func
294a0 74 69 6f 6e 20 28 6d 6f 64 75 6c 75 73 29 20 7b tion (modulus) {
294b0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 .. this.c
294c0 72 65 61 74 65 49 6e 73 4f 75 74 73 28 31 2c 20 reateInsOuts(1,
294d0 30 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0);.. /**
294e0 0a 09 09 09 20 2a 20 20 41 20 77 61 76 65 73 68 .... * A wavesh
294f0 61 70 65 72 20 67 65 74 73 20 74 68 65 20 69 6e aper gets the in
29500 74 65 67 65 72 20 6d 75 6c 74 69 70 6c 65 20 6f teger multiple o
29510 66 20 0a 09 09 09 20 2a 20 20 74 68 65 20 69 6e f .... * the in
29520 70 75 74 20 73 69 67 6e 61 6c 20 61 6e 64 20 74 put signal and t
29530 68 65 20 6d 6f 64 75 6c 75 73 2e 0a 09 09 09 20 he modulus.....
29540 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
29550 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 57 * @type {Tone.W
29560 61 76 65 53 68 61 70 65 72 7d 0a 09 09 09 20 2a aveShaper}.... *
29570 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
29580 5f 73 68 61 70 65 72 20 3d 20 6e 65 77 20 54 6f _shaper = new To
29590 6e 65 2e 57 61 76 65 53 68 61 70 65 72 28 4d 61 ne.WaveShaper(Ma
295a0 74 68 2e 70 6f 77 28 32 2c 20 31 36 29 29 3b 0a th.pow(2, 16));.
295b0 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
295c0 20 2a 20 20 74 68 65 20 69 6e 74 65 67 65 72 20 * the integer
295d0 6d 75 6c 74 69 70 6c 65 20 69 73 20 6d 75 6c 74 multiple is mult
295e0 69 70 6c 69 65 64 20 62 79 20 74 68 65 20 6d 6f iplied by the mo
295f0 64 75 6c 75 73 0a 09 09 09 20 2a 20 20 40 74 79 dulus.... * @ty
29600 70 65 20 20 7b 54 6f 6e 65 2e 4d 75 6c 74 69 70 pe {Tone.Multip
29610 6c 79 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 ly}.... * @priv
29620 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
29630 20 20 20 20 74 68 69 73 2e 5f 6d 75 6c 74 69 70 this._multip
29640 6c 79 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 75 ly = new Tone.Mu
29650 6c 74 69 70 6c 79 28 29 3b 0a 09 20 20 20 20 20 ltiply();..
29660 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 61 6e /**.... * an
29670 64 20 73 75 62 74 72 61 63 74 65 64 20 66 72 6f d subtracted fro
29680 6d 20 74 68 65 20 69 6e 70 75 74 20 73 69 67 6e m the input sign
29690 61 6c 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 al.... * @type
296a0 20 7b 54 6f 6e 65 2e 53 75 62 74 72 61 63 74 7d {Tone.Subtract}
296b0 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
296c0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
296d0 20 74 68 69 73 2e 5f 73 75 62 74 72 61 63 74 20 this._subtract
296e0 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 = this.output =
296f0 6e 65 77 20 54 6f 6e 65 2e 53 75 62 74 72 61 63 new Tone.Subtrac
29700 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a t();.. /*
29710 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 6d 6f 64 *.... * the mod
29720 75 6c 75 73 20 73 69 67 6e 61 6c 0a 09 09 09 20 ulus signal....
29730 2a 20 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 2e * @type {Tone.
29740 53 69 67 6e 61 6c 7d 0a 09 09 09 20 2a 20 20 40 Signal}.... * @
29750 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
29760 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f this._mo
29770 64 53 69 67 6e 61 6c 20 3d 20 6e 65 77 20 54 6f dSignal = new To
29780 6e 65 2e 53 69 67 6e 61 6c 28 6d 6f 64 75 6c 75 ne.Signal(modulu
29790 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 s);.. //c
297a0 6f 6e 6e 65 63 74 69 6f 6e 73 0a 09 20 20 20 20 onnections..
297b0 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74 2e 66 this.input.f
297c0 61 6e 28 74 68 69 73 2e 5f 73 68 61 70 65 72 2c an(this._shaper,
297d0 20 74 68 69 73 2e 5f 73 75 62 74 72 61 63 74 29 this._subtract)
297e0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
297f0 5f 6d 6f 64 53 69 67 6e 61 6c 2e 63 6f 6e 6e 65 _modSignal.conne
29800 63 74 28 74 68 69 73 2e 5f 6d 75 6c 74 69 70 6c ct(this._multipl
29810 79 2c 20 30 2c 20 30 29 3b 0a 09 20 20 20 20 20 y, 0, 0);..
29820 20 20 20 74 68 69 73 2e 5f 73 68 61 70 65 72 2e this._shaper.
29830 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 6d 75 connect(this._mu
29840 6c 74 69 70 6c 79 2c 20 30 2c 20 31 29 3b 0a 09 ltiply, 0, 1);..
29850 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 75 this._mu
29860 6c 74 69 70 6c 79 2e 63 6f 6e 6e 65 63 74 28 74 ltiply.connect(t
29870 68 69 73 2e 5f 73 75 62 74 72 61 63 74 2c 20 30 his._subtract, 0
29880 2c 20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 74 , 1);.. t
29890 68 69 73 2e 5f 73 65 74 57 61 76 65 53 68 61 70 his._setWaveShap
298a0 65 72 28 6d 6f 64 75 6c 75 73 29 3b 0a 09 20 20 er(modulus);..
298b0 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 };.. Tone.e
298c0 78 74 65 6e 64 28 54 6f 6e 65 2e 4d 6f 64 75 6c xtend(Tone.Modul
298d0 6f 2c 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 42 61 o, Tone.SignalBa
298e0 73 65 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 se);.. /**...
298f0 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 6e 75 6d * @param {num
29900 62 65 72 7d 20 20 6d 6f 64 20 20 74 68 65 20 6d ber} mod the m
29910 6f 64 75 6c 75 73 20 74 6f 20 61 70 70 6c 79 0a odulus to apply.
29920 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
29930 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d . */.. Tone.M
29940 6f 64 75 6c 6f 2e 70 72 6f 74 6f 74 79 70 65 2e odulo.prototype.
29950 5f 73 65 74 57 61 76 65 53 68 61 70 65 72 20 3d _setWaveShaper =
29960 20 66 75 6e 63 74 69 6f 6e 20 28 6d 6f 64 29 20 function (mod)
29970 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e {.. this.
29980 5f 73 68 61 70 65 72 2e 73 65 74 4d 61 70 28 66 _shaper.setMap(f
29990 75 6e 63 74 69 6f 6e 20 28 76 61 6c 29 20 7b 0a unction (val) {.
299a0 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
299b0 20 6d 75 6c 74 69 70 6c 65 20 3d 20 4d 61 74 68 multiple = Math
299c0 2e 66 6c 6f 6f 72 28 28 76 61 6c 20 2b 20 30 2e .floor((val + 0.
299d0 30 30 30 31 29 20 2f 20 6d 6f 64 29 3b 0a 09 20 0001) / mod);..
299e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
299f0 6e 20 6d 75 6c 74 69 70 6c 65 3b 0a 09 20 20 20 n multiple;..
29a00 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 7d 3b });.. };
29a10 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 .. /**... * T
29a20 68 65 20 6d 6f 64 75 6c 75 73 20 76 61 6c 75 65 he modulus value
29a30 2e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 .... * @memberOf
29a40 20 54 6f 6e 65 2e 4d 6f 64 75 6c 6f 23 0a 09 09 Tone.Modulo#...
29a50 20 2a 20 40 74 79 70 65 20 7b 4e 6f 72 6d 61 6c * @type {Normal
29a60 52 61 6e 67 65 7d 0a 09 09 20 2a 20 40 6e 61 6d Range}... * @nam
29a70 65 20 76 61 6c 75 65 0a 09 09 20 2a 2f 0a 09 20 e value... */..
29a80 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
29a90 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 4d 6f Property(Tone.Mo
29aa0 64 75 6c 6f 2e 70 72 6f 74 6f 74 79 70 65 2c 20 dulo.prototype,
29ab0 27 76 61 6c 75 65 27 2c 20 7b 0a 09 20 20 20 20 'value', {..
29ac0 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
29ad0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
29ae0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
29af0 5f 6d 6f 64 53 69 67 6e 61 6c 2e 76 61 6c 75 65 _modSignal.value
29b00 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 ;.. },..
29b10 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 set: func
29b20 74 69 6f 6e 20 28 6d 6f 64 29 20 7b 0a 09 20 20 tion (mod) {..
29b30 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
29b40 6d 6f 64 53 69 67 6e 61 6c 2e 76 61 6c 75 65 20 modSignal.value
29b50 3d 20 6d 6f 64 3b 0a 09 20 20 20 20 20 20 20 20 = mod;..
29b60 20 20 20 20 74 68 69 73 2e 5f 73 65 74 57 61 76 this._setWav
29b70 65 53 68 61 70 65 72 28 6d 6f 64 29 3b 0a 09 20 eShaper(mod);..
29b80 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 }.. })
29b90 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
29ba0 63 6c 65 61 6e 20 75 70 0a 09 09 20 2a 20 20 40 clean up... * @
29bb0 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 4d 6f returns {Tone.Mo
29bc0 64 75 6c 6f 7d 20 74 68 69 73 0a 09 09 20 2a 2f dulo} this... */
29bd0 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 6f 64 75 6c .. Tone.Modul
29be0 6f 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 o.prototype.disp
29bf0 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ose = function (
29c00 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e ) {.. Ton
29c10 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 e.prototype.disp
29c20 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a ose.call(this);.
29c30 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 . this._s
29c40 68 61 70 65 72 2e 64 69 73 70 6f 73 65 28 29 3b haper.dispose();
29c50 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
29c60 73 68 61 70 65 72 20 3d 20 6e 75 6c 6c 3b 0a 09 shaper = null;..
29c70 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 75 this._mu
29c80 6c 74 69 70 6c 79 2e 64 69 73 70 6f 73 65 28 29 ltiply.dispose()
29c90 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
29ca0 5f 6d 75 6c 74 69 70 6c 79 20 3d 20 6e 75 6c 6c _multiply = null
29cb0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
29cc0 5f 73 75 62 74 72 61 63 74 2e 64 69 73 70 6f 73 _subtract.dispos
29cd0 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
29ce0 69 73 2e 5f 73 75 62 74 72 61 63 74 20 3d 20 6e is._subtract = n
29cf0 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
29d00 69 73 2e 5f 6d 6f 64 53 69 67 6e 61 6c 2e 64 69 is._modSignal.di
29d10 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
29d20 20 20 74 68 69 73 2e 5f 6d 6f 64 53 69 67 6e 61 this._modSigna
29d30 6c 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 l = null;..
29d40 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
29d50 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 . };.. ret
29d60 75 72 6e 20 54 6f 6e 65 2e 4d 6f 64 75 6c 6f 3b urn Tone.Modulo;
29d70 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 ..});..Module(fu
29d80 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a nction (Tone) {.
29d90 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 . .. /**..
29da0 09 20 2a 20 20 40 63 6c 61 73 73 20 41 75 64 69 . * @class Audi
29db0 6f 54 6f 47 61 69 6e 20 63 6f 6e 76 65 72 74 73 oToGain converts
29dc0 20 61 6e 20 69 6e 70 75 74 20 69 6e 20 41 75 64 an input in Aud
29dd0 69 6f 52 61 6e 67 65 20 5b 2d 31 2c 31 5d 20 74 ioRange [-1,1] t
29de0 6f 20 4e 6f 72 6d 61 6c 52 61 6e 67 65 20 5b 30 o NormalRange [0
29df0 2c 31 5d 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 ,1]. ... *
29e00 20 20 20 53 65 65 20 54 6f 6e 65 2e 47 61 69 6e See Tone.Gain
29e10 54 6f 41 75 64 69 6f 2e 0a 09 09 20 2a 0a 09 09 ToAudio.... *...
29e20 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f * @extends {To
29e30 6e 65 2e 53 69 67 6e 61 6c 42 61 73 65 7d 0a 09 ne.SignalBase}..
29e40 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f . * @constructo
29e50 72 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 r... * @example
29e60 0a 09 09 20 2a 20 20 76 61 72 20 61 32 67 20 3d ... * var a2g =
29e70 20 6e 65 77 20 54 6f 6e 65 2e 41 75 64 69 6f 54 new Tone.AudioT
29e80 6f 47 61 69 6e 28 29 3b 0a 09 09 20 2a 2f 0a 09 oGain();... */..
29e90 20 20 20 20 54 6f 6e 65 2e 41 75 64 69 6f 54 6f Tone.AudioTo
29ea0 47 61 69 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 Gain = function
29eb0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f 2a () {.. /*
29ec0 2a 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b *.... * @type {
29ed0 57 61 76 65 53 68 61 70 65 72 4e 6f 64 65 7d 0a WaveShaperNode}.
29ee0 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
29ef0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
29f00 74 68 69 73 2e 5f 6e 6f 72 6d 20 3d 20 74 68 69 this._norm = thi
29f10 73 2e 69 6e 70 75 74 20 3d 20 74 68 69 73 2e 6f s.input = this.o
29f20 75 74 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 utput = new Tone
29f30 2e 57 61 76 65 53 68 61 70 65 72 28 66 75 6e 63 .WaveShaper(func
29f40 74 69 6f 6e 20 28 78 29 20 7b 0a 09 20 20 20 20 tion (x) {..
29f50 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 return (
29f60 78 20 2b 20 31 29 20 2f 20 32 3b 0a 09 20 20 20 x + 1) / 2;..
29f70 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 7d 3b });.. };
29f80 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e .. Tone.exten
29f90 64 28 54 6f 6e 65 2e 41 75 64 69 6f 54 6f 47 61 d(Tone.AudioToGa
29fa0 69 6e 2c 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 42 in, Tone.SignalB
29fb0 61 73 65 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 ase);.. /**..
29fc0 09 20 2a 20 20 63 6c 65 61 6e 20 75 70 0a 09 09 . * clean up...
29fd0 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f * @returns {To
29fe0 6e 65 2e 41 75 64 69 6f 54 6f 47 61 69 6e 7d 20 ne.AudioToGain}
29ff0 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
2a000 54 6f 6e 65 2e 41 75 64 69 6f 54 6f 47 61 69 6e Tone.AudioToGain
2a010 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
2a020 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 se = function ()
2a030 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 {.. Tone
2a040 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
2a050 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 se.call(this);..
2a060 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6e 6f this._no
2a070 72 6d 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 rm.dispose();..
2a080 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6e 6f 72 this._nor
2a090 6d 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 m = null;..
2a0a0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
2a0b0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 . };.. ret
2a0c0 75 72 6e 20 54 6f 6e 65 2e 41 75 64 69 6f 54 6f urn Tone.AudioTo
2a0d0 47 61 69 6e 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 Gain;..});..Modu
2a0e0 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e le(function (Ton
2a0f0 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 e) {.. ..
2a100 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 /**... * @class
2a110 20 45 76 61 6c 75 61 74 65 20 61 6e 20 65 78 70 Evaluate an exp
2a120 72 65 73 73 69 6f 6e 20 61 74 20 61 75 64 69 6f ression at audio
2a130 20 72 61 74 65 2e 20 3c 62 72 3e 3c 62 72 3e 0a rate. <br><br>.
2a140 09 09 20 2a 20 20 20 20 20 20 20 20 20 50 61 72 .. * Par
2a150 73 69 6e 67 20 63 6f 64 65 20 6d 6f 64 69 66 69 sing code modifi
2a160 65 64 20 66 72 6f 6d 20 68 74 74 70 73 3a 2f 2f ed from https://
2a170 63 6f 64 65 2e 67 6f 6f 67 6c 65 2e 63 6f 6d 2f code.google.com/
2a180 70 2f 74 61 70 64 69 67 69 74 2f 0a 09 09 20 2a p/tapdigit/... *
2a190 20 20 20 20 20 20 20 20 20 43 6f 70 79 72 69 67 Copyrig
2a1a0 68 74 20 32 30 31 31 20 32 30 31 32 20 41 72 69 ht 2011 2012 Ari
2a1b0 79 61 20 48 69 64 61 79 61 74 2c 20 4e 65 77 20 ya Hidayat, New
2a1c0 42 53 44 20 4c 69 63 65 6e 73 65 0a 09 09 20 2a BSD License... *
2a1d0 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 ... * @extends
2a1e0 7b 54 6f 6e 65 2e 53 69 67 6e 61 6c 42 61 73 65 {Tone.SignalBase
2a1f0 7d 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 }... * @constru
2a200 63 74 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 61 ctor... * @para
2a210 6d 20 7b 73 74 72 69 6e 67 7d 20 65 78 70 72 20 m {string} expr
2a220 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 74 the expression t
2a230 6f 20 67 65 6e 65 72 61 74 65 0a 09 09 20 2a 20 o generate... *
2a240 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f @example... * /
2a250 2f 61 64 64 73 20 74 68 65 20 73 69 67 6e 61 6c /adds the signal
2a260 73 20 66 72 6f 6d 20 69 6e 70 75 74 5b 30 5d 20 s from input[0]
2a270 61 6e 64 20 69 6e 70 75 74 5b 31 5d 2e 0a 09 09 and input[1]....
2a280 20 2a 20 76 61 72 20 65 78 70 72 20 3d 20 6e 65 * var expr = ne
2a290 77 20 54 6f 6e 65 2e 45 78 70 72 28 22 24 30 20 w Tone.Expr("$0
2a2a0 2b 20 24 31 22 29 3b 0a 09 09 20 2a 2f 0a 09 20 + $1");... */..
2a2b0 20 20 20 54 6f 6e 65 2e 45 78 70 72 20 3d 20 66 Tone.Expr = f
2a2c0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
2a2d0 20 20 20 20 20 20 76 61 72 20 65 78 70 72 20 3d var expr =
2a2e0 20 74 68 69 73 2e 5f 72 65 70 6c 61 63 65 6d 65 this._replaceme
2a2f0 6e 74 73 28 41 72 72 61 79 2e 70 72 6f 74 6f 74 nts(Array.protot
2a300 79 70 65 2e 73 6c 69 63 65 2e 63 61 6c 6c 28 61 ype.slice.call(a
2a310 72 67 75 6d 65 6e 74 73 29 29 3b 0a 09 20 20 20 rguments));..
2a320 20 20 20 20 20 76 61 72 20 69 6e 70 75 74 43 6f var inputCo
2a330 75 6e 74 20 3d 20 74 68 69 73 2e 5f 70 61 72 73 unt = this._pars
2a340 65 49 6e 70 75 74 73 28 65 78 70 72 29 3b 0a 09 eInputs(expr);..
2a350 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
2a360 2a 20 20 68 6f 6c 64 20 6f 6e 74 6f 20 61 6c 6c * hold onto all
2a370 20 6f 66 20 74 68 65 20 6e 6f 64 65 73 20 66 6f of the nodes fo
2a380 72 20 64 69 73 70 6f 73 61 6c 0a 09 09 09 20 2a r disposal.... *
2a390 20 20 40 74 79 70 65 20 7b 41 72 72 61 79 7d 0a @type {Array}.
2a3a0 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
2a3b0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
2a3c0 74 68 69 73 2e 5f 6e 6f 64 65 73 20 3d 20 5b 5d this._nodes = []
2a3d0 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
2a3e0 09 09 20 2a 20 20 54 68 65 20 69 6e 70 75 74 73 .. * The inputs
2a3f0 2e 20 54 68 65 20 6c 65 6e 67 74 68 20 69 73 20 . The length is
2a400 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68 determined by th
2a410 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 0a 09 e expression. ..
2a420 09 09 20 2a 20 20 40 74 79 70 65 20 7b 41 72 72 .. * @type {Arr
2a430 61 79 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ay}.... */..
2a440 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74 20 3d this.input =
2a450 20 6e 65 77 20 41 72 72 61 79 28 69 6e 70 75 74 new Array(input
2a460 43 6f 75 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 Count);..
2a470 20 2f 2f 63 72 65 61 74 65 20 61 20 67 61 69 6e //create a gain
2a480 20 66 6f 72 20 65 61 63 68 20 69 6e 70 75 74 0a for each input.
2a490 09 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 . for (va
2a4a0 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 69 6e 70 r i = 0; i < inp
2a4b0 75 74 43 6f 75 6e 74 3b 20 69 2b 2b 29 20 7b 0a utCount; i++) {.
2a4c0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
2a4d0 73 2e 69 6e 70 75 74 5b 69 5d 20 3d 20 74 68 69 s.input[i] = thi
2a4e0 73 2e 63 6f 6e 74 65 78 74 2e 63 72 65 61 74 65 s.context.create
2a4f0 47 61 69 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 Gain();..
2a500 20 7d 0a 09 20 20 20 20 20 20 20 20 2f 2f 70 61 }.. //pa
2a510 72 73 65 20 74 68 65 20 73 79 6e 74 61 78 20 74 rse the syntax t
2a520 72 65 65 0a 09 20 20 20 20 20 20 20 20 76 61 72 ree.. var
2a530 20 74 72 65 65 20 3d 20 74 68 69 73 2e 5f 70 61 tree = this._pa
2a540 72 73 65 54 72 65 65 28 65 78 70 72 29 3b 0a 09 rseTree(expr);..
2a550 20 20 20 20 20 20 20 20 2f 2f 65 76 61 6c 75 61 //evalua
2a560 74 65 20 74 68 65 20 72 65 73 75 6c 74 73 0a 09 te the results..
2a570 20 20 20 20 20 20 20 20 76 61 72 20 72 65 73 75 var resu
2a580 6c 74 3b 0a 09 20 20 20 20 20 20 20 20 74 72 79 lt;.. try
2a590 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
2a5a0 72 65 73 75 6c 74 20 3d 20 74 68 69 73 2e 5f 65 result = this._e
2a5b0 76 61 6c 28 74 72 65 65 29 3b 0a 09 20 20 20 20 val(tree);..
2a5c0 20 20 20 20 7d 20 63 61 74 63 68 20 28 65 29 20 } catch (e)
2a5d0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
2a5e0 68 69 73 2e 5f 64 69 73 70 6f 73 65 4e 6f 64 65 his._disposeNode
2a5f0 73 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 s();..
2a600 20 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f throw new Erro
2a610 72 28 27 54 6f 6e 65 2e 45 78 70 72 3a 20 43 6f r('Tone.Expr: Co
2a620 75 6c 64 20 65 76 61 6c 75 61 74 65 20 65 78 70 uld evaluate exp
2a630 72 65 73 73 69 6f 6e 3a 20 27 20 2b 20 65 78 70 ression: ' + exp
2a640 72 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 r);.. }..
2a650 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
2a660 2a 20 20 54 68 65 20 6f 75 74 70 75 74 20 6e 6f * The output no
2a670 64 65 20 69 73 20 74 68 65 20 72 65 73 75 6c 74 de is the result
2a680 20 6f 66 20 74 68 65 20 65 78 70 72 65 73 73 69 of the expressi
2a690 6f 6e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 on.... * @type
2a6a0 7b 54 6f 6e 65 7d 0a 09 09 09 20 2a 2f 0a 09 20 {Tone}.... */..
2a6b0 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75 74 70 this.outp
2a6c0 75 74 20 3d 20 72 65 73 75 6c 74 3b 0a 09 20 20 ut = result;..
2a6d0 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 };.. Tone.e
2a6e0 78 74 65 6e 64 28 54 6f 6e 65 2e 45 78 70 72 2c xtend(Tone.Expr,
2a6f0 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 42 61 73 65 Tone.SignalBase
2a700 29 3b 0a 09 20 20 20 20 2f 2f 73 6f 6d 65 20 68 );.. //some h
2a710 65 6c 70 65 72 73 20 74 6f 20 63 75 74 20 64 6f elpers to cut do
2a720 77 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 wn the amount of
2a730 20 63 6f 64 65 0a 09 20 20 20 20 66 75 6e 63 74 code.. funct
2a740 69 6f 6e 20 61 70 70 6c 79 42 69 6e 61 72 79 28 ion applyBinary(
2a750 43 6f 6e 73 74 72 75 63 74 6f 72 2c 20 61 72 67 Constructor, arg
2a760 73 2c 20 73 65 6c 66 29 20 7b 0a 09 20 20 20 20 s, self) {..
2a770 20 20 20 20 76 61 72 20 6f 70 20 3d 20 6e 65 77 var op = new
2a780 20 43 6f 6e 73 74 72 75 63 74 6f 72 28 29 3b 0a Constructor();.
2a790 09 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 65 . self._e
2a7a0 76 61 6c 28 61 72 67 73 5b 30 5d 29 2e 63 6f 6e val(args[0]).con
2a7b0 6e 65 63 74 28 6f 70 2c 20 30 2c 20 30 29 3b 0a nect(op, 0, 0);.
2a7c0 09 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 65 . self._e
2a7d0 76 61 6c 28 61 72 67 73 5b 31 5d 29 2e 63 6f 6e val(args[1]).con
2a7e0 6e 65 63 74 28 6f 70 2c 20 30 2c 20 31 29 3b 0a nect(op, 0, 1);.
2a7f0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
2a800 6f 70 3b 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 op;.. }..
2a810 66 75 6e 63 74 69 6f 6e 20 61 70 70 6c 79 55 6e function applyUn
2a820 61 72 79 28 43 6f 6e 73 74 72 75 63 74 6f 72 2c ary(Constructor,
2a830 20 61 72 67 73 2c 20 73 65 6c 66 29 20 7b 0a 09 args, self) {..
2a840 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 20 3d var op =
2a850 20 6e 65 77 20 43 6f 6e 73 74 72 75 63 74 6f 72 new Constructor
2a860 28 29 3b 0a 09 20 20 20 20 20 20 20 20 73 65 6c ();.. sel
2a870 66 2e 5f 65 76 61 6c 28 61 72 67 73 5b 30 5d 29 f._eval(args[0])
2a880 2e 63 6f 6e 6e 65 63 74 28 6f 70 2c 20 30 2c 20 .connect(op, 0,
2a890 30 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 0);.. ret
2a8a0 75 72 6e 20 6f 70 3b 0a 09 20 20 20 20 7d 0a 09 urn op;.. }..
2a8b0 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 function get
2a8c0 4e 75 6d 62 65 72 28 61 72 67 29 20 7b 0a 09 20 Number(arg) {..
2a8d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 return ar
2a8e0 67 20 3f 20 70 61 72 73 65 46 6c 6f 61 74 28 61 g ? parseFloat(a
2a8f0 72 67 29 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b rg) : undefined;
2a900 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 66 75 6e .. }.. fun
2a910 63 74 69 6f 6e 20 6c 69 74 65 72 61 6c 4e 75 6d ction literalNum
2a920 62 65 72 28 61 72 67 29 20 7b 0a 09 20 20 20 20 ber(arg) {..
2a930 20 20 20 20 72 65 74 75 72 6e 20 61 72 67 20 26 return arg &
2a940 26 20 61 72 67 2e 61 72 67 73 20 3f 20 70 61 72 & arg.args ? par
2a950 73 65 46 6c 6f 61 74 28 61 72 67 2e 61 72 67 73 seFloat(arg.args
2a960 29 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 09 ) : undefined;..
2a970 20 20 20 20 7d 0a 09 20 20 20 20 2f 2a 0a 09 09 }.. /*...
2a980 20 2a 20 20 74 68 65 20 45 78 70 72 65 73 73 69 * the Expressi
2a990 6f 6e 73 20 74 68 61 74 20 54 6f 6e 65 2e 45 78 ons that Tone.Ex
2a9a0 70 72 20 63 61 6e 20 70 61 72 73 65 2e 0a 09 09 pr can parse....
2a9b0 20 2a 0a 09 09 20 2a 20 20 65 61 63 68 20 65 78 *... * each ex
2a9c0 70 72 65 73 73 69 6f 6e 20 62 65 6c 6f 6e 67 73 pression belongs
2a9d0 20 74 6f 20 61 20 67 72 6f 75 70 20 61 6e 64 20 to a group and
2a9e0 63 6f 6e 74 61 69 6e 73 20 61 20 72 65 67 65 78 contains a regex
2a9f0 70 20 0a 09 09 20 2a 20 20 66 6f 72 20 73 65 6c p ... * for sel
2aa00 65 63 74 69 6e 67 20 74 68 65 20 6f 70 65 72 61 ecting the opera
2aa10 74 6f 72 20 61 73 20 77 65 6c 6c 20 61 73 20 74 tor as well as t
2aa20 68 61 74 20 6f 70 65 72 61 74 6f 72 73 20 6d 65 hat operators me
2aa30 74 68 6f 64 0a 09 09 20 2a 20 20 0a 09 09 20 2a thod... * ... *
2aa40 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d @type {Object}
2aa50 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
2aa60 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
2aa70 45 78 70 72 2e 5f 45 78 70 72 65 73 73 69 6f 6e Expr._Expression
2aa80 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 2f s = {.. /
2aa90 2f 76 61 6c 75 65 73 0a 09 20 20 20 20 20 20 20 /values..
2aaa0 20 27 76 61 6c 75 65 27 3a 20 7b 0a 09 20 20 20 'value': {..
2aab0 20 20 20 20 20 20 20 20 20 27 73 69 67 6e 61 6c 'signal
2aac0 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 ': {..
2aad0 20 20 20 20 20 20 72 65 67 65 78 70 3a 20 2f 5e regexp: /^
2aae0 5c 64 2b 5c 2e 5c 64 2b 7c 5e 5c 64 2b 2f 2c 0a \d+\.\d+|^\d+/,.
2aaf0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2ab00 20 6d 65 74 68 6f 64 3a 20 66 75 6e 63 74 69 6f method: functio
2ab10 6e 20 28 61 72 67 29 20 7b 0a 09 20 20 20 20 20 n (arg) {..
2ab20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 v
2ab30 61 72 20 73 69 67 20 3d 20 6e 65 77 20 54 6f 6e ar sig = new Ton
2ab40 65 2e 53 69 67 6e 61 6c 28 67 65 74 4e 75 6d 62 e.Signal(getNumb
2ab50 65 72 28 61 72 67 29 29 3b 0a 09 20 20 20 20 20 er(arg));..
2ab60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
2ab70 65 74 75 72 6e 20 73 69 67 3b 0a 09 20 20 20 20 eturn sig;..
2ab80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
2ab90 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 },..
2aba0 20 20 20 20 20 20 20 20 20 20 20 27 69 6e 70 75 'inpu
2abb0 74 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 t': {..
2abc0 20 20 20 20 20 20 20 72 65 67 65 78 70 3a 20 2f regexp: /
2abd0 5e 5c 24 5c 64 2f 2c 0a 09 20 20 20 20 20 20 20 ^\$\d/,..
2abe0 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 3a method:
2abf0 20 66 75 6e 63 74 69 6f 6e 20 28 61 72 67 2c 20 function (arg,
2ac00 73 65 6c 66 29 20 7b 0a 09 20 20 20 20 20 20 20 self) {..
2ac10 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
2ac20 75 72 6e 20 73 65 6c 66 2e 69 6e 70 75 74 5b 67 urn self.input[g
2ac30 65 74 4e 75 6d 62 65 72 28 61 72 67 2e 73 75 62 etNumber(arg.sub
2ac40 73 74 72 28 31 29 29 5d 3b 0a 09 20 20 20 20 20 str(1))];..
2ac50 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
2ac60 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
2ac70 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
2ac80 20 2f 2f 73 79 6e 74 61 63 74 69 63 20 67 6c 75 //syntactic glu
2ac90 65 0a 09 20 20 20 20 20 20 20 20 27 67 6c 75 65 e.. 'glue
2aca0 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 ': {..
2acb0 20 20 27 28 27 3a 20 7b 20 72 65 67 65 78 70 3a '(': { regexp:
2acc0 20 2f 5e 5c 28 2f 20 7d 2c 0a 09 20 20 20 20 20 /^\(/ },..
2acd0 20 20 20 20 20 20 20 27 29 27 3a 20 7b 20 72 65 ')': { re
2ace0 67 65 78 70 3a 20 2f 5e 5c 29 2f 20 7d 2c 0a 09 gexp: /^\)/ },..
2acf0 20 20 20 20 20 20 20 20 20 20 20 20 27 2c 27 3a ',':
2ad00 20 7b 20 72 65 67 65 78 70 3a 20 2f 5e 2c 2f 20 { regexp: /^,/
2ad10 7d 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 }.. },..
2ad20 20 20 20 20 20 20 20 2f 2f 66 75 6e 63 74 69 6f //functio
2ad30 6e 73 0a 09 20 20 20 20 20 20 20 20 27 66 75 6e ns.. 'fun
2ad40 63 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 c': {..
2ad50 20 20 20 27 61 62 73 27 3a 20 7b 0a 09 20 20 20 'abs': {..
2ad60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 67 reg
2ad70 65 78 70 3a 20 2f 5e 61 62 73 2f 2c 0a 09 20 20 exp: /^abs/,..
2ad80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 me
2ad90 74 68 6f 64 3a 20 61 70 70 6c 79 55 6e 61 72 79 thod: applyUnary
2ada0 2e 62 69 6e 64 28 74 68 69 73 2c 20 54 6f 6e 65 .bind(this, Tone
2adb0 2e 41 62 73 29 0a 09 20 20 20 20 20 20 20 20 20 .Abs)..
2adc0 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 20 },..
2add0 20 20 20 27 6d 6f 64 27 3a 20 7b 0a 09 20 20 20 'mod': {..
2ade0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 67 reg
2adf0 65 78 70 3a 20 2f 5e 6d 6f 64 2f 2c 0a 09 20 20 exp: /^mod/,..
2ae00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 me
2ae10 74 68 6f 64 3a 20 66 75 6e 63 74 69 6f 6e 20 28 thod: function (
2ae20 61 72 67 73 2c 20 73 65 6c 66 29 20 7b 0a 09 20 args, self) {..
2ae30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2ae40 20 20 20 76 61 72 20 6d 6f 64 75 6c 75 73 20 3d var modulus =
2ae50 20 6c 69 74 65 72 61 6c 4e 75 6d 62 65 72 28 61 literalNumber(a
2ae60 72 67 73 5b 31 5d 29 3b 0a 09 20 20 20 20 20 20 rgs[1]);..
2ae70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va
2ae80 72 20 6f 70 20 3d 20 6e 65 77 20 54 6f 6e 65 2e r op = new Tone.
2ae90 4d 6f 64 75 6c 6f 28 6d 6f 64 75 6c 75 73 29 3b Modulo(modulus);
2aea0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2aeb0 20 20 20 20 20 20 73 65 6c 66 2e 5f 65 76 61 6c self._eval
2aec0 28 61 72 67 73 5b 30 5d 29 2e 63 6f 6e 6e 65 63 (args[0]).connec
2aed0 74 28 6f 70 29 3b 0a 09 20 20 20 20 20 20 20 20 t(op);..
2aee0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
2aef0 72 6e 20 6f 70 3b 0a 09 20 20 20 20 20 20 20 20 rn op;..
2af00 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
2af10 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 },..
2af20 20 20 20 20 20 20 20 27 70 6f 77 27 3a 20 7b 0a 'pow': {.
2af30 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2af40 20 72 65 67 65 78 70 3a 20 2f 5e 70 6f 77 2f 2c regexp: /^pow/,
2af50 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2af60 20 20 6d 65 74 68 6f 64 3a 20 66 75 6e 63 74 69 method: functi
2af70 6f 6e 20 28 61 72 67 73 2c 20 73 65 6c 66 29 20 on (args, self)
2af80 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
2af90 20 20 20 20 20 20 20 76 61 72 20 65 78 70 20 3d var exp =
2afa0 20 6c 69 74 65 72 61 6c 4e 75 6d 62 65 72 28 61 literalNumber(a
2afb0 72 67 73 5b 31 5d 29 3b 0a 09 20 20 20 20 20 20 rgs[1]);..
2afc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va
2afd0 72 20 6f 70 20 3d 20 6e 65 77 20 54 6f 6e 65 2e r op = new Tone.
2afe0 50 6f 77 28 65 78 70 29 3b 0a 09 20 20 20 20 20 Pow(exp);..
2aff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 s
2b000 65 6c 66 2e 5f 65 76 61 6c 28 61 72 67 73 5b 30 elf._eval(args[0
2b010 5d 29 2e 63 6f 6e 6e 65 63 74 28 6f 70 29 3b 0a ]).connect(op);.
2b020 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2b030 20 20 20 20 20 72 65 74 75 72 6e 20 6f 70 3b 0a return op;.
2b040 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2b050 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
2b060 7d 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 },..
2b070 27 61 32 67 27 3a 20 7b 0a 09 20 20 20 20 20 20 'a2g': {..
2b080 20 20 20 20 20 20 20 20 20 20 72 65 67 65 78 70 regexp
2b090 3a 20 2f 5e 61 32 67 2f 2c 0a 09 20 20 20 20 20 : /^a2g/,..
2b0a0 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f metho
2b0b0 64 3a 20 66 75 6e 63 74 69 6f 6e 20 28 61 72 67 d: function (arg
2b0c0 73 2c 20 73 65 6c 66 29 20 7b 0a 09 20 20 20 20 s, self) {..
2b0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2b0e0 76 61 72 20 6f 70 20 3d 20 6e 65 77 20 54 6f 6e var op = new Ton
2b0f0 65 2e 41 75 64 69 6f 54 6f 47 61 69 6e 28 29 3b e.AudioToGain();
2b100 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2b110 20 20 20 20 20 20 73 65 6c 66 2e 5f 65 76 61 6c self._eval
2b120 28 61 72 67 73 5b 30 5d 29 2e 63 6f 6e 6e 65 63 (args[0]).connec
2b130 74 28 6f 70 29 3b 0a 09 20 20 20 20 20 20 20 20 t(op);..
2b140 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
2b150 72 6e 20 6f 70 3b 0a 09 20 20 20 20 20 20 20 20 rn op;..
2b160 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
2b170 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
2b180 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 2f 2f },.. //
2b190 62 69 6e 61 72 79 20 65 78 70 72 65 73 73 69 6f binary expressio
2b1a0 6e 73 0a 09 20 20 20 20 20 20 20 20 27 62 69 6e ns.. 'bin
2b1b0 61 72 79 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 ary': {..
2b1c0 20 20 20 20 20 27 2b 27 3a 20 7b 0a 09 20 20 20 '+': {..
2b1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 67 reg
2b1e0 65 78 70 3a 20 2f 5e 5c 2b 2f 2c 0a 09 20 20 20 exp: /^\+/,..
2b1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 pre
2b200 63 65 64 65 6e 63 65 3a 20 31 2c 0a 09 20 20 20 cedence: 1,..
2b210 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 met
2b220 68 6f 64 3a 20 61 70 70 6c 79 42 69 6e 61 72 79 hod: applyBinary
2b230 2e 62 69 6e 64 28 74 68 69 73 2c 20 54 6f 6e 65 .bind(this, Tone
2b240 2e 41 64 64 29 0a 09 20 20 20 20 20 20 20 20 20 .Add)..
2b250 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 20 },..
2b260 20 20 20 27 2d 27 3a 20 7b 0a 09 20 20 20 20 20 '-': {..
2b270 20 20 20 20 20 20 20 20 20 20 20 72 65 67 65 78 regex
2b280 70 3a 20 2f 5e 5c 2d 2f 2c 0a 09 20 20 20 20 20 p: /^\-/,..
2b290 20 20 20 20 20 20 20 20 20 20 20 70 72 65 63 65 prece
2b2a0 64 65 6e 63 65 3a 20 31 2c 0a 09 20 20 20 20 20 dence: 1,..
2b2b0 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f metho
2b2c0 64 3a 20 66 75 6e 63 74 69 6f 6e 20 28 61 72 67 d: function (arg
2b2d0 73 2c 20 73 65 6c 66 29 20 7b 0a 09 20 20 20 20 s, self) {..
2b2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2b2f0 2f 2f 62 6f 74 68 20 75 6e 61 72 79 20 61 6e 64 //both unary and
2b300 20 62 69 6e 61 72 79 20 6f 70 0a 09 20 20 20 20 binary op..
2b310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2b320 69 66 20 28 61 72 67 73 2e 6c 65 6e 67 74 68 20 if (args.length
2b330 3d 3d 3d 20 31 29 20 7b 0a 09 20 20 20 20 20 20 === 1) {..
2b340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2b350 20 20 72 65 74 75 72 6e 20 61 70 70 6c 79 55 6e return applyUn
2b360 61 72 79 28 54 6f 6e 65 2e 4e 65 67 61 74 65 2c ary(Tone.Negate,
2b370 20 61 72 67 73 2c 20 73 65 6c 66 29 3b 0a 09 20 args, self);..
2b380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2b390 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
2b3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2b3b0 20 20 20 20 20 72 65 74 75 72 6e 20 61 70 70 6c return appl
2b3c0 79 42 69 6e 61 72 79 28 54 6f 6e 65 2e 53 75 62 yBinary(Tone.Sub
2b3d0 74 72 61 63 74 2c 20 61 72 67 73 2c 20 73 65 6c tract, args, sel
2b3e0 66 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 f);..
2b3f0 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
2b400 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
2b410 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 },..
2b420 20 20 20 20 20 20 20 20 20 20 20 27 2a 27 3a 20 '*':
2b430 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
2b440 20 20 20 72 65 67 65 78 70 3a 20 2f 5e 5c 2a 2f regexp: /^\*/
2b450 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
2b460 20 20 20 70 72 65 63 65 64 65 6e 63 65 3a 20 30 precedence: 0
2b470 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
2b480 20 20 20 6d 65 74 68 6f 64 3a 20 61 70 70 6c 79 method: apply
2b490 42 69 6e 61 72 79 2e 62 69 6e 64 28 74 68 69 73 Binary.bind(this
2b4a0 2c 20 54 6f 6e 65 2e 4d 75 6c 74 69 70 6c 79 29 , Tone.Multiply)
2b4b0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
2b4c0 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 . },..
2b4d0 20 20 20 20 20 2f 2f 75 6e 61 72 79 20 65 78 70 //unary exp
2b4e0 72 65 73 73 69 6f 6e 73 0a 09 20 20 20 20 20 20 ressions..
2b4f0 20 20 27 75 6e 61 72 79 27 3a 20 7b 0a 09 20 20 'unary': {..
2b500 20 20 20 20 20 20 20 20 20 20 27 2d 27 3a 20 7b '-': {
2b510 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2b520 20 20 72 65 67 65 78 70 3a 20 2f 5e 5c 2d 2f 2c regexp: /^\-/,
2b530 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2b540 20 20 6d 65 74 68 6f 64 3a 20 61 70 70 6c 79 55 method: applyU
2b550 6e 61 72 79 2e 62 69 6e 64 28 74 68 69 73 2c 20 nary.bind(this,
2b560 54 6f 6e 65 2e 4e 65 67 61 74 65 29 0a 09 20 20 Tone.Negate)..
2b570 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 },..
2b580 20 20 20 20 20 20 20 20 20 20 27 21 27 3a 20 7b '!': {
2b590 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2b5a0 20 20 72 65 67 65 78 70 3a 20 2f 5e 5c 21 2f 2c regexp: /^\!/,
2b5b0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2b5c0 20 20 6d 65 74 68 6f 64 3a 20 61 70 70 6c 79 55 method: applyU
2b5d0 6e 61 72 79 2e 62 69 6e 64 28 74 68 69 73 2c 20 nary.bind(this,
2b5e0 54 6f 6e 65 2e 4e 4f 54 29 0a 09 20 20 20 20 20 Tone.NOT)..
2b5f0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
2b600 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 }.. };..
2b610 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 70 61 72 61 /**... * @para
2b620 6d 20 20 20 7b 73 74 72 69 6e 67 7d 20 65 78 70 m {string} exp
2b630 72 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e r the expression
2b640 20 73 74 72 69 6e 67 0a 09 09 20 2a 20 20 40 72 string... * @r
2b650 65 74 75 72 6e 20 20 7b 6e 75 6d 62 65 72 7d 20 eturn {number}
2b660 20 20 20 20 20 74 68 65 20 69 6e 70 75 74 20 63 the input c
2b670 6f 75 6e 74 0a 09 09 20 2a 20 20 40 70 72 69 76 ount... * @priv
2b680 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ate... */.. T
2b690 6f 6e 65 2e 45 78 70 72 2e 70 72 6f 74 6f 74 79 one.Expr.prototy
2b6a0 70 65 2e 5f 70 61 72 73 65 49 6e 70 75 74 73 20 pe._parseInputs
2b6b0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 65 78 70 72 = function (expr
2b6c0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 ) {.. var
2b6d0 20 69 6e 70 75 74 41 72 72 61 79 20 3d 20 65 78 inputArray = ex
2b6e0 70 72 2e 6d 61 74 63 68 28 2f 5c 24 5c 64 2f 67 pr.match(/\$\d/g
2b6f0 29 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 );.. var
2b700 69 6e 70 75 74 4d 61 78 20 3d 20 30 3b 0a 09 20 inputMax = 0;..
2b710 20 20 20 20 20 20 20 69 66 20 28 69 6e 70 75 74 if (input
2b720 41 72 72 61 79 20 21 3d 3d 20 6e 75 6c 6c 29 20 Array !== null)
2b730 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 66 {.. f
2b740 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 or (var i = 0; i
2b750 20 3c 20 69 6e 70 75 74 41 72 72 61 79 2e 6c 65 < inputArray.le
2b760 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 ngth; i++) {..
2b770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va
2b780 72 20 69 6e 70 75 74 4e 75 6d 20 3d 20 70 61 72 r inputNum = par
2b790 73 65 49 6e 74 28 69 6e 70 75 74 41 72 72 61 79 seInt(inputArray
2b7a0 5b 69 5d 2e 73 75 62 73 74 72 28 31 29 29 20 2b [i].substr(1)) +
2b7b0 20 31 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 1;..
2b7c0 20 20 20 20 20 69 6e 70 75 74 4d 61 78 20 3d 20 inputMax =
2b7d0 4d 61 74 68 2e 6d 61 78 28 69 6e 70 75 74 4d 61 Math.max(inputMa
2b7e0 78 2c 20 69 6e 70 75 74 4e 75 6d 29 3b 0a 09 20 x, inputNum);..
2b7f0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
2b800 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
2b810 20 72 65 74 75 72 6e 20 69 6e 70 75 74 4d 61 78 return inputMax
2b820 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
2b830 2a 2a 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 **... * @param
2b840 20 20 7b 41 72 72 61 79 7d 20 61 72 67 73 20 09 {Array} args .
2b850 61 6e 20 61 72 72 61 79 20 6f 66 20 61 72 67 75 an array of argu
2b860 6d 65 6e 74 73 0a 09 09 20 2a 20 20 40 72 65 74 ments... * @ret
2b870 75 72 6e 20 20 7b 73 74 72 69 6e 67 7d 20 74 68 urn {string} th
2b880 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 e results of the
2b890 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 20 62 65 replacements be
2b8a0 69 6e 67 20 72 65 70 6c 61 63 65 64 0a 09 09 20 ing replaced...
2b8b0 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a * @private... *
2b8c0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 78 70 72 /.. Tone.Expr
2b8d0 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 72 65 70 6c .prototype._repl
2b8e0 61 63 65 6d 65 6e 74 73 20 3d 20 66 75 6e 63 74 acements = funct
2b8f0 69 6f 6e 20 28 61 72 67 73 29 20 7b 0a 09 20 20 ion (args) {..
2b900 20 20 20 20 20 20 76 61 72 20 65 78 70 72 20 3d var expr =
2b910 20 61 72 67 73 2e 73 68 69 66 74 28 29 3b 0a 09 args.shift();..
2b920 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 for (var
2b930 20 69 20 3d 20 30 3b 20 69 20 3c 20 61 72 67 73 i = 0; i < args
2b940 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a .length; i++) {.
2b950 09 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 . exp
2b960 72 20 3d 20 65 78 70 72 2e 72 65 70 6c 61 63 65 r = expr.replace
2b970 28 2f 5c 25 2f 69 2c 20 61 72 67 73 5b 69 5d 29 (/\%/i, args[i])
2b980 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
2b990 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 return exp
2b9a0 72 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 r;.. };..
2b9b0 2f 2a 2a 0a 09 09 20 2a 20 20 74 6f 6b 65 6e 69 /**... * tokeni
2b9c0 7a 65 20 74 68 65 20 65 78 70 72 65 73 73 69 6f ze the expressio
2b9d0 6e 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 45 n based on the E
2b9e0 78 70 72 65 73 73 69 6f 6e 73 20 6f 62 6a 65 63 xpressions objec
2b9f0 74 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 t... * @param
2ba00 20 7b 73 74 72 69 6e 67 7d 20 65 78 70 72 20 0a {string} expr .
2ba10 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b .. * @return {
2ba20 4f 62 6a 65 63 74 7d 20 20 20 20 20 20 72 65 74 Object} ret
2ba30 75 72 6e 73 20 74 77 6f 20 6d 65 74 68 6f 64 73 urns two methods
2ba40 20 6f 6e 20 74 68 65 20 74 6f 6b 65 6e 69 7a 65 on the tokenize
2ba50 64 20 6c 69 73 74 2c 20 6e 65 78 74 20 61 6e 64 d list, next and
2ba60 20 70 65 65 6b 0a 09 09 20 2a 20 20 40 70 72 69 peek... * @pri
2ba70 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 vate... */..
2ba80 54 6f 6e 65 2e 45 78 70 72 2e 70 72 6f 74 6f 74 Tone.Expr.protot
2ba90 79 70 65 2e 5f 74 6f 6b 65 6e 69 7a 65 20 3d 20 ype._tokenize =
2baa0 66 75 6e 63 74 69 6f 6e 20 28 65 78 70 72 29 20 function (expr)
2bab0 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 70 {.. var p
2bac0 6f 73 69 74 69 6f 6e 20 3d 20 2d 31 3b 0a 09 20 osition = -1;..
2bad0 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b 65 6e var token
2bae0 73 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 20 20 s = [];..
2baf0 20 77 68 69 6c 65 20 28 65 78 70 72 2e 6c 65 6e while (expr.len
2bb00 67 74 68 20 3e 20 30 29 20 7b 0a 09 20 20 20 20 gth > 0) {..
2bb10 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 65 expr = e
2bb20 78 70 72 2e 74 72 69 6d 28 29 3b 0a 09 20 20 20 xpr.trim();..
2bb30 20 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b var tok
2bb40 65 6e 20 3d 20 67 65 74 4e 65 78 74 54 6f 6b 65 en = getNextToke
2bb50 6e 28 65 78 70 72 29 3b 0a 09 20 20 20 20 20 20 n(expr);..
2bb60 20 20 20 20 20 20 74 6f 6b 65 6e 73 2e 70 75 73 tokens.pus
2bb70 68 28 74 6f 6b 65 6e 29 3b 0a 09 20 20 20 20 20 h(token);..
2bb80 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 65 78 expr = ex
2bb90 70 72 2e 73 75 62 73 74 72 28 74 6f 6b 65 6e 2e pr.substr(token.
2bba0 76 61 6c 75 65 2e 6c 65 6e 67 74 68 29 3b 0a 09 value.length);..
2bbb0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
2bbc0 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e function getN
2bbd0 65 78 74 54 6f 6b 65 6e 28 65 78 70 72 29 20 7b extToken(expr) {
2bbe0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 66 6f .. fo
2bbf0 72 20 28 76 61 72 20 74 79 70 65 20 69 6e 20 54 r (var type in T
2bc00 6f 6e 65 2e 45 78 70 72 2e 5f 45 78 70 72 65 73 one.Expr._Expres
2bc10 73 69 6f 6e 73 29 20 7b 0a 09 20 20 20 20 20 20 sions) {..
2bc20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 67 72 var gr
2bc30 6f 75 70 20 3d 20 54 6f 6e 65 2e 45 78 70 72 2e oup = Tone.Expr.
2bc40 5f 45 78 70 72 65 73 73 69 6f 6e 73 5b 74 79 70 _Expressions[typ
2bc50 65 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e];..
2bc60 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 6f 70 for (var op
2bc70 4e 61 6d 65 20 69 6e 20 67 72 6f 75 70 29 20 7b Name in group) {
2bc80 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2bc90 20 20 20 20 20 20 76 61 72 20 6f 70 20 3d 20 67 var op = g
2bca0 72 6f 75 70 5b 6f 70 4e 61 6d 65 5d 3b 0a 09 20 roup[opName];..
2bcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2bcc0 20 20 20 76 61 72 20 72 65 67 20 3d 20 6f 70 2e var reg = op.
2bcd0 72 65 67 65 78 70 3b 0a 09 20 20 20 20 20 20 20 regexp;..
2bce0 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var
2bcf0 20 6d 61 74 63 68 20 3d 20 65 78 70 72 2e 6d 61 match = expr.ma
2bd00 74 63 68 28 72 65 67 29 3b 0a 09 20 20 20 20 20 tch(reg);..
2bd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
2bd20 66 20 28 6d 61 74 63 68 20 21 3d 3d 20 6e 75 6c f (match !== nul
2bd30 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 l) {..
2bd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
2bd50 74 75 72 6e 20 7b 0a 09 20 20 20 20 20 20 20 20 turn {..
2bd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2bd70 20 20 20 20 74 79 70 65 3a 20 74 79 70 65 2c 0a type: type,.
2bd80 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2bd90 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c val
2bda0 75 65 3a 20 6d 61 74 63 68 5b 30 5d 2c 0a 09 20 ue: match[0],..
2bdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2bdc0 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f metho
2bdd0 64 3a 20 6f 70 2e 6d 65 74 68 6f 64 0a 09 20 20 d: op.method..
2bde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2bdf0 20 20 20 20 20 20 7d 3b 0a 09 20 20 20 20 20 20 };..
2be00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }.
2be10 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2be20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
2be30 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 }.. t
2be40 68 72 6f 77 20 6e 65 77 20 53 79 6e 74 61 78 45 hrow new SyntaxE
2be50 72 72 6f 72 28 27 54 6f 6e 65 2e 45 78 70 72 3a rror('Tone.Expr:
2be60 20 55 6e 65 78 70 65 63 74 65 64 20 74 6f 6b 65 Unexpected toke
2be70 6e 20 27 20 2b 20 65 78 70 72 29 3b 0a 09 20 20 n ' + expr);..
2be80 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
2be90 20 72 65 74 75 72 6e 20 7b 0a 09 20 20 20 20 20 return {..
2bea0 20 20 20 20 20 20 20 6e 65 78 74 3a 20 66 75 6e next: fun
2beb0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
2bec0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
2bed0 72 6e 20 74 6f 6b 65 6e 73 5b 2b 2b 70 6f 73 69 rn tokens[++posi
2bee0 74 69 6f 6e 5d 3b 0a 09 20 20 20 20 20 20 20 20 tion];..
2bef0 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
2bf00 20 20 20 20 70 65 65 6b 3a 20 66 75 6e 63 74 69 peek: functi
2bf10 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
2bf20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
2bf30 74 6f 6b 65 6e 73 5b 70 6f 73 69 74 69 6f 6e 20 tokens[position
2bf40 2b 20 31 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 + 1];..
2bf50 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 3b }.. };
2bf60 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
2bf70 2a 0a 09 09 20 2a 20 20 72 65 63 75 72 73 69 76 *... * recursiv
2bf80 65 6c 79 20 70 61 72 73 65 20 74 68 65 20 73 74 ely parse the st
2bf90 72 69 6e 67 20 65 78 70 72 65 73 73 69 6f 6e 20 ring expression
2bfa0 69 6e 74 6f 20 61 20 73 79 6e 74 61 78 20 74 72 into a syntax tr
2bfb0 65 65 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 ee... * ... *
2bfc0 40 70 61 72 61 6d 20 20 20 7b 73 74 72 69 6e 67 @param {string
2bfd0 7d 20 65 78 70 72 20 0a 09 09 20 2a 20 20 40 72 } expr ... * @r
2bfe0 65 74 75 72 6e 20 20 7b 4f 62 6a 65 63 74 7d 0a eturn {Object}.
2bff0 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
2c000 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 . */.. Tone.E
2c010 78 70 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 70 xpr.prototype._p
2c020 61 72 73 65 54 72 65 65 20 3d 20 66 75 6e 63 74 arseTree = funct
2c030 69 6f 6e 20 28 65 78 70 72 29 20 7b 0a 09 20 20 ion (expr) {..
2c040 20 20 20 20 20 20 76 61 72 20 6c 65 78 65 72 20 var lexer
2c050 3d 20 74 68 69 73 2e 5f 74 6f 6b 65 6e 69 7a 65 = this._tokenize
2c060 28 65 78 70 72 29 3b 0a 09 20 20 20 20 20 20 20 (expr);..
2c070 20 76 61 72 20 69 73 55 6e 64 65 66 20 3d 20 74 var isUndef = t
2c080 68 69 73 2e 69 73 55 6e 64 65 66 2e 62 69 6e 64 his.isUndef.bind
2c090 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 (this);..
2c0a0 20 66 75 6e 63 74 69 6f 6e 20 6d 61 74 63 68 53 function matchS
2c0b0 79 6e 74 61 78 28 74 6f 6b 65 6e 2c 20 73 79 6e yntax(token, syn
2c0c0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
2c0d0 20 72 65 74 75 72 6e 20 21 69 73 55 6e 64 65 66 return !isUndef
2c0e0 28 74 6f 6b 65 6e 29 20 26 26 20 74 6f 6b 65 6e (token) && token
2c0f0 2e 74 79 70 65 20 3d 3d 3d 20 27 67 6c 75 65 27 .type === 'glue'
2c100 20 26 26 20 74 6f 6b 65 6e 2e 76 61 6c 75 65 20 && token.value
2c110 3d 3d 3d 20 73 79 6e 3b 0a 09 20 20 20 20 20 20 === syn;..
2c120 20 20 7d 0a 09 20 20 20 20 20 20 20 20 66 75 6e }.. fun
2c130 63 74 69 6f 6e 20 6d 61 74 63 68 47 72 6f 75 70 ction matchGroup
2c140 28 74 6f 6b 65 6e 2c 20 67 72 6f 75 70 4e 61 6d (token, groupNam
2c150 65 2c 20 70 72 65 63 29 20 7b 0a 09 20 20 20 20 e, prec) {..
2c160 20 20 20 20 20 20 20 20 76 61 72 20 72 65 74 20 var ret
2c170 3d 20 66 61 6c 73 65 3b 0a 09 20 20 20 20 20 20 = false;..
2c180 20 20 20 20 20 20 76 61 72 20 67 72 6f 75 70 20 var group
2c190 3d 20 54 6f 6e 65 2e 45 78 70 72 2e 5f 45 78 70 = Tone.Expr._Exp
2c1a0 72 65 73 73 69 6f 6e 73 5b 67 72 6f 75 70 4e 61 ressions[groupNa
2c1b0 6d 65 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 me];..
2c1c0 20 20 69 66 20 28 21 69 73 55 6e 64 65 66 28 74 if (!isUndef(t
2c1d0 6f 6b 65 6e 29 29 20 7b 0a 09 20 20 20 20 20 20 oken)) {..
2c1e0 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 for (v
2c1f0 61 72 20 6f 70 4e 61 6d 65 20 69 6e 20 67 72 6f ar opName in gro
2c200 75 70 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 up) {..
2c210 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6f var o
2c220 70 20 3d 20 67 72 6f 75 70 5b 6f 70 4e 61 6d 65 p = group[opName
2c230 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ];..
2c240 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 2e 72 if (op.r
2c250 65 67 65 78 70 2e 74 65 73 74 28 74 6f 6b 65 6e egexp.test(token
2c260 2e 76 61 6c 75 65 29 29 20 7b 0a 09 20 20 20 20 .value)) {..
2c270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c280 20 20 20 20 69 66 20 28 21 69 73 55 6e 64 65 66 if (!isUndef
2c290 28 70 72 65 63 29 29 20 7b 0a 09 20 20 20 20 20 (prec)) {..
2c2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c2b0 20 20 20 20 20 20 20 69 66 20 28 6f 70 2e 70 72 if (op.pr
2c2c0 65 63 65 64 65 6e 63 65 20 3d 3d 3d 20 70 72 65 ecedence === pre
2c2d0 63 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 c) {..
2c2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c2f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 return tru
2c300 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 e;..
2c310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c320 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
2c330 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
2c340 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
2c350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c360 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 09 20 return true;..
2c370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c380 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
2c390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }.
2c3a0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2c3b0 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
2c3c0 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 }.. r
2c3d0 65 74 75 72 6e 20 72 65 74 3b 0a 09 20 20 20 20 eturn ret;..
2c3e0 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 66 }.. f
2c3f0 75 6e 63 74 69 6f 6e 20 70 61 72 73 65 45 78 70 unction parseExp
2c400 72 65 73 73 69 6f 6e 28 70 72 65 63 65 64 65 6e ression(preceden
2c410 63 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ce) {..
2c420 20 20 20 69 66 20 28 69 73 55 6e 64 65 66 28 70 if (isUndef(p
2c430 72 65 63 65 64 65 6e 63 65 29 29 20 7b 0a 09 20 recedence)) {..
2c440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 p
2c450 72 65 63 65 64 65 6e 63 65 20 3d 20 35 3b 0a 09 recedence = 5;..
2c460 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
2c470 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 65 var e
2c480 78 70 72 3b 0a 09 20 20 20 20 20 20 20 20 20 20 xpr;..
2c490 20 20 69 66 20 28 70 72 65 63 65 64 65 6e 63 65 if (precedence
2c4a0 20 3c 20 30 29 20 7b 0a 09 20 20 20 20 20 20 20 < 0) {..
2c4b0 20 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 expr =
2c4c0 70 61 72 73 65 55 6e 61 72 79 28 29 3b 0a 09 20 parseUnary();..
2c4d0 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
2c4e0 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
2c4f0 20 20 20 20 20 65 78 70 72 20 3d 20 70 61 72 73 expr = pars
2c500 65 45 78 70 72 65 73 73 69 6f 6e 28 70 72 65 63 eExpression(prec
2c510 65 64 65 6e 63 65 20 2d 20 31 29 3b 0a 09 20 20 edence - 1);..
2c520 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
2c530 20 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b var tok
2c540 65 6e 20 3d 20 6c 65 78 65 72 2e 70 65 65 6b 28 en = lexer.peek(
2c550 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
2c560 77 68 69 6c 65 20 28 6d 61 74 63 68 47 72 6f 75 while (matchGrou
2c570 70 28 74 6f 6b 65 6e 2c 20 27 62 69 6e 61 72 79 p(token, 'binary
2c580 27 2c 20 70 72 65 63 65 64 65 6e 63 65 29 29 20 ', precedence))
2c590 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
2c5a0 20 20 20 74 6f 6b 65 6e 20 3d 20 6c 65 78 65 72 token = lexer
2c5b0 2e 6e 65 78 74 28 29 3b 0a 09 20 20 20 20 20 20 .next();..
2c5c0 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20 3d expr =
2c5d0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
2c5e0 20 20 20 20 20 20 20 20 6f 70 65 72 61 74 6f 72 operator
2c5f0 3a 20 74 6f 6b 65 6e 2e 76 61 6c 75 65 2c 0a 09 : token.value,..
2c600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c610 20 20 20 20 6d 65 74 68 6f 64 3a 20 74 6f 6b 65 method: toke
2c620 6e 2e 6d 65 74 68 6f 64 2c 0a 09 20 20 20 20 20 n.method,..
2c630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 a
2c640 72 67 73 3a 20 5b 0a 09 20 20 20 20 20 20 20 20 rgs: [..
2c650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c660 65 78 70 72 2c 0a 09 20 20 20 20 20 20 20 20 20 expr,..
2c670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 p
2c680 61 72 73 65 45 78 70 72 65 73 73 69 6f 6e 28 70 arseExpression(p
2c690 72 65 63 65 64 65 6e 63 65 20 2d 20 31 29 0a 09 recedence - 1)..
2c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c6b0 20 20 20 20 5d 0a 09 20 20 20 20 20 20 20 20 20 ]..
2c6c0 20 20 20 20 20 20 20 7d 3b 0a 09 20 20 20 20 20 };..
2c6d0 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e token
2c6e0 20 3d 20 6c 65 78 65 72 2e 70 65 65 6b 28 29 3b = lexer.peek();
2c6f0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
2c700 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
2c710 75 72 6e 20 65 78 70 72 3b 0a 09 20 20 20 20 20 urn expr;..
2c720 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 66 75 }.. fu
2c730 6e 63 74 69 6f 6e 20 70 61 72 73 65 55 6e 61 72 nction parseUnar
2c740 79 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 y() {..
2c750 20 20 20 76 61 72 20 74 6f 6b 65 6e 2c 20 65 78 var token, ex
2c760 70 72 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 pr;..
2c770 20 74 6f 6b 65 6e 20 3d 20 6c 65 78 65 72 2e 70 token = lexer.p
2c780 65 65 6b 28 29 3b 0a 09 20 20 20 20 20 20 20 20 eek();..
2c790 20 20 20 20 69 66 20 28 6d 61 74 63 68 47 72 6f if (matchGro
2c7a0 75 70 28 74 6f 6b 65 6e 2c 20 27 75 6e 61 72 79 up(token, 'unary
2c7b0 27 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ')) {..
2c7c0 20 20 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 6c token = l
2c7d0 65 78 65 72 2e 6e 65 78 74 28 29 3b 0a 09 20 20 exer.next();..
2c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 ex
2c7f0 70 72 20 3d 20 70 61 72 73 65 55 6e 61 72 79 28 pr = parseUnary(
2c800 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
2c810 20 20 20 20 72 65 74 75 72 6e 20 7b 0a 09 20 20 return {..
2c820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c830 20 20 6f 70 65 72 61 74 6f 72 3a 20 74 6f 6b 65 operator: toke
2c840 6e 2e 76 61 6c 75 65 2c 0a 09 20 20 20 20 20 20 n.value,..
2c850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 me
2c860 74 68 6f 64 3a 20 74 6f 6b 65 6e 2e 6d 65 74 68 thod: token.meth
2c870 6f 64 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 od,..
2c880 20 20 20 20 20 20 20 20 20 61 72 67 73 3a 20 5b args: [
2c890 65 78 70 72 5d 0a 09 20 20 20 20 20 20 20 20 20 expr]..
2c8a0 20 20 20 20 20 20 20 7d 3b 0a 09 20 20 20 20 20 };..
2c8b0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
2c8c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 return par
2c8d0 73 65 50 72 69 6d 61 72 79 28 29 3b 0a 09 20 20 sePrimary();..
2c8e0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
2c8f0 20 66 75 6e 63 74 69 6f 6e 20 70 61 72 73 65 50 function parseP
2c900 72 69 6d 61 72 79 28 29 20 7b 0a 09 20 20 20 20 rimary() {..
2c910 20 20 20 20 20 20 20 20 76 61 72 20 74 6f 6b 65 var toke
2c920 6e 2c 20 65 78 70 72 3b 0a 09 20 20 20 20 20 20 n, expr;..
2c930 20 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 6c 65 token = le
2c940 78 65 72 2e 70 65 65 6b 28 29 3b 0a 09 20 20 20 xer.peek();..
2c950 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 55 if (isU
2c960 6e 64 65 66 28 74 6f 6b 65 6e 29 29 20 7b 0a 09 ndef(token)) {..
2c970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c980 74 68 72 6f 77 20 6e 65 77 20 53 79 6e 74 61 78 throw new Syntax
2c990 45 72 72 6f 72 28 27 54 6f 6e 65 2e 45 78 70 72 Error('Tone.Expr
2c9a0 3a 20 55 6e 65 78 70 65 63 74 65 64 20 74 65 72 : Unexpected ter
2c9b0 6d 69 6e 61 74 69 6f 6e 20 6f 66 20 65 78 70 72 mination of expr
2c9c0 65 73 73 69 6f 6e 27 29 3b 0a 09 20 20 20 20 20 ession');..
2c9d0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
2c9e0 20 20 20 20 20 20 69 66 20 28 74 6f 6b 65 6e 2e if (token.
2c9f0 74 79 70 65 20 3d 3d 3d 20 27 66 75 6e 63 27 29 type === 'func')
2ca00 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
2ca10 20 20 20 20 74 6f 6b 65 6e 20 3d 20 6c 65 78 65 token = lexe
2ca20 72 2e 6e 65 78 74 28 29 3b 0a 09 20 20 20 20 20 r.next();..
2ca30 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
2ca40 6e 20 70 61 72 73 65 46 75 6e 63 74 69 6f 6e 43 n parseFunctionC
2ca50 61 6c 6c 28 74 6f 6b 65 6e 29 3b 0a 09 20 20 20 all(token);..
2ca60 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
2ca70 20 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b 65 if (toke
2ca80 6e 2e 74 79 70 65 20 3d 3d 3d 20 27 76 61 6c 75 n.type === 'valu
2ca90 65 27 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 e') {..
2caa0 20 20 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 6c token = l
2cab0 65 78 65 72 2e 6e 65 78 74 28 29 3b 0a 09 20 20 exer.next();..
2cac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
2cad0 74 75 72 6e 20 7b 0a 09 20 20 20 20 20 20 20 20 turn {..
2cae0 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 meth
2caf0 6f 64 3a 20 74 6f 6b 65 6e 2e 6d 65 74 68 6f 64 od: token.method
2cb00 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
2cb10 20 20 20 20 20 20 20 61 72 67 73 3a 20 74 6f 6b args: tok
2cb20 65 6e 2e 76 61 6c 75 65 0a 09 20 20 20 20 20 20 en.value..
2cb30 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 09 20 20 };..
2cb40 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
2cb50 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 61 74 if (mat
2cb60 63 68 53 79 6e 74 61 78 28 74 6f 6b 65 6e 2c 20 chSyntax(token,
2cb70 27 28 27 29 29 20 7b 0a 09 20 20 20 20 20 20 20 '(')) {..
2cb80 20 20 20 20 20 20 20 20 20 6c 65 78 65 72 2e 6e lexer.n
2cb90 65 78 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ext();..
2cba0 20 20 20 20 20 20 20 20 65 78 70 72 20 3d 20 70 expr = p
2cbb0 61 72 73 65 45 78 70 72 65 73 73 69 6f 6e 28 29 arseExpression()
2cbc0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
2cbd0 20 20 20 74 6f 6b 65 6e 20 3d 20 6c 65 78 65 72 token = lexer
2cbe0 2e 6e 65 78 74 28 29 3b 0a 09 20 20 20 20 20 20 .next();..
2cbf0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6d if (!m
2cc00 61 74 63 68 53 79 6e 74 61 78 28 74 6f 6b 65 6e atchSyntax(token
2cc10 2c 20 27 29 27 29 29 20 7b 0a 09 20 20 20 20 20 , ')')) {..
2cc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
2cc30 68 72 6f 77 20 6e 65 77 20 53 79 6e 74 61 78 45 hrow new SyntaxE
2cc40 72 72 6f 72 28 27 45 78 70 65 63 74 65 64 20 29 rror('Expected )
2cc50 27 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ');..
2cc60 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
2cc70 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 return e
2cc80 78 70 72 3b 0a 09 20 20 20 20 20 20 20 20 20 20 xpr;..
2cc90 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
2cca0 20 74 68 72 6f 77 20 6e 65 77 20 53 79 6e 74 61 throw new Synta
2ccb0 78 45 72 72 6f 72 28 27 54 6f 6e 65 2e 45 78 70 xError('Tone.Exp
2ccc0 72 3a 20 50 61 72 73 65 20 65 72 72 6f 72 2c 20 r: Parse error,
2ccd0 63 61 6e 6e 6f 74 20 70 72 6f 63 65 73 73 20 74 cannot process t
2cce0 6f 6b 65 6e 20 27 20 2b 20 74 6f 6b 65 6e 2e 76 oken ' + token.v
2ccf0 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 20 20 alue);..
2cd00 7d 0a 09 20 20 20 20 20 20 20 20 66 75 6e 63 74 }.. funct
2cd10 69 6f 6e 20 70 61 72 73 65 46 75 6e 63 74 69 6f ion parseFunctio
2cd20 6e 43 61 6c 6c 28 66 75 6e 63 29 20 7b 0a 09 20 nCall(func) {..
2cd30 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 74 var t
2cd40 6f 6b 65 6e 2c 20 61 72 67 73 20 3d 20 5b 5d 3b oken, args = [];
2cd50 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 6f .. to
2cd60 6b 65 6e 20 3d 20 6c 65 78 65 72 2e 6e 65 78 74 ken = lexer.next
2cd70 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ();..
2cd80 20 69 66 20 28 21 6d 61 74 63 68 53 79 6e 74 61 if (!matchSynta
2cd90 78 28 74 6f 6b 65 6e 2c 20 27 28 27 29 29 20 7b x(token, '(')) {
2cda0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2cdb0 20 20 74 68 72 6f 77 20 6e 65 77 20 53 79 6e 74 throw new Synt
2cdc0 61 78 45 72 72 6f 72 28 27 54 6f 6e 65 2e 45 78 axError('Tone.Ex
2cdd0 70 72 3a 20 45 78 70 65 63 74 65 64 20 28 20 69 pr: Expected ( i
2cde0 6e 20 61 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c n a function cal
2cdf0 6c 20 22 27 20 2b 20 66 75 6e 63 2e 76 61 6c 75 l "' + func.valu
2ce00 65 20 2b 20 27 22 27 29 3b 0a 09 20 20 20 20 20 e + '"');..
2ce10 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
2ce20 20 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 6c 65 token = le
2ce30 78 65 72 2e 70 65 65 6b 28 29 3b 0a 09 20 20 20 xer.peek();..
2ce40 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6d 61 if (!ma
2ce50 74 63 68 53 79 6e 74 61 78 28 74 6f 6b 65 6e 2c tchSyntax(token,
2ce60 20 27 29 27 29 29 20 7b 0a 09 20 20 20 20 20 20 ')')) {..
2ce70 20 20 20 20 20 20 20 20 20 20 61 72 67 73 20 3d args =
2ce80 20 70 61 72 73 65 41 72 67 75 6d 65 6e 74 4c 69 parseArgumentLi
2ce90 73 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 st();..
2cea0 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 }..
2ceb0 20 20 74 6f 6b 65 6e 20 3d 20 6c 65 78 65 72 2e token = lexer.
2cec0 6e 65 78 74 28 29 3b 0a 09 20 20 20 20 20 20 20 next();..
2ced0 20 20 20 20 20 69 66 20 28 21 6d 61 74 63 68 53 if (!matchS
2cee0 79 6e 74 61 78 28 74 6f 6b 65 6e 2c 20 27 29 27 yntax(token, ')'
2cef0 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 )) {..
2cf00 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 throw new
2cf10 53 79 6e 74 61 78 45 72 72 6f 72 28 27 54 6f 6e SyntaxError('Ton
2cf20 65 2e 45 78 70 72 3a 20 45 78 70 65 63 74 65 64 e.Expr: Expected
2cf30 20 29 20 69 6e 20 61 20 66 75 6e 63 74 69 6f 6e ) in a function
2cf40 20 63 61 6c 6c 20 22 27 20 2b 20 66 75 6e 63 2e call "' + func.
2cf50 76 61 6c 75 65 20 2b 20 27 22 27 29 3b 0a 09 20 value + '"');..
2cf60 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
2cf70 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
2cf80 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
2cf90 20 20 20 20 6d 65 74 68 6f 64 3a 20 66 75 6e 63 method: func
2cfa0 2e 6d 65 74 68 6f 64 2c 0a 09 20 20 20 20 20 20 .method,..
2cfb0 20 20 20 20 20 20 20 20 20 20 61 72 67 73 3a 20 args:
2cfc0 61 72 67 73 2c 0a 09 20 20 20 20 20 20 20 20 20 args,..
2cfd0 20 20 20 20 20 20 20 6e 61 6d 65 3a 20 6e 61 6d name: nam
2cfe0 65 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d e.. }
2cff0 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
2d000 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 70 function p
2d010 61 72 73 65 41 72 67 75 6d 65 6e 74 4c 69 73 74 arseArgumentList
2d020 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
2d030 20 20 76 61 72 20 74 6f 6b 65 6e 2c 20 65 78 70 var token, exp
2d040 72 2c 20 61 72 67 73 20 3d 20 5b 5d 3b 0a 09 20 r, args = [];..
2d050 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 while
2d060 20 28 74 72 75 65 29 20 7b 0a 09 20 20 20 20 20 (true) {..
2d070 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20 expr
2d080 3d 20 70 61 72 73 65 45 78 70 72 65 73 73 69 6f = parseExpressio
2d090 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 n();..
2d0a0 20 20 20 20 20 20 69 66 20 28 69 73 55 6e 64 65 if (isUnde
2d0b0 66 28 65 78 70 72 29 29 20 7b 0a 09 20 20 20 20 f(expr)) {..
2d0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2d0d0 2f 2f 20 54 4f 44 4f 20 6d 61 79 62 65 20 74 68 // TODO maybe th
2d0e0 72 6f 77 20 65 78 63 65 70 74 69 6f 6e 3f 0a 09 row exception?..
2d0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2d100 20 20 20 20 62 72 65 61 6b 3b 0a 09 20 20 20 20 break;..
2d110 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
2d120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 a
2d130 72 67 73 2e 70 75 73 68 28 65 78 70 72 29 3b 0a rgs.push(expr);.
2d140 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2d150 20 74 6f 6b 65 6e 20 3d 20 6c 65 78 65 72 2e 70 token = lexer.p
2d160 65 65 6b 28 29 3b 0a 09 20 20 20 20 20 20 20 20 eek();..
2d170 20 20 20 20 20 20 20 20 69 66 20 28 21 6d 61 74 if (!mat
2d180 63 68 53 79 6e 74 61 78 28 74 6f 6b 65 6e 2c 20 chSyntax(token,
2d190 27 2c 27 29 29 20 7b 0a 09 20 20 20 20 20 20 20 ',')) {..
2d1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 bre
2d1b0 61 6b 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ak;..
2d1c0 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
2d1d0 20 20 20 20 20 20 20 20 6c 65 78 65 72 2e 6e 65 lexer.ne
2d1e0 78 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 xt();..
2d1f0 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 }..
2d200 20 20 72 65 74 75 72 6e 20 61 72 67 73 3b 0a 09 return args;..
2d210 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
2d220 20 20 20 72 65 74 75 72 6e 20 70 61 72 73 65 45 return parseE
2d230 78 70 72 65 73 73 69 6f 6e 28 29 3b 0a 09 20 20 xpression();..
2d240 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
2d250 20 2a 20 20 72 65 63 75 72 73 69 76 65 6c 79 20 * recursively
2d260 65 76 61 6c 75 61 74 65 20 74 68 65 20 65 78 70 evaluate the exp
2d270 72 65 73 73 69 6f 6e 20 74 72 65 65 0a 09 09 20 ression tree...
2d280 2a 20 20 40 70 61 72 61 6d 20 20 20 7b 4f 62 6a * @param {Obj
2d290 65 63 74 7d 20 74 72 65 65 20 0a 09 09 20 2a 20 ect} tree ... *
2d2a0 20 40 72 65 74 75 72 6e 20 20 7b 41 75 64 69 6f @return {Audio
2d2b0 4e 6f 64 65 7d 20 20 20 20 20 20 74 68 65 20 72 Node} the r
2d2c0 65 73 75 6c 74 69 6e 67 20 61 75 64 69 6f 20 6e esulting audio n
2d2d0 6f 64 65 20 66 72 6f 6d 20 74 68 65 20 65 78 70 ode from the exp
2d2e0 72 65 73 73 69 6f 6e 0a 09 09 20 2a 20 20 40 70 ression... * @p
2d2f0 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 rivate... */..
2d300 20 20 54 6f 6e 65 2e 45 78 70 72 2e 70 72 6f 74 Tone.Expr.prot
2d310 6f 74 79 70 65 2e 5f 65 76 61 6c 20 3d 20 66 75 otype._eval = fu
2d320 6e 63 74 69 6f 6e 20 28 74 72 65 65 29 20 7b 0a nction (tree) {.
2d330 09 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68 . if (!th
2d340 69 73 2e 69 73 55 6e 64 65 66 28 74 72 65 65 29 is.isUndef(tree)
2d350 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
2d360 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 72 65 65 var node = tree
2d370 2e 6d 65 74 68 6f 64 28 74 72 65 65 2e 61 72 67 .method(tree.arg
2d380 73 2c 20 74 68 69 73 29 3b 0a 09 20 20 20 20 20 s, this);..
2d390 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6e 6f 64 this._nod
2d3a0 65 73 2e 70 75 73 68 28 6e 6f 64 65 29 3b 0a 09 es.push(node);..
2d3b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
2d3c0 72 6e 20 6e 6f 64 65 3b 0a 09 20 20 20 20 20 20 rn node;..
2d3d0 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 }.. };..
2d3e0 20 2f 2a 2a 0a 09 09 20 2a 20 20 64 69 73 70 6f /**... * dispo
2d3f0 73 65 20 61 6c 6c 20 74 68 65 20 6e 6f 64 65 73 se all the nodes
2d400 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
2d410 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
2d420 45 78 70 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f Expr.prototype._
2d430 64 69 73 70 6f 73 65 4e 6f 64 65 73 20 3d 20 66 disposeNodes = f
2d440 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
2d450 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 for (var i
2d460 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73 2e 5f = 0; i < this._
2d470 6e 6f 64 65 73 2e 6c 65 6e 67 74 68 3b 20 69 2b nodes.length; i+
2d480 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 +) {..
2d490 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 74 68 69 var node = thi
2d4a0 73 2e 5f 6e 6f 64 65 73 5b 69 5d 3b 0a 09 20 20 s._nodes[i];..
2d4b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 if (th
2d4c0 69 73 2e 69 73 46 75 6e 63 74 69 6f 6e 28 6e 6f is.isFunction(no
2d4d0 64 65 2e 64 69 73 70 6f 73 65 29 29 20 7b 0a 09 de.dispose)) {..
2d4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2d4f0 6e 6f 64 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a node.dispose();.
2d500 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
2d510 6c 73 65 20 69 66 20 28 74 68 69 73 2e 69 73 46 lse if (this.isF
2d520 75 6e 63 74 69 6f 6e 28 6e 6f 64 65 2e 64 69 73 unction(node.dis
2d530 63 6f 6e 6e 65 63 74 29 29 20 7b 0a 09 20 20 20 connect)) {..
2d540 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 nod
2d550 65 2e 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b 0a e.disconnect();.
2d560 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
2d570 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node
2d580 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
2d590 20 20 20 20 20 20 74 68 69 73 2e 5f 6e 6f 64 65 this._node
2d5a0 73 5b 69 5d 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 s[i] = null;..
2d5b0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
2d5c0 20 74 68 69 73 2e 5f 6e 6f 64 65 73 20 3d 20 6e this._nodes = n
2d5d0 75 6c 6c 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ull;.. };..
2d5e0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 63 6c 65 61 /**... * clea
2d5f0 6e 20 75 70 0a 09 09 20 2a 2f 0a 09 20 20 20 20 n up... */..
2d600 54 6f 6e 65 2e 45 78 70 72 2e 70 72 6f 74 6f 74 Tone.Expr.protot
2d610 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 ype.dispose = fu
2d620 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
2d630 20 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 Tone.protot
2d640 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c ype.dispose.call
2d650 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 (this);..
2d660 20 74 68 69 73 2e 5f 64 69 73 70 6f 73 65 4e 6f this._disposeNo
2d670 64 65 73 28 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 des();.. };..
2d680 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e return Tone.
2d690 45 78 70 72 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 Expr;..});..Modu
2d6a0 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e le(function (Ton
2d6b0 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 e) {.. ..
2d6c0 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 /**... * @class
2d6d0 20 43 6f 6e 76 65 72 74 20 61 6e 20 69 6e 63 6f Convert an inco
2d6e0 6d 69 6e 67 20 73 69 67 6e 61 6c 20 62 65 74 77 ming signal betw
2d6f0 65 65 6e 20 30 2c 20 31 20 74 6f 20 61 6e 20 65 een 0, 1 to an e
2d700 71 75 61 6c 20 70 6f 77 65 72 20 67 61 69 6e 20 qual power gain
2d710 73 63 61 6c 65 2e 0a 09 09 20 2a 0a 09 09 20 2a scale.... *... *
2d720 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
2d730 2e 53 69 67 6e 61 6c 42 61 73 65 7d 0a 09 09 20 .SignalBase}...
2d740 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a * @constructor.
2d750 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
2d760 09 20 2a 20 76 61 72 20 65 71 50 6f 77 47 61 69 . * var eqPowGai
2d770 6e 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 45 71 75 n = new Tone.Equ
2d780 61 6c 50 6f 77 65 72 47 61 69 6e 28 29 3b 0a 09 alPowerGain();..
2d790 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 . */.. Tone.E
2d7a0 71 75 61 6c 50 6f 77 65 72 47 61 69 6e 20 3d 20 qualPowerGain =
2d7b0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
2d7c0 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
2d7d0 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 57 61 @type {Tone.Wa
2d7e0 76 65 53 68 61 70 65 72 7d 0a 09 09 09 20 2a 20 veShaper}.... *
2d7f0 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
2d800 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
2d810 65 71 50 6f 77 65 72 20 3d 20 74 68 69 73 2e 69 eqPower = this.i
2d820 6e 70 75 74 20 3d 20 74 68 69 73 2e 6f 75 74 70 nput = this.outp
2d830 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 57 61 ut = new Tone.Wa
2d840 76 65 53 68 61 70 65 72 28 66 75 6e 63 74 69 6f veShaper(functio
2d850 6e 20 28 76 61 6c 29 20 7b 0a 09 20 20 20 20 20 n (val) {..
2d860 20 20 20 20 20 20 20 69 66 20 28 4d 61 74 68 2e if (Math.
2d870 61 62 73 28 76 61 6c 29 20 3c 20 30 2e 30 30 31 abs(val) < 0.001
2d880 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
2d890 20 20 20 20 20 2f 2f 73 68 6f 75 6c 64 20 6f 75 //should ou
2d8a0 74 70 75 74 20 30 20 77 68 65 6e 20 69 6e 70 75 tput 0 when inpu
2d8b0 74 20 69 73 20 30 0a 09 20 20 20 20 20 20 20 20 t is 0..
2d8c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 return 0
2d8d0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
2d8e0 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
2d8f0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
2d900 74 68 69 73 2e 65 71 75 61 6c 50 6f 77 65 72 53 this.equalPowerS
2d910 63 61 6c 65 28 76 61 6c 29 3b 0a 09 20 20 20 20 cale(val);..
2d920 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
2d930 20 20 20 7d 2e 62 69 6e 64 28 74 68 69 73 29 2c }.bind(this),
2d940 20 34 30 39 36 29 3b 0a 09 20 20 20 20 7d 3b 0a 4096);.. };.
2d950 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 . Tone.extend
2d960 28 54 6f 6e 65 2e 45 71 75 61 6c 50 6f 77 65 72 (Tone.EqualPower
2d970 47 61 69 6e 2c 20 54 6f 6e 65 2e 53 69 67 6e 61 Gain, Tone.Signa
2d980 6c 42 61 73 65 29 3b 0a 09 20 20 20 20 2f 2a 2a lBase);.. /**
2d990 0a 09 09 20 2a 20 20 63 6c 65 61 6e 20 75 70 0a ... * clean up.
2d9a0 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
2d9b0 54 6f 6e 65 2e 45 71 75 61 6c 50 6f 77 65 72 47 Tone.EqualPowerG
2d9c0 61 69 6e 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a ain} this... */.
2d9d0 09 20 20 20 20 54 6f 6e 65 2e 45 71 75 61 6c 50 . Tone.EqualP
2d9e0 6f 77 65 72 47 61 69 6e 2e 70 72 6f 74 6f 74 79 owerGain.prototy
2d9f0 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e pe.dispose = fun
2da00 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
2da10 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 Tone.prototy
2da20 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 pe.dispose.call(
2da30 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 this);..
2da40 74 68 69 73 2e 5f 65 71 50 6f 77 65 72 2e 64 69 this._eqPower.di
2da50 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
2da60 20 20 74 68 69 73 2e 5f 65 71 50 6f 77 65 72 20 this._eqPower
2da70 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
2da80 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
2da90 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
2daa0 6e 20 54 6f 6e 65 2e 45 71 75 61 6c 50 6f 77 65 n Tone.EqualPowe
2dab0 72 47 61 69 6e 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 rGain;..});..Mod
2dac0 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f ule(function (To
2dad0 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 ne) {.. ..
2dae0 20 2f 2a 2a 0a 09 09 20 2a 20 40 63 6c 61 73 73 /**... * @class
2daf0 20 20 54 6f 6e 65 2e 43 72 6f 73 73 66 61 64 65 Tone.Crossfade
2db00 20 70 72 6f 76 69 64 65 73 20 65 71 75 61 6c 20 provides equal
2db10 70 6f 77 65 72 20 66 61 64 69 6e 67 20 62 65 74 power fading bet
2db20 77 65 65 6e 20 74 77 6f 20 69 6e 70 75 74 73 2e ween two inputs.
2db30 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 4d ... * M
2db40 6f 72 65 20 6f 6e 20 63 72 6f 73 73 66 61 64 69 ore on crossfadi
2db50 6e 67 20 74 65 63 68 6e 69 71 75 65 20 5b 68 65 ng technique [he
2db60 72 65 5d 28 68 74 74 70 73 3a 2f 2f 65 6e 2e 77 re](https://en.w
2db70 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b ikipedia.org/wik
2db80 69 2f 46 61 64 65 5f 28 61 75 64 69 6f 5f 65 6e i/Fade_(audio_en
2db90 67 69 6e 65 65 72 69 6e 67 29 23 43 72 6f 73 73 gineering)#Cross
2dba0 66 61 64 69 6e 67 29 2e 0a 09 09 20 2a 0a 09 09 fading).... *...
2dbb0 20 2a 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a * @constructor.
2dbc0 09 09 20 2a 20 40 65 78 74 65 6e 64 73 20 7b 54 .. * @extends {T
2dbd0 6f 6e 65 7d 0a 09 09 20 2a 20 40 70 61 72 61 6d one}... * @param
2dbe0 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d 20 5b {NormalRange} [
2dbf0 69 6e 69 74 69 61 6c 46 61 64 65 3d 30 2e 35 5d initialFade=0.5]
2dc00 0a 09 09 20 2a 20 40 65 78 61 6d 70 6c 65 0a 09 ... * @example..
2dc10 09 20 2a 20 76 61 72 20 63 72 6f 73 73 46 61 64 . * var crossFad
2dc20 65 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 72 6f e = new Tone.Cro
2dc30 73 73 46 61 64 65 28 30 2e 35 29 3b 0a 09 09 20 ssFade(0.5);...
2dc40 2a 20 2f 2f 63 6f 6e 6e 65 63 74 20 65 66 66 65 * //connect effe
2dc50 63 74 20 41 20 74 6f 20 63 72 6f 73 73 66 61 64 ct A to crossfad
2dc60 65 20 66 72 6f 6d 0a 09 09 20 2a 20 2f 2f 65 66 e from... * //ef
2dc70 66 65 63 74 20 6f 75 74 70 75 74 20 30 20 74 6f fect output 0 to
2dc80 20 63 72 6f 73 73 66 61 64 65 20 69 6e 70 75 74 crossfade input
2dc90 20 30 0a 09 09 20 2a 20 65 66 66 65 63 74 41 2e 0... * effectA.
2dca0 63 6f 6e 6e 65 63 74 28 63 72 6f 73 73 46 61 64 connect(crossFad
2dcb0 65 2c 20 30 2c 20 30 29 3b 0a 09 09 20 2a 20 2f e, 0, 0);... * /
2dcc0 2f 63 6f 6e 6e 65 63 74 20 65 66 66 65 63 74 20 /connect effect
2dcd0 42 20 74 6f 20 63 72 6f 73 73 66 61 64 65 20 66 B to crossfade f
2dce0 72 6f 6d 0a 09 09 20 2a 20 2f 2f 65 66 66 65 63 rom... * //effec
2dcf0 74 20 6f 75 74 70 75 74 20 30 20 74 6f 20 63 72 t output 0 to cr
2dd00 6f 73 73 66 61 64 65 20 69 6e 70 75 74 20 31 0a ossfade input 1.
2dd10 09 09 20 2a 20 65 66 66 65 63 74 42 2e 63 6f 6e .. * effectB.con
2dd20 6e 65 63 74 28 63 72 6f 73 73 46 61 64 65 2c 20 nect(crossFade,
2dd30 30 2c 20 31 29 3b 0a 09 09 20 2a 20 63 72 6f 73 0, 1);... * cros
2dd40 73 46 61 64 65 2e 66 61 64 65 2e 76 61 6c 75 65 sFade.fade.value
2dd50 20 3d 20 30 3b 0a 09 09 20 2a 20 2f 2f 20 5e 20 = 0;... * // ^
2dd60 6f 6e 6c 79 20 65 66 66 65 63 74 41 20 69 73 20 only effectA is
2dd70 6f 75 74 70 75 74 0a 09 09 20 2a 20 63 72 6f 73 output... * cros
2dd80 73 46 61 64 65 2e 66 61 64 65 2e 76 61 6c 75 65 sFade.fade.value
2dd90 20 3d 20 31 3b 0a 09 09 20 2a 20 2f 2f 20 5e 20 = 1;... * // ^
2dda0 6f 6e 6c 79 20 65 66 66 65 63 74 42 20 69 73 20 only effectB is
2ddb0 6f 75 74 70 75 74 0a 09 09 20 2a 20 63 72 6f 73 output... * cros
2ddc0 73 46 61 64 65 2e 66 61 64 65 2e 76 61 6c 75 65 sFade.fade.value
2ddd0 20 3d 20 30 2e 35 3b 0a 09 09 20 2a 20 2f 2f 20 = 0.5;... * //
2dde0 5e 20 74 68 65 20 74 77 6f 20 73 69 67 6e 61 6c ^ the two signal
2ddf0 73 20 61 72 65 20 6d 69 78 65 64 20 65 71 75 61 s are mixed equa
2de00 6c 6c 79 2e 20 0a 09 09 20 2a 2f 0a 09 20 20 20 lly. ... */..
2de10 20 54 6f 6e 65 2e 43 72 6f 73 73 46 61 64 65 20 Tone.CrossFade
2de20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 69 6e 69 74 = function (init
2de30 69 61 6c 46 61 64 65 29 20 7b 0a 09 20 20 20 20 ialFade) {..
2de40 20 20 20 20 74 68 69 73 2e 63 72 65 61 74 65 49 this.createI
2de50 6e 73 4f 75 74 73 28 32 2c 20 31 29 3b 0a 09 20 nsOuts(2, 1);..
2de60 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
2de70 20 20 41 6c 69 61 73 20 66 6f 72 20 3c 63 6f 64 Alias for <cod
2de80 65 3e 69 6e 70 75 74 5b 30 5d 3c 2f 63 6f 64 65 e>input[0]</code
2de90 3e 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 >. .... * @type
2dea0 20 7b 54 6f 6e 65 2e 47 61 69 6e 7d 0a 09 09 09 {Tone.Gain}....
2deb0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
2dec0 73 2e 61 20 3d 20 74 68 69 73 2e 69 6e 70 75 74 s.a = this.input
2ded0 5b 30 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 [0] = new Tone.G
2dee0 61 69 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ain();..
2def0 2f 2a 2a 0a 09 09 09 20 2a 20 20 41 6c 69 61 73 /**.... * Alias
2df00 20 66 6f 72 20 3c 63 6f 64 65 3e 69 6e 70 75 74 for <code>input
2df10 5b 31 5d 3c 2f 63 6f 64 65 3e 2e 20 0a 09 09 09 [1]</code>. ....
2df20 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e * @type {Tone.
2df30 47 61 69 6e 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 Gain}.... */..
2df40 20 20 20 20 20 20 74 68 69 73 2e 62 20 3d 20 74 this.b = t
2df50 68 69 73 2e 69 6e 70 75 74 5b 31 5d 20 3d 20 6e his.input[1] = n
2df60 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 29 3b 0a ew Tone.Gain();.
2df70 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
2df80 20 2a 20 09 54 68 65 20 6d 69 78 20 62 65 74 77 * .The mix betw
2df90 65 65 6e 20 74 68 65 20 74 77 6f 20 69 6e 70 75 een the two inpu
2dfa0 74 73 2e 20 41 20 66 61 64 65 20 76 61 6c 75 65 ts. A fade value
2dfb0 20 6f 66 20 30 0a 09 09 09 20 2a 20 09 77 69 6c of 0.... * .wil
2dfc0 6c 20 6f 75 74 70 75 74 20 31 30 30 25 20 3c 63 l output 100% <c
2dfd0 6f 64 65 3e 69 6e 70 75 74 5b 30 5d 3c 2f 63 6f ode>input[0]</co
2dfe0 64 65 3e 20 61 6e 64 20 0a 09 09 09 20 2a 20 09 de> and .... * .
2dff0 61 20 76 61 6c 75 65 20 6f 66 20 31 20 77 69 6c a value of 1 wil
2e000 6c 20 6f 75 74 70 75 74 20 31 30 30 25 20 3c 63 l output 100% <c
2e010 6f 64 65 3e 69 6e 70 75 74 5b 31 5d 3c 2f 63 6f ode>input[1]</co
2e020 64 65 3e 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 de>. .... * @ty
2e030 70 65 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d pe {NormalRange}
2e040 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a .... * @signal.
2e050 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
2e060 74 68 69 73 2e 66 61 64 65 20 3d 20 6e 65 77 20 this.fade = new
2e070 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 74 68 69 73 Tone.Signal(this
2e080 2e 64 65 66 61 75 6c 74 41 72 67 28 69 6e 69 74 .defaultArg(init
2e090 69 61 6c 46 61 64 65 2c 20 30 2e 35 29 2c 20 54 ialFade, 0.5), T
2e0a0 6f 6e 65 2e 54 79 70 65 2e 4e 6f 72 6d 61 6c 52 one.Type.NormalR
2e0b0 61 6e 67 65 29 3b 0a 09 20 20 20 20 20 20 20 20 ange);..
2e0c0 2f 2a 2a 0a 09 09 09 20 2a 20 20 65 71 75 61 6c /**.... * equal
2e0d0 20 70 6f 77 65 72 20 67 61 69 6e 20 63 72 6f 73 power gain cros
2e0e0 73 20 66 61 64 65 0a 09 09 09 20 2a 20 20 40 70 s fade.... * @p
2e0f0 72 69 76 61 74 65 0a 09 09 09 20 2a 20 20 40 74 rivate.... * @t
2e100 79 70 65 20 7b 54 6f 6e 65 2e 45 71 75 61 6c 50 ype {Tone.EqualP
2e110 6f 77 65 72 47 61 69 6e 7d 0a 09 09 09 20 2a 2f owerGain}.... */
2e120 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
2e130 65 71 75 61 6c 50 6f 77 65 72 41 20 3d 20 6e 65 equalPowerA = ne
2e140 77 20 54 6f 6e 65 2e 45 71 75 61 6c 50 6f 77 65 w Tone.EqualPowe
2e150 72 47 61 69 6e 28 29 3b 0a 09 20 20 20 20 20 20 rGain();..
2e160 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 65 71 75 /**.... * equ
2e170 61 6c 20 70 6f 77 65 72 20 67 61 69 6e 20 63 72 al power gain cr
2e180 6f 73 73 20 66 61 64 65 0a 09 09 09 20 2a 20 20 oss fade.... *
2e190 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 20 20 @private.... *
2e1a0 40 74 79 70 65 20 7b 54 6f 6e 65 2e 45 71 75 61 @type {Tone.Equa
2e1b0 6c 50 6f 77 65 72 47 61 69 6e 7d 0a 09 09 09 20 lPowerGain}....
2e1c0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
2e1d0 2e 5f 65 71 75 61 6c 50 6f 77 65 72 42 20 3d 20 ._equalPowerB =
2e1e0 6e 65 77 20 54 6f 6e 65 2e 45 71 75 61 6c 50 6f new Tone.EqualPo
2e1f0 77 65 72 47 61 69 6e 28 29 3b 0a 09 20 20 20 20 werGain();..
2e200 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 69 /**.... * i
2e210 6e 76 65 72 74 20 74 68 65 20 69 6e 63 6f 6d 69 nvert the incomi
2e220 6e 67 20 73 69 67 6e 61 6c 0a 09 09 09 20 2a 20 ng signal.... *
2e230 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 20 @private.... *
2e240 20 40 74 79 70 65 20 7b 54 6f 6e 65 7d 0a 09 09 @type {Tone}...
2e250 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
2e260 69 73 2e 5f 69 6e 76 65 72 74 20 3d 20 6e 65 77 is._invert = new
2e270 20 54 6f 6e 65 2e 45 78 70 72 28 27 31 20 2d 20 Tone.Expr('1 -
2e280 24 30 27 29 3b 0a 09 20 20 20 20 20 20 20 20 2f $0');.. /
2e290 2f 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 09 20 20 /connections..
2e2a0 20 20 20 20 20 20 74 68 69 73 2e 61 2e 63 6f 6e this.a.con
2e2b0 6e 65 63 74 28 74 68 69 73 2e 6f 75 74 70 75 74 nect(this.output
2e2c0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
2e2d0 2e 62 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e .b.connect(this.
2e2e0 6f 75 74 70 75 74 29 3b 0a 09 20 20 20 20 20 20 output);..
2e2f0 20 20 74 68 69 73 2e 66 61 64 65 2e 63 68 61 69 this.fade.chai
2e300 6e 28 74 68 69 73 2e 5f 65 71 75 61 6c 50 6f 77 n(this._equalPow
2e310 65 72 42 2c 20 74 68 69 73 2e 62 2e 67 61 69 6e erB, this.b.gain
2e320 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
2e330 2e 66 61 64 65 2e 63 68 61 69 6e 28 74 68 69 73 .fade.chain(this
2e340 2e 5f 69 6e 76 65 72 74 2c 20 74 68 69 73 2e 5f ._invert, this._
2e350 65 71 75 61 6c 50 6f 77 65 72 41 2c 20 74 68 69 equalPowerA, thi
2e360 73 2e 61 2e 67 61 69 6e 29 3b 0a 09 20 20 20 20 s.a.gain);..
2e370 20 20 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e this._readOn
2e380 6c 79 28 27 66 61 64 65 27 29 3b 0a 09 20 20 20 ly('fade');..
2e390 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 };.. Tone.ex
2e3a0 74 65 6e 64 28 54 6f 6e 65 2e 43 72 6f 73 73 46 tend(Tone.CrossF
2e3b0 61 64 65 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 ade);.. /**..
2e3c0 09 20 2a 20 20 63 6c 65 61 6e 20 75 70 0a 09 09 . * clean up...
2e3d0 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f * @returns {To
2e3e0 6e 65 2e 43 72 6f 73 73 46 61 64 65 7d 20 74 68 ne.CrossFade} th
2e3f0 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
2e400 6e 65 2e 43 72 6f 73 73 46 61 64 65 2e 70 72 6f ne.CrossFade.pro
2e410 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d totype.dispose =
2e420 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
2e430 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 6f Tone.pro
2e440 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 totype.dispose.c
2e450 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 all(this);..
2e460 20 20 20 20 74 68 69 73 2e 5f 77 72 69 74 61 62 this._writab
2e470 6c 65 28 27 66 61 64 65 27 29 3b 0a 09 20 20 20 le('fade');..
2e480 20 20 20 20 20 74 68 69 73 2e 5f 65 71 75 61 6c this._equal
2e490 50 6f 77 65 72 41 2e 64 69 73 70 6f 73 65 28 29 PowerA.dispose()
2e4a0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
2e4b0 5f 65 71 75 61 6c 50 6f 77 65 72 41 20 3d 20 6e _equalPowerA = n
2e4c0 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
2e4d0 69 73 2e 5f 65 71 75 61 6c 50 6f 77 65 72 42 2e is._equalPowerB.
2e4e0 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
2e4f0 20 20 20 20 74 68 69 73 2e 5f 65 71 75 61 6c 50 this._equalP
2e500 6f 77 65 72 42 20 3d 20 6e 75 6c 6c 3b 0a 09 20 owerB = null;..
2e510 20 20 20 20 20 20 20 74 68 69 73 2e 66 61 64 65 this.fade
2e520 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
2e530 20 20 20 20 20 74 68 69 73 2e 66 61 64 65 20 3d this.fade =
2e540 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
2e550 74 68 69 73 2e 5f 69 6e 76 65 72 74 2e 64 69 73 this._invert.dis
2e560 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
2e570 20 74 68 69 73 2e 5f 69 6e 76 65 72 74 20 3d 20 this._invert =
2e580 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 null;.. t
2e590 68 69 73 2e 61 2e 64 69 73 70 6f 73 65 28 29 3b his.a.dispose();
2e5a0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 .. this.a
2e5b0 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
2e5c0 20 20 74 68 69 73 2e 62 2e 64 69 73 70 6f 73 65 this.b.dispose
2e5d0 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
2e5e0 73 2e 62 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 s.b = null;..
2e5f0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
2e600 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 ;.. };.. r
2e610 65 74 75 72 6e 20 54 6f 6e 65 2e 43 72 6f 73 73 eturn Tone.Cross
2e620 46 61 64 65 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 Fade;..});..Modu
2e630 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e le(function (Ton
2e640 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 e) {.. ..
2e650 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 /**... * @class
2e660 20 20 54 6f 6e 65 2e 46 69 6c 74 65 72 20 69 73 Tone.Filter is
2e670 20 61 20 66 69 6c 74 65 72 20 77 68 69 63 68 20 a filter which
2e680 61 6c 6c 6f 77 73 20 66 6f 72 20 61 6c 6c 20 6f allows for all o
2e690 66 20 74 68 65 20 73 61 6d 65 20 6e 61 74 69 76 f the same nativ
2e6a0 65 20 6d 65 74 68 6f 64 73 0a 09 09 20 2a 20 20 e methods... *
2e6b0 20 20 20 20 20 20 20 20 61 73 20 74 68 65 20 5b as the [
2e6c0 42 69 71 75 61 64 46 69 6c 74 65 72 4e 6f 64 65 BiquadFilterNode
2e6d0 5d 28 68 74 74 70 3a 2f 2f 77 65 62 61 75 64 69 ](http://webaudi
2e6e0 6f 2e 67 69 74 68 75 62 2e 69 6f 2f 77 65 62 2d o.github.io/web-
2e6f0 61 75 64 69 6f 2d 61 70 69 2f 23 74 68 65 2d 62 audio-api/#the-b
2e700 69 71 75 61 64 66 69 6c 74 65 72 6e 6f 64 65 2d iquadfilternode-
2e710 69 6e 74 65 72 66 61 63 65 29 2e 20 0a 09 09 20 interface). ...
2e720 2a 20 20 20 20 20 20 20 20 20 20 54 6f 6e 65 2e * Tone.
2e730 46 69 6c 74 65 72 20 68 61 73 20 74 68 65 20 61 Filter has the a
2e740 64 64 65 64 20 61 62 69 6c 69 74 79 20 74 6f 20 dded ability to
2e750 73 65 74 20 74 68 65 20 66 69 6c 74 65 72 20 72 set the filter r
2e760 6f 6c 6c 6f 66 66 20 61 74 20 2d 31 32 20 0a 09 olloff at -12 ..
2e770 09 20 2a 20 20 20 20 20 20 20 20 20 20 28 64 65 . * (de
2e780 66 61 75 6c 74 29 2c 20 2d 32 34 20 61 6e 64 20 fault), -24 and
2e790 2d 34 38 2e 20 0a 09 09 20 2a 0a 09 09 20 2a 20 -48. ... *... *
2e7a0 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 @constructor...
2e7b0 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f * @extends {To
2e7c0 6e 65 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ne}... * @param
2e7d0 20 7b 46 72 65 71 75 65 6e 63 79 7c 4f 62 6a 65 {Frequency|Obje
2e7e0 63 74 7d 20 5b 66 72 65 71 75 65 6e 63 79 5d 20 ct} [frequency]
2e7f0 54 68 65 20 63 75 74 6f 66 66 20 66 72 65 71 75 The cutoff frequ
2e800 65 6e 63 79 20 6f 66 20 74 68 65 20 66 69 6c 74 ency of the filt
2e810 65 72 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d er.... * @param
2e820 20 7b 73 74 72 69 6e 67 3d 7d 20 74 79 70 65 20 {string=} type
2e830 54 68 65 20 74 79 70 65 20 6f 66 20 66 69 6c 74 The type of filt
2e840 65 72 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d er.... * @param
2e850 20 7b 6e 75 6d 62 65 72 3d 7d 20 72 6f 6c 6c 6f {number=} rollo
2e860 66 66 20 54 68 65 20 64 72 6f 70 20 69 6e 20 64 ff The drop in d
2e870 65 63 69 62 65 6c 73 20 70 65 72 20 6f 63 74 61 ecibels per octa
2e880 76 65 20 61 66 74 65 72 20 74 68 65 20 63 75 74 ve after the cut
2e890 6f 66 66 20 66 72 65 71 75 65 6e 63 79 2e 0a 09 off frequency...
2e8a0 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 . *
2e8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 33 3
2e8c0 20 63 68 6f 69 63 65 73 3a 20 2d 31 32 2c 20 2d choices: -12, -
2e8d0 32 34 2c 20 61 6e 64 20 2d 34 38 0a 09 09 20 2a 24, and -48... *
2e8e0 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 @example... *
2e8f0 20 76 61 72 20 66 69 6c 74 65 72 20 3d 20 6e 65 var filter = ne
2e900 77 20 54 6f 6e 65 2e 46 69 6c 74 65 72 28 32 30 w Tone.Filter(20
2e910 30 2c 20 22 68 69 67 68 70 61 73 73 22 29 3b 0a 0, "highpass");.
2e920 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
2e930 46 69 6c 74 65 72 20 3d 20 66 75 6e 63 74 69 6f Filter = functio
2e940 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
2e950 74 68 69 73 2e 63 72 65 61 74 65 49 6e 73 4f 75 this.createInsOu
2e960 74 73 28 31 2c 20 31 29 3b 0a 09 20 20 20 20 20 ts(1, 1);..
2e970 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d var options =
2e980 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a this.optionsObj
2e990 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b ect(arguments, [
2e9a0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 66 .. 'f
2e9b0 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 requency',..
2e9c0 20 20 20 20 20 20 20 20 27 74 79 70 65 27 2c 0a 'type',.
2e9d0 09 20 20 20 20 20 20 20 20 20 20 20 20 27 72 6f . 'ro
2e9e0 6c 6c 6f 66 66 27 0a 09 20 20 20 20 20 20 20 20 lloff'..
2e9f0 5d 2c 20 54 6f 6e 65 2e 46 69 6c 74 65 72 2e 64 ], Tone.Filter.d
2ea00 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 efaults);..
2ea10 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 /**.... * th
2ea20 65 20 66 69 6c 74 65 72 28 73 29 0a 09 09 09 20 e filter(s)....
2ea30 2a 20 20 40 74 79 70 65 20 7b 41 72 72 61 79 7d * @type {Array}
2ea40 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
2ea50 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
2ea60 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 73 20 3d this._filters =
2ea70 20 5b 5d 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a [];.. /*
2ea80 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 63 75 74 *.... * The cut
2ea90 6f 66 66 20 66 72 65 71 75 65 6e 63 79 20 6f 66 off frequency of
2eaa0 20 74 68 65 20 66 69 6c 74 65 72 2e 20 0a 09 09 the filter. ...
2eab0 09 20 2a 20 20 40 74 79 70 65 20 7b 46 72 65 71 . * @type {Freq
2eac0 75 65 6e 63 79 7d 0a 09 09 09 20 2a 20 20 40 73 uency}.... * @s
2ead0 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 ignal.... */..
2eae0 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 this.frequ
2eaf0 65 6e 63 79 20 3d 20 6e 65 77 20 54 6f 6e 65 2e ency = new Tone.
2eb00 53 69 67 6e 61 6c 28 6f 70 74 69 6f 6e 73 2e 66 Signal(options.f
2eb10 72 65 71 75 65 6e 63 79 2c 20 54 6f 6e 65 2e 54 requency, Tone.T
2eb20 79 70 65 2e 46 72 65 71 75 65 6e 63 79 29 3b 0a ype.Frequency);.
2eb30 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
2eb40 20 2a 20 20 54 68 65 20 64 65 74 75 6e 65 20 70 * The detune p
2eb50 61 72 61 6d 65 74 65 72 0a 09 09 09 20 2a 20 20 arameter.... *
2eb60 40 74 79 70 65 20 7b 43 65 6e 74 73 7d 0a 09 09 @type {Cents}...
2eb70 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 . * @signal....
2eb80 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
2eb90 73 2e 64 65 74 75 6e 65 20 3d 20 6e 65 77 20 54 s.detune = new T
2eba0 6f 6e 65 2e 53 69 67 6e 61 6c 28 30 2c 20 54 6f one.Signal(0, To
2ebb0 6e 65 2e 54 79 70 65 2e 43 65 6e 74 73 29 3b 0a ne.Type.Cents);.
2ebc0 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
2ebd0 20 2a 20 20 54 68 65 20 67 61 69 6e 20 6f 66 20 * The gain of
2ebe0 74 68 65 20 66 69 6c 74 65 72 2c 20 6f 6e 6c 79 the filter, only
2ebf0 20 75 73 65 64 20 69 6e 20 63 65 72 74 61 69 6e used in certain
2ec00 20 66 69 6c 74 65 72 20 74 79 70 65 73 0a 09 09 filter types...
2ec10 09 20 2a 20 20 40 74 79 70 65 20 7b 4e 75 6d 62 . * @type {Numb
2ec20 65 72 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e er}.... * @sign
2ec30 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 al.... */..
2ec40 20 20 20 74 68 69 73 2e 67 61 69 6e 20 3d 20 6e this.gain = n
2ec50 65 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 7b ew Tone.Signal({
2ec60 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 76 .. 'v
2ec70 61 6c 75 65 27 3a 20 6f 70 74 69 6f 6e 73 2e 67 alue': options.g
2ec80 61 69 6e 2c 0a 09 20 20 20 20 20 20 20 20 20 20 ain,..
2ec90 20 20 27 63 6f 6e 76 65 72 74 27 3a 20 66 61 6c 'convert': fal
2eca0 73 65 0a 09 20 20 20 20 20 20 20 20 7d 29 3b 0a se.. });.
2ecb0 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
2ecc0 20 2a 20 20 54 68 65 20 51 20 6f 72 20 51 75 61 * The Q or Qua
2ecd0 6c 69 74 79 20 6f 66 20 74 68 65 20 66 69 6c 74 lity of the filt
2ece0 65 72 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 er.... * @type
2ecf0 7b 50 6f 73 69 74 69 76 65 7d 0a 09 09 09 20 2a {Positive}.... *
2ed00 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f @signal.... */
2ed10 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 51 .. this.Q
2ed20 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e = new Tone.Sign
2ed30 61 6c 28 6f 70 74 69 6f 6e 73 2e 51 29 3b 0a 09 al(options.Q);..
2ed40 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
2ed50 2a 20 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 * the type of t
2ed60 68 65 20 66 69 6c 74 65 72 0a 09 09 09 20 2a 20 he filter.... *
2ed70 20 40 74 79 70 65 20 7b 73 74 72 69 6e 67 7d 0a @type {string}.
2ed80 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
2ed90 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
2eda0 74 68 69 73 2e 5f 74 79 70 65 20 3d 20 6f 70 74 this._type = opt
2edb0 69 6f 6e 73 2e 74 79 70 65 3b 0a 09 20 20 20 20 ions.type;..
2edc0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 /**.... * t
2edd0 68 65 20 72 6f 6c 6c 6f 66 66 20 76 61 6c 75 65 he rolloff value
2ede0 20 6f 66 20 74 68 65 20 66 69 6c 74 65 72 0a 09 of the filter..
2edf0 09 09 20 2a 20 20 40 74 79 70 65 20 7b 6e 75 6d .. * @type {num
2ee00 62 65 72 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 ber}.... * @pri
2ee10 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
2ee20 20 20 20 20 20 74 68 69 73 2e 5f 72 6f 6c 6c 6f this._rollo
2ee30 66 66 20 3d 20 6f 70 74 69 6f 6e 73 2e 72 6f 6c ff = options.rol
2ee40 6c 6f 66 66 3b 0a 09 20 20 20 20 20 20 20 20 2f loff;.. /
2ee50 2f 73 65 74 20 74 68 65 20 72 6f 6c 6c 6f 66 66 /set the rolloff
2ee60 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
2ee70 72 6f 6c 6c 6f 66 66 20 3d 20 6f 70 74 69 6f 6e rolloff = option
2ee80 73 2e 72 6f 6c 6c 6f 66 66 3b 0a 09 20 20 20 20 s.rolloff;..
2ee90 20 20 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e this._readOn
2eea0 6c 79 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 ly([..
2eeb0 20 20 27 64 65 74 75 6e 65 27 2c 0a 09 20 20 20 'detune',..
2eec0 20 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 'freque
2eed0 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 ncy',..
2eee0 20 20 20 27 67 61 69 6e 27 2c 0a 09 20 20 20 20 'gain',..
2eef0 20 20 20 20 20 20 20 20 27 51 27 0a 09 20 20 20 'Q'..
2ef00 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 7d 3b ]);.. };
2ef10 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e .. Tone.exten
2ef20 64 28 54 6f 6e 65 2e 46 69 6c 74 65 72 29 3b 0a d(Tone.Filter);.
2ef30 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 . /**... * t
2ef40 68 65 20 64 65 66 61 75 6c 74 20 70 61 72 61 6d he default param
2ef50 65 74 65 72 73 0a 09 09 20 2a 0a 09 09 20 2a 20 eters... *... *
2ef60 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 @static... * @
2ef70 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 type {Object}...
2ef80 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 69 */.. Tone.Fi
2ef90 6c 74 65 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 lter.defaults =
2efa0 7b 0a 09 20 20 20 20 20 20 20 20 27 74 79 70 65 {.. 'type
2efb0 27 3a 20 27 6c 6f 77 70 61 73 73 27 2c 0a 09 20 ': 'lowpass',..
2efc0 20 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 'frequenc
2efd0 79 27 3a 20 33 35 30 2c 0a 09 20 20 20 20 20 20 y': 350,..
2efe0 20 20 27 72 6f 6c 6c 6f 66 66 27 3a 20 2d 31 32 'rolloff': -12
2eff0 2c 0a 09 20 20 20 20 20 20 20 20 27 51 27 3a 20 ,.. 'Q':
2f000 31 2c 0a 09 20 20 20 20 20 20 20 20 27 67 61 69 1,.. 'gai
2f010 6e 27 3a 20 30 0a 09 20 20 20 20 7d 3b 0a 09 20 n': 0.. };..
2f020 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 /**... * The
2f030 74 79 70 65 20 6f 66 20 74 68 65 20 66 69 6c 74 type of the filt
2f040 65 72 2e 20 54 79 70 65 73 3a 20 22 6c 6f 77 70 er. Types: "lowp
2f050 61 73 73 22 2c 20 22 68 69 67 68 70 61 73 73 22 ass", "highpass"
2f060 2c 20 0a 09 09 20 2a 20 22 62 61 6e 64 70 61 73 , ... * "bandpas
2f070 73 22 2c 20 22 6c 6f 77 73 68 65 6c 66 22 2c 20 s", "lowshelf",
2f080 22 68 69 67 68 73 68 65 6c 66 22 2c 20 22 6e 6f "highshelf", "no
2f090 74 63 68 22 2c 20 22 61 6c 6c 70 61 73 73 22 2c tch", "allpass",
2f0a0 20 6f 72 20 22 70 65 61 6b 69 6e 67 22 2e 20 0a or "peaking". .
2f0b0 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 .. * @memberOf T
2f0c0 6f 6e 65 2e 46 69 6c 74 65 72 23 0a 09 09 20 2a one.Filter#... *
2f0d0 20 40 74 79 70 65 20 7b 73 74 72 69 6e 67 7d 0a @type {string}.
2f0e0 09 09 20 2a 20 40 6e 61 6d 65 20 74 79 70 65 0a .. * @name type.
2f0f0 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 .. */.. Objec
2f100 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 t.defineProperty
2f110 28 54 6f 6e 65 2e 46 69 6c 74 65 72 2e 70 72 6f (Tone.Filter.pro
2f120 74 6f 74 79 70 65 2c 20 27 74 79 70 65 27 2c 20 totype, 'type',
2f130 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 {.. get:
2f140 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
2f150 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
2f160 6e 20 74 68 69 73 2e 5f 74 79 70 65 3b 0a 09 20 n this._type;..
2f170 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 },..
2f180 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e set: function
2f190 20 28 74 79 70 65 29 20 7b 0a 09 20 20 20 20 20 (type) {..
2f1a0 20 20 20 20 20 20 20 76 61 72 20 74 79 70 65 73 var types
2f1b0 20 3d 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 = [..
2f1c0 20 20 20 20 20 20 27 6c 6f 77 70 61 73 73 27 2c 'lowpass',
2f1d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2f1e0 20 20 27 68 69 67 68 70 61 73 73 27 2c 0a 09 20 'highpass',..
2f1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 '
2f200 62 61 6e 64 70 61 73 73 27 2c 0a 09 20 20 20 20 bandpass',..
2f210 20 20 20 20 20 20 20 20 20 20 20 20 27 6c 6f 77 'low
2f220 73 68 65 6c 66 27 2c 0a 09 20 20 20 20 20 20 20 shelf',..
2f230 20 20 20 20 20 20 20 20 20 27 68 69 67 68 73 68 'highsh
2f240 65 6c 66 27 2c 0a 09 20 20 20 20 20 20 20 20 20 elf',..
2f250 20 20 20 20 20 20 20 27 6e 6f 74 63 68 27 2c 0a 'notch',.
2f260 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2f270 20 27 61 6c 6c 70 61 73 73 27 2c 0a 09 20 20 20 'allpass',..
2f280 20 20 20 20 20 20 20 20 20 20 20 20 20 27 70 65 'pe
2f290 61 6b 69 6e 67 27 0a 09 20 20 20 20 20 20 20 20 aking'..
2f2a0 20 20 20 20 5d 3b 0a 09 20 20 20 20 20 20 20 20 ];..
2f2b0 20 20 20 20 69 66 20 28 74 79 70 65 73 2e 69 6e if (types.in
2f2c0 64 65 78 4f 66 28 74 79 70 65 29 20 3d 3d 3d 20 dexOf(type) ===
2f2d0 2d 31 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 -1) {..
2f2e0 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 throw new
2f2f0 20 54 79 70 65 45 72 72 6f 72 28 27 54 6f 6e 65 TypeError('Tone
2f300 2e 46 69 6c 74 65 72 3a 20 69 6e 76 61 6c 69 64 .Filter: invalid
2f310 20 74 79 70 65 20 27 20 2b 20 74 79 70 65 29 3b type ' + type);
2f320 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
2f330 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
2f340 73 2e 5f 74 79 70 65 20 3d 20 74 79 70 65 3b 0a s._type = type;.
2f350 09 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 . for
2f360 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c (var i = 0; i <
2f370 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 73 2e 6c this._filters.l
2f380 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 ength; i++) {..
2f390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
2f3a0 68 69 73 2e 5f 66 69 6c 74 65 72 73 5b 69 5d 2e his._filters[i].
2f3b0 74 79 70 65 20 3d 20 74 79 70 65 3b 0a 09 20 20 type = type;..
2f3c0 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
2f3d0 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
2f3e0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 . /**... * Th
2f3f0 65 20 72 6f 6c 6c 6f 66 66 20 6f 66 20 74 68 65 e rolloff of the
2f400 20 66 69 6c 74 65 72 20 77 68 69 63 68 20 69 73 filter which is
2f410 20 74 68 65 20 64 72 6f 70 20 69 6e 20 64 62 0a the drop in db.
2f420 09 09 20 2a 20 70 65 72 20 6f 63 74 61 76 65 2e .. * per octave.
2f430 20 49 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 74 Implemented int
2f440 65 72 6e 61 6c 6c 79 20 62 79 20 63 61 73 63 61 ernally by casca
2f450 64 69 6e 67 20 66 69 6c 74 65 72 73 2e 0a 09 09 ding filters....
2f460 20 2a 20 4f 6e 6c 79 20 61 63 63 65 70 74 73 20 * Only accepts
2f470 74 68 65 20 76 61 6c 75 65 73 20 2d 31 32 2c 20 the values -12,
2f480 2d 32 34 2c 20 2d 34 38 20 61 6e 64 20 2d 39 36 -24, -48 and -96
2f490 2e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 .... * @memberOf
2f4a0 20 54 6f 6e 65 2e 46 69 6c 74 65 72 23 0a 09 09 Tone.Filter#...
2f4b0 20 2a 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 * @type {number
2f4c0 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 72 6f 6c }... * @name rol
2f4d0 6c 6f 66 66 0a 09 09 20 2a 2f 0a 09 20 20 20 20 loff... */..
2f4e0 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
2f4f0 70 65 72 74 79 28 54 6f 6e 65 2e 46 69 6c 74 65 perty(Tone.Filte
2f500 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 72 6f r.prototype, 'ro
2f510 6c 6c 6f 66 66 27 2c 20 7b 0a 09 20 20 20 20 20 lloff', {..
2f520 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e get: function
2f530 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 () {..
2f540 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
2f550 72 6f 6c 6c 6f 66 66 3b 0a 09 20 20 20 20 20 20 rolloff;..
2f560 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
2f570 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 72 6f 6c t: function (rol
2f580 6c 6f 66 66 29 20 7b 0a 09 20 20 20 20 20 20 20 loff) {..
2f590 20 20 20 20 20 72 6f 6c 6c 6f 66 66 20 3d 20 70 rolloff = p
2f5a0 61 72 73 65 49 6e 74 28 72 6f 6c 6c 6f 66 66 2c arseInt(rolloff,
2f5b0 20 31 30 29 3b 0a 09 20 20 20 20 20 20 20 20 20 10);..
2f5c0 20 20 20 76 61 72 20 70 6f 73 73 69 62 69 6c 69 var possibili
2f5d0 74 69 65 73 20 3d 20 5b 0a 09 20 20 20 20 20 20 ties = [..
2f5e0 20 20 20 20 20 20 20 20 20 20 2d 31 32 2c 0a 09 -12,..
2f5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2f600 2d 32 34 2c 0a 09 20 20 20 20 20 20 20 20 20 20 -24,..
2f610 20 20 20 20 20 20 2d 34 38 2c 0a 09 20 20 20 20 -48,..
2f620 20 20 20 20 20 20 20 20 20 20 20 20 2d 39 36 0a -96.
2f630 09 20 20 20 20 20 20 20 20 20 20 20 20 5d 3b 0a . ];.
2f640 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
2f650 20 63 61 73 63 61 64 69 6e 67 43 6f 75 6e 74 20 cascadingCount
2f660 3d 20 70 6f 73 73 69 62 69 6c 69 74 69 65 73 2e = possibilities.
2f670 69 6e 64 65 78 4f 66 28 72 6f 6c 6c 6f 66 66 29 indexOf(rolloff)
2f680 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f ;.. /
2f690 2f 63 68 65 63 6b 20 74 68 65 20 72 6f 6c 6c 6f /check the rollo
2f6a0 66 66 20 69 73 20 76 61 6c 69 64 0a 09 20 20 20 ff is valid..
2f6b0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 61 73 if (cas
2f6c0 63 61 64 69 6e 67 43 6f 75 6e 74 20 3d 3d 3d 20 cadingCount ===
2f6d0 2d 31 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 -1) {..
2f6e0 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 throw new
2f6f0 20 52 61 6e 67 65 45 72 72 6f 72 28 27 54 6f 6e RangeError('Ton
2f700 65 2e 46 69 6c 74 65 72 3a 20 72 6f 6c 6c 6f 66 e.Filter: rollof
2f710 66 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 2d 31 f can only be -1
2f720 32 2c 20 2d 32 34 2c 20 2d 34 38 20 6f 72 20 2d 2, -24, -48 or -
2f730 39 36 27 29 3b 0a 09 20 20 20 20 20 20 20 20 20 96');..
2f740 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 }..
2f750 20 20 63 61 73 63 61 64 69 6e 67 43 6f 75 6e 74 cascadingCount
2f760 20 2b 3d 20 31 3b 0a 09 20 20 20 20 20 20 20 20 += 1;..
2f770 20 20 20 20 74 68 69 73 2e 5f 72 6f 6c 6c 6f 66 this._rollof
2f780 66 20 3d 20 72 6f 6c 6c 6f 66 66 3b 0a 09 20 20 f = rolloff;..
2f790 20 20 20 20 20 20 20 20 20 20 2f 2f 66 69 72 73 //firs
2f7a0 74 20 64 69 73 63 6f 6e 6e 65 63 74 20 74 68 65 t disconnect the
2f7b0 20 66 69 6c 74 65 72 73 20 61 6e 64 20 74 68 72 filters and thr
2f7c0 6f 77 20 74 68 65 6d 20 61 77 61 79 0a 09 20 20 ow them away..
2f7d0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 this.i
2f7e0 6e 70 75 74 2e 64 69 73 63 6f 6e 6e 65 63 74 28 nput.disconnect(
2f7f0 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
2f800 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 for (var i = 0;
2f810 69 20 3c 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 i < this._filter
2f820 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b s.length; i++) {
2f830 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2f840 20 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 73 5b this._filters[
2f850 69 5d 2e 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b i].disconnect();
2f860 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2f870 20 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 73 5b this._filters[
2f880 69 5d 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 i] = null;..
2f890 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
2f8a0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 69 6c this._fil
2f8b0 74 65 72 73 20 3d 20 6e 65 77 20 41 72 72 61 79 ters = new Array
2f8c0 28 63 61 73 63 61 64 69 6e 67 43 6f 75 6e 74 29 (cascadingCount)
2f8d0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 66 ;.. f
2f8e0 6f 72 20 28 76 61 72 20 63 6f 75 6e 74 20 3d 20 or (var count =
2f8f0 30 3b 20 63 6f 75 6e 74 20 3c 20 63 61 73 63 61 0; count < casca
2f900 64 69 6e 67 43 6f 75 6e 74 3b 20 63 6f 75 6e 74 dingCount; count
2f910 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ++) {..
2f920 20 20 20 20 20 20 20 76 61 72 20 66 69 6c 74 65 var filte
2f930 72 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 r = this.context
2f940 2e 63 72 65 61 74 65 42 69 71 75 61 64 46 69 6c .createBiquadFil
2f950 74 65 72 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ter();..
2f960 20 20 20 20 20 20 20 20 66 69 6c 74 65 72 2e 74 filter.t
2f970 79 70 65 20 3d 20 74 68 69 73 2e 5f 74 79 70 65 ype = this._type
2f980 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
2f990 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 6e 63 this.frequenc
2f9a0 79 2e 63 6f 6e 6e 65 63 74 28 66 69 6c 74 65 72 y.connect(filter
2f9b0 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a 09 20 20 .frequency);..
2f9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
2f9d0 69 73 2e 64 65 74 75 6e 65 2e 63 6f 6e 6e 65 63 is.detune.connec
2f9e0 74 28 66 69 6c 74 65 72 2e 64 65 74 75 6e 65 29 t(filter.detune)
2f9f0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
2fa00 20 20 20 74 68 69 73 2e 51 2e 63 6f 6e 6e 65 63 this.Q.connec
2fa10 74 28 66 69 6c 74 65 72 2e 51 29 3b 0a 09 20 20 t(filter.Q);..
2fa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
2fa30 69 73 2e 67 61 69 6e 2e 63 6f 6e 6e 65 63 74 28 is.gain.connect(
2fa40 66 69 6c 74 65 72 2e 67 61 69 6e 29 3b 0a 09 20 filter.gain);..
2fa50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
2fa60 68 69 73 2e 5f 66 69 6c 74 65 72 73 5b 63 6f 75 his._filters[cou
2fa70 6e 74 5d 20 3d 20 66 69 6c 74 65 72 3b 0a 09 20 nt] = filter;..
2fa80 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
2fa90 20 20 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 6e //conn
2faa0 65 63 74 20 74 68 65 6d 20 75 70 0a 09 20 20 20 ect them up..
2fab0 20 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 6e var con
2fac0 6e 65 63 74 69 6f 6e 43 68 61 69 6e 20 3d 20 5b nectionChain = [
2fad0 74 68 69 73 2e 69 6e 70 75 74 5d 2e 63 6f 6e 63 this.input].conc
2fae0 61 74 28 74 68 69 73 2e 5f 66 69 6c 74 65 72 73 at(this._filters
2faf0 29 2e 63 6f 6e 63 61 74 28 5b 74 68 69 73 2e 6f ).concat([this.o
2fb00 75 74 70 75 74 5d 29 3b 0a 09 20 20 20 20 20 20 utput]);..
2fb10 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 6e 65 this.conne
2fb20 63 74 53 65 72 69 65 73 2e 61 70 70 6c 79 28 74 ctSeries.apply(t
2fb30 68 69 73 2c 20 63 6f 6e 6e 65 63 74 69 6f 6e 43 his, connectionC
2fb40 68 61 69 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 hain);..
2fb50 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
2fb60 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 /**... * Clean
2fb70 75 70 2e 20 0a 09 09 20 2a 20 20 40 72 65 74 75 up. ... * @retu
2fb80 72 6e 20 7b 54 6f 6e 65 2e 46 69 6c 74 65 72 7d rn {Tone.Filter}
2fb90 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
2fba0 20 54 6f 6e 65 2e 46 69 6c 74 65 72 2e 70 72 6f Tone.Filter.pro
2fbb0 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d totype.dispose =
2fbc0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
2fbd0 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 6f Tone.pro
2fbe0 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 totype.dispose.c
2fbf0 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 all(this);..
2fc00 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d for (var i =
2fc10 20 30 3b 20 69 20 3c 20 74 68 69 73 2e 5f 66 69 0; i < this._fi
2fc20 6c 74 65 72 73 2e 6c 65 6e 67 74 68 3b 20 69 2b lters.length; i+
2fc30 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 +) {..
2fc40 20 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 73 5b this._filters[
2fc50 69 5d 2e 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b i].disconnect();
2fc60 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
2fc70 69 73 2e 5f 66 69 6c 74 65 72 73 5b 69 5d 20 3d is._filters[i] =
2fc80 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
2fc90 7d 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e }.. this.
2fca0 5f 66 69 6c 74 65 72 73 20 3d 20 6e 75 6c 6c 3b _filters = null;
2fcb0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
2fcc0 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 20 writable([..
2fcd0 20 20 20 20 20 20 20 20 27 64 65 74 75 6e 65 27 'detune'
2fce0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
2fcf0 66 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 frequency',..
2fd00 20 20 20 20 20 20 20 20 20 27 67 61 69 6e 27 2c 'gain',
2fd10 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 51 .. 'Q
2fd20 27 0a 09 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 '.. ]);..
2fd30 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 this.fre
2fd40 71 75 65 6e 63 79 2e 64 69 73 70 6f 73 65 28 29 quency.dispose()
2fd50 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
2fd60 51 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 Q.dispose();..
2fd70 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 this.frequ
2fd80 65 6e 63 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 ency = null;..
2fd90 20 20 20 20 20 20 74 68 69 73 2e 51 20 3d 20 6e this.Q = n
2fda0 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
2fdb0 69 73 2e 64 65 74 75 6e 65 2e 64 69 73 70 6f 73 is.detune.dispos
2fdc0 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
2fdd0 69 73 2e 64 65 74 75 6e 65 20 3d 20 6e 75 6c 6c is.detune = null
2fde0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
2fdf0 67 61 69 6e 2e 64 69 73 70 6f 73 65 28 29 3b 0a gain.dispose();.
2fe00 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 67 61 . this.ga
2fe10 69 6e 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 in = null;..
2fe20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
2fe30 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 .. };.. re
2fe40 74 75 72 6e 20 54 6f 6e 65 2e 46 69 6c 74 65 72 turn Tone.Filter
2fe50 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 ;..});..Module(f
2fe60 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b unction (Tone) {
2fe70 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a .. .. /**.
2fe80 09 09 20 2a 20 20 40 63 6c 61 73 73 20 53 70 6c .. * @class Spl
2fe90 69 74 20 74 68 65 20 69 6e 63 6f 6d 69 6e 67 20 it the incoming
2fea0 73 69 67 6e 61 6c 20 69 6e 74 6f 20 74 68 72 65 signal into thre
2feb0 65 20 62 61 6e 64 73 20 28 6c 6f 77 2c 20 6d 69 e bands (low, mi
2fec0 64 2c 20 68 69 67 68 29 0a 09 09 20 2a 20 20 20 d, high)... *
2fed0 20 20 20 20 20 20 77 69 74 68 20 74 77 6f 20 63 with two c
2fee0 72 6f 73 73 6f 76 65 72 20 66 72 65 71 75 65 6e rossover frequen
2fef0 63 79 20 63 6f 6e 74 72 6f 6c 73 2e 20 0a 09 09 cy controls. ...
2ff00 20 2a 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 *... * @extend
2ff10 73 20 7b 54 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 s {Tone}... * @
2ff20 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a constructor... *
2ff30 20 20 40 70 61 72 61 6d 20 7b 46 72 65 71 75 65 @param {Freque
2ff40 6e 63 79 7c 4f 62 6a 65 63 74 7d 20 5b 6c 6f 77 ncy|Object} [low
2ff50 46 72 65 71 75 65 6e 63 79 5d 20 74 68 65 20 6c Frequency] the l
2ff60 6f 77 2f 6d 69 64 20 63 72 6f 73 73 6f 76 65 72 ow/mid crossover
2ff70 20 66 72 65 71 75 65 6e 63 79 0a 09 09 20 2a 20 frequency... *
2ff80 20 40 70 61 72 61 6d 20 7b 46 72 65 71 75 65 6e @param {Frequen
2ff90 63 79 7d 20 5b 68 69 67 68 46 72 65 71 75 65 6e cy} [highFrequen
2ffa0 63 79 5d 20 74 68 65 20 6d 69 64 2f 68 69 67 68 cy] the mid/high
2ffb0 20 63 72 6f 73 73 6f 76 65 72 20 66 72 65 71 75 crossover frequ
2ffc0 65 6e 63 79 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ency... */..
2ffd0 54 6f 6e 65 2e 4d 75 6c 74 69 62 61 6e 64 53 70 Tone.MultibandSp
2ffe0 6c 69 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 lit = function (
2fff0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 ) {.. var
30000 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e options = this.
30010 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 optionsObject(ar
30020 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 guments, [..
30030 20 20 20 20 20 20 20 20 27 6c 6f 77 46 72 65 71 'lowFreq
30040 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 uency',..
30050 20 20 20 20 20 27 68 69 67 68 46 72 65 71 75 65 'highFreque
30060 6e 63 79 27 0a 09 20 20 20 20 20 20 20 20 5d 2c ncy'.. ],
30070 20 54 6f 6e 65 2e 4d 75 6c 74 69 62 61 6e 64 53 Tone.MultibandS
30080 70 6c 69 74 2e 64 65 66 61 75 6c 74 73 29 3b 0a plit.defaults);.
30090 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
300a0 20 2a 20 20 74 68 65 20 69 6e 70 75 74 0a 09 09 * the input...
300b0 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 . * @type {Tone
300c0 2e 47 61 69 6e 7d 0a 09 09 09 20 2a 20 20 40 70 .Gain}.... * @p
300d0 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
300e0 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 70 75 this.inpu
300f0 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 t = new Tone.Gai
30100 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a n();.. /*
30110 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 6f 75 74 *.... * the out
30120 70 75 74 73 0a 09 09 09 20 2a 20 20 40 74 79 70 puts.... * @typ
30130 65 20 7b 41 72 72 61 79 7d 0a 09 09 09 20 2a 20 e {Array}.... *
30140 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
30150 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f .. this.o
30160 75 74 70 75 74 20 3d 20 6e 65 77 20 41 72 72 61 utput = new Arra
30170 79 28 33 29 3b 0a 09 20 20 20 20 20 20 20 20 2f y(3);.. /
30180 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 6c 6f **.... * The lo
30190 77 20 62 61 6e 64 2e 20 41 6c 69 61 73 20 66 6f w band. Alias fo
301a0 72 20 3c 63 6f 64 65 3e 6f 75 74 70 75 74 5b 30 r <code>output[0
301b0 5d 3c 2f 63 6f 64 65 3e 0a 09 09 09 20 2a 20 20 ]</code>.... *
301c0 40 74 79 70 65 20 7b 54 6f 6e 65 2e 46 69 6c 74 @type {Tone.Filt
301d0 65 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 er}.... */..
301e0 20 20 20 20 74 68 69 73 2e 6c 6f 77 20 3d 20 74 this.low = t
301f0 68 69 73 2e 6f 75 74 70 75 74 5b 30 5d 20 3d 20 his.output[0] =
30200 6e 65 77 20 54 6f 6e 65 2e 46 69 6c 74 65 72 28 new Tone.Filter(
30210 30 2c 20 27 6c 6f 77 70 61 73 73 27 29 3b 0a 09 0, 'lowpass');..
30220 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
30230 2a 20 20 74 68 65 20 6c 6f 77 65 72 20 66 69 6c * the lower fil
30240 74 65 72 20 6f 66 20 74 68 65 20 6d 69 64 20 62 ter of the mid b
30250 61 6e 64 0a 09 09 09 20 2a 20 20 40 74 79 70 65 and.... * @type
30260 20 7b 54 6f 6e 65 2e 46 69 6c 74 65 72 7d 0a 09 {Tone.Filter}..
30270 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
30280 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
30290 68 69 73 2e 5f 6c 6f 77 4d 69 64 46 69 6c 74 65 his._lowMidFilte
302a0 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 46 69 6c r = new Tone.Fil
302b0 74 65 72 28 30 2c 20 27 68 69 67 68 70 61 73 73 ter(0, 'highpass
302c0 27 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a ');.. /**
302d0 0a 09 09 09 20 2a 20 20 54 68 65 20 6d 69 64 20 .... * The mid
302e0 62 61 6e 64 20 6f 75 74 70 75 74 2e 20 41 6c 69 band output. Ali
302f0 61 73 20 66 6f 72 20 3c 63 6f 64 65 3e 6f 75 74 as for <code>out
30300 70 75 74 5b 31 5d 3c 2f 63 6f 64 65 3e 0a 09 09 put[1]</code>...
30310 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 . * @type {Tone
30320 2e 46 69 6c 74 65 72 7d 0a 09 09 09 20 2a 2f 0a .Filter}.... */.
30330 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d 69 . this.mi
30340 64 20 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 5b d = this.output[
30350 31 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 46 69 1] = new Tone.Fi
30360 6c 74 65 72 28 30 2c 20 27 6c 6f 77 70 61 73 73 lter(0, 'lowpass
30370 27 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a ');.. /**
30380 0a 09 09 09 20 2a 20 20 54 68 65 20 68 69 67 68 .... * The high
30390 20 62 61 6e 64 20 6f 75 74 70 75 74 2e 20 41 6c band output. Al
303a0 69 61 73 20 66 6f 72 20 3c 63 6f 64 65 3e 6f 75 ias for <code>ou
303b0 74 70 75 74 5b 32 5d 3c 2f 63 6f 64 65 3e 0a 09 tput[2]</code>..
303c0 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e .. * @type {Ton
303d0 65 2e 46 69 6c 74 65 72 7d 0a 09 09 09 20 2a 2f e.Filter}.... */
303e0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 68 .. this.h
303f0 69 67 68 20 3d 20 74 68 69 73 2e 6f 75 74 70 75 igh = this.outpu
30400 74 5b 32 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e t[2] = new Tone.
30410 46 69 6c 74 65 72 28 30 2c 20 27 68 69 67 68 70 Filter(0, 'highp
30420 61 73 73 27 29 3b 0a 09 20 20 20 20 20 20 20 20 ass');..
30430 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 6c /**.... * The l
30440 6f 77 2f 6d 69 64 20 63 72 6f 73 73 6f 76 65 72 ow/mid crossover
30450 20 66 72 65 71 75 65 6e 63 79 2e 0a 09 09 09 20 frequency.....
30460 2a 20 20 40 74 79 70 65 20 7b 46 72 65 71 75 65 * @type {Freque
30470 6e 63 79 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 ncy}.... * @sig
30480 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 nal.... */..
30490 20 20 20 20 74 68 69 73 2e 6c 6f 77 46 72 65 71 this.lowFreq
304a0 75 65 6e 63 79 20 3d 20 6e 65 77 20 54 6f 6e 65 uency = new Tone
304b0 2e 53 69 67 6e 61 6c 28 6f 70 74 69 6f 6e 73 2e .Signal(options.
304c0 6c 6f 77 46 72 65 71 75 65 6e 63 79 2c 20 54 6f lowFrequency, To
304d0 6e 65 2e 54 79 70 65 2e 46 72 65 71 75 65 6e 63 ne.Type.Frequenc
304e0 79 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a y);.. /**
304f0 0a 09 09 09 20 2a 20 20 54 68 65 20 6d 69 64 2f .... * The mid/
30500 68 69 67 68 20 63 72 6f 73 73 6f 76 65 72 20 66 high crossover f
30510 72 65 71 75 65 6e 63 79 2e 0a 09 09 09 20 2a 20 requency..... *
30520 20 40 74 79 70 65 20 7b 46 72 65 71 75 65 6e 63 @type {Frequenc
30530 79 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 y}.... * @signa
30540 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 l.... */..
30550 20 20 74 68 69 73 2e 68 69 67 68 46 72 65 71 75 this.highFrequ
30560 65 6e 63 79 20 3d 20 6e 65 77 20 54 6f 6e 65 2e ency = new Tone.
30570 53 69 67 6e 61 6c 28 6f 70 74 69 6f 6e 73 2e 68 Signal(options.h
30580 69 67 68 46 72 65 71 75 65 6e 63 79 2c 20 54 6f ighFrequency, To
30590 6e 65 2e 54 79 70 65 2e 46 72 65 71 75 65 6e 63 ne.Type.Frequenc
305a0 79 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a y);.. /**
305b0 0a 09 09 09 20 2a 20 20 54 68 65 20 71 75 61 6c .... * The qual
305c0 69 74 79 20 6f 66 20 61 6c 6c 20 74 68 65 20 66 ity of all the f
305d0 69 6c 74 65 72 73 0a 09 09 09 20 2a 20 20 40 74 ilters.... * @t
305e0 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 09 ype {Number}....
305f0 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 * @signal....
30600 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
30610 2e 51 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 .Q = new Tone.Si
30620 67 6e 61 6c 28 6f 70 74 69 6f 6e 73 2e 51 29 3b gnal(options.Q);
30630 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 .. this.i
30640 6e 70 75 74 2e 66 61 6e 28 74 68 69 73 2e 6c 6f nput.fan(this.lo
30650 77 2c 20 74 68 69 73 2e 68 69 67 68 29 3b 0a 09 w, this.high);..
30660 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 70 this.inp
30670 75 74 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f 6c ut.chain(this._l
30680 6f 77 4d 69 64 46 69 6c 74 65 72 2c 20 74 68 69 owMidFilter, thi
30690 73 2e 6d 69 64 29 3b 0a 09 20 20 20 20 20 20 20 s.mid);..
306a0 20 2f 2f 74 68 65 20 66 72 65 71 75 65 6e 63 79 //the frequency
306b0 20 63 6f 6e 74 72 6f 6c 20 73 69 67 6e 61 6c 0a control signal.
306c0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f . this.lo
306d0 77 46 72 65 71 75 65 6e 63 79 2e 63 6f 6e 6e 65 wFrequency.conne
306e0 63 74 28 74 68 69 73 2e 6c 6f 77 2e 66 72 65 71 ct(this.low.freq
306f0 75 65 6e 63 79 29 3b 0a 09 20 20 20 20 20 20 20 uency);..
30700 20 74 68 69 73 2e 6c 6f 77 46 72 65 71 75 65 6e this.lowFrequen
30710 63 79 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e cy.connect(this.
30720 5f 6c 6f 77 4d 69 64 46 69 6c 74 65 72 2e 66 72 _lowMidFilter.fr
30730 65 71 75 65 6e 63 79 29 3b 0a 09 20 20 20 20 20 equency);..
30740 20 20 20 74 68 69 73 2e 68 69 67 68 46 72 65 71 this.highFreq
30750 75 65 6e 63 79 2e 63 6f 6e 6e 65 63 74 28 74 68 uency.connect(th
30760 69 73 2e 6d 69 64 2e 66 72 65 71 75 65 6e 63 79 is.mid.frequency
30770 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
30780 2e 68 69 67 68 46 72 65 71 75 65 6e 63 79 2e 63 .highFrequency.c
30790 6f 6e 6e 65 63 74 28 74 68 69 73 2e 68 69 67 68 onnect(this.high
307a0 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a 09 20 20 .frequency);..
307b0 20 20 20 20 20 20 2f 2f 74 68 65 20 51 20 76 61 //the Q va
307c0 6c 75 65 0a 09 20 20 20 20 20 20 20 20 74 68 69 lue.. thi
307d0 73 2e 51 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 s.Q.connect(this
307e0 2e 6c 6f 77 2e 51 29 3b 0a 09 20 20 20 20 20 20 .low.Q);..
307f0 20 20 74 68 69 73 2e 51 2e 63 6f 6e 6e 65 63 74 this.Q.connect
30800 28 74 68 69 73 2e 5f 6c 6f 77 4d 69 64 46 69 6c (this._lowMidFil
30810 74 65 72 2e 51 29 3b 0a 09 20 20 20 20 20 20 20 ter.Q);..
30820 20 74 68 69 73 2e 51 2e 63 6f 6e 6e 65 63 74 28 this.Q.connect(
30830 74 68 69 73 2e 6d 69 64 2e 51 29 3b 0a 09 20 20 this.mid.Q);..
30840 20 20 20 20 20 20 74 68 69 73 2e 51 2e 63 6f 6e this.Q.con
30850 6e 65 63 74 28 74 68 69 73 2e 68 69 67 68 2e 51 nect(this.high.Q
30860 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
30870 2e 5f 72 65 61 64 4f 6e 6c 79 28 5b 0a 09 20 20 ._readOnly([..
30880 20 20 20 20 20 20 20 20 20 20 27 68 69 67 68 27 'high'
30890 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
308a0 6d 69 64 27 2c 0a 09 20 20 20 20 20 20 20 20 20 mid',..
308b0 20 20 20 27 6c 6f 77 27 2c 0a 09 20 20 20 20 20 'low',..
308c0 20 20 20 20 20 20 20 27 68 69 67 68 46 72 65 71 'highFreq
308d0 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 uency',..
308e0 20 20 20 20 20 27 6c 6f 77 46 72 65 71 75 65 6e 'lowFrequen
308f0 63 79 27 0a 09 20 20 20 20 20 20 20 20 5d 29 3b cy'.. ]);
30900 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f .. };.. To
30910 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 4d ne.extend(Tone.M
30920 75 6c 74 69 62 61 6e 64 53 70 6c 69 74 29 3b 0a ultibandSplit);.
30930 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 . /**... * @
30940 70 72 69 76 61 74 65 0a 09 09 20 2a 20 20 40 73 private... * @s
30950 74 61 74 69 63 0a 09 09 20 2a 20 20 40 74 79 70 tatic... * @typ
30960 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f e {Object}... */
30970 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 75 6c 74 69 .. Tone.Multi
30980 62 61 6e 64 53 70 6c 69 74 2e 64 65 66 61 75 6c bandSplit.defaul
30990 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 ts = {..
309a0 27 6c 6f 77 46 72 65 71 75 65 6e 63 79 27 3a 20 'lowFrequency':
309b0 34 30 30 2c 0a 09 20 20 20 20 20 20 20 20 27 68 400,.. 'h
309c0 69 67 68 46 72 65 71 75 65 6e 63 79 27 3a 20 32 ighFrequency': 2
309d0 35 30 30 2c 0a 09 20 20 20 20 20 20 20 20 27 51 500,.. 'Q
309e0 27 3a 20 31 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ': 1.. };..
309f0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 /**... * Clea
30a00 6e 20 75 70 2e 0a 09 09 20 2a 20 20 40 72 65 74 n up.... * @ret
30a10 75 72 6e 73 20 7b 54 6f 6e 65 2e 4d 75 6c 74 69 urns {Tone.Multi
30a20 62 61 6e 64 53 70 6c 69 74 7d 20 74 68 69 73 0a bandSplit} this.
30a30 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
30a40 4d 75 6c 74 69 62 61 6e 64 53 70 6c 69 74 2e 70 MultibandSplit.p
30a50 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 rototype.dispose
30a60 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
30a70 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 .. Tone.p
30a80 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 rototype.dispose
30a90 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 .call(this);..
30aa0 20 20 20 20 20 20 74 68 69 73 2e 5f 77 72 69 74 this._writ
30ab0 61 62 6c 65 28 5b 0a 09 20 20 20 20 20 20 20 20 able([..
30ac0 20 20 20 20 27 68 69 67 68 27 2c 0a 09 20 20 20 'high',..
30ad0 20 20 20 20 20 20 20 20 20 27 6d 69 64 27 2c 0a 'mid',.
30ae0 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6c 6f . 'lo
30af0 77 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 w',..
30b00 20 27 68 69 67 68 46 72 65 71 75 65 6e 63 79 27 'highFrequency'
30b10 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
30b20 6c 6f 77 46 72 65 71 75 65 6e 63 79 27 0a 09 20 lowFrequency'..
30b30 20 20 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 ]);..
30b40 20 20 20 20 74 68 69 73 2e 6c 6f 77 2e 64 69 73 this.low.dis
30b50 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
30b60 20 74 68 69 73 2e 6c 6f 77 20 3d 20 6e 75 6c 6c this.low = null
30b70 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
30b80 5f 6c 6f 77 4d 69 64 46 69 6c 74 65 72 2e 64 69 _lowMidFilter.di
30b90 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
30ba0 20 20 74 68 69 73 2e 5f 6c 6f 77 4d 69 64 46 69 this._lowMidFi
30bb0 6c 74 65 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 lter = null;..
30bc0 20 20 20 20 20 20 74 68 69 73 2e 6d 69 64 2e 64 this.mid.d
30bd0 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
30be0 20 20 20 74 68 69 73 2e 6d 69 64 20 3d 20 6e 75 this.mid = nu
30bf0 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
30c00 73 2e 68 69 67 68 2e 64 69 73 70 6f 73 65 28 29 s.high.dispose()
30c10 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
30c20 68 69 67 68 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 high = null;..
30c30 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 77 46 72 this.lowFr
30c40 65 71 75 65 6e 63 79 2e 64 69 73 70 6f 73 65 28 equency.dispose(
30c50 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
30c60 2e 6c 6f 77 46 72 65 71 75 65 6e 63 79 20 3d 20 .lowFrequency =
30c70 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 null;.. t
30c80 68 69 73 2e 68 69 67 68 46 72 65 71 75 65 6e 63 his.highFrequenc
30c90 79 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 y.dispose();..
30ca0 20 20 20 20 20 20 74 68 69 73 2e 68 69 67 68 46 this.highF
30cb0 72 65 71 75 65 6e 63 79 20 3d 20 6e 75 6c 6c 3b requency = null;
30cc0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 51 .. this.Q
30cd0 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
30ce0 20 20 20 20 20 74 68 69 73 2e 51 20 3d 20 6e 75 this.Q = nu
30cf0 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ll;.. ret
30d00 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
30d10 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f ;.. return To
30d20 6e 65 2e 4d 75 6c 74 69 62 61 6e 64 53 70 6c 69 ne.MultibandSpli
30d30 74 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 t;..});..Module(
30d40 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 function (Tone)
30d50 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a {.. .. /**
30d60 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 54 6f ... * @class To
30d70 6e 65 2e 45 51 33 20 69 73 20 61 20 74 68 72 65 ne.EQ3 is a thre
30d80 65 20 62 61 6e 64 20 45 51 20 77 69 74 68 20 63 e band EQ with c
30d90 6f 6e 74 72 6f 6c 20 6f 76 65 72 20 6c 6f 77 2c ontrol over low,
30da0 20 6d 69 64 2c 20 61 6e 64 20 68 69 67 68 20 67 mid, and high g
30db0 61 69 6e 20 61 73 0a 09 09 20 2a 20 20 20 20 20 ain as... *
30dc0 20 20 20 20 77 65 6c 6c 20 61 73 20 74 68 65 20 well as the
30dd0 6c 6f 77 20 61 6e 64 20 68 69 67 68 20 63 72 6f low and high cro
30de0 73 73 6f 76 65 72 20 66 72 65 71 75 65 6e 63 69 ssover frequenci
30df0 65 73 2e 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 es.... *... * @
30e00 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a constructor... *
30e10 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
30e20 7d 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 }... * ... * @
30e30 70 61 72 61 6d 20 7b 44 65 63 69 62 65 6c 73 7c param {Decibels|
30e40 4f 62 6a 65 63 74 7d 20 5b 6c 6f 77 4c 65 76 65 Object} [lowLeve
30e50 6c 5d 20 54 68 65 20 67 61 69 6e 20 61 70 70 6c l] The gain appl
30e60 69 65 64 20 74 6f 20 74 68 65 20 6c 6f 77 73 2e ied to the lows.
30e70 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 44 ... * @param {D
30e80 65 63 69 62 65 6c 73 7d 20 5b 6d 69 64 4c 65 76 ecibels} [midLev
30e90 65 6c 5d 20 54 68 65 20 67 61 69 6e 20 61 70 70 el] The gain app
30ea0 6c 69 65 64 20 74 6f 20 74 68 65 20 6d 69 64 2e lied to the mid.
30eb0 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 44 ... * @param {D
30ec0 65 63 69 62 65 6c 73 7d 20 5b 68 69 67 68 4c 65 ecibels} [highLe
30ed0 76 65 6c 5d 20 54 68 65 20 67 61 69 6e 20 61 70 vel] The gain ap
30ee0 70 6c 69 65 64 20 74 6f 20 74 68 65 20 68 69 67 plied to the hig
30ef0 68 2e 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c h.... * @exampl
30f00 65 0a 09 09 20 2a 20 76 61 72 20 65 71 20 3d 20 e... * var eq =
30f10 6e 65 77 20 54 6f 6e 65 2e 45 51 33 28 2d 31 30 new Tone.EQ3(-10
30f20 2c 20 33 2c 20 2d 32 30 29 3b 0a 09 09 20 2a 2f , 3, -20);... */
30f30 0a 09 20 20 20 20 54 6f 6e 65 2e 45 51 33 20 3d .. Tone.EQ3 =
30f40 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
30f50 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 var opti
30f60 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f ons = this.optio
30f70 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e nsObject(argumen
30f80 74 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 ts, [..
30f90 20 20 20 27 6c 6f 77 27 2c 0a 09 20 20 20 20 20 'low',..
30fa0 20 20 20 20 20 20 20 27 6d 69 64 27 2c 0a 09 20 'mid',..
30fb0 20 20 20 20 20 20 20 20 20 20 20 27 68 69 67 68 'high
30fc0 27 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 54 6f '.. ], To
30fd0 6e 65 2e 45 51 33 2e 64 65 66 61 75 6c 74 73 29 ne.EQ3.defaults)
30fe0 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
30ff0 09 09 20 2a 20 20 74 68 65 20 6f 75 74 70 75 74 .. * the output
31000 20 6e 6f 64 65 0a 09 09 09 20 2a 20 20 40 74 79 node.... * @ty
31010 70 65 20 7b 47 61 69 6e 4e 6f 64 65 7d 0a 09 09 pe {GainNode}...
31020 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
31030 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
31040 69 73 2e 6f 75 74 70 75 74 20 3d 20 6e 65 77 20 is.output = new
31050 54 6f 6e 65 2e 47 61 69 6e 28 29 3b 0a 09 20 20 Tone.Gain();..
31060 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
31070 20 74 68 65 20 6d 75 6c 74 69 62 61 6e 64 20 73 the multiband s
31080 70 6c 69 74 0a 09 09 09 20 2a 20 20 40 74 79 70 plit.... * @typ
31090 65 20 7b 54 6f 6e 65 2e 4d 75 6c 74 69 62 61 6e e {Tone.Multiban
310a0 64 53 70 6c 69 74 7d 0a 09 09 09 20 2a 20 20 40 dSplit}.... * @
310b0 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
310c0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 75 this._mu
310d0 6c 74 69 62 61 6e 64 53 70 6c 69 74 20 3d 20 74 ltibandSplit = t
310e0 68 69 73 2e 69 6e 70 75 74 20 3d 20 6e 65 77 20 his.input = new
310f0 54 6f 6e 65 2e 4d 75 6c 74 69 62 61 6e 64 53 70 Tone.MultibandSp
31100 6c 69 74 28 7b 0a 09 20 20 20 20 20 20 20 20 20 lit({..
31110 20 20 20 27 6c 6f 77 46 72 65 71 75 65 6e 63 79 'lowFrequency
31120 27 3a 20 6f 70 74 69 6f 6e 73 2e 6c 6f 77 46 72 ': options.lowFr
31130 65 71 75 65 6e 63 79 2c 0a 09 20 20 20 20 20 20 equency,..
31140 20 20 20 20 20 20 27 68 69 67 68 46 72 65 71 75 'highFrequ
31150 65 6e 63 79 27 3a 20 6f 70 74 69 6f 6e 73 2e 68 ency': options.h
31160 69 67 68 46 72 65 71 75 65 6e 63 79 0a 09 20 20 ighFrequency..
31170 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 });..
31180 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 /**.... * Th
31190 65 20 67 61 69 6e 20 66 6f 72 20 74 68 65 20 6c e gain for the l
311a0 6f 77 65 72 20 73 69 67 6e 61 6c 73 0a 09 09 09 ower signals....
311b0 20 2a 20 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 * @type {Tone
311c0 2e 47 61 69 6e 7d 0a 09 09 09 20 2a 20 20 40 70 .Gain}.... * @p
311d0 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
311e0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f 77 this._low
311f0 47 61 69 6e 20 3d 20 6e 65 77 20 54 6f 6e 65 2e Gain = new Tone.
31200 47 61 69 6e 28 6f 70 74 69 6f 6e 73 2e 6c 6f 77 Gain(options.low
31210 2c 20 54 6f 6e 65 2e 54 79 70 65 2e 44 65 63 69 , Tone.Type.Deci
31220 62 65 6c 73 29 3b 0a 09 20 20 20 20 20 20 20 20 bels);..
31230 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 67 /**.... * The g
31240 61 69 6e 20 66 6f 72 20 74 68 65 20 6d 69 64 20 ain for the mid
31250 73 69 67 6e 61 6c 73 0a 09 09 09 20 2a 20 20 40 signals.... * @
31260 74 79 70 65 20 20 7b 54 6f 6e 65 2e 47 61 69 6e type {Tone.Gain
31270 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
31280 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
31290 20 20 74 68 69 73 2e 5f 6d 69 64 47 61 69 6e 20 this._midGain
312a0 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 = new Tone.Gain(
312b0 6f 70 74 69 6f 6e 73 2e 6d 69 64 2c 20 54 6f 6e options.mid, Ton
312c0 65 2e 54 79 70 65 2e 44 65 63 69 62 65 6c 73 29 e.Type.Decibels)
312d0 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
312e0 09 09 20 2a 20 54 68 65 20 67 61 69 6e 20 69 6e .. * The gain in
312f0 20 64 65 63 69 62 65 6c 73 20 6f 66 20 74 68 65 decibels of the
31300 20 68 69 67 68 20 70 61 72 74 0a 09 09 09 20 2a high part.... *
31310 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 47 61 69 @type {Tone.Gai
31320 6e 7d 0a 09 09 09 20 2a 20 40 70 72 69 76 61 74 n}.... * @privat
31330 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
31340 20 20 74 68 69 73 2e 5f 68 69 67 68 47 61 69 6e this._highGain
31350 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e = new Tone.Gain
31360 28 6f 70 74 69 6f 6e 73 2e 68 69 67 68 2c 20 54 (options.high, T
31370 6f 6e 65 2e 54 79 70 65 2e 44 65 63 69 62 65 6c one.Type.Decibel
31380 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a s);.. /**
31390 0a 09 09 09 20 2a 20 54 68 65 20 67 61 69 6e 20 .... * The gain
313a0 69 6e 20 64 65 63 69 62 65 6c 73 20 6f 66 20 74 in decibels of t
313b0 68 65 20 6c 6f 77 20 70 61 72 74 0a 09 09 09 20 he low part....
313c0 2a 20 40 74 79 70 65 20 7b 44 65 63 69 62 65 6c * @type {Decibel
313d0 73 7d 0a 09 09 09 20 2a 20 40 73 69 67 6e 61 6c s}.... * @signal
313e0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
313f0 20 74 68 69 73 2e 6c 6f 77 20 3d 20 74 68 69 73 this.low = this
31400 2e 5f 6c 6f 77 47 61 69 6e 2e 67 61 69 6e 3b 0a ._lowGain.gain;.
31410 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
31420 20 2a 20 54 68 65 20 67 61 69 6e 20 69 6e 20 64 * The gain in d
31430 65 63 69 62 65 6c 73 20 6f 66 20 74 68 65 20 6d ecibels of the m
31440 69 64 20 70 61 72 74 0a 09 09 09 20 2a 20 40 74 id part.... * @t
31450 79 70 65 20 7b 44 65 63 69 62 65 6c 73 7d 0a 09 ype {Decibels}..
31460 09 09 20 2a 20 40 73 69 67 6e 61 6c 0a 09 09 09 .. * @signal....
31470 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
31480 73 2e 6d 69 64 20 3d 20 74 68 69 73 2e 5f 6d 69 s.mid = this._mi
31490 64 47 61 69 6e 2e 67 61 69 6e 3b 0a 09 20 20 20 dGain.gain;..
314a0 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 54 /**.... * T
314b0 68 65 20 67 61 69 6e 20 69 6e 20 64 65 63 69 62 he gain in decib
314c0 65 6c 73 20 6f 66 20 74 68 65 20 68 69 67 68 20 els of the high
314d0 70 61 72 74 0a 09 09 09 20 2a 20 40 74 79 70 65 part.... * @type
314e0 20 7b 44 65 63 69 62 65 6c 73 7d 0a 09 09 09 20 {Decibels}....
314f0 2a 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f * @signal.... */
31500 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 68 .. this.h
31510 69 67 68 20 3d 20 74 68 69 73 2e 5f 68 69 67 68 igh = this._high
31520 47 61 69 6e 2e 67 61 69 6e 3b 0a 09 20 20 20 20 Gain.gain;..
31530 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
31540 68 65 20 51 20 76 61 6c 75 65 20 66 6f 72 20 61 he Q value for a
31550 6c 6c 20 6f 66 20 74 68 65 20 66 69 6c 74 65 72 ll of the filter
31560 73 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 s. .... * @type
31570 20 7b 50 6f 73 69 74 69 76 65 7d 0a 09 09 09 20 {Positive}....
31580 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a * @signal.... *
31590 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
315a0 51 20 3d 20 74 68 69 73 2e 5f 6d 75 6c 74 69 62 Q = this._multib
315b0 61 6e 64 53 70 6c 69 74 2e 51 3b 0a 09 20 20 20 andSplit.Q;..
315c0 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
315d0 54 68 65 20 6c 6f 77 2f 6d 69 64 20 63 72 6f 73 The low/mid cros
315e0 73 6f 76 65 72 20 66 72 65 71 75 65 6e 63 79 2e sover frequency.
315f0 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b .... * @type {
31600 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 09 20 2a Frequency}.... *
31610 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f @signal.... */
31620 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c .. this.l
31630 6f 77 46 72 65 71 75 65 6e 63 79 20 3d 20 74 68 owFrequency = th
31640 69 73 2e 5f 6d 75 6c 74 69 62 61 6e 64 53 70 6c is._multibandSpl
31650 69 74 2e 6c 6f 77 46 72 65 71 75 65 6e 63 79 3b it.lowFrequency;
31660 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
31670 09 20 2a 20 20 54 68 65 20 6d 69 64 2f 68 69 67 . * The mid/hig
31680 68 20 63 72 6f 73 73 6f 76 65 72 20 66 72 65 71 h crossover freq
31690 75 65 6e 63 79 2e 20 0a 09 09 09 20 2a 20 20 40 uency. .... * @
316a0 74 79 70 65 20 7b 46 72 65 71 75 65 6e 63 79 7d type {Frequency}
316b0 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a .... * @signal.
316c0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
316d0 74 68 69 73 2e 68 69 67 68 46 72 65 71 75 65 6e this.highFrequen
316e0 63 79 20 3d 20 74 68 69 73 2e 5f 6d 75 6c 74 69 cy = this._multi
316f0 62 61 6e 64 53 70 6c 69 74 2e 68 69 67 68 46 72 bandSplit.highFr
31700 65 71 75 65 6e 63 79 3b 0a 09 20 20 20 20 20 20 equency;..
31710 20 20 2f 2f 74 68 65 20 66 72 65 71 75 65 6e 63 //the frequenc
31720 79 20 62 61 6e 64 73 0a 09 20 20 20 20 20 20 20 y bands..
31730 20 74 68 69 73 2e 5f 6d 75 6c 74 69 62 61 6e 64 this._multiband
31740 53 70 6c 69 74 2e 6c 6f 77 2e 63 68 61 69 6e 28 Split.low.chain(
31750 74 68 69 73 2e 5f 6c 6f 77 47 61 69 6e 2c 20 74 this._lowGain, t
31760 68 69 73 2e 6f 75 74 70 75 74 29 3b 0a 09 20 20 his.output);..
31770 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 75 6c 74 this._mult
31780 69 62 61 6e 64 53 70 6c 69 74 2e 6d 69 64 2e 63 ibandSplit.mid.c
31790 68 61 69 6e 28 74 68 69 73 2e 5f 6d 69 64 47 61 hain(this._midGa
317a0 69 6e 2c 20 74 68 69 73 2e 6f 75 74 70 75 74 29 in, this.output)
317b0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
317c0 5f 6d 75 6c 74 69 62 61 6e 64 53 70 6c 69 74 2e _multibandSplit.
317d0 68 69 67 68 2e 63 68 61 69 6e 28 74 68 69 73 2e high.chain(this.
317e0 5f 68 69 67 68 47 61 69 6e 2c 20 74 68 69 73 2e _highGain, this.
317f0 6f 75 74 70 75 74 29 3b 0a 09 20 20 20 20 20 20 output);..
31800 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 this._readOnly
31810 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ([..
31820 27 6c 6f 77 27 2c 0a 09 20 20 20 20 20 20 20 20 'low',..
31830 20 20 20 20 27 6d 69 64 27 2c 0a 09 20 20 20 20 'mid',..
31840 20 20 20 20 20 20 20 20 27 68 69 67 68 27 2c 0a 'high',.
31850 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6c 6f . 'lo
31860 77 46 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 wFrequency',..
31870 20 20 20 20 20 20 20 20 20 20 27 68 69 67 68 46 'highF
31880 72 65 71 75 65 6e 63 79 27 0a 09 20 20 20 20 20 requency'..
31890 20 20 20 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 ]);.. };..
318a0 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 Tone.extend(
318b0 54 6f 6e 65 2e 45 51 33 29 3b 0a 09 20 20 20 20 Tone.EQ3);..
318c0 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 65 20 64 65 /**... * the de
318d0 66 61 75 6c 74 20 76 61 6c 75 65 73 0a 09 09 20 fault values...
318e0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 51 33 */.. Tone.EQ3
318f0 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 .defaults = {..
31900 20 20 20 20 20 20 20 27 6c 6f 77 27 3a 20 30 2c 'low': 0,
31910 0a 09 20 20 20 20 20 20 20 20 27 6d 69 64 27 3a .. 'mid':
31920 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 68 69 0,.. 'hi
31930 67 68 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 gh': 0,..
31940 20 27 6c 6f 77 46 72 65 71 75 65 6e 63 79 27 3a 'lowFrequency':
31950 20 34 30 30 2c 0a 09 20 20 20 20 20 20 20 20 27 400,.. '
31960 68 69 67 68 46 72 65 71 75 65 6e 63 79 27 3a 20 highFrequency':
31970 32 35 30 30 0a 09 20 20 20 20 7d 3b 0a 09 20 20 2500.. };..
31980 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 63 6c 65 61 /**... * clea
31990 6e 20 75 70 0a 09 09 20 2a 20 20 40 72 65 74 75 n up... * @retu
319a0 72 6e 73 20 7b 54 6f 6e 65 2e 45 51 33 7d 20 74 rns {Tone.EQ3} t
319b0 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
319c0 6f 6e 65 2e 45 51 33 2e 70 72 6f 74 6f 74 79 70 one.EQ3.prototyp
319d0 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 e.dispose = func
319e0 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
319f0 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 Tone.prototyp
31a00 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 e.dispose.call(t
31a10 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 his);.. t
31a20 68 69 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b 0a his._writable([.
31a30 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6c 6f . 'lo
31a40 77 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 w',..
31a50 20 27 6d 69 64 27 2c 0a 09 20 20 20 20 20 20 20 'mid',..
31a60 20 20 20 20 20 27 68 69 67 68 27 2c 0a 09 20 20 'high',..
31a70 20 20 20 20 20 20 20 20 20 20 27 6c 6f 77 46 72 'lowFr
31a80 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 equency',..
31a90 20 20 20 20 20 20 20 27 68 69 67 68 46 72 65 71 'highFreq
31aa0 75 65 6e 63 79 27 0a 09 20 20 20 20 20 20 20 20 uency'..
31ab0 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ]);.. thi
31ac0 73 2e 5f 6d 75 6c 74 69 62 61 6e 64 53 70 6c 69 s._multibandSpli
31ad0 74 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 t.dispose();..
31ae0 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 75 6c 74 this._mult
31af0 69 62 61 6e 64 53 70 6c 69 74 20 3d 20 6e 75 6c ibandSplit = nul
31b00 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
31b10 2e 6c 6f 77 46 72 65 71 75 65 6e 63 79 20 3d 20 .lowFrequency =
31b20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 null;.. t
31b30 68 69 73 2e 68 69 67 68 46 72 65 71 75 65 6e 63 his.highFrequenc
31b40 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 y = null;..
31b50 20 20 20 74 68 69 73 2e 5f 6c 6f 77 47 61 69 6e this._lowGain
31b60 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
31b70 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f 77 47 61 this._lowGa
31b80 69 6e 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 in = null;..
31b90 20 20 20 20 74 68 69 73 2e 5f 6d 69 64 47 61 69 this._midGai
31ba0 6e 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 n.dispose();..
31bb0 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 69 64 47 this._midG
31bc0 61 69 6e 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ain = null;..
31bd0 20 20 20 20 20 74 68 69 73 2e 5f 68 69 67 68 47 this._highG
31be0 61 69 6e 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 ain.dispose();..
31bf0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 68 69 this._hi
31c00 67 68 47 61 69 6e 20 3d 20 6e 75 6c 6c 3b 0a 09 ghGain = null;..
31c10 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 77 this.low
31c20 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
31c30 20 20 74 68 69 73 2e 6d 69 64 20 3d 20 6e 75 6c this.mid = nul
31c40 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
31c50 2e 68 69 67 68 20 3d 20 6e 75 6c 6c 3b 0a 09 20 .high = null;..
31c60 20 20 20 20 20 20 20 74 68 69 73 2e 51 20 3d 20 this.Q =
31c70 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 null;.. r
31c80 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 eturn this;..
31c90 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 };.. return
31ca0 54 6f 6e 65 2e 45 51 33 3b 0a 09 7d 29 3b 0a 09 Tone.EQ3;..});..
31cb0 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 Module(function
31cc0 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 (Tone) {.. ..
31cd0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 /**... * @c
31ce0 6c 61 73 73 20 20 50 65 72 66 6f 72 6d 73 20 61 lass Performs a
31cf0 20 6c 69 6e 65 61 72 20 73 63 61 6c 69 6e 67 20 linear scaling
31d00 6f 6e 20 61 6e 20 69 6e 70 75 74 20 73 69 67 6e on an input sign
31d10 61 6c 2e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 al.... *
31d20 20 20 53 63 61 6c 65 73 20 61 20 4e 6f 72 6d 61 Scales a Norma
31d30 6c 52 61 6e 67 65 20 69 6e 70 75 74 20 74 6f 20 lRange input to
31d40 62 65 74 77 65 65 6e 0a 09 09 20 2a 20 20 20 20 between... *
31d50 20 20 20 20 20 20 6f 75 74 70 75 74 4d 69 6e 20 outputMin
31d60 61 6e 64 20 6f 75 74 70 75 74 4d 61 78 2e 0a 09 and outputMax...
31d70 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 . *... * @const
31d80 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 ructor... * @ex
31d90 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 53 69 67 6e tends {Tone.Sign
31da0 61 6c 42 61 73 65 7d 0a 09 09 20 2a 20 20 40 70 alBase}... * @p
31db0 61 72 61 6d 20 7b 6e 75 6d 62 65 72 7d 20 5b 6f aram {number} [o
31dc0 75 74 70 75 74 4d 69 6e 3d 30 5d 20 54 68 65 20 utputMin=0] The
31dd0 6f 75 74 70 75 74 20 76 61 6c 75 65 20 77 68 65 output value whe
31de0 6e 20 74 68 65 20 69 6e 70 75 74 20 69 73 20 30 n the input is 0
31df0 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 . ... * @param
31e00 7b 6e 75 6d 62 65 72 7d 20 5b 6f 75 74 70 75 74 {number} [output
31e10 4d 61 78 3d 31 5d 09 54 68 65 20 6f 75 74 70 75 Max=1].The outpu
31e20 74 20 76 61 6c 75 65 20 77 68 65 6e 20 74 68 65 t value when the
31e30 20 69 6e 70 75 74 20 69 73 20 31 2e 20 0a 09 09 input is 1. ...
31e40 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 * @example...
31e50 2a 20 76 61 72 20 73 63 61 6c 65 20 3d 20 6e 65 * var scale = ne
31e60 77 20 54 6f 6e 65 2e 53 63 61 6c 65 28 35 30 2c w Tone.Scale(50,
31e70 20 31 30 30 29 3b 0a 09 09 20 2a 20 76 61 72 20 100);... * var
31e80 73 69 67 6e 61 6c 20 3d 20 6e 65 77 20 54 6f 6e signal = new Ton
31e90 65 2e 53 69 67 6e 61 6c 28 30 2e 35 29 2e 63 6f e.Signal(0.5).co
31ea0 6e 6e 65 63 74 28 73 63 61 6c 65 29 3b 0a 09 09 nnect(scale);...
31eb0 20 2a 20 2f 2f 74 68 65 20 6f 75 74 70 75 74 20 * //the output
31ec0 6f 66 20 73 63 61 6c 65 20 65 71 75 61 6c 73 20 of scale equals
31ed0 37 35 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 75... */.. To
31ee0 6e 65 2e 53 63 61 6c 65 20 3d 20 66 75 6e 63 74 ne.Scale = funct
31ef0 69 6f 6e 20 28 6f 75 74 70 75 74 4d 69 6e 2c 20 ion (outputMin,
31f00 6f 75 74 70 75 74 4d 61 78 29 20 7b 0a 09 20 20 outputMax) {..
31f10 20 20 20 20 20 20 2f 2a 2a 20 0a 09 09 09 20 2a /** .... *
31f20 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
31f30 20 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 7d @type {number}
31f40 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
31f50 20 74 68 69 73 2e 5f 6f 75 74 70 75 74 4d 69 6e this._outputMin
31f60 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 = this.defaultA
31f70 72 67 28 6f 75 74 70 75 74 4d 69 6e 2c 20 30 29 rg(outputMin, 0)
31f80 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 20 0a ;.. /** .
31f90 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
31fa0 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 6e 75 ... * @type {nu
31fb0 6d 62 65 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 mber}.... */..
31fc0 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 75 74 70 this._outp
31fd0 75 74 4d 61 78 20 3d 20 74 68 69 73 2e 64 65 66 utMax = this.def
31fe0 61 75 6c 74 41 72 67 28 6f 75 74 70 75 74 4d 61 aultArg(outputMa
31ff0 78 2c 20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 x, 1);..
32000 2f 2a 2a 20 0a 09 09 09 20 2a 20 20 40 70 72 69 /** .... * @pri
32010 76 61 74 65 0a 09 09 09 20 2a 20 20 40 74 79 70 vate.... * @typ
32020 65 20 7b 54 6f 6e 65 2e 4d 75 6c 74 69 70 6c 79 e {Tone.Multiply
32030 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
32040 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
32050 20 20 74 68 69 73 2e 5f 73 63 61 6c 65 20 3d 20 this._scale =
32060 74 68 69 73 2e 69 6e 70 75 74 20 3d 20 6e 65 77 this.input = new
32070 20 54 6f 6e 65 2e 4d 75 6c 74 69 70 6c 79 28 31 Tone.Multiply(1
32080 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 20 );.. /**
32090 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
320a0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 .... * @type {T
320b0 6f 6e 65 2e 41 64 64 7d 0a 09 09 09 20 2a 20 20 one.Add}.... *
320c0 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
320d0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 61 . this._a
320e0 64 64 20 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 dd = this.output
320f0 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 41 64 64 28 = new Tone.Add(
32100 30 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 0);.. thi
32110 73 2e 5f 73 63 61 6c 65 2e 63 6f 6e 6e 65 63 74 s._scale.connect
32120 28 74 68 69 73 2e 5f 61 64 64 29 3b 0a 09 20 20 (this._add);..
32130 20 20 20 20 20 20 74 68 69 73 2e 5f 73 65 74 52 this._setR
32140 61 6e 67 65 28 29 3b 0a 09 20 20 20 20 7d 3b 0a ange();.. };.
32150 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 . Tone.extend
32160 28 54 6f 6e 65 2e 53 63 61 6c 65 2c 20 54 6f 6e (Tone.Scale, Ton
32170 65 2e 53 69 67 6e 61 6c 42 61 73 65 29 3b 0a 09 e.SignalBase);..
32180 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 /**... * The
32190 20 6d 69 6e 69 6d 75 6d 20 6f 75 74 70 75 74 20 minimum output
321a0 76 61 6c 75 65 2e 20 54 68 69 73 20 6e 75 6d 62 value. This numb
321b0 65 72 20 69 73 20 6f 75 74 70 75 74 20 77 68 65 er is output whe
321c0 6e 20 0a 09 09 20 2a 20 74 68 65 20 76 61 6c 75 n ... * the valu
321d0 65 20 69 6e 70 75 74 20 76 61 6c 75 65 20 69 73 e input value is
321e0 20 30 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 0. ... * @membe
321f0 72 4f 66 20 54 6f 6e 65 2e 53 63 61 6c 65 23 0a rOf Tone.Scale#.
32200 09 09 20 2a 20 40 74 79 70 65 20 7b 6e 75 6d 62 .. * @type {numb
32210 65 72 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6d er}... * @name m
32220 69 6e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 in... */.. Ob
32230 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
32240 72 74 79 28 54 6f 6e 65 2e 53 63 61 6c 65 2e 70 rty(Tone.Scale.p
32250 72 6f 74 6f 74 79 70 65 2c 20 27 6d 69 6e 27 2c rototype, 'min',
32260 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
32270 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
32280 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
32290 72 6e 20 74 68 69 73 2e 5f 6f 75 74 70 75 74 4d rn this._outputM
322a0 69 6e 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a in;.. },.
322b0 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
322c0 6e 63 74 69 6f 6e 20 28 6d 69 6e 29 20 7b 0a 09 nction (min) {..
322d0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
322e0 2e 5f 6f 75 74 70 75 74 4d 69 6e 20 3d 20 6d 69 ._outputMin = mi
322f0 6e 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 n;..
32300 74 68 69 73 2e 5f 73 65 74 52 61 6e 67 65 28 29 this._setRange()
32310 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
32320 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 });.. /**..
32330 09 20 2a 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 . * The maximum
32340 6f 75 74 70 75 74 20 76 61 6c 75 65 2e 20 54 68 output value. Th
32350 69 73 20 6e 75 6d 62 65 72 20 69 73 20 6f 75 74 is number is out
32360 70 75 74 20 77 68 65 6e 20 0a 09 09 20 2a 20 74 put when ... * t
32370 68 65 20 76 61 6c 75 65 20 69 6e 70 75 74 20 76 he value input v
32380 61 6c 75 65 20 69 73 20 31 2e 20 0a 09 09 20 2a alue is 1. ... *
32390 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e @memberOf Tone.
323a0 53 63 61 6c 65 23 0a 09 09 20 2a 20 40 74 79 70 Scale#... * @typ
323b0 65 20 7b 6e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 e {number}... *
323c0 40 6e 61 6d 65 20 6d 61 78 0a 09 09 20 2a 2f 0a @name max... */.
323d0 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 . Object.defi
323e0 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e neProperty(Tone.
323f0 53 63 61 6c 65 2e 70 72 6f 74 6f 74 79 70 65 2c Scale.prototype,
32400 20 27 6d 61 78 27 2c 20 7b 0a 09 20 20 20 20 20 'max', {..
32410 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e get: function
32420 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 () {..
32430 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
32440 6f 75 74 70 75 74 4d 61 78 3b 0a 09 20 20 20 20 outputMax;..
32450 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
32460 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6d set: function (m
32470 61 78 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ax) {..
32480 20 20 20 74 68 69 73 2e 5f 6f 75 74 70 75 74 4d this._outputM
32490 61 78 20 3d 20 6d 61 78 3b 0a 09 20 20 20 20 20 ax = max;..
324a0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 65 74 this._set
324b0 52 61 6e 67 65 28 29 3b 0a 09 20 20 20 20 20 20 Range();..
324c0 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 }.. });..
324d0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 73 65 74 20 /**... * set
324e0 74 68 65 20 76 61 6c 75 65 73 0a 09 09 20 2a 20 the values... *
324f0 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a @private... */.
32500 09 20 20 20 20 54 6f 6e 65 2e 53 63 61 6c 65 2e . Tone.Scale.
32510 70 72 6f 74 6f 74 79 70 65 2e 5f 73 65 74 52 61 prototype._setRa
32520 6e 67 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 nge = function (
32530 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ) {.. thi
32540 73 2e 5f 61 64 64 2e 76 61 6c 75 65 20 3d 20 74 s._add.value = t
32550 68 69 73 2e 5f 6f 75 74 70 75 74 4d 69 6e 3b 0a his._outputMin;.
32560 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 . this._s
32570 63 61 6c 65 2e 76 61 6c 75 65 20 3d 20 74 68 69 cale.value = thi
32580 73 2e 5f 6f 75 74 70 75 74 4d 61 78 20 2d 20 74 s._outputMax - t
32590 68 69 73 2e 5f 6f 75 74 70 75 74 4d 69 6e 3b 0a his._outputMin;.
325a0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
325b0 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e ... * Clean up.
325c0 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
325d0 7b 54 6f 6e 65 2e 53 63 61 6c 65 7d 20 74 68 69 {Tone.Scale} thi
325e0 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
325f0 65 2e 53 63 61 6c 65 2e 70 72 6f 74 6f 74 79 70 e.Scale.prototyp
32600 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 e.dispose = func
32610 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
32620 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 Tone.prototyp
32630 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 e.dispose.call(t
32640 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 his);.. t
32650 68 69 73 2e 5f 61 64 64 2e 64 69 73 70 6f 73 65 his._add.dispose
32660 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
32670 73 2e 5f 61 64 64 20 3d 20 6e 75 6c 6c 3b 0a 09 s._add = null;..
32680 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 63 this._sc
32690 61 6c 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 ale.dispose();..
326a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 63 this._sc
326b0 61 6c 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ale = null;..
326c0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
326d0 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 ;.. };.. r
326e0 65 74 75 72 6e 20 54 6f 6e 65 2e 53 63 61 6c 65 eturn Tone.Scale
326f0 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 ;..});..Module(f
32700 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b unction (Tone) {
32710 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
32720 40 63 6c 61 73 73 20 20 50 65 72 66 6f 72 6d 73 @class Performs
32730 20 61 6e 20 65 78 70 6f 6e 65 6e 74 69 61 6c 20 an exponential
32740 73 63 61 6c 69 6e 67 20 6f 6e 20 61 6e 20 69 6e scaling on an in
32750 70 75 74 20 73 69 67 6e 61 6c 2e 0a 09 09 20 2a put signal.... *
32760 20 20 20 20 20 20 20 20 20 20 53 63 61 6c 65 73 Scales
32770 20 61 20 4e 6f 72 6d 61 6c 52 61 6e 67 65 20 76 a NormalRange v
32780 61 6c 75 65 20 5b 30 2c 31 5d 20 65 78 70 6f 6e alue [0,1] expon
32790 65 6e 74 69 61 6c 6c 79 0a 09 09 20 2a 20 20 20 entially... *
327a0 20 20 20 20 20 20 20 74 6f 20 74 68 65 20 6f 75 to the ou
327b0 74 70 75 74 20 72 61 6e 67 65 20 6f 66 20 6f 75 tput range of ou
327c0 74 70 75 74 4d 69 6e 20 74 6f 20 6f 75 74 70 75 tputMin to outpu
327d0 74 4d 61 78 2e 0a 09 09 20 2a 0a 09 09 20 2a 20 tMax.... *... *
327e0 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 @constructor...
327f0 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f * @extends {To
32800 6e 65 2e 53 69 67 6e 61 6c 42 61 73 65 7d 0a 09 ne.SignalBase}..
32810 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e 75 6d . * @param {num
32820 62 65 72 7d 20 5b 6f 75 74 70 75 74 4d 69 6e 3d ber} [outputMin=
32830 30 5d 20 54 68 65 20 6f 75 74 70 75 74 20 76 61 0] The output va
32840 6c 75 65 20 77 68 65 6e 20 74 68 65 20 69 6e 70 lue when the inp
32850 75 74 20 69 73 20 30 2e 20 0a 09 09 20 2a 20 20 ut is 0. ... *
32860 40 70 61 72 61 6d 20 7b 6e 75 6d 62 65 72 7d 20 @param {number}
32870 5b 6f 75 74 70 75 74 4d 61 78 3d 31 5d 09 54 68 [outputMax=1].Th
32880 65 20 6f 75 74 70 75 74 20 76 61 6c 75 65 20 77 e output value w
32890 68 65 6e 20 74 68 65 20 69 6e 70 75 74 20 69 73 hen the input is
328a0 20 31 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 1. ... * @para
328b0 6d 20 7b 6e 75 6d 62 65 72 7d 20 5b 65 78 70 6f m {number} [expo
328c0 6e 65 6e 74 3d 32 5d 20 54 68 65 20 65 78 70 6f nent=2] The expo
328d0 6e 65 6e 74 20 77 68 69 63 68 20 73 63 61 6c 65 nent which scale
328e0 73 20 74 68 65 20 69 6e 63 6f 6d 69 6e 67 20 73 s the incoming s
328f0 69 67 6e 61 6c 2e 0a 09 09 20 2a 20 20 40 65 78 ignal.... * @ex
32900 61 6d 70 6c 65 0a 09 09 20 2a 20 76 61 72 20 73 ample... * var s
32910 63 61 6c 65 45 78 70 20 3d 20 6e 65 77 20 54 6f caleExp = new To
32920 6e 65 2e 53 63 61 6c 65 45 78 70 28 30 2c 20 31 ne.ScaleExp(0, 1
32930 30 30 2c 20 32 29 3b 0a 09 09 20 2a 20 76 61 72 00, 2);... * var
32940 20 73 69 67 6e 61 6c 20 3d 20 6e 65 77 20 54 6f signal = new To
32950 6e 65 2e 53 69 67 6e 61 6c 28 30 2e 35 29 2e 63 ne.Signal(0.5).c
32960 6f 6e 6e 65 63 74 28 73 63 61 6c 65 45 78 70 29 onnect(scaleExp)
32970 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e ;... */.. Ton
32980 65 2e 53 63 61 6c 65 45 78 70 20 3d 20 66 75 6e e.ScaleExp = fun
32990 63 74 69 6f 6e 20 28 6f 75 74 70 75 74 4d 69 6e ction (outputMin
329a0 2c 20 6f 75 74 70 75 74 4d 61 78 2c 20 65 78 70 , outputMax, exp
329b0 6f 6e 65 6e 74 29 20 7b 0a 09 20 20 20 20 20 20 onent) {..
329c0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 73 63 61 /**.... * sca
329d0 6c 65 20 74 68 65 20 69 6e 70 75 74 20 74 6f 20 le the input to
329e0 74 68 65 20 6f 75 74 70 75 74 20 72 61 6e 67 65 the output range
329f0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 .... * @type {T
32a00 6f 6e 65 2e 53 63 61 6c 65 7d 0a 09 09 09 20 2a one.Scale}.... *
32a10 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
32a20 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
32a30 5f 73 63 61 6c 65 20 3d 20 74 68 69 73 2e 6f 75 _scale = this.ou
32a40 74 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e tput = new Tone.
32a50 53 63 61 6c 65 28 6f 75 74 70 75 74 4d 69 6e 2c Scale(outputMin,
32a60 20 6f 75 74 70 75 74 4d 61 78 29 3b 0a 09 20 20 outputMax);..
32a70 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
32a80 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 20 @private.... *
32a90 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 50 6f 77 @type {Tone.Pow
32aa0 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
32ab0 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
32ac0 20 20 74 68 69 73 2e 5f 65 78 70 20 3d 20 74 68 this._exp = th
32ad0 69 73 2e 69 6e 70 75 74 20 3d 20 6e 65 77 20 54 is.input = new T
32ae0 6f 6e 65 2e 50 6f 77 28 74 68 69 73 2e 64 65 66 one.Pow(this.def
32af0 61 75 6c 74 41 72 67 28 65 78 70 6f 6e 65 6e 74 aultArg(exponent
32b00 2c 20 32 29 29 3b 0a 09 20 20 20 20 20 20 20 20 , 2));..
32b10 74 68 69 73 2e 5f 65 78 70 2e 63 6f 6e 6e 65 63 this._exp.connec
32b20 74 28 74 68 69 73 2e 5f 73 63 61 6c 65 29 3b 0a t(this._scale);.
32b30 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e . };.. Ton
32b40 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 53 63 e.extend(Tone.Sc
32b50 61 6c 65 45 78 70 2c 20 54 6f 6e 65 2e 53 69 67 aleExp, Tone.Sig
32b60 6e 61 6c 42 61 73 65 29 3b 0a 09 20 20 20 20 2f nalBase);.. /
32b70 2a 2a 0a 09 09 20 2a 20 49 6e 73 74 65 61 64 20 **... * Instead
32b80 6f 66 20 69 6e 74 65 72 70 6f 6c 61 74 69 6e 67 of interpolating
32b90 20 6c 69 6e 65 61 72 6c 79 20 62 65 74 77 65 65 linearly betwee
32ba0 6e 20 74 68 65 20 3c 63 6f 64 65 3e 6d 69 6e 3c n the <code>min<
32bb0 2f 63 6f 64 65 3e 20 61 6e 64 20 0a 09 09 20 2a /code> and ... *
32bc0 20 3c 63 6f 64 65 3e 6d 61 78 3c 2f 63 6f 64 65 <code>max</code
32bd0 3e 20 76 61 6c 75 65 73 2c 20 73 65 74 74 69 6e > values, settin
32be0 67 20 74 68 65 20 65 78 70 6f 6e 65 6e 74 20 77 g the exponent w
32bf0 69 6c 6c 20 69 6e 74 65 72 70 6f 6c 61 74 65 20 ill interpolate
32c00 62 65 74 77 65 65 6e 0a 09 09 20 2a 20 74 68 65 between... * the
32c10 20 74 77 6f 20 76 61 6c 75 65 73 20 77 69 74 68 two values with
32c20 20 61 6e 20 65 78 70 6f 6e 65 6e 74 69 61 6c 20 an exponential
32c30 63 75 72 76 65 2e 20 0a 09 09 20 2a 20 40 6d 65 curve. ... * @me
32c40 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 53 63 61 6c mberOf Tone.Scal
32c50 65 45 78 70 23 0a 09 09 20 2a 20 40 74 79 70 65 eExp#... * @type
32c60 20 7b 6e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 40 {number}... * @
32c70 6e 61 6d 65 20 65 78 70 6f 6e 65 6e 74 0a 09 09 name exponent...
32c80 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
32c90 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
32ca0 6f 6e 65 2e 53 63 61 6c 65 45 78 70 2e 70 72 6f one.ScaleExp.pro
32cb0 74 6f 74 79 70 65 2c 20 27 65 78 70 6f 6e 65 6e totype, 'exponen
32cc0 74 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 t', {.. g
32cd0 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
32ce0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
32cf0 65 74 75 72 6e 20 74 68 69 73 2e 5f 65 78 70 2e eturn this._exp.
32d00 76 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 20 20 value;..
32d10 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a },.. set:
32d20 20 66 75 6e 63 74 69 6f 6e 20 28 65 78 70 29 20 function (exp)
32d30 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
32d40 68 69 73 2e 5f 65 78 70 2e 76 61 6c 75 65 20 3d his._exp.value =
32d50 20 65 78 70 3b 0a 09 20 20 20 20 20 20 20 20 7d exp;.. }
32d60 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f .. });.. /
32d70 2a 2a 0a 09 09 20 2a 20 54 68 65 20 6d 69 6e 69 **... * The mini
32d80 6d 75 6d 20 6f 75 74 70 75 74 20 76 61 6c 75 65 mum output value
32d90 2e 20 54 68 69 73 20 6e 75 6d 62 65 72 20 69 73 . This number is
32da0 20 6f 75 74 70 75 74 20 77 68 65 6e 20 0a 09 09 output when ...
32db0 20 2a 20 74 68 65 20 76 61 6c 75 65 20 69 6e 70 * the value inp
32dc0 75 74 20 76 61 6c 75 65 20 69 73 20 30 2e 20 0a ut value is 0. .
32dd0 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 .. * @memberOf T
32de0 6f 6e 65 2e 53 63 61 6c 65 45 78 70 23 0a 09 09 one.ScaleExp#...
32df0 20 2a 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 * @type {number
32e00 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6d 69 6e }... * @name min
32e10 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 ... */.. Obje
32e20 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
32e30 79 28 54 6f 6e 65 2e 53 63 61 6c 65 45 78 70 2e y(Tone.ScaleExp.
32e40 70 72 6f 74 6f 74 79 70 65 2c 20 27 6d 69 6e 27 prototype, 'min'
32e50 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
32e60 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
32e70 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
32e80 75 72 6e 20 74 68 69 73 2e 5f 73 63 61 6c 65 2e urn this._scale.
32e90 6d 69 6e 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c min;.. },
32ea0 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 .. set: f
32eb0 75 6e 63 74 69 6f 6e 20 28 6d 69 6e 29 20 7b 0a unction (min) {.
32ec0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
32ed0 73 2e 5f 73 63 61 6c 65 2e 6d 69 6e 20 3d 20 6d s._scale.min = m
32ee0 69 6e 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 in;.. }..
32ef0 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
32f00 0a 09 09 20 2a 20 54 68 65 20 6d 61 78 69 6d 75 ... * The maximu
32f10 6d 20 6f 75 74 70 75 74 20 76 61 6c 75 65 2e 20 m output value.
32f20 54 68 69 73 20 6e 75 6d 62 65 72 20 69 73 20 6f This number is o
32f30 75 74 70 75 74 20 77 68 65 6e 20 0a 09 09 20 2a utput when ... *
32f40 20 74 68 65 20 76 61 6c 75 65 20 69 6e 70 75 74 the value input
32f50 20 76 61 6c 75 65 20 69 73 20 31 2e 20 0a 09 09 value is 1. ...
32f60 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
32f70 65 2e 53 63 61 6c 65 45 78 70 23 0a 09 09 20 2a e.ScaleExp#... *
32f80 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 7d 0a @type {number}.
32f90 09 09 20 2a 20 40 6e 61 6d 65 20 6d 61 78 0a 09 .. * @name max..
32fa0 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
32fb0 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
32fc0 54 6f 6e 65 2e 53 63 61 6c 65 45 78 70 2e 70 72 Tone.ScaleExp.pr
32fd0 6f 74 6f 74 79 70 65 2c 20 27 6d 61 78 27 2c 20 ototype, 'max',
32fe0 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 {.. get:
32ff0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
33000 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
33010 6e 20 74 68 69 73 2e 5f 73 63 61 6c 65 2e 6d 61 n this._scale.ma
33020 78 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 x;.. },..
33030 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e set: fun
33040 63 74 69 6f 6e 20 28 6d 61 78 29 20 7b 0a 09 20 ction (max) {..
33050 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
33060 5f 73 63 61 6c 65 2e 6d 61 78 20 3d 20 6d 61 78 _scale.max = max
33070 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
33080 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 });.. /**..
33090 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a 09 . * Clean up...
330a0 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 . * @returns {T
330b0 6f 6e 65 2e 53 63 61 6c 65 45 78 70 7d 20 74 68 one.ScaleExp} th
330c0 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
330d0 6e 65 2e 53 63 61 6c 65 45 78 70 2e 70 72 6f 74 ne.ScaleExp.prot
330e0 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 otype.dispose =
330f0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
33100 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 Tone.prot
33110 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 otype.dispose.ca
33120 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 ll(this);..
33130 20 20 20 74 68 69 73 2e 5f 73 63 61 6c 65 2e 64 this._scale.d
33140 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
33150 20 20 20 74 68 69 73 2e 5f 73 63 61 6c 65 20 3d this._scale =
33160 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
33170 74 68 69 73 2e 5f 65 78 70 2e 64 69 73 70 6f 73 this._exp.dispos
33180 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
33190 69 73 2e 5f 65 78 70 20 3d 20 6e 75 6c 6c 3b 0a is._exp = null;.
331a0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
331b0 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
331c0 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 53 return Tone.S
331d0 63 61 6c 65 45 78 70 3b 0a 09 7d 29 3b 0a 09 4d caleExp;..});..M
331e0 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 odule(function (
331f0 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 Tone) {.. ..
33200 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c /**... * @cl
33210 61 73 73 20 57 72 61 70 70 65 72 20 61 72 6f 75 ass Wrapper arou
33220 6e 64 20 57 65 62 20 41 75 64 69 6f 27 73 20 6e nd Web Audio's n
33230 61 74 69 76 65 20 5b 44 65 6c 61 79 4e 6f 64 65 ative [DelayNode
33240 5d 28 68 74 74 70 3a 2f 2f 77 65 62 61 75 64 69 ](http://webaudi
33250 6f 2e 67 69 74 68 75 62 2e 69 6f 2f 77 65 62 2d o.github.io/web-
33260 61 75 64 69 6f 2d 61 70 69 2f 23 74 68 65 2d 64 audio-api/#the-d
33270 65 6c 61 79 6e 6f 64 65 2d 69 6e 74 65 72 66 61 elaynode-interfa
33280 63 65 29 2e 20 0a 09 09 20 2a 20 20 40 65 78 74 ce). ... * @ext
33290 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 20 2a ends {Tone}... *
332a0 20 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 3d 7d @param {Time=}
332b0 20 64 65 6c 61 79 54 69 6d 65 20 54 68 65 20 64 delayTime The d
332c0 65 6c 61 79 20 61 70 70 6c 69 65 64 20 74 6f 20 elay applied to
332d0 74 68 65 20 69 6e 63 6f 6d 69 6e 67 20 73 69 67 the incoming sig
332e0 6e 61 6c 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 nal.... * @para
332f0 6d 20 7b 54 69 6d 65 3d 7d 20 6d 61 78 44 65 6c m {Time=} maxDel
33300 61 79 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 64 ay The maximum d
33310 65 6c 61 79 20 74 69 6d 65 2e 20 0a 09 09 20 2a elay time. ... *
33320 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 44 65 6c 61 /.. Tone.Dela
33330 79 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 y = function ()
33340 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 6f {.. var o
33350 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 ptions = this.op
33360 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 tionsObject(argu
33370 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 20 ments, [..
33380 20 20 20 20 20 20 27 64 65 6c 61 79 54 69 6d 65 'delayTime
33390 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
333a0 27 6d 61 78 44 65 6c 61 79 27 0a 09 20 20 20 20 'maxDelay'..
333b0 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 44 65 6c 61 ], Tone.Dela
333c0 79 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 y.defaults);..
333d0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
333e0 20 54 68 65 20 6e 61 74 69 76 65 20 64 65 6c 61 The native dela
333f0 79 20 6e 6f 64 65 0a 09 09 09 20 2a 20 20 40 74 y node.... * @t
33400 79 70 65 20 7b 44 65 6c 61 79 4e 6f 64 65 7d 0a ype {DelayNode}.
33410 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
33420 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
33430 74 68 69 73 2e 5f 64 65 6c 61 79 4e 6f 64 65 20 this._delayNode
33440 3d 20 74 68 69 73 2e 69 6e 70 75 74 20 3d 20 74 = this.input = t
33450 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 74 68 69 his.output = thi
33460 73 2e 63 6f 6e 74 65 78 74 2e 63 72 65 61 74 65 s.context.create
33470 44 65 6c 61 79 28 74 68 69 73 2e 74 6f 53 65 63 Delay(this.toSec
33480 6f 6e 64 73 28 6f 70 74 69 6f 6e 73 2e 6d 61 78 onds(options.max
33490 44 65 6c 61 79 29 29 3b 0a 09 20 20 20 20 20 20 Delay));..
334a0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
334b0 20 61 6d 6f 75 6e 74 20 6f 66 20 74 69 6d 65 20 amount of time
334c0 74 68 65 20 69 6e 63 6f 6d 69 6e 67 20 73 69 67 the incoming sig
334d0 6e 61 6c 20 69 73 0a 09 09 09 20 2a 20 20 64 65 nal is.... * de
334e0 6c 61 79 65 64 2e 20 0a 09 09 09 20 2a 20 20 40 layed. .... * @
334f0 74 79 70 65 20 7b 54 6f 6e 65 2e 50 61 72 61 6d type {Tone.Param
33500 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c }.... * @signal
33510 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
33520 20 74 68 69 73 2e 64 65 6c 61 79 54 69 6d 65 20 this.delayTime
33530 3d 20 6e 65 77 20 54 6f 6e 65 2e 50 61 72 61 6d = new Tone.Param
33540 28 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ({..
33550 27 70 61 72 61 6d 27 3a 20 74 68 69 73 2e 5f 64 'param': this._d
33560 65 6c 61 79 4e 6f 64 65 2e 64 65 6c 61 79 54 69 elayNode.delayTi
33570 6d 65 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 me,..
33580 20 27 75 6e 69 74 73 27 3a 20 54 6f 6e 65 2e 54 'units': Tone.T
33590 79 70 65 2e 54 69 6d 65 2c 0a 09 20 20 20 20 20 ype.Time,..
335a0 20 20 20 20 20 20 20 27 76 61 6c 75 65 27 3a 20 'value':
335b0 6f 70 74 69 6f 6e 73 2e 64 65 6c 61 79 54 69 6d options.delayTim
335c0 65 0a 09 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 e.. });..
335d0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 this._re
335e0 61 64 4f 6e 6c 79 28 27 64 65 6c 61 79 54 69 6d adOnly('delayTim
335f0 65 27 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 e');.. };..
33600 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
33610 6e 65 2e 44 65 6c 61 79 29 3b 0a 09 20 20 20 20 ne.Delay);..
33620 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 64 65 /**... * The de
33630 66 61 75 6c 74 73 0a 09 09 20 2a 20 20 40 63 6f faults... * @co
33640 6e 73 74 0a 09 09 20 2a 20 20 40 74 79 70 65 20 nst... * @type
33650 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a {Object}... */.
33660 09 20 20 20 20 54 6f 6e 65 2e 44 65 6c 61 79 2e . Tone.Delay.
33670 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 defaults = {..
33680 20 20 20 20 20 20 27 6d 61 78 44 65 6c 61 79 27 'maxDelay'
33690 3a 20 31 2c 0a 09 20 20 20 20 20 20 20 20 27 64 : 1,.. 'd
336a0 65 6c 61 79 54 69 6d 65 27 3a 20 30 0a 09 20 20 elayTime': 0..
336b0 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
336c0 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a 09 09 * Clean up....
336d0 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 6f * @return {To
336e0 6e 65 2e 44 65 6c 61 79 7d 20 20 74 68 69 73 0a ne.Delay} this.
336f0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
33700 44 65 6c 61 79 2e 70 72 6f 74 6f 74 79 70 65 2e Delay.prototype.
33710 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 dispose = functi
33720 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
33730 20 54 6f 6e 65 2e 50 61 72 61 6d 2e 70 72 6f 74 Tone.Param.prot
33740 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 otype.dispose.ca
33750 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 ll(this);..
33760 20 20 20 74 68 69 73 2e 5f 64 65 6c 61 79 4e 6f this._delayNo
33770 64 65 2e 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b de.disconnect();
33780 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
33790 64 65 6c 61 79 4e 6f 64 65 20 3d 20 6e 75 6c 6c delayNode = null
337a0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
337b0 5f 77 72 69 74 61 62 6c 65 28 27 64 65 6c 61 79 _writable('delay
337c0 54 69 6d 65 27 29 3b 0a 09 20 20 20 20 20 20 20 Time');..
337d0 20 74 68 69 73 2e 64 65 6c 61 79 54 69 6d 65 20 this.delayTime
337e0 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
337f0 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
33800 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
33810 6e 20 54 6f 6e 65 2e 44 65 6c 61 79 3b 0a 09 7d n Tone.Delay;..}
33820 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
33830 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
33840 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a .. /**... *
33850 20 20 40 63 6c 61 73 73 20 43 6f 6d 62 20 66 69 @class Comb fi
33860 6c 74 65 72 73 20 61 72 65 20 62 61 73 69 63 20 lters are basic
33870 62 75 69 6c 64 69 6e 67 20 62 6c 6f 63 6b 73 20 building blocks
33880 66 6f 72 20 70 68 79 73 69 63 61 6c 20 6d 6f 64 for physical mod
33890 65 6c 69 6e 67 2e 20 52 65 61 64 20 6d 6f 72 65 eling. Read more
338a0 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 61 62 ... * ab
338b0 6f 75 74 20 63 6f 6d 62 20 66 69 6c 74 65 72 73 out comb filters
338c0 20 6f 6e 20 5b 43 43 52 4d 41 27 73 20 77 65 62 on [CCRMA's web
338d0 73 69 74 65 5d 28 68 74 74 70 73 3a 2f 2f 63 63 site](https://cc
338e0 72 6d 61 2e 73 74 61 6e 66 6f 72 64 2e 65 64 75 rma.stanford.edu
338f0 2f 7e 6a 6f 73 2f 70 61 73 70 2f 46 65 65 64 62 /~jos/pasp/Feedb
33900 61 63 6b 5f 43 6f 6d 62 5f 46 69 6c 74 65 72 73 ack_Comb_Filters
33910 2e 68 74 6d 6c 29 2e 0a 09 09 20 2a 0a 09 09 20 .html).... *...
33920 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e * @extends {Ton
33930 65 7d 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 e}... * @constr
33940 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 uctor... * @par
33950 61 6d 20 7b 54 69 6d 65 7c 4f 62 6a 65 63 74 7d am {Time|Object}
33960 20 5b 64 65 6c 61 79 54 69 6d 65 5d 20 54 68 65 [delayTime] The
33970 20 64 65 6c 61 79 20 74 69 6d 65 20 6f 66 20 74 delay time of t
33980 68 65 20 66 69 6c 74 65 72 2e 20 0a 09 09 20 2a he filter. ... *
33990 20 20 40 70 61 72 61 6d 20 7b 4e 6f 72 6d 61 6c @param {Normal
339a0 52 61 6e 67 65 3d 7d 20 72 65 73 6f 6e 61 6e 63 Range=} resonanc
339b0 65 20 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 e The amount of
339c0 66 65 65 64 62 61 63 6b 20 74 68 65 20 66 69 6c feedback the fil
339d0 74 65 72 20 68 61 73 2e 20 0a 09 09 20 2a 2f 0a ter has. ... */.
339e0 09 20 20 20 20 54 6f 6e 65 2e 46 65 65 64 62 61 . Tone.Feedba
339f0 63 6b 43 6f 6d 62 46 69 6c 74 65 72 20 3d 20 66 ckCombFilter = f
33a00 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
33a10 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e var option
33a20 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 s = this.options
33a30 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 Object(arguments
33a40 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 , [..
33a50 20 27 64 65 6c 61 79 54 69 6d 65 27 2c 0a 09 20 'delayTime',..
33a60 20 20 20 20 20 20 20 20 20 20 20 27 72 65 73 6f 'reso
33a70 6e 61 6e 63 65 27 0a 09 20 20 20 20 20 20 20 20 nance'..
33a80 5d 2c 20 54 6f 6e 65 2e 46 65 65 64 62 61 63 6b ], Tone.Feedback
33a90 43 6f 6d 62 46 69 6c 74 65 72 2e 64 65 66 61 75 CombFilter.defau
33aa0 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f lts);.. /
33ab0 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 64 65 **.... * the de
33ac0 6c 61 79 20 6e 6f 64 65 0a 09 09 09 20 2a 20 20 lay node.... *
33ad0 40 74 79 70 65 20 7b 44 65 6c 61 79 4e 6f 64 65 @type {DelayNode
33ae0 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
33af0 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
33b00 20 20 74 68 69 73 2e 5f 64 65 6c 61 79 20 3d 20 this._delay =
33b10 74 68 69 73 2e 69 6e 70 75 74 20 3d 20 74 68 69 this.input = thi
33b20 73 2e 6f 75 74 70 75 74 20 3d 20 6e 65 77 20 54 s.output = new T
33b30 6f 6e 65 2e 44 65 6c 61 79 28 6f 70 74 69 6f 6e one.Delay(option
33b40 73 2e 64 65 6c 61 79 54 69 6d 65 29 3b 0a 09 20 s.delayTime);..
33b50 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
33b60 20 20 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 The amount of
33b70 64 65 6c 61 79 20 6f 66 20 74 68 65 20 63 6f 6d delay of the com
33b80 62 20 66 69 6c 74 65 72 2e 20 0a 09 09 09 20 2a b filter. .... *
33b90 20 20 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a 09 @type {Time}..
33ba0 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 .. * @signal...
33bb0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
33bc0 69 73 2e 64 65 6c 61 79 54 69 6d 65 20 3d 20 74 is.delayTime = t
33bd0 68 69 73 2e 5f 64 65 6c 61 79 2e 64 65 6c 61 79 his._delay.delay
33be0 54 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 2f Time;.. /
33bf0 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 66 65 **.... * the fe
33c00 65 64 62 61 63 6b 20 6e 6f 64 65 0a 09 09 09 20 edback node....
33c10 2a 20 20 40 74 79 70 65 20 7b 47 61 69 6e 4e 6f * @type {GainNo
33c20 64 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 de}.... * @priv
33c30 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
33c40 20 20 20 20 74 68 69 73 2e 5f 66 65 65 64 62 61 this._feedba
33c50 63 6b 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 ck = new Tone.Ga
33c60 69 6e 28 6f 70 74 69 6f 6e 73 2e 72 65 73 6f 6e in(options.reson
33c70 61 6e 63 65 2c 20 54 6f 6e 65 2e 54 79 70 65 2e ance, Tone.Type.
33c80 4e 6f 72 6d 61 6c 52 61 6e 67 65 29 3b 0a 09 20 NormalRange);..
33c90 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
33ca0 20 20 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 The amount of
33cb0 66 65 65 64 62 61 63 6b 20 6f 66 20 74 68 65 20 feedback of the
33cc0 64 65 6c 61 79 65 64 20 73 69 67 6e 61 6c 2e 20 delayed signal.
33cd0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e .... * @type {N
33ce0 6f 72 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 09 20 ormalRange}....
33cf0 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a * @signal.... *
33d00 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
33d10 72 65 73 6f 6e 61 6e 63 65 20 3d 20 74 68 69 73 resonance = this
33d20 2e 5f 66 65 65 64 62 61 63 6b 2e 67 61 69 6e 3b ._feedback.gain;
33d30 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
33d40 64 65 6c 61 79 2e 63 68 61 69 6e 28 74 68 69 73 delay.chain(this
33d50 2e 5f 66 65 65 64 62 61 63 6b 2c 20 74 68 69 73 ._feedback, this
33d60 2e 5f 64 65 6c 61 79 29 3b 0a 09 20 20 20 20 20 ._delay);..
33d70 20 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c this._readOnl
33d80 79 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 y([..
33d90 20 27 72 65 73 6f 6e 61 6e 63 65 27 2c 0a 09 20 'resonance',..
33da0 20 20 20 20 20 20 20 20 20 20 20 27 64 65 6c 61 'dela
33db0 79 54 69 6d 65 27 0a 09 20 20 20 20 20 20 20 20 yTime'..
33dc0 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 ]);.. };..
33dd0 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e Tone.extend(Ton
33de0 65 2e 46 65 65 64 62 61 63 6b 43 6f 6d 62 46 69 e.FeedbackCombFi
33df0 6c 74 65 72 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a lter);.. /**.
33e00 09 09 20 2a 20 20 74 68 65 20 64 65 66 61 75 6c .. * the defaul
33e10 74 20 70 61 72 61 6d 65 74 65 72 73 0a 09 09 20 t parameters...
33e20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 * @static... *
33e30 20 40 63 6f 6e 73 74 0a 09 09 20 2a 20 20 40 74 @const... * @t
33e40 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 ype {Object}...
33e50 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 65 65 */.. Tone.Fee
33e60 64 62 61 63 6b 43 6f 6d 62 46 69 6c 74 65 72 2e dbackCombFilter.
33e70 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 defaults = {..
33e80 20 20 20 20 20 20 27 64 65 6c 61 79 54 69 6d 65 'delayTime
33e90 27 3a 20 30 2e 31 2c 0a 09 20 20 20 20 20 20 20 ': 0.1,..
33ea0 20 27 72 65 73 6f 6e 61 6e 63 65 27 3a 20 30 2e 'resonance': 0.
33eb0 35 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 5.. };.. /
33ec0 2a 2a 0a 09 09 20 2a 20 20 63 6c 65 61 6e 20 75 **... * clean u
33ed0 70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 p... * @returns
33ee0 20 7b 54 6f 6e 65 2e 46 65 65 64 62 61 63 6b 43 {Tone.FeedbackC
33ef0 6f 6d 62 46 69 6c 74 65 72 7d 20 74 68 69 73 0a ombFilter} this.
33f00 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
33f10 46 65 65 64 62 61 63 6b 43 6f 6d 62 46 69 6c 74 FeedbackCombFilt
33f20 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 er.prototype.dis
33f30 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 pose = function
33f40 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f () {.. To
33f50 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 ne.prototype.dis
33f60 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b pose.call(this);
33f70 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
33f80 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 20 writable([..
33f90 20 20 20 20 20 20 20 20 27 72 65 73 6f 6e 61 6e 'resonan
33fa0 63 65 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 ce',..
33fb0 20 20 27 64 65 6c 61 79 54 69 6d 65 27 0a 09 20 'delayTime'..
33fc0 20 20 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 ]);..
33fd0 20 20 20 20 74 68 69 73 2e 5f 64 65 6c 61 79 2e this._delay.
33fe0 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
33ff0 20 20 20 20 74 68 69 73 2e 5f 64 65 6c 61 79 20 this._delay
34000 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
34010 20 74 68 69 73 2e 64 65 6c 61 79 54 69 6d 65 20 this.delayTime
34020 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
34030 20 74 68 69 73 2e 5f 66 65 65 64 62 61 63 6b 2e this._feedback.
34040 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
34050 20 20 20 20 74 68 69 73 2e 5f 66 65 65 64 62 61 this._feedba
34060 63 6b 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 ck = null;..
34070 20 20 20 20 74 68 69 73 2e 72 65 73 6f 6e 61 6e this.resonan
34080 63 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 ce = null;..
34090 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
340a0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 .. };.. re
340b0 74 75 72 6e 20 54 6f 6e 65 2e 46 65 65 64 62 61 turn Tone.Feedba
340c0 63 6b 43 6f 6d 62 46 69 6c 74 65 72 3b 0a 09 7d ckCombFilter;..}
340d0 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
340e0 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
340f0 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a .. /**... *
34100 20 20 40 63 6c 61 73 73 20 20 54 6f 6e 65 2e 46 @class Tone.F
34110 6f 6c 6c 6f 77 65 72 20 69 73 20 61 20 20 63 72 ollower is a cr
34120 75 64 65 20 65 6e 76 65 6c 6f 70 65 20 66 6f 6c ude envelope fol
34130 6c 6f 77 65 72 20 77 68 69 63 68 20 77 69 6c 6c lower which will
34140 20 66 6f 6c 6c 6f 77 20 0a 09 09 20 2a 20 20 20 follow ... *
34150 20 20 20 20 20 20 20 74 68 65 20 61 6d 70 6c 69 the ampli
34160 74 75 64 65 20 6f 66 20 61 6e 20 69 6e 63 6f 6d tude of an incom
34170 69 6e 67 20 73 69 67 6e 61 6c 2e 20 0a 09 09 20 ing signal. ...
34180 2a 20 20 20 20 20 20 20 20 20 20 54 61 6b 65 20 * Take
34190 63 61 72 65 20 77 69 74 68 20 73 6d 61 6c 6c 20 care with small
341a0 28 3c 20 30 2e 30 32 29 20 61 74 74 61 63 6b 20 (< 0.02) attack
341b0 6f 72 20 64 65 63 61 79 20 76 61 6c 75 65 73 20 or decay values
341c0 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 61 ... * a
341d0 73 20 66 6f 6c 6c 6f 77 65 72 20 68 61 73 20 73 s follower has s
341e0 6f 6d 65 20 72 69 70 70 6c 65 20 77 68 69 63 68 ome ripple which
341f0 20 69 73 20 65 78 61 67 67 65 72 61 74 65 64 0a is exaggerated.
34200 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 61 74 .. * at
34210 20 74 68 65 73 65 20 76 61 6c 75 65 73 2e 20 52 these values. R
34220 65 61 64 20 6d 6f 72 65 20 61 62 6f 75 74 20 65 ead more about e
34230 6e 76 65 6c 6f 70 65 20 66 6f 6c 6c 6f 77 65 72 nvelope follower
34240 73 20 28 61 6c 73 6f 20 6b 6e 6f 77 6e 20 0a 09 s (also known ..
34250 09 20 2a 20 20 20 20 20 20 20 20 20 20 61 73 20 . * as
34260 65 6e 76 65 6c 6f 70 65 20 64 65 74 65 63 74 6f envelope detecto
34270 72 73 29 20 6f 6e 20 5b 57 69 6b 69 70 65 64 69 rs) on [Wikipedi
34280 61 5d 28 68 74 74 70 73 3a 2f 2f 65 6e 2e 77 69 a](https://en.wi
34290 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 kipedia.org/wiki
342a0 2f 45 6e 76 65 6c 6f 70 65 5f 64 65 74 65 63 74 /Envelope_detect
342b0 6f 72 29 2e 0a 09 09 20 2a 20 20 0a 09 09 20 2a or).... * ... *
342c0 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 @constructor..
342d0 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 . * @extends {T
342e0 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 one}... * @para
342f0 6d 20 7b 54 69 6d 65 7c 4f 62 6a 65 63 74 7d 20 m {Time|Object}
34300 5b 61 74 74 61 63 6b 5d 20 54 68 65 20 72 61 74 [attack] The rat
34310 65 20 61 74 20 77 68 69 63 68 20 74 68 65 20 66 e at which the f
34320 6f 6c 6c 6f 77 65 72 20 72 69 73 65 73 2e 0a 09 ollower rises...
34330 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 6d . * @param {Tim
34340 65 3d 7d 20 72 65 6c 65 61 73 65 20 54 68 65 20 e=} release The
34350 72 61 74 65 20 61 74 20 77 68 69 63 68 20 74 68 rate at which th
34360 65 20 66 6f 6c 6f 77 65 72 20 66 61 6c 6c 73 2e e folower falls.
34370 20 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 ... * @example
34380 0a 09 09 20 2a 20 76 61 72 20 66 6f 6c 6c 6f 77 ... * var follow
34390 65 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 46 6f er = new Tone.Fo
343a0 6c 6c 6f 77 65 72 28 30 2e 32 2c 20 30 2e 34 29 llower(0.2, 0.4)
343b0 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e ;... */.. Ton
343c0 65 2e 46 6f 6c 6c 6f 77 65 72 20 3d 20 66 75 6e e.Follower = fun
343d0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
343e0 20 20 20 20 74 68 69 73 2e 63 72 65 61 74 65 49 this.createI
343f0 6e 73 4f 75 74 73 28 31 2c 20 31 29 3b 0a 09 20 nsOuts(1, 1);..
34400 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f var optio
34410 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e ns = this.option
34420 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 sObject(argument
34430 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 s, [..
34440 20 20 27 61 74 74 61 63 6b 27 2c 0a 09 20 20 20 'attack',..
34450 20 20 20 20 20 20 20 20 20 27 72 65 6c 65 61 73 'releas
34460 65 27 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 54 e'.. ], T
34470 6f 6e 65 2e 46 6f 6c 6c 6f 77 65 72 2e 64 65 66 one.Follower.def
34480 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 aults);..
34490 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 40 74 79 70 /**.... * @typ
344a0 65 20 7b 54 6f 6e 65 2e 41 62 73 7d 0a 09 09 09 e {Tone.Abs}....
344b0 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
344c0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
344d0 73 2e 5f 61 62 73 20 3d 20 6e 65 77 20 54 6f 6e s._abs = new Ton
344e0 65 2e 41 62 73 28 29 3b 0a 09 20 20 20 20 20 20 e.Abs();..
344f0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 /**.... * the
34500 20 6c 6f 77 70 61 73 73 20 66 69 6c 74 65 72 20 lowpass filter
34510 77 68 69 63 68 20 73 6d 6f 6f 74 68 73 20 74 68 which smooths th
34520 65 20 69 6e 70 75 74 0a 09 09 09 20 2a 20 20 40 e input.... * @
34530 74 79 70 65 20 7b 42 69 71 75 61 64 46 69 6c 74 type {BiquadFilt
34540 65 72 4e 6f 64 65 7d 0a 09 09 09 20 2a 20 20 40 erNode}.... * @
34550 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
34560 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 69 this._fi
34570 6c 74 65 72 20 3d 20 74 68 69 73 2e 63 6f 6e 74 lter = this.cont
34580 65 78 74 2e 63 72 65 61 74 65 42 69 71 75 61 64 ext.createBiquad
34590 46 69 6c 74 65 72 28 29 3b 0a 09 20 20 20 20 20 Filter();..
345a0 20 20 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 2e this._filter.
345b0 74 79 70 65 20 3d 20 27 6c 6f 77 70 61 73 73 27 type = 'lowpass'
345c0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
345d0 5f 66 69 6c 74 65 72 2e 66 72 65 71 75 65 6e 63 _filter.frequenc
345e0 79 2e 76 61 6c 75 65 20 3d 20 30 3b 0a 09 20 20 y.value = 0;..
345f0 20 20 20 20 20 20 74 68 69 73 2e 5f 66 69 6c 74 this._filt
34600 65 72 2e 51 2e 76 61 6c 75 65 20 3d 20 2d 31 30 er.Q.value = -10
34610 30 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 0;.. /**.
34620 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 57 61 ... * @type {Wa
34630 76 65 53 68 61 70 65 72 4e 6f 64 65 7d 0a 09 09 veShaperNode}...
34640 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
34650 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
34660 69 73 2e 5f 66 72 65 71 75 65 6e 63 79 56 61 6c is._frequencyVal
34670 75 65 73 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 57 ues = new Tone.W
34680 61 76 65 53 68 61 70 65 72 28 29 3b 0a 09 20 20 aveShaper();..
34690 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
346a0 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 53 75 62 @type {Tone.Sub
346b0 74 72 61 63 74 7d 0a 09 09 09 20 2a 20 20 40 70 tract}.... * @p
346c0 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
346d0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 75 62 this._sub
346e0 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 75 62 74 = new Tone.Subt
346f0 72 61 63 74 28 29 3b 0a 09 20 20 20 20 20 20 20 ract();..
34700 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 40 74 79 70 /**.... * @typ
34710 65 20 7b 54 6f 6e 65 2e 44 65 6c 61 79 7d 0a 09 e {Tone.Delay}..
34720 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
34730 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
34740 68 69 73 2e 5f 64 65 6c 61 79 20 3d 20 6e 65 77 his._delay = new
34750 20 54 6f 6e 65 2e 44 65 6c 61 79 28 74 68 69 73 Tone.Delay(this
34760 2e 62 6c 6f 63 6b 54 69 6d 65 29 3b 0a 09 20 20 .blockTime);..
34770 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
34780 20 74 68 69 73 20 6b 65 65 70 73 20 69 74 20 66 this keeps it f
34790 61 72 20 66 72 6f 6d 20 30 2c 20 65 76 65 6e 20 ar from 0, even
347a0 66 6f 72 20 76 65 72 79 20 73 6d 61 6c 6c 20 64 for very small d
347b0 69 66 66 65 72 65 6e 63 65 73 0a 09 09 09 20 2a ifferences.... *
347c0 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4d 75 @type {Tone.Mu
347d0 6c 74 69 70 6c 79 7d 0a 09 09 09 20 2a 20 20 40 ltiply}.... * @
347e0 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
347f0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 75 this._mu
34800 6c 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 75 lt = new Tone.Mu
34810 6c 74 69 70 6c 79 28 31 30 30 30 30 29 3b 0a 09 ltiply(10000);..
34820 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
34830 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
34840 2a 20 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 * @type {number
34850 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 }.... */..
34860 20 20 74 68 69 73 2e 5f 61 74 74 61 63 6b 20 3d this._attack =
34870 20 6f 70 74 69 6f 6e 73 2e 61 74 74 61 63 6b 3b options.attack;
34880 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
34890 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
348a0 09 20 2a 20 20 40 74 79 70 65 20 7b 6e 75 6d 62 . * @type {numb
348b0 65 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 er}.... */..
348c0 20 20 20 20 74 68 69 73 2e 5f 72 65 6c 65 61 73 this._releas
348d0 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 72 65 6c 65 e = options.rele
348e0 61 73 65 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f ase;.. //
348f0 74 68 65 20 73 6d 6f 6f 74 68 65 64 20 73 69 67 the smoothed sig
34900 6e 61 6c 20 74 6f 20 67 65 74 20 74 68 65 20 76 nal to get the v
34910 61 6c 75 65 73 0a 09 20 20 20 20 20 20 20 20 74 alues.. t
34920 68 69 73 2e 69 6e 70 75 74 2e 63 68 61 69 6e 28 his.input.chain(
34930 74 68 69 73 2e 5f 61 62 73 2c 20 74 68 69 73 2e this._abs, this.
34940 5f 66 69 6c 74 65 72 2c 20 74 68 69 73 2e 6f 75 _filter, this.ou
34950 74 70 75 74 29 3b 0a 09 20 20 20 20 20 20 20 20 tput);..
34960 2f 2f 74 68 65 20 64 69 66 66 65 72 65 6e 63 65 //the difference
34970 20 70 61 74 68 0a 09 20 20 20 20 20 20 20 20 74 path.. t
34980 68 69 73 2e 5f 61 62 73 2e 63 6f 6e 6e 65 63 74 his._abs.connect
34990 28 74 68 69 73 2e 5f 73 75 62 2c 20 30 2c 20 31 (this._sub, 0, 1
349a0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
349b0 2e 5f 66 69 6c 74 65 72 2e 63 68 61 69 6e 28 74 ._filter.chain(t
349c0 68 69 73 2e 5f 64 65 6c 61 79 2c 20 74 68 69 73 his._delay, this
349d0 2e 5f 73 75 62 29 3b 0a 09 20 20 20 20 20 20 20 ._sub);..
349e0 20 2f 2f 74 68 72 65 73 68 6f 6c 64 20 74 68 65 //threshold the
349f0 20 64 69 66 66 65 72 65 6e 63 65 20 61 6e 64 20 difference and
34a00 75 73 65 20 74 68 65 20 74 68 72 65 73 68 20 74 use the thresh t
34a10 6f 20 73 65 74 20 74 68 65 20 66 72 65 71 75 65 o set the freque
34a20 6e 63 79 0a 09 20 20 20 20 20 20 20 20 74 68 69 ncy.. thi
34a30 73 2e 5f 73 75 62 2e 63 68 61 69 6e 28 74 68 69 s._sub.chain(thi
34a40 73 2e 5f 6d 75 6c 74 2c 20 74 68 69 73 2e 5f 66 s._mult, this._f
34a50 72 65 71 75 65 6e 63 79 56 61 6c 75 65 73 2c 20 requencyValues,
34a60 74 68 69 73 2e 5f 66 69 6c 74 65 72 2e 66 72 65 this._filter.fre
34a70 71 75 65 6e 63 79 29 3b 0a 09 20 20 20 20 20 20 quency);..
34a80 20 20 2f 2f 73 65 74 20 74 68 65 20 61 74 74 61 //set the atta
34a90 63 6b 20 61 6e 64 20 72 65 6c 65 61 73 65 20 76 ck and release v
34aa0 61 6c 75 65 73 20 69 6e 20 74 68 65 20 74 61 62 alues in the tab
34ab0 6c 65 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 le.. this
34ac0 2e 5f 73 65 74 41 74 74 61 63 6b 52 65 6c 65 61 ._setAttackRelea
34ad0 73 65 28 74 68 69 73 2e 5f 61 74 74 61 63 6b 2c se(this._attack,
34ae0 20 74 68 69 73 2e 5f 72 65 6c 65 61 73 65 29 3b this._release);
34af0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f .. };.. To
34b00 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 46 ne.extend(Tone.F
34b10 6f 6c 6c 6f 77 65 72 29 3b 0a 09 20 20 20 20 2f ollower);.. /
34b20 2a 2a 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 **... * @static
34b30 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 ... * @type {Ob
34b40 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 ject}... */..
34b50 20 54 6f 6e 65 2e 46 6f 6c 6c 6f 77 65 72 2e 64 Tone.Follower.d
34b60 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 efaults = {..
34b70 20 20 20 20 20 27 61 74 74 61 63 6b 27 3a 20 30 'attack': 0
34b80 2e 30 35 2c 0a 09 20 20 20 20 20 20 20 20 27 72 .05,.. 'r
34b90 65 6c 65 61 73 65 27 3a 20 30 2e 35 0a 09 20 20 elease': 0.5..
34ba0 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
34bb0 20 2a 20 20 73 65 74 73 20 74 68 65 20 61 74 74 * sets the att
34bc0 61 63 6b 20 61 6e 64 20 72 65 6c 65 61 73 65 20 ack and release
34bd0 74 69 6d 65 73 20 69 6e 20 74 68 65 20 77 61 76 times in the wav
34be0 65 20 73 68 61 70 65 72 0a 09 09 20 2a 20 20 40 e shaper... * @
34bf0 70 61 72 61 6d 20 20 20 7b 54 69 6d 65 7d 20 61 param {Time} a
34c00 74 74 61 63 6b 20 20 0a 09 09 20 2a 20 20 40 70 ttack ... * @p
34c10 61 72 61 6d 20 20 20 7b 54 69 6d 65 7d 20 72 65 aram {Time} re
34c20 6c 65 61 73 65 20 0a 09 09 20 2a 20 20 40 70 72 lease ... * @pr
34c30 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 ivate... */..
34c40 20 54 6f 6e 65 2e 46 6f 6c 6c 6f 77 65 72 2e 70 Tone.Follower.p
34c50 72 6f 74 6f 74 79 70 65 2e 5f 73 65 74 41 74 74 rototype._setAtt
34c60 61 63 6b 52 65 6c 65 61 73 65 20 3d 20 66 75 6e ackRelease = fun
34c70 63 74 69 6f 6e 20 28 61 74 74 61 63 6b 2c 20 72 ction (attack, r
34c80 65 6c 65 61 73 65 29 20 7b 0a 09 20 20 20 20 20 elease) {..
34c90 20 20 20 76 61 72 20 6d 69 6e 54 69 6d 65 20 3d var minTime =
34ca0 20 74 68 69 73 2e 62 6c 6f 63 6b 54 69 6d 65 3b this.blockTime;
34cb0 0a 09 20 20 20 20 20 20 20 20 61 74 74 61 63 6b .. attack
34cc0 20 3d 20 54 6f 6e 65 2e 54 69 6d 65 28 61 74 74 = Tone.Time(att
34cd0 61 63 6b 29 2e 74 6f 46 72 65 71 75 65 6e 63 79 ack).toFrequency
34ce0 28 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 6c ();.. rel
34cf0 65 61 73 65 20 3d 20 54 6f 6e 65 2e 54 69 6d 65 ease = Tone.Time
34d00 28 72 65 6c 65 61 73 65 29 2e 74 6f 46 72 65 71 (release).toFreq
34d10 75 65 6e 63 79 28 29 3b 0a 09 20 20 20 20 20 20 uency();..
34d20 20 20 61 74 74 61 63 6b 20 3d 20 4d 61 74 68 2e attack = Math.
34d30 6d 61 78 28 61 74 74 61 63 6b 2c 20 6d 69 6e 54 max(attack, minT
34d40 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 72 ime);.. r
34d50 65 6c 65 61 73 65 20 3d 20 4d 61 74 68 2e 6d 61 elease = Math.ma
34d60 78 28 72 65 6c 65 61 73 65 2c 20 6d 69 6e 54 69 x(release, minTi
34d70 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 me);.. th
34d80 69 73 2e 5f 66 72 65 71 75 65 6e 63 79 56 61 6c is._frequencyVal
34d90 75 65 73 2e 73 65 74 4d 61 70 28 66 75 6e 63 74 ues.setMap(funct
34da0 69 6f 6e 20 28 76 61 6c 29 20 7b 0a 09 20 20 20 ion (val) {..
34db0 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c if (val
34dc0 20 3c 3d 20 30 29 20 7b 0a 09 20 20 20 20 20 20 <= 0) {..
34dd0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
34de0 20 61 74 74 61 63 6b 3b 0a 09 20 20 20 20 20 20 attack;..
34df0 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 } else {..
34e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
34e10 72 65 74 75 72 6e 20 72 65 6c 65 61 73 65 3b 0a return release;.
34e20 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
34e30 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 });..
34e40 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
34e50 2a 20 54 68 65 20 61 74 74 61 63 6b 20 74 69 6d * The attack tim
34e60 65 2e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f e.... * @memberO
34e70 66 20 54 6f 6e 65 2e 46 6f 6c 6c 6f 77 65 72 23 f Tone.Follower#
34e80 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 54 69 6d ... * @type {Tim
34e90 65 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 61 74 e}... * @name at
34ea0 74 61 63 6b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 tack... */..
34eb0 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
34ec0 70 65 72 74 79 28 54 6f 6e 65 2e 46 6f 6c 6c 6f perty(Tone.Follo
34ed0 77 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 wer.prototype, '
34ee0 61 74 74 61 63 6b 27 2c 20 7b 0a 09 20 20 20 20 attack', {..
34ef0 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
34f00 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
34f10 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
34f20 5f 61 74 74 61 63 6b 3b 0a 09 20 20 20 20 20 20 _attack;..
34f30 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
34f40 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 61 74 74 t: function (att
34f50 61 63 6b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ack) {..
34f60 20 20 20 20 74 68 69 73 2e 5f 61 74 74 61 63 6b this._attack
34f70 20 3d 20 61 74 74 61 63 6b 3b 0a 09 20 20 20 20 = attack;..
34f80 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 65 this._se
34f90 74 41 74 74 61 63 6b 52 65 6c 65 61 73 65 28 74 tAttackRelease(t
34fa0 68 69 73 2e 5f 61 74 74 61 63 6b 2c 20 74 68 69 his._attack, thi
34fb0 73 2e 5f 72 65 6c 65 61 73 65 29 3b 0a 09 20 20 s._release);..
34fc0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b }.. });
34fd0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 .. /**... * T
34fe0 68 65 20 72 65 6c 65 61 73 65 20 74 69 6d 65 2e he release time.
34ff0 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 ... * @memberOf
35000 54 6f 6e 65 2e 46 6f 6c 6c 6f 77 65 72 23 0a 09 Tone.Follower#..
35010 09 20 2a 20 40 74 79 70 65 20 7b 54 69 6d 65 7d . * @type {Time}
35020 0a 09 09 20 2a 20 40 6e 61 6d 65 20 72 65 6c 65 ... * @name rele
35030 61 73 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f ase... */.. O
35040 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 bject.defineProp
35050 65 72 74 79 28 54 6f 6e 65 2e 46 6f 6c 6c 6f 77 erty(Tone.Follow
35060 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 72 er.prototype, 'r
35070 65 6c 65 61 73 65 27 2c 20 7b 0a 09 20 20 20 20 elease', {..
35080 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
35090 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
350a0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
350b0 5f 72 65 6c 65 61 73 65 3b 0a 09 20 20 20 20 20 _release;..
350c0 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 },.. s
350d0 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 72 65 et: function (re
350e0 6c 65 61 73 65 29 20 7b 0a 09 20 20 20 20 20 20 lease) {..
350f0 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 6c 65 this._rele
35100 61 73 65 20 3d 20 72 65 6c 65 61 73 65 3b 0a 09 ase = release;..
35110 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
35120 2e 5f 73 65 74 41 74 74 61 63 6b 52 65 6c 65 61 ._setAttackRelea
35130 73 65 28 74 68 69 73 2e 5f 61 74 74 61 63 6b 2c se(this._attack,
35140 20 74 68 69 73 2e 5f 72 65 6c 65 61 73 65 29 3b this._release);
35150 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
35160 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
35170 20 2a 20 20 42 6f 72 72 6f 77 73 20 74 68 65 20 * Borrows the
35180 63 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20 66 connect method f
35190 72 6f 6d 20 53 69 67 6e 61 6c 20 73 6f 20 74 68 rom Signal so th
351a0 61 74 20 74 68 65 20 6f 75 74 70 75 74 20 63 61 at the output ca
351b0 6e 20 62 65 20 75 73 65 64 0a 09 09 20 2a 20 20 n be used... *
351c0 61 73 20 61 20 54 6f 6e 65 2e 53 69 67 6e 61 6c as a Tone.Signal
351d0 20 63 6f 6e 74 72 6f 6c 20 73 69 67 6e 61 6c 2e control signal.
351e0 0a 09 09 20 2a 20 20 40 66 75 6e 63 74 69 6f 6e ... * @function
351f0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
35200 2e 46 6f 6c 6c 6f 77 65 72 2e 70 72 6f 74 6f 74 .Follower.protot
35210 79 70 65 2e 63 6f 6e 6e 65 63 74 20 3d 20 54 6f ype.connect = To
35220 6e 65 2e 53 69 67 6e 61 6c 2e 70 72 6f 74 6f 74 ne.Signal.protot
35230 79 70 65 2e 63 6f 6e 6e 65 63 74 3b 0a 09 20 20 ype.connect;..
35240 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 64 69 73 70 /**... * disp
35250 6f 73 65 0a 09 09 20 2a 20 20 40 72 65 74 75 72 ose... * @retur
35260 6e 73 20 7b 54 6f 6e 65 2e 46 6f 6c 6c 6f 77 65 ns {Tone.Followe
35270 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 r} this... */..
35280 20 20 20 54 6f 6e 65 2e 46 6f 6c 6c 6f 77 65 72 Tone.Follower
35290 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
352a0 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 se = function ()
352b0 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 {.. Tone
352c0 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
352d0 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 se.call(this);..
352e0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 69 this._fi
352f0 6c 74 65 72 2e 64 69 73 63 6f 6e 6e 65 63 74 28 lter.disconnect(
35300 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
35310 2e 5f 66 69 6c 74 65 72 20 3d 20 6e 75 6c 6c 3b ._filter = null;
35320 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
35330 66 72 65 71 75 65 6e 63 79 56 61 6c 75 65 73 2e frequencyValues.
35340 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 20 disconnect();..
35350 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 72 65 this._fre
35360 71 75 65 6e 63 79 56 61 6c 75 65 73 20 3d 20 6e quencyValues = n
35370 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
35380 69 73 2e 5f 64 65 6c 61 79 2e 64 69 73 70 6f 73 is._delay.dispos
35390 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
353a0 69 73 2e 5f 64 65 6c 61 79 20 3d 20 6e 75 6c 6c is._delay = null
353b0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
353c0 5f 73 75 62 2e 64 69 73 63 6f 6e 6e 65 63 74 28 _sub.disconnect(
353d0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
353e0 2e 5f 73 75 62 20 3d 20 6e 75 6c 6c 3b 0a 09 20 ._sub = null;..
353f0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 61 62 73 this._abs
35400 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
35410 20 20 20 20 20 74 68 69 73 2e 5f 61 62 73 20 3d this._abs =
35420 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
35430 74 68 69 73 2e 5f 6d 75 6c 74 2e 64 69 73 70 6f this._mult.dispo
35440 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
35450 68 69 73 2e 5f 6d 75 6c 74 20 3d 20 6e 75 6c 6c his._mult = null
35460 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
35470 5f 63 75 72 76 65 20 3d 20 6e 75 6c 6c 3b 0a 09 _curve = null;..
35480 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
35490 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
354a0 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 46 6f return Tone.Fo
354b0 6c 6c 6f 77 65 72 3b 0a 09 7d 29 3b 0a 09 4d 6f llower;..});..Mo
354c0 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 dule(function (T
354d0 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 one) {.. ..
354e0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 /**... * @cla
354f0 73 73 20 54 6f 6e 65 2e 53 63 61 6c 65 64 45 6e ss Tone.ScaledEn
35500 76 65 6c 6f 70 20 69 73 20 61 6e 20 65 6e 76 65 velop is an enve
35510 6c 6f 70 65 20 77 68 69 63 68 20 63 61 6e 20 62 lope which can b
35520 65 20 73 63 61 6c 65 64 20 0a 09 09 20 2a 20 20 e scaled ... *
35530 20 20 20 20 20 20 20 74 6f 20 61 6e 79 20 72 61 to any ra
35540 6e 67 65 2e 20 49 74 27 73 20 75 73 65 66 75 6c nge. It's useful
35550 20 66 6f 72 20 61 70 70 6c 79 69 6e 67 20 61 6e for applying an
35560 20 65 6e 76 65 6c 6f 70 65 20 0a 09 09 20 2a 20 envelope ... *
35570 20 20 20 20 20 20 20 20 74 6f 20 61 20 66 72 65 to a fre
35580 71 75 65 6e 63 79 20 6f 72 20 61 6e 79 20 6f 74 quency or any ot
35590 68 65 72 20 6e 6f 6e 2d 4e 6f 72 6d 61 6c 52 61 her non-NormalRa
355a0 6e 67 65 20 73 69 67 6e 61 6c 20 0a 09 09 20 2a nge signal ... *
355b0 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 65 74 paramet
355c0 65 72 2e 20 0a 09 09 20 2a 0a 09 09 20 2a 20 20 er. ... *... *
355d0 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 45 @extends {Tone.E
355e0 6e 76 65 6c 6f 70 65 7d 0a 09 09 20 2a 20 20 40 nvelope}... * @
355f0 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a constructor... *
35600 20 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7c 4f @param {Time|O
35610 62 6a 65 63 74 7d 20 5b 61 74 74 61 63 6b 5d 09 bject} [attack].
35620 74 68 65 20 61 74 74 61 63 6b 20 74 69 6d 65 20 the attack time
35630 69 6e 20 73 65 63 6f 6e 64 73 0a 09 09 20 2a 20 in seconds... *
35640 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 5b @param {Time} [
35650 64 65 63 61 79 5d 09 74 68 65 20 64 65 63 61 79 decay].the decay
35660 20 74 69 6d 65 20 69 6e 20 73 65 63 6f 6e 64 73 time in seconds
35670 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e ... * @param {n
35680 75 6d 62 65 72 7d 20 5b 73 75 73 74 61 69 6e 5d umber} [sustain]
35690 20 09 61 20 70 65 72 63 65 6e 74 61 67 65 20 28 .a percentage (
356a0 30 2d 31 29 20 6f 66 20 74 68 65 20 66 75 6c 6c 0-1) of the full
356b0 20 61 6d 70 6c 69 74 75 64 65 0a 09 09 20 2a 20 amplitude... *
356c0 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 5b @param {Time} [
356d0 72 65 6c 65 61 73 65 5d 09 74 68 65 20 72 65 6c release].the rel
356e0 65 61 73 65 20 74 69 6d 65 20 69 6e 20 73 65 63 ease time in sec
356f0 6f 6e 64 73 0a 09 09 20 2a 20 20 40 65 78 61 6d onds... * @exam
35700 70 6c 65 0a 09 09 20 2a 20 20 76 61 72 20 73 63 ple... * var sc
35710 61 6c 65 64 45 6e 76 20 3d 20 6e 65 77 20 54 6f aledEnv = new To
35720 6e 65 2e 53 63 61 6c 65 64 45 6e 76 65 6c 6f 70 ne.ScaledEnvelop
35730 65 28 7b 0a 09 09 20 2a 20 20 09 22 61 74 74 61 e({... * ."atta
35740 63 6b 22 20 3a 20 30 2e 32 2c 0a 09 09 20 2a 20 ck" : 0.2,... *
35750 20 09 22 6d 69 6e 22 20 3a 20 32 30 30 2c 0a 09 ."min" : 200,..
35760 09 20 2a 20 20 09 22 6d 61 78 22 20 3a 20 32 30 . * ."max" : 20
35770 30 30 0a 09 09 20 2a 20 20 7d 29 3b 0a 09 09 20 00... * });...
35780 2a 20 20 73 63 61 6c 65 64 45 6e 76 2e 63 6f 6e * scaledEnv.con
35790 6e 65 63 74 28 6f 73 63 69 6c 6c 61 74 6f 72 2e nect(oscillator.
357a0 66 72 65 71 75 65 6e 63 79 29 3b 0a 09 09 20 2a frequency);... *
357b0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 63 61 6c /.. Tone.Scal
357c0 65 64 45 6e 76 65 6c 6f 70 65 20 3d 20 66 75 6e edEnvelope = fun
357d0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
357e0 20 20 20 20 2f 2f 67 65 74 20 61 6c 6c 20 6f 66 //get all of
357f0 20 74 68 65 20 64 65 66 61 75 6c 74 73 0a 09 20 the defaults..
35800 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f var optio
35810 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e ns = this.option
35820 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 sObject(argument
35830 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 s, [..
35840 20 20 27 61 74 74 61 63 6b 27 2c 0a 09 20 20 20 'attack',..
35850 20 20 20 20 20 20 20 20 20 27 64 65 63 61 79 27 'decay'
35860 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
35870 73 75 73 74 61 69 6e 27 2c 0a 09 20 20 20 20 20 sustain',..
35880 20 20 20 20 20 20 20 27 72 65 6c 65 61 73 65 27 'release'
35890 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e .. ], Ton
358a0 65 2e 45 6e 76 65 6c 6f 70 65 2e 64 65 66 61 75 e.Envelope.defau
358b0 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 54 lts);.. T
358c0 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 2e 63 61 6c one.Envelope.cal
358d0 6c 28 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 29 l(this, options)
358e0 3b 0a 09 20 20 20 20 20 20 20 20 6f 70 74 69 6f ;.. optio
358f0 6e 73 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c ns = this.defaul
35900 74 41 72 67 28 6f 70 74 69 6f 6e 73 2c 20 54 6f tArg(options, To
35910 6e 65 2e 53 63 61 6c 65 64 45 6e 76 65 6c 6f 70 ne.ScaledEnvelop
35920 65 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 e.defaults);..
35930 20 20 20 20 20 20 2f 2a 2a 20 0a 09 09 09 20 2a /** .... *
35940 20 20 73 63 61 6c 65 20 74 68 65 20 69 6e 63 6f scale the inco
35950 6d 69 6e 67 20 73 69 67 6e 61 6c 20 62 79 20 61 ming signal by a
35960 6e 20 65 78 70 6f 6e 65 6e 74 0a 09 09 09 20 2a n exponent.... *
35970 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 50 6f @type {Tone.Po
35980 77 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 w}.... * @priva
35990 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
359a0 20 20 20 74 68 69 73 2e 5f 65 78 70 20 3d 20 74 this._exp = t
359b0 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 6e 65 77 his.output = new
359c0 20 54 6f 6e 65 2e 50 6f 77 28 6f 70 74 69 6f 6e Tone.Pow(option
359d0 73 2e 65 78 70 6f 6e 65 6e 74 29 3b 0a 09 20 20 s.exponent);..
359e0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
359f0 20 73 63 61 6c 65 20 74 68 65 20 73 69 67 6e 61 scale the signa
35a00 6c 20 74 6f 20 74 68 65 20 64 65 73 69 72 65 64 l to the desired
35a10 20 72 61 6e 67 65 0a 09 09 09 20 2a 20 20 40 74 range.... * @t
35a20 79 70 65 20 7b 54 6f 6e 65 2e 4d 75 6c 74 69 70 ype {Tone.Multip
35a30 6c 79 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 ly}.... * @priv
35a40 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
35a50 20 20 20 20 74 68 69 73 2e 5f 73 63 61 6c 65 20 this._scale
35a60 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 = this.output =
35a70 6e 65 77 20 54 6f 6e 65 2e 53 63 61 6c 65 28 6f new Tone.Scale(o
35a80 70 74 69 6f 6e 73 2e 6d 69 6e 2c 20 6f 70 74 69 ptions.min, opti
35a90 6f 6e 73 2e 6d 61 78 29 3b 0a 09 20 20 20 20 20 ons.max);..
35aa0 20 20 20 74 68 69 73 2e 5f 73 69 67 2e 63 68 61 this._sig.cha
35ab0 69 6e 28 74 68 69 73 2e 5f 65 78 70 2c 20 74 68 in(this._exp, th
35ac0 69 73 2e 5f 73 63 61 6c 65 29 3b 0a 09 20 20 20 is._scale);..
35ad0 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 };.. Tone.ex
35ae0 74 65 6e 64 28 54 6f 6e 65 2e 53 63 61 6c 65 64 tend(Tone.Scaled
35af0 45 6e 76 65 6c 6f 70 65 2c 20 54 6f 6e 65 2e 45 Envelope, Tone.E
35b00 6e 76 65 6c 6f 70 65 29 3b 0a 09 20 20 20 20 2f nvelope);.. /
35b10 2a 2a 0a 09 09 20 2a 20 20 74 68 65 20 64 65 66 **... * the def
35b20 61 75 6c 74 20 70 61 72 61 6d 65 74 65 72 73 0a ault parameters.
35b30 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 .. * @static...
35b40 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 63 */.. Tone.Sc
35b50 61 6c 65 64 45 6e 76 65 6c 6f 70 65 2e 64 65 66 aledEnvelope.def
35b60 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 aults = {..
35b70 20 20 20 27 6d 69 6e 27 3a 20 30 2c 0a 09 20 20 'min': 0,..
35b80 20 20 20 20 20 20 27 6d 61 78 27 3a 20 31 2c 0a 'max': 1,.
35b90 09 20 20 20 20 20 20 20 20 27 65 78 70 6f 6e 65 . 'expone
35ba0 6e 74 27 3a 20 31 0a 09 20 20 20 20 7d 3b 0a 09 nt': 1.. };..
35bb0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 /**... * The
35bc0 20 65 6e 76 65 6c 6f 70 65 27 73 20 6d 69 6e 20 envelope's min
35bd0 6f 75 74 70 75 74 20 76 61 6c 75 65 2e 20 54 68 output value. Th
35be0 69 73 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 is is the value
35bf0 77 68 69 63 68 20 69 74 0a 09 09 20 2a 20 73 74 which it... * st
35c00 61 72 74 73 20 61 74 2e 20 0a 09 09 20 2a 20 40 arts at. ... * @
35c10 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 53 63 memberOf Tone.Sc
35c20 61 6c 65 64 45 6e 76 65 6c 6f 70 65 23 0a 09 09 aledEnvelope#...
35c30 20 2a 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 * @type {number
35c40 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6d 69 6e }... * @name min
35c50 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 ... */.. Obje
35c60 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
35c70 79 28 54 6f 6e 65 2e 53 63 61 6c 65 64 45 6e 76 y(Tone.ScaledEnv
35c80 65 6c 6f 70 65 2e 70 72 6f 74 6f 74 79 70 65 2c elope.prototype,
35c90 20 27 6d 69 6e 27 2c 20 7b 0a 09 20 20 20 20 20 'min', {..
35ca0 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e get: function
35cb0 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 () {..
35cc0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
35cd0 73 63 61 6c 65 2e 6d 69 6e 3b 0a 09 20 20 20 20 scale.min;..
35ce0 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
35cf0 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6d set: function (m
35d00 69 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 in) {..
35d10 20 20 20 74 68 69 73 2e 5f 73 63 61 6c 65 2e 6d this._scale.m
35d20 69 6e 20 3d 20 6d 69 6e 3b 0a 09 20 20 20 20 20 in = min;..
35d30 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
35d40 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 /**... * The
35d50 65 6e 76 65 6c 6f 70 65 27 73 20 6d 61 78 20 6f envelope's max o
35d60 75 74 70 75 74 20 76 61 6c 75 65 2e 20 49 6e 20 utput value. In
35d70 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65 other words, the
35d80 20 76 61 6c 75 65 0a 09 09 20 2a 20 61 74 20 74 value... * at t
35d90 68 65 20 70 65 61 6b 20 6f 66 20 74 68 65 20 61 he peak of the a
35da0 74 74 61 63 6b 20 70 6f 72 74 69 6f 6e 20 6f 66 ttack portion of
35db0 20 74 68 65 20 65 6e 76 65 6c 6f 70 65 2e 20 0a the envelope. .
35dc0 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 .. * @memberOf T
35dd0 6f 6e 65 2e 53 63 61 6c 65 64 45 6e 76 65 6c 6f one.ScaledEnvelo
35de0 70 65 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b pe#... * @type {
35df0 6e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 40 6e 61 number}... * @na
35e00 6d 65 20 6d 61 78 0a 09 09 20 2a 2f 0a 09 20 20 me max... */..
35e10 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
35e20 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 53 63 61 roperty(Tone.Sca
35e30 6c 65 64 45 6e 76 65 6c 6f 70 65 2e 70 72 6f 74 ledEnvelope.prot
35e40 6f 74 79 70 65 2c 20 27 6d 61 78 27 2c 20 7b 0a otype, 'max', {.
35e50 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
35e60 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
35e70 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
35e80 74 68 69 73 2e 5f 73 63 61 6c 65 2e 6d 61 78 3b this._scale.max;
35e90 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
35ea0 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
35eb0 69 6f 6e 20 28 6d 61 78 29 20 7b 0a 09 20 20 20 ion (max) {..
35ec0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 this._s
35ed0 63 61 6c 65 2e 6d 61 78 20 3d 20 6d 61 78 3b 0a cale.max = max;.
35ee0 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
35ef0 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 });.. /**...
35f00 2a 20 54 68 65 20 65 6e 76 65 6c 6f 70 65 27 73 * The envelope's
35f10 20 65 78 70 6f 6e 65 6e 74 20 76 61 6c 75 65 2e exponent value.
35f20 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
35f30 20 54 6f 6e 65 2e 53 63 61 6c 65 64 45 6e 76 65 Tone.ScaledEnve
35f40 6c 6f 70 65 23 0a 09 09 20 2a 20 40 74 79 70 65 lope#... * @type
35f50 20 7b 6e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 40 {number}... * @
35f60 6e 61 6d 65 20 65 78 70 6f 6e 65 6e 74 0a 09 09 name exponent...
35f70 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
35f80 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
35f90 6f 6e 65 2e 53 63 61 6c 65 64 45 6e 76 65 6c 6f one.ScaledEnvelo
35fa0 70 65 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 65 pe.prototype, 'e
35fb0 78 70 6f 6e 65 6e 74 27 2c 20 7b 0a 09 20 20 20 xponent', {..
35fc0 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
35fd0 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
35fe0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
35ff0 2e 5f 65 78 70 2e 76 61 6c 75 65 3b 0a 09 20 20 ._exp.value;..
36000 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 },..
36010 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 set: function
36020 28 65 78 70 29 20 7b 0a 09 20 20 20 20 20 20 20 (exp) {..
36030 20 20 20 20 20 74 68 69 73 2e 5f 65 78 70 2e 76 this._exp.v
36040 61 6c 75 65 20 3d 20 65 78 70 3b 0a 09 20 20 20 alue = exp;..
36050 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
36060 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 63 . /**... * c
36070 6c 65 61 6e 20 75 70 0a 09 09 20 2a 20 20 40 72 lean up... * @r
36080 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 63 61 eturns {Tone.Sca
36090 6c 65 64 45 6e 76 65 6c 6f 70 65 7d 20 74 68 69 ledEnvelope} thi
360a0 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
360b0 65 2e 53 63 61 6c 65 64 45 6e 76 65 6c 6f 70 65 e.ScaledEnvelope
360c0 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
360d0 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 se = function ()
360e0 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 {.. Tone
360f0 2e 45 6e 76 65 6c 6f 70 65 2e 70 72 6f 74 6f 74 .Envelope.protot
36100 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c ype.dispose.call
36110 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 (this);..
36120 20 74 68 69 73 2e 5f 73 63 61 6c 65 2e 64 69 73 this._scale.dis
36130 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
36140 20 74 68 69 73 2e 5f 73 63 61 6c 65 20 3d 20 6e this._scale = n
36150 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
36160 69 73 2e 5f 65 78 70 2e 64 69 73 70 6f 73 65 28 is._exp.dispose(
36170 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
36180 2e 5f 65 78 70 20 3d 20 6e 75 6c 6c 3b 0a 09 20 ._exp = null;..
36190 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
361a0 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
361b0 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 53 63 61 return Tone.Sca
361c0 6c 65 64 45 6e 76 65 6c 6f 70 65 3b 0a 09 7d 29 ledEnvelope;..})
361d0 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 ;..Module(functi
361e0 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 on (Tone) {..
361f0 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 .. /**... *
36200 20 40 63 6c 61 73 73 20 54 6f 6e 65 2e 46 72 65 @class Tone.Fre
36210 71 75 65 6e 63 79 45 6e 76 65 6c 6f 70 65 20 69 quencyEnvelope i
36220 73 20 61 20 54 6f 6e 65 2e 53 63 61 6c 65 64 45 s a Tone.ScaledE
36230 6e 76 65 6c 6f 70 65 2c 20 62 75 74 20 69 6e 73 nvelope, but ins
36240 74 65 61 64 20 6f 66 20 60 6d 69 6e 60 20 61 6e tead of `min` an
36250 64 20 60 6d 61 78 60 0a 09 09 20 2a 20 20 20 20 d `max`... *
36260 20 20 20 20 20 69 74 27 73 20 67 6f 74 20 61 20 it's got a
36270 60 62 61 73 65 46 72 65 71 75 65 6e 63 79 60 20 `baseFrequency`
36280 61 6e 64 20 60 6f 63 74 61 76 65 73 60 20 70 61 and `octaves` pa
36290 72 61 6d 65 74 65 72 2e 20 0a 09 09 20 2a 0a 09 rameter. ... *..
362a0 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 . * @extends {T
362b0 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 7d 0a 09 09 one.Envelope}...
362c0 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 * @constructor
362d0 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 ... * @param {T
362e0 69 6d 65 7c 4f 62 6a 65 63 74 7d 20 5b 61 74 74 ime|Object} [att
362f0 61 63 6b 5d 09 74 68 65 20 61 74 74 61 63 6b 20 ack].the attack
36300 74 69 6d 65 20 69 6e 20 73 65 63 6f 6e 64 73 0a time in seconds.
36310 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 .. * @param {Ti
36320 6d 65 7d 20 5b 64 65 63 61 79 5d 09 74 68 65 20 me} [decay].the
36330 64 65 63 61 79 20 74 69 6d 65 20 69 6e 20 73 65 decay time in se
36340 63 6f 6e 64 73 0a 09 09 20 2a 20 20 40 70 61 72 conds... * @par
36350 61 6d 20 7b 6e 75 6d 62 65 72 7d 20 5b 73 75 73 am {number} [sus
36360 74 61 69 6e 5d 20 09 61 20 70 65 72 63 65 6e 74 tain] .a percent
36370 61 67 65 20 28 30 2d 31 29 20 6f 66 20 74 68 65 age (0-1) of the
36380 20 66 75 6c 6c 20 61 6d 70 6c 69 74 75 64 65 0a full amplitude.
36390 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 .. * @param {Ti
363a0 6d 65 7d 20 5b 72 65 6c 65 61 73 65 5d 09 74 68 me} [release].th
363b0 65 20 72 65 6c 65 61 73 65 20 74 69 6d 65 20 69 e release time i
363c0 6e 20 73 65 63 6f 6e 64 73 0a 09 09 20 2a 20 20 n seconds... *
363d0 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 20 76 @example... * v
363e0 61 72 20 65 6e 76 20 3d 20 6e 65 77 20 54 6f 6e ar env = new Ton
363f0 65 2e 46 72 65 71 75 65 6e 63 79 45 6e 76 65 6c e.FrequencyEnvel
36400 6f 70 65 28 7b 0a 09 09 20 2a 20 20 09 22 61 74 ope({... * ."at
36410 74 61 63 6b 22 20 3a 20 30 2e 32 2c 0a 09 09 20 tack" : 0.2,...
36420 2a 20 20 09 22 62 61 73 65 46 72 65 71 75 65 6e * ."baseFrequen
36430 63 79 22 20 3a 20 22 43 32 22 2c 0a 09 09 20 2a cy" : "C2",... *
36440 20 20 09 22 6f 63 74 61 76 65 73 22 20 3a 20 34 ."octaves" : 4
36450 0a 09 09 20 2a 20 20 7d 29 3b 0a 09 09 20 2a 20 ... * });... *
36460 20 73 63 61 6c 65 64 45 6e 76 2e 63 6f 6e 6e 65 scaledEnv.conne
36470 63 74 28 6f 73 63 69 6c 6c 61 74 6f 72 2e 66 72 ct(oscillator.fr
36480 65 71 75 65 6e 63 79 29 3b 0a 09 09 20 2a 2f 0a equency);... */.
36490 09 20 20 20 20 54 6f 6e 65 2e 46 72 65 71 75 65 . Tone.Freque
364a0 6e 63 79 45 6e 76 65 6c 6f 70 65 20 3d 20 66 75 ncyEnvelope = fu
364b0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
364c0 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 var options
364d0 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f = this.optionsO
364e0 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c bject(arguments,
364f0 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 [..
36500 27 61 74 74 61 63 6b 27 2c 0a 09 20 20 20 20 20 'attack',..
36510 20 20 20 20 20 20 20 27 64 65 63 61 79 27 2c 0a 'decay',.
36520 09 20 20 20 20 20 20 20 20 20 20 20 20 27 73 75 . 'su
36530 73 74 61 69 6e 27 2c 0a 09 20 20 20 20 20 20 20 stain',..
36540 20 20 20 20 20 27 72 65 6c 65 61 73 65 27 0a 09 'release'..
36550 20 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 2e ], Tone.
36560 45 6e 76 65 6c 6f 70 65 2e 64 65 66 61 75 6c 74 Envelope.default
36570 73 29 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e s);.. Ton
36580 65 2e 53 63 61 6c 65 64 45 6e 76 65 6c 6f 70 65 e.ScaledEnvelope
36590 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 .call(this, opti
365a0 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 6f ons);.. o
365b0 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 64 65 ptions = this.de
365c0 66 61 75 6c 74 41 72 67 28 6f 70 74 69 6f 6e 73 faultArg(options
365d0 2c 20 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 , Tone.Frequency
365e0 45 6e 76 65 6c 6f 70 65 2e 64 65 66 61 75 6c 74 Envelope.default
365f0 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a s);.. /**
36600 0a 09 09 09 20 2a 20 20 53 74 6f 72 65 73 20 74 .... * Stores t
36610 68 65 20 6f 63 74 61 76 65 20 76 61 6c 75 65 0a he octave value.
36620 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 50 6f ... * @type {Po
36630 73 69 74 69 76 65 7d 0a 09 09 09 20 2a 20 20 40 sitive}.... * @
36640 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
36650 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 63 this._oc
36660 74 61 76 65 73 20 3d 20 6f 70 74 69 6f 6e 73 2e taves = options.
36670 6f 63 74 61 76 65 73 3b 0a 09 20 20 20 20 20 20 octaves;..
36680 20 20 2f 2f 73 65 74 75 70 0a 09 20 20 20 20 20 //setup..
36690 20 20 20 74 68 69 73 2e 62 61 73 65 46 72 65 71 this.baseFreq
366a0 75 65 6e 63 79 20 3d 20 6f 70 74 69 6f 6e 73 2e uency = options.
366b0 62 61 73 65 46 72 65 71 75 65 6e 63 79 3b 0a 09 baseFrequency;..
366c0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 63 74 this.oct
366d0 61 76 65 73 20 3d 20 6f 70 74 69 6f 6e 73 2e 6f aves = options.o
366e0 63 74 61 76 65 73 3b 0a 09 20 20 20 20 7d 3b 0a ctaves;.. };.
366f0 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 . Tone.extend
36700 28 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 45 (Tone.FrequencyE
36710 6e 76 65 6c 6f 70 65 2c 20 54 6f 6e 65 2e 45 6e nvelope, Tone.En
36720 76 65 6c 6f 70 65 29 3b 0a 09 20 20 20 20 2f 2a velope);.. /*
36730 2a 0a 09 09 20 2a 20 20 74 68 65 20 64 65 66 61 *... * the defa
36740 75 6c 74 20 70 61 72 61 6d 65 74 65 72 73 0a 09 ult parameters..
36750 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 . * @static...
36760 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 72 65 */.. Tone.Fre
36770 71 75 65 6e 63 79 45 6e 76 65 6c 6f 70 65 2e 64 quencyEnvelope.d
36780 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 efaults = {..
36790 20 20 20 20 20 27 62 61 73 65 46 72 65 71 75 65 'baseFreque
367a0 6e 63 79 27 3a 20 32 30 30 2c 0a 09 20 20 20 20 ncy': 200,..
367b0 20 20 20 20 27 6f 63 74 61 76 65 73 27 3a 20 34 'octaves': 4
367c0 2c 0a 09 20 20 20 20 20 20 20 20 27 65 78 70 6f ,.. 'expo
367d0 6e 65 6e 74 27 3a 20 32 0a 09 20 20 20 20 7d 3b nent': 2.. };
367e0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 .. /**... * T
367f0 68 65 20 65 6e 76 65 6c 6f 70 65 27 73 20 6d 69 he envelope's mi
36800 6e 69 6e 75 6d 20 6f 75 74 70 75 74 20 76 61 6c ninum output val
36810 75 65 2e 20 54 68 69 73 20 69 73 20 74 68 65 20 ue. This is the
36820 76 61 6c 75 65 20 77 68 69 63 68 20 69 74 0a 09 value which it..
36830 09 20 2a 20 73 74 61 72 74 73 20 61 74 2e 20 0a . * starts at. .
36840 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 .. * @memberOf T
36850 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 45 6e 76 one.FrequencyEnv
36860 65 6c 6f 70 65 23 0a 09 09 20 2a 20 40 74 79 70 elope#... * @typ
36870 65 20 7b 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 e {Frequency}...
36880 20 2a 20 40 6e 61 6d 65 20 62 61 73 65 46 72 65 * @name baseFre
36890 71 75 65 6e 63 79 0a 09 09 20 2a 2f 0a 09 20 20 quency... */..
368a0 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
368b0 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 46 72 65 roperty(Tone.Fre
368c0 71 75 65 6e 63 79 45 6e 76 65 6c 6f 70 65 2e 70 quencyEnvelope.p
368d0 72 6f 74 6f 74 79 70 65 2c 20 27 62 61 73 65 46 rototype, 'baseF
368e0 72 65 71 75 65 6e 63 79 27 2c 20 7b 0a 09 20 20 requency', {..
368f0 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
36900 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
36910 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
36920 73 2e 5f 73 63 61 6c 65 2e 6d 69 6e 3b 0a 09 20 s._scale.min;..
36930 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 },..
36940 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e set: function
36950 20 28 6d 69 6e 29 20 7b 0a 09 20 20 20 20 20 20 (min) {..
36960 20 20 20 20 20 20 74 68 69 73 2e 5f 73 63 61 6c this._scal
36970 65 2e 6d 69 6e 20 3d 20 74 68 69 73 2e 74 6f 46 e.min = this.toF
36980 72 65 71 75 65 6e 63 79 28 6d 69 6e 29 3b 0a 09 requency(min);..
36990 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 61 6c //al
369a0 73 6f 20 75 70 64 61 74 65 20 74 68 65 20 6f 63 so update the oc
369b0 74 61 76 65 73 0a 09 20 20 20 20 20 20 20 20 20 taves..
369c0 20 20 20 74 68 69 73 2e 6f 63 74 61 76 65 73 20 this.octaves
369d0 3d 20 74 68 69 73 2e 5f 6f 63 74 61 76 65 73 3b = this._octaves;
369e0 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
369f0 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
36a00 20 2a 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 * The number of
36a10 20 6f 63 74 61 76 65 73 20 61 62 6f 76 65 20 74 octaves above t
36a20 68 65 20 62 61 73 65 46 72 65 71 75 65 6e 63 79 he baseFrequency
36a30 20 74 68 61 74 20 74 68 65 0a 09 09 20 2a 20 65 that the... * e
36a40 6e 76 65 6c 6f 70 65 20 77 69 6c 6c 20 73 63 61 nvelope will sca
36a50 6c 65 20 74 6f 2e 0a 09 09 20 2a 20 40 6d 65 6d le to.... * @mem
36a60 62 65 72 4f 66 20 54 6f 6e 65 2e 46 72 65 71 75 berOf Tone.Frequ
36a70 65 6e 63 79 45 6e 76 65 6c 6f 70 65 23 0a 09 09 encyEnvelope#...
36a80 20 2a 20 40 74 79 70 65 20 7b 50 6f 73 69 74 69 * @type {Positi
36a90 76 65 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6f ve}... * @name o
36aa0 63 74 61 76 65 73 0a 09 09 20 2a 2f 0a 09 20 20 ctaves... */..
36ab0 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
36ac0 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 46 72 65 roperty(Tone.Fre
36ad0 71 75 65 6e 63 79 45 6e 76 65 6c 6f 70 65 2e 70 quencyEnvelope.p
36ae0 72 6f 74 6f 74 79 70 65 2c 20 27 6f 63 74 61 76 rototype, 'octav
36af0 65 73 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 es', {..
36b00 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 get: function ()
36b10 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
36b20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6f 63 74 return this._oct
36b30 61 76 65 73 3b 0a 09 20 20 20 20 20 20 20 20 7d aves;.. }
36b40 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 ,.. set:
36b50 66 75 6e 63 74 69 6f 6e 20 28 6f 63 74 61 76 65 function (octave
36b60 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 s) {..
36b70 20 20 74 68 69 73 2e 5f 6f 63 74 61 76 65 73 20 this._octaves
36b80 3d 20 6f 63 74 61 76 65 73 3b 0a 09 20 20 20 20 = octaves;..
36b90 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 63 this._sc
36ba0 61 6c 65 2e 6d 61 78 20 3d 20 74 68 69 73 2e 62 ale.max = this.b
36bb0 61 73 65 46 72 65 71 75 65 6e 63 79 20 2a 20 4d aseFrequency * M
36bc0 61 74 68 2e 70 6f 77 28 32 2c 20 6f 63 74 61 76 ath.pow(2, octav
36bd0 65 73 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a es);.. }.
36be0 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a . });.. /*
36bf0 2a 0a 09 09 20 2a 20 54 68 65 20 65 6e 76 65 6c *... * The envel
36c00 6f 70 65 27 73 20 65 78 70 6f 6e 65 6e 74 20 76 ope's exponent v
36c10 61 6c 75 65 2e 20 0a 09 09 20 2a 20 40 6d 65 6d alue. ... * @mem
36c20 62 65 72 4f 66 20 54 6f 6e 65 2e 46 72 65 71 75 berOf Tone.Frequ
36c30 65 6e 63 79 45 6e 76 65 6c 6f 70 65 23 0a 09 09 encyEnvelope#...
36c40 20 2a 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 * @type {number
36c50 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 65 78 70 }... * @name exp
36c60 6f 6e 65 6e 74 0a 09 09 20 2a 2f 0a 09 20 20 20 onent... */..
36c70 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
36c80 6f 70 65 72 74 79 28 54 6f 6e 65 2e 46 72 65 71 operty(Tone.Freq
36c90 75 65 6e 63 79 45 6e 76 65 6c 6f 70 65 2e 70 72 uencyEnvelope.pr
36ca0 6f 74 6f 74 79 70 65 2c 20 27 65 78 70 6f 6e 65 ototype, 'expone
36cb0 6e 74 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 nt', {..
36cc0 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 get: function ()
36cd0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
36ce0 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 65 78 70 return this._exp
36cf0 2e 76 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 20 .value;..
36d00 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 },.. set
36d10 3a 20 66 75 6e 63 74 69 6f 6e 20 28 65 78 70 29 : function (exp)
36d20 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
36d30 74 68 69 73 2e 5f 65 78 70 2e 76 61 6c 75 65 20 this._exp.value
36d40 3d 20 65 78 70 3b 0a 09 20 20 20 20 20 20 20 20 = exp;..
36d50 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
36d60 2f 2a 2a 0a 09 09 20 2a 20 20 63 6c 65 61 6e 20 /**... * clean
36d70 75 70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e up... * @return
36d80 73 20 7b 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 s {Tone.Frequenc
36d90 79 45 6e 76 65 6c 6f 70 65 7d 20 74 68 69 73 0a yEnvelope} this.
36da0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
36db0 46 72 65 71 75 65 6e 63 79 45 6e 76 65 6c 6f 70 FrequencyEnvelop
36dc0 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 e.prototype.disp
36dd0 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ose = function (
36de0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e ) {.. Ton
36df0 65 2e 53 63 61 6c 65 64 45 6e 76 65 6c 6f 70 65 e.ScaledEnvelope
36e00 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
36e10 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 se.call(this);..
36e20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
36e30 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
36e40 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 46 72 return Tone.Fr
36e50 65 71 75 65 6e 63 79 45 6e 76 65 6c 6f 70 65 3b equencyEnvelope;
36e60 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 ..});..Module(fu
36e70 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a nction (Tone) {.
36e80 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 . .. /**..
36e90 09 20 2a 20 20 40 63 6c 61 73 73 20 20 54 6f 6e . * @class Ton
36ea0 65 2e 47 61 74 65 20 6f 6e 6c 79 20 70 61 73 73 e.Gate only pass
36eb0 65 73 20 61 20 73 69 67 6e 61 6c 20 74 68 72 6f es a signal thro
36ec0 75 67 68 20 77 68 65 6e 20 74 68 65 20 69 6e 63 ugh when the inc
36ed0 6f 6d 69 6e 67 20 0a 09 09 20 2a 20 20 20 20 20 oming ... *
36ee0 20 20 20 20 20 73 69 67 6e 61 6c 20 65 78 63 65 signal exce
36ef0 65 64 73 20 61 20 73 70 65 63 69 66 69 65 64 20 eds a specified
36f00 74 68 72 65 73 68 6f 6c 64 2e 20 54 6f 20 64 6f threshold. To do
36f10 20 74 68 69 73 2c 20 47 61 74 65 20 75 73 65 73 this, Gate uses
36f20 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 ... *
36f30 61 20 54 6f 6e 65 2e 46 6f 6c 6c 6f 77 65 72 20 a Tone.Follower
36f40 74 6f 20 66 6f 6c 6c 6f 77 20 74 68 65 20 61 6d to follow the am
36f50 70 6c 69 74 75 64 65 20 6f 66 20 74 68 65 20 69 plitude of the i
36f60 6e 63 6f 6d 69 6e 67 20 73 69 67 6e 61 6c 2e 20 ncoming signal.
36f70 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 41 ... * A
36f80 20 63 6f 6d 6d 6f 6e 20 69 6d 70 6c 65 6d 65 6e common implemen
36f90 74 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 63 tation of this c
36fa0 6c 61 73 73 20 69 73 20 61 20 5b 4e 6f 69 73 65 lass is a [Noise
36fb0 20 47 61 74 65 5d 28 68 74 74 70 73 3a 2f 2f 65 Gate](https://e
36fc0 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f n.wikipedia.org/
36fd0 77 69 6b 69 2f 4e 6f 69 73 65 5f 67 61 74 65 29 wiki/Noise_gate)
36fe0 2e 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 .... * ... * @
36ff0 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a constructor... *
37000 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
37010 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b }... * @param {
37020 44 65 63 69 62 65 6c 73 7c 4f 62 6a 65 63 74 7d Decibels|Object}
37030 20 5b 74 68 72 65 73 68 6f 6c 64 5d 20 54 68 65 [threshold] The
37040 20 74 68 72 65 73 68 6f 6c 64 20 61 62 6f 76 65 threshold above
37050 20 77 68 69 63 68 20 74 68 65 20 67 61 74 65 20 which the gate
37060 77 69 6c 6c 20 6f 70 65 6e 2e 20 0a 09 09 20 2a will open. ... *
37070 20 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 3d 7d @param {Time=}
37080 20 61 74 74 61 63 6b 20 54 68 65 20 66 6f 6c 6c attack The foll
37090 6f 77 65 72 27 73 20 61 74 74 61 63 6b 20 74 69 ower's attack ti
370a0 6d 65 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 me... * @param
370b0 7b 54 69 6d 65 3d 7d 20 72 65 6c 65 61 73 65 20 {Time=} release
370c0 54 68 65 20 66 6f 6c 6c 6f 77 65 72 27 73 20 72 The follower's r
370d0 65 6c 65 61 73 65 20 74 69 6d 65 0a 09 09 20 2a elease time... *
370e0 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 @example... *
370f0 76 61 72 20 67 61 74 65 20 3d 20 6e 65 77 20 54 var gate = new T
37100 6f 6e 65 2e 47 61 74 65 28 2d 33 30 2c 20 30 2e one.Gate(-30, 0.
37110 32 2c 20 30 2e 33 29 2e 74 6f 4d 61 73 74 65 72 2, 0.3).toMaster
37120 28 29 3b 0a 09 09 20 2a 20 76 61 72 20 6d 69 63 ();... * var mic
37130 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 55 73 65 72 = new Tone.User
37140 4d 65 64 69 61 28 29 2e 63 6f 6e 6e 65 63 74 28 Media().connect(
37150 67 61 74 65 29 3b 0a 09 09 20 2a 20 2f 2f 74 68 gate);... * //th
37160 65 20 67 61 74 65 20 77 69 6c 6c 20 6f 6e 6c 79 e gate will only
37170 20 70 61 73 73 20 74 68 72 6f 75 67 68 20 74 68 pass through th
37180 65 20 69 6e 63 6f 6d 69 6e 67 20 0a 09 09 20 2a e incoming ... *
37190 20 2f 2f 73 69 67 6e 61 6c 20 77 68 65 6e 20 69 //signal when i
371a0 74 27 73 20 6c 6f 75 64 65 72 20 74 68 61 6e 20 t's louder than
371b0 2d 33 30 64 62 0a 09 09 20 2a 2f 0a 09 20 20 20 -30db... */..
371c0 20 54 6f 6e 65 2e 47 61 74 65 20 3d 20 66 75 6e Tone.Gate = fun
371d0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
371e0 20 20 20 20 74 68 69 73 2e 63 72 65 61 74 65 49 this.createI
371f0 6e 73 4f 75 74 73 28 31 2c 20 31 29 3b 0a 09 20 nsOuts(1, 1);..
37200 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f var optio
37210 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e ns = this.option
37220 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 sObject(argument
37230 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 s, [..
37240 20 20 27 74 68 72 65 73 68 6f 6c 64 27 2c 0a 09 'threshold',..
37250 20 20 20 20 20 20 20 20 20 20 20 20 27 61 74 74 'att
37260 61 63 6b 27 2c 0a 09 20 20 20 20 20 20 20 20 20 ack',..
37270 20 20 20 27 72 65 6c 65 61 73 65 27 0a 09 20 20 'release'..
37280 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 47 61 ], Tone.Ga
37290 74 65 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 te.defaults);..
372a0 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
372b0 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 46 6f @type {Tone.Fo
372c0 6c 6c 6f 77 65 72 7d 0a 09 09 09 20 2a 20 20 40 llower}.... * @
372d0 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
372e0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 6f this._fo
372f0 6c 6c 6f 77 65 72 20 3d 20 6e 65 77 20 54 6f 6e llower = new Ton
37300 65 2e 46 6f 6c 6c 6f 77 65 72 28 6f 70 74 69 6f e.Follower(optio
37310 6e 73 2e 61 74 74 61 63 6b 2c 20 6f 70 74 69 6f ns.attack, optio
37320 6e 73 2e 72 65 6c 65 61 73 65 29 3b 0a 09 20 20 ns.release);..
37330 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
37340 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 47 72 65 @type {Tone.Gre
37350 61 74 65 72 54 68 61 6e 7d 0a 09 09 09 20 2a 20 aterThan}.... *
37360 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
37370 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
37380 67 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 72 gt = new Tone.Gr
37390 65 61 74 65 72 54 68 61 6e 28 74 68 69 73 2e 64 eaterThan(this.d
373a0 62 54 6f 47 61 69 6e 28 6f 70 74 69 6f 6e 73 2e bToGain(options.
373b0 74 68 72 65 73 68 6f 6c 64 29 29 3b 0a 09 20 20 threshold));..
373c0 20 20 20 20 20 20 2f 2f 74 68 65 20 63 6f 6e 6e //the conn
373d0 65 63 74 69 6f 6e 73 0a 09 20 20 20 20 20 20 20 ections..
373e0 20 74 68 69 73 2e 69 6e 70 75 74 2e 63 6f 6e 6e this.input.conn
373f0 65 63 74 28 74 68 69 73 2e 6f 75 74 70 75 74 29 ect(this.output)
37400 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 74 68 65 ;.. //the
37410 20 63 6f 6e 74 72 6f 6c 20 73 69 67 6e 61 6c 0a control signal.
37420 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e . this.in
37430 70 75 74 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f put.chain(this._
37440 67 74 2c 20 74 68 69 73 2e 5f 66 6f 6c 6c 6f 77 gt, this._follow
37450 65 72 2c 20 74 68 69 73 2e 6f 75 74 70 75 74 2e er, this.output.
37460 67 61 69 6e 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 gain);.. };..
37470 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 Tone.extend(
37480 54 6f 6e 65 2e 47 61 74 65 29 3b 0a 09 20 20 20 Tone.Gate);..
37490 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 /**... * @cons
374a0 74 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a t... * @static.
374b0 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 6a .. * @type {Obj
374c0 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ect}... */..
374d0 54 6f 6e 65 2e 47 61 74 65 2e 64 65 66 61 75 6c Tone.Gate.defaul
374e0 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 ts = {..
374f0 27 61 74 74 61 63 6b 27 3a 20 30 2e 31 2c 0a 09 'attack': 0.1,..
37500 20 20 20 20 20 20 20 20 27 72 65 6c 65 61 73 65 'release
37510 27 3a 20 30 2e 31 2c 0a 09 20 20 20 20 20 20 20 ': 0.1,..
37520 20 27 74 68 72 65 73 68 6f 6c 64 27 3a 20 2d 34 'threshold': -4
37530 30 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 0.. };.. /
37540 2a 2a 0a 09 09 20 2a 20 54 68 65 20 74 68 72 65 **... * The thre
37550 73 68 6f 6c 64 20 6f 66 20 74 68 65 20 67 61 74 shold of the gat
37560 65 20 69 6e 20 64 65 63 69 62 65 6c 73 0a 09 09 e in decibels...
37570 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
37580 65 2e 47 61 74 65 23 0a 09 09 20 2a 20 40 74 79 e.Gate#... * @ty
37590 70 65 20 7b 44 65 63 69 62 65 6c 73 7d 0a 09 09 pe {Decibels}...
375a0 20 2a 20 40 6e 61 6d 65 20 74 68 72 65 73 68 6f * @name thresho
375b0 6c 64 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 ld... */.. Ob
375c0 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
375d0 72 74 79 28 54 6f 6e 65 2e 47 61 74 65 2e 70 72 rty(Tone.Gate.pr
375e0 6f 74 6f 74 79 70 65 2c 20 27 74 68 72 65 73 68 ototype, 'thresh
375f0 6f 6c 64 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 old', {..
37600 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
37610 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
37620 20 72 65 74 75 72 6e 20 74 68 69 73 2e 67 61 69 return this.gai
37630 6e 54 6f 44 62 28 74 68 69 73 2e 5f 67 74 2e 76 nToDb(this._gt.v
37640 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 20 20 alue);..
37650 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a },.. set:
37660 20 66 75 6e 63 74 69 6f 6e 20 28 74 68 72 65 73 function (thres
37670 68 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 h) {..
37680 20 20 74 68 69 73 2e 5f 67 74 2e 76 61 6c 75 65 this._gt.value
37690 20 3d 20 74 68 69 73 2e 64 62 54 6f 47 61 69 6e = this.dbToGain
376a0 28 74 68 72 65 73 68 29 3b 0a 09 20 20 20 20 20 (thresh);..
376b0 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
376c0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 /**... * The
376d0 61 74 74 61 63 6b 20 73 70 65 65 64 20 6f 66 20 attack speed of
376e0 74 68 65 20 67 61 74 65 0a 09 09 20 2a 20 40 6d the gate... * @m
376f0 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 47 61 74 emberOf Tone.Gat
37700 65 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 54 e#... * @type {T
37710 69 6d 65 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 ime}... * @name
37720 61 74 74 61 63 6b 0a 09 09 20 2a 2f 0a 09 20 20 attack... */..
37730 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
37740 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 47 61 74 roperty(Tone.Gat
37750 65 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 61 74 e.prototype, 'at
37760 74 61 63 6b 27 2c 20 7b 0a 09 20 20 20 20 20 20 tack', {..
37770 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
37780 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
37790 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 66 return this._f
377a0 6f 6c 6c 6f 77 65 72 2e 61 74 74 61 63 6b 3b 0a ollower.attack;.
377b0 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 . },..
377c0 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 set: functi
377d0 6f 6e 20 28 61 74 74 61 63 6b 54 69 6d 65 29 20 on (attackTime)
377e0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
377f0 68 69 73 2e 5f 66 6f 6c 6c 6f 77 65 72 2e 61 74 his._follower.at
37800 74 61 63 6b 20 3d 20 61 74 74 61 63 6b 54 69 6d tack = attackTim
37810 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 e;.. }..
37820 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
37830 09 09 20 2a 20 54 68 65 20 72 65 6c 65 61 73 65 .. * The release
37840 20 73 70 65 65 64 20 6f 66 20 74 68 65 20 67 61 speed of the ga
37850 74 65 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f te... * @memberO
37860 66 20 54 6f 6e 65 2e 47 61 74 65 23 0a 09 09 20 f Tone.Gate#...
37870 2a 20 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a 09 * @type {Time}..
37880 09 20 2a 20 40 6e 61 6d 65 20 72 65 6c 65 61 73 . * @name releas
37890 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a e... */.. Obj
378a0 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
378b0 74 79 28 54 6f 6e 65 2e 47 61 74 65 2e 70 72 6f ty(Tone.Gate.pro
378c0 74 6f 74 79 70 65 2c 20 27 72 65 6c 65 61 73 65 totype, 'release
378d0 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 ', {.. ge
378e0 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b t: function () {
378f0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
37900 74 75 72 6e 20 74 68 69 73 2e 5f 66 6f 6c 6c 6f turn this._follo
37910 77 65 72 2e 72 65 6c 65 61 73 65 3b 0a 09 20 20 wer.release;..
37920 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 },..
37930 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 set: function
37940 28 72 65 6c 65 61 73 65 54 69 6d 65 29 20 7b 0a (releaseTime) {.
37950 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
37960 73 2e 5f 66 6f 6c 6c 6f 77 65 72 2e 72 65 6c 65 s._follower.rele
37970 61 73 65 20 3d 20 72 65 6c 65 61 73 65 54 69 6d ase = releaseTim
37980 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 e;.. }..
37990 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
379a0 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 20 .. * Clean up.
379b0 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
379c0 7b 54 6f 6e 65 2e 47 61 74 65 7d 20 74 68 69 73 {Tone.Gate} this
379d0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
379e0 2e 47 61 74 65 2e 70 72 6f 74 6f 74 79 70 65 2e .Gate.prototype.
379f0 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 dispose = functi
37a00 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
37a10 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e Tone.prototype.
37a20 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 dispose.call(thi
37a30 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 s);.. thi
37a40 73 2e 5f 66 6f 6c 6c 6f 77 65 72 2e 64 69 73 70 s._follower.disp
37a50 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
37a60 74 68 69 73 2e 5f 67 74 2e 64 69 73 70 6f 73 65 this._gt.dispose
37a70 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
37a80 73 2e 5f 66 6f 6c 6c 6f 77 65 72 20 3d 20 6e 75 s._follower = nu
37a90 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
37aa0 73 2e 5f 67 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 s._gt = null;..
37ab0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
37ac0 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
37ad0 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 47 61 74 return Tone.Gat
37ae0 65 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 e;..});..Module(
37af0 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 function (Tone)
37b00 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a {.. .. /**
37b10 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 20 41 ... * @class A
37b20 20 54 69 6d 65 6c 69 6e 65 20 53 74 61 74 65 2e Timeline State.
37b30 20 50 72 6f 76 69 64 65 73 20 74 68 65 20 6d 65 Provides the me
37b40 74 68 6f 64 73 3a 20 3c 63 6f 64 65 3e 73 65 74 thods: <code>set
37b50 53 74 61 74 65 41 74 54 69 6d 65 28 22 73 74 61 StateAtTime("sta
37b60 74 65 22 2c 20 74 69 6d 65 29 3c 2f 63 6f 64 65 te", time)</code
37b70 3e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 >... *
37b80 61 6e 64 20 3c 63 6f 64 65 3e 67 65 74 56 61 6c and <code>getVal
37b90 75 65 41 74 54 69 6d 65 28 74 69 6d 65 29 3c 2f ueAtTime(time)</
37ba0 63 6f 64 65 3e 2e 0a 09 09 20 2a 0a 09 09 20 2a code>.... *... *
37bb0 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
37bc0 2e 54 69 6d 65 6c 69 6e 65 7d 0a 09 09 20 2a 20 .Timeline}... *
37bd0 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e 67 7d @param {String}
37be0 20 69 6e 69 74 69 61 6c 20 54 68 65 20 69 6e 69 initial The ini
37bf0 74 69 61 6c 20 73 74 61 74 65 20 6f 66 20 74 68 tial state of th
37c00 65 20 54 69 6d 65 6c 69 6e 65 53 74 61 74 65 2e e TimelineState.
37c10 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 ... *
37c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
37c30 44 65 66 61 75 6c 74 73 20 74 6f 20 3c 63 6f 64 Defaults to <cod
37c40 65 3e 75 6e 64 65 66 69 6e 65 64 3c 2f 63 6f 64 e>undefined</cod
37c50 65 3e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f e>... */.. To
37c60 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 74 61 74 65 ne.TimelineState
37c70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 69 6e 69 = function (ini
37c80 74 69 61 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 tial) {..
37c90 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 2e 63 Tone.Timeline.c
37ca0 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 all(this);..
37cb0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
37cc0 68 65 20 69 6e 69 74 69 61 6c 20 73 74 61 74 65 he initial state
37cd0 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
37ce0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 53 .... * @type {S
37cf0 74 72 69 6e 67 7d 0a 09 09 09 20 2a 2f 0a 09 20 tring}.... */..
37d00 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69 6e 69 this._ini
37d10 74 69 61 6c 20 3d 20 69 6e 69 74 69 61 6c 3b 0a tial = initial;.
37d20 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e . };.. Ton
37d30 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 54 69 e.extend(Tone.Ti
37d40 6d 65 6c 69 6e 65 53 74 61 74 65 2c 20 54 6f 6e melineState, Ton
37d50 65 2e 54 69 6d 65 6c 69 6e 65 29 3b 0a 09 20 20 e.Timeline);..
37d60 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 /**... * Retu
37d70 72 6e 73 20 74 68 65 20 73 63 68 65 64 75 6c 65 rns the schedule
37d80 64 20 73 74 61 74 65 20 73 63 68 65 64 75 6c 65 d state schedule
37d90 64 20 62 65 66 6f 72 65 20 6f 72 20 61 74 0a 09 d before or at..
37da0 09 20 2a 20 20 74 68 65 20 67 69 76 65 6e 20 74 . * the given t
37db0 69 6d 65 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 ime.... * @para
37dc0 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 20 74 69 6d m {Number} tim
37dd0 65 20 20 54 68 65 20 74 69 6d 65 20 74 6f 20 71 e The time to q
37de0 75 65 72 79 2e 0a 09 09 20 2a 20 20 40 72 65 74 uery.... * @ret
37df0 75 72 6e 20 20 7b 53 74 72 69 6e 67 7d 20 20 54 urn {String} T
37e00 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 he name of the s
37e10 74 61 74 65 20 69 6e 70 75 74 20 69 6e 20 73 65 tate input in se
37e20 74 53 74 61 74 65 41 74 54 69 6d 65 2e 0a 09 09 tStateAtTime....
37e30 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 */.. Tone.Ti
37e40 6d 65 6c 69 6e 65 53 74 61 74 65 2e 70 72 6f 74 melineState.prot
37e50 6f 74 79 70 65 2e 67 65 74 56 61 6c 75 65 41 74 otype.getValueAt
37e60 54 69 6d 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 Time = function
37e70 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 (time) {..
37e80 20 20 76 61 72 20 65 76 65 6e 74 20 3d 20 74 68 var event = th
37e90 69 73 2e 67 65 74 28 74 69 6d 65 29 3b 0a 09 20 is.get(time);..
37ea0 20 20 20 20 20 20 20 69 66 20 28 65 76 65 6e 74 if (event
37eb0 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 !== null) {..
37ec0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
37ed0 20 65 76 65 6e 74 2e 73 74 61 74 65 3b 0a 09 20 event.state;..
37ee0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
37ef0 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
37f00 75 72 6e 20 74 68 69 73 2e 5f 69 6e 69 74 69 61 urn this._initia
37f10 6c 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 l;.. }..
37f20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
37f30 09 20 2a 20 20 52 65 74 75 72 6e 73 20 74 68 65 . * Returns the
37f40 20 73 63 68 65 64 75 6c 65 64 20 73 74 61 74 65 scheduled state
37f50 20 73 63 68 65 64 75 6c 65 64 20 62 65 66 6f 72 scheduled befor
37f60 65 20 6f 72 20 61 74 0a 09 09 20 2a 20 20 74 68 e or at... * th
37f70 65 20 67 69 76 65 6e 20 74 69 6d 65 2e 0a 09 09 e given time....
37f80 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 53 74 72 * @param {Str
37f90 69 6e 67 7d 20 20 73 74 61 74 65 20 54 68 65 20 ing} state The
37fa0 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 74 61 74 name of the stat
37fb0 65 20 74 6f 20 73 65 74 2e 0a 09 09 20 2a 20 20 e to set.... *
37fc0 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 7d @param {Number}
37fd0 20 20 74 69 6d 65 20 20 54 68 65 20 74 69 6d 65 time The time
37fe0 20 74 6f 20 71 75 65 72 79 2e 0a 09 09 20 2a 2f to query.... */
37ff0 0a 09 20 20 20 20 54 6f 6e 65 2e 54 69 6d 65 6c .. Tone.Timel
38000 69 6e 65 53 74 61 74 65 2e 70 72 6f 74 6f 74 79 ineState.prototy
38010 70 65 2e 73 65 74 53 74 61 74 65 41 74 54 69 6d pe.setStateAtTim
38020 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 73 74 e = function (st
38030 61 74 65 2c 20 74 69 6d 65 29 20 7b 0a 09 20 20 ate, time) {..
38040 20 20 20 20 20 20 74 68 69 73 2e 61 64 64 28 7b this.add({
38050 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 73 .. 's
38060 74 61 74 65 27 3a 20 73 74 61 74 65 2c 0a 09 20 tate': state,..
38070 20 20 20 20 20 20 20 20 20 20 20 27 74 69 6d 65 'time
38080 27 3a 20 74 69 6d 65 0a 09 20 20 20 20 20 20 20 ': time..
38090 20 7d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 });.. };..
380a0 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 54 69 return Tone.Ti
380b0 6d 65 6c 69 6e 65 53 74 61 74 65 3b 0a 09 7d 29 melineState;..})
380c0 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 ;..Module(functi
380d0 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 on (Tone) {..
380e0 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 .. /**... *
380f0 20 40 63 6c 61 73 73 20 54 6f 6e 65 2e 45 6d 69 @class Tone.Emi
38100 74 74 65 72 20 67 69 76 65 73 20 63 6c 61 73 73 tter gives class
38110 65 73 20 77 68 69 63 68 20 65 78 74 65 6e 64 20 es which extend
38120 69 74 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 it... *
38130 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20 6c the ability to l
38140 69 73 74 65 6e 20 66 6f 72 20 61 6e 64 20 65 6d isten for and em
38150 69 74 20 65 76 65 6e 74 73 2e 20 0a 09 09 20 2a it events. ... *
38160 20 20 20 20 20 20 20 20 20 49 6e 73 70 69 72 61 Inspira
38170 74 69 6f 6e 20 61 6e 64 20 72 65 66 65 72 65 6e tion and referen
38180 63 65 20 66 72 6f 6d 20 4a 65 72 6f 6d 65 20 45 ce from Jerome E
38190 74 69 65 6e 6e 65 27 73 20 5b 4d 69 63 72 6f 45 tienne's [MicroE
381a0 76 65 6e 74 5d 28 68 74 74 70 73 3a 2f 2f 67 69 vent](https://gi
381b0 74 68 75 62 2e 63 6f 6d 2f 6a 65 72 6f 6d 65 65 thub.com/jeromee
381c0 74 69 65 6e 6e 65 2f 6d 69 63 72 6f 65 76 65 6e tienne/microeven
381d0 74 2e 6a 73 29 2e 0a 09 09 20 2a 20 20 20 20 20 t.js).... *
381e0 20 20 20 20 4d 49 54 20 28 63 29 20 32 30 31 31 MIT (c) 2011
381f0 20 4a 65 72 6f 6d 65 20 45 74 69 65 6e 6e 65 2e Jerome Etienne.
38200 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 0a 09 ... * ..
38210 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 . * @extends {T
38220 6f 6e 65 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 one}... */..
38230 54 6f 6e 65 2e 45 6d 69 74 74 65 72 20 3d 20 66 Tone.Emitter = f
38240 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
38250 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
38260 20 43 6f 6e 74 61 69 6e 73 20 61 6c 6c 20 6f 66 Contains all of
38270 20 74 68 65 20 65 76 65 6e 74 73 2e 0a 09 09 09 the events.....
38280 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
38290 20 2a 20 20 40 74 79 70 65 20 20 7b 4f 62 6a 65 * @type {Obje
382a0 63 74 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ct}.... */..
382b0 20 20 20 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 this._events
382c0 20 3d 20 7b 7d 3b 0a 09 20 20 20 20 7d 3b 0a 09 = {};.. };..
382d0 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 Tone.extend(
382e0 54 6f 6e 65 2e 45 6d 69 74 74 65 72 29 3b 0a 09 Tone.Emitter);..
382f0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 42 69 /**... * Bi
38300 6e 64 20 61 20 63 61 6c 6c 62 61 63 6b 20 74 6f nd a callback to
38310 20 61 20 73 70 65 63 69 66 69 63 20 65 76 65 6e a specific even
38320 74 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 t.... * @param
38330 20 7b 53 74 72 69 6e 67 7d 20 20 20 20 65 76 65 {String} eve
38340 6e 74 20 20 20 20 20 54 68 65 20 6e 61 6d 65 20 nt The name
38350 6f 66 20 74 68 65 20 65 76 65 6e 74 20 74 6f 20 of the event to
38360 6c 69 73 74 65 6e 20 66 6f 72 2e 0a 09 09 20 2a listen for.... *
38370 20 20 40 70 61 72 61 6d 20 20 7b 46 75 6e 63 74 @param {Funct
38380 69 6f 6e 7d 20 20 63 61 6c 6c 62 61 63 6b 20 20 ion} callback
38390 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 The callback to
383a0 69 6e 76 6f 6b 65 20 77 68 65 6e 20 74 68 65 0a invoke when the.
383b0 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 .. *
383c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
383d0 20 20 20 20 65 76 65 6e 74 20 69 73 20 65 6d 69 event is emi
383e0 74 74 65 64 0a 09 09 20 2a 20 20 40 72 65 74 75 tted... * @retu
383f0 72 6e 20 20 7b 54 6f 6e 65 2e 45 6d 69 74 74 65 rn {Tone.Emitte
38400 72 7d 20 20 20 20 74 68 69 73 0a 09 09 20 2a 2f r} this... */
38410 0a 09 20 20 20 20 54 6f 6e 65 2e 45 6d 69 74 74 .. Tone.Emitt
38420 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6f 6e 20 er.prototype.on
38430 3d 20 66 75 6e 63 74 69 6f 6e 20 28 65 76 65 6e = function (even
38440 74 2c 20 63 61 6c 6c 62 61 63 6b 29 20 7b 0a 09 t, callback) {..
38450 20 20 20 20 20 20 20 20 2f 2f 73 70 6c 69 74 20 //split
38460 74 68 65 20 65 76 65 6e 74 0a 09 20 20 20 20 20 the event..
38470 20 20 20 76 61 72 20 65 76 65 6e 74 73 20 3d 20 var events =
38480 65 76 65 6e 74 2e 73 70 6c 69 74 28 2f 5c 57 2b event.split(/\W+
38490 2f 29 3b 0a 09 20 20 20 20 20 20 20 20 66 6f 72 /);.. for
384a0 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c (var i = 0; i <
384b0 20 65 76 65 6e 74 73 2e 6c 65 6e 67 74 68 3b 20 events.length;
384c0 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 i++) {..
384d0 20 20 20 20 76 61 72 20 65 76 65 6e 74 4e 61 6d var eventNam
384e0 65 20 3d 20 65 76 65 6e 74 73 5b 69 5d 3b 0a 09 e = events[i];..
384f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
38500 21 74 68 69 73 2e 5f 65 76 65 6e 74 73 2e 68 61 !this._events.ha
38510 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 65 76 65 sOwnProperty(eve
38520 6e 74 4e 61 6d 65 29 29 20 7b 0a 09 20 20 20 20 ntName)) {..
38530 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
38540 2e 5f 65 76 65 6e 74 73 5b 65 76 65 6e 74 4e 61 ._events[eventNa
38550 6d 65 5d 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 me] = [];..
38560 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
38570 20 20 20 20 20 20 74 68 69 73 2e 5f 65 76 65 6e this._even
38580 74 73 5b 65 76 65 6e 74 4e 61 6d 65 5d 2e 70 75 ts[eventName].pu
38590 73 68 28 63 61 6c 6c 62 61 63 6b 29 3b 0a 09 20 sh(callback);..
385a0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
385b0 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
385c0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
385d0 09 09 20 2a 20 20 52 65 6d 6f 76 65 20 74 68 65 .. * Remove the
385e0 20 65 76 65 6e 74 20 6c 69 73 74 65 6e 65 72 2e event listener.
385f0 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
38600 53 74 72 69 6e 67 7d 20 20 20 20 65 76 65 6e 74 String} event
38610 20 20 20 20 20 54 68 65 20 65 76 65 6e 74 20 74 The event t
38620 6f 20 73 74 6f 70 20 6c 69 73 74 65 6e 69 6e 67 o stop listening
38630 20 74 6f 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 to.... * @para
38640 6d 20 20 7b 46 75 6e 63 74 69 6f 6e 3d 7d 20 20 m {Function=}
38650 63 61 6c 6c 62 61 63 6b 20 20 54 68 65 20 63 61 callback The ca
38660 6c 6c 62 61 63 6b 20 77 68 69 63 68 20 77 61 73 llback which was
38670 20 62 6f 75 6e 64 20 74 6f 20 0a 09 09 20 2a 20 bound to ... *
38680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
38690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
386a0 68 65 20 65 76 65 6e 74 20 77 69 74 68 20 54 6f he event with To
386b0 6e 65 2e 45 6d 69 74 74 65 72 2e 6f 6e 2e 0a 09 ne.Emitter.on...
386c0 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 . *
386d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
386e0 20 20 20 49 66 20 6e 6f 20 63 61 6c 6c 62 61 63 If no callbac
386f0 6b 20 69 73 20 67 69 76 65 6e 2c 20 61 6c 6c 20 k is given, all
38700 63 61 6c 6c 62 61 63 6b 73 0a 09 09 20 2a 20 20 callbacks... *
38710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
38720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 76 ev
38730 65 6e 74 73 20 61 72 65 20 72 65 6d 6f 76 65 64 ents are removed
38740 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 .... * @return
38750 20 7b 54 6f 6e 65 2e 45 6d 69 74 74 65 72 7d 20 {Tone.Emitter}
38760 20 20 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 this... */..
38770 20 20 20 54 6f 6e 65 2e 45 6d 69 74 74 65 72 2e Tone.Emitter.
38780 70 72 6f 74 6f 74 79 70 65 2e 6f 66 66 20 3d 20 prototype.off =
38790 66 75 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 2c function (event,
387a0 20 63 61 6c 6c 62 61 63 6b 29 20 7b 0a 09 20 20 callback) {..
387b0 20 20 20 20 20 20 76 61 72 20 65 76 65 6e 74 73 var events
387c0 20 3d 20 65 76 65 6e 74 2e 73 70 6c 69 74 28 2f = event.split(/
387d0 5c 57 2b 2f 29 3b 0a 09 20 20 20 20 20 20 20 20 \W+/);..
387e0 66 6f 72 20 28 76 61 72 20 65 76 20 3d 20 30 3b for (var ev = 0;
387f0 20 65 76 20 3c 20 65 76 65 6e 74 73 2e 6c 65 6e ev < events.len
38800 67 74 68 3b 20 65 76 2b 2b 29 20 7b 0a 09 20 20 gth; ev++) {..
38810 20 20 20 20 20 20 20 20 20 20 65 76 65 6e 74 20 event
38820 3d 20 65 76 65 6e 74 73 5b 65 76 5d 3b 0a 09 20 = events[ev];..
38830 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 if (t
38840 68 69 73 2e 5f 65 76 65 6e 74 73 2e 68 61 73 4f his._events.hasO
38850 77 6e 50 72 6f 70 65 72 74 79 28 65 76 65 6e 74 wnProperty(event
38860 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 )) {..
38870 20 20 20 20 20 20 69 66 20 28 54 6f 6e 65 2e 70 if (Tone.p
38880 72 6f 74 6f 74 79 70 65 2e 69 73 55 6e 64 65 66 rototype.isUndef
38890 28 63 61 6c 6c 62 61 63 6b 29 29 20 7b 0a 09 20 (callback)) {..
388a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
388b0 20 20 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 5b this._events[
388c0 65 76 65 6e 74 5d 20 3d 20 5b 5d 3b 0a 09 20 20 event] = [];..
388d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 }
388e0 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 else {..
388f0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
38900 65 76 65 6e 74 4c 69 73 74 20 3d 20 74 68 69 73 eventList = this
38910 2e 5f 65 76 65 6e 74 73 5b 65 76 65 6e 74 5d 3b ._events[event];
38920 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
38930 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 for (var i
38940 20 3d 20 30 3b 20 69 20 3c 20 65 76 65 6e 74 4c = 0; i < eventL
38950 69 73 74 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 ist.length; i++)
38960 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
38970 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
38980 65 76 65 6e 74 4c 69 73 74 5b 69 5d 20 3d 3d 3d eventList[i] ===
38990 20 63 61 6c 6c 62 61 63 6b 29 20 7b 0a 09 20 20 callback) {..
389a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
389b0 20 20 20 20 20 20 20 20 20 20 65 76 65 6e 74 4c eventL
389c0 69 73 74 2e 73 70 6c 69 63 65 28 69 2c 20 31 29 ist.splice(i, 1)
389d0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
389e0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
389f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
38a00 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
38a10 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
38a20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d }.. }
38a30 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
38a40 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
38a50 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 49 6e /**... * In
38a60 76 6f 6b 65 20 61 6c 6c 20 6f 66 20 74 68 65 20 voke all of the
38a70 63 61 6c 6c 62 61 63 6b 73 20 62 6f 75 6e 64 20 callbacks bound
38a80 74 6f 20 74 68 65 20 65 76 65 6e 74 0a 09 09 20 to the event...
38a90 2a 20 20 77 69 74 68 20 61 6e 79 20 61 72 67 75 * with any argu
38aa0 6d 65 6e 74 73 20 70 61 73 73 65 64 20 69 6e 2e ments passed in.
38ab0 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 ... * @param
38ac0 7b 53 74 72 69 6e 67 7d 20 20 65 76 65 6e 74 20 {String} event
38ad0 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 The name of the
38ae0 20 65 76 65 6e 74 2e 0a 09 09 20 2a 20 20 40 70 event.... * @p
38af0 61 72 61 6d 20 7b 2a 2e 2e 2e 7d 20 61 72 67 73 aram {*...} args
38b00 20 54 68 65 20 61 72 67 75 6d 65 6e 74 73 20 74 The arguments t
38b10 6f 20 70 61 73 73 20 74 6f 20 74 68 65 20 66 75 o pass to the fu
38b20 6e 63 74 69 6f 6e 73 20 6c 69 73 74 65 6e 69 6e nctions listenin
38b30 67 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e g.... * @return
38b40 20 20 7b 54 6f 6e 65 2e 45 6d 69 74 74 65 72 7d {Tone.Emitter}
38b50 20 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 this... */..
38b60 20 20 54 6f 6e 65 2e 45 6d 69 74 74 65 72 2e 70 Tone.Emitter.p
38b70 72 6f 74 6f 74 79 70 65 2e 65 6d 69 74 20 3d 20 rototype.emit =
38b80 66 75 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 29 function (event)
38b90 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
38ba0 74 68 69 73 2e 5f 65 76 65 6e 74 73 29 20 7b 0a this._events) {.
38bb0 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
38bc0 20 61 72 67 73 20 3d 20 41 72 72 61 79 2e 70 72 args = Array.pr
38bd0 6f 74 6f 74 79 70 65 2e 73 6c 69 63 65 2e 63 61 ototype.slice.ca
38be0 6c 6c 28 61 72 67 75 6d 65 6e 74 73 2c 20 31 29 ll(arguments, 1)
38bf0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 ;.. i
38c00 66 20 28 74 68 69 73 2e 5f 65 76 65 6e 74 73 2e f (this._events.
38c10 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 65 hasOwnProperty(e
38c20 76 65 6e 74 29 29 20 7b 0a 09 20 20 20 20 20 20 vent)) {..
38c30 20 20 20 20 20 20 20 20 20 20 76 61 72 20 65 76 var ev
38c40 65 6e 74 4c 69 73 74 20 3d 20 74 68 69 73 2e 5f entList = this._
38c50 65 76 65 6e 74 73 5b 65 76 65 6e 74 5d 3b 0a 09 events[event];..
38c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
38c70 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 2c 20 for (var i = 0,
38c80 6c 65 6e 20 3d 20 65 76 65 6e 74 4c 69 73 74 2e len = eventList.
38c90 6c 65 6e 67 74 68 3b 20 69 20 3c 20 6c 65 6e 3b length; i < len;
38ca0 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 i++) {..
38cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 76 65 eve
38cc0 6e 74 4c 69 73 74 5b 69 5d 2e 61 70 70 6c 79 28 ntList[i].apply(
38cd0 74 68 69 73 2c 20 61 72 67 73 29 3b 0a 09 20 20 this, args);..
38ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }.
38cf0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
38d00 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
38d10 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
38d20 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
38d30 0a 09 09 20 2a 20 20 41 64 64 20 45 6d 69 74 74 ... * Add Emitt
38d40 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 28 6f 6e er functions (on
38d50 2f 6f 66 66 2f 65 6d 69 74 29 20 74 6f 20 74 68 /off/emit) to th
38d60 65 20 6f 62 6a 65 63 74 0a 09 09 20 2a 20 20 40 e object... * @
38d70 70 61 72 61 6d 20 20 7b 4f 62 6a 65 63 74 7c 46 param {Object|F
38d80 75 6e 63 74 69 6f 6e 7d 20 20 6f 62 6a 65 63 74 unction} object
38d90 20 20 54 68 65 20 6f 62 6a 65 63 74 20 6f 72 20 The object or
38da0 63 6c 61 73 73 20 74 6f 20 65 78 74 65 6e 64 2e class to extend.
38db0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
38dc0 2e 45 6d 69 74 74 65 72 2e 6d 69 78 69 6e 20 3d .Emitter.mixin =
38dd0 20 66 75 6e 63 74 69 6f 6e 20 28 6f 62 6a 65 63 function (objec
38de0 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 t) {.. va
38df0 72 20 66 75 6e 63 74 69 6f 6e 73 20 3d 20 5b 0a r functions = [.
38e00 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6f 6e . 'on
38e10 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
38e20 27 6f 66 66 27 2c 0a 09 20 20 20 20 20 20 20 20 'off',..
38e30 20 20 20 20 27 65 6d 69 74 27 0a 09 20 20 20 20 'emit'..
38e40 20 20 20 20 5d 3b 0a 09 20 20 20 20 20 20 20 20 ];..
38e50 6f 62 6a 65 63 74 2e 5f 65 76 65 6e 74 73 20 3d object._events =
38e60 20 7b 7d 3b 0a 09 20 20 20 20 20 20 20 20 66 6f {};.. fo
38e70 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 r (var i = 0; i
38e80 3c 20 66 75 6e 63 74 69 6f 6e 73 2e 6c 65 6e 67 < functions.leng
38e90 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 th; i++) {..
38ea0 20 20 20 20 20 20 20 20 76 61 72 20 66 75 6e 63 var func
38eb0 20 3d 20 66 75 6e 63 74 69 6f 6e 73 5b 69 5d 3b = functions[i];
38ec0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
38ed0 72 20 65 6d 69 74 74 65 72 46 75 6e 63 20 3d 20 r emitterFunc =
38ee0 54 6f 6e 65 2e 45 6d 69 74 74 65 72 2e 70 72 6f Tone.Emitter.pro
38ef0 74 6f 74 79 70 65 5b 66 75 6e 63 5d 3b 0a 09 20 totype[func];..
38f00 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 objec
38f10 74 5b 66 75 6e 63 5d 20 3d 20 65 6d 69 74 74 65 t[func] = emitte
38f20 72 46 75 6e 63 3b 0a 09 20 20 20 20 20 20 20 20 rFunc;..
38f30 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f }.. };.. /
38f40 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 **... * Clean u
38f50 70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 p... * @return
38f60 20 7b 54 6f 6e 65 2e 45 6d 69 74 74 65 72 7d 20 {Tone.Emitter}
38f70 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
38f80 20 54 6f 6e 65 2e 45 6d 69 74 74 65 72 2e 70 72 Tone.Emitter.pr
38f90 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 ototype.dispose
38fa0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
38fb0 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 . Tone.pr
38fc0 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e ototype.dispose.
38fd0 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 call(this);..
38fe0 20 20 20 20 20 74 68 69 73 2e 5f 65 76 65 6e 74 this._event
38ff0 73 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 s = null;..
39000 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
39010 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 . };.. ret
39020 75 72 6e 20 54 6f 6e 65 2e 45 6d 69 74 74 65 72 urn Tone.Emitter
39030 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 ;..});..Module(f
39040 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b unction (Tone) {
39050 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a .. .. /**.
39060 09 09 20 2a 20 20 40 63 6c 61 73 73 20 20 41 20 .. * @class A
39070 73 61 6d 70 6c 65 20 61 63 63 75 72 61 74 65 20 sample accurate
39080 63 6c 6f 63 6b 20 77 68 69 63 68 20 70 72 6f 76 clock which prov
39090 69 64 65 73 20 61 20 63 61 6c 6c 62 61 63 6b 20 ides a callback
390a0 61 74 20 74 68 65 20 67 69 76 65 6e 20 72 61 74 at the given rat
390b0 65 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 e. ... *
390c0 20 20 57 68 69 6c 65 20 74 68 65 20 63 61 6c 6c While the call
390d0 62 61 63 6b 20 69 73 20 6e 6f 74 20 73 61 6d 70 back is not samp
390e0 6c 65 2d 61 63 63 75 72 61 74 65 20 28 69 74 20 le-accurate (it
390f0 69 73 20 73 74 69 6c 6c 20 73 75 73 63 65 70 74 is still suscept
39100 69 62 6c 65 20 74 6f 0a 09 09 20 2a 20 20 20 20 ible to... *
39110 20 20 20 20 20 20 6c 6f 6f 73 65 20 4a 53 20 74 loose JS t
39120 69 6d 69 6e 67 29 2c 20 74 68 65 20 74 69 6d 65 iming), the time
39130 20 70 61 73 73 65 64 20 69 6e 20 61 73 20 74 68 passed in as th
39140 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 e argument to th
39150 65 20 63 61 6c 6c 62 61 63 6b 0a 09 09 20 2a 20 e callback... *
39160 20 20 20 20 20 20 20 20 20 69 73 20 70 72 65 63 is prec
39170 69 73 65 2e 20 46 6f 72 20 6d 6f 73 74 20 61 70 ise. For most ap
39180 70 6c 69 63 61 74 69 6f 6e 73 2c 20 69 74 20 69 plications, it i
39190 73 20 62 65 74 74 65 72 20 74 6f 20 75 73 65 20 s better to use
391a0 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 0a 09 Tone.Transport..
391b0 09 20 2a 20 20 20 20 20 20 20 20 20 20 69 6e 73 . * ins
391c0 74 65 61 64 20 6f 66 20 74 68 65 20 43 6c 6f 63 tead of the Cloc
391d0 6b 20 62 79 20 69 74 73 65 6c 66 20 73 69 6e 63 k by itself sinc
391e0 65 20 79 6f 75 20 63 61 6e 20 73 79 6e 63 68 72 e you can synchr
391f0 6f 6e 69 7a 65 20 6d 75 6c 74 69 70 6c 65 20 63 onize multiple c
39200 61 6c 6c 62 61 63 6b 73 2e 0a 09 09 20 2a 0a 09 allbacks.... *..
39210 09 20 2a 20 09 40 63 6f 6e 73 74 72 75 63 74 6f . * .@constructo
39220 72 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 r... * @extends
39230 20 7b 54 6f 6e 65 2e 45 6d 69 74 74 65 72 7d 0a {Tone.Emitter}.
39240 09 09 20 2a 20 09 40 70 61 72 61 6d 20 7b 66 75 .. * .@param {fu
39250 6e 63 74 69 6f 6e 7d 20 63 61 6c 6c 62 61 63 6b nction} callback
39260 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f The callback to
39270 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 be invoked with
39280 20 74 68 65 20 74 69 6d 65 20 6f 66 20 74 68 65 the time of the
39290 20 61 75 64 69 6f 20 65 76 65 6e 74 0a 09 09 20 audio event...
392a0 2a 20 09 40 70 61 72 61 6d 20 7b 46 72 65 71 75 * .@param {Frequ
392b0 65 6e 63 79 7d 20 66 72 65 71 75 65 6e 63 79 20 ency} frequency
392c0 54 68 65 20 72 61 74 65 20 6f 66 20 74 68 65 20 The rate of the
392d0 63 61 6c 6c 62 61 63 6b 0a 09 09 20 2a 20 09 40 callback... * .@
392e0 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f 74 example... * //t
392f0 68 65 20 63 61 6c 6c 62 61 63 6b 20 77 69 6c 6c he callback will
39300 20 62 65 20 69 6e 76 6f 6b 65 64 20 61 70 70 72 be invoked appr
39310 6f 78 69 6d 61 74 65 6c 79 20 6f 6e 63 65 20 61 oximately once a
39320 20 73 65 63 6f 6e 64 0a 09 09 20 2a 20 2f 2f 61 second... * //a
39330 6e 64 20 77 69 6c 6c 20 70 72 69 6e 74 20 74 68 nd will print th
39340 65 20 74 69 6d 65 20 65 78 61 63 74 6c 79 20 6f e time exactly o
39350 6e 63 65 20 61 20 73 65 63 6f 6e 64 20 61 70 61 nce a second apa
39360 72 74 2e 0a 09 09 20 2a 20 76 61 72 20 63 6c 6f rt.... * var clo
39370 63 6b 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 6c ck = new Tone.Cl
39380 6f 63 6b 28 66 75 6e 63 74 69 6f 6e 28 74 69 6d ock(function(tim
39390 65 29 7b 0a 09 09 20 2a 20 09 63 6f 6e 73 6f 6c e){... * .consol
393a0 65 2e 6c 6f 67 28 74 69 6d 65 29 3b 0a 09 09 20 e.log(time);...
393b0 2a 20 7d 2c 20 31 29 3b 0a 09 09 20 2a 2f 0a 09 * }, 1);... */..
393c0 20 20 20 20 54 6f 6e 65 2e 43 6c 6f 63 6b 20 3d Tone.Clock =
393d0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
393e0 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 45 6d 69 Tone.Emi
393f0 74 74 65 72 2e 63 61 6c 6c 28 74 68 69 73 29 3b tter.call(this);
39400 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 .. var op
39410 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 tions = this.opt
39420 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d ionsObject(argum
39430 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 ents, [..
39440 20 20 20 20 20 27 63 61 6c 6c 62 61 63 6b 27 2c 'callback',
39450 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 66 .. 'f
39460 72 65 71 75 65 6e 63 79 27 0a 09 20 20 20 20 20 requency'..
39470 20 20 20 5d 2c 20 54 6f 6e 65 2e 43 6c 6f 63 6b ], Tone.Clock
39480 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 .defaults);..
39490 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
394a0 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e The callback fun
394b0 63 74 69 6f 6e 20 74 6f 20 69 6e 76 6f 6b 65 20 ction to invoke
394c0 61 74 20 74 68 65 20 73 63 68 65 64 75 6c 65 64 at the scheduled
394d0 20 74 69 63 6b 2e 0a 09 09 09 20 2a 20 20 40 74 tick..... * @t
394e0 79 70 65 20 20 7b 46 75 6e 63 74 69 6f 6e 7d 0a ype {Function}.
394f0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
39500 74 68 69 73 2e 63 61 6c 6c 62 61 63 6b 20 3d 20 this.callback =
39510 6f 70 74 69 6f 6e 73 2e 63 61 6c 6c 62 61 63 6b options.callback
39520 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
39530 09 09 20 2a 20 20 54 68 65 20 6e 65 78 74 20 74 .. * The next t
39540 69 6d 65 20 74 68 65 20 63 61 6c 6c 62 61 63 6b ime the callback
39550 20 69 73 20 73 63 68 65 64 75 6c 65 64 2e 0a 09 is scheduled...
39560 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e 75 6d .. * @type {Num
39570 62 65 72 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 ber}.... * @pri
39580 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
39590 20 20 20 20 20 74 68 69 73 2e 5f 6e 65 78 74 54 this._nextT
395a0 69 63 6b 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 ick = 0;..
395b0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
395c0 20 6c 61 73 74 20 73 74 61 74 65 20 6f 66 20 74 last state of t
395d0 68 65 20 63 6c 6f 63 6b 2e 0a 09 09 09 20 2a 20 he clock..... *
395e0 20 40 74 79 70 65 20 20 7b 53 74 61 74 65 7d 0a @type {State}.
395f0 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
39600 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
39610 74 68 69 73 2e 5f 6c 61 73 74 53 74 61 74 65 20 this._lastState
39620 3d 20 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 6f = Tone.State.Sto
39630 70 70 65 64 3b 0a 09 20 20 20 20 20 20 20 20 2f pped;.. /
39640 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 72 61 **.... * The ra
39650 74 65 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 te the callback
39660 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 function should
39670 62 65 20 69 6e 76 6f 6b 65 64 2e 20 0a 09 09 09 be invoked. ....
39680 20 2a 20 20 40 74 79 70 65 20 20 7b 42 50 4d 7d * @type {BPM}
39690 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a .... * @signal.
396a0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
396b0 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 20 3d this.frequency =
396c0 20 6e 65 77 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 new Tone.Timeli
396d0 6e 65 53 69 67 6e 61 6c 28 6f 70 74 69 6f 6e 73 neSignal(options
396e0 2e 66 72 65 71 75 65 6e 63 79 2c 20 54 6f 6e 65 .frequency, Tone
396f0 2e 54 79 70 65 2e 46 72 65 71 75 65 6e 63 79 29 .Type.Frequency)
39700 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
39710 5f 72 65 61 64 4f 6e 6c 79 28 27 66 72 65 71 75 _readOnly('frequ
39720 65 6e 63 79 27 29 3b 0a 09 20 20 20 20 20 20 20 ency');..
39730 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
39740 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 number of times
39750 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 77 61 73 the callback was
39760 20 69 6e 76 6f 6b 65 64 2e 20 53 74 61 72 74 73 invoked. Starts
39770 20 63 6f 75 6e 74 69 6e 67 20 61 74 20 30 0a 09 counting at 0..
39780 09 09 20 2a 20 20 61 6e 64 20 69 6e 63 72 65 6d .. * and increm
39790 65 6e 74 73 20 61 66 74 65 72 20 74 68 65 20 63 ents after the c
397a0 61 6c 6c 62 61 63 6b 20 77 61 73 20 69 6e 76 6f allback was invo
397b0 6b 65 64 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 ked. .... * @ty
397c0 70 65 20 7b 54 69 63 6b 73 7d 0a 09 09 09 20 2a pe {Ticks}.... *
397d0 20 20 40 72 65 61 64 4f 6e 6c 79 0a 09 09 09 20 @readOnly....
397e0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
397f0 2e 74 69 63 6b 73 20 3d 20 30 3b 0a 09 20 20 20 .ticks = 0;..
39800 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
39810 54 68 65 20 73 74 61 74 65 20 74 69 6d 65 6c 69 The state timeli
39820 6e 65 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 ne.... * @type
39830 7b 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 74 {Tone.TimelineSt
39840 61 74 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 ate}.... * @pri
39850 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
39860 20 20 20 20 20 74 68 69 73 2e 5f 73 74 61 74 65 this._state
39870 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 54 69 6d 65 = new Tone.Time
39880 6c 69 6e 65 53 74 61 74 65 28 54 6f 6e 65 2e 53 lineState(Tone.S
39890 74 61 74 65 2e 53 74 6f 70 70 65 64 29 3b 0a 09 tate.Stopped);..
398a0 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
398b0 2a 20 20 54 68 65 20 6c 6f 6f 70 20 66 75 6e 63 * The loop func
398c0 74 69 6f 6e 20 62 6f 75 6e 64 20 74 6f 20 69 74 tion bound to it
398d0 73 20 63 6f 6e 74 65 78 74 2e 20 0a 09 09 09 20 s context. ....
398e0 2a 20 20 54 68 69 73 20 69 73 20 6e 65 63 65 73 * This is neces
398f0 73 61 72 79 20 74 6f 20 72 65 6d 6f 76 65 20 74 sary to remove t
39900 68 65 20 65 76 65 6e 74 20 69 6e 20 74 68 65 20 he event in the
39910 65 6e 64 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 end..... * @typ
39920 65 20 7b 46 75 6e 63 74 69 6f 6e 7d 0a 09 09 09 e {Function}....
39930 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
39940 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
39950 73 2e 5f 62 6f 75 6e 64 4c 6f 6f 70 20 3d 20 74 s._boundLoop = t
39960 68 69 73 2e 5f 6c 6f 6f 70 2e 62 69 6e 64 28 74 his._loop.bind(t
39970 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f his);.. /
39980 2f 62 69 6e 64 20 61 20 63 61 6c 6c 62 61 63 6b /bind a callback
39990 20 74 6f 20 74 68 65 20 77 6f 72 6b 65 72 20 74 to the worker t
399a0 68 72 65 61 64 0a 09 20 20 20 20 20 20 20 20 54 hread.. T
399b0 6f 6e 65 2e 43 6c 6f 63 6b 2e 5f 77 6f 72 6b 65 one.Clock._worke
399c0 72 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e r.addEventListen
399d0 65 72 28 27 6d 65 73 73 61 67 65 27 2c 20 74 68 er('message', th
399e0 69 73 2e 5f 62 6f 75 6e 64 4c 6f 6f 70 29 3b 0a is._boundLoop);.
399f0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e . };.. Ton
39a00 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 43 6c e.extend(Tone.Cl
39a10 6f 63 6b 2c 20 54 6f 6e 65 2e 45 6d 69 74 74 65 ock, Tone.Emitte
39a20 72 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 r);.. /**...
39a30 2a 20 20 54 68 65 20 64 65 66 61 75 6c 74 73 0a * The defaults.
39a40 09 09 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 .. * @const...
39a50 2a 20 20 40 74 79 70 65 20 20 7b 4f 62 6a 65 63 * @type {Objec
39a60 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f t}... */.. To
39a70 6e 65 2e 43 6c 6f 63 6b 2e 64 65 66 61 75 6c 74 ne.Clock.default
39a80 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 27 s = {.. '
39a90 63 61 6c 6c 62 61 63 6b 27 3a 20 54 6f 6e 65 2e callback': Tone.
39aa0 6e 6f 4f 70 2c 0a 09 20 20 20 20 20 20 20 20 27 noOp,.. '
39ab0 66 72 65 71 75 65 6e 63 79 27 3a 20 31 2c 0a 09 frequency': 1,..
39ac0 20 20 20 20 20 20 20 20 27 6c 6f 6f 6b 41 68 65 'lookAhe
39ad0 61 64 27 3a 20 27 61 75 74 6f 27 0a 09 20 20 20 ad': 'auto'..
39ae0 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
39af0 2a 20 20 52 65 74 75 72 6e 73 20 74 68 65 20 70 * Returns the p
39b00 6c 61 79 62 61 63 6b 20 73 74 61 74 65 20 6f 66 layback state of
39b10 20 74 68 65 20 73 6f 75 72 63 65 2c 20 65 69 74 the source, eit
39b20 68 65 72 20 22 73 74 61 72 74 65 64 22 2c 20 22 her "started", "
39b30 73 74 6f 70 70 65 64 22 20 6f 72 20 22 70 61 75 stopped" or "pau
39b40 73 65 64 22 2e 0a 09 09 20 2a 20 20 40 74 79 70 sed".... * @typ
39b50 65 20 7b 54 6f 6e 65 2e 53 74 61 74 65 7d 0a 09 e {Tone.State}..
39b60 09 20 2a 20 20 40 72 65 61 64 4f 6e 6c 79 0a 09 . * @readOnly..
39b70 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 . * @memberOf T
39b80 6f 6e 65 2e 43 6c 6f 63 6b 23 0a 09 09 20 2a 20 one.Clock#... *
39b90 20 40 6e 61 6d 65 20 73 74 61 74 65 0a 09 09 20 @name state...
39ba0 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 */.. Object.d
39bb0 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f efineProperty(To
39bc0 6e 65 2e 43 6c 6f 63 6b 2e 70 72 6f 74 6f 74 79 ne.Clock.prototy
39bd0 70 65 2c 20 27 73 74 61 74 65 27 2c 20 7b 0a 09 pe, 'state', {..
39be0 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e get: fun
39bf0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
39c00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
39c10 68 69 73 2e 5f 73 74 61 74 65 2e 67 65 74 56 61 his._state.getVa
39c20 6c 75 65 41 74 54 69 6d 65 28 74 68 69 73 2e 6e lueAtTime(this.n
39c30 6f 77 28 29 29 3b 0a 09 20 20 20 20 20 20 20 20 ow());..
39c40 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
39c50 2f 2a 2a 0a 09 09 20 2a 20 20 53 74 61 72 74 20 /**... * Start
39c60 74 68 65 20 63 6c 6f 63 6b 20 61 74 20 74 68 65 the clock at the
39c70 20 67 69 76 65 6e 20 74 69 6d 65 2e 20 4f 70 74 given time. Opt
39c80 69 6f 6e 61 6c 6c 79 20 70 61 73 73 20 69 6e 20 ionally pass in
39c90 61 6e 20 6f 66 66 73 65 74 0a 09 09 20 2a 20 20 an offset... *
39ca0 6f 66 20 77 68 65 72 65 20 74 6f 20 73 74 61 72 of where to star
39cb0 74 20 74 68 65 20 74 69 63 6b 20 63 6f 75 6e 74 t the tick count
39cc0 65 72 20 66 72 6f 6d 2e 0a 09 09 20 2a 20 20 40 er from.... * @
39cd0 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 20 74 param {Time} t
39ce0 69 6d 65 20 20 20 20 54 68 65 20 74 69 6d 65 20 ime The time
39cf0 74 68 65 20 63 6c 6f 63 6b 20 73 68 6f 75 6c 64 the clock should
39d00 20 73 74 61 72 74 0a 09 09 20 2a 20 20 40 70 61 start... * @pa
39d10 72 61 6d 20 20 7b 54 69 63 6b 73 3d 7d 20 20 6f ram {Ticks=} o
39d20 66 66 73 65 74 20 20 57 68 65 72 65 20 74 68 65 ffset Where the
39d30 20 74 69 63 6b 20 63 6f 75 6e 74 65 72 20 73 74 tick counter st
39d40 61 72 74 73 20 63 6f 75 6e 74 69 6e 67 20 66 72 arts counting fr
39d50 6f 6d 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 om.... * @retur
39d60 6e 20 20 7b 54 6f 6e 65 2e 43 6c 6f 63 6b 7d 20 n {Tone.Clock}
39d70 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
39d80 20 54 6f 6e 65 2e 43 6c 6f 63 6b 2e 70 72 6f 74 Tone.Clock.prot
39d90 6f 74 79 70 65 2e 73 74 61 72 74 20 3d 20 66 75 otype.start = fu
39da0 6e 63 74 69 6f 6e 20 28 74 69 6d 65 2c 20 6f 66 nction (time, of
39db0 66 73 65 74 29 20 7b 0a 09 20 20 20 20 20 20 20 fset) {..
39dc0 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 time = this.toS
39dd0 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 econds(time);..
39de0 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e if (this.
39df0 5f 73 74 61 74 65 2e 67 65 74 56 61 6c 75 65 41 _state.getValueA
39e00 74 54 69 6d 65 28 74 69 6d 65 29 20 21 3d 3d 20 tTime(time) !==
39e10 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 61 72 74 Tone.State.Start
39e20 65 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ed) {..
39e30 20 20 20 74 68 69 73 2e 5f 73 74 61 74 65 2e 61 this._state.a
39e40 64 64 28 7b 0a 09 20 20 20 20 20 20 20 20 20 20 dd({..
39e50 20 20 20 20 20 20 27 73 74 61 74 65 27 3a 20 54 'state': T
39e60 6f 6e 65 2e 53 74 61 74 65 2e 53 74 61 72 74 65 one.State.Starte
39e70 64 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 d,..
39e80 20 20 20 20 27 74 69 6d 65 27 3a 20 74 69 6d 65 'time': time
39e90 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
39ea0 20 20 20 27 6f 66 66 73 65 74 27 3a 20 6f 66 66 'offset': off
39eb0 73 65 74 0a 09 20 20 20 20 20 20 20 20 20 20 20 set..
39ec0 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a });.. }.
39ed0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
39ee0 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
39ef0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 74 6f /**... * Sto
39f00 70 20 74 68 65 20 63 6c 6f 63 6b 2e 20 53 74 6f p the clock. Sto
39f10 70 70 69 6e 67 20 74 68 65 20 63 6c 6f 63 6b 20 pping the clock
39f20 72 65 73 65 74 73 20 74 68 65 20 74 69 63 6b 20 resets the tick
39f30 63 6f 75 6e 74 65 72 20 74 6f 20 30 2e 0a 09 09 counter to 0....
39f40 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 * @param {Time
39f50 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 54 68 65 } [time=now] The
39f60 20 74 69 6d 65 20 77 68 65 6e 20 74 68 65 20 63 time when the c
39f70 6c 6f 63 6b 20 73 68 6f 75 6c 64 20 73 74 6f 70 lock should stop
39f80 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 .... * @returns
39f90 20 7b 54 6f 6e 65 2e 43 6c 6f 63 6b 7d 20 74 68 {Tone.Clock} th
39fa0 69 73 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c is... * @exampl
39fb0 65 0a 09 09 20 2a 20 63 6c 6f 63 6b 2e 73 74 6f e... * clock.sto
39fc0 70 28 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 p();... */..
39fd0 54 6f 6e 65 2e 43 6c 6f 63 6b 2e 70 72 6f 74 6f Tone.Clock.proto
39fe0 74 79 70 65 2e 73 74 6f 70 20 3d 20 66 75 6e 63 type.stop = func
39ff0 74 69 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 tion (time) {..
3a000 20 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 time = th
3a010 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d is.toSeconds(tim
3a020 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 e);.. thi
3a030 73 2e 5f 73 74 61 74 65 2e 63 61 6e 63 65 6c 28 s._state.cancel(
3a040 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 time);..
3a050 74 68 69 73 2e 5f 73 74 61 74 65 2e 73 65 74 53 this._state.setS
3a060 74 61 74 65 41 74 54 69 6d 65 28 54 6f 6e 65 2e tateAtTime(Tone.
3a070 53 74 61 74 65 2e 53 74 6f 70 70 65 64 2c 20 74 State.Stopped, t
3a080 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 72 ime);.. r
3a090 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 eturn this;..
3a0a0 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
3a0b0 2a 20 20 50 61 75 73 65 20 74 68 65 20 63 6c 6f * Pause the clo
3a0c0 63 6b 2e 20 50 61 75 73 69 6e 67 20 64 6f 65 73 ck. Pausing does
3a0d0 20 6e 6f 74 20 72 65 73 65 74 20 74 68 65 20 74 not reset the t
3a0e0 69 63 6b 20 63 6f 75 6e 74 65 72 2e 0a 09 09 20 ick counter....
3a0f0 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d * @param {Time}
3a100 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 54 68 65 20 [time=now] The
3a110 74 69 6d 65 20 77 68 65 6e 20 74 68 65 20 63 6c time when the cl
3a120 6f 63 6b 20 73 68 6f 75 6c 64 20 73 74 6f 70 2e ock should stop.
3a130 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
3a140 7b 54 6f 6e 65 2e 43 6c 6f 63 6b 7d 20 74 68 69 {Tone.Clock} thi
3a150 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
3a160 65 2e 43 6c 6f 63 6b 2e 70 72 6f 74 6f 74 79 70 e.Clock.prototyp
3a170 65 2e 70 61 75 73 65 20 3d 20 66 75 6e 63 74 69 e.pause = functi
3a180 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 on (time) {..
3a190 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 73 time = this
3a1a0 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 29 .toSeconds(time)
3a1b0 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 ;.. if (t
3a1c0 68 69 73 2e 5f 73 74 61 74 65 2e 67 65 74 56 61 his._state.getVa
3a1d0 6c 75 65 41 74 54 69 6d 65 28 74 69 6d 65 29 20 lueAtTime(time)
3a1e0 3d 3d 3d 20 54 6f 6e 65 2e 53 74 61 74 65 2e 53 === Tone.State.S
3a1f0 74 61 72 74 65 64 29 20 7b 0a 09 20 20 20 20 20 tarted) {..
3a200 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 74 61 this._sta
3a210 74 65 2e 73 65 74 53 74 61 74 65 41 74 54 69 6d te.setStateAtTim
3a220 65 28 54 6f 6e 65 2e 53 74 61 74 65 2e 50 61 75 e(Tone.State.Pau
3a230 73 65 64 2c 20 74 69 6d 65 29 3b 0a 09 20 20 20 sed, time);..
3a240 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
3a250 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 return this;..
3a260 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
3a270 20 2a 20 20 54 68 65 20 73 63 68 65 64 75 6c 69 * The scheduli
3a280 6e 67 20 6c 6f 6f 70 2e 0a 09 09 20 2a 20 20 40 ng loop.... * @
3a290 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 param {Number}
3a2a0 20 74 69 6d 65 20 20 54 68 65 20 63 75 72 72 65 time The curre
3a2b0 6e 74 20 70 61 67 65 20 74 69 6d 65 20 73 74 61 nt page time sta
3a2c0 72 74 69 6e 67 20 66 72 6f 6d 20 30 0a 09 09 20 rting from 0...
3a2d0 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
3a2e0 20 20 20 20 20 20 20 20 20 20 20 77 68 65 6e 20 when
3a2f0 74 68 65 20 70 61 67 65 20 77 61 73 20 6c 6f 61 the page was loa
3a300 64 65 64 2e 0a 09 09 20 2a 20 20 40 70 72 69 76 ded.... * @priv
3a310 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ate... */.. T
3a320 6f 6e 65 2e 43 6c 6f 63 6b 2e 70 72 6f 74 6f 74 one.Clock.protot
3a330 79 70 65 2e 5f 6c 6f 6f 70 20 3d 20 66 75 6e 63 ype._loop = func
3a340 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
3a350 20 20 20 2f 2f 67 65 74 20 74 68 65 20 66 72 65 //get the fre
3a360 71 75 65 6e 63 79 20 76 61 6c 75 65 20 74 6f 20 quency value to
3a370 63 6f 6d 70 75 74 65 20 74 68 65 20 76 61 6c 75 compute the valu
3a380 65 20 6f 66 20 74 68 65 20 6e 65 78 74 20 6c 6f e of the next lo
3a390 6f 70 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 op.. var
3a3a0 6e 6f 77 20 3d 20 74 68 69 73 2e 6e 6f 77 28 29 now = this.now()
3a3b0 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 69 66 20 ;.. //if
3a3c0 69 74 27 73 20 73 74 61 72 74 65 64 0a 09 20 20 it's started..
3a3d0 20 20 20 20 20 20 76 61 72 20 6c 6f 6f 6b 41 68 var lookAh
3a3e0 65 61 64 20 3d 20 54 6f 6e 65 2e 43 6c 6f 63 6b ead = Tone.Clock
3a3f0 2e 6c 6f 6f 6b 41 68 65 61 64 3b 0a 09 20 20 20 .lookAhead;..
3a400 20 20 20 20 20 76 61 72 20 75 70 64 61 74 65 49 var updateI
3a410 6e 74 65 72 76 61 6c 20 3d 20 54 6f 6e 65 2e 43 nterval = Tone.C
3a420 6c 6f 63 6b 2e 75 70 64 61 74 65 49 6e 74 65 72 lock.updateInter
3a430 76 61 6c 3b 0a 09 20 20 20 20 20 20 20 20 76 61 val;.. va
3a440 72 20 6c 61 67 43 6f 6d 70 65 6e 73 61 74 69 6f r lagCompensatio
3a450 6e 20 3d 20 54 6f 6e 65 2e 43 6c 6f 63 6b 2e 6c n = Tone.Clock.l
3a460 61 67 20 2a 20 32 3b 0a 09 20 20 20 20 20 20 20 ag * 2;..
3a470 20 76 61 72 20 6c 6f 6f 70 49 6e 74 65 72 76 61 var loopInterva
3a480 6c 20 3d 20 6e 6f 77 20 2b 20 6c 6f 6f 6b 41 68 l = now + lookAh
3a490 65 61 64 20 2b 20 75 70 64 61 74 65 49 6e 74 65 ead + updateInte
3a4a0 72 76 61 6c 20 2b 20 6c 61 67 43 6f 6d 70 65 6e rval + lagCompen
3a4b0 73 61 74 69 6f 6e 3b 0a 09 20 20 20 20 20 20 20 sation;..
3a4c0 20 77 68 69 6c 65 20 28 6c 6f 6f 70 49 6e 74 65 while (loopInte
3a4d0 72 76 61 6c 20 3e 20 74 68 69 73 2e 5f 6e 65 78 rval > this._nex
3a4e0 74 54 69 63 6b 20 26 26 20 74 68 69 73 2e 5f 73 tTick && this._s
3a4f0 74 61 74 65 29 20 7b 0a 09 20 20 20 20 20 20 20 tate) {..
3a500 20 20 20 20 20 76 61 72 20 63 75 72 72 65 6e 74 var current
3a510 53 74 61 74 65 20 3d 20 74 68 69 73 2e 5f 73 74 State = this._st
3a520 61 74 65 2e 67 65 74 56 61 6c 75 65 41 74 54 69 ate.getValueAtTi
3a530 6d 65 28 74 68 69 73 2e 5f 6e 65 78 74 54 69 63 me(this._nextTic
3a540 6b 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 k);..
3a550 20 69 66 20 28 63 75 72 72 65 6e 74 53 74 61 74 if (currentStat
3a560 65 20 21 3d 3d 20 74 68 69 73 2e 5f 6c 61 73 74 e !== this._last
3a570 53 74 61 74 65 29 20 7b 0a 09 20 20 20 20 20 20 State) {..
3a580 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
3a590 6c 61 73 74 53 74 61 74 65 20 3d 20 63 75 72 72 lastState = curr
3a5a0 65 6e 74 53 74 61 74 65 3b 0a 09 20 20 20 20 20 entState;..
3a5b0 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 65 var e
3a5c0 76 65 6e 74 20 3d 20 74 68 69 73 2e 5f 73 74 61 vent = this._sta
3a5d0 74 65 2e 67 65 74 28 74 68 69 73 2e 5f 6e 65 78 te.get(this._nex
3a5e0 74 54 69 63 6b 29 3b 0a 09 20 20 20 20 20 20 20 tTick);..
3a5f0 20 20 20 20 20 20 20 20 20 2f 2f 20 65 6d 69 74 // emit
3a600 20 61 6e 20 65 76 65 6e 74 0a 09 20 20 20 20 20 an event..
3a610 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 if (c
3a620 75 72 72 65 6e 74 53 74 61 74 65 20 3d 3d 3d 20 urrentState ===
3a630 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 61 72 74 Tone.State.Start
3a640 65 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ed) {..
3a650 20 20 20 20 20 20 20 20 20 20 20 2f 2f 63 6f 72 //cor
3a660 72 65 63 74 20 74 68 65 20 74 69 6d 65 0a 09 20 rect the time..
3a670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3a680 20 20 20 74 68 69 73 2e 5f 6e 65 78 74 54 69 63 this._nextTic
3a690 6b 20 3d 20 65 76 65 6e 74 2e 74 69 6d 65 3b 0a k = event.time;.
3a6a0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3a6b0 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 69 if (!this.i
3a6c0 73 55 6e 64 65 66 28 65 76 65 6e 74 2e 6f 66 66 sUndef(event.off
3a6d0 73 65 74 29 29 20 7b 0a 09 20 20 20 20 20 20 20 set)) {..
3a6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3a6f0 20 74 68 69 73 2e 74 69 63 6b 73 20 3d 20 65 76 this.ticks = ev
3a700 65 6e 74 2e 6f 66 66 73 65 74 3b 0a 09 20 20 20 ent.offset;..
3a710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3a720 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
3a730 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 6d 69 this.emi
3a740 74 28 27 73 74 61 72 74 27 2c 20 65 76 65 6e 74 t('start', event
3a750 2e 74 69 6d 65 2c 20 74 68 69 73 2e 74 69 63 6b .time, this.tick
3a760 73 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 s);..
3a770 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
3a780 63 75 72 72 65 6e 74 53 74 61 74 65 20 3d 3d 3d currentState ===
3a790 20 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 6f 70 Tone.State.Stop
3a7a0 70 65 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ped) {..
3a7b0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
3a7c0 2e 74 69 63 6b 73 20 3d 20 30 3b 0a 09 20 20 20 .ticks = 0;..
3a7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3a7e0 20 74 68 69 73 2e 65 6d 69 74 28 27 73 74 6f 70 this.emit('stop
3a7f0 27 2c 20 65 76 65 6e 74 2e 74 69 6d 65 29 3b 0a ', event.time);.
3a800 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3a810 20 7d 20 65 6c 73 65 20 69 66 20 28 63 75 72 72 } else if (curr
3a820 65 6e 74 53 74 61 74 65 20 3d 3d 3d 20 54 6f 6e entState === Ton
3a830 65 2e 53 74 61 74 65 2e 50 61 75 73 65 64 29 20 e.State.Paused)
3a840 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
3a850 20 20 20 20 20 20 20 74 68 69 73 2e 65 6d 69 74 this.emit
3a860 28 27 70 61 75 73 65 27 2c 20 65 76 65 6e 74 2e ('pause', event.
3a870 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 time);..
3a880 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
3a890 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
3a8a0 20 20 20 20 20 20 76 61 72 20 74 69 63 6b 54 69 var tickTi
3a8b0 6d 65 20 3d 20 74 68 69 73 2e 5f 6e 65 78 74 54 me = this._nextT
3a8c0 69 63 6b 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ick;..
3a8d0 20 20 69 66 20 28 74 68 69 73 2e 66 72 65 71 75 if (this.frequ
3a8e0 65 6e 63 79 29 20 7b 0a 09 20 20 20 20 20 20 20 ency) {..
3a8f0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6e this._n
3a900 65 78 74 54 69 63 6b 20 2b 3d 20 31 20 2f 20 74 extTick += 1 / t
3a910 68 69 73 2e 66 72 65 71 75 65 6e 63 79 2e 67 65 his.frequency.ge
3a920 74 56 61 6c 75 65 41 74 54 69 6d 65 28 74 68 69 tValueAtTime(thi
3a930 73 2e 5f 6e 65 78 74 54 69 63 6b 29 3b 0a 09 20 s._nextTick);..
3a940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
3a950 66 20 28 63 75 72 72 65 6e 74 53 74 61 74 65 20 f (currentState
3a960 3d 3d 3d 20 54 6f 6e 65 2e 53 74 61 74 65 2e 53 === Tone.State.S
3a970 74 61 72 74 65 64 29 20 7b 0a 09 20 20 20 20 20 tarted) {..
3a980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
3a990 68 69 73 2e 63 61 6c 6c 62 61 63 6b 28 74 69 63 his.callback(tic
3a9a0 6b 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 kTime);..
3a9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
3a9c0 73 2e 74 69 63 6b 73 2b 2b 3b 0a 09 20 20 20 20 s.ticks++;..
3a9d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
3a9e0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
3a9f0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a }.. };.
3aa00 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 . /**... * R
3aa10 65 74 75 72 6e 73 20 74 68 65 20 73 63 68 65 64 eturns the sched
3aa20 75 6c 65 64 20 73 74 61 74 65 20 61 74 20 74 68 uled state at th
3aa30 65 20 67 69 76 65 6e 20 74 69 6d 65 2e 0a 09 09 e given time....
3aa40 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d * @param {Tim
3aa50 65 7d 20 20 74 69 6d 65 20 20 54 68 65 20 74 69 e} time The ti
3aa60 6d 65 20 74 6f 20 71 75 65 72 79 2e 0a 09 09 20 me to query....
3aa70 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 53 74 72 * @return {Str
3aa80 69 6e 67 7d 20 20 54 68 65 20 6e 61 6d 65 20 6f ing} The name o
3aa90 66 20 74 68 65 20 73 74 61 74 65 20 69 6e 70 75 f the state inpu
3aaa0 74 20 69 6e 20 73 65 74 53 74 61 74 65 41 74 54 t in setStateAtT
3aab0 69 6d 65 2e 0a 09 09 20 2a 20 20 40 65 78 61 6d ime.... * @exam
3aac0 70 6c 65 0a 09 09 20 2a 20 63 6c 6f 63 6b 2e 73 ple... * clock.s
3aad0 74 61 72 74 28 22 2b 30 2e 31 22 29 3b 0a 09 09 tart("+0.1");...
3aae0 20 2a 20 63 6c 6f 63 6b 2e 67 65 74 53 74 61 74 * clock.getStat
3aaf0 65 41 74 54 69 6d 65 28 22 2b 30 2e 31 22 29 3b eAtTime("+0.1");
3ab00 20 2f 2f 72 65 74 75 72 6e 73 20 22 73 74 61 72 //returns "star
3ab10 74 65 64 22 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ted"... */..
3ab20 54 6f 6e 65 2e 43 6c 6f 63 6b 2e 70 72 6f 74 6f Tone.Clock.proto
3ab30 74 79 70 65 2e 67 65 74 53 74 61 74 65 41 74 54 type.getStateAtT
3ab40 69 6d 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ime = function (
3ab50 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 time) {..
3ab60 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 time = this.toS
3ab70 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 econds(time);..
3ab80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
3ab90 69 73 2e 5f 73 74 61 74 65 2e 67 65 74 56 61 6c is._state.getVal
3aba0 75 65 41 74 54 69 6d 65 28 74 69 6d 65 29 3b 0a ueAtTime(time);.
3abb0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
3abc0 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 0a ... * Clean up.
3abd0 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
3abe0 54 6f 6e 65 2e 43 6c 6f 63 6b 7d 20 74 68 69 73 Tone.Clock} this
3abf0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
3ac00 2e 43 6c 6f 63 6b 2e 70 72 6f 74 6f 74 79 70 65 .Clock.prototype
3ac10 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 .dispose = funct
3ac20 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
3ac30 20 20 54 6f 6e 65 2e 45 6d 69 74 74 65 72 2e 70 Tone.Emitter.p
3ac40 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 rototype.dispose
3ac50 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 .call(this);..
3ac60 20 20 20 20 20 20 54 6f 6e 65 2e 43 6c 6f 63 6b Tone.Clock
3ac70 2e 5f 77 6f 72 6b 65 72 2e 72 65 6d 6f 76 65 45 ._worker.removeE
3ac80 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 27 6d 65 ventListener('me
3ac90 73 73 61 67 65 27 2c 20 74 68 69 73 2e 5f 62 6f ssage', this._bo
3aca0 75 6e 64 4c 6f 6f 70 29 3b 0a 09 20 20 20 20 20 undLoop);..
3acb0 20 20 20 74 68 69 73 2e 5f 77 72 69 74 61 62 6c this._writabl
3acc0 65 28 27 66 72 65 71 75 65 6e 63 79 27 29 3b 0a e('frequency');.
3acd0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 . this.fr
3ace0 65 71 75 65 6e 63 79 2e 64 69 73 70 6f 73 65 28 equency.dispose(
3acf0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
3ad00 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 6e 75 6c .frequency = nul
3ad10 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
3ad20 2e 5f 62 6f 75 6e 64 4c 6f 6f 70 20 3d 20 6e 75 ._boundLoop = nu
3ad30 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
3ad40 73 2e 5f 6e 65 78 74 54 69 63 6b 20 3d 20 49 6e s._nextTick = In
3ad50 66 69 6e 69 74 79 3b 0a 09 20 20 20 20 20 20 20 finity;..
3ad60 20 74 68 69 73 2e 63 61 6c 6c 62 61 63 6b 20 3d this.callback =
3ad70 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
3ad80 74 68 69 73 2e 5f 73 74 61 74 65 2e 64 69 73 70 this._state.disp
3ad90 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
3ada0 74 68 69 73 2e 5f 73 74 61 74 65 20 3d 20 6e 75 this._state = nu
3adb0 6c 6c 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 ll;.. };..
3adc0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ///////////////
3add0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3ade0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3adf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3ae00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 ////////////..
3ae10 20 20 2f 2f 20 57 4f 52 4b 45 52 0a 09 20 20 20 // WORKER..
3ae20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ///////////////
3ae30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3ae40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3ae50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3ae60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 ////////////..
3ae70 20 20 2f 2f 55 52 4c 20 53 68 69 6d 0a 09 20 20 //URL Shim..
3ae80 20 20 77 69 6e 64 6f 77 2e 55 52 4c 20 3d 20 77 window.URL = w
3ae90 69 6e 64 6f 77 2e 55 52 4c 20 7c 7c 20 77 69 6e indow.URL || win
3aea0 64 6f 77 2e 77 65 62 6b 69 74 55 52 4c 3b 0a 09 dow.webkitURL;..
3aeb0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 /**... * Th
3aec0 65 20 6d 69 6e 69 6d 75 6d 20 61 6d 6f 75 6e 74 e minimum amount
3aed0 20 6f 66 20 74 69 6d 65 20 65 76 65 6e 74 73 20 of time events
3aee0 61 72 65 20 0a 09 09 20 2a 20 20 73 63 68 65 64 are ... * sched
3aef0 75 6c 65 64 20 69 6e 20 61 64 76 61 6e 63 65 2e uled in advance.
3af00 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
3af10 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 4e 75 .. * @type {Nu
3af20 6d 62 65 72 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 mber}... */..
3af30 20 54 6f 6e 65 2e 43 6c 6f 63 6b 2e 5f 6c 6f 6f Tone.Clock._loo
3af40 6b 41 68 65 61 64 20 3d 20 30 2e 31 3b 0a 09 20 kAhead = 0.1;..
3af50 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 48 6f 77 /**... * How
3af60 20 6f 66 74 65 6e 20 74 68 65 20 77 6f 72 6b 65 often the worke
3af70 72 20 74 69 63 6b 73 0a 09 09 20 2a 20 20 40 74 r ticks... * @t
3af80 79 70 65 20 20 7b 53 65 63 6f 6e 64 73 7d 0a 09 ype {Seconds}..
3af90 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
3afa0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 43 6c */.. Tone.Cl
3afb0 6f 63 6b 2e 5f 75 70 64 61 74 65 49 6e 74 65 72 ock._updateInter
3afc0 76 61 6c 20 3d 20 54 6f 6e 65 2e 43 6c 6f 63 6b val = Tone.Clock
3afd0 2e 5f 6c 6f 6f 6b 41 68 65 61 64 20 2f 20 33 3b ._lookAhead / 3;
3afe0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
3aff0 54 68 65 20 73 63 72 69 70 74 20 77 68 69 63 68 The script which
3b000 20 72 75 6e 73 20 69 6e 20 61 20 77 65 62 20 77 runs in a web w
3b010 6f 72 6b 65 72 0a 09 09 20 2a 20 20 40 74 79 70 orker... * @typ
3b020 65 20 7b 42 6c 6f 62 7d 0a 09 09 20 2a 20 20 40 e {Blob}... * @
3b030 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 private... */..
3b040 20 20 20 76 61 72 20 62 6c 6f 62 20 3d 20 6e 65 var blob = ne
3b050 77 20 42 6c 6f 62 28 5b 2f 2f 74 68 65 20 69 6e w Blob([//the in
3b060 69 74 69 61 6c 20 74 69 6d 65 6f 75 74 20 74 69 itial timeout ti
3b070 6d 65 0a 09 20 20 20 20 20 20 20 20 27 76 61 72 me.. 'var
3b080 20 74 69 6d 65 6f 75 74 54 69 6d 65 20 3d 20 27 timeoutTime = '
3b090 20 2b 20 54 6f 6e 65 2e 43 6c 6f 63 6b 2e 5f 75 + Tone.Clock._u
3b0a0 70 64 61 74 65 49 6e 74 65 72 76 61 6c 20 2a 20 pdateInterval *
3b0b0 31 30 30 30 20 2b 20 27 3b 27 20 2b 20 2f 2f 6f 1000 + ';' + //o
3b0c0 6e 6d 65 73 73 61 67 65 20 63 61 6c 6c 62 61 63 nmessage callbac
3b0d0 6b 0a 09 20 20 20 20 20 20 20 20 27 73 65 6c 66 k.. 'self
3b0e0 2e 6f 6e 6d 65 73 73 61 67 65 20 3d 20 66 75 6e .onmessage = fun
3b0f0 63 74 69 6f 6e 28 6d 73 67 29 7b 27 20 2b 20 27 ction(msg){' + '
3b100 5c 74 74 69 6d 65 6f 75 74 54 69 6d 65 20 3d 20 \ttimeoutTime =
3b110 70 61 72 73 65 49 6e 74 28 6d 73 67 2e 64 61 74 parseInt(msg.dat
3b120 61 29 3b 27 20 2b 20 27 7d 3b 27 20 2b 20 2f 2f a);' + '};' + //
3b130 74 68 65 20 74 69 63 6b 20 66 75 6e 63 74 69 6f the tick functio
3b140 6e 20 77 68 69 63 68 20 70 6f 73 74 73 20 61 20 n which posts a
3b150 6d 65 73 73 61 67 65 0a 09 20 20 20 20 20 20 20 message..
3b160 20 2f 2f 61 6e 64 20 73 63 68 65 64 75 6c 65 73 //and schedules
3b170 20 61 20 6e 65 77 20 74 69 63 6b 0a 09 20 20 20 a new tick..
3b180 20 20 20 20 20 27 66 75 6e 63 74 69 6f 6e 20 74 'function t
3b190 69 63 6b 28 29 7b 27 20 2b 20 27 5c 74 73 65 74 ick(){' + '\tset
3b1a0 54 69 6d 65 6f 75 74 28 74 69 63 6b 2c 20 74 69 Timeout(tick, ti
3b1b0 6d 65 6f 75 74 54 69 6d 65 29 3b 27 20 2b 20 27 meoutTime);' + '
3b1c0 5c 74 73 65 6c 66 2e 70 6f 73 74 4d 65 73 73 61 \tself.postMessa
3b1d0 67 65 28 5c 27 74 69 63 6b 5c 27 29 3b 27 20 2b ge(\'tick\');' +
3b1e0 20 27 7d 27 20 2b 20 2f 2f 63 61 6c 6c 20 74 69 '}' + //call ti
3b1f0 63 6b 20 69 6e 69 74 69 61 6c 6c 79 0a 09 20 20 ck initially..
3b200 20 20 20 20 20 20 27 74 69 63 6b 28 29 3b 27 5d 'tick();']
3b210 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
3b220 20 20 43 72 65 61 74 65 20 61 20 62 6c 6f 62 20 Create a blob
3b230 75 72 6c 20 66 72 6f 6d 20 74 68 65 20 42 6c 6f url from the Blo
3b240 62 0a 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b b... * @type {
3b250 55 52 4c 7d 0a 09 09 20 2a 20 20 40 70 72 69 76 URL}... * @priv
3b260 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 76 ate... */.. v
3b270 61 72 20 62 6c 6f 62 55 72 6c 20 3d 20 55 52 4c ar blobUrl = URL
3b280 2e 63 72 65 61 74 65 4f 62 6a 65 63 74 55 52 4c .createObjectURL
3b290 28 62 6c 6f 62 29 3b 0a 09 20 20 20 20 2f 2a 2a (blob);.. /**
3b2a0 0a 09 09 20 2a 20 20 54 68 65 20 57 6f 72 6b 65 ... * The Worke
3b2b0 72 20 77 68 69 63 68 20 67 65 6e 65 72 61 74 65 r which generate
3b2c0 73 20 61 20 72 65 67 75 6c 61 72 20 63 61 6c 6c s a regular call
3b2d0 62 61 63 6b 0a 09 09 20 2a 20 20 40 74 79 70 65 back... * @type
3b2e0 20 7b 57 6f 72 6b 65 72 7d 0a 09 09 20 2a 20 20 {Worker}... *
3b2f0 40 70 72 69 76 61 74 65 0a 09 09 20 2a 20 20 40 @private... * @
3b300 73 74 61 74 69 63 0a 09 09 20 2a 2f 0a 09 20 20 static... */..
3b310 20 20 54 6f 6e 65 2e 43 6c 6f 63 6b 2e 5f 77 6f Tone.Clock._wo
3b320 72 6b 65 72 20 3d 20 6e 65 77 20 57 6f 72 6b 65 rker = new Worke
3b330 72 28 62 6c 6f 62 55 72 6c 29 3b 0a 09 20 20 20 r(blobUrl);..
3b340 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 70 72 69 76 /**... * @priv
3b350 61 74 65 0a 09 09 20 2a 20 20 40 74 79 70 65 20 ate... * @type
3b360 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 {Number}... *
3b370 54 68 65 20 74 69 6d 65 20 6f 66 20 74 68 65 20 The time of the
3b380 6c 61 73 74 20 75 70 64 61 74 65 0a 09 09 20 2a last update... *
3b390 2f 0a 09 20 20 20 20 76 61 72 20 6c 61 73 74 55 /.. var lastU
3b3a0 70 64 61 74 65 20 3d 20 2d 31 3b 0a 09 20 20 20 pdate = -1;..
3b3b0 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 63 /**... * The c
3b3c0 75 72 72 65 6e 74 20 63 6f 6d 70 75 74 65 64 20 urrent computed
3b3d0 75 70 64 61 74 65 20 72 61 74 65 20 6f 66 20 74 update rate of t
3b3e0 68 65 20 63 6c 6f 63 6b 2e 0a 09 09 20 2a 20 20 he clock.... *
3b3f0 40 74 79 70 65 20 20 7b 4e 75 6d 62 65 72 7d 0a @type {Number}.
3b400 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
3b410 09 20 2a 2f 0a 09 20 20 20 20 76 61 72 20 63 6f . */.. var co
3b420 6d 70 75 74 65 64 55 70 64 61 74 65 49 6e 74 65 mputedUpdateInte
3b430 72 76 61 6c 20 3d 20 30 3b 0a 09 20 20 20 20 2f rval = 0;.. /
3b440 2f 6c 69 73 74 65 6e 20 66 6f 72 20 6d 65 73 73 /listen for mess
3b450 61 67 65 20 65 76 65 6e 74 73 20 61 6e 64 20 75 age events and u
3b460 70 64 61 74 65 20 74 68 65 20 67 6c 6f 62 61 6c pdate the global
3b470 20 63 6c 6f 63 6b 20 6c 6f 6f 6b 61 68 65 61 64 clock lookahead
3b480 0a 09 20 20 20 20 54 6f 6e 65 2e 43 6c 6f 63 6b .. Tone.Clock
3b490 2e 5f 77 6f 72 6b 65 72 2e 61 64 64 45 76 65 6e ._worker.addEven
3b4a0 74 4c 69 73 74 65 6e 65 72 28 27 6d 65 73 73 61 tListener('messa
3b4b0 67 65 27 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 ge', function ()
3b4c0 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
3b4d0 6e 6f 77 20 3d 20 54 6f 6e 65 2e 6e 6f 77 28 29 now = Tone.now()
3b4e0 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 6c ;.. if (l
3b4f0 61 73 74 55 70 64 61 74 65 20 21 3d 3d 20 2d 31 astUpdate !== -1
3b500 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
3b510 20 76 61 72 20 64 69 66 66 20 3d 20 6e 6f 77 20 var diff = now
3b520 2d 20 6c 61 73 74 55 70 64 61 74 65 3b 0a 09 20 - lastUpdate;..
3b530 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 70 75 compu
3b540 74 65 64 55 70 64 61 74 65 49 6e 74 65 72 76 61 tedUpdateInterva
3b550 6c 20 3d 20 4d 61 74 68 2e 6d 61 78 28 64 69 66 l = Math.max(dif
3b560 66 2c 20 63 6f 6d 70 75 74 65 64 55 70 64 61 74 f, computedUpdat
3b570 65 49 6e 74 65 72 76 61 6c 20 2a 20 30 2e 39 37 eInterval * 0.97
3b580 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
3b590 20 20 20 20 20 20 20 6c 61 73 74 55 70 64 61 74 lastUpdat
3b5a0 65 20 3d 20 6e 6f 77 3b 0a 09 20 20 20 20 7d 29 e = now;.. })
3b5b0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
3b5c0 20 54 68 69 73 20 69 73 20 74 68 65 20 74 69 6d This is the tim
3b5d0 65 20 74 68 61 74 20 74 68 65 20 63 6c 6f 63 6b e that the clock
3b5e0 20 69 73 20 66 61 6c 6c 69 6e 67 20 62 65 68 69 is falling behi
3b5f0 6e 64 0a 09 09 20 2a 20 20 74 68 65 20 73 63 68 nd... * the sch
3b600 65 64 75 6c 65 64 20 75 70 64 61 74 65 20 69 6e eduled update in
3b610 74 65 72 76 61 6c 2e 20 54 68 65 20 43 6c 6f 63 terval. The Cloc
3b620 6b 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a k automatically.
3b630 09 09 20 2a 20 20 61 64 6a 75 73 74 73 20 66 6f .. * adjusts fo
3b640 72 20 74 68 65 20 6c 61 67 20 61 6e 64 20 73 63 r the lag and sc
3b650 68 65 64 75 6c 65 73 20 66 75 72 74 68 65 72 20 hedules further
3b660 69 6e 20 61 64 76 61 6e 63 65 2e 0a 09 09 20 2a in advance.... *
3b670 20 20 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d @type {Number}
3b680 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
3b690 20 54 6f 6e 65 2e 43 6c 6f 63 6b 0a 09 09 20 2a Tone.Clock... *
3b6a0 20 20 40 6e 61 6d 65 20 6c 61 67 0a 09 09 20 2a @name lag... *
3b6b0 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 @static... *
3b6c0 40 72 65 61 64 4f 6e 6c 79 0a 09 09 20 2a 2f 0a @readOnly... */.
3b6d0 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 . Object.defi
3b6e0 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e neProperty(Tone.
3b6f0 43 6c 6f 63 6b 2c 20 27 6c 61 67 27 2c 20 7b 0a Clock, 'lag', {.
3b700 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
3b710 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
3b720 20 20 20 20 20 20 20 20 20 76 61 72 20 64 69 66 var dif
3b730 66 20 3d 20 63 6f 6d 70 75 74 65 64 55 70 64 61 f = computedUpda
3b740 74 65 49 6e 74 65 72 76 61 6c 20 2d 20 54 6f 6e teInterval - Ton
3b750 65 2e 43 6c 6f 63 6b 2e 5f 75 70 64 61 74 65 49 e.Clock._updateI
3b760 6e 74 65 72 76 61 6c 3b 0a 09 20 20 20 20 20 20 nterval;..
3b770 20 20 20 20 20 20 64 69 66 66 20 3d 20 4d 61 74 diff = Mat
3b780 68 2e 6d 61 78 28 64 69 66 66 2c 20 30 29 3b 0a h.max(diff, 0);.
3b790 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
3b7a0 75 72 6e 20 64 69 66 66 3b 0a 09 20 20 20 20 20 urn diff;..
3b7b0 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
3b7c0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 /**... * The
3b7d0 20 61 6d 6f 75 6e 74 20 6f 66 20 74 69 6d 65 20 amount of time
3b7e0 69 6e 20 61 64 76 61 6e 63 65 20 74 68 61 74 20 in advance that
3b7f0 65 76 65 6e 74 73 20 61 72 65 20 73 63 68 65 64 events are sched
3b800 75 6c 65 64 2e 0a 09 09 20 2a 20 20 54 68 65 20 uled.... * The
3b810 6c 6f 6f 6b 41 68 65 61 64 20 77 69 6c 6c 20 61 lookAhead will a
3b820 64 6a 75 73 74 20 73 6c 69 67 68 74 6c 79 20 69 djust slightly i
3b830 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 n response to th
3b840 65 20 0a 09 09 20 2a 20 20 6d 65 61 73 75 72 65 e ... * measure
3b850 64 20 75 70 64 61 74 65 20 74 69 6d 65 20 74 6f d update time to
3b860 20 74 72 79 20 74 6f 20 61 76 6f 69 64 20 63 6c try to avoid cl
3b870 69 63 6b 73 2e 0a 09 09 20 2a 20 20 40 74 79 70 icks.... * @typ
3b880 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 e {Number}... *
3b890 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e @memberOf Tone.
3b8a0 43 6c 6f 63 6b 0a 09 09 20 2a 20 20 40 6e 61 6d Clock... * @nam
3b8b0 65 20 6c 6f 6f 6b 41 68 65 61 64 0a 09 09 20 2a e lookAhead... *
3b8c0 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a 2f 0a @static... */.
3b8d0 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 . Object.defi
3b8e0 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e neProperty(Tone.
3b8f0 43 6c 6f 63 6b 2c 20 27 6c 6f 6f 6b 41 68 65 61 Clock, 'lookAhea
3b900 64 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 d', {.. g
3b910 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
3b920 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
3b930 65 74 75 72 6e 20 54 6f 6e 65 2e 43 6c 6f 63 6b eturn Tone.Clock
3b940 2e 5f 6c 6f 6f 6b 41 68 65 61 64 3b 0a 09 20 20 ._lookAhead;..
3b950 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 },..
3b960 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 set: function
3b970 28 6c 41 29 20 7b 0a 09 20 20 20 20 20 20 20 20 (lA) {..
3b980 20 20 20 20 54 6f 6e 65 2e 43 6c 6f 63 6b 2e 5f Tone.Clock._
3b990 6c 6f 6f 6b 41 68 65 61 64 20 3d 20 6c 41 3b 0a lookAhead = lA;.
3b9a0 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
3b9b0 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 });.. /**...
3b9c0 2a 20 20 48 6f 77 20 6f 66 74 65 6e 20 74 68 65 * How often the
3b9d0 20 57 65 62 20 57 6f 72 6b 65 72 20 63 61 6c 6c Web Worker call
3b9e0 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 2e back is invoked.
3b9f0 0a 09 09 20 2a 20 20 54 68 69 73 20 6e 75 6d 62 ... * This numb
3ba00 65 72 20 63 6f 72 72 65 73 70 6f 6e 64 73 20 74 er corresponds t
3ba10 6f 20 68 6f 77 20 72 65 73 70 6f 6e 73 69 76 65 o how responsive
3ba20 20 74 68 65 20 73 63 68 65 64 75 6c 69 6e 67 0a the scheduling.
3ba30 09 09 20 2a 20 20 63 61 6e 20 62 65 2e 20 43 6c .. * can be. Cl
3ba40 6f 63 6b 2e 75 70 64 61 74 65 49 6e 74 65 72 76 ock.updateInterv
3ba50 61 6c 20 2b 20 43 6c 6f 63 6b 2e 6c 6f 6f 6b 41 al + Clock.lookA
3ba60 68 65 61 64 20 67 69 76 65 73 20 79 6f 75 20 74 head gives you t
3ba70 68 65 0a 09 09 20 2a 20 20 74 6f 74 61 6c 20 6c he... * total l
3ba80 61 74 65 6e 63 79 20 62 65 74 77 65 65 6e 20 73 atency between s
3ba90 63 68 65 64 75 6c 69 6e 67 20 61 6e 20 65 76 65 cheduling an eve
3baa0 6e 74 20 61 6e 64 20 68 65 61 72 69 6e 67 20 69 nt and hearing i
3bab0 74 2e 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b t.... * @type {
3bac0 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 6d Number}... * @m
3bad0 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 43 6c 6f emberOf Tone.Clo
3bae0 63 6b 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 75 ck... * @name u
3baf0 70 64 61 74 65 49 6e 74 65 72 76 61 6c 0a 09 09 pdateInterval...
3bb00 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a * @static... *
3bb10 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
3bb20 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
3bb30 65 2e 43 6c 6f 63 6b 2c 20 27 75 70 64 61 74 65 e.Clock, 'update
3bb40 49 6e 74 65 72 76 61 6c 27 2c 20 7b 0a 09 20 20 Interval', {..
3bb50 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
3bb60 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
3bb70 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e return Ton
3bb80 65 2e 43 6c 6f 63 6b 2e 5f 75 70 64 61 74 65 49 e.Clock._updateI
3bb90 6e 74 65 72 76 61 6c 3b 0a 09 20 20 20 20 20 20 nterval;..
3bba0 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
3bbb0 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 69 6e 74 t: function (int
3bbc0 65 72 76 61 6c 29 20 7b 0a 09 20 20 20 20 20 20 erval) {..
3bbd0 20 20 20 20 20 20 54 6f 6e 65 2e 43 6c 6f 63 6b Tone.Clock
3bbe0 2e 5f 75 70 64 61 74 65 49 6e 74 65 72 76 61 6c ._updateInterval
3bbf0 20 3d 20 4d 61 74 68 2e 6d 61 78 28 69 6e 74 65 = Math.max(inte
3bc00 72 76 61 6c 2c 20 30 2e 30 31 29 3b 0a 09 20 20 rval, 0.01);..
3bc10 20 20 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 43 Tone.C
3bc20 6c 6f 63 6b 2e 5f 77 6f 72 6b 65 72 2e 70 6f 73 lock._worker.pos
3bc30 74 4d 65 73 73 61 67 65 28 69 6e 74 65 72 76 61 tMessage(interva
3bc40 6c 20 2a 20 31 30 30 30 29 3b 0a 09 20 20 20 20 l * 1000);..
3bc50 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
3bc60 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 /**... * Th
3bc70 65 20 6c 61 74 65 6e 63 79 20 68 69 6e 74 0a 09 e latency hint..
3bc80 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
3bc90 20 2a 20 20 40 74 79 70 65 20 7b 53 74 72 69 6e * @type {Strin
3bca0 67 7c 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 2f 0a g|Number}... */.
3bcb0 09 20 20 20 20 76 61 72 20 6c 61 74 65 6e 63 79 . var latency
3bcc0 48 69 6e 74 20 3d 20 27 69 6e 74 65 72 61 63 74 Hint = 'interact
3bcd0 69 76 65 27 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 ive';.. /**..
3bce0 09 20 2a 20 20 54 68 65 20 74 79 70 65 20 6f 66 . * The type of
3bcf0 20 70 6c 61 79 62 61 63 6b 2c 20 77 68 69 63 68 playback, which
3bd00 20 61 66 66 65 63 74 73 20 74 72 61 64 65 6f 66 affects tradeof
3bd10 66 73 20 62 65 74 77 65 65 6e 20 61 75 64 69 6f fs between audio
3bd20 20 0a 09 09 20 2a 20 20 6f 75 74 70 75 74 20 6c ... * output l
3bd30 61 74 65 6e 63 79 20 61 6e 64 20 72 65 73 70 6f atency and respo
3bd40 6e 73 69 76 65 6e 65 73 73 2e 20 0a 09 09 20 2a nsiveness. ... *
3bd50 20 20 0a 09 09 20 2a 20 20 49 6e 20 61 64 64 69 ... * In addi
3bd60 74 69 6f 6e 20 74 6f 20 73 65 74 74 69 6e 67 20 tion to setting
3bd70 74 68 65 20 76 61 6c 75 65 20 69 6e 20 73 65 63 the value in sec
3bd80 6f 6e 64 73 2c 20 74 68 65 20 6c 61 74 65 6e 63 onds, the latenc
3bd90 79 48 69 6e 74 20 61 6c 73 6f 0a 09 09 20 2a 20 yHint also... *
3bda0 20 61 63 63 65 70 74 73 20 74 68 65 20 73 74 72 accepts the str
3bdb0 69 6e 67 73 20 22 69 6e 74 65 72 61 63 74 69 76 ings "interactiv
3bdc0 65 22 20 28 70 72 69 6f 72 69 74 69 7a 65 73 20 e" (prioritizes
3bdd0 6c 6f 77 20 6c 61 74 65 6e 63 79 29 2c 20 0a 09 low latency), ..
3bde0 09 20 2a 20 20 22 70 6c 61 79 62 61 63 6b 22 20 . * "playback"
3bdf0 28 70 72 69 6f 72 69 74 69 7a 65 73 20 73 75 73 (prioritizes sus
3be00 74 61 69 6e 65 64 20 70 6c 61 79 62 61 63 6b 29 tained playback)
3be10 2c 20 22 62 61 6c 61 6e 63 65 64 22 20 28 62 61 , "balanced" (ba
3be20 6c 61 6e 63 65 73 0a 09 09 20 2a 20 20 6c 61 74 lances... * lat
3be30 65 6e 63 79 20 61 6e 64 20 70 65 72 66 6f 72 6d ency and perform
3be40 61 6e 63 65 29 2c 20 61 6e 64 20 22 66 61 73 74 ance), and "fast
3be50 65 73 74 22 20 28 6c 6f 77 65 73 74 20 6c 61 74 est" (lowest lat
3be60 65 6e 63 79 2c 20 6d 69 67 68 74 20 67 6c 69 74 ency, might glit
3be70 63 68 20 6d 6f 72 65 20 6f 66 74 65 6e 29 2e 20 ch more often).
3be80 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 53 74 ... * @type {St
3be90 72 69 6e 67 7c 53 65 63 6f 6e 64 73 7d 0a 09 09 ring|Seconds}...
3bea0 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
3beb0 6e 65 2e 43 6c 6f 63 6b 23 0a 09 09 20 2a 20 20 ne.Clock#... *
3bec0 40 6e 61 6d 65 20 6c 61 74 65 6e 63 79 48 69 6e @name latencyHin
3bed0 74 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a t... * @static.
3bee0 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
3bef0 09 20 2a 20 2f 2f 73 65 74 20 74 68 65 20 6c 6f . * //set the lo
3bf00 6f 6b 41 68 65 61 64 20 74 6f 20 30 2e 33 20 73 okAhead to 0.3 s
3bf10 65 63 6f 6e 64 73 0a 09 09 20 2a 20 54 6f 6e 65 econds... * Tone
3bf20 2e 43 6c 6f 63 6b 2e 6c 61 74 65 6e 63 79 48 69 .Clock.latencyHi
3bf30 6e 74 20 3d 20 30 2e 33 3b 0a 09 09 20 2a 2f 0a nt = 0.3;... */.
3bf40 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 . Object.defi
3bf50 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e neProperty(Tone.
3bf60 43 6c 6f 63 6b 2c 20 27 6c 61 74 65 6e 63 79 48 Clock, 'latencyH
3bf70 69 6e 74 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 int', {..
3bf80 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
3bf90 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
3bfa0 20 72 65 74 75 72 6e 20 6c 61 74 65 6e 63 79 48 return latencyH
3bfb0 69 6e 74 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c int;.. },
3bfc0 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 .. set: f
3bfd0 75 6e 63 74 69 6f 6e 20 28 68 69 6e 74 29 20 7b unction (hint) {
3bfe0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
3bff0 72 20 6c 6f 6f 6b 41 68 65 61 64 20 3d 20 68 69 r lookAhead = hi
3c000 6e 74 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 nt;..
3c010 20 6c 61 74 65 6e 63 79 48 69 6e 74 20 3d 20 68 latencyHint = h
3c020 69 6e 74 3b 0a 09 20 20 20 20 20 20 20 20 20 20 int;..
3c030 20 20 69 66 20 28 54 6f 6e 65 2e 70 72 6f 74 6f if (Tone.proto
3c040 74 79 70 65 2e 69 73 53 74 72 69 6e 67 28 68 69 type.isString(hi
3c050 6e 74 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 nt)) {..
3c060 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 switch (
3c070 68 69 6e 74 29 20 7b 0a 09 20 20 20 20 20 20 20 hint) {..
3c080 20 20 20 20 20 20 20 20 20 63 61 73 65 20 27 69 case 'i
3c090 6e 74 65 72 61 63 74 69 76 65 27 3a 0a 09 20 20 nteractive':..
3c0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3c0b0 20 20 6c 6f 6f 6b 41 68 65 61 64 20 3d 20 30 2e lookAhead = 0.
3c0c0 31 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 1;..
3c0d0 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 63 6f 6e Tone.con
3c0e0 74 65 78 74 2e 6c 61 74 65 6e 63 79 48 69 6e 74 text.latencyHint
3c0f0 20 3d 20 68 69 6e 74 3b 0a 09 20 20 20 20 20 20 = hint;..
3c100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
3c110 65 61 6b 3b 0a 09 20 20 20 20 20 20 20 20 20 20 eak;..
3c120 20 20 20 20 20 20 63 61 73 65 20 27 70 6c 61 79 case 'play
3c130 62 61 63 6b 27 3a 0a 09 20 20 20 20 20 20 20 20 back':..
3c140 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6f 6b look
3c150 41 68 65 61 64 20 3d 20 30 2e 38 3b 0a 09 20 20 Ahead = 0.8;..
3c160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3c170 20 20 54 6f 6e 65 2e 63 6f 6e 74 65 78 74 2e 6c Tone.context.l
3c180 61 74 65 6e 63 79 48 69 6e 74 20 3d 20 68 69 6e atencyHint = hin
3c190 74 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 t;..
3c1a0 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 09 break;..
3c1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3c1c0 63 61 73 65 20 27 62 61 6c 61 6e 63 65 64 27 3a case 'balanced':
3c1d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
3c1e0 20 20 20 20 20 20 6c 6f 6f 6b 41 68 65 61 64 20 lookAhead
3c1f0 3d 20 30 2e 32 35 3b 0a 09 20 20 20 20 20 20 20 = 0.25;..
3c200 20 20 20 20 20 20 20 20 20 20 20 20 20 54 6f 6e Ton
3c210 65 2e 63 6f 6e 74 65 78 74 2e 6c 61 74 65 6e 63 e.context.latenc
3c220 79 48 69 6e 74 20 3d 20 68 69 6e 74 3b 0a 09 20 yHint = hint;..
3c230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3c240 20 20 20 62 72 65 61 6b 3b 0a 09 20 20 20 20 20 break;..
3c250 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case
3c260 27 66 61 73 74 65 73 74 27 3a 0a 09 20 20 20 20 'fastest':..
3c270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3c280 6c 6f 6f 6b 41 68 65 61 64 20 3d 20 30 2e 30 31 lookAhead = 0.01
3c290 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
3c2a0 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 09 20 break;..
3c2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
3c2c0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
3c2d0 09 20 20 20 20 20 20 20 20 20 20 20 20 54 6f 6e . Ton
3c2e0 65 2e 43 6c 6f 63 6b 2e 6c 6f 6f 6b 41 68 65 61 e.Clock.lookAhea
3c2f0 64 20 3d 20 6c 6f 6f 6b 41 68 65 61 64 3b 0a 09 d = lookAhead;..
3c300 20 20 20 20 20 20 20 20 20 20 20 20 54 6f 6e 65 Tone
3c310 2e 43 6c 6f 63 6b 2e 75 70 64 61 74 65 49 6e 74 .Clock.updateInt
3c320 65 72 76 61 6c 20 3d 20 6c 6f 6f 6b 41 68 65 61 erval = lookAhea
3c330 64 20 2f 20 33 3b 0a 09 20 20 20 20 20 20 20 20 d / 3;..
3c340 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
3c350 54 6f 6e 65 2e 5f 69 6e 69 74 41 75 64 69 6f 43 Tone._initAudioC
3c360 6f 6e 74 65 78 74 28 66 75 6e 63 74 69 6f 6e 20 ontext(function
3c370 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 6c 61 () {.. la
3c380 73 74 55 70 64 61 74 65 20 3d 20 2d 31 3b 0a 09 stUpdate = -1;..
3c390 20 20 20 20 20 20 20 20 63 6f 6d 70 75 74 65 64 computed
3c3a0 55 70 64 61 74 65 49 6e 74 65 72 76 61 6c 20 3d UpdateInterval =
3c3b0 20 30 3b 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 0;.. });..
3c3c0 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 43 6c return Tone.Cl
3c3d0 6f 63 6b 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c ock;..});..Modul
3c3e0 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 e(function (Tone
3c3f0 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f ) {.. .. /
3c400 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 **... * @class
3c410 53 69 6d 69 6c 61 72 20 74 6f 20 54 6f 6e 65 2e Similar to Tone.
3c420 54 69 6d 65 6c 69 6e 65 2c 20 62 75 74 20 61 6c Timeline, but al
3c430 6c 20 65 76 65 6e 74 73 20 72 65 70 72 65 73 65 l events represe
3c440 6e 74 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 nt... *
3c450 69 6e 74 65 72 76 61 6c 73 20 77 69 74 68 20 62 intervals with b
3c460 6f 74 68 20 22 74 69 6d 65 22 20 61 6e 64 20 22 oth "time" and "
3c470 64 75 72 61 74 69 6f 6e 22 20 74 69 6d 65 73 2e duration" times.
3c480 20 54 68 65 20 0a 09 09 20 2a 20 20 20 20 20 20 The ... *
3c490 20 20 20 65 76 65 6e 74 73 20 61 72 65 20 70 6c events are pl
3c4a0 61 63 65 64 20 69 6e 20 61 20 74 72 65 65 20 73 aced in a tree s
3c4b0 74 72 75 63 74 75 72 65 20 6f 70 74 69 6d 69 7a tructure optimiz
3c4c0 65 64 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 ed... *
3c4d0 66 6f 72 20 71 75 65 72 79 69 6e 67 20 61 6e 20 for querying an
3c4e0 69 6e 74 65 72 73 65 63 74 69 6f 6e 20 70 6f 69 intersection poi
3c4f0 6e 74 20 77 69 74 68 20 74 68 65 20 74 69 6d 65 nt with the time
3c500 6c 69 6e 65 0a 09 09 20 2a 20 20 20 20 20 20 20 line... *
3c510 20 20 65 76 65 6e 74 73 2e 20 49 6e 74 65 72 6e events. Intern
3c520 61 6c 6c 79 20 75 73 65 73 20 61 6e 20 5b 49 6e ally uses an [In
3c530 74 65 72 76 61 6c 20 54 72 65 65 5d 28 68 74 74 terval Tree](htt
3c540 70 73 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 ps://en.wikipedi
3c550 61 2e 6f 72 67 2f 77 69 6b 69 2f 49 6e 74 65 72 a.org/wiki/Inter
3c560 76 61 6c 5f 74 72 65 65 29 0a 09 09 20 2a 20 20 val_tree)... *
3c570 20 20 20 20 20 20 20 74 6f 20 72 65 70 72 65 73 to repres
3c580 65 6e 74 20 74 68 65 20 64 61 74 61 2e 0a 09 09 ent the data....
3c590 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f * @extends {To
3c5a0 6e 65 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ne}... */.. T
3c5b0 6f 6e 65 2e 49 6e 74 65 72 76 61 6c 54 69 6d 65 one.IntervalTime
3c5c0 6c 69 6e 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 line = function
3c5d0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f 2a () {.. /*
3c5e0 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 72 6f 6f *.... * The roo
3c5f0 74 20 6e 6f 64 65 20 6f 66 20 74 68 65 20 69 6e t node of the in
3c600 74 65 76 61 6c 20 74 72 65 65 0a 09 09 09 20 2a teval tree.... *
3c610 20 20 40 74 79 70 65 20 20 7b 49 6e 74 65 72 76 @type {Interv
3c620 61 6c 4e 6f 64 65 7d 0a 09 09 09 20 2a 20 20 40 alNode}.... * @
3c630 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
3c640 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 6f this._ro
3c650 6f 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 ot = null;..
3c660 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 4b /**.... * K
3c670 65 65 70 20 74 72 61 63 6b 20 6f 66 20 74 68 65 eep track of the
3c680 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 74 length of the t
3c690 69 6d 65 6c 69 6e 65 2e 0a 09 09 09 20 2a 20 20 imeline..... *
3c6a0 40 74 79 70 65 20 20 7b 4e 75 6d 62 65 72 7d 0a @type {Number}.
3c6b0 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
3c6c0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
3c6d0 74 68 69 73 2e 5f 6c 65 6e 67 74 68 20 3d 20 30 this._length = 0
3c6e0 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 ;.. };.. T
3c6f0 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e one.extend(Tone.
3c700 49 6e 74 65 72 76 61 6c 54 69 6d 65 6c 69 6e 65 IntervalTimeline
3c710 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
3c720 20 20 54 68 65 20 65 76 65 6e 74 20 74 6f 20 61 The event to a
3c730 64 64 20 74 6f 20 74 68 65 20 74 69 6d 65 6c 69 dd to the timeli
3c740 6e 65 2e 20 41 6c 6c 20 65 76 65 6e 74 73 20 6d ne. All events m
3c750 75 73 74 20 0a 09 09 20 2a 20 20 68 61 76 65 20 ust ... * have
3c760 61 20 74 69 6d 65 20 61 6e 64 20 64 75 72 61 74 a time and durat
3c770 69 6f 6e 20 76 61 6c 75 65 0a 09 09 20 2a 20 20 ion value... *
3c780 40 70 61 72 61 6d 20 20 7b 4f 62 6a 65 63 74 7d @param {Object}
3c790 20 20 65 76 65 6e 74 20 20 54 68 65 20 65 76 65 event The eve
3c7a0 6e 74 20 74 6f 20 61 64 64 20 74 6f 20 74 68 65 nt to add to the
3c7b0 20 74 69 6d 65 6c 69 6e 65 0a 09 09 20 2a 20 20 timeline... *
3c7c0 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 49 @return {Tone.I
3c7d0 6e 74 65 72 76 61 6c 54 69 6d 65 6c 69 6e 65 7d ntervalTimeline}
3c7e0 20 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 this... */..
3c7f0 20 20 54 6f 6e 65 2e 49 6e 74 65 72 76 61 6c 54 Tone.IntervalT
3c800 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f 74 79 70 imeline.prototyp
3c810 65 2e 61 64 64 20 3d 20 66 75 6e 63 74 69 6f 6e e.add = function
3c820 20 28 65 76 65 6e 74 29 20 7b 0a 09 20 20 20 20 (event) {..
3c830 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 55 if (this.isU
3c840 6e 64 65 66 28 65 76 65 6e 74 2e 74 69 6d 65 29 ndef(event.time)
3c850 20 7c 7c 20 74 68 69 73 2e 69 73 55 6e 64 65 66 || this.isUndef
3c860 28 65 76 65 6e 74 2e 64 75 72 61 74 69 6f 6e 29 (event.duration)
3c870 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
3c880 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 throw new Error
3c890 28 27 54 6f 6e 65 2e 49 6e 74 65 72 76 61 6c 54 ('Tone.IntervalT
3c8a0 69 6d 65 6c 69 6e 65 3a 20 65 76 65 6e 74 73 20 imeline: events
3c8b0 6d 75 73 74 20 68 61 76 65 20 74 69 6d 65 20 61 must have time a
3c8c0 6e 64 20 64 75 72 61 74 69 6f 6e 20 70 61 72 61 nd duration para
3c8d0 6d 65 74 65 72 73 27 29 3b 0a 09 20 20 20 20 20 meters');..
3c8e0 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 76 61 }.. va
3c8f0 72 20 6e 6f 64 65 20 3d 20 6e 65 77 20 49 6e 74 r node = new Int
3c900 65 72 76 61 6c 4e 6f 64 65 28 65 76 65 6e 74 2e ervalNode(event.
3c910 74 69 6d 65 2c 20 65 76 65 6e 74 2e 74 69 6d 65 time, event.time
3c920 20 2b 20 65 76 65 6e 74 2e 64 75 72 61 74 69 6f + event.duratio
3c930 6e 2c 20 65 76 65 6e 74 29 3b 0a 09 20 20 20 20 n, event);..
3c940 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 72 6f if (this._ro
3c950 6f 74 20 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 ot === null) {..
3c960 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
3c970 2e 5f 72 6f 6f 74 20 3d 20 6e 6f 64 65 3b 0a 09 ._root = node;..
3c980 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
3c990 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
3c9a0 69 73 2e 5f 72 6f 6f 74 2e 69 6e 73 65 72 74 28 is._root.insert(
3c9b0 6e 6f 64 65 29 3b 0a 09 20 20 20 20 20 20 20 20 node);..
3c9c0 7d 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e }.. this.
3c9d0 5f 6c 65 6e 67 74 68 2b 2b 3b 0a 09 20 20 20 20 _length++;..
3c9e0 20 20 20 20 2f 2f 20 52 65 73 74 72 75 63 74 75 // Restructu
3c9f0 72 65 20 74 72 65 65 20 74 6f 20 62 65 20 62 61 re tree to be ba
3ca00 6c 61 6e 63 65 64 0a 09 20 20 20 20 20 20 20 20 lanced..
3ca10 77 68 69 6c 65 20 28 6e 6f 64 65 20 21 3d 3d 20 while (node !==
3ca20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 null) {..
3ca30 20 20 20 20 20 6e 6f 64 65 2e 75 70 64 61 74 65 node.update
3ca40 48 65 69 67 68 74 28 29 3b 0a 09 20 20 20 20 20 Height();..
3ca50 20 20 20 20 20 20 20 6e 6f 64 65 2e 75 70 64 61 node.upda
3ca60 74 65 4d 61 78 28 29 3b 0a 09 20 20 20 20 20 20 teMax();..
3ca70 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 62 61 this._reba
3ca80 6c 61 6e 63 65 28 6e 6f 64 65 29 3b 0a 09 20 20 lance(node);..
3ca90 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d node =
3caa0 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a 09 20 node.parent;..
3cab0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
3cac0 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
3cad0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
3cae0 09 09 20 2a 20 20 52 65 6d 6f 76 65 20 61 6e 20 .. * Remove an
3caf0 65 76 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 74 event from the t
3cb00 69 6d 65 6c 69 6e 65 2e 0a 09 09 20 2a 20 20 40 imeline.... * @
3cb10 70 61 72 61 6d 20 20 7b 4f 62 6a 65 63 74 7d 20 param {Object}
3cb20 20 65 76 65 6e 74 20 20 54 68 65 20 65 76 65 6e event The even
3cb30 74 20 74 6f 20 72 65 6d 6f 76 65 20 66 72 6f 6d t to remove from
3cb40 20 74 68 65 20 74 69 6d 65 6c 69 6e 65 0a 09 09 the timeline...
3cb50 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 6f * @return {To
3cb60 6e 65 2e 49 6e 74 65 72 76 61 6c 54 69 6d 65 6c ne.IntervalTimel
3cb70 69 6e 65 7d 20 20 74 68 69 73 0a 09 09 20 2a 2f ine} this... */
3cb80 0a 09 20 20 20 20 54 6f 6e 65 2e 49 6e 74 65 72 .. Tone.Inter
3cb90 76 61 6c 54 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 valTimeline.prot
3cba0 6f 74 79 70 65 2e 72 65 6d 6f 76 65 20 3d 20 66 otype.remove = f
3cbb0 75 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 29 20 unction (event)
3cbc0 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 {.. if (t
3cbd0 68 69 73 2e 5f 72 6f 6f 74 20 21 3d 3d 20 6e 75 his._root !== nu
3cbe0 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ll) {..
3cbf0 20 20 20 76 61 72 20 72 65 73 75 6c 74 73 20 3d var results =
3cc00 20 5b 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 [];..
3cc10 20 20 74 68 69 73 2e 5f 72 6f 6f 74 2e 73 65 61 this._root.sea
3cc20 72 63 68 28 65 76 65 6e 74 2e 74 69 6d 65 2c 20 rch(event.time,
3cc30 72 65 73 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 results);..
3cc40 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 for (var
3cc50 69 20 3d 20 30 3b 20 69 20 3c 20 72 65 73 75 6c i = 0; i < resul
3cc60 74 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 ts.length; i++)
3cc70 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
3cc80 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 72 65 var node = re
3cc90 73 75 6c 74 73 5b 69 5d 3b 0a 09 20 20 20 20 20 sults[i];..
3cca0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e if (n
3ccb0 6f 64 65 2e 65 76 65 6e 74 20 3d 3d 3d 20 65 76 ode.event === ev
3ccc0 65 6e 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ent) {..
3ccd0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
3cce0 2e 5f 72 65 6d 6f 76 65 4e 6f 64 65 28 6e 6f 64 ._removeNode(nod
3ccf0 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e);..
3cd00 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c this._l
3cd10 65 6e 67 74 68 2d 2d 3b 0a 09 20 20 20 20 20 20 ength--;..
3cd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
3cd30 65 61 6b 3b 0a 09 20 20 20 20 20 20 20 20 20 20 eak;..
3cd40 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
3cd50 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
3cd60 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 }.. retur
3cd70 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
3cd80 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 . /**... * T
3cd90 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 he number of ite
3cda0 6d 73 20 69 6e 20 74 68 65 20 74 69 6d 65 6c 69 ms in the timeli
3cdb0 6e 65 2e 0a 09 09 20 2a 20 20 40 74 79 70 65 20 ne.... * @type
3cdc0 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 {Number}... * @
3cdd0 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 49 6e memberOf Tone.In
3cde0 74 65 72 76 61 6c 54 69 6d 65 6c 69 6e 65 23 0a tervalTimeline#.
3cdf0 09 09 20 2a 20 20 40 6e 61 6d 65 20 6c 65 6e 67 .. * @name leng
3ce00 74 68 0a 09 09 20 2a 20 20 40 72 65 61 64 4f 6e th... * @readOn
3ce10 6c 79 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 ly... */.. Ob
3ce20 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
3ce30 72 74 79 28 54 6f 6e 65 2e 49 6e 74 65 72 76 61 rty(Tone.Interva
3ce40 6c 54 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f 74 lTimeline.protot
3ce50 79 70 65 2c 20 27 6c 65 6e 67 74 68 27 2c 20 7b ype, 'length', {
3ce60 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 .. get: f
3ce70 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
3ce80 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
3ce90 20 74 68 69 73 2e 5f 6c 65 6e 67 74 68 3b 0a 09 this._length;..
3cea0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
3ceb0 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
3cec0 20 20 52 65 6d 6f 76 65 20 65 76 65 6e 74 73 20 Remove events
3ced0 77 68 6f 73 65 20 74 69 6d 65 20 74 69 6d 65 20 whose time time
3cee0 69 73 20 61 66 74 65 72 20 74 68 65 20 67 69 76 is after the giv
3cef0 65 6e 20 74 69 6d 65 0a 09 09 20 2a 20 20 40 70 en time... * @p
3cf00 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 20 aram {Number}
3cf10 74 69 6d 65 20 20 54 68 65 20 74 69 6d 65 20 74 time The time t
3cf20 6f 20 71 75 65 72 79 2e 0a 09 09 20 2a 20 20 40 o query.... * @
3cf30 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 49 6e returns {Tone.In
3cf40 74 65 72 76 61 6c 54 69 6d 65 6c 69 6e 65 7d 20 tervalTimeline}
3cf50 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
3cf60 54 6f 6e 65 2e 49 6e 74 65 72 76 61 6c 54 69 6d Tone.IntervalTim
3cf70 65 6c 69 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e eline.prototype.
3cf80 63 61 6e 63 65 6c 20 3d 20 66 75 6e 63 74 69 6f cancel = functio
3cf90 6e 20 28 61 66 74 65 72 29 20 7b 0a 09 20 20 20 n (after) {..
3cfa0 20 20 20 20 20 74 68 69 73 2e 66 6f 72 45 61 63 this.forEac
3cfb0 68 41 66 74 65 72 28 61 66 74 65 72 2c 20 66 75 hAfter(after, fu
3cfc0 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 29 20 7b nction (event) {
3cfd0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
3cfe0 69 73 2e 72 65 6d 6f 76 65 28 65 76 65 6e 74 29 is.remove(event)
3cff0 3b 0a 09 20 20 20 20 20 20 20 20 7d 2e 62 69 6e ;.. }.bin
3d000 64 28 74 68 69 73 29 29 3b 0a 09 20 20 20 20 20 d(this));..
3d010 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
3d020 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
3d030 0a 09 09 20 2a 20 20 53 65 74 20 74 68 65 20 72 ... * Set the r
3d040 6f 6f 74 20 6e 6f 64 65 20 61 73 20 74 68 65 20 oot node as the
3d050 67 69 76 65 6e 20 6e 6f 64 65 0a 09 09 20 2a 20 given node... *
3d060 20 40 70 61 72 61 6d 20 7b 49 6e 74 65 72 76 61 @param {Interva
3d070 6c 4e 6f 64 65 7d 20 6e 6f 64 65 0a 09 09 20 2a lNode} node... *
3d080 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f @private... */
3d090 0a 09 20 20 20 20 54 6f 6e 65 2e 49 6e 74 65 72 .. Tone.Inter
3d0a0 76 61 6c 54 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 valTimeline.prot
3d0b0 6f 74 79 70 65 2e 5f 73 65 74 52 6f 6f 74 20 3d otype._setRoot =
3d0c0 20 66 75 6e 63 74 69 6f 6e 20 28 6e 6f 64 65 29 function (node)
3d0d0 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 {.. this
3d0e0 2e 5f 72 6f 6f 74 20 3d 20 6e 6f 64 65 3b 0a 09 ._root = node;..
3d0f0 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
3d100 2e 5f 72 6f 6f 74 20 21 3d 3d 20 6e 75 6c 6c 29 ._root !== null)
3d110 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
3d120 74 68 69 73 2e 5f 72 6f 6f 74 2e 70 61 72 65 6e this._root.paren
3d130 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 t = null;..
3d140 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 }.. };..
3d150 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 70 6c /**... * Repl
3d160 61 63 65 20 74 68 65 20 72 65 66 65 72 65 6e 63 ace the referenc
3d170 65 73 20 74 6f 20 74 68 65 20 6e 6f 64 65 20 69 es to the node i
3d180 6e 20 74 68 65 20 6e 6f 64 65 27 73 20 70 61 72 n the node's par
3d190 65 6e 74 0a 09 09 20 2a 20 20 77 69 74 68 20 74 ent... * with t
3d1a0 68 65 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 6e he replacement n
3d1b0 6f 64 65 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 ode.... * @para
3d1c0 6d 20 20 7b 49 6e 74 65 72 76 61 6c 4e 6f 64 65 m {IntervalNode
3d1d0 7d 20 20 6e 6f 64 65 20 20 20 20 20 20 20 20 0a } node .
3d1e0 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 49 .. * @param {I
3d1f0 6e 74 65 72 76 61 6c 4e 6f 64 65 7d 20 20 72 65 ntervalNode} re
3d200 70 6c 61 63 65 6d 65 6e 74 20 0a 09 09 20 2a 20 placement ... *
3d210 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a @private... */.
3d220 09 20 20 20 20 54 6f 6e 65 2e 49 6e 74 65 72 76 . Tone.Interv
3d230 61 6c 54 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f alTimeline.proto
3d240 74 79 70 65 2e 5f 72 65 70 6c 61 63 65 4e 6f 64 type._replaceNod
3d250 65 49 6e 50 61 72 65 6e 74 20 3d 20 66 75 6e 63 eInParent = func
3d260 74 69 6f 6e 20 28 6e 6f 64 65 2c 20 72 65 70 6c tion (node, repl
3d270 61 63 65 6d 65 6e 74 29 20 7b 0a 09 20 20 20 20 acement) {..
3d280 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 70 61 72 if (node.par
3d290 65 6e 74 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a ent !== null) {.
3d2a0 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
3d2b0 28 6e 6f 64 65 2e 69 73 4c 65 66 74 43 68 69 6c (node.isLeftChil
3d2c0 64 28 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 d()) {..
3d2d0 20 20 20 20 20 20 20 20 6e 6f 64 65 2e 70 61 72 node.par
3d2e0 65 6e 74 2e 6c 65 66 74 20 3d 20 72 65 70 6c 61 ent.left = repla
3d2f0 63 65 6d 65 6e 74 3b 0a 09 20 20 20 20 20 20 20 cement;..
3d300 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
3d310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e n
3d320 6f 64 65 2e 70 61 72 65 6e 74 2e 72 69 67 68 74 ode.parent.right
3d330 20 3d 20 72 65 70 6c 61 63 65 6d 65 6e 74 3b 0a = replacement;.
3d340 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
3d350 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
3d360 2e 5f 72 65 62 61 6c 61 6e 63 65 28 6e 6f 64 65 ._rebalance(node
3d370 2e 70 61 72 65 6e 74 29 3b 0a 09 20 20 20 20 20 .parent);..
3d380 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
3d390 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 this._s
3d3a0 65 74 52 6f 6f 74 28 72 65 70 6c 61 63 65 6d 65 etRoot(replaceme
3d3b0 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a nt);.. }.
3d3c0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
3d3d0 0a 09 09 20 2a 20 20 52 65 6d 6f 76 65 20 74 68 ... * Remove th
3d3e0 65 20 6e 6f 64 65 20 66 72 6f 6d 20 74 68 65 20 e node from the
3d3f0 74 72 65 65 20 61 6e 64 20 72 65 70 6c 61 63 65 tree and replace
3d400 20 69 74 20 77 69 74 68 20 0a 09 09 20 2a 20 20 it with ... *
3d410 61 20 73 75 63 63 65 73 73 6f 72 20 77 68 69 63 a successor whic
3d420 68 20 66 6f 6c 6c 6f 77 73 20 74 68 65 20 73 63 h follows the sc
3d430 68 65 6d 61 2e 0a 09 09 20 2a 20 20 40 70 61 72 hema.... * @par
3d440 61 6d 20 20 7b 49 6e 74 65 72 76 61 6c 4e 6f 64 am {IntervalNod
3d450 65 7d 20 20 6e 6f 64 65 0a 09 09 20 2a 20 20 40 e} node... * @
3d460 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 private... */..
3d470 20 20 20 54 6f 6e 65 2e 49 6e 74 65 72 76 61 6c Tone.Interval
3d480 54 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f 74 79 Timeline.prototy
3d490 70 65 2e 5f 72 65 6d 6f 76 65 4e 6f 64 65 20 3d pe._removeNode =
3d4a0 20 66 75 6e 63 74 69 6f 6e 20 28 6e 6f 64 65 29 function (node)
3d4b0 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
3d4c0 6e 6f 64 65 2e 6c 65 66 74 20 3d 3d 3d 20 6e 75 node.left === nu
3d4d0 6c 6c 20 26 26 20 6e 6f 64 65 2e 72 69 67 68 74 ll && node.right
3d4e0 20 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 === null) {..
3d4f0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
3d500 72 65 70 6c 61 63 65 4e 6f 64 65 49 6e 50 61 72 replaceNodeInPar
3d510 65 6e 74 28 6e 6f 64 65 2c 20 6e 75 6c 6c 29 3b ent(node, null);
3d520 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
3d530 20 69 66 20 28 6e 6f 64 65 2e 72 69 67 68 74 20 if (node.right
3d540 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 === null) {..
3d550 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 this._r
3d560 65 70 6c 61 63 65 4e 6f 64 65 49 6e 50 61 72 65 eplaceNodeInPare
3d570 6e 74 28 6e 6f 64 65 2c 20 6e 6f 64 65 2e 6c 65 nt(node, node.le
3d580 66 74 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 ft);.. }
3d590 65 6c 73 65 20 69 66 20 28 6e 6f 64 65 2e 6c 65 else if (node.le
3d5a0 66 74 20 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 ft === null) {..
3d5b0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
3d5c0 2e 5f 72 65 70 6c 61 63 65 4e 6f 64 65 49 6e 50 ._replaceNodeInP
3d5d0 61 72 65 6e 74 28 6e 6f 64 65 2c 20 6e 6f 64 65 arent(node, node
3d5e0 2e 72 69 67 68 74 29 3b 0a 09 20 20 20 20 20 20 .right);..
3d5f0 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 } else {..
3d600 20 20 20 20 20 20 20 20 76 61 72 20 62 61 6c 61 var bala
3d610 6e 63 65 20 3d 20 6e 6f 64 65 2e 67 65 74 42 61 nce = node.getBa
3d620 6c 61 6e 63 65 28 29 3b 0a 09 20 20 20 20 20 20 lance();..
3d630 20 20 20 20 20 20 76 61 72 20 72 65 70 6c 61 63 var replac
3d640 65 6d 65 6e 74 2c 20 74 65 6d 70 3b 0a 09 20 20 ement, temp;..
3d650 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 61 if (ba
3d660 6c 61 6e 63 65 20 3e 20 30 29 20 7b 0a 09 20 20 lance > 0) {..
3d670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
3d680 20 28 6e 6f 64 65 2e 6c 65 66 74 2e 72 69 67 68 (node.left.righ
3d690 74 20 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 t === null) {..
3d6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d6b0 20 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d replacement =
3d6c0 20 6e 6f 64 65 2e 6c 65 66 74 3b 0a 09 20 20 20 node.left;..
3d6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d6e0 20 72 65 70 6c 61 63 65 6d 65 6e 74 2e 72 69 67 replacement.rig
3d6f0 68 74 20 3d 20 6e 6f 64 65 2e 72 69 67 68 74 3b ht = node.right;
3d700 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
3d710 20 20 20 20 20 20 74 65 6d 70 20 3d 20 72 65 70 temp = rep
3d720 6c 61 63 65 6d 65 6e 74 3b 0a 09 20 20 20 20 20 lacement;..
3d730 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
3d740 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
3d750 20 20 20 20 20 20 20 20 20 72 65 70 6c 61 63 65 replace
3d760 6d 65 6e 74 20 3d 20 6e 6f 64 65 2e 6c 65 66 74 ment = node.left
3d770 2e 72 69 67 68 74 3b 0a 09 20 20 20 20 20 20 20 .right;..
3d780 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 whi
3d790 6c 65 20 28 72 65 70 6c 61 63 65 6d 65 6e 74 2e le (replacement.
3d7a0 72 69 67 68 74 20 21 3d 3d 20 6e 75 6c 6c 29 20 right !== null)
3d7b0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
3d7c0 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6c 61 repla
3d7d0 63 65 6d 65 6e 74 20 3d 20 72 65 70 6c 61 63 65 cement = replace
3d7e0 6d 65 6e 74 2e 72 69 67 68 74 3b 0a 09 20 20 20 ment.right;..
3d7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d800 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
3d810 20 20 20 20 20 20 20 20 72 65 70 6c 61 63 65 6d replacem
3d820 65 6e 74 2e 70 61 72 65 6e 74 2e 72 69 67 68 74 ent.parent.right
3d830 20 3d 20 72 65 70 6c 61 63 65 6d 65 6e 74 2e 6c = replacement.l
3d840 65 66 74 3b 0a 09 20 20 20 20 20 20 20 20 20 20 eft;..
3d850 20 20 20 20 20 20 20 20 20 20 74 65 6d 70 20 3d temp =
3d860 20 72 65 70 6c 61 63 65 6d 65 6e 74 2e 70 61 72 replacement.par
3d870 65 6e 74 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ent;..
3d880 20 20 20 20 20 20 20 20 20 20 72 65 70 6c 61 63 replac
3d890 65 6d 65 6e 74 2e 6c 65 66 74 20 3d 20 6e 6f 64 ement.left = nod
3d8a0 65 2e 6c 65 66 74 3b 0a 09 20 20 20 20 20 20 20 e.left;..
3d8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 rep
3d8c0 6c 61 63 65 6d 65 6e 74 2e 72 69 67 68 74 20 3d lacement.right =
3d8d0 20 6e 6f 64 65 2e 72 69 67 68 74 3b 0a 09 20 20 node.right;..
3d8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }.
3d8f0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
3d900 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
3d910 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node.
3d920 72 69 67 68 74 2e 6c 65 66 74 20 3d 3d 3d 20 6e right.left === n
3d930 75 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ull) {..
3d940 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6c repl
3d950 61 63 65 6d 65 6e 74 20 3d 20 6e 6f 64 65 2e 72 acement = node.r
3d960 69 67 68 74 3b 0a 09 20 20 20 20 20 20 20 20 20 ight;..
3d970 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6c 61 repla
3d980 63 65 6d 65 6e 74 2e 6c 65 66 74 20 3d 20 6e 6f cement.left = no
3d990 64 65 2e 6c 65 66 74 3b 0a 09 20 20 20 20 20 20 de.left;..
3d9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 te
3d9b0 6d 70 20 3d 20 72 65 70 6c 61 63 65 6d 65 6e 74 mp = replacement
3d9c0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
3d9d0 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
3d9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d9f0 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d 20 6e replacement = n
3da00 6f 64 65 2e 72 69 67 68 74 2e 6c 65 66 74 3b 0a ode.right.left;.
3da10 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3da20 20 20 20 20 20 77 68 69 6c 65 20 28 72 65 70 6c while (repl
3da30 61 63 65 6d 65 6e 74 2e 6c 65 66 74 20 21 3d 3d acement.left !==
3da40 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 null) {..
3da50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3da60 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d 20 replacement =
3da70 72 65 70 6c 61 63 65 6d 65 6e 74 2e 6c 65 66 74 replacement.left
3da80 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
3da90 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
3daa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
3dab0 70 6c 61 63 65 6d 65 6e 74 2e 70 61 72 65 6e 74 placement.parent
3dac0 20 3d 20 72 65 70 6c 61 63 65 6d 65 6e 74 2e 70 = replacement.p
3dad0 61 72 65 6e 74 3b 0a 09 20 20 20 20 20 20 20 20 arent;..
3dae0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6c repl
3daf0 61 63 65 6d 65 6e 74 2e 70 61 72 65 6e 74 2e 6c acement.parent.l
3db00 65 66 74 20 3d 20 72 65 70 6c 61 63 65 6d 65 6e eft = replacemen
3db10 74 2e 72 69 67 68 74 3b 0a 09 20 20 20 20 20 20 t.right;..
3db20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 te
3db30 6d 70 20 3d 20 72 65 70 6c 61 63 65 6d 65 6e 74 mp = replacement
3db40 2e 70 61 72 65 6e 74 3b 0a 09 20 20 20 20 20 20 .parent;..
3db50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
3db60 70 6c 61 63 65 6d 65 6e 74 2e 6c 65 66 74 20 3d placement.left =
3db70 20 6e 6f 64 65 2e 6c 65 66 74 3b 0a 09 20 20 20 node.left;..
3db80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3db90 20 72 65 70 6c 61 63 65 6d 65 6e 74 2e 72 69 67 replacement.rig
3dba0 68 74 20 3d 20 6e 6f 64 65 2e 72 69 67 68 74 3b ht = node.right;
3dbb0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
3dbc0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
3dbd0 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
3dbe0 69 66 20 28 6e 6f 64 65 2e 70 61 72 65 6e 74 20 if (node.parent
3dbf0 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 !== null) {..
3dc00 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
3dc10 28 6e 6f 64 65 2e 69 73 4c 65 66 74 43 68 69 6c (node.isLeftChil
3dc20 64 28 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 d()) {..
3dc30 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node
3dc40 2e 70 61 72 65 6e 74 2e 6c 65 66 74 20 3d 20 72 .parent.left = r
3dc50 65 70 6c 61 63 65 6d 65 6e 74 3b 0a 09 20 20 20 eplacement;..
3dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 } e
3dc70 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
3dc80 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2e node.
3dc90 70 61 72 65 6e 74 2e 72 69 67 68 74 20 3d 20 72 parent.right = r
3dca0 65 70 6c 61 63 65 6d 65 6e 74 3b 0a 09 20 20 20 eplacement;..
3dcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 }..
3dcc0 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
3dcd0 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 se {..
3dce0 20 20 20 20 20 20 74 68 69 73 2e 5f 73 65 74 52 this._setR
3dcf0 6f 6f 74 28 72 65 70 6c 61 63 65 6d 65 6e 74 29 oot(replacement)
3dd00 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
3dd10 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f .. //
3dd20 20 74 68 69 73 2e 5f 72 65 70 6c 61 63 65 4e 6f this._replaceNo
3dd30 64 65 49 6e 50 61 72 65 6e 74 28 6e 6f 64 65 2c deInParent(node,
3dd40 20 72 65 70 6c 61 63 65 6d 65 6e 74 29 3b 0a 09 replacement);..
3dd50 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
3dd60 2e 5f 72 65 62 61 6c 61 6e 63 65 28 74 65 6d 70 ._rebalance(temp
3dd70 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
3dd80 20 20 20 20 20 20 20 6e 6f 64 65 2e 64 69 73 70 node.disp
3dd90 6f 73 65 28 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 ose();.. };..
3dda0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 6f /**... * Ro
3ddb0 74 61 74 65 20 74 68 65 20 74 72 65 65 20 74 6f tate the tree to
3ddc0 20 74 68 65 20 6c 65 66 74 0a 09 09 20 2a 20 20 the left... *
3ddd0 40 70 61 72 61 6d 20 20 7b 49 6e 74 65 72 76 61 @param {Interva
3dde0 6c 4e 6f 64 65 7d 20 20 6e 6f 64 65 0a 09 09 20 lNode} node...
3ddf0 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a * @private... *
3de00 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 49 6e 74 65 /.. Tone.Inte
3de10 72 76 61 6c 54 69 6d 65 6c 69 6e 65 2e 70 72 6f rvalTimeline.pro
3de20 74 6f 74 79 70 65 2e 5f 72 6f 74 61 74 65 4c 65 totype._rotateLe
3de30 66 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6e ft = function (n
3de40 6f 64 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ode) {..
3de50 76 61 72 20 70 61 72 65 6e 74 20 3d 20 6e 6f 64 var parent = nod
3de60 65 2e 70 61 72 65 6e 74 3b 0a 09 20 20 20 20 20 e.parent;..
3de70 20 20 20 76 61 72 20 69 73 4c 65 66 74 43 68 69 var isLeftChi
3de80 6c 64 20 3d 20 6e 6f 64 65 2e 69 73 4c 65 66 74 ld = node.isLeft
3de90 43 68 69 6c 64 28 29 3b 0a 09 20 20 20 20 20 20 Child();..
3dea0 20 20 2f 2f 20 4d 61 6b 65 20 6e 6f 64 65 2e 72 // Make node.r
3deb0 69 67 68 74 20 74 68 65 20 6e 65 77 20 72 6f 6f ight the new roo
3dec0 74 20 6f 66 20 74 68 69 73 20 73 75 62 20 74 72 t of this sub tr
3ded0 65 65 20 28 69 6e 73 74 65 61 64 20 6f 66 20 6e ee (instead of n
3dee0 6f 64 65 29 0a 09 20 20 20 20 20 20 20 20 76 61 ode).. va
3def0 72 20 70 69 76 6f 74 4e 6f 64 65 20 3d 20 6e 6f r pivotNode = no
3df00 64 65 2e 72 69 67 68 74 3b 0a 09 20 20 20 20 20 de.right;..
3df10 20 20 20 6e 6f 64 65 2e 72 69 67 68 74 20 3d 20 node.right =
3df20 70 69 76 6f 74 4e 6f 64 65 2e 6c 65 66 74 3b 0a pivotNode.left;.
3df30 09 20 20 20 20 20 20 20 20 70 69 76 6f 74 4e 6f . pivotNo
3df40 64 65 2e 6c 65 66 74 20 3d 20 6e 6f 64 65 3b 0a de.left = node;.
3df50 09 20 20 20 20 20 20 20 20 69 66 20 28 70 61 72 . if (par
3df60 65 6e 74 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a ent !== null) {.
3df70 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
3df80 28 69 73 4c 65 66 74 43 68 69 6c 64 29 20 7b 0a (isLeftChild) {.
3df90 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3dfa0 20 70 61 72 65 6e 74 2e 6c 65 66 74 20 3d 20 70 parent.left = p
3dfb0 69 76 6f 74 4e 6f 64 65 3b 0a 09 20 20 20 20 20 ivotNode;..
3dfc0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
3dfd0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3dfe0 20 70 61 72 65 6e 74 2e 72 69 67 68 74 20 3d 20 parent.right =
3dff0 70 69 76 6f 74 4e 6f 64 65 3b 0a 09 20 20 20 20 pivotNode;..
3e000 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
3e010 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
3e020 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 this._s
3e030 65 74 52 6f 6f 74 28 70 69 76 6f 74 4e 6f 64 65 etRoot(pivotNode
3e040 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
3e050 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
3e060 09 20 2a 20 20 52 6f 74 61 74 65 20 74 68 65 20 . * Rotate the
3e070 74 72 65 65 20 74 6f 20 74 68 65 20 72 69 67 68 tree to the righ
3e080 74 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 t... * @param
3e090 7b 49 6e 74 65 72 76 61 6c 4e 6f 64 65 7d 20 20 {IntervalNode}
3e0a0 6e 6f 64 65 0a 09 09 20 2a 20 20 40 70 72 69 76 node... * @priv
3e0b0 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ate... */.. T
3e0c0 6f 6e 65 2e 49 6e 74 65 72 76 61 6c 54 69 6d 65 one.IntervalTime
3e0d0 6c 69 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 5f line.prototype._
3e0e0 72 6f 74 61 74 65 52 69 67 68 74 20 3d 20 66 75 rotateRight = fu
3e0f0 6e 63 74 69 6f 6e 20 28 6e 6f 64 65 29 20 7b 0a nction (node) {.
3e100 09 20 20 20 20 20 20 20 20 76 61 72 20 70 61 72 . var par
3e110 65 6e 74 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e ent = node.paren
3e120 74 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 t;.. var
3e130 69 73 4c 65 66 74 43 68 69 6c 64 20 3d 20 6e 6f isLeftChild = no
3e140 64 65 2e 69 73 4c 65 66 74 43 68 69 6c 64 28 29 de.isLeftChild()
3e150 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 20 4d 61 ;.. // Ma
3e160 6b 65 20 6e 6f 64 65 2e 6c 65 66 74 20 74 68 65 ke node.left the
3e170 20 6e 65 77 20 72 6f 6f 74 20 6f 66 20 74 68 69 new root of thi
3e180 73 20 73 75 62 20 74 72 65 65 20 28 69 6e 73 74 s sub tree (inst
3e190 65 61 64 20 6f 66 20 6e 6f 64 65 29 0a 09 20 20 ead of node)..
3e1a0 20 20 20 20 20 20 76 61 72 20 70 69 76 6f 74 4e var pivotN
3e1b0 6f 64 65 20 3d 20 6e 6f 64 65 2e 6c 65 66 74 3b ode = node.left;
3e1c0 0a 09 20 20 20 20 20 20 20 20 6e 6f 64 65 2e 6c .. node.l
3e1d0 65 66 74 20 3d 20 70 69 76 6f 74 4e 6f 64 65 2e eft = pivotNode.
3e1e0 72 69 67 68 74 3b 0a 09 20 20 20 20 20 20 20 20 right;..
3e1f0 70 69 76 6f 74 4e 6f 64 65 2e 72 69 67 68 74 20 pivotNode.right
3e200 3d 20 6e 6f 64 65 3b 0a 09 20 20 20 20 20 20 20 = node;..
3e210 20 69 66 20 28 70 61 72 65 6e 74 20 21 3d 3d 20 if (parent !==
3e220 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 null) {..
3e230 20 20 20 20 20 69 66 20 28 69 73 4c 65 66 74 43 if (isLeftC
3e240 68 69 6c 64 29 20 7b 0a 09 20 20 20 20 20 20 20 hild) {..
3e250 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 2e parent.
3e260 6c 65 66 74 20 3d 20 70 69 76 6f 74 4e 6f 64 65 left = pivotNode
3e270 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
3e280 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
3e290 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 2e parent.
3e2a0 72 69 67 68 74 20 3d 20 70 69 76 6f 74 4e 6f 64 right = pivotNod
3e2b0 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 e;..
3e2c0 7d 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 }.. } els
3e2d0 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
3e2e0 20 74 68 69 73 2e 5f 73 65 74 52 6f 6f 74 28 70 this._setRoot(p
3e2f0 69 76 6f 74 4e 6f 64 65 29 3b 0a 09 20 20 20 20 ivotNode);..
3e300 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 }.. };..
3e310 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 42 61 6c /**... * Bal
3e320 61 6e 63 65 20 74 68 65 20 42 53 54 0a 09 09 20 ance the BST...
3e330 2a 20 20 40 70 61 72 61 6d 20 20 7b 49 6e 74 65 * @param {Inte
3e340 72 76 61 6c 4e 6f 64 65 7d 20 20 6e 6f 64 65 0a rvalNode} node.
3e350 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
3e360 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 49 . */.. Tone.I
3e370 6e 74 65 72 76 61 6c 54 69 6d 65 6c 69 6e 65 2e ntervalTimeline.
3e380 70 72 6f 74 6f 74 79 70 65 2e 5f 72 65 62 61 6c prototype._rebal
3e390 61 6e 63 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 ance = function
3e3a0 28 6e 6f 64 65 29 20 7b 0a 09 20 20 20 20 20 20 (node) {..
3e3b0 20 20 76 61 72 20 62 61 6c 61 6e 63 65 20 3d 20 var balance =
3e3c0 6e 6f 64 65 2e 67 65 74 42 61 6c 61 6e 63 65 28 node.getBalance(
3e3d0 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 );.. if (
3e3e0 62 61 6c 61 6e 63 65 20 3e 20 31 29 20 7b 0a 09 balance > 1) {..
3e3f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
3e400 6e 6f 64 65 2e 6c 65 66 74 2e 67 65 74 42 61 6c node.left.getBal
3e410 61 6e 63 65 28 29 20 3c 20 30 29 20 7b 0a 09 20 ance() < 0) {..
3e420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
3e430 68 69 73 2e 5f 72 6f 74 61 74 65 4c 65 66 74 28 his._rotateLeft(
3e440 6e 6f 64 65 2e 6c 65 66 74 29 3b 0a 09 20 20 20 node.left);..
3e450 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
3e460 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
3e470 20 20 20 74 68 69 73 2e 5f 72 6f 74 61 74 65 52 this._rotateR
3e480 69 67 68 74 28 6e 6f 64 65 29 3b 0a 09 20 20 20 ight(node);..
3e490 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
3e4a0 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 62 } else if (b
3e4b0 61 6c 61 6e 63 65 20 3c 20 2d 31 29 20 7b 0a 09 alance < -1) {..
3e4c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
3e4d0 6e 6f 64 65 2e 72 69 67 68 74 2e 67 65 74 42 61 node.right.getBa
3e4e0 6c 61 6e 63 65 28 29 20 3e 20 30 29 20 7b 0a 09 lance() > 0) {..
3e4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3e500 74 68 69 73 2e 5f 72 6f 74 61 74 65 52 69 67 68 this._rotateRigh
3e510 74 28 6e 6f 64 65 2e 72 69 67 68 74 29 3b 0a 09 t(node.right);..
3e520 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
3e530 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 se {..
3e540 20 20 20 20 20 20 74 68 69 73 2e 5f 72 6f 74 61 this._rota
3e550 74 65 4c 65 66 74 28 6e 6f 64 65 29 3b 0a 09 20 teLeft(node);..
3e560 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
3e570 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a }.. };.
3e580 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 47 . /**... * G
3e590 65 74 20 61 6e 20 65 76 65 6e 74 20 77 68 6f 73 et an event whos
3e5a0 65 20 74 69 6d 65 20 61 6e 64 20 64 75 72 61 74 e time and durat
3e5b0 69 6f 6e 20 73 70 61 6e 20 74 68 65 20 67 69 76 ion span the giv
3e5c0 65 20 74 69 6d 65 2e 20 57 69 6c 6c 0a 09 09 20 e time. Will...
3e5d0 2a 20 20 72 65 74 75 72 6e 20 74 68 65 20 6d 61 * return the ma
3e5e0 74 63 68 20 77 68 6f 73 65 20 22 74 69 6d 65 22 tch whose "time"
3e5f0 20 76 61 6c 75 65 20 69 73 20 63 6c 6f 73 65 73 value is closes
3e600 74 20 74 6f 20 74 68 65 20 67 69 76 65 6e 20 74 t to the given t
3e610 69 6d 65 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 ime.... * @para
3e620 6d 20 20 7b 4f 62 6a 65 63 74 7d 20 20 65 76 65 m {Object} eve
3e630 6e 74 20 20 54 68 65 20 65 76 65 6e 74 20 74 6f nt The event to
3e640 20 61 64 64 20 74 6f 20 74 68 65 20 74 69 6d 65 add to the time
3e650 6c 69 6e 65 0a 09 09 20 2a 20 20 40 72 65 74 75 line... * @retu
3e660 72 6e 20 20 7b 4f 62 6a 65 63 74 7d 20 20 54 68 rn {Object} Th
3e670 65 20 65 76 65 6e 74 20 77 68 69 63 68 20 73 70 e event which sp
3e680 61 6e 73 20 74 68 65 20 64 65 73 69 72 65 64 20 ans the desired
3e690 74 69 6d 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 time... */..
3e6a0 54 6f 6e 65 2e 49 6e 74 65 72 76 61 6c 54 69 6d Tone.IntervalTim
3e6b0 65 6c 69 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e eline.prototype.
3e6c0 67 65 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 get = function (
3e6d0 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 time) {..
3e6e0 20 69 66 20 28 74 68 69 73 2e 5f 72 6f 6f 74 20 if (this._root
3e6f0 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 !== null) {..
3e700 20 20 20 20 20 20 20 20 20 76 61 72 20 72 65 73 var res
3e710 75 6c 74 73 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 ults = [];..
3e720 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 6f this._ro
3e730 6f 74 2e 73 65 61 72 63 68 28 74 69 6d 65 2c 20 ot.search(time,
3e740 72 65 73 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 results);..
3e750 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c if (resul
3e760 74 73 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 7b ts.length > 0) {
3e770 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
3e780 20 20 76 61 72 20 6d 61 78 20 3d 20 72 65 73 75 var max = resu
3e790 6c 74 73 5b 30 5d 3b 0a 09 20 20 20 20 20 20 20 lts[0];..
3e7a0 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 for (va
3e7b0 72 20 69 20 3d 20 31 3b 20 69 20 3c 20 72 65 73 r i = 1; i < res
3e7c0 75 6c 74 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b ults.length; i++
3e7d0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
3e7e0 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73 if (res
3e7f0 75 6c 74 73 5b 69 5d 2e 6c 6f 77 20 3e 20 6d 61 ults[i].low > ma
3e800 78 2e 6c 6f 77 29 20 7b 0a 09 20 20 20 20 20 20 x.low) {..
3e810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3e820 20 20 6d 61 78 20 3d 20 72 65 73 75 6c 74 73 5b max = results[
3e830 69 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 i];..
3e840 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
3e850 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
3e860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
3e870 65 74 75 72 6e 20 6d 61 78 2e 65 76 65 6e 74 3b eturn max.event;
3e880 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
3e890 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
3e8a0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b return null;
3e8b0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
3e8c0 2a 0a 09 09 20 2a 20 20 49 74 65 72 61 74 65 20 *... * Iterate
3e8d0 6f 76 65 72 20 65 76 65 72 79 74 68 69 6e 67 20 over everything
3e8e0 69 6e 20 74 68 65 20 74 69 6d 65 6c 69 6e 65 2e in the timeline.
3e8f0 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
3e900 46 75 6e 63 74 69 6f 6e 7d 20 20 63 61 6c 6c 62 Function} callb
3e910 61 63 6b 20 54 68 65 20 63 61 6c 6c 62 61 63 6b ack The callback
3e920 20 74 6f 20 69 6e 76 6f 6b 65 20 77 69 74 68 20 to invoke with
3e930 65 76 65 72 79 20 69 74 65 6d 0a 09 09 20 2a 20 every item... *
3e940 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e @returns {Tone.
3e950 49 6e 74 65 72 76 61 6c 54 69 6d 65 6c 69 6e 65 IntervalTimeline
3e960 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 } this... */..
3e970 20 20 54 6f 6e 65 2e 49 6e 74 65 72 76 61 6c 54 Tone.IntervalT
3e980 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f 74 79 70 imeline.prototyp
3e990 65 2e 66 6f 72 45 61 63 68 20 3d 20 66 75 6e 63 e.forEach = func
3e9a0 74 69 6f 6e 20 28 63 61 6c 6c 62 61 63 6b 29 20 tion (callback)
3e9b0 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 {.. if (t
3e9c0 68 69 73 2e 5f 72 6f 6f 74 20 21 3d 3d 20 6e 75 his._root !== nu
3e9d0 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ll) {..
3e9e0 20 20 20 76 61 72 20 61 6c 6c 4e 6f 64 65 73 20 var allNodes
3e9f0 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 = [];..
3ea00 20 20 20 69 66 20 28 74 68 69 73 2e 5f 72 6f 6f if (this._roo
3ea10 74 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 t !== null) {..
3ea20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
3ea30 68 69 73 2e 5f 72 6f 6f 74 2e 74 72 61 76 65 72 his._root.traver
3ea40 73 65 28 66 75 6e 63 74 69 6f 6e 20 28 6e 6f 64 se(function (nod
3ea50 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
3ea60 20 20 20 20 20 20 20 20 20 20 61 6c 6c 4e 6f 64 allNod
3ea70 65 73 2e 70 75 73 68 28 6e 6f 64 65 29 3b 0a 09 es.push(node);..
3ea80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3ea90 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 });..
3eaa0 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
3eab0 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 for (var i = 0;
3eac0 69 20 3c 20 61 6c 6c 4e 6f 64 65 73 2e 6c 65 6e i < allNodes.len
3ead0 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 gth; i++) {..
3eae0 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var
3eaf0 20 65 76 20 3d 20 61 6c 6c 4e 6f 64 65 73 5b 69 ev = allNodes[i
3eb00 5d 2e 65 76 65 6e 74 3b 0a 09 20 20 20 20 20 20 ].event;..
3eb10 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 76 if (ev
3eb20 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
3eb30 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 callbac
3eb40 6b 28 65 76 29 3b 0a 09 20 20 20 20 20 20 20 20 k(ev);..
3eb50 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
3eb60 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
3eb70 20 20 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 }.. ret
3eb80 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
3eb90 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
3eba0 20 49 74 65 72 61 74 65 20 6f 76 65 72 20 65 76 Iterate over ev
3ebb0 65 72 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 erything in the
3ebc0 61 72 72 61 79 20 69 6e 20 77 68 69 63 68 20 74 array in which t
3ebd0 68 65 20 67 69 76 65 6e 20 74 69 6d 65 0a 09 09 he given time...
3ebe0 20 2a 20 20 6f 76 65 72 6c 61 70 73 20 77 69 74 * overlaps wit
3ebf0 68 20 74 68 65 20 74 69 6d 65 20 61 6e 64 20 64 h the time and d
3ec00 75 72 61 74 69 6f 6e 20 74 69 6d 65 20 6f 66 20 uration time of
3ec10 74 68 65 20 65 76 65 6e 74 2e 0a 09 09 20 2a 20 the event.... *
3ec20 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 @param {Number
3ec30 7d 20 20 74 69 6d 65 20 54 68 65 20 74 69 6d 65 } time The time
3ec40 20 74 6f 20 63 68 65 63 6b 20 69 66 20 69 74 65 to check if ite
3ec50 6d 73 20 61 72 65 20 6f 76 65 72 6c 61 70 70 69 ms are overlappi
3ec60 6e 67 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 ng... * @param
3ec70 20 7b 46 75 6e 63 74 69 6f 6e 7d 20 20 63 61 6c {Function} cal
3ec80 6c 62 61 63 6b 20 54 68 65 20 63 61 6c 6c 62 61 lback The callba
3ec90 63 6b 20 74 6f 20 69 6e 76 6f 6b 65 20 77 69 74 ck to invoke wit
3eca0 68 20 65 76 65 72 79 20 69 74 65 6d 0a 09 09 20 h every item...
3ecb0 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
3ecc0 65 2e 49 6e 74 65 72 76 61 6c 54 69 6d 65 6c 69 e.IntervalTimeli
3ecd0 6e 65 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 ne} this... */..
3ece0 20 20 20 20 54 6f 6e 65 2e 49 6e 74 65 72 76 61 Tone.Interva
3ecf0 6c 54 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f 74 lTimeline.protot
3ed00 79 70 65 2e 66 6f 72 45 61 63 68 41 74 54 69 6d ype.forEachAtTim
3ed10 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 e = function (ti
3ed20 6d 65 2c 20 63 61 6c 6c 62 61 63 6b 29 20 7b 0a me, callback) {.
3ed30 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 . if (thi
3ed40 73 2e 5f 72 6f 6f 74 20 21 3d 3d 20 6e 75 6c 6c s._root !== null
3ed50 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
3ed60 20 76 61 72 20 72 65 73 75 6c 74 73 20 3d 20 5b var results = [
3ed70 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ];..
3ed80 74 68 69 73 2e 5f 72 6f 6f 74 2e 73 65 61 72 63 this._root.searc
3ed90 68 28 74 69 6d 65 2c 20 72 65 73 75 6c 74 73 29 h(time, results)
3eda0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 66 ;.. f
3edb0 6f 72 20 28 76 61 72 20 69 20 3d 20 72 65 73 75 or (var i = resu
3edc0 6c 74 73 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 20 lts.length - 1;
3edd0 69 20 3e 3d 20 30 3b 20 69 2d 2d 29 20 7b 0a 09 i >= 0; i--) {..
3ede0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3edf0 76 61 72 20 65 76 20 3d 20 72 65 73 75 6c 74 73 var ev = results
3ee00 5b 69 5d 2e 65 76 65 6e 74 3b 0a 09 20 20 20 20 [i].event;..
3ee10 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
3ee20 65 76 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ev) {..
3ee30 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 callb
3ee40 61 63 6b 28 65 76 29 3b 0a 09 20 20 20 20 20 20 ack(ev);..
3ee50 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
3ee60 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
3ee70 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 72 }.. r
3ee80 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 eturn this;..
3ee90 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
3eea0 2a 20 20 49 74 65 72 61 74 65 20 6f 76 65 72 20 * Iterate over
3eeb0 65 76 65 72 79 74 68 69 6e 67 20 69 6e 20 74 68 everything in th
3eec0 65 20 61 72 72 61 79 20 69 6e 20 77 68 69 63 68 e array in which
3eed0 20 74 68 65 20 74 69 6d 65 20 69 73 20 67 72 65 the time is gre
3eee0 61 74 65 72 0a 09 09 20 2a 20 20 74 68 61 6e 20 ater... * than
3eef0 74 68 65 20 67 69 76 65 6e 20 74 69 6d 65 2e 0a the given time..
3ef00 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 4e .. * @param {N
3ef10 75 6d 62 65 72 7d 20 20 74 69 6d 65 20 54 68 65 umber} time The
3ef20 20 74 69 6d 65 20 74 6f 20 63 68 65 63 6b 20 69 time to check i
3ef30 66 20 69 74 65 6d 73 20 61 72 65 20 62 65 66 6f f items are befo
3ef40 72 65 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 re... * @param
3ef50 20 7b 46 75 6e 63 74 69 6f 6e 7d 20 20 63 61 6c {Function} cal
3ef60 6c 62 61 63 6b 20 54 68 65 20 63 61 6c 6c 62 61 lback The callba
3ef70 63 6b 20 74 6f 20 69 6e 76 6f 6b 65 20 77 69 74 ck to invoke wit
3ef80 68 20 65 76 65 72 79 20 69 74 65 6d 0a 09 09 20 h every item...
3ef90 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
3efa0 65 2e 49 6e 74 65 72 76 61 6c 54 69 6d 65 6c 69 e.IntervalTimeli
3efb0 6e 65 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 ne} this... */..
3efc0 20 20 20 20 54 6f 6e 65 2e 49 6e 74 65 72 76 61 Tone.Interva
3efd0 6c 54 69 6d 65 6c 69 6e 65 2e 70 72 6f 74 6f 74 lTimeline.protot
3efe0 79 70 65 2e 66 6f 72 45 61 63 68 41 66 74 65 72 ype.forEachAfter
3eff0 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d = function (tim
3f000 65 2c 20 63 61 6c 6c 62 61 63 6b 29 20 7b 0a 09 e, callback) {..
3f010 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
3f020 2e 5f 72 6f 6f 74 20 21 3d 3d 20 6e 75 6c 6c 29 ._root !== null)
3f030 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
3f040 76 61 72 20 72 65 73 75 6c 74 73 20 3d 20 5b 5d var results = []
3f050 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 ;.. t
3f060 68 69 73 2e 5f 72 6f 6f 74 2e 73 65 61 72 63 68 his._root.search
3f070 41 66 74 65 72 28 74 69 6d 65 2c 20 72 65 73 75 After(time, resu
3f080 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 20 lts);..
3f090 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 for (var i =
3f0a0 72 65 73 75 6c 74 73 2e 6c 65 6e 67 74 68 20 2d results.length -
3f0b0 20 31 3b 20 69 20 3e 3d 20 30 3b 20 69 2d 2d 29 1; i >= 0; i--)
3f0c0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
3f0d0 20 20 20 20 76 61 72 20 65 76 20 3d 20 72 65 73 var ev = res
3f0e0 75 6c 74 73 5b 69 5d 2e 65 76 65 6e 74 3b 0a 09 ults[i].event;..
3f0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3f100 69 66 20 28 65 76 29 20 7b 0a 09 20 20 20 20 20 if (ev) {..
3f110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
3f120 61 6c 6c 62 61 63 6b 28 65 76 29 3b 0a 09 20 20 allback(ev);..
3f130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }.
3f140 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
3f150 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
3f160 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
3f170 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
3f180 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 0a ... * Clean up.
3f190 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b .. * @return {
3f1a0 54 6f 6e 65 2e 49 6e 74 65 72 76 61 6c 54 69 6d Tone.IntervalTim
3f1b0 65 6c 69 6e 65 7d 20 20 74 68 69 73 0a 09 09 20 eline} this...
3f1c0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 49 6e 74 */.. Tone.Int
3f1d0 65 72 76 61 6c 54 69 6d 65 6c 69 6e 65 2e 70 72 ervalTimeline.pr
3f1e0 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 ototype.dispose
3f1f0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
3f200 09 20 20 20 20 20 20 20 20 76 61 72 20 61 6c 6c . var all
3f210 4e 6f 64 65 73 20 3d 20 5b 5d 3b 0a 09 20 20 20 Nodes = [];..
3f220 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 72 if (this._r
3f230 6f 6f 74 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a oot !== null) {.
3f240 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
3f250 73 2e 5f 72 6f 6f 74 2e 74 72 61 76 65 72 73 65 s._root.traverse
3f260 28 66 75 6e 63 74 69 6f 6e 20 28 6e 6f 64 65 29 (function (node)
3f270 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
3f280 20 20 20 20 61 6c 6c 4e 6f 64 65 73 2e 70 75 73 allNodes.pus
3f290 68 28 6e 6f 64 65 29 3b 0a 09 20 20 20 20 20 20 h(node);..
3f2a0 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 });..
3f2b0 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 66 6f }.. fo
3f2c0 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 r (var i = 0; i
3f2d0 3c 20 61 6c 6c 4e 6f 64 65 73 2e 6c 65 6e 67 74 < allNodes.lengt
3f2e0 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 h; i++) {..
3f2f0 20 20 20 20 20 20 20 61 6c 6c 4e 6f 64 65 73 5b allNodes[
3f300 69 5d 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 i].dispose();..
3f310 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
3f320 20 20 61 6c 6c 4e 6f 64 65 73 20 3d 20 6e 75 6c allNodes = nul
3f330 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
3f340 2e 5f 72 6f 6f 74 20 3d 20 6e 75 6c 6c 3b 0a 09 ._root = null;..
3f350 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
3f360 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
3f370 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //////////////
3f380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3f390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3f3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3f3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 /////////////..
3f3c0 20 20 20 2f 2f 09 49 4e 54 45 52 56 41 4c 20 4e //.INTERVAL N
3f3d0 4f 44 45 20 48 45 4c 50 45 52 0a 09 20 20 20 20 ODE HELPER..
3f3e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3f3f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3f400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3f410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
3f420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 ///////////..
3f430 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 70 72 65 /**... * Repre
3f440 73 65 6e 74 73 20 61 20 6e 6f 64 65 20 69 6e 20 sents a node in
3f450 74 68 65 20 62 69 6e 61 72 79 20 73 65 61 72 63 the binary searc
3f460 68 20 74 72 65 65 2c 20 77 69 74 68 20 74 68 65 h tree, with the
3f470 20 61 64 64 69 74 69 6f 6e 0a 09 09 20 2a 20 20 addition... *
3f480 6f 66 20 61 20 22 68 69 67 68 22 20 76 61 6c 75 of a "high" valu
3f490 65 20 77 68 69 63 68 20 6b 65 65 70 73 20 74 72 e which keeps tr
3f4a0 61 63 6b 20 6f 66 20 74 68 65 20 68 69 67 68 65 ack of the highe
3f4b0 73 74 20 76 61 6c 75 65 20 6f 66 0a 09 09 20 2a st value of... *
3f4c0 20 20 69 74 73 20 63 68 69 6c 64 72 65 6e 2e 20 its children.
3f4d0 0a 09 09 20 2a 20 20 52 65 66 65 72 65 6e 63 65 ... * Reference
3f4e0 73 3a 20 0a 09 09 20 2a 20 20 68 74 74 70 73 3a s: ... * https:
3f4f0 2f 2f 62 72 6f 6f 6b 6e 6f 76 61 6b 2e 77 6f 72 //brooknovak.wor
3f500 64 70 72 65 73 73 2e 63 6f 6d 2f 32 30 31 33 2f dpress.com/2013/
3f510 31 32 2f 30 37 2f 61 75 67 6d 65 6e 74 65 64 2d 12/07/augmented-
3f520 69 6e 74 65 72 76 61 6c 2d 74 72 65 65 2d 69 6e interval-tree-in
3f530 2d 63 2f 0a 09 09 20 2a 20 20 68 74 74 70 3a 2f -c/... * http:/
3f540 2f 77 77 77 2e 6d 69 66 2e 76 75 2e 6c 74 2f 7e /www.mif.vu.lt/~
3f550 76 61 6c 64 61 73 2f 41 4c 47 4f 52 49 54 4d 41 valdas/ALGORITMA
3f560 49 2f 4c 49 54 45 52 41 54 55 52 41 2f 43 6f 72 I/LITERATURA/Cor
3f570 6d 65 6e 2f 43 6f 72 6d 65 6e 2e 70 64 66 0a 09 men/Cormen.pdf..
3f580 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 4e 75 6d . * @param {Num
3f590 62 65 72 7d 20 6c 6f 77 0a 09 09 20 2a 20 20 40 ber} low... * @
3f5a0 70 61 72 61 6d 20 7b 4e 75 6d 62 65 72 7d 20 68 param {Number} h
3f5b0 69 67 68 0a 09 09 20 2a 20 20 40 70 72 69 76 61 igh... * @priva
3f5c0 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 76 61 te... */.. va
3f5d0 72 20 49 6e 74 65 72 76 61 6c 4e 6f 64 65 20 3d r IntervalNode =
3f5e0 20 66 75 6e 63 74 69 6f 6e 20 28 6c 6f 77 2c 20 function (low,
3f5f0 68 69 67 68 2c 20 65 76 65 6e 74 29 20 7b 0a 09 high, event) {..
3f600 20 20 20 20 20 20 20 20 2f 2f 74 68 65 20 65 76 //the ev
3f610 65 6e 74 20 63 6f 6e 74 61 69 6e 65 72 0a 09 20 ent container..
3f620 20 20 20 20 20 20 20 74 68 69 73 2e 65 76 65 6e this.even
3f630 74 20 3d 20 65 76 65 6e 74 3b 0a 09 20 20 20 20 t = event;..
3f640 20 20 20 20 2f 2f 74 68 65 20 6c 6f 77 20 76 61 //the low va
3f650 6c 75 65 0a 09 20 20 20 20 20 20 20 20 74 68 69 lue.. thi
3f660 73 2e 6c 6f 77 20 3d 20 6c 6f 77 3b 0a 09 20 20 s.low = low;..
3f670 20 20 20 20 20 20 2f 2f 74 68 65 20 68 69 67 68 //the high
3f680 20 76 61 6c 75 65 0a 09 20 20 20 20 20 20 20 20 value..
3f690 74 68 69 73 2e 68 69 67 68 20 3d 20 68 69 67 68 this.high = high
3f6a0 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 74 68 65 ;.. //the
3f6b0 20 68 69 67 68 20 76 61 6c 75 65 20 66 6f 72 20 high value for
3f6c0 74 68 69 73 20 61 6e 64 20 61 6c 6c 20 63 68 69 this and all chi
3f6d0 6c 64 20 6e 6f 64 65 73 0a 09 20 20 20 20 20 20 ld nodes..
3f6e0 20 20 74 68 69 73 2e 6d 61 78 20 3d 20 74 68 69 this.max = thi
3f6f0 73 2e 68 69 67 68 3b 0a 09 20 20 20 20 20 20 20 s.high;..
3f700 20 2f 2f 74 68 65 20 6e 6f 64 65 73 20 74 6f 20 //the nodes to
3f710 74 68 65 20 6c 65 66 74 0a 09 20 20 20 20 20 20 the left..
3f720 20 20 74 68 69 73 2e 5f 6c 65 66 74 20 3d 20 6e this._left = n
3f730 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f ull;.. //
3f740 74 68 65 20 6e 6f 64 65 73 20 74 6f 20 74 68 65 the nodes to the
3f750 20 72 69 67 68 74 0a 09 20 20 20 20 20 20 20 20 right..
3f760 74 68 69 73 2e 5f 72 69 67 68 74 20 3d 20 6e 75 this._right = nu
3f770 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 74 ll;.. //t
3f780 68 65 20 70 61 72 65 6e 74 20 6e 6f 64 65 0a 09 he parent node..
3f790 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 61 72 this.par
3f7a0 65 6e 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ent = null;..
3f7b0 20 20 20 20 20 2f 2f 74 68 65 20 6e 75 6d 62 65 //the numbe
3f7c0 72 20 6f 66 20 63 68 69 6c 64 20 6e 6f 64 65 73 r of child nodes
3f7d0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 68 .. this.h
3f7e0 65 69 67 68 74 20 3d 20 30 3b 0a 09 20 20 20 20 eight = 0;..
3f7f0 7d 3b 0a 09 20 20 20 20 2f 2a 2a 20 0a 09 09 20 };.. /** ...
3f800 2a 20 20 49 6e 73 65 72 74 20 61 20 6e 6f 64 65 * Insert a node
3f810 20 69 6e 74 6f 20 74 68 65 20 63 6f 72 72 65 63 into the correc
3f820 74 20 73 70 6f 74 20 69 6e 20 74 68 65 20 74 72 t spot in the tr
3f830 65 65 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 ee... * @param
3f840 20 7b 49 6e 74 65 72 76 61 6c 4e 6f 64 65 7d 20 {IntervalNode}
3f850 20 6e 6f 64 65 0a 09 09 20 2a 2f 0a 09 20 20 20 node... */..
3f860 20 49 6e 74 65 72 76 61 6c 4e 6f 64 65 2e 70 72 IntervalNode.pr
3f870 6f 74 6f 74 79 70 65 2e 69 6e 73 65 72 74 20 3d ototype.insert =
3f880 20 66 75 6e 63 74 69 6f 6e 20 28 6e 6f 64 65 29 function (node)
3f890 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
3f8a0 6e 6f 64 65 2e 6c 6f 77 20 3c 3d 20 74 68 69 73 node.low <= this
3f8b0 2e 6c 6f 77 29 20 7b 0a 09 20 20 20 20 20 20 20 .low) {..
3f8c0 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c 65 if (this.le
3f8d0 66 74 20 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 ft === null) {..
3f8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3f8f0 74 68 69 73 2e 6c 65 66 74 20 3d 20 6e 6f 64 65 this.left = node
3f900 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
3f910 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
3f920 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 65 this.le
3f930 66 74 2e 69 6e 73 65 72 74 28 6e 6f 64 65 29 3b ft.insert(node);
3f940 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
3f950 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 . } else
3f960 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 {.. i
3f970 66 20 28 74 68 69 73 2e 72 69 67 68 74 20 3d 3d f (this.right ==
3f980 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 20 20 = null) {..
3f990 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
3f9a0 72 69 67 68 74 20 3d 20 6e 6f 64 65 3b 0a 09 20 right = node;..
3f9b0 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
3f9c0 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
3f9d0 20 20 20 20 20 74 68 69 73 2e 72 69 67 68 74 2e this.right.
3f9e0 69 6e 73 65 72 74 28 6e 6f 64 65 29 3b 0a 09 20 insert(node);..
3f9f0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
3fa00 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a }.. };.
3fa10 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 . /**... * S
3fa20 65 61 72 63 68 20 74 68 65 20 74 72 65 65 20 66 earch the tree f
3fa30 6f 72 20 6e 6f 64 65 73 20 77 68 69 63 68 20 6f or nodes which o
3fa40 76 65 72 6c 61 70 20 0a 09 09 20 2a 20 20 77 69 verlap ... * wi
3fa50 74 68 20 74 68 65 20 67 69 76 65 6e 20 70 6f 69 th the given poi
3fa60 6e 74 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 nt... * @param
3fa70 20 7b 4e 75 6d 62 65 72 7d 20 20 70 6f 69 6e 74 {Number} point
3fa80 20 20 54 68 65 20 70 6f 69 6e 74 20 74 6f 20 71 The point to q
3fa90 75 65 72 79 0a 09 09 20 2a 20 20 40 70 61 72 61 uery... * @para
3faa0 6d 20 20 7b 41 72 72 61 79 7d 20 20 72 65 73 75 m {Array} resu
3fab0 6c 74 73 20 20 54 68 65 20 61 72 72 61 79 20 74 lts The array t
3fac0 6f 20 70 75 74 20 74 68 65 20 72 65 73 75 6c 74 o put the result
3fad0 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 49 6e 74 s... */.. Int
3fae0 65 72 76 61 6c 4e 6f 64 65 2e 70 72 6f 74 6f 74 ervalNode.protot
3faf0 79 70 65 2e 73 65 61 72 63 68 20 3d 20 66 75 6e ype.search = fun
3fb00 63 74 69 6f 6e 20 28 70 6f 69 6e 74 2c 20 72 65 ction (point, re
3fb10 73 75 6c 74 73 29 20 7b 0a 09 20 20 20 20 20 20 sults) {..
3fb20 20 20 2f 2f 20 49 66 20 70 20 69 73 20 74 6f 20 // If p is to
3fb30 74 68 65 20 72 69 67 68 74 20 6f 66 20 74 68 65 the right of the
3fb40 20 72 69 67 68 74 6d 6f 73 74 20 70 6f 69 6e 74 rightmost point
3fb50 20 6f 66 20 61 6e 79 20 69 6e 74 65 72 76 61 6c of any interval
3fb60 0a 09 20 20 20 20 20 20 20 20 2f 2f 20 69 6e 20 .. // in
3fb70 74 68 69 73 20 6e 6f 64 65 20 61 6e 64 20 61 6c this node and al
3fb80 6c 20 63 68 69 6c 64 72 65 6e 2c 20 74 68 65 72 l children, ther
3fb90 65 20 77 6f 6e 27 74 20 62 65 20 61 6e 79 20 6d e won't be any m
3fba0 61 74 63 68 65 73 2e 0a 09 20 20 20 20 20 20 20 atches...
3fbb0 20 69 66 20 28 70 6f 69 6e 74 20 3e 20 74 68 69 if (point > thi
3fbc0 73 2e 6d 61 78 29 20 7b 0a 09 20 20 20 20 20 20 s.max) {..
3fbd0 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 09 20 return;..
3fbe0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
3fbf0 20 20 2f 2f 20 53 65 61 72 63 68 20 6c 65 66 74 // Search left
3fc00 20 63 68 69 6c 64 72 65 6e 0a 09 20 20 20 20 20 children..
3fc10 20 20 20 69 66 20 28 74 68 69 73 2e 6c 65 66 74 if (this.left
3fc20 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 !== null) {..
3fc30 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c this.l
3fc40 65 66 74 2e 73 65 61 72 63 68 28 70 6f 69 6e 74 eft.search(point
3fc50 2c 20 72 65 73 75 6c 74 73 29 3b 0a 09 20 20 20 , results);..
3fc60 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
3fc70 2f 2f 20 43 68 65 63 6b 20 74 68 69 73 20 6e 6f // Check this no
3fc80 64 65 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 de.. if (
3fc90 74 68 69 73 2e 6c 6f 77 20 3c 3d 20 70 6f 69 6e this.low <= poin
3fca0 74 20 26 26 20 74 68 69 73 2e 68 69 67 68 20 3e t && this.high >
3fcb0 20 70 6f 69 6e 74 29 20 7b 0a 09 20 20 20 20 20 point) {..
3fcc0 20 20 20 20 20 20 20 72 65 73 75 6c 74 73 2e 70 results.p
3fcd0 75 73 68 28 74 68 69 73 29 3b 0a 09 20 20 20 20 ush(this);..
3fce0 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 2f }.. /
3fcf0 2f 20 49 66 20 70 20 69 73 20 74 6f 20 74 68 65 / If p is to the
3fd00 20 6c 65 66 74 20 6f 66 20 74 68 65 20 74 69 6d left of the tim
3fd10 65 20 6f 66 20 74 68 69 73 20 69 6e 74 65 72 76 e of this interv
3fd20 61 6c 2c 0a 09 20 20 20 20 20 20 20 20 2f 2f 20 al,.. //
3fd30 74 68 65 6e 20 69 74 20 63 61 6e 27 74 20 62 65 then it can't be
3fd40 20 69 6e 20 61 6e 79 20 63 68 69 6c 64 20 74 6f in any child to
3fd50 20 74 68 65 20 72 69 67 68 74 2e 0a 09 20 20 20 the right...
3fd60 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c 6f if (this.lo
3fd70 77 20 3e 20 70 6f 69 6e 74 29 20 7b 0a 09 20 20 w > point) {..
3fd80 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
3fd90 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
3fda0 20 20 20 20 20 20 2f 2f 20 53 65 61 72 63 68 20 // Search
3fdb0 72 69 67 68 74 20 63 68 69 6c 64 72 65 6e 0a 09 right children..
3fdc0 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
3fdd0 2e 72 69 67 68 74 20 21 3d 3d 20 6e 75 6c 6c 29 .right !== null)
3fde0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
3fdf0 74 68 69 73 2e 72 69 67 68 74 2e 73 65 61 72 63 this.right.searc
3fe00 68 28 70 6f 69 6e 74 2c 20 72 65 73 75 6c 74 73 h(point, results
3fe10 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
3fe20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
3fe30 09 20 2a 20 20 53 65 61 72 63 68 20 74 68 65 20 . * Search the
3fe40 74 72 65 65 20 66 6f 72 20 6e 6f 64 65 73 20 77 tree for nodes w
3fe50 68 69 63 68 20 61 72 65 20 6c 65 73 73 20 0a 09 hich are less ..
3fe60 09 20 2a 20 20 74 68 61 6e 20 74 68 65 20 67 69 . * than the gi
3fe70 76 65 6e 20 70 6f 69 6e 74 0a 09 09 20 2a 20 20 ven point... *
3fe80 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 7d @param {Number}
3fe90 20 20 70 6f 69 6e 74 20 20 54 68 65 20 70 6f 69 point The poi
3fea0 6e 74 20 74 6f 20 71 75 65 72 79 0a 09 09 20 2a nt to query... *
3feb0 20 20 40 70 61 72 61 6d 20 20 7b 41 72 72 61 79 @param {Array
3fec0 7d 20 20 72 65 73 75 6c 74 73 20 20 54 68 65 20 } results The
3fed0 61 72 72 61 79 20 74 6f 20 70 75 74 20 74 68 65 array to put the
3fee0 20 72 65 73 75 6c 74 73 0a 09 09 20 2a 2f 0a 09 results... */..
3fef0 20 20 20 20 49 6e 74 65 72 76 61 6c 4e 6f 64 65 IntervalNode
3ff00 2e 70 72 6f 74 6f 74 79 70 65 2e 73 65 61 72 63 .prototype.searc
3ff10 68 41 66 74 65 72 20 3d 20 66 75 6e 63 74 69 6f hAfter = functio
3ff20 6e 20 28 70 6f 69 6e 74 2c 20 72 65 73 75 6c 74 n (point, result
3ff30 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f 2f s) {.. //
3ff40 20 43 68 65 63 6b 20 74 68 69 73 20 6e 6f 64 65 Check this node
3ff50 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
3ff60 69 73 2e 6c 6f 77 20 3e 3d 20 70 6f 69 6e 74 29 is.low >= point)
3ff70 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
3ff80 72 65 73 75 6c 74 73 2e 70 75 73 68 28 74 68 69 results.push(thi
3ff90 73 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 s);..
3ffa0 20 69 66 20 28 74 68 69 73 2e 6c 65 66 74 20 21 if (this.left !
3ffb0 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 20 == null) {..
3ffc0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
3ffd0 2e 6c 65 66 74 2e 73 65 61 72 63 68 41 66 74 65 .left.searchAfte
3ffe0 72 28 70 6f 69 6e 74 2c 20 72 65 73 75 6c 74 73 r(point, results
3fff0 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
40000 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }.. }..
40010 20 20 20 20 20 20 2f 2f 20 73 65 61 72 63 68 20 // search
40020 74 68 65 20 72 69 67 68 74 20 73 69 64 65 0a 09 the right side..
40030 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
40040 2e 72 69 67 68 74 20 21 3d 3d 20 6e 75 6c 6c 29 .right !== null)
40050 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
40060 74 68 69 73 2e 72 69 67 68 74 2e 73 65 61 72 63 this.right.searc
40070 68 41 66 74 65 72 28 70 6f 69 6e 74 2c 20 72 65 hAfter(point, re
40080 73 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 sults);..
40090 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 }.. };..
400a0 2f 2a 2a 0a 09 09 20 2a 20 20 49 6e 76 6f 6b 65 /**... * Invoke
400b0 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 6f 6e the callback on
400c0 20 74 68 69 73 20 65 6c 65 6d 65 6e 74 20 61 6e this element an
400d0 64 20 62 6f 74 68 20 69 74 27 73 20 62 72 61 6e d both it's bran
400e0 63 68 65 73 0a 09 09 20 2a 20 20 40 70 61 72 61 ches... * @para
400f0 6d 20 20 7b 46 75 6e 63 74 69 6f 6e 7d 20 20 63 m {Function} c
40100 61 6c 6c 62 61 63 6b 0a 09 09 20 2a 2f 0a 09 20 allback... */..
40110 20 20 20 49 6e 74 65 72 76 61 6c 4e 6f 64 65 2e IntervalNode.
40120 70 72 6f 74 6f 74 79 70 65 2e 74 72 61 76 65 72 prototype.traver
40130 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 63 se = function (c
40140 61 6c 6c 62 61 63 6b 29 20 7b 0a 09 20 20 20 20 allback) {..
40150 20 20 20 20 63 61 6c 6c 62 61 63 6b 28 74 68 69 callback(thi
40160 73 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 s);.. if
40170 28 74 68 69 73 2e 6c 65 66 74 20 21 3d 3d 20 6e (this.left !== n
40180 75 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ull) {..
40190 20 20 20 20 74 68 69 73 2e 6c 65 66 74 2e 74 72 this.left.tr
401a0 61 76 65 72 73 65 28 63 61 6c 6c 62 61 63 6b 29 averse(callback)
401b0 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
401c0 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 72 if (this.r
401d0 69 67 68 74 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b ight !== null) {
401e0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
401f0 69 73 2e 72 69 67 68 74 2e 74 72 61 76 65 72 73 is.right.travers
40200 65 28 63 61 6c 6c 62 61 63 6b 29 3b 0a 09 20 20 e(callback);..
40210 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a }.. };.
40220 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 55 . /**... * U
40230 70 64 61 74 65 20 74 68 65 20 68 65 69 67 68 74 pdate the height
40240 20 6f 66 20 74 68 65 20 6e 6f 64 65 0a 09 09 20 of the node...
40250 2a 2f 0a 09 20 20 20 20 49 6e 74 65 72 76 61 6c */.. Interval
40260 4e 6f 64 65 2e 70 72 6f 74 6f 74 79 70 65 2e 75 Node.prototype.u
40270 70 64 61 74 65 48 65 69 67 68 74 20 3d 20 66 75 pdateHeight = fu
40280 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
40290 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c 65 if (this.le
402a0 66 74 20 21 3d 3d 20 6e 75 6c 6c 20 26 26 20 74 ft !== null && t
402b0 68 69 73 2e 72 69 67 68 74 20 21 3d 3d 20 6e 75 his.right !== nu
402c0 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ll) {..
402d0 20 20 20 74 68 69 73 2e 68 65 69 67 68 74 20 3d this.height =
402e0 20 4d 61 74 68 2e 6d 61 78 28 74 68 69 73 2e 6c Math.max(this.l
402f0 65 66 74 2e 68 65 69 67 68 74 2c 20 74 68 69 73 eft.height, this
40300 2e 72 69 67 68 74 2e 68 65 69 67 68 74 29 20 2b .right.height) +
40310 20 31 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 1;.. } e
40320 6c 73 65 20 69 66 20 28 74 68 69 73 2e 72 69 67 lse if (this.rig
40330 68 74 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 ht !== null) {..
40340 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
40350 2e 68 65 69 67 68 74 20 3d 20 74 68 69 73 2e 72 .height = this.r
40360 69 67 68 74 2e 68 65 69 67 68 74 20 2b 20 31 3b ight.height + 1;
40370 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
40380 20 69 66 20 28 74 68 69 73 2e 6c 65 66 74 20 21 if (this.left !
40390 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 20 == null) {..
403a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 68 65 69 this.hei
403b0 67 68 74 20 3d 20 74 68 69 73 2e 6c 65 66 74 2e ght = this.left.
403c0 68 65 69 67 68 74 20 2b 20 31 3b 0a 09 20 20 20 height + 1;..
403d0 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
403e0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
403f0 68 65 69 67 68 74 20 3d 20 30 3b 0a 09 20 20 20 height = 0;..
40400 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 }.. };..
40410 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 55 70 /**... * Up
40420 64 61 74 65 20 74 68 65 20 68 65 69 67 68 74 20 date the height
40430 6f 66 20 74 68 65 20 6e 6f 64 65 0a 09 09 20 2a of the node... *
40440 2f 0a 09 20 20 20 20 49 6e 74 65 72 76 61 6c 4e /.. IntervalN
40450 6f 64 65 2e 70 72 6f 74 6f 74 79 70 65 2e 75 70 ode.prototype.up
40460 64 61 74 65 4d 61 78 20 3d 20 66 75 6e 63 74 69 dateMax = functi
40470 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
40480 20 74 68 69 73 2e 6d 61 78 20 3d 20 74 68 69 73 this.max = this
40490 2e 68 69 67 68 3b 0a 09 20 20 20 20 20 20 20 20 .high;..
404a0 69 66 20 28 74 68 69 73 2e 6c 65 66 74 20 21 3d if (this.left !=
404b0 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 20 20 = null) {..
404c0 20 20 20 20 20 20 20 74 68 69 73 2e 6d 61 78 20 this.max
404d0 3d 20 4d 61 74 68 2e 6d 61 78 28 74 68 69 73 2e = Math.max(this.
404e0 6d 61 78 2c 20 74 68 69 73 2e 6c 65 66 74 2e 6d max, this.left.m
404f0 61 78 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a ax);.. }.
40500 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 . if (thi
40510 73 2e 72 69 67 68 74 20 21 3d 3d 20 6e 75 6c 6c s.right !== null
40520 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
40530 20 74 68 69 73 2e 6d 61 78 20 3d 20 4d 61 74 68 this.max = Math
40540 2e 6d 61 78 28 74 68 69 73 2e 6d 61 78 2c 20 74 .max(this.max, t
40550 68 69 73 2e 72 69 67 68 74 2e 6d 61 78 29 3b 0a his.right.max);.
40560 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
40570 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
40580 20 20 54 68 65 20 62 61 6c 61 6e 63 65 20 69 73 The balance is
40590 20 68 6f 77 20 74 68 65 20 6c 65 61 66 73 20 61 how the leafs a
405a0 72 65 20 64 69 73 74 72 69 62 75 74 65 64 20 6f re distributed o
405b0 6e 20 74 68 65 20 6e 6f 64 65 0a 09 09 20 2a 20 n the node... *
405c0 20 40 72 65 74 75 72 6e 20 20 7b 4e 75 6d 62 65 @return {Numbe
405d0 72 7d 20 20 4e 65 67 61 74 69 76 65 20 6e 75 6d r} Negative num
405e0 62 65 72 73 20 61 72 65 20 62 61 6c 61 6e 63 65 bers are balance
405f0 64 20 74 6f 20 74 68 65 20 72 69 67 68 74 0a 09 d to the right..
40600 09 20 2a 2f 0a 09 20 20 20 20 49 6e 74 65 72 76 . */.. Interv
40610 61 6c 4e 6f 64 65 2e 70 72 6f 74 6f 74 79 70 65 alNode.prototype
40620 2e 67 65 74 42 61 6c 61 6e 63 65 20 3d 20 66 75 .getBalance = fu
40630 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
40640 20 20 20 20 20 76 61 72 20 62 61 6c 61 6e 63 65 var balance
40650 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 20 69 = 0;.. i
40660 66 20 28 74 68 69 73 2e 6c 65 66 74 20 21 3d 3d f (this.left !==
40670 20 6e 75 6c 6c 20 26 26 20 74 68 69 73 2e 72 69 null && this.ri
40680 67 68 74 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a ght !== null) {.
40690 09 20 20 20 20 20 20 20 20 20 20 20 20 62 61 6c . bal
406a0 61 6e 63 65 20 3d 20 74 68 69 73 2e 6c 65 66 74 ance = this.left
406b0 2e 68 65 69 67 68 74 20 2d 20 74 68 69 73 2e 72 .height - this.r
406c0 69 67 68 74 2e 68 65 69 67 68 74 3b 0a 09 20 20 ight.height;..
406d0 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 } else if
406e0 28 74 68 69 73 2e 6c 65 66 74 20 21 3d 3d 20 6e (this.left !== n
406f0 75 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ull) {..
40700 20 20 20 20 62 61 6c 61 6e 63 65 20 3d 20 74 68 balance = th
40710 69 73 2e 6c 65 66 74 2e 68 65 69 67 68 74 20 2b is.left.height +
40720 20 31 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 1;.. } e
40730 6c 73 65 20 69 66 20 28 74 68 69 73 2e 72 69 67 lse if (this.rig
40740 68 74 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 ht !== null) {..
40750 20 20 20 20 20 20 20 20 20 20 20 20 62 61 6c 61 bala
40760 6e 63 65 20 3d 20 2d 28 74 68 69 73 2e 72 69 67 nce = -(this.rig
40770 68 74 2e 68 65 69 67 68 74 20 2b 20 31 29 3b 0a ht.height + 1);.
40780 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
40790 20 20 20 20 72 65 74 75 72 6e 20 62 61 6c 61 6e return balan
407a0 63 65 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 ce;.. };..
407b0 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 72 65 74 75 /**... * @retu
407c0 72 6e 73 20 7b 42 6f 6f 6c 65 61 6e 7d 20 74 72 rns {Boolean} tr
407d0 75 65 20 69 66 20 74 68 69 73 20 6e 6f 64 65 20 ue if this node
407e0 69 73 20 74 68 65 20 6c 65 66 74 20 63 68 69 6c is the left chil
407f0 64 0a 09 09 20 2a 20 20 6f 66 20 69 74 73 20 70 d... * of its p
40800 61 72 65 6e 74 0a 09 09 20 2a 2f 0a 09 20 20 20 arent... */..
40810 20 49 6e 74 65 72 76 61 6c 4e 6f 64 65 2e 70 72 IntervalNode.pr
40820 6f 74 6f 74 79 70 65 2e 69 73 4c 65 66 74 43 68 ototype.isLeftCh
40830 69 6c 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ild = function (
40840 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ) {.. ret
40850 75 72 6e 20 74 68 69 73 2e 70 61 72 65 6e 74 20 urn this.parent
40860 21 3d 3d 20 6e 75 6c 6c 20 26 26 20 74 68 69 73 !== null && this
40870 2e 70 61 72 65 6e 74 2e 6c 65 66 74 20 3d 3d 3d .parent.left ===
40880 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
40890 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 67 65 /**... * ge
408a0 74 2f 73 65 74 20 74 68 65 20 6c 65 66 74 20 6e t/set the left n
408b0 6f 64 65 0a 09 09 20 2a 20 20 40 74 79 70 65 20 ode... * @type
408c0 7b 49 6e 74 65 72 76 61 6c 4e 6f 64 65 7d 0a 09 {IntervalNode}..
408d0 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
408e0 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
408f0 49 6e 74 65 72 76 61 6c 4e 6f 64 65 2e 70 72 6f IntervalNode.pro
40900 74 6f 74 79 70 65 2c 20 27 6c 65 66 74 27 2c 20 totype, 'left',
40910 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 {.. get:
40920 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
40930 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
40940 6e 20 74 68 69 73 2e 5f 6c 65 66 74 3b 0a 09 20 n this._left;..
40950 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 },..
40960 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e set: function
40970 20 28 6e 6f 64 65 29 20 7b 0a 09 20 20 20 20 20 (node) {..
40980 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 65 66 this._lef
40990 74 20 3d 20 6e 6f 64 65 3b 0a 09 20 20 20 20 20 t = node;..
409a0 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 20 if (node
409b0 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 !== null) {..
409c0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 nod
409d0 65 2e 70 61 72 65 6e 74 20 3d 20 74 68 69 73 3b e.parent = this;
409e0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
409f0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
40a00 73 2e 75 70 64 61 74 65 48 65 69 67 68 74 28 29 s.updateHeight()
40a10 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 ;.. t
40a20 68 69 73 2e 75 70 64 61 74 65 4d 61 78 28 29 3b his.updateMax();
40a30 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
40a40 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
40a50 20 2a 20 20 67 65 74 2f 73 65 74 20 74 68 65 20 * get/set the
40a60 72 69 67 68 74 20 6e 6f 64 65 0a 09 09 20 2a 20 right node... *
40a70 20 40 74 79 70 65 20 7b 49 6e 74 65 72 76 61 6c @type {Interval
40a80 4e 6f 64 65 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 Node}... */..
40a90 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
40aa0 6f 70 65 72 74 79 28 49 6e 74 65 72 76 61 6c 4e operty(IntervalN
40ab0 6f 64 65 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 ode.prototype, '
40ac0 72 69 67 68 74 27 2c 20 7b 0a 09 20 20 20 20 20 right', {..
40ad0 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e get: function
40ae0 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 () {..
40af0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
40b00 72 69 67 68 74 3b 0a 09 20 20 20 20 20 20 20 20 right;..
40b10 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a },.. set:
40b20 20 66 75 6e 63 74 69 6f 6e 20 28 6e 6f 64 65 29 function (node)
40b30 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
40b40 74 68 69 73 2e 5f 72 69 67 68 74 20 3d 20 6e 6f this._right = no
40b50 64 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 de;..
40b60 20 69 66 20 28 6e 6f 64 65 20 21 3d 3d 20 6e 75 if (node !== nu
40b70 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ll) {..
40b80 20 20 20 20 20 20 20 6e 6f 64 65 2e 70 61 72 65 node.pare
40b90 6e 74 20 3d 20 74 68 69 73 3b 0a 09 20 20 20 20 nt = this;..
40ba0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
40bb0 20 20 20 20 20 20 20 74 68 69 73 2e 75 70 64 61 this.upda
40bc0 74 65 48 65 69 67 68 74 28 29 3b 0a 09 20 20 20 teHeight();..
40bd0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 75 70 this.up
40be0 64 61 74 65 4d 61 78 28 29 3b 0a 09 20 20 20 20 dateMax();..
40bf0 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
40c00 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 6e 75 /**... * nu
40c10 6c 6c 20 6f 75 74 20 72 65 66 65 72 65 6e 63 65 ll out reference
40c20 73 2e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 49 6e s.... */.. In
40c30 74 65 72 76 61 6c 4e 6f 64 65 2e 70 72 6f 74 6f tervalNode.proto
40c40 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 type.dispose = f
40c50 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
40c60 20 20 20 20 20 20 74 68 69 73 2e 70 61 72 65 6e this.paren
40c70 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 t = null;..
40c80 20 20 20 74 68 69 73 2e 5f 6c 65 66 74 20 3d 20 this._left =
40c90 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 null;.. t
40ca0 68 69 73 2e 5f 72 69 67 68 74 20 3d 20 6e 75 6c his._right = nul
40cb0 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
40cc0 2e 65 76 65 6e 74 20 3d 20 6e 75 6c 6c 3b 0a 09 .event = null;..
40cd0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f };.. ////
40ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
40cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
40d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
40d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
40d20 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2f 09 ///////.. //.
40d30 45 4e 44 20 49 4e 54 45 52 56 41 4c 20 4e 4f 44 END INTERVAL NOD
40d40 45 20 48 45 4c 50 45 52 0a 09 20 20 20 20 2f 2f E HELPER.. //
40d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
40d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
40d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
40d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
40d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 72 /////////.. r
40da0 65 74 75 72 6e 20 54 6f 6e 65 2e 49 6e 74 65 72 eturn Tone.Inter
40db0 76 61 6c 54 69 6d 65 6c 69 6e 65 3b 0a 09 7d 29 valTimeline;..})
40dc0 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 ;..Module(functi
40dd0 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 on (Tone) {..
40de0 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 .. /**... *
40df0 20 40 63 6c 61 73 73 20 20 54 72 61 6e 73 70 6f @class Transpo
40e00 72 74 20 66 6f 72 20 74 69 6d 69 6e 67 20 6d 75 rt for timing mu
40e10 73 69 63 61 6c 20 65 76 65 6e 74 73 2e 0a 09 09 sical events....
40e20 20 2a 20 20 20 20 20 20 20 20 20 20 53 75 70 70 * Supp
40e30 6f 72 74 73 20 74 65 6d 70 6f 20 63 75 72 76 65 orts tempo curve
40e40 73 20 61 6e 64 20 74 69 6d 65 20 63 68 61 6e 67 s and time chang
40e50 65 73 2e 20 55 6e 6c 69 6b 65 20 62 72 6f 77 73 es. Unlike brows
40e60 65 72 2d 62 61 73 65 64 20 74 69 6d 69 6e 67 20 er-based timing
40e70 28 73 65 74 49 6e 74 65 72 76 61 6c 2c 20 72 65 (setInterval, re
40e80 71 75 65 73 74 41 6e 69 6d 61 74 69 6f 6e 46 72 questAnimationFr
40e90 61 6d 65 29 0a 09 09 20 2a 20 20 20 20 20 20 20 ame)... *
40ea0 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 Tone.Transpor
40eb0 74 20 74 69 6d 69 6e 67 20 65 76 65 6e 74 73 20 t timing events
40ec0 70 61 73 73 20 69 6e 20 74 68 65 20 65 78 61 63 pass in the exac
40ed0 74 20 74 69 6d 65 20 6f 66 20 74 68 65 20 73 63 t time of the sc
40ee0 68 65 64 75 6c 65 64 20 65 76 65 6e 74 0a 09 09 heduled event...
40ef0 20 2a 20 20 20 20 20 20 20 20 20 20 69 6e 20 74 * in t
40f00 68 65 20 61 72 67 75 6d 65 6e 74 20 6f 66 20 74 he argument of t
40f10 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 he callback func
40f20 74 69 6f 6e 2e 20 50 61 73 73 20 74 68 61 74 20 tion. Pass that
40f30 74 69 6d 65 20 76 61 6c 75 65 20 74 6f 20 74 68 time value to th
40f40 65 20 6f 62 6a 65 63 74 0a 09 09 20 2a 20 20 20 e object... *
40f50 20 20 20 20 20 20 20 79 6f 75 27 72 65 20 73 63 you're sc
40f60 68 65 64 75 6c 69 6e 67 2e 20 3c 62 72 3e 3c 62 heduling. <br><b
40f70 72 3e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 r>... *
40f80 20 41 20 73 69 6e 67 6c 65 20 74 72 61 6e 73 70 A single transp
40f90 6f 72 74 20 69 73 20 63 72 65 61 74 65 64 20 66 ort is created f
40fa0 6f 72 20 79 6f 75 20 77 68 65 6e 20 74 68 65 20 or you when the
40fb0 6c 69 62 72 61 72 79 20 69 73 20 69 6e 69 74 69 library is initi
40fc0 61 6c 69 7a 65 64 2e 20 0a 09 09 20 2a 20 20 20 alized. ... *
40fd0 20 20 20 20 20 20 20 3c 62 72 3e 3c 62 72 3e 0a <br><br>.
40fe0 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 54 68 .. * Th
40ff0 65 20 74 72 61 6e 73 70 6f 72 74 20 65 6d 69 74 e transport emit
41000 73 20 74 68 65 20 65 76 65 6e 74 73 3a 20 22 73 s the events: "s
41010 74 61 72 74 22 2c 20 22 73 74 6f 70 22 2c 20 22 tart", "stop", "
41020 70 61 75 73 65 22 2c 20 61 6e 64 20 22 6c 6f 6f pause", and "loo
41030 70 22 20 77 68 69 63 68 20 61 72 65 0a 09 09 20 p" which are...
41040 2a 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 65 * calle
41050 64 20 77 69 74 68 20 74 68 65 20 74 69 6d 65 20 d with the time
41060 6f 66 20 74 68 61 74 20 65 76 65 6e 74 20 61 73 of that event as
41070 20 74 68 65 20 61 72 67 75 6d 65 6e 74 2e 20 0a the argument. .
41080 09 09 20 2a 0a 09 09 20 2a 20 20 40 65 78 74 65 .. *... * @exte
41090 6e 64 73 20 7b 54 6f 6e 65 2e 45 6d 69 74 74 65 nds {Tone.Emitte
410a0 72 7d 0a 09 09 20 2a 20 20 40 73 69 6e 67 6c 65 r}... * @single
410b0 74 6f 6e 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 ton... * @examp
410c0 6c 65 0a 09 09 20 2a 20 2f 2f 72 65 70 65 61 74 le... * //repeat
410d0 65 64 20 65 76 65 6e 74 20 65 76 65 72 79 20 38 ed event every 8
410e0 74 68 20 6e 6f 74 65 0a 09 09 20 2a 20 54 6f 6e th note... * Ton
410f0 65 2e 54 72 61 6e 73 70 6f 72 74 2e 73 63 68 65 e.Transport.sche
41100 64 75 6c 65 52 65 70 65 61 74 28 66 75 6e 63 74 duleRepeat(funct
41110 69 6f 6e 28 74 69 6d 65 29 7b 0a 09 09 20 2a 20 ion(time){... *
41120 09 2f 2f 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 .//do something
41130 77 69 74 68 20 74 68 65 20 74 69 6d 65 0a 09 09 with the time...
41140 20 2a 20 7d 2c 20 22 38 6e 22 29 3b 0a 09 09 20 * }, "8n");...
41150 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
41160 20 2f 2f 73 63 68 65 64 75 6c 65 20 61 6e 20 65 //schedule an e
41170 76 65 6e 74 20 6f 6e 20 74 68 65 20 31 36 74 68 vent on the 16th
41180 20 6d 65 61 73 75 72 65 0a 09 09 20 2a 20 54 6f measure... * To
41190 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 73 63 68 ne.Transport.sch
411a0 65 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 28 74 edule(function(t
411b0 69 6d 65 29 7b 0a 09 09 20 2a 20 09 2f 2f 64 6f ime){... * .//do
411c0 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 something with
411d0 74 68 65 20 74 69 6d 65 0a 09 09 20 2a 20 7d 2c the time... * },
411e0 20 22 31 36 3a 30 3a 30 22 29 3b 0a 09 09 20 2a "16:0:0");... *
411f0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e /.. Tone.Tran
41200 73 70 6f 72 74 20 3d 20 66 75 6e 63 74 69 6f 6e sport = function
41210 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 () {.. T
41220 6f 6e 65 2e 45 6d 69 74 74 65 72 2e 63 61 6c 6c one.Emitter.call
41230 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 (this);..
41240 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ///////////////
41250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41280 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 20 20 ////////..
41290 20 20 2f 2f 09 4c 4f 4f 50 49 4e 47 0a 09 20 20 //.LOOPING..
412a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //////////
412b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
412c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
412d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
412e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 ////////////..
412f0 20 20 20 20 20 20 2f 2a 2a 20 0a 09 09 09 20 2a /** .... *
41300 20 09 49 66 20 74 68 65 20 74 72 61 6e 73 70 6f .If the transpo
41310 72 74 20 6c 6f 6f 70 73 20 6f 72 20 6e 6f 74 2e rt loops or not.
41320 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 62 .... * @type {b
41330 6f 6f 6c 65 61 6e 7d 0a 09 09 09 20 2a 2f 0a 09 oolean}.... */..
41340 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 6f this.loo
41350 70 20 3d 20 66 61 6c 73 65 3b 0a 09 20 20 20 20 p = false;..
41360 20 20 20 20 2f 2a 2a 20 0a 09 09 09 20 2a 20 09 /** .... * .
41370 54 68 65 20 6c 6f 6f 70 20 73 74 61 72 74 20 70 The loop start p
41380 6f 73 69 74 69 6f 6e 20 69 6e 20 74 69 63 6b 73 osition in ticks
41390 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 .... * @type {T
413a0 69 63 6b 73 7d 0a 09 09 09 20 2a 20 20 40 70 72 icks}.... * @pr
413b0 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 ivate.... */..
413c0 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f 6f 70 this._loop
413d0 53 74 61 72 74 20 3d 20 30 3b 0a 09 20 20 20 20 Start = 0;..
413e0 20 20 20 20 2f 2a 2a 20 0a 09 09 09 20 2a 20 09 /** .... * .
413f0 54 68 65 20 6c 6f 6f 70 20 65 6e 64 20 70 6f 73 The loop end pos
41400 69 74 69 6f 6e 20 69 6e 20 74 69 63 6b 73 0a 09 ition in ticks..
41410 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 69 63 .. * @type {Tic
41420 6b 73 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 ks}.... * @priv
41430 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
41440 20 20 20 20 74 68 69 73 2e 5f 6c 6f 6f 70 45 6e this._loopEn
41450 64 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 20 d = 0;..
41460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
414a0 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 20 20 20 ///////..
414b0 20 2f 2f 09 43 4c 4f 43 4b 2f 54 45 4d 50 4f 0a //.CLOCK/TEMPO.
414c0 09 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f . ///////
414d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
414e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
414f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a ///////////////.
41510 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
41520 20 2a 20 20 50 75 6c 73 65 73 20 70 65 72 20 71 * Pulses per q
41530 75 61 72 74 65 72 20 69 73 20 74 68 65 20 6e 75 uarter is the nu
41540 6d 62 65 72 20 6f 66 20 74 69 63 6b 73 20 70 65 mber of ticks pe
41550 72 20 71 75 61 72 74 65 72 20 6e 6f 74 65 2e 0a r quarter note..
41560 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
41570 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 4e ... * @type {N
41580 75 6d 62 65 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 umber}.... */..
41590 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 70 71 this._ppq
415a0 20 3d 20 54 72 61 6e 73 70 6f 72 74 43 6f 6e 73 = TransportCons
415b0 74 72 75 63 74 6f 72 2e 64 65 66 61 75 6c 74 73 tructor.defaults
415c0 2e 50 50 51 3b 0a 09 20 20 20 20 20 20 20 20 2f .PPQ;.. /
415d0 2a 2a 0a 09 09 09 20 2a 20 20 77 61 74 63 68 65 **.... * watche
415e0 73 20 74 68 65 20 6d 61 69 6e 20 6f 73 63 69 6c s the main oscil
415f0 6c 61 74 6f 72 20 66 6f 72 20 74 69 6d 69 6e 67 lator for timing
41600 20 74 69 63 6b 73 0a 09 09 09 20 2a 20 20 69 6e ticks.... * in
41610 69 74 69 61 6c 6c 79 20 73 74 61 72 74 73 20 61 itially starts a
41620 74 20 31 32 30 62 70 6d 0a 09 09 09 20 2a 20 20 t 120bpm.... *
41630 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 20 20 @private.... *
41640 40 74 79 70 65 20 7b 54 6f 6e 65 2e 43 6c 6f 63 @type {Tone.Cloc
41650 6b 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 k}.... */..
41660 20 20 20 74 68 69 73 2e 5f 63 6c 6f 63 6b 20 3d this._clock =
41670 20 6e 65 77 20 54 6f 6e 65 2e 43 6c 6f 63 6b 28 new Tone.Clock(
41680 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 {.. '
41690 63 61 6c 6c 62 61 63 6b 27 3a 20 74 68 69 73 2e callback': this.
416a0 5f 70 72 6f 63 65 73 73 54 69 63 6b 2e 62 69 6e _processTick.bin
416b0 64 28 74 68 69 73 29 2c 0a 09 20 20 20 20 20 20 d(this),..
416c0 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 'frequency
416d0 27 3a 20 30 0a 09 20 20 20 20 20 20 20 20 7d 29 ': 0.. })
416e0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
416f0 5f 62 69 6e 64 43 6c 6f 63 6b 45 76 65 6e 74 73 _bindClockEvents
41700 28 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a ();.. /**
41710 0a 09 09 09 20 2a 20 20 54 68 65 20 42 65 61 74 .... * The Beat
41720 73 20 50 65 72 20 4d 69 6e 75 74 65 20 6f 66 20 s Per Minute of
41730 74 68 65 20 54 72 61 6e 73 70 6f 72 74 2e 20 0a the Transport. .
41740 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 42 50 ... * @type {BP
41750 4d 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 M}.... * @signa
41760 6c 0a 09 09 09 20 2a 20 20 40 65 78 61 6d 70 6c l.... * @exampl
41770 65 0a 09 09 09 20 2a 20 54 6f 6e 65 2e 54 72 61 e.... * Tone.Tra
41780 6e 73 70 6f 72 74 2e 62 70 6d 2e 76 61 6c 75 65 nsport.bpm.value
41790 20 3d 20 38 30 3b 0a 09 09 09 20 2a 20 2f 2f 72 = 80;.... * //r
417a0 61 6d 70 20 74 68 65 20 62 70 6d 20 74 6f 20 31 amp the bpm to 1
417b0 32 30 20 6f 76 65 72 20 31 30 20 73 65 63 6f 6e 20 over 10 secon
417c0 64 73 0a 09 09 09 20 2a 20 54 6f 6e 65 2e 54 72 ds.... * Tone.Tr
417d0 61 6e 73 70 6f 72 74 2e 62 70 6d 2e 72 61 6d 70 ansport.bpm.ramp
417e0 54 6f 28 31 32 30 2c 20 31 30 29 3b 0a 09 09 09 To(120, 10);....
417f0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
41800 73 2e 62 70 6d 20 3d 20 74 68 69 73 2e 5f 63 6c s.bpm = this._cl
41810 6f 63 6b 2e 66 72 65 71 75 65 6e 63 79 3b 0a 09 ock.frequency;..
41820 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 70 6d this.bpm
41830 2e 5f 74 6f 55 6e 69 74 73 20 3d 20 74 68 69 73 ._toUnits = this
41840 2e 5f 74 6f 55 6e 69 74 73 2e 62 69 6e 64 28 74 ._toUnits.bind(t
41850 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 his);.. t
41860 68 69 73 2e 62 70 6d 2e 5f 66 72 6f 6d 55 6e 69 his.bpm._fromUni
41870 74 73 20 3d 20 74 68 69 73 2e 5f 66 72 6f 6d 55 ts = this._fromU
41880 6e 69 74 73 2e 62 69 6e 64 28 74 68 69 73 29 3b nits.bind(this);
41890 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 .. this.b
418a0 70 6d 2e 75 6e 69 74 73 20 3d 20 54 6f 6e 65 2e pm.units = Tone.
418b0 54 79 70 65 2e 42 50 4d 3b 0a 09 20 20 20 20 20 Type.BPM;..
418c0 20 20 20 74 68 69 73 2e 62 70 6d 2e 76 61 6c 75 this.bpm.valu
418d0 65 20 3d 20 54 72 61 6e 73 70 6f 72 74 43 6f 6e e = TransportCon
418e0 73 74 72 75 63 74 6f 72 2e 64 65 66 61 75 6c 74 structor.default
418f0 73 2e 62 70 6d 3b 0a 09 20 20 20 20 20 20 20 20 s.bpm;..
41900 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 27 this._readOnly('
41910 62 70 6d 27 29 3b 0a 09 20 20 20 20 20 20 20 20 bpm');..
41920 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 74 /**.... * The t
41930 69 6d 65 20 73 69 67 6e 61 74 75 72 65 2c 20 6f ime signature, o
41940 72 20 6d 6f 72 65 20 61 63 63 75 72 61 74 65 6c r more accuratel
41950 79 20 74 68 65 20 6e 75 6d 65 72 61 74 6f 72 0a y the numerator.
41960 09 09 09 20 2a 20 20 6f 66 20 74 68 65 20 74 69 ... * of the ti
41970 6d 65 20 73 69 67 6e 61 74 75 72 65 20 6f 76 65 me signature ove
41980 72 20 61 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 20 r a denominator
41990 6f 66 20 34 2e 20 0a 09 09 09 20 2a 20 20 40 74 of 4. .... * @t
419a0 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 09 ype {Number}....
419b0 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
419c0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
419d0 73 2e 5f 74 69 6d 65 53 69 67 6e 61 74 75 72 65 s._timeSignature
419e0 20 3d 20 54 72 61 6e 73 70 6f 72 74 43 6f 6e 73 = TransportCons
419f0 74 72 75 63 74 6f 72 2e 64 65 66 61 75 6c 74 73 tructor.defaults
41a00 2e 74 69 6d 65 53 69 67 6e 61 74 75 72 65 3b 0a .timeSignature;.
41a10 09 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f . ///////
41a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41a60 0a 09 20 20 20 20 20 20 20 20 2f 2f 09 54 49 4d .. //.TIM
41a70 45 4c 49 4e 45 20 45 56 45 4e 54 53 0a 09 20 20 ELINE EVENTS..
41a80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //////////
41a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 ////////////..
41ad0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
41ae0 20 41 6c 6c 20 74 68 65 20 65 76 65 6e 74 73 20 All the events
41af0 69 6e 20 61 6e 20 6f 62 6a 65 63 74 20 74 6f 20 in an object to
41b00 6b 65 65 70 20 74 72 61 63 6b 20 62 79 20 49 44 keep track by ID
41b10 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4f .... * @type {O
41b20 62 6a 65 63 74 7d 0a 09 09 09 20 2a 20 20 40 70 bject}.... * @p
41b30 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
41b40 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 63 68 this._sch
41b50 65 64 75 6c 65 64 45 76 65 6e 74 73 20 3d 20 7b eduledEvents = {
41b60 7d 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a };.. /**.
41b70 09 09 09 20 2a 20 20 54 68 65 20 65 76 65 6e 74 ... * The event
41b80 20 49 44 20 63 6f 75 6e 74 65 72 0a 09 09 09 20 ID counter....
41b90 2a 20 20 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 * @type {Number
41ba0 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
41bb0 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
41bc0 20 20 74 68 69 73 2e 5f 65 76 65 6e 74 49 44 20 this._eventID
41bd0 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a = 0;.. /*
41be0 2a 0a 09 09 09 20 2a 20 09 54 68 65 20 73 63 68 *.... * .The sch
41bf0 65 64 75 6c 65 64 20 65 76 65 6e 74 73 2e 0a 09 eduled events...
41c00 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e .. * @type {Ton
41c10 65 2e 54 69 6d 65 6c 69 6e 65 7d 0a 09 09 09 20 e.Timeline}....
41c20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
41c30 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
41c40 2e 5f 74 69 6d 65 6c 69 6e 65 20 3d 20 6e 65 77 ._timeline = new
41c50 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 28 29 Tone.Timeline()
41c60 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
41c70 09 09 20 2a 20 20 52 65 70 65 61 74 65 64 20 65 .. * Repeated e
41c80 76 65 6e 74 73 0a 09 09 09 20 2a 20 20 40 74 79 vents.... * @ty
41c90 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 09 20 2a pe {Array}.... *
41ca0 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
41cb0 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
41cc0 5f 72 65 70 65 61 74 65 64 45 76 65 6e 74 73 20 _repeatedEvents
41cd0 3d 20 6e 65 77 20 54 6f 6e 65 2e 49 6e 74 65 72 = new Tone.Inter
41ce0 76 61 6c 54 69 6d 65 6c 69 6e 65 28 29 3b 0a 09 valTimeline();..
41cf0 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
41d00 2a 20 20 45 76 65 6e 74 73 20 74 68 61 74 20 6f * Events that o
41d10 63 63 75 72 20 6f 6e 63 65 0a 09 09 09 20 2a 20 ccur once.... *
41d20 20 40 74 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 @type {Array}..
41d30 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
41d40 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
41d50 68 69 73 2e 5f 6f 6e 63 65 45 76 65 6e 74 73 20 his._onceEvents
41d60 3d 20 6e 65 77 20 54 6f 6e 65 2e 54 69 6d 65 6c = new Tone.Timel
41d70 69 6e 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ine();..
41d80 2f 2a 2a 20 0a 09 09 09 20 2a 20 20 41 6c 6c 20 /** .... * All
41d90 6f 66 20 74 68 65 20 73 79 6e 63 65 64 20 53 69 of the synced Si
41da0 67 6e 61 6c 73 0a 09 09 09 20 2a 20 20 40 70 72 gnals.... * @pr
41db0 69 76 61 74 65 20 0a 09 09 09 20 2a 20 20 40 74 ivate .... * @t
41dc0 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 09 20 ype {Array}....
41dd0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
41de0 2e 5f 73 79 6e 63 65 64 53 69 67 6e 61 6c 73 20 ._syncedSignals
41df0 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 20 20 20 2f = [];.. /
41e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41e40 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 20 20 20 20 //////..
41e50 2f 2f 09 53 57 49 4e 47 0a 09 20 20 20 20 20 20 //.SWING..
41e60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //////////////
41e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
41ea0 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 20 20 ////////..
41eb0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
41ec0 20 73 75 62 64 69 76 69 73 69 6f 6e 20 6f 66 20 subdivision of
41ed0 74 68 65 20 73 77 69 6e 67 0a 09 09 09 20 2a 20 the swing.... *
41ee0 20 40 74 79 70 65 20 20 7b 54 69 63 6b 73 7d 0a @type {Ticks}.
41ef0 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
41f00 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
41f10 74 68 69 73 2e 5f 73 77 69 6e 67 54 69 63 6b 73 this._swingTicks
41f20 20 3d 20 54 72 61 6e 73 70 6f 72 74 43 6f 6e 73 = TransportCons
41f30 74 72 75 63 74 6f 72 2e 64 65 66 61 75 6c 74 73 tructor.defaults
41f40 2e 50 50 51 20 2f 20 32 3b 0a 09 20 20 20 20 20 .PPQ / 2;..
41f50 20 20 20 2f 2f 38 6e 0a 09 20 20 20 20 20 20 20 //8n..
41f60 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
41f70 73 77 69 6e 67 20 61 6d 6f 75 6e 74 0a 09 09 09 swing amount....
41f80 20 2a 20 20 40 74 79 70 65 20 7b 4e 6f 72 6d 61 * @type {Norma
41f90 6c 52 61 6e 67 65 7d 0a 09 09 09 20 2a 20 20 40 lRange}.... * @
41fa0 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
41fb0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 77 this._sw
41fc0 69 6e 67 41 6d 6f 75 6e 74 20 3d 20 30 3b 0a 09 ingAmount = 0;..
41fd0 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 };.. Tone
41fe0 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 54 72 61 .extend(Tone.Tra
41ff0 6e 73 70 6f 72 74 2c 20 54 6f 6e 65 2e 45 6d 69 nsport, Tone.Emi
42000 74 74 65 72 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a tter);.. /**.
42010 09 09 20 2a 20 20 74 68 65 20 64 65 66 61 75 6c .. * the defaul
42020 74 73 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b ts... * @type {
42030 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 20 20 40 63 Object}... * @c
42040 6f 6e 73 74 0a 09 09 20 2a 20 20 40 73 74 61 74 onst... * @stat
42050 69 63 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f ic... */.. To
42060 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 64 65 66 ne.Transport.def
42070 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 aults = {..
42080 20 20 20 27 62 70 6d 27 3a 20 31 32 30 2c 0a 09 'bpm': 120,..
42090 20 20 20 20 20 20 20 20 27 73 77 69 6e 67 27 3a 'swing':
420a0 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 73 77 0,.. 'sw
420b0 69 6e 67 53 75 62 64 69 76 69 73 69 6f 6e 27 3a ingSubdivision':
420c0 20 27 38 6e 27 2c 0a 09 20 20 20 20 20 20 20 20 '8n',..
420d0 27 74 69 6d 65 53 69 67 6e 61 74 75 72 65 27 3a 'timeSignature':
420e0 20 34 2c 0a 09 20 20 20 20 20 20 20 20 27 6c 6f 4,.. 'lo
420f0 6f 70 53 74 61 72 74 27 3a 20 30 2c 0a 09 20 20 opStart': 0,..
42100 20 20 20 20 20 20 27 6c 6f 6f 70 45 6e 64 27 3a 'loopEnd':
42110 20 27 34 6d 27 2c 0a 09 20 20 20 20 20 20 20 20 '4m',..
42120 27 50 50 51 27 3a 20 31 39 32 0a 09 20 20 20 20 'PPQ': 192..
42130 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f };.. ////////
42140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
42150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
42160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
42170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
42180 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2f 09 ///////.. //.
42190 54 49 43 4b 53 0a 09 20 20 20 20 2f 2f 2f 2f 2f TICKS.. /////
421a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
421b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
421c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
421d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
421e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 //////////..
421f0 2f 2a 2a 0a 09 09 20 2a 20 20 63 61 6c 6c 65 64 /**... * called
42200 20 6f 6e 20 65 76 65 72 79 20 74 69 63 6b 0a 09 on every tick..
42210 09 20 2a 20 20 40 70 61 72 61 6d 20 20 20 7b 6e . * @param {n
42220 75 6d 62 65 72 7d 20 74 69 63 6b 54 69 6d 65 20 umber} tickTime
42230 63 6c 6f 63 6b 20 72 65 6c 61 74 69 76 65 20 74 clock relative t
42240 69 63 6b 20 74 69 6d 65 0a 09 09 20 2a 20 20 40 ick time... * @
42250 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 private... */..
42260 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 Tone.Transpor
42270 74 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 70 72 6f t.prototype._pro
42280 63 65 73 73 54 69 63 6b 20 3d 20 66 75 6e 63 74 cessTick = funct
42290 69 6f 6e 20 28 74 69 63 6b 54 69 6d 65 29 20 7b ion (tickTime) {
422a0 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 74 69 .. var ti
422b0 63 6b 73 20 3d 20 74 68 69 73 2e 5f 63 6c 6f 63 cks = this._cloc
422c0 6b 2e 74 69 63 6b 73 3b 0a 09 20 20 20 20 20 20 k.ticks;..
422d0 20 20 2f 2f 68 61 6e 64 6c 65 20 73 77 69 6e 67 //handle swing
422e0 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
422f0 69 73 2e 5f 73 77 69 6e 67 41 6d 6f 75 6e 74 20 is._swingAmount
42300 3e 20 30 20 26 26 20 74 69 63 6b 73 20 25 20 74 > 0 && ticks % t
42310 68 69 73 2e 5f 70 70 71 20 21 3d 3d 20 30 20 26 his._ppq !== 0 &
42320 26 20 2f 2f 6e 6f 74 20 6f 6e 20 61 20 64 6f 77 & //not on a dow
42330 6e 62 65 61 74 0a 09 20 20 20 20 20 20 20 20 20 nbeat..
42340 20 20 20 74 69 63 6b 73 20 25 20 28 74 68 69 73 ticks % (this
42350 2e 5f 73 77 69 6e 67 54 69 63 6b 73 20 2a 20 32 ._swingTicks * 2
42360 29 20 21 3d 3d 20 30 29 20 7b 0a 09 20 20 20 20 ) !== 0) {..
42370 20 20 20 20 20 20 20 20 2f 2f 61 64 64 20 73 6f //add so
42380 6d 65 20 73 77 69 6e 67 0a 09 20 20 20 20 20 20 me swing..
42390 20 20 20 20 20 20 76 61 72 20 70 72 6f 67 72 65 var progre
423a0 73 73 20 3d 20 74 69 63 6b 73 20 25 20 28 74 68 ss = ticks % (th
423b0 69 73 2e 5f 73 77 69 6e 67 54 69 63 6b 73 20 2a is._swingTicks *
423c0 20 32 29 20 2f 20 28 74 68 69 73 2e 5f 73 77 69 2) / (this._swi
423d0 6e 67 54 69 63 6b 73 20 2a 20 32 29 3b 0a 09 20 ngTicks * 2);..
423e0 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 61 var a
423f0 6d 6f 75 6e 74 20 3d 20 4d 61 74 68 2e 73 69 6e mount = Math.sin
42400 28 70 72 6f 67 72 65 73 73 20 2a 20 4d 61 74 68 (progress * Math
42410 2e 50 49 29 20 2a 20 74 68 69 73 2e 5f 73 77 69 .PI) * this._swi
42420 6e 67 41 6d 6f 75 6e 74 3b 0a 09 20 20 20 20 20 ngAmount;..
42430 20 20 20 20 20 20 20 74 69 63 6b 54 69 6d 65 20 tickTime
42440 2b 3d 20 54 6f 6e 65 2e 54 69 6d 65 28 74 68 69 += Tone.Time(thi
42450 73 2e 5f 73 77 69 6e 67 54 69 63 6b 73 20 2a 20 s._swingTicks *
42460 32 20 2f 20 33 2c 20 27 69 27 29 2e 65 76 61 6c 2 / 3, 'i').eval
42470 28 29 20 2a 20 61 6d 6f 75 6e 74 3b 0a 09 20 20 () * amount;..
42480 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
42490 20 2f 2f 64 6f 20 74 68 65 20 6c 6f 6f 70 20 74 //do the loop t
424a0 65 73 74 0a 09 20 20 20 20 20 20 20 20 69 66 20 est.. if
424b0 28 74 68 69 73 2e 6c 6f 6f 70 29 20 7b 0a 09 20 (this.loop) {..
424c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 if (t
424d0 69 63 6b 73 20 3d 3d 3d 20 74 68 69 73 2e 5f 6c icks === this._l
424e0 6f 6f 70 45 6e 64 29 20 7b 0a 09 20 20 20 20 20 oopEnd) {..
424f0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
42500 65 6d 69 74 28 27 6c 6f 6f 70 45 6e 64 27 2c 20 emit('loopEnd',
42510 74 69 63 6b 54 69 6d 65 29 3b 0a 09 20 20 20 20 tickTime);..
42520 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
42530 2e 5f 63 6c 6f 63 6b 2e 74 69 63 6b 73 20 3d 20 ._clock.ticks =
42540 74 68 69 73 2e 5f 6c 6f 6f 70 53 74 61 72 74 3b this._loopStart;
42550 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
42560 20 20 74 69 63 6b 73 20 3d 20 74 68 69 73 2e 5f ticks = this._
42570 6c 6f 6f 70 53 74 61 72 74 3b 0a 09 20 20 20 20 loopStart;..
42580 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
42590 2e 65 6d 69 74 28 27 6c 6f 6f 70 53 74 61 72 74 .emit('loopStart
425a0 27 2c 20 74 69 63 6b 54 69 6d 65 2c 20 74 68 69 ', tickTime, thi
425b0 73 2e 73 65 63 6f 6e 64 73 29 3b 0a 09 20 20 20 s.seconds);..
425c0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
425d0 73 2e 65 6d 69 74 28 27 6c 6f 6f 70 27 2c 20 74 s.emit('loop', t
425e0 69 63 6b 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 ickTime);..
425f0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
42600 20 20 7d 0a 09 20 20 20 20 20 20 20 20 2f 2f 70 }.. //p
42610 72 6f 63 65 73 73 20 74 68 65 20 73 69 6e 67 6c rocess the singl
42620 65 20 6f 63 63 75 72 72 65 6e 63 65 20 65 76 65 e occurrence eve
42630 6e 74 73 0a 09 20 20 20 20 20 20 20 20 74 68 69 nts.. thi
42640 73 2e 5f 6f 6e 63 65 45 76 65 6e 74 73 2e 66 6f s._onceEvents.fo
42650 72 45 61 63 68 42 65 66 6f 72 65 28 74 69 63 6b rEachBefore(tick
42660 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 65 76 65 s, function (eve
42670 6e 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 nt) {..
42680 20 20 20 65 76 65 6e 74 2e 63 61 6c 6c 62 61 63 event.callbac
42690 6b 28 74 69 63 6b 54 69 6d 65 29 3b 0a 09 20 20 k(tickTime);..
426a0 20 20 20 20 20 20 20 20 20 20 2f 2f 72 65 6d 6f //remo
426b0 76 65 20 74 68 65 20 65 76 65 6e 74 0a 09 20 20 ve the event..
426c0 20 20 20 20 20 20 20 20 20 20 64 65 6c 65 74 65 delete
426d0 20 74 68 69 73 2e 5f 73 63 68 65 64 75 6c 65 64 this._scheduled
426e0 45 76 65 6e 74 73 5b 65 76 65 6e 74 2e 69 64 2e Events[event.id.
426f0 74 6f 53 74 72 69 6e 67 28 29 5d 3b 0a 09 20 20 toString()];..
42700 20 20 20 20 20 20 7d 2e 62 69 6e 64 28 74 68 69 }.bind(thi
42710 73 29 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f s));.. //
42720 61 6e 64 20 63 6c 65 61 72 20 74 68 65 20 73 69 and clear the si
42730 6e 67 6c 65 20 6f 63 63 75 72 72 65 6e 63 65 20 ngle occurrence
42740 74 69 6d 65 6c 69 6e 65 0a 09 20 20 20 20 20 20 timeline..
42750 20 20 74 68 69 73 2e 5f 6f 6e 63 65 45 76 65 6e this._onceEven
42760 74 73 2e 63 61 6e 63 65 6c 42 65 66 6f 72 65 28 ts.cancelBefore(
42770 74 69 63 6b 73 29 3b 0a 09 20 20 20 20 20 20 20 ticks);..
42780 20 2f 2f 66 69 72 65 20 74 68 65 20 6e 65 78 74 //fire the next
42790 20 74 69 63 6b 20 65 76 65 6e 74 73 20 69 66 20 tick events if
427a0 74 68 65 69 72 20 74 69 6d 65 20 68 61 73 20 63 their time has c
427b0 6f 6d 65 0a 09 20 20 20 20 20 20 20 20 74 68 69 ome.. thi
427c0 73 2e 5f 74 69 6d 65 6c 69 6e 65 2e 66 6f 72 45 s._timeline.forE
427d0 61 63 68 41 74 54 69 6d 65 28 74 69 63 6b 73 2c achAtTime(ticks,
427e0 20 66 75 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 function (event
427f0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
42800 20 65 76 65 6e 74 2e 63 61 6c 6c 62 61 63 6b 28 event.callback(
42810 74 69 63 6b 54 69 6d 65 29 3b 0a 09 20 20 20 20 tickTime);..
42820 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 });..
42830 20 2f 2f 70 72 6f 63 65 73 73 20 74 68 65 20 72 //process the r
42840 65 70 65 61 74 65 64 20 65 76 65 6e 74 73 0a 09 epeated events..
42850 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 this._re
42860 70 65 61 74 65 64 45 76 65 6e 74 73 2e 66 6f 72 peatedEvents.for
42870 45 61 63 68 41 74 54 69 6d 65 28 74 69 63 6b 73 EachAtTime(ticks
42880 2c 20 66 75 6e 63 74 69 6f 6e 20 28 65 76 65 6e , function (even
42890 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 t) {..
428a0 20 20 69 66 20 28 28 74 69 63 6b 73 20 2d 20 65 if ((ticks - e
428b0 76 65 6e 74 2e 74 69 6d 65 29 20 25 20 65 76 65 vent.time) % eve
428c0 6e 74 2e 69 6e 74 65 72 76 61 6c 20 3d 3d 3d 20 nt.interval ===
428d0 30 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 0) {..
428e0 20 20 20 20 20 20 65 76 65 6e 74 2e 63 61 6c 6c event.call
428f0 62 61 63 6b 28 74 69 63 6b 54 69 6d 65 29 3b 0a back(tickTime);.
42900 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
42910 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 });..
42920 20 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f };.. ///////
42930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
42940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
42950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
42960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
42970 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2f ////////.. //
42980 09 53 43 48 45 44 55 4c 41 42 4c 45 20 45 56 45 .SCHEDULABLE EVE
42990 4e 54 53 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f NTS.. ///////
429a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
429b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
429c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
429d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
429e0 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2a ////////.. /*
429f0 2a 0a 09 09 20 2a 20 20 53 63 68 65 64 75 6c 65 *... * Schedule
42a00 20 61 6e 20 65 76 65 6e 74 20 61 6c 6f 6e 67 20 an event along
42a10 74 68 65 20 74 69 6d 65 6c 69 6e 65 2e 0a 09 09 the timeline....
42a20 20 2a 20 20 40 70 61 72 61 6d 20 7b 46 75 6e 63 * @param {Func
42a30 74 69 6f 6e 7d 20 63 61 6c 6c 62 61 63 6b 20 54 tion} callback T
42a40 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 62 he callback to b
42a50 65 20 69 6e 76 6f 6b 65 64 20 61 74 20 74 68 65 e invoked at the
42a60 20 74 69 6d 65 2e 0a 09 09 20 2a 20 20 40 70 61 time.... * @pa
42a70 72 61 6d 20 7b 54 72 61 6e 73 70 6f 72 74 54 69 ram {TransportTi
42a80 6d 65 7d 20 20 74 69 6d 65 20 54 68 65 20 74 69 me} time The ti
42a90 6d 65 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65 me to invoke the
42aa0 20 63 61 6c 6c 62 61 63 6b 20 61 74 2e 0a 09 09 callback at....
42ab0 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 4e 75 6d * @return {Num
42ac0 62 65 72 7d 20 54 68 65 20 69 64 20 6f 66 20 74 ber} The id of t
42ad0 68 65 20 65 76 65 6e 74 20 77 68 69 63 68 20 63 he event which c
42ae0 61 6e 20 62 65 20 75 73 65 64 20 66 6f 72 20 63 an be used for c
42af0 61 6e 63 65 6c 69 6e 67 20 74 68 65 20 65 76 65 anceling the eve
42b00 6e 74 2e 20 0a 09 09 20 2a 20 20 40 65 78 61 6d nt. ... * @exam
42b10 70 6c 65 0a 09 09 20 2a 20 2f 2f 74 72 69 67 67 ple... * //trigg
42b20 65 72 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 er the callback
42b30 77 68 65 6e 20 74 68 65 20 54 72 61 6e 73 70 6f when the Transpo
42b40 72 74 20 72 65 61 63 68 65 73 20 74 68 65 20 64 rt reaches the d
42b50 65 73 69 72 65 64 20 74 69 6d 65 0a 09 09 20 2a esired time... *
42b60 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e Tone.Transport.
42b70 73 63 68 65 64 75 6c 65 28 66 75 6e 63 74 69 6f schedule(functio
42b80 6e 28 74 69 6d 65 29 7b 0a 09 09 20 2a 20 09 65 n(time){... * .e
42b90 6e 76 65 6c 6f 70 65 2e 74 72 69 67 67 65 72 41 nvelope.triggerA
42ba0 74 74 61 63 6b 28 74 69 6d 65 29 3b 0a 09 09 20 ttack(time);...
42bb0 2a 20 7d 2c 20 22 31 32 38 69 22 29 3b 0a 09 09 * }, "128i");...
42bc0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 72 */.. Tone.Tr
42bd0 61 6e 73 70 6f 72 74 2e 70 72 6f 74 6f 74 79 70 ansport.prototyp
42be0 65 2e 73 63 68 65 64 75 6c 65 20 3d 20 66 75 6e e.schedule = fun
42bf0 63 74 69 6f 6e 20 28 63 61 6c 6c 62 61 63 6b 2c ction (callback,
42c00 20 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 time) {..
42c10 20 20 76 61 72 20 65 76 65 6e 74 20 3d 20 7b 0a var event = {.
42c20 09 20 20 20 20 20 20 20 20 20 20 20 20 27 74 69 . 'ti
42c30 6d 65 27 3a 20 74 68 69 73 2e 74 6f 54 69 63 6b me': this.toTick
42c40 73 28 74 69 6d 65 29 2c 0a 09 20 20 20 20 20 20 s(time),..
42c50 20 20 20 20 20 20 27 63 61 6c 6c 62 61 63 6b 27 'callback'
42c60 3a 20 63 61 6c 6c 62 61 63 6b 0a 09 20 20 20 20 : callback..
42c70 20 20 20 20 7d 3b 0a 09 20 20 20 20 20 20 20 20 };..
42c80 76 61 72 20 69 64 20 3d 20 74 68 69 73 2e 5f 65 var id = this._e
42c90 76 65 6e 74 49 44 2b 2b 3b 0a 09 20 20 20 20 20 ventID++;..
42ca0 20 20 20 74 68 69 73 2e 5f 73 63 68 65 64 75 6c this._schedul
42cb0 65 64 45 76 65 6e 74 73 5b 69 64 2e 74 6f 53 74 edEvents[id.toSt
42cc0 72 69 6e 67 28 29 5d 20 3d 20 7b 0a 09 20 20 20 ring()] = {..
42cd0 20 20 20 20 20 20 20 20 20 27 65 76 65 6e 74 27 'event'
42ce0 3a 20 65 76 65 6e 74 2c 0a 09 20 20 20 20 20 20 : event,..
42cf0 20 20 20 20 20 20 27 74 69 6d 65 6c 69 6e 65 27 'timeline'
42d00 3a 20 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 : this._timeline
42d10 0a 09 20 20 20 20 20 20 20 20 7d 3b 0a 09 20 20 .. };..
42d20 20 20 20 20 20 20 74 68 69 73 2e 5f 74 69 6d 65 this._time
42d30 6c 69 6e 65 2e 61 64 64 28 65 76 65 6e 74 29 3b line.add(event);
42d40 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
42d50 20 69 64 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 id;.. };..
42d60 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 63 68 65 /**... * Sche
42d70 64 75 6c 65 20 61 20 72 65 70 65 61 74 65 64 20 dule a repeated
42d80 65 76 65 6e 74 20 61 6c 6f 6e 67 20 74 68 65 20 event along the
42d90 74 69 6d 65 6c 69 6e 65 2e 20 54 68 65 20 65 76 timeline. The ev
42da0 65 6e 74 20 77 69 6c 6c 20 66 69 72 65 0a 09 09 ent will fire...
42db0 20 2a 20 20 61 74 20 74 68 65 20 60 69 6e 74 65 * at the `inte
42dc0 72 76 61 6c 60 20 73 74 61 72 74 69 6e 67 20 61 rval` starting a
42dd0 74 20 74 68 65 20 60 73 74 61 72 74 54 69 6d 65 t the `startTime
42de0 60 20 61 6e 64 20 66 6f 72 20 74 68 65 20 73 70 ` and for the sp
42df0 65 63 69 66 69 65 64 0a 09 09 20 2a 20 20 60 64 ecified... * `d
42e00 75 72 61 74 69 6f 6e 60 2e 20 0a 09 09 20 2a 20 uration`. ... *
42e10 20 40 70 61 72 61 6d 20 20 7b 46 75 6e 63 74 69 @param {Functi
42e20 6f 6e 7d 20 20 63 61 6c 6c 62 61 63 6b 20 20 20 on} callback
42e30 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 The callback to
42e40 69 6e 76 6f 6b 65 2e 0a 09 09 20 2a 20 20 40 70 invoke.... * @p
42e50 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 20 20 20 aram {Time}
42e60 69 6e 74 65 72 76 61 6c 20 20 20 54 68 65 20 64 interval The d
42e70 75 72 61 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 uration between
42e80 73 75 63 63 65 73 73 69 76 65 0a 09 09 20 2a 20 successive... *
42e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
42ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca
42eb0 6c 6c 62 61 63 6b 73 2e 0a 09 09 20 2a 20 20 40 llbacks.... * @
42ec0 70 61 72 61 6d 20 20 7b 54 69 6d 65 6c 69 6e 65 param {Timeline
42ed0 50 6f 73 69 74 69 6f 6e 3d 7d 20 20 20 20 73 74 Position=} st
42ee0 61 72 74 54 69 6d 65 20 20 57 68 65 6e 20 61 6c artTime When al
42ef0 6f 6e 67 20 74 68 65 20 74 69 6d 65 6c 69 6e 65 ong the timeline
42f00 20 74 68 65 20 65 76 65 6e 74 73 20 73 68 6f 75 the events shou
42f10 6c 64 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 ld... *
42f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
42f30 20 20 20 20 20 20 73 74 61 72 74 20 62 65 69 6e start bein
42f40 67 20 69 6e 76 6f 6b 65 64 2e 0a 09 09 20 2a 20 g invoked.... *
42f50 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 5b @param {Time} [
42f60 64 75 72 61 74 69 6f 6e 3d 49 6e 66 69 6e 69 74 duration=Infinit
42f70 79 5d 20 48 6f 77 20 6c 6f 6e 67 20 74 68 65 20 y] How long the
42f80 65 76 65 6e 74 20 73 68 6f 75 6c 64 20 72 65 70 event should rep
42f90 65 61 74 2e 20 0a 09 09 20 2a 20 20 40 72 65 74 eat. ... * @ret
42fa0 75 72 6e 20 20 7b 4e 75 6d 62 65 72 7d 20 20 20 urn {Number}
42fb0 20 54 68 65 20 49 44 20 6f 66 20 74 68 65 20 73 The ID of the s
42fc0 63 68 65 64 75 6c 65 64 20 65 76 65 6e 74 2e 20 cheduled event.
42fd0 55 73 65 20 74 68 69 73 20 74 6f 20 63 61 6e 63 Use this to canc
42fe0 65 6c 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 el... *
42ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
43000 20 20 74 68 65 20 65 76 65 6e 74 2e 20 0a 09 09 the event. ...
43010 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 * @example...
43020 2a 20 2f 2f 61 20 63 61 6c 6c 62 61 63 6b 20 69 * //a callback i
43030 6e 76 6f 6b 65 64 20 65 76 65 72 79 20 65 69 67 nvoked every eig
43040 68 74 68 20 6e 6f 74 65 20 61 66 74 65 72 20 74 hth note after t
43050 68 65 20 66 69 72 73 74 20 6d 65 61 73 75 72 65 he first measure
43060 0a 09 09 20 2a 20 54 6f 6e 65 2e 54 72 61 6e 73 ... * Tone.Trans
43070 70 6f 72 74 2e 73 63 68 65 64 75 6c 65 52 65 70 port.scheduleRep
43080 65 61 74 28 63 61 6c 6c 62 61 63 6b 2c 20 22 38 eat(callback, "8
43090 6e 22 2c 20 22 31 6d 22 29 3b 0a 09 09 20 2a 2f n", "1m");... */
430a0 0a 09 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 .. Tone.Trans
430b0 70 6f 72 74 2e 70 72 6f 74 6f 74 79 70 65 2e 73 port.prototype.s
430c0 63 68 65 64 75 6c 65 52 65 70 65 61 74 20 3d 20 cheduleRepeat =
430d0 66 75 6e 63 74 69 6f 6e 20 28 63 61 6c 6c 62 61 function (callba
430e0 63 6b 2c 20 69 6e 74 65 72 76 61 6c 2c 20 73 74 ck, interval, st
430f0 61 72 74 54 69 6d 65 2c 20 64 75 72 61 74 69 6f artTime, duratio
43100 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 n) {.. if
43110 20 28 69 6e 74 65 72 76 61 6c 20 3c 3d 20 30 29 (interval <= 0)
43120 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
43130 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 28 throw new Error(
43140 27 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 3a 'Tone.Transport:
43150 20 72 65 70 65 61 74 20 65 76 65 6e 74 73 20 6d repeat events m
43160 75 73 74 20 68 61 76 65 20 61 6e 20 69 6e 74 65 ust have an inte
43170 72 76 61 6c 20 6c 61 72 67 65 72 20 74 68 61 6e rval larger than
43180 20 30 27 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0');.. }
43190 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 65 76 .. var ev
431a0 65 6e 74 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 ent = {..
431b0 20 20 20 20 20 27 74 69 6d 65 27 3a 20 74 68 69 'time': thi
431c0 73 2e 74 6f 54 69 63 6b 73 28 73 74 61 72 74 54 s.toTicks(startT
431d0 69 6d 65 29 2c 0a 09 20 20 20 20 20 20 20 20 20 ime),..
431e0 20 20 20 27 64 75 72 61 74 69 6f 6e 27 3a 20 74 'duration': t
431f0 68 69 73 2e 74 6f 54 69 63 6b 73 28 74 68 69 73 his.toTicks(this
43200 2e 64 65 66 61 75 6c 74 41 72 67 28 64 75 72 61 .defaultArg(dura
43210 74 69 6f 6e 2c 20 49 6e 66 69 6e 69 74 79 29 29 tion, Infinity))
43220 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
43230 69 6e 74 65 72 76 61 6c 27 3a 20 74 68 69 73 2e interval': this.
43240 74 6f 54 69 63 6b 73 28 69 6e 74 65 72 76 61 6c toTicks(interval
43250 29 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ),..
43260 27 63 61 6c 6c 62 61 63 6b 27 3a 20 63 61 6c 6c 'callback': call
43270 62 61 63 6b 0a 09 20 20 20 20 20 20 20 20 7d 3b back.. };
43280 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 69 64 .. var id
43290 20 3d 20 74 68 69 73 2e 5f 65 76 65 6e 74 49 44 = this._eventID
432a0 2b 2b 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ++;.. thi
432b0 73 2e 5f 73 63 68 65 64 75 6c 65 64 45 76 65 6e s._scheduledEven
432c0 74 73 5b 69 64 2e 74 6f 53 74 72 69 6e 67 28 29 ts[id.toString()
432d0 5d 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ] = {..
432e0 20 20 20 27 65 76 65 6e 74 27 3a 20 65 76 65 6e 'event': even
432f0 74 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 t,..
43300 27 74 69 6d 65 6c 69 6e 65 27 3a 20 74 68 69 73 'timeline': this
43310 2e 5f 72 65 70 65 61 74 65 64 45 76 65 6e 74 73 ._repeatedEvents
43320 0a 09 20 20 20 20 20 20 20 20 7d 3b 0a 09 20 20 .. };..
43330 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 70 65 this._repe
43340 61 74 65 64 45 76 65 6e 74 73 2e 61 64 64 28 65 atedEvents.add(e
43350 76 65 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 20 vent);..
43360 72 65 74 75 72 6e 20 69 64 3b 0a 09 20 20 20 20 return id;..
43370 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
43380 20 20 53 63 68 65 64 75 6c 65 20 61 6e 20 65 76 Schedule an ev
43390 65 6e 74 20 74 68 61 74 20 77 69 6c 6c 20 62 65 ent that will be
433a0 20 72 65 6d 6f 76 65 64 20 61 66 74 65 72 20 69 removed after i
433b0 74 20 69 73 20 69 6e 76 6f 6b 65 64 2e 20 0a 09 t is invoked. ..
433c0 09 20 2a 20 20 4e 6f 74 65 20 74 68 61 74 20 69 . * Note that i
433d0 66 20 74 68 65 20 67 69 76 65 6e 20 74 69 6d 65 f the given time
433e0 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 74 68 is less than th
433f0 65 20 63 75 72 72 65 6e 74 20 74 72 61 6e 73 70 e current transp
43400 6f 72 74 20 74 69 6d 65 2c 20 0a 09 09 20 2a 20 ort time, ... *
43410 20 74 68 65 20 65 76 65 6e 74 20 77 69 6c 6c 20 the event will
43420 62 65 20 69 6e 76 6f 6b 65 64 20 69 6d 6d 65 64 be invoked immed
43430 69 61 74 65 6c 79 2e 20 0a 09 09 20 2a 20 20 40 iately. ... * @
43440 70 61 72 61 6d 20 7b 46 75 6e 63 74 69 6f 6e 7d param {Function}
43450 20 63 61 6c 6c 62 61 63 6b 20 54 68 65 20 63 61 callback The ca
43460 6c 6c 62 61 63 6b 20 74 6f 20 69 6e 76 6f 6b 65 llback to invoke
43470 20 6f 6e 63 65 2e 0a 09 09 20 2a 20 20 40 70 61 once.... * @pa
43480 72 61 6d 20 7b 54 72 61 6e 73 70 6f 72 74 54 69 ram {TransportTi
43490 6d 65 7d 20 74 69 6d 65 20 54 68 65 20 74 69 6d me} time The tim
434a0 65 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 73 e the callback s
434b0 68 6f 75 6c 64 20 62 65 20 69 6e 76 6f 6b 65 64 hould be invoked
434c0 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 .... * @returns
434d0 20 7b 4e 75 6d 62 65 72 7d 20 54 68 65 20 49 44 {Number} The ID
434e0 20 6f 66 20 74 68 65 20 73 63 68 65 64 75 6c 65 of the schedule
434f0 64 20 65 76 65 6e 74 2e 20 0a 09 09 20 2a 2f 0a d event. ... */.
43500 09 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 70 . Tone.Transp
43510 6f 72 74 2e 70 72 6f 74 6f 74 79 70 65 2e 73 63 ort.prototype.sc
43520 68 65 64 75 6c 65 4f 6e 63 65 20 3d 20 66 75 6e heduleOnce = fun
43530 63 74 69 6f 6e 20 28 63 61 6c 6c 62 61 63 6b 2c ction (callback,
43540 20 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 time) {..
43550 20 20 76 61 72 20 69 64 20 3d 20 74 68 69 73 2e var id = this.
43560 5f 65 76 65 6e 74 49 44 2b 2b 3b 0a 09 20 20 20 _eventID++;..
43570 20 20 20 20 20 76 61 72 20 65 76 65 6e 74 20 3d var event =
43580 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
43590 27 74 69 6d 65 27 3a 20 74 68 69 73 2e 74 6f 54 'time': this.toT
435a0 69 63 6b 73 28 74 69 6d 65 29 2c 0a 09 20 20 20 icks(time),..
435b0 20 20 20 20 20 20 20 20 20 27 63 61 6c 6c 62 61 'callba
435c0 63 6b 27 3a 20 63 61 6c 6c 62 61 63 6b 2c 0a 09 ck': callback,..
435d0 20 20 20 20 20 20 20 20 20 20 20 20 27 69 64 27 'id'
435e0 3a 20 69 64 0a 09 20 20 20 20 20 20 20 20 7d 3b : id.. };
435f0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
43600 73 63 68 65 64 75 6c 65 64 45 76 65 6e 74 73 5b scheduledEvents[
43610 69 64 2e 74 6f 53 74 72 69 6e 67 28 29 5d 20 3d id.toString()] =
43620 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
43630 27 65 76 65 6e 74 27 3a 20 65 76 65 6e 74 2c 0a 'event': event,.
43640 09 20 20 20 20 20 20 20 20 20 20 20 20 27 74 69 . 'ti
43650 6d 65 6c 69 6e 65 27 3a 20 74 68 69 73 2e 5f 6f meline': this._o
43660 6e 63 65 45 76 65 6e 74 73 0a 09 20 20 20 20 20 nceEvents..
43670 20 20 20 7d 3b 0a 09 20 20 20 20 20 20 20 20 74 };.. t
43680 68 69 73 2e 5f 6f 6e 63 65 45 76 65 6e 74 73 2e his._onceEvents.
43690 61 64 64 28 65 76 65 6e 74 29 3b 0a 09 20 20 20 add(event);..
436a0 20 20 20 20 20 72 65 74 75 72 6e 20 69 64 3b 0a return id;.
436b0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
436c0 0a 09 09 20 2a 20 20 43 6c 65 61 72 20 74 68 65 ... * Clear the
436d0 20 70 61 73 73 65 64 20 69 6e 20 65 76 65 6e 74 passed in event
436e0 20 69 64 20 66 72 6f 6d 20 74 68 65 20 74 69 6d id from the tim
436f0 65 6c 69 6e 65 0a 09 09 20 2a 20 20 40 70 61 72 eline... * @par
43700 61 6d 20 7b 4e 75 6d 62 65 72 7d 20 65 76 65 6e am {Number} even
43710 74 49 64 20 54 68 65 20 69 64 20 6f 66 20 74 68 tId The id of th
43720 65 20 65 76 65 6e 74 2e 0a 09 09 20 2a 20 20 40 e event.... * @
43730 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 54 72 returns {Tone.Tr
43740 61 6e 73 70 6f 72 74 7d 20 74 68 69 73 0a 09 09 ansport} this...
43750 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 72 */.. Tone.Tr
43760 61 6e 73 70 6f 72 74 2e 70 72 6f 74 6f 74 79 70 ansport.prototyp
43770 65 2e 63 6c 65 61 72 20 3d 20 66 75 6e 63 74 69 e.clear = functi
43780 6f 6e 20 28 65 76 65 6e 74 49 64 29 20 7b 0a 09 on (eventId) {..
43790 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
437a0 2e 5f 73 63 68 65 64 75 6c 65 64 45 76 65 6e 74 ._scheduledEvent
437b0 73 2e 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 s.hasOwnProperty
437c0 28 65 76 65 6e 74 49 64 29 29 20 7b 0a 09 20 20 (eventId)) {..
437d0 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 74 var it
437e0 65 6d 20 3d 20 74 68 69 73 2e 5f 73 63 68 65 64 em = this._sched
437f0 75 6c 65 64 45 76 65 6e 74 73 5b 65 76 65 6e 74 uledEvents[event
43800 49 64 2e 74 6f 53 74 72 69 6e 67 28 29 5d 3b 0a Id.toString()];.
43810 09 20 20 20 20 20 20 20 20 20 20 20 20 69 74 65 . ite
43820 6d 2e 74 69 6d 65 6c 69 6e 65 2e 72 65 6d 6f 76 m.timeline.remov
43830 65 28 69 74 65 6d 2e 65 76 65 6e 74 29 3b 0a 09 e(item.event);..
43840 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 65 dele
43850 74 65 20 74 68 69 73 2e 5f 73 63 68 65 64 75 6c te this._schedul
43860 65 64 45 76 65 6e 74 73 5b 65 76 65 6e 74 49 64 edEvents[eventId
43870 2e 74 6f 53 74 72 69 6e 67 28 29 5d 3b 0a 09 20 .toString()];..
43880 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
43890 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
438a0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
438b0 09 09 20 2a 20 20 52 65 6d 6f 76 65 20 73 63 68 .. * Remove sch
438c0 65 64 75 6c 65 64 20 65 76 65 6e 74 73 20 66 72 eduled events fr
438d0 6f 6d 20 74 68 65 20 74 69 6d 65 6c 69 6e 65 20 om the timeline
438e0 61 66 74 65 72 0a 09 09 20 2a 20 20 74 68 65 20 after... * the
438f0 67 69 76 65 6e 20 74 69 6d 65 2e 20 52 65 70 65 given time. Repe
43900 61 74 65 64 20 65 76 65 6e 74 73 20 77 69 6c 6c ated events will
43910 20 62 65 20 72 65 6d 6f 76 65 64 0a 09 09 20 2a be removed... *
43920 20 20 69 66 20 74 68 65 69 72 20 73 74 61 72 74 if their start
43930 54 69 6d 65 20 69 73 20 61 66 74 65 72 20 74 68 Time is after th
43940 65 20 67 69 76 65 6e 20 74 69 6d 65 0a 09 09 20 e given time...
43950 2a 20 20 40 70 61 72 61 6d 20 7b 54 72 61 6e 73 * @param {Trans
43960 70 6f 72 74 54 69 6d 65 7d 20 5b 61 66 74 65 72 portTime} [after
43970 3d 30 5d 20 43 6c 65 61 72 20 61 6c 6c 20 65 76 =0] Clear all ev
43980 65 6e 74 73 20 61 66 74 65 72 0a 09 09 20 2a 20 ents after... *
43990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
439a0 20 20 20 20 20 20 20 20 20 74 68 69 73 20 74 69 this ti
439b0 6d 65 2e 20 0a 09 09 20 2a 20 20 40 72 65 74 75 me. ... * @retu
439c0 72 6e 73 20 7b 54 6f 6e 65 2e 54 72 61 6e 73 70 rns {Tone.Transp
439d0 6f 72 74 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a ort} this... */.
439e0 09 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 70 . Tone.Transp
439f0 6f 72 74 2e 70 72 6f 74 6f 74 79 70 65 2e 63 61 ort.prototype.ca
43a00 6e 63 65 6c 20 3d 20 66 75 6e 63 74 69 6f 6e 20 ncel = function
43a10 28 61 66 74 65 72 29 20 7b 0a 09 20 20 20 20 20 (after) {..
43a20 20 20 20 61 66 74 65 72 20 3d 20 74 68 69 73 2e after = this.
43a30 64 65 66 61 75 6c 74 41 72 67 28 61 66 74 65 72 defaultArg(after
43a40 2c 20 30 29 3b 0a 09 20 20 20 20 20 20 20 20 61 , 0);.. a
43a50 66 74 65 72 20 3d 20 74 68 69 73 2e 74 6f 54 69 fter = this.toTi
43a60 63 6b 73 28 61 66 74 65 72 29 3b 0a 09 20 20 20 cks(after);..
43a70 20 20 20 20 20 74 68 69 73 2e 5f 74 69 6d 65 6c this._timel
43a80 69 6e 65 2e 63 61 6e 63 65 6c 28 61 66 74 65 72 ine.cancel(after
43a90 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
43aa0 2e 5f 6f 6e 63 65 45 76 65 6e 74 73 2e 63 61 6e ._onceEvents.can
43ab0 63 65 6c 28 61 66 74 65 72 29 3b 0a 09 20 20 20 cel(after);..
43ac0 20 20 20 20 20 74 68 69 73 2e 5f 72 65 70 65 61 this._repea
43ad0 74 65 64 45 76 65 6e 74 73 2e 63 61 6e 63 65 6c tedEvents.cancel
43ae0 28 61 66 74 65 72 29 3b 0a 09 20 20 20 20 20 20 (after);..
43af0 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
43b00 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f };.. ////
43b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
43b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
43b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
43b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
43b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 ///////////..
43b60 20 2f 2f 09 53 54 41 52 54 2f 53 54 4f 50 2f 50 //.START/STOP/P
43b70 41 55 53 45 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f AUSE.. //////
43b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
43b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
43ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
43bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
43bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f /////////.. /
43bd0 2a 2a 0a 09 09 20 2a 20 20 42 69 6e 64 20 73 74 **... * Bind st
43be0 61 72 74 2f 73 74 6f 70 2f 70 61 75 73 65 20 65 art/stop/pause e
43bf0 76 65 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 63 vents from the c
43c00 6c 6f 63 6b 20 61 6e 64 20 65 6d 69 74 20 74 68 lock and emit th
43c10 65 6d 2e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 em.... */.. T
43c20 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 70 72 one.Transport.pr
43c30 6f 74 6f 74 79 70 65 2e 5f 62 69 6e 64 43 6c 6f ototype._bindClo
43c40 63 6b 45 76 65 6e 74 73 20 3d 20 66 75 6e 63 74 ckEvents = funct
43c50 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
43c60 20 20 74 68 69 73 2e 5f 63 6c 6f 63 6b 2e 6f 6e this._clock.on
43c70 28 27 73 74 61 72 74 27 2c 20 66 75 6e 63 74 69 ('start', functi
43c80 6f 6e 20 28 74 69 6d 65 2c 20 6f 66 66 73 65 74 on (time, offset
43c90 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
43ca0 20 6f 66 66 73 65 74 20 3d 20 54 6f 6e 65 2e 54 offset = Tone.T
43cb0 69 6d 65 28 74 68 69 73 2e 5f 63 6c 6f 63 6b 2e ime(this._clock.
43cc0 74 69 63 6b 73 2c 20 27 69 27 29 2e 74 6f 53 65 ticks, 'i').toSe
43cd0 63 6f 6e 64 73 28 29 3b 0a 09 20 20 20 20 20 20 conds();..
43ce0 20 20 20 20 20 20 74 68 69 73 2e 65 6d 69 74 28 this.emit(
43cf0 27 73 74 61 72 74 27 2c 20 74 69 6d 65 2c 20 6f 'start', time, o
43d00 66 66 73 65 74 29 3b 0a 09 20 20 20 20 20 20 20 ffset);..
43d10 20 7d 2e 62 69 6e 64 28 74 68 69 73 29 29 3b 0a }.bind(this));.
43d20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 . this._c
43d30 6c 6f 63 6b 2e 6f 6e 28 27 73 74 6f 70 27 2c 20 lock.on('stop',
43d40 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 function (time)
43d50 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
43d60 68 69 73 2e 65 6d 69 74 28 27 73 74 6f 70 27 2c his.emit('stop',
43d70 20 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 time);..
43d80 20 7d 2e 62 69 6e 64 28 74 68 69 73 29 29 3b 0a }.bind(this));.
43d90 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 . this._c
43da0 6c 6f 63 6b 2e 6f 6e 28 27 70 61 75 73 65 27 2c lock.on('pause',
43db0 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 function (time)
43dc0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
43dd0 74 68 69 73 2e 65 6d 69 74 28 27 70 61 75 73 65 this.emit('pause
43de0 27 2c 20 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 ', time);..
43df0 20 20 20 7d 2e 62 69 6e 64 28 74 68 69 73 29 29 }.bind(this))
43e00 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
43e10 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 6e 73 **... * Returns
43e20 20 74 68 65 20 70 6c 61 79 62 61 63 6b 20 73 74 the playback st
43e30 61 74 65 20 6f 66 20 74 68 65 20 73 6f 75 72 63 ate of the sourc
43e40 65 2c 20 65 69 74 68 65 72 20 22 73 74 61 72 74 e, either "start
43e50 65 64 22 2c 20 22 73 74 6f 70 70 65 64 22 2c 20 ed", "stopped",
43e60 6f 72 20 22 70 61 75 73 65 64 22 0a 09 09 20 2a or "paused"... *
43e70 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 53 74 @type {Tone.St
43e80 61 74 65 7d 0a 09 09 20 2a 20 20 40 72 65 61 64 ate}... * @read
43e90 4f 6e 6c 79 0a 09 09 20 2a 20 20 40 6d 65 6d 62 Only... * @memb
43ea0 65 72 4f 66 20 54 6f 6e 65 2e 54 72 61 6e 73 70 erOf Tone.Transp
43eb0 6f 72 74 23 0a 09 09 20 2a 20 20 40 6e 61 6d 65 ort#... * @name
43ec0 20 73 74 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 state... */..
43ed0 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
43ee0 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 54 72 61 roperty(Tone.Tra
43ef0 6e 73 70 6f 72 74 2e 70 72 6f 74 6f 74 79 70 65 nsport.prototype
43f00 2c 20 27 73 74 61 74 65 27 2c 20 7b 0a 09 20 20 , 'state', {..
43f10 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
43f20 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
43f30 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
43f40 73 2e 5f 63 6c 6f 63 6b 2e 67 65 74 53 74 61 74 s._clock.getStat
43f50 65 41 74 54 69 6d 65 28 74 68 69 73 2e 6e 6f 77 eAtTime(this.now
43f60 28 29 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a ());.. }.
43f70 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a . });.. /*
43f80 2a 0a 09 09 20 2a 20 20 53 74 61 72 74 20 74 68 *... * Start th
43f90 65 20 74 72 61 6e 73 70 6f 72 74 20 61 6e 64 20 e transport and
43fa0 61 6c 6c 20 73 6f 75 72 63 65 73 20 73 79 6e 63 all sources sync
43fb0 65 64 20 74 6f 20 74 68 65 20 74 72 61 6e 73 70 ed to the transp
43fc0 6f 72 74 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 ort.... * @para
43fd0 6d 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d m {Time} [time=
43fe0 6e 6f 77 5d 20 54 68 65 20 74 69 6d 65 20 77 68 now] The time wh
43ff0 65 6e 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 en the transport
44000 20 73 68 6f 75 6c 64 20 73 74 61 72 74 2e 0a 09 should start...
44010 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 72 . * @param {Tr
44020 61 6e 73 70 6f 72 74 54 69 6d 65 3d 7d 20 6f 66 ansportTime=} of
44030 66 73 65 74 20 54 68 65 20 74 69 6d 65 6c 69 6e fset The timelin
44040 65 20 6f 66 66 73 65 74 20 74 6f 20 73 74 61 72 e offset to star
44050 74 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 2e t the transport.
44060 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
44070 7b 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 7d {Tone.Transport}
44080 20 74 68 69 73 0a 09 09 20 2a 20 20 40 65 78 61 this... * @exa
44090 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f 73 74 61 72 mple... * //star
440a0 74 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 20 t the transport
440b0 69 6e 20 6f 6e 65 20 73 65 63 6f 6e 64 20 73 74 in one second st
440c0 61 72 74 69 6e 67 20 61 74 20 62 65 67 69 6e 6e arting at beginn
440d0 69 6e 67 20 6f 66 20 74 68 65 20 35 74 68 20 6d ing of the 5th m
440e0 65 61 73 75 72 65 2e 20 0a 09 09 20 2a 20 54 6f easure. ... * To
440f0 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 73 74 61 ne.Transport.sta
44100 72 74 28 22 2b 31 22 2c 20 22 34 3a 30 3a 30 22 rt("+1", "4:0:0"
44110 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f );... */.. To
44120 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 70 72 6f ne.Transport.pro
44130 74 6f 74 79 70 65 2e 73 74 61 72 74 20 3d 20 66 totype.start = f
44140 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 2c 20 6f unction (time, o
44150 66 66 73 65 74 29 20 7b 0a 09 20 20 20 20 20 20 ffset) {..
44160 20 20 2f 2f 73 74 61 72 74 20 74 68 65 20 63 6c //start the cl
44170 6f 63 6b 0a 09 20 20 20 20 20 20 20 20 69 66 20 ock.. if
44180 28 21 74 68 69 73 2e 69 73 55 6e 64 65 66 28 6f (!this.isUndef(o
44190 66 66 73 65 74 29 29 20 7b 0a 09 20 20 20 20 20 ffset)) {..
441a0 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 offset =
441b0 74 68 69 73 2e 74 6f 54 69 63 6b 73 28 6f 66 66 this.toTicks(off
441c0 73 65 74 29 3b 0a 09 20 20 20 20 20 20 20 20 7d set);.. }
441d0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
441e0 63 6c 6f 63 6b 2e 73 74 61 72 74 28 74 69 6d 65 clock.start(time
441f0 2c 20 6f 66 66 73 65 74 29 3b 0a 09 20 20 20 20 , offset);..
44200 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
44210 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
44220 2a 0a 09 09 20 2a 20 20 53 74 6f 70 20 74 68 65 *... * Stop the
44230 20 74 72 61 6e 73 70 6f 72 74 20 61 6e 64 20 61 transport and a
44240 6c 6c 20 73 6f 75 72 63 65 73 20 73 79 6e 63 65 ll sources synce
44250 64 20 74 6f 20 74 68 65 20 74 72 61 6e 73 70 6f d to the transpo
44260 72 74 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d rt.... * @param
44270 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e {Time} [time=n
44280 6f 77 5d 20 54 68 65 20 74 69 6d 65 20 77 68 65 ow] The time whe
44290 6e 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 20 n the transport
442a0 73 68 6f 75 6c 64 20 73 74 6f 70 2e 20 0a 09 09 should stop. ...
442b0 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f * @returns {To
442c0 6e 65 2e 54 72 61 6e 73 70 6f 72 74 7d 20 74 68 ne.Transport} th
442d0 69 73 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c is... * @exampl
442e0 65 0a 09 09 20 2a 20 54 6f 6e 65 2e 54 72 61 6e e... * Tone.Tran
442f0 73 70 6f 72 74 2e 73 74 6f 70 28 29 3b 0a 09 09 sport.stop();...
44300 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 72 */.. Tone.Tr
44310 61 6e 73 70 6f 72 74 2e 70 72 6f 74 6f 74 79 70 ansport.prototyp
44320 65 2e 73 74 6f 70 20 3d 20 66 75 6e 63 74 69 6f e.stop = functio
44330 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 n (time) {..
44340 20 20 20 20 74 68 69 73 2e 5f 63 6c 6f 63 6b 2e this._clock.
44350 73 74 6f 70 28 74 69 6d 65 29 3b 0a 09 20 20 20 stop(time);..
44360 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
44370 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
44380 2a 2a 0a 09 09 20 2a 20 20 50 61 75 73 65 20 74 **... * Pause t
44390 68 65 20 74 72 61 6e 73 70 6f 72 74 20 61 6e 64 he transport and
443a0 20 61 6c 6c 20 73 6f 75 72 63 65 73 20 73 79 6e all sources syn
443b0 63 65 64 20 74 6f 20 74 68 65 20 74 72 61 6e 73 ced to the trans
443c0 70 6f 72 74 2e 0a 09 09 20 2a 20 20 40 70 61 72 port.... * @par
443d0 61 6d 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 am {Time} [time
443e0 3d 6e 6f 77 5d 0a 09 09 20 2a 20 20 40 72 65 74 =now]... * @ret
443f0 75 72 6e 73 20 7b 54 6f 6e 65 2e 54 72 61 6e 73 urns {Tone.Trans
44400 70 6f 72 74 7d 20 74 68 69 73 0a 09 09 20 2a 2f port} this... */
44410 0a 09 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 .. Tone.Trans
44420 70 6f 72 74 2e 70 72 6f 74 6f 74 79 70 65 2e 70 port.prototype.p
44430 61 75 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 ause = function
44440 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 (time) {..
44450 20 20 74 68 69 73 2e 5f 63 6c 6f 63 6b 2e 70 61 this._clock.pa
44460 75 73 65 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 use(time);..
44470 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
44480 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f .. };.. //
44490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
444a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
444b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
444c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
444d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 /////////////..
444e0 20 20 20 2f 2f 09 53 45 54 54 45 52 53 2f 47 45 //.SETTERS/GE
444f0 54 54 45 52 53 0a 09 20 20 20 20 2f 2f 2f 2f 2f TTERS.. /////
44500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
44510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
44520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
44530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
44540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 //////////..
44550 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 74 69 /**... * The ti
44560 6d 65 20 73 69 67 6e 61 74 75 72 65 20 61 73 20 me signature as
44570 6a 75 73 74 20 74 68 65 20 6e 75 6d 65 72 61 74 just the numerat
44580 6f 72 20 6f 76 65 72 20 34 2e 20 0a 09 09 20 2a or over 4. ... *
44590 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 20 34 2f For example 4/
445a0 34 20 77 6f 75 6c 64 20 62 65 20 6a 75 73 74 20 4 would be just
445b0 34 20 61 6e 64 20 36 2f 38 20 77 6f 75 6c 64 20 4 and 6/8 would
445c0 62 65 20 33 2e 0a 09 09 20 2a 20 20 40 6d 65 6d be 3.... * @mem
445d0 62 65 72 4f 66 20 54 6f 6e 65 2e 54 72 61 6e 73 berOf Tone.Trans
445e0 70 6f 72 74 23 0a 09 09 20 2a 20 20 40 74 79 70 port#... * @typ
445f0 65 20 7b 4e 75 6d 62 65 72 7c 41 72 72 61 79 7d e {Number|Array}
44600 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 74 69 6d ... * @name tim
44610 65 53 69 67 6e 61 74 75 72 65 0a 09 09 20 2a 20 eSignature... *
44620 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f @example... * /
44630 2f 63 6f 6d 6d 6f 6e 20 74 69 6d 65 0a 09 09 20 /common time...
44640 2a 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 * Tone.Transport
44650 2e 74 69 6d 65 53 69 67 6e 61 74 75 72 65 20 3d .timeSignature =
44660 20 34 3b 0a 09 09 20 2a 20 2f 2f 20 37 2f 38 0a 4;... * // 7/8.
44670 09 09 20 2a 20 54 6f 6e 65 2e 54 72 61 6e 73 70 .. * Tone.Transp
44680 6f 72 74 2e 74 69 6d 65 53 69 67 6e 61 74 75 72 ort.timeSignatur
44690 65 20 3d 20 5b 37 2c 20 38 5d 3b 0a 09 09 20 2a e = [7, 8];... *
446a0 20 2f 2f 74 68 69 73 20 77 69 6c 6c 20 62 65 20 //this will be
446b0 72 65 64 75 63 65 64 20 74 6f 20 61 20 73 69 6e reduced to a sin
446c0 67 6c 65 20 6e 75 6d 62 65 72 0a 09 09 20 2a 20 gle number... *
446d0 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 74 Tone.Transport.t
446e0 69 6d 65 53 69 67 6e 61 74 75 72 65 3b 20 2f 2f imeSignature; //
446f0 72 65 74 75 72 6e 73 20 33 2e 35 0a 09 09 20 2a returns 3.5... *
44700 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
44710 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
44720 65 2e 54 72 61 6e 73 70 6f 72 74 2e 70 72 6f 74 e.Transport.prot
44730 6f 74 79 70 65 2c 20 27 74 69 6d 65 53 69 67 6e otype, 'timeSign
44740 61 74 75 72 65 27 2c 20 7b 0a 09 20 20 20 20 20 ature', {..
44750 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e get: function
44760 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 () {..
44770 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
44780 74 69 6d 65 53 69 67 6e 61 74 75 72 65 3b 0a 09 timeSignature;..
44790 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 },..
447a0 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f set: functio
447b0 6e 20 28 74 69 6d 65 53 69 67 29 20 7b 0a 09 20 n (timeSig) {..
447c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 if (t
447d0 68 69 73 2e 69 73 41 72 72 61 79 28 74 69 6d 65 his.isArray(time
447e0 53 69 67 29 29 20 7b 0a 09 20 20 20 20 20 20 20 Sig)) {..
447f0 20 20 20 20 20 20 20 20 20 74 69 6d 65 53 69 67 timeSig
44800 20 3d 20 74 69 6d 65 53 69 67 5b 30 5d 20 2f 20 = timeSig[0] /
44810 74 69 6d 65 53 69 67 5b 31 5d 20 2a 20 34 3b 0a timeSig[1] * 4;.
44820 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
44830 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
44840 2e 5f 74 69 6d 65 53 69 67 6e 61 74 75 72 65 20 ._timeSignature
44850 3d 20 74 69 6d 65 53 69 67 3b 0a 09 20 20 20 20 = timeSig;..
44860 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
44870 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 57 68 65 /**... * Whe
44880 6e 20 74 68 65 20 54 6f 6e 65 2e 54 72 61 6e 73 n the Tone.Trans
44890 70 6f 72 74 2e 6c 6f 6f 70 20 3d 20 74 72 75 65 port.loop = true
448a0 2c 20 74 68 69 73 20 69 73 20 74 68 65 20 73 74 , this is the st
448b0 61 72 74 69 6e 67 20 70 6f 73 69 74 69 6f 6e 20 arting position
448c0 6f 66 20 74 68 65 20 6c 6f 6f 70 2e 0a 09 09 20 of the loop....
448d0 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 * @memberOf Tone
448e0 2e 54 72 61 6e 73 70 6f 72 74 23 0a 09 09 20 2a .Transport#... *
448f0 20 40 74 79 70 65 20 7b 54 72 61 6e 73 70 6f 72 @type {Transpor
44900 74 54 69 6d 65 7d 0a 09 09 20 2a 20 40 6e 61 6d tTime}... * @nam
44910 65 20 6c 6f 6f 70 53 74 61 72 74 0a 09 09 20 2a e loopStart... *
44920 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
44930 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
44940 65 2e 54 72 61 6e 73 70 6f 72 74 2e 70 72 6f 74 e.Transport.prot
44950 6f 74 79 70 65 2c 20 27 6c 6f 6f 70 53 74 61 72 otype, 'loopStar
44960 74 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 t', {.. g
44970 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
44980 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
44990 65 74 75 72 6e 20 54 6f 6e 65 2e 54 72 61 6e 73 eturn Tone.Trans
449a0 70 6f 72 74 54 69 6d 65 28 74 68 69 73 2e 5f 6c portTime(this._l
449b0 6f 6f 70 53 74 61 72 74 2c 20 27 69 27 29 2e 74 oopStart, 'i').t
449c0 6f 53 65 63 6f 6e 64 73 28 29 3b 0a 09 20 20 20 oSeconds();..
449d0 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
449e0 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 set: function (
449f0 73 74 61 72 74 50 6f 73 69 74 69 6f 6e 29 20 7b startPosition) {
44a00 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
44a10 69 73 2e 5f 6c 6f 6f 70 53 74 61 72 74 20 3d 20 is._loopStart =
44a20 74 68 69 73 2e 74 6f 54 69 63 6b 73 28 73 74 61 this.toTicks(sta
44a30 72 74 50 6f 73 69 74 69 6f 6e 29 3b 0a 09 20 20 rtPosition);..
44a40 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b }.. });
44a50 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 57 .. /**... * W
44a60 68 65 6e 20 74 68 65 20 54 6f 6e 65 2e 54 72 61 hen the Tone.Tra
44a70 6e 73 70 6f 72 74 2e 6c 6f 6f 70 20 3d 20 74 72 nsport.loop = tr
44a80 75 65 2c 20 74 68 69 73 20 69 73 20 74 68 65 20 ue, this is the
44a90 65 6e 64 69 6e 67 20 70 6f 73 69 74 69 6f 6e 20 ending position
44aa0 6f 66 20 74 68 65 20 6c 6f 6f 70 2e 0a 09 09 20 of the loop....
44ab0 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 * @memberOf Tone
44ac0 2e 54 72 61 6e 73 70 6f 72 74 23 0a 09 09 20 2a .Transport#... *
44ad0 20 40 74 79 70 65 20 7b 54 72 61 6e 73 70 6f 72 @type {Transpor
44ae0 74 54 69 6d 65 7d 0a 09 09 20 2a 20 40 6e 61 6d tTime}... * @nam
44af0 65 20 6c 6f 6f 70 45 6e 64 0a 09 09 20 2a 2f 0a e loopEnd... */.
44b00 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 . Object.defi
44b10 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e neProperty(Tone.
44b20 54 72 61 6e 73 70 6f 72 74 2e 70 72 6f 74 6f 74 Transport.protot
44b30 79 70 65 2c 20 27 6c 6f 6f 70 45 6e 64 27 2c 20 ype, 'loopEnd',
44b40 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 {.. get:
44b50 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
44b60 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
44b70 6e 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 n Tone.Transport
44b80 54 69 6d 65 28 74 68 69 73 2e 5f 6c 6f 6f 70 45 Time(this._loopE
44b90 6e 64 2c 20 27 69 27 29 2e 74 6f 53 65 63 6f 6e nd, 'i').toSecon
44ba0 64 73 28 29 3b 0a 09 20 20 20 20 20 20 20 20 7d ds();.. }
44bb0 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 ,.. set:
44bc0 66 75 6e 63 74 69 6f 6e 20 28 65 6e 64 50 6f 73 function (endPos
44bd0 69 74 69 6f 6e 29 20 7b 0a 09 20 20 20 20 20 20 ition) {..
44be0 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f 6f 70 this._loop
44bf0 45 6e 64 20 3d 20 74 68 69 73 2e 74 6f 54 69 63 End = this.toTic
44c00 6b 73 28 65 6e 64 50 6f 73 69 74 69 6f 6e 29 3b ks(endPosition);
44c10 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
44c20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
44c30 20 2a 20 20 53 65 74 20 74 68 65 20 6c 6f 6f 70 * Set the loop
44c40 20 73 74 61 72 74 20 61 6e 64 20 73 74 6f 70 20 start and stop
44c50 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 at the same time
44c60 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 . ... * @param
44c70 7b 54 72 61 6e 73 70 6f 72 74 54 69 6d 65 7d 20 {TransportTime}
44c80 73 74 61 72 74 50 6f 73 69 74 69 6f 6e 20 0a 09 startPosition ..
44c90 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 72 61 . * @param {Tra
44ca0 6e 73 70 6f 72 74 54 69 6d 65 7d 20 65 6e 64 50 nsportTime} endP
44cb0 6f 73 69 74 69 6f 6e 20 20 20 0a 09 09 20 2a 20 osition ... *
44cc0 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e @returns {Tone.
44cd0 54 72 61 6e 73 70 6f 72 74 7d 20 74 68 69 73 0a Transport} this.
44ce0 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
44cf0 09 20 2a 20 2f 2f 6c 6f 6f 70 20 6f 76 65 72 20 . * //loop over
44d00 74 68 65 20 66 69 72 73 74 20 6d 65 61 73 75 72 the first measur
44d10 65 0a 09 09 20 2a 20 54 6f 6e 65 2e 54 72 61 6e e... * Tone.Tran
44d20 73 70 6f 72 74 2e 73 65 74 4c 6f 6f 70 50 6f 69 sport.setLoopPoi
44d30 6e 74 73 28 30 2c 20 22 31 6d 22 29 3b 0a 09 09 nts(0, "1m");...
44d40 20 2a 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 * Tone.Transpor
44d50 74 2e 6c 6f 6f 70 20 3d 20 74 72 75 65 3b 0a 09 t.loop = true;..
44d60 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 . */.. Tone.T
44d70 72 61 6e 73 70 6f 72 74 2e 70 72 6f 74 6f 74 79 ransport.prototy
44d80 70 65 2e 73 65 74 4c 6f 6f 70 50 6f 69 6e 74 73 pe.setLoopPoints
44d90 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 73 74 61 = function (sta
44da0 72 74 50 6f 73 69 74 69 6f 6e 2c 20 65 6e 64 50 rtPosition, endP
44db0 6f 73 69 74 69 6f 6e 29 20 7b 0a 09 20 20 20 20 osition) {..
44dc0 20 20 20 20 74 68 69 73 2e 6c 6f 6f 70 53 74 61 this.loopSta
44dd0 72 74 20 3d 20 73 74 61 72 74 50 6f 73 69 74 69 rt = startPositi
44de0 6f 6e 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 on;.. thi
44df0 73 2e 6c 6f 6f 70 45 6e 64 20 3d 20 65 6e 64 50 s.loopEnd = endP
44e00 6f 73 69 74 69 6f 6e 3b 0a 09 20 20 20 20 20 20 osition;..
44e10 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
44e20 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
44e30 09 09 20 2a 20 20 54 68 65 20 73 77 69 6e 67 20 .. * The swing
44e40 76 61 6c 75 65 2e 20 42 65 74 77 65 65 6e 20 30 value. Between 0
44e50 2d 31 20 77 68 65 72 65 20 31 20 65 71 75 61 6c -1 where 1 equal
44e60 20 74 6f 20 0a 09 09 20 2a 20 20 74 68 65 20 6e to ... * the n
44e70 6f 74 65 20 2b 20 68 61 6c 66 20 74 68 65 20 73 ote + half the s
44e80 75 62 64 69 76 69 73 69 6f 6e 2e 0a 09 09 20 2a ubdivision.... *
44e90 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 @memberOf Tone
44ea0 2e 54 72 61 6e 73 70 6f 72 74 23 0a 09 09 20 2a .Transport#... *
44eb0 20 20 40 74 79 70 65 20 7b 4e 6f 72 6d 61 6c 52 @type {NormalR
44ec0 61 6e 67 65 7d 0a 09 09 20 2a 20 20 40 6e 61 6d ange}... * @nam
44ed0 65 20 73 77 69 6e 67 0a 09 09 20 2a 2f 0a 09 20 e swing... */..
44ee0 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
44ef0 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 54 72 Property(Tone.Tr
44f00 61 6e 73 70 6f 72 74 2e 70 72 6f 74 6f 74 79 70 ansport.prototyp
44f10 65 2c 20 27 73 77 69 6e 67 27 2c 20 7b 0a 09 20 e, 'swing', {..
44f20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
44f30 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
44f40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
44f50 69 73 2e 5f 73 77 69 6e 67 41 6d 6f 75 6e 74 3b is._swingAmount;
44f60 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
44f70 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
44f80 69 6f 6e 20 28 61 6d 6f 75 6e 74 29 20 7b 0a 09 ion (amount) {..
44f90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 73 63 //sc
44fa0 61 6c 65 20 74 68 65 20 76 61 6c 75 65 73 20 74 ale the values t
44fb0 6f 20 61 20 6e 6f 72 6d 61 6c 20 72 61 6e 67 65 o a normal range
44fc0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
44fd0 69 73 2e 5f 73 77 69 6e 67 41 6d 6f 75 6e 74 20 is._swingAmount
44fe0 3d 20 61 6d 6f 75 6e 74 3b 0a 09 20 20 20 20 20 = amount;..
44ff0 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
45000 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 65 74 /**... * Set
45010 20 74 68 65 20 73 75 62 64 69 76 69 73 69 6f 6e the subdivision
45020 20 77 68 69 63 68 20 74 68 65 20 73 77 69 6e 67 which the swing
45030 20 77 69 6c 6c 20 62 65 20 61 70 70 6c 69 65 64 will be applied
45040 20 74 6f 2e 20 0a 09 09 20 2a 20 20 54 68 65 20 to. ... * The
45050 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 default value is
45060 20 61 6e 20 38 74 68 20 6e 6f 74 65 2e 20 56 61 an 8th note. Va
45070 6c 75 65 20 6d 75 73 74 20 62 65 20 6c 65 73 73 lue must be less
45080 20 0a 09 09 20 2a 20 20 74 68 61 6e 20 61 20 71 ... * than a q
45090 75 61 72 74 65 72 20 6e 6f 74 65 2e 0a 09 09 20 uarter note....
450a0 2a 20 20 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 * ... * @membe
450b0 72 4f 66 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f rOf Tone.Transpo
450c0 72 74 23 0a 09 09 20 2a 20 20 40 74 79 70 65 20 rt#... * @type
450d0 7b 54 69 6d 65 7d 0a 09 09 20 2a 20 20 40 6e 61 {Time}... * @na
450e0 6d 65 20 73 77 69 6e 67 53 75 62 64 69 76 69 73 me swingSubdivis
450f0 69 6f 6e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f ion... */.. O
45100 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 bject.defineProp
45110 65 72 74 79 28 54 6f 6e 65 2e 54 72 61 6e 73 70 erty(Tone.Transp
45120 6f 72 74 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 ort.prototype, '
45130 73 77 69 6e 67 53 75 62 64 69 76 69 73 69 6f 6e swingSubdivision
45140 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 ', {.. ge
45150 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b t: function () {
45160 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
45170 74 75 72 6e 20 54 6f 6e 65 2e 54 69 6d 65 28 74 turn Tone.Time(t
45180 68 69 73 2e 5f 73 77 69 6e 67 54 69 63 6b 73 2c his._swingTicks,
45190 20 27 69 27 29 2e 74 6f 4e 6f 74 61 74 69 6f 6e 'i').toNotation
451a0 28 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a ();.. },.
451b0 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
451c0 6e 63 74 69 6f 6e 20 28 73 75 62 64 69 76 69 73 nction (subdivis
451d0 69 6f 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ion) {..
451e0 20 20 20 20 74 68 69 73 2e 5f 73 77 69 6e 67 54 this._swingT
451f0 69 63 6b 73 20 3d 20 74 68 69 73 2e 74 6f 54 69 icks = this.toTi
45200 63 6b 73 28 73 75 62 64 69 76 69 73 69 6f 6e 29 cks(subdivision)
45210 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
45220 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 });.. /**..
45230 09 20 2a 20 20 54 68 65 20 54 72 61 6e 73 70 6f . * The Transpo
45240 72 74 27 73 20 70 6f 73 69 74 69 6f 6e 20 69 6e rt's position in
45250 20 42 61 72 73 3a 42 65 61 74 73 3a 53 69 78 74 Bars:Beats:Sixt
45260 65 65 6e 74 68 73 2e 0a 09 09 20 2a 20 20 53 65 eenths.... * Se
45270 74 74 69 6e 67 20 74 68 65 20 76 61 6c 75 65 20 tting the value
45280 77 69 6c 6c 20 6a 75 6d 70 20 74 6f 20 74 68 61 will jump to tha
45290 74 20 70 6f 73 69 74 69 6f 6e 20 72 69 67 68 74 t position right
452a0 20 61 77 61 79 2e 20 0a 09 09 20 2a 20 20 40 6d away. ... * @m
452b0 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 54 72 61 emberOf Tone.Tra
452c0 6e 73 70 6f 72 74 23 0a 09 09 20 2a 20 20 40 74 nsport#... * @t
452d0 79 70 65 20 7b 42 61 72 73 42 65 61 74 73 53 69 ype {BarsBeatsSi
452e0 78 74 65 65 6e 74 68 73 7d 0a 09 09 20 2a 20 20 xteenths}... *
452f0 40 6e 61 6d 65 20 70 6f 73 69 74 69 6f 6e 0a 09 @name position..
45300 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
45310 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
45320 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 70 Tone.Transport.p
45330 72 6f 74 6f 74 79 70 65 2c 20 27 70 6f 73 69 74 rototype, 'posit
45340 69 6f 6e 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 ion', {..
45350 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
45360 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
45370 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 54 72 61 return Tone.Tra
45380 6e 73 70 6f 72 74 54 69 6d 65 28 74 68 69 73 2e nsportTime(this.
45390 74 69 63 6b 73 2c 20 27 69 27 29 2e 74 6f 42 61 ticks, 'i').toBa
453a0 72 73 42 65 61 74 73 53 69 78 74 65 65 6e 74 68 rsBeatsSixteenth
453b0 73 28 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c s();.. },
453c0 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 .. set: f
453d0 75 6e 63 74 69 6f 6e 20 28 70 72 6f 67 72 65 73 unction (progres
453e0 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 s) {..
453f0 20 20 76 61 72 20 74 69 63 6b 73 20 3d 20 74 68 var ticks = th
45400 69 73 2e 74 6f 54 69 63 6b 73 28 70 72 6f 67 72 is.toTicks(progr
45410 65 73 73 29 3b 0a 09 20 20 20 20 20 20 20 20 20 ess);..
45420 20 20 20 74 68 69 73 2e 74 69 63 6b 73 20 3d 20 this.ticks =
45430 74 69 63 6b 73 3b 0a 09 20 20 20 20 20 20 20 20 ticks;..
45440 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
45450 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 54 72 /**... * The Tr
45460 61 6e 73 70 6f 72 74 27 73 20 70 6f 73 69 74 69 ansport's positi
45470 6f 6e 20 69 6e 20 73 65 63 6f 6e 64 73 0a 09 09 on in seconds...
45480 20 2a 20 20 53 65 74 74 69 6e 67 20 74 68 65 20 * Setting the
45490 76 61 6c 75 65 20 77 69 6c 6c 20 6a 75 6d 70 20 value will jump
454a0 74 6f 20 74 68 61 74 20 70 6f 73 69 74 69 6f 6e to that position
454b0 20 72 69 67 68 74 20 61 77 61 79 2e 20 0a 09 09 right away. ...
454c0 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
454d0 6e 65 2e 54 72 61 6e 73 70 6f 72 74 23 0a 09 09 ne.Transport#...
454e0 20 2a 20 20 40 74 79 70 65 20 7b 53 65 63 6f 6e * @type {Secon
454f0 64 73 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 ds}... * @name
45500 73 65 63 6f 6e 64 73 0a 09 09 20 2a 2f 0a 09 20 seconds... */..
45510 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
45520 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 54 72 Property(Tone.Tr
45530 61 6e 73 70 6f 72 74 2e 70 72 6f 74 6f 74 79 70 ansport.prototyp
45540 65 2c 20 27 73 65 63 6f 6e 64 73 27 2c 20 7b 0a e, 'seconds', {.
45550 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
45560 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
45570 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
45580 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 54 69 Tone.TransportTi
45590 6d 65 28 74 68 69 73 2e 74 69 63 6b 73 2c 20 27 me(this.ticks, '
455a0 69 27 29 2e 74 6f 53 65 63 6f 6e 64 73 28 29 3b i').toSeconds();
455b0 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
455c0 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
455d0 69 6f 6e 20 28 70 72 6f 67 72 65 73 73 29 20 7b ion (progress) {
455e0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
455f0 72 20 74 69 63 6b 73 20 3d 20 74 68 69 73 2e 74 r ticks = this.t
45600 6f 54 69 63 6b 73 28 70 72 6f 67 72 65 73 73 29 oTicks(progress)
45610 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 ;.. t
45620 68 69 73 2e 74 69 63 6b 73 20 3d 20 74 69 63 6b his.ticks = tick
45630 73 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 s;.. }..
45640 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
45650 09 09 20 2a 20 20 54 68 65 20 54 72 61 6e 73 70 .. * The Transp
45660 6f 72 74 27 73 20 6c 6f 6f 70 20 70 6f 73 69 74 ort's loop posit
45670 69 6f 6e 20 61 73 20 61 20 6e 6f 72 6d 61 6c 69 ion as a normali
45680 7a 65 64 20 76 61 6c 75 65 2e 20 41 6c 77 61 79 zed value. Alway
45690 73 0a 09 09 20 2a 20 20 72 65 74 75 72 6e 73 20 s... * returns
456a0 30 20 69 66 20 74 68 65 20 74 72 61 6e 73 70 6f 0 if the transpo
456b0 72 74 20 69 66 20 6c 6f 6f 70 20 69 73 20 6e 6f rt if loop is no
456c0 74 20 74 72 75 65 2e 20 0a 09 09 20 2a 20 20 40 t true. ... * @
456d0 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 54 72 memberOf Tone.Tr
456e0 61 6e 73 70 6f 72 74 23 0a 09 09 20 2a 20 20 40 ansport#... * @
456f0 6e 61 6d 65 20 70 72 6f 67 72 65 73 73 0a 09 09 name progress...
45700 20 2a 20 20 40 74 79 70 65 20 7b 4e 6f 72 6d 61 * @type {Norma
45710 6c 52 61 6e 67 65 7d 0a 09 09 20 2a 2f 0a 09 20 lRange}... */..
45720 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
45730 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 54 72 Property(Tone.Tr
45740 61 6e 73 70 6f 72 74 2e 70 72 6f 74 6f 74 79 70 ansport.prototyp
45750 65 2c 20 27 70 72 6f 67 72 65 73 73 27 2c 20 7b e, 'progress', {
45760 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 .. get: f
45770 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
45780 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 if (th
45790 69 73 2e 6c 6f 6f 70 29 20 7b 0a 09 20 20 20 20 is.loop) {..
457a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
457b0 72 6e 20 28 74 68 69 73 2e 74 69 63 6b 73 20 2d rn (this.ticks -
457c0 20 74 68 69 73 2e 5f 6c 6f 6f 70 53 74 61 72 74 this._loopStart
457d0 29 20 2f 20 28 74 68 69 73 2e 5f 6c 6f 6f 70 45 ) / (this._loopE
457e0 6e 64 20 2d 20 74 68 69 73 2e 5f 6c 6f 6f 70 53 nd - this._loopS
457f0 74 61 72 74 29 3b 0a 09 20 20 20 20 20 20 20 20 tart);..
45800 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 } else {..
45810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
45820 74 75 72 6e 20 30 3b 0a 09 20 20 20 20 20 20 20 turn 0;..
45830 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
45840 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
45850 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 74 72 /**... * The tr
45860 61 6e 73 70 6f 72 74 73 20 63 75 72 72 65 6e 74 ansports current
45870 20 74 69 63 6b 20 70 6f 73 69 74 69 6f 6e 2e 0a tick position..
45880 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 6d 65 .. * ... * @me
45890 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 54 72 61 6e mberOf Tone.Tran
458a0 73 70 6f 72 74 23 0a 09 09 20 2a 20 20 40 74 79 sport#... * @ty
458b0 70 65 20 7b 54 69 63 6b 73 7d 0a 09 09 20 2a 20 pe {Ticks}... *
458c0 20 40 6e 61 6d 65 20 74 69 63 6b 73 0a 09 09 20 @name ticks...
458d0 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 */.. Object.d
458e0 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f efineProperty(To
458f0 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 70 72 6f ne.Transport.pro
45900 74 6f 74 79 70 65 2c 20 27 74 69 63 6b 73 27 2c totype, 'ticks',
45910 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
45920 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
45930 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
45940 72 6e 20 74 68 69 73 2e 5f 63 6c 6f 63 6b 2e 74 rn this._clock.t
45950 69 63 6b 73 3b 0a 09 20 20 20 20 20 20 20 20 7d icks;.. }
45960 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 ,.. set:
45970 66 75 6e 63 74 69 6f 6e 20 28 74 29 20 7b 0a 09 function (t) {..
45980 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
45990 6e 6f 77 20 3d 20 74 68 69 73 2e 6e 6f 77 28 29 now = this.now()
459a0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f ;.. /
459b0 2f 73 74 6f 70 20 65 76 65 72 79 74 68 69 6e 67 /stop everything
459c0 20 73 79 6e 63 65 64 20 74 6f 20 74 68 65 20 74 synced to the t
459d0 72 61 6e 73 70 6f 72 74 0a 09 20 20 20 20 20 20 ransport..
459e0 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 73 if (this.s
459f0 74 61 74 65 20 3d 3d 3d 20 54 6f 6e 65 2e 53 74 tate === Tone.St
45a00 61 74 65 2e 53 74 61 72 74 65 64 29 20 7b 0a 09 ate.Started) {..
45a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
45a20 74 68 69 73 2e 65 6d 69 74 28 27 73 74 6f 70 27 this.emit('stop'
45a30 2c 20 6e 6f 77 29 3b 0a 09 20 20 20 20 20 20 20 , now);..
45a40 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 this._c
45a50 6c 6f 63 6b 2e 74 69 63 6b 73 20 3d 20 74 3b 0a lock.ticks = t;.
45a60 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
45a70 20 2f 2f 72 65 73 74 61 72 74 20 69 74 20 77 69 //restart it wi
45a80 74 68 20 74 68 65 20 6e 65 77 20 74 69 6d 65 0a th the new time.
45a90 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
45aa0 20 74 68 69 73 2e 65 6d 69 74 28 27 73 74 61 72 this.emit('star
45ab0 74 27 2c 20 6e 6f 77 2c 20 74 68 69 73 2e 73 65 t', now, this.se
45ac0 63 6f 6e 64 73 29 3b 0a 09 20 20 20 20 20 20 20 conds);..
45ad0 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
45ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
45af0 68 69 73 2e 5f 63 6c 6f 63 6b 2e 74 69 63 6b 73 his._clock.ticks
45b00 20 3d 20 74 3b 0a 09 20 20 20 20 20 20 20 20 20 = t;..
45b10 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a }.. }.
45b20 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a . });.. /*
45b30 2a 0a 09 09 20 2a 20 20 50 75 6c 73 65 73 20 50 *... * Pulses P
45b40 65 72 20 51 75 61 72 74 65 72 20 6e 6f 74 65 2e er Quarter note.
45b50 20 54 68 69 73 20 69 73 20 74 68 65 20 73 6d 61 This is the sma
45b60 6c 6c 65 73 74 20 72 65 73 6f 6c 75 74 69 6f 6e llest resolution
45b70 0a 09 09 20 2a 20 20 74 68 65 20 54 72 61 6e 73 ... * the Trans
45b80 70 6f 72 74 20 74 69 6d 69 6e 67 20 73 75 70 70 port timing supp
45b90 6f 72 74 73 2e 20 54 68 69 73 20 73 68 6f 75 6c orts. This shoul
45ba0 64 20 62 65 20 73 65 74 20 6f 6e 63 65 0a 09 09 d be set once...
45bb0 20 2a 20 20 6f 6e 20 69 6e 69 74 69 61 6c 69 7a * on initializ
45bc0 61 74 69 6f 6e 20 61 6e 64 20 6e 6f 74 20 73 65 ation and not se
45bd0 74 20 61 67 61 69 6e 2e 20 43 68 61 6e 67 69 6e t again. Changin
45be0 67 20 74 68 69 73 20 76 61 6c 75 65 20 0a 09 09 g this value ...
45bf0 20 2a 20 20 61 66 74 65 72 20 6f 74 68 65 72 20 * after other
45c00 6f 62 6a 65 63 74 73 20 68 61 76 65 20 62 65 65 objects have bee
45c10 6e 20 63 72 65 61 74 65 64 20 63 61 6e 20 63 61 n created can ca
45c20 75 73 65 20 70 72 6f 62 6c 65 6d 73 2e 20 0a 09 use problems. ..
45c30 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 6d 65 6d . * ... * @mem
45c40 62 65 72 4f 66 20 54 6f 6e 65 2e 54 72 61 6e 73 berOf Tone.Trans
45c50 70 6f 72 74 23 0a 09 09 20 2a 20 20 40 74 79 70 port#... * @typ
45c60 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 e {Number}... *
45c70 20 40 6e 61 6d 65 20 50 50 51 0a 09 09 20 2a 2f @name PPQ... */
45c80 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 .. Object.def
45c90 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 ineProperty(Tone
45ca0 2e 54 72 61 6e 73 70 6f 72 74 2e 70 72 6f 74 6f .Transport.proto
45cb0 74 79 70 65 2c 20 27 50 50 51 27 2c 20 7b 0a 09 type, 'PPQ', {..
45cc0 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e get: fun
45cd0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
45ce0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
45cf0 68 69 73 2e 5f 70 70 71 3b 0a 09 20 20 20 20 20 his._ppq;..
45d00 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 },.. s
45d10 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 70 70 et: function (pp
45d20 71 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 q) {..
45d30 20 20 76 61 72 20 62 70 6d 20 3d 20 74 68 69 73 var bpm = this
45d40 2e 62 70 6d 2e 76 61 6c 75 65 3b 0a 09 20 20 20 .bpm.value;..
45d50 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 this._p
45d60 70 71 20 3d 20 70 70 71 3b 0a 09 20 20 20 20 20 pq = ppq;..
45d70 20 20 20 20 20 20 20 74 68 69 73 2e 62 70 6d 2e this.bpm.
45d80 76 61 6c 75 65 20 3d 20 62 70 6d 3b 0a 09 20 20 value = bpm;..
45d90 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b }.. });
45da0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
45db0 54 68 65 20 68 69 6e 74 20 74 6f 20 74 68 65 20 The hint to the
45dc0 74 79 70 65 20 6f 66 20 70 6c 61 79 62 61 63 6b type of playback
45dd0 2e 20 41 66 66 65 63 74 73 20 74 72 61 64 65 6f . Affects tradeo
45de0 66 66 73 20 62 65 74 77 65 65 6e 20 61 75 64 69 ffs between audi
45df0 6f 20 0a 09 09 20 2a 20 20 6f 75 74 70 75 74 20 o ... * output
45e00 6c 61 74 65 6e 63 79 20 61 6e 64 20 72 65 73 70 latency and resp
45e10 6f 6e 73 69 76 65 6e 65 73 73 2e 20 0a 09 09 20 onsiveness. ...
45e20 2a 20 20 0a 09 09 20 2a 20 20 49 6e 20 61 64 64 * ... * In add
45e30 69 74 69 6f 6e 20 74 6f 20 73 65 74 74 69 6e 67 ition to setting
45e40 20 74 68 65 20 76 61 6c 75 65 20 69 6e 20 73 65 the value in se
45e50 63 6f 6e 64 73 2c 20 74 68 65 20 6c 61 74 65 6e conds, the laten
45e60 63 79 48 69 6e 74 20 61 6c 73 6f 0a 09 09 20 2a cyHint also... *
45e70 20 20 61 63 63 65 70 74 73 20 74 68 65 20 73 74 accepts the st
45e80 72 69 6e 67 73 20 22 69 6e 74 65 72 61 63 74 69 rings "interacti
45e90 76 65 22 20 28 70 72 69 6f 72 69 74 69 7a 65 73 ve" (prioritizes
45ea0 20 6c 6f 77 20 6c 61 74 65 6e 63 79 29 2c 20 0a low latency), .
45eb0 09 09 20 2a 20 20 22 70 6c 61 79 62 61 63 6b 22 .. * "playback"
45ec0 20 28 70 72 69 6f 72 69 74 69 7a 65 73 20 73 75 (prioritizes su
45ed0 73 74 61 69 6e 65 64 20 70 6c 61 79 62 61 63 6b stained playback
45ee0 29 2c 20 22 62 61 6c 61 6e 63 65 64 22 20 28 62 ), "balanced" (b
45ef0 61 6c 61 6e 63 65 73 0a 09 09 20 2a 20 20 6c 61 alances... * la
45f00 74 65 6e 63 79 20 61 6e 64 20 70 65 72 66 6f 72 tency and perfor
45f10 6d 61 6e 63 65 29 2c 20 61 6e 64 20 22 66 61 73 mance), and "fas
45f20 74 65 73 74 22 20 28 6c 6f 77 65 73 74 20 6c 61 test" (lowest la
45f30 74 65 6e 63 79 2c 20 6d 69 67 68 74 20 67 6c 69 tency, might gli
45f40 74 63 68 20 6d 6f 72 65 20 6f 66 74 65 6e 29 2e tch more often).
45f50 20 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f ... * @memberO
45f60 66 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 f Tone.Transport
45f70 23 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 53 #... * @type {S
45f80 65 63 6f 6e 64 73 7c 53 74 72 69 6e 67 7d 0a 09 econds|String}..
45f90 09 20 2a 20 20 40 6e 61 6d 65 20 6c 61 74 65 6e . * @name laten
45fa0 63 79 48 69 6e 74 0a 09 09 20 2a 2f 0a 09 20 20 cyHint... */..
45fb0 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
45fc0 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 54 72 61 roperty(Tone.Tra
45fd0 6e 73 70 6f 72 74 2e 70 72 6f 74 6f 74 79 70 65 nsport.prototype
45fe0 2c 20 27 6c 61 74 65 6e 63 79 48 69 6e 74 27 2c , 'latencyHint',
45ff0 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
46000 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
46010 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
46020 72 6e 20 54 6f 6e 65 2e 43 6c 6f 63 6b 2e 6c 61 rn Tone.Clock.la
46030 74 65 6e 63 79 48 69 6e 74 3b 0a 09 20 20 20 20 tencyHint;..
46040 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
46050 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 68 set: function (h
46060 69 6e 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 int) {..
46070 20 20 20 20 54 6f 6e 65 2e 43 6c 6f 63 6b 2e 6c Tone.Clock.l
46080 61 74 65 6e 63 79 48 69 6e 74 20 3d 20 68 69 6e atencyHint = hin
46090 74 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 t;.. }..
460a0 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
460b0 09 09 20 2a 20 20 43 6f 6e 76 65 72 74 20 66 72 .. * Convert fr
460c0 6f 6d 20 42 50 4d 20 74 6f 20 66 72 65 71 75 65 om BPM to freque
460d0 6e 63 79 20 28 66 61 63 74 6f 72 69 6e 67 20 69 ncy (factoring i
460e0 6e 20 50 50 51 29 0a 09 09 20 2a 20 20 40 70 61 n PPQ)... * @pa
460f0 72 61 6d 20 20 7b 42 50 4d 7d 20 20 62 70 6d 20 ram {BPM} bpm
46100 54 68 65 20 42 50 4d 20 76 61 6c 75 65 20 74 6f The BPM value to
46110 20 63 6f 6e 76 65 72 74 20 74 6f 20 66 72 65 71 convert to freq
46120 75 65 6e 63 79 0a 09 09 20 2a 20 20 40 72 65 74 uency... * @ret
46130 75 72 6e 20 20 7b 46 72 65 71 75 65 6e 63 79 7d urn {Frequency}
46140 20 20 54 68 65 20 42 50 4d 20 61 73 20 61 20 66 The BPM as a f
46150 72 65 71 75 65 6e 63 79 20 77 69 74 68 20 50 50 requency with PP
46160 51 20 66 61 63 74 6f 72 65 64 20 69 6e 2e 0a 09 Q factored in...
46170 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
46180 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 72 */.. Tone.Tr
46190 61 6e 73 70 6f 72 74 2e 70 72 6f 74 6f 74 79 70 ansport.prototyp
461a0 65 2e 5f 66 72 6f 6d 55 6e 69 74 73 20 3d 20 66 e._fromUnits = f
461b0 75 6e 63 74 69 6f 6e 20 28 62 70 6d 29 20 7b 0a unction (bpm) {.
461c0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
461d0 31 20 2f 20 28 36 30 20 2f 20 62 70 6d 20 2f 20 1 / (60 / bpm /
461e0 74 68 69 73 2e 50 50 51 29 3b 0a 09 20 20 20 20 this.PPQ);..
461f0 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
46200 20 20 43 6f 6e 76 65 72 74 20 66 72 6f 6d 20 66 Convert from f
46210 72 65 71 75 65 6e 63 79 20 28 77 69 74 68 20 50 requency (with P
46220 50 51 29 20 69 6e 74 6f 20 42 50 4d 0a 09 09 20 PQ) into BPM...
46230 2a 20 20 40 70 61 72 61 6d 20 20 7b 46 72 65 71 * @param {Freq
46240 75 65 6e 63 79 7d 20 20 66 72 65 71 20 54 68 65 uency} freq The
46250 20 63 6c 6f 63 6b 73 20 66 72 65 71 75 65 6e 63 clocks frequenc
46260 79 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 6f 20 y to convert to
46270 42 50 4d 0a 09 09 20 2a 20 20 40 72 65 74 75 72 BPM... * @retur
46280 6e 20 20 7b 42 50 4d 7d 20 20 54 68 65 20 66 72 n {BPM} The fr
46290 65 71 75 65 6e 63 79 20 76 61 6c 75 65 20 61 73 equency value as
462a0 20 42 50 4d 2e 0a 09 09 20 2a 20 20 40 70 72 69 BPM.... * @pri
462b0 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 vate... */..
462c0 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 70 Tone.Transport.p
462d0 72 6f 74 6f 74 79 70 65 2e 5f 74 6f 55 6e 69 74 rototype._toUnit
462e0 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 66 72 s = function (fr
462f0 65 71 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 eq) {.. r
46300 65 74 75 72 6e 20 66 72 65 71 20 2f 20 74 68 69 eturn freq / thi
46310 73 2e 50 50 51 20 2a 20 36 30 3b 0a 09 20 20 20 s.PPQ * 60;..
46320 20 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f };.. ///////
46330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
46340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
46350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
46360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
46370 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2f ////////.. //
46380 09 53 59 4e 43 49 4e 47 0a 09 20 20 20 20 2f 2f .SYNCING.. //
46390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
463a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
463b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
463c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
463d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 /////////////..
463e0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 /**... * Ret
463f0 75 72 6e 73 20 74 68 65 20 74 69 6d 65 20 61 6c urns the time al
46400 69 67 6e 65 64 20 74 6f 20 74 68 65 20 6e 65 78 igned to the nex
46410 74 20 73 75 62 64 69 76 69 73 69 6f 6e 0a 09 09 t subdivision...
46420 20 2a 20 20 6f 66 20 74 68 65 20 54 72 61 6e 73 * of the Trans
46430 70 6f 72 74 2e 20 49 66 20 74 68 65 20 54 72 61 port. If the Tra
46440 6e 73 70 6f 72 74 20 69 73 20 6e 6f 74 20 73 74 nsport is not st
46450 61 72 74 65 64 2c 0a 09 09 20 2a 20 20 69 74 20 arted,... * it
46460 77 69 6c 6c 20 72 65 74 75 72 6e 20 30 2e 0a 09 will return 0...
46470 09 20 2a 20 20 4e 6f 74 65 3a 20 74 68 69 73 20 . * Note: this
46480 77 69 6c 6c 20 6e 6f 74 20 77 6f 72 6b 20 70 72 will not work pr
46490 65 63 69 73 65 6c 79 20 64 75 72 69 6e 67 20 74 ecisely during t
464a0 65 6d 70 6f 20 72 61 6d 70 73 2e 0a 09 09 20 2a empo ramps.... *
464b0 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d @param {Time}
464c0 20 20 73 75 62 64 69 76 69 73 69 6f 6e 20 20 54 subdivision T
464d0 68 65 20 73 75 62 64 69 76 69 73 69 6f 6e 20 74 he subdivision t
464e0 6f 20 71 75 61 6e 74 69 7a 65 20 74 6f 0a 09 09 o quantize to...
464f0 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 4e 75 * @return {Nu
46500 6d 62 65 72 7d 20 20 54 68 65 20 63 6f 6e 74 65 mber} The conte
46510 78 74 20 74 69 6d 65 20 6f 66 20 74 68 65 20 6e xt time of the n
46520 65 78 74 20 73 75 62 64 69 76 69 73 69 6f 6e 2e ext subdivision.
46530 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
46540 09 09 20 2a 20 54 6f 6e 65 2e 54 72 61 6e 73 70 .. * Tone.Transp
46550 6f 72 74 2e 73 74 61 72 74 28 29 3b 20 2f 2f 74 ort.start(); //t
46560 68 65 20 74 72 61 6e 73 70 6f 72 74 20 6d 75 73 he transport mus
46570 74 20 62 65 20 73 74 61 72 74 65 64 0a 09 09 20 t be started...
46580 2a 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 * Tone.Transport
46590 2e 6e 65 78 74 53 75 62 64 69 76 69 73 69 6f 6e .nextSubdivision
465a0 28 22 34 6e 22 29 3b 0a 09 09 20 2a 2f 0a 09 20 ("4n");... */..
465b0 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 Tone.Transpor
465c0 74 2e 70 72 6f 74 6f 74 79 70 65 2e 6e 65 78 74 t.prototype.next
465d0 53 75 62 64 69 76 69 73 69 6f 6e 20 3d 20 66 75 Subdivision = fu
465e0 6e 63 74 69 6f 6e 20 28 73 75 62 64 69 76 69 73 nction (subdivis
465f0 69 6f 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ion) {..
46600 73 75 62 64 69 76 69 73 69 6f 6e 20 3d 20 74 68 subdivision = th
46610 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 73 75 62 is.toSeconds(sub
46620 64 69 76 69 73 69 6f 6e 29 3b 0a 09 20 20 20 20 division);..
46630 20 20 20 20 2f 2f 69 66 20 74 68 65 20 74 72 61 //if the tra
46640 6e 73 70 6f 72 74 27 73 20 6e 6f 74 20 73 74 61 nsport's not sta
46650 72 74 65 64 2c 20 72 65 74 75 72 6e 20 30 0a 09 rted, return 0..
46660 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 77 3b var now;
46670 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
46680 69 73 2e 73 74 61 74 65 20 3d 3d 3d 20 54 6f 6e is.state === Ton
46690 65 2e 53 74 61 74 65 2e 53 74 61 72 74 65 64 29 e.State.Started)
466a0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
466b0 6e 6f 77 20 3d 20 74 68 69 73 2e 5f 63 6c 6f 63 now = this._cloc
466c0 6b 2e 5f 6e 65 78 74 54 69 63 6b 3b 0a 09 20 20 k._nextTick;..
466d0 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 } else {..
466e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
466f0 72 6e 20 30 3b 0a 09 20 20 20 20 20 20 20 20 7d rn 0;.. }
46700 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 74 72 .. var tr
46710 61 6e 73 70 6f 72 74 50 6f 73 20 3d 20 54 6f 6e ansportPos = Ton
46720 65 2e 54 69 6d 65 28 74 68 69 73 2e 74 69 63 6b e.Time(this.tick
46730 73 2c 20 27 69 27 29 2e 65 76 61 6c 28 29 3b 0a s, 'i').eval();.
46740 09 20 20 20 20 20 20 20 20 76 61 72 20 72 65 6d . var rem
46750 61 69 6e 69 6e 67 54 69 6d 65 20 3d 20 73 75 62 ainingTime = sub
46760 64 69 76 69 73 69 6f 6e 20 2d 20 74 72 61 6e 73 division - trans
46770 70 6f 72 74 50 6f 73 20 25 20 73 75 62 64 69 76 portPos % subdiv
46780 69 73 69 6f 6e 3b 0a 09 20 20 20 20 20 20 20 20 ision;..
46790 69 66 20 28 72 65 6d 61 69 6e 69 6e 67 54 69 6d if (remainingTim
467a0 65 20 3d 3d 3d 20 30 29 20 7b 0a 09 20 20 20 20 e === 0) {..
467b0 20 20 20 20 20 20 20 20 72 65 6d 61 69 6e 69 6e remainin
467c0 67 54 69 6d 65 20 3d 20 73 75 62 64 69 76 69 73 gTime = subdivis
467d0 69 6f 6e 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a ion;.. }.
467e0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
467f0 6e 6f 77 20 2b 20 72 65 6d 61 69 6e 69 6e 67 54 now + remainingT
46800 69 6d 65 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ime;.. };..
46810 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 41 74 74 61 /**... * Atta
46820 63 68 65 73 20 74 68 65 20 73 69 67 6e 61 6c 20 ches the signal
46830 74 6f 20 74 68 65 20 74 65 6d 70 6f 20 63 6f 6e to the tempo con
46840 74 72 6f 6c 20 73 69 67 6e 61 6c 20 73 6f 20 74 trol signal so t
46850 68 61 74 20 0a 09 09 20 2a 20 20 61 6e 79 20 63 hat ... * any c
46860 68 61 6e 67 65 73 20 69 6e 20 74 68 65 20 74 65 hanges in the te
46870 6d 70 6f 20 77 69 6c 6c 20 63 68 61 6e 67 65 20 mpo will change
46880 74 68 65 20 73 69 67 6e 61 6c 20 69 6e 20 74 68 the signal in th
46890 65 20 73 61 6d 65 0a 09 09 20 2a 20 20 72 61 74 e same... * rat
468a0 69 6f 2e 20 0a 09 09 20 2a 20 20 0a 09 09 20 2a io. ... * ... *
468b0 20 20 40 70 61 72 61 6d 20 20 7b 54 6f 6e 65 2e @param {Tone.
468c0 53 69 67 6e 61 6c 7d 20 73 69 67 6e 61 6c 20 0a Signal} signal .
468d0 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e 75 .. * @param {nu
468e0 6d 62 65 72 3d 7d 20 72 61 74 69 6f 20 4f 70 74 mber=} ratio Opt
468f0 69 6f 6e 61 6c 6c 79 20 70 61 73 73 20 69 6e 20 ionally pass in
46900 74 68 65 20 72 61 74 69 6f 20 62 65 74 77 65 65 the ratio betwee
46910 6e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 n... *
46920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
46930 68 65 20 74 77 6f 20 73 69 67 6e 61 6c 73 2e 20 he two signals.
46940 4f 74 68 65 72 77 69 73 65 20 69 74 20 77 69 6c Otherwise it wil
46950 6c 20 62 65 20 63 6f 6d 70 75 74 65 64 0a 09 09 l be computed...
46960 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
46970 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 64 based
46980 20 6f 6e 20 74 68 65 69 72 20 63 75 72 72 65 6e on their curren
46990 74 20 76 61 6c 75 65 73 2e 20 0a 09 09 20 2a 20 t values. ... *
469a0 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e @returns {Tone.
469b0 54 72 61 6e 73 70 6f 72 74 7d 20 74 68 69 73 0a Transport} this.
469c0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
469d0 54 72 61 6e 73 70 6f 72 74 2e 70 72 6f 74 6f 74 Transport.protot
469e0 79 70 65 2e 73 79 6e 63 53 69 67 6e 61 6c 20 3d ype.syncSignal =
469f0 20 66 75 6e 63 74 69 6f 6e 20 28 73 69 67 6e 61 function (signa
46a00 6c 2c 20 72 61 74 69 6f 29 20 7b 0a 09 20 20 20 l, ratio) {..
46a10 20 20 20 20 20 69 66 20 28 21 72 61 74 69 6f 29 if (!ratio)
46a20 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
46a30 2f 2f 67 65 74 20 74 68 65 20 73 79 6e 63 20 72 //get the sync r
46a40 61 74 69 6f 0a 09 20 20 20 20 20 20 20 20 20 20 atio..
46a50 20 20 69 66 20 28 73 69 67 6e 61 6c 2e 5f 70 61 if (signal._pa
46a60 72 61 6d 2e 76 61 6c 75 65 20 21 3d 3d 20 30 29 ram.value !== 0)
46a70 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
46a80 20 20 20 20 72 61 74 69 6f 20 3d 20 73 69 67 6e ratio = sign
46a90 61 6c 2e 5f 70 61 72 61 6d 2e 76 61 6c 75 65 20 al._param.value
46aa0 2f 20 74 68 69 73 2e 62 70 6d 2e 5f 70 61 72 61 / this.bpm._para
46ab0 6d 2e 76 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 m.value;..
46ac0 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 } else {..
46ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
46ae0 72 61 74 69 6f 20 3d 20 30 3b 0a 09 20 20 20 20 ratio = 0;..
46af0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
46b00 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 76 61 }.. va
46b10 72 20 72 61 74 69 6f 53 69 67 6e 61 6c 20 3d 20 r ratioSignal =
46b20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 72 61 new Tone.Gain(ra
46b30 74 69 6f 29 3b 0a 09 20 20 20 20 20 20 20 20 74 tio);.. t
46b40 68 69 73 2e 62 70 6d 2e 63 68 61 69 6e 28 72 61 his.bpm.chain(ra
46b50 74 69 6f 53 69 67 6e 61 6c 2c 20 73 69 67 6e 61 tioSignal, signa
46b60 6c 2e 5f 70 61 72 61 6d 29 3b 0a 09 20 20 20 20 l._param);..
46b70 20 20 20 20 74 68 69 73 2e 5f 73 79 6e 63 65 64 this._synced
46b80 53 69 67 6e 61 6c 73 2e 70 75 73 68 28 7b 0a 09 Signals.push({..
46b90 20 20 20 20 20 20 20 20 20 20 20 20 27 72 61 74 'rat
46ba0 69 6f 27 3a 20 72 61 74 69 6f 53 69 67 6e 61 6c io': ratioSignal
46bb0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
46bc0 73 69 67 6e 61 6c 27 3a 20 73 69 67 6e 61 6c 2c signal': signal,
46bd0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 69 .. 'i
46be0 6e 69 74 69 61 6c 27 3a 20 73 69 67 6e 61 6c 2e nitial': signal.
46bf0 5f 70 61 72 61 6d 2e 76 61 6c 75 65 0a 09 20 20 _param.value..
46c00 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 });..
46c10 20 20 20 73 69 67 6e 61 6c 2e 5f 70 61 72 61 6d signal._param
46c20 2e 76 61 6c 75 65 20 3d 20 30 3b 0a 09 20 20 20 .value = 0;..
46c30 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
46c40 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
46c50 2a 2a 0a 09 09 20 2a 20 20 55 6e 73 79 6e 63 73 **... * Unsyncs
46c60 20 61 20 70 72 65 76 69 6f 75 73 6c 79 20 73 79 a previously sy
46c70 6e 63 65 64 20 73 69 67 6e 61 6c 20 66 72 6f 6d nced signal from
46c80 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 27 73 the transport's
46c90 20 63 6f 6e 74 72 6f 6c 2e 20 0a 09 09 20 2a 20 control. ... *
46ca0 20 53 65 65 20 54 6f 6e 65 2e 54 72 61 6e 73 70 See Tone.Transp
46cb0 6f 72 74 2e 73 79 6e 63 53 69 67 6e 61 6c 2e 0a ort.syncSignal..
46cc0 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 .. * @param {T
46cd0 6f 6e 65 2e 53 69 67 6e 61 6c 7d 20 73 69 67 6e one.Signal} sign
46ce0 61 6c 20 0a 09 09 20 2a 20 20 40 72 65 74 75 72 al ... * @retur
46cf0 6e 73 20 7b 54 6f 6e 65 2e 54 72 61 6e 73 70 6f ns {Tone.Transpo
46d00 72 74 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 rt} this... */..
46d10 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f Tone.Transpo
46d20 72 74 2e 70 72 6f 74 6f 74 79 70 65 2e 75 6e 73 rt.prototype.uns
46d30 79 6e 63 53 69 67 6e 61 6c 20 3d 20 66 75 6e 63 yncSignal = func
46d40 74 69 6f 6e 20 28 73 69 67 6e 61 6c 29 20 7b 0a tion (signal) {.
46d50 09 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 . for (va
46d60 72 20 69 20 3d 20 74 68 69 73 2e 5f 73 79 6e 63 r i = this._sync
46d70 65 64 53 69 67 6e 61 6c 73 2e 6c 65 6e 67 74 68 edSignals.length
46d80 20 2d 20 31 3b 20 69 20 3e 3d 20 30 3b 20 69 2d - 1; i >= 0; i-
46d90 2d 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 -) {..
46da0 20 20 76 61 72 20 73 79 6e 63 65 64 53 69 67 6e var syncedSign
46db0 61 6c 20 3d 20 74 68 69 73 2e 5f 73 79 6e 63 65 al = this._synce
46dc0 64 53 69 67 6e 61 6c 73 5b 69 5d 3b 0a 09 20 20 dSignals[i];..
46dd0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 79 if (sy
46de0 6e 63 65 64 53 69 67 6e 61 6c 2e 73 69 67 6e 61 ncedSignal.signa
46df0 6c 20 3d 3d 3d 20 73 69 67 6e 61 6c 29 20 7b 0a l === signal) {.
46e00 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
46e10 20 73 79 6e 63 65 64 53 69 67 6e 61 6c 2e 72 61 syncedSignal.ra
46e20 74 69 6f 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 tio.dispose();..
46e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
46e40 73 79 6e 63 65 64 53 69 67 6e 61 6c 2e 73 69 67 syncedSignal.sig
46e50 6e 61 6c 2e 5f 70 61 72 61 6d 2e 76 61 6c 75 65 nal._param.value
46e60 20 3d 20 73 79 6e 63 65 64 53 69 67 6e 61 6c 2e = syncedSignal.
46e70 69 6e 69 74 69 61 6c 3b 0a 09 20 20 20 20 20 20 initial;..
46e80 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
46e90 73 79 6e 63 65 64 53 69 67 6e 61 6c 73 2e 73 70 syncedSignals.sp
46ea0 6c 69 63 65 28 69 2c 20 31 29 3b 0a 09 20 20 20 lice(i, 1);..
46eb0 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
46ec0 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 72 }.. r
46ed0 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 eturn this;..
46ee0 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
46ef0 2a 20 20 43 6c 65 61 6e 20 75 70 2e 20 0a 09 09 * Clean up. ...
46f00 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f * @returns {To
46f10 6e 65 2e 54 72 61 6e 73 70 6f 72 74 7d 20 74 68 ne.Transport} th
46f20 69 73 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 is... * @privat
46f30 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e e... */.. Ton
46f40 65 2e 54 72 61 6e 73 70 6f 72 74 2e 70 72 6f 74 e.Transport.prot
46f50 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 otype.dispose =
46f60 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
46f70 20 20 20 20 20 20 20 54 6f 6e 65 2e 45 6d 69 74 Tone.Emit
46f80 74 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 ter.prototype.di
46f90 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 spose.call(this)
46fa0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
46fb0 5f 63 6c 6f 63 6b 2e 64 69 73 70 6f 73 65 28 29 _clock.dispose()
46fc0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
46fd0 5f 63 6c 6f 63 6b 20 3d 20 6e 75 6c 6c 3b 0a 09 _clock = null;..
46fe0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 77 72 this._wr
46ff0 69 74 61 62 6c 65 28 27 62 70 6d 27 29 3b 0a 09 itable('bpm');..
47000 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 70 6d this.bpm
47010 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
47020 20 20 74 68 69 73 2e 5f 74 69 6d 65 6c 69 6e 65 this._timeline
47030 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
47040 20 20 20 20 20 74 68 69 73 2e 5f 74 69 6d 65 6c this._timel
47050 69 6e 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ine = null;..
47060 20 20 20 20 20 74 68 69 73 2e 5f 6f 6e 63 65 45 this._onceE
47070 76 65 6e 74 73 2e 64 69 73 70 6f 73 65 28 29 3b vents.dispose();
47080 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
47090 6f 6e 63 65 45 76 65 6e 74 73 20 3d 20 6e 75 6c onceEvents = nul
470a0 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
470b0 2e 5f 72 65 70 65 61 74 65 64 45 76 65 6e 74 73 ._repeatedEvents
470c0 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
470d0 20 20 20 20 20 74 68 69 73 2e 5f 72 65 70 65 61 this._repea
470e0 74 65 64 45 76 65 6e 74 73 20 3d 20 6e 75 6c 6c tedEvents = null
470f0 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
47100 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
47110 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f . ///////////
47120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
47130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
47140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
47150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
47160 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2f 09 49 4e 49 ////.. //.INI
47170 54 49 41 4c 49 5a 41 54 49 4f 4e 0a 09 20 20 20 TIALIZATION..
47180 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ///////////////
47190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
471a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
471b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
471c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
471d0 0a 09 20 20 20 20 76 61 72 20 54 72 61 6e 73 70 .. var Transp
471e0 6f 72 74 43 6f 6e 73 74 72 75 63 74 6f 72 20 3d ortConstructor =
471f0 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 3b Tone.Transport;
47200 0a 09 20 20 20 20 54 6f 6e 65 2e 5f 69 6e 69 74 .. Tone._init
47210 41 75 64 69 6f 43 6f 6e 74 65 78 74 28 66 75 6e AudioContext(fun
47220 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
47230 20 20 20 20 69 66 20 28 74 79 70 65 6f 66 20 54 if (typeof T
47240 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 20 3d 3d one.Transport ==
47250 3d 20 27 66 75 6e 63 74 69 6f 6e 27 29 20 7b 0a = 'function') {.
47260 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 61 . //a
47270 20 73 69 6e 67 6c 65 20 74 72 61 6e 73 70 6f 72 single transpor
47280 74 20 6f 62 6a 65 63 74 0a 09 20 20 20 20 20 20 t object..
47290 20 20 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 Tone.Trans
472a0 70 6f 72 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e port = new Tone.
472b0 54 72 61 6e 73 70 6f 72 74 28 29 3b 0a 09 20 20 Transport();..
472c0 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 } else {..
472d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 73 74 //st
472e0 6f 70 20 74 68 65 20 63 6c 6f 63 6b 0a 09 20 20 op the clock..
472f0 20 20 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 54 Tone.T
47300 72 61 6e 73 70 6f 72 74 2e 73 74 6f 70 28 29 3b ransport.stop();
47310 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f .. //
47320 67 65 74 20 74 68 65 20 70 72 65 76 69 6f 75 73 get the previous
47330 20 76 61 6c 75 65 73 0a 09 20 20 20 20 20 20 20 values..
47340 20 20 20 20 20 76 61 72 20 70 72 65 76 53 65 74 var prevSet
47350 74 69 6e 67 73 20 3d 20 54 6f 6e 65 2e 54 72 61 tings = Tone.Tra
47360 6e 73 70 6f 72 74 2e 67 65 74 28 29 3b 0a 09 20 nsport.get();..
47370 20 20 20 20 20 20 20 20 20 20 20 2f 2f 64 65 73 //des
47380 74 6f 72 79 20 74 68 65 20 6f 6c 64 20 74 72 61 tory the old tra
47390 6e 73 70 6f 72 74 0a 09 20 20 20 20 20 20 20 20 nsport..
473a0 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f Tone.Transpo
473b0 72 74 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 rt.dispose();..
473c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6d 61 6b //mak
473d0 65 20 6e 65 77 20 54 72 61 6e 73 70 6f 72 74 20 e new Transport
473e0 69 6e 73 69 64 65 73 0a 09 20 20 20 20 20 20 20 insides..
473f0 20 20 20 20 20 54 72 61 6e 73 70 6f 72 74 43 6f TransportCo
47400 6e 73 74 72 75 63 74 6f 72 2e 63 61 6c 6c 28 54 nstructor.call(T
47410 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 29 3b 0a one.Transport);.
47420 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 73 . //s
47430 65 74 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 et the previous
47440 63 6f 6e 66 69 67 0a 09 20 20 20 20 20 20 20 20 config..
47450 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f Tone.Transpo
47460 72 74 2e 73 65 74 28 70 72 65 76 53 65 74 74 69 rt.set(prevSetti
47470 6e 67 73 29 3b 0a 09 20 20 20 20 20 20 20 20 7d ngs);.. }
47480 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 72 .. });.. r
47490 65 74 75 72 6e 20 54 6f 6e 65 2e 54 72 61 6e 73 eturn Tone.Trans
474a0 70 6f 72 74 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 port;..});..Modu
474b0 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e le(function (Ton
474c0 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 e) {.. ..
474d0 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 /**... * @class
474e0 20 54 6f 6e 65 2e 56 6f 6c 75 6d 65 20 69 73 20 Tone.Volume is
474f0 61 20 73 69 6d 70 6c 65 20 76 6f 6c 75 6d 65 20 a simple volume
47500 6e 6f 64 65 2c 20 75 73 65 66 75 6c 20 66 6f 72 node, useful for
47510 20 63 72 65 61 74 69 6e 67 20 61 20 76 6f 6c 75 creating a volu
47520 6d 65 20 66 61 64 65 72 2e 20 0a 09 09 20 2a 0a me fader. ... *.
47530 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b .. * @extends {
47540 54 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 63 6f 6e Tone}... * @con
47550 73 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 structor... * @
47560 70 61 72 61 6d 20 7b 44 65 63 69 62 65 6c 73 7d param {Decibels}
47570 20 5b 76 6f 6c 75 6d 65 3d 30 5d 20 74 68 65 20 [volume=0] the
47580 69 6e 69 74 69 61 6c 20 76 6f 6c 75 6d 65 0a 09 initial volume..
47590 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 . * @example...
475a0 20 2a 20 76 61 72 20 76 6f 6c 20 3d 20 6e 65 77 * var vol = new
475b0 20 54 6f 6e 65 2e 56 6f 6c 75 6d 65 28 2d 31 32 Tone.Volume(-12
475c0 29 3b 0a 09 09 20 2a 20 69 6e 73 74 72 75 6d 65 );... * instrume
475d0 6e 74 2e 63 68 61 69 6e 28 76 6f 6c 2c 20 54 6f nt.chain(vol, To
475e0 6e 65 2e 4d 61 73 74 65 72 29 3b 0a 09 09 20 2a ne.Master);... *
475f0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 56 6f 6c 75 /.. Tone.Volu
47600 6d 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 me = function ()
47610 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
47620 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f options = this.o
47630 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 ptionsObject(arg
47640 75 6d 65 6e 74 73 2c 20 5b 27 76 6f 6c 75 6d 65 uments, ['volume
47650 27 5d 2c 20 54 6f 6e 65 2e 56 6f 6c 75 6d 65 2e '], Tone.Volume.
47660 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 defaults);..
47670 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 74 68 /**.... * th
47680 65 20 6f 75 74 70 75 74 20 6e 6f 64 65 0a 09 09 e output node...
47690 09 20 2a 20 40 74 79 70 65 20 7b 47 61 69 6e 4e . * @type {GainN
476a0 6f 64 65 7d 0a 09 09 09 20 2a 20 40 70 72 69 76 ode}.... * @priv
476b0 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
476c0 20 20 20 20 74 68 69 73 2e 6f 75 74 70 75 74 20 this.output
476d0 3d 20 74 68 69 73 2e 69 6e 70 75 74 20 3d 20 6e = this.input = n
476e0 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 6f 70 74 ew Tone.Gain(opt
476f0 69 6f 6e 73 2e 76 6f 6c 75 6d 65 2c 20 54 6f 6e ions.volume, Ton
47700 65 2e 54 79 70 65 2e 44 65 63 69 62 65 6c 73 29 e.Type.Decibels)
47710 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
47720 09 09 20 2a 20 54 68 65 20 75 6e 6d 75 74 65 64 .. * The unmuted
47730 20 76 6f 6c 75 6d 65 0a 09 09 09 20 2a 20 40 74 volume.... * @t
47740 79 70 65 20 7b 44 65 63 69 62 65 6c 73 7d 0a 09 ype {Decibels}..
47750 09 09 20 2a 20 40 70 72 69 76 61 74 65 0a 09 09 .. * @private...
47760 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
47770 69 73 2e 5f 75 6e 6d 75 74 65 64 56 6f 6c 75 6d is._unmutedVolum
47780 65 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 20 e = 0;..
47790 2f 2a 2a 0a 09 09 09 20 2a 20 20 69 66 20 74 68 /**.... * if th
477a0 65 20 76 6f 6c 75 6d 65 20 69 73 20 6d 75 74 65 e volume is mute
477b0 64 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b d.... * @type {
477c0 42 6f 6f 6c 65 61 6e 7d 0a 09 09 09 20 2a 20 20 Boolean}.... *
477d0 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
477e0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d . this._m
477f0 75 74 65 64 20 3d 20 66 61 6c 73 65 3b 0a 09 20 uted = false;..
47800 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
47810 20 20 54 68 65 20 76 6f 6c 75 6d 65 20 63 6f 6e The volume con
47820 74 72 6f 6c 20 69 6e 20 64 65 63 69 62 65 6c 73 trol in decibels
47830 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 . .... * @type
47840 7b 44 65 63 69 62 65 6c 73 7d 0a 09 09 09 20 2a {Decibels}.... *
47850 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f @signal.... */
47860 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 .. this.v
47870 6f 6c 75 6d 65 20 3d 20 74 68 69 73 2e 6f 75 74 olume = this.out
47880 70 75 74 2e 67 61 69 6e 3b 0a 09 20 20 20 20 20 put.gain;..
47890 20 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c this._readOnl
478a0 79 28 27 76 6f 6c 75 6d 65 27 29 3b 0a 09 20 20 y('volume');..
478b0 20 20 20 20 20 20 2f 2f 73 65 74 20 74 68 65 20 //set the
478c0 6d 75 74 65 20 69 6e 69 74 69 61 6c 6c 79 0a 09 mute initially..
478d0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d 75 74 this.mut
478e0 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 6d 75 74 65 e = options.mute
478f0 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 ;.. };.. T
47900 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e one.extend(Tone.
47910 56 6f 6c 75 6d 65 29 3b 0a 09 20 20 20 20 2f 2a Volume);.. /*
47920 2a 0a 09 09 20 2a 20 20 44 65 66 61 75 6c 74 73 *... * Defaults
47930 0a 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 4f ... * @type {O
47940 62 6a 65 63 74 7d 0a 09 09 20 2a 20 20 40 63 6f bject}... * @co
47950 6e 73 74 0a 09 09 20 2a 20 20 40 73 74 61 74 69 nst... * @stati
47960 63 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e c... */.. Ton
47970 65 2e 56 6f 6c 75 6d 65 2e 64 65 66 61 75 6c 74 e.Volume.default
47980 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 27 s = {.. '
47990 76 6f 6c 75 6d 65 27 3a 20 30 2c 0a 09 20 20 20 volume': 0,..
479a0 20 20 20 20 20 27 6d 75 74 65 27 3a 20 66 61 6c 'mute': fal
479b0 73 65 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 se.. };..
479c0 2f 2a 2a 0a 09 09 20 2a 20 4d 75 74 65 20 74 68 /**... * Mute th
479d0 65 20 6f 75 74 70 75 74 2e 20 0a 09 09 20 2a 20 e output. ... *
479e0 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 56 @memberOf Tone.V
479f0 6f 6c 75 6d 65 23 0a 09 09 20 2a 20 40 74 79 70 olume#... * @typ
47a00 65 20 7b 62 6f 6f 6c 65 61 6e 7d 0a 09 09 20 2a e {boolean}... *
47a10 20 40 6e 61 6d 65 20 6d 75 74 65 0a 09 09 20 2a @name mute... *
47a20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f @example... * /
47a30 2f 6d 75 74 65 20 74 68 65 20 6f 75 74 70 75 74 /mute the output
47a40 0a 09 09 20 2a 20 76 6f 6c 75 6d 65 2e 6d 75 74 ... * volume.mut
47a50 65 20 3d 20 74 72 75 65 3b 0a 09 09 20 2a 2f 0a e = true;... */.
47a60 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 . Object.defi
47a70 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e neProperty(Tone.
47a80 56 6f 6c 75 6d 65 2e 70 72 6f 74 6f 74 79 70 65 Volume.prototype
47a90 2c 20 27 6d 75 74 65 27 2c 20 7b 0a 09 20 20 20 , 'mute', {..
47aa0 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
47ab0 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
47ac0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
47ad0 2e 5f 6d 75 74 65 64 3b 0a 09 20 20 20 20 20 20 ._muted;..
47ae0 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
47af0 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6d 75 74 t: function (mut
47b00 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
47b10 20 20 69 66 20 28 21 74 68 69 73 2e 5f 6d 75 74 if (!this._mut
47b20 65 64 20 26 26 20 6d 75 74 65 29 20 7b 0a 09 20 ed && mute) {..
47b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
47b40 68 69 73 2e 5f 75 6e 6d 75 74 65 64 56 6f 6c 75 his._unmutedVolu
47b50 6d 65 20 3d 20 74 68 69 73 2e 76 6f 6c 75 6d 65 me = this.volume
47b60 2e 76 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 20 .value;..
47b70 20 20 20 20 20 20 20 20 20 2f 2f 6d 61 79 62 65 //maybe
47b80 20 69 74 20 73 68 6f 75 6c 64 20 72 61 6d 70 20 it should ramp
47b90 68 65 72 65 3f 0a 09 20 20 20 20 20 20 20 20 20 here?..
47ba0 20 20 20 20 20 20 20 74 68 69 73 2e 76 6f 6c 75 this.volu
47bb0 6d 65 2e 76 61 6c 75 65 20 3d 20 2d 49 6e 66 69 me.value = -Infi
47bc0 6e 69 74 79 3b 0a 09 20 20 20 20 20 20 20 20 20 nity;..
47bd0 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 68 } else if (th
47be0 69 73 2e 5f 6d 75 74 65 64 20 26 26 20 21 6d 75 is._muted && !mu
47bf0 74 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 te) {..
47c00 20 20 20 20 20 20 20 74 68 69 73 2e 76 6f 6c 75 this.volu
47c10 6d 65 2e 76 61 6c 75 65 20 3d 20 74 68 69 73 2e me.value = this.
47c20 5f 75 6e 6d 75 74 65 64 56 6f 6c 75 6d 65 3b 0a _unmutedVolume;.
47c30 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
47c40 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
47c50 2e 5f 6d 75 74 65 64 20 3d 20 6d 75 74 65 3b 0a ._muted = mute;.
47c60 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
47c70 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 });.. /**...
47c80 2a 20 20 63 6c 65 61 6e 20 75 70 0a 09 09 20 2a * clean up... *
47c90 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
47ca0 2e 56 6f 6c 75 6d 65 7d 20 74 68 69 73 0a 09 09 .Volume} this...
47cb0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 56 6f */.. Tone.Vo
47cc0 6c 75 6d 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 lume.prototype.d
47cd0 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f ispose = functio
47ce0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
47cf0 74 68 69 73 2e 69 6e 70 75 74 2e 64 69 73 70 6f this.input.dispo
47d00 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 54 se();.. T
47d10 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 one.prototype.di
47d20 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 spose.call(this)
47d30 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
47d40 5f 77 72 69 74 61 62 6c 65 28 27 76 6f 6c 75 6d _writable('volum
47d50 65 27 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e');.. th
47d60 69 73 2e 76 6f 6c 75 6d 65 2e 64 69 73 70 6f 73 is.volume.dispos
47d70 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
47d80 69 73 2e 76 6f 6c 75 6d 65 20 3d 20 6e 75 6c 6c is.volume = null
47d90 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
47da0 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
47db0 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 . return Tone
47dc0 2e 56 6f 6c 75 6d 65 3b 0a 09 7d 29 3b 0a 09 4d .Volume;..});..M
47dd0 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 odule(function (
47de0 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 Tone) {.. ..
47df0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c /**... * @cl
47e00 61 73 73 20 20 41 20 73 69 6e 67 6c 65 20 6d 61 ass A single ma
47e10 73 74 65 72 20 6f 75 74 70 75 74 20 77 68 69 63 ster output whic
47e20 68 20 69 73 20 63 6f 6e 6e 65 63 74 65 64 20 74 h is connected t
47e30 6f 20 74 68 65 0a 09 09 20 2a 20 20 20 20 20 20 o the... *
47e40 20 20 20 20 41 75 64 69 6f 44 65 73 74 69 6e 61 AudioDestina
47e50 74 69 6f 6e 4e 6f 64 65 20 28 61 6b 61 20 79 6f tionNode (aka yo
47e60 75 72 20 73 70 65 61 6b 65 72 73 29 2e 20 0a 09 ur speakers). ..
47e70 09 20 2a 20 20 20 20 20 20 20 20 20 20 49 74 20 . * It
47e80 70 72 6f 76 69 64 65 73 20 75 73 65 66 75 6c 20 provides useful
47e90 63 6f 6e 76 65 6e 69 65 6e 63 65 73 20 73 75 63 conveniences suc
47ea0 68 20 61 73 20 74 68 65 20 61 62 69 6c 69 74 79 h as the ability
47eb0 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 ... *
47ec0 74 6f 20 73 65 74 20 74 68 65 20 76 6f 6c 75 6d to set the volum
47ed0 65 20 61 6e 64 20 6d 75 74 65 20 74 68 65 20 65 e and mute the e
47ee0 6e 74 69 72 65 20 61 70 70 6c 69 63 61 74 69 6f ntire applicatio
47ef0 6e 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 n. ... *
47f00 20 20 49 74 20 61 6c 73 6f 20 67 69 76 65 73 20 It also gives
47f10 79 6f 75 20 74 68 65 20 61 62 69 6c 69 74 79 20 you the ability
47f20 74 6f 20 61 70 70 6c 79 20 6d 61 73 74 65 72 20 to apply master
47f30 65 66 66 65 63 74 73 20 74 6f 20 79 6f 75 72 20 effects to your
47f40 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20 0a 09 09 application. ...
47f50 20 2a 20 20 20 20 20 20 20 20 20 20 3c 62 72 3e * <br>
47f60 3c 62 72 3e 0a 09 09 20 2a 20 20 20 20 20 20 20 <br>... *
47f70 20 20 20 4c 69 6b 65 20 54 6f 6e 65 2e 54 72 61 Like Tone.Tra
47f80 6e 73 70 6f 72 74 2c 20 41 20 73 69 6e 67 6c 65 nsport, A single
47f90 20 54 6f 6e 65 2e 4d 61 73 74 65 72 20 69 73 20 Tone.Master is
47fa0 63 72 65 61 74 65 64 0a 09 09 20 2a 20 20 20 20 created... *
47fb0 20 20 20 20 20 20 6f 6e 20 69 6e 69 74 69 61 6c on initial
47fc0 69 7a 61 74 69 6f 6e 20 61 6e 64 20 79 6f 75 20 ization and you
47fd0 64 6f 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20 65 do not need to e
47fe0 78 70 6c 69 63 69 74 6c 79 20 63 6f 6e 73 74 72 xplicitly constr
47ff0 75 63 74 20 6f 6e 65 2e 0a 09 09 20 2a 0a 09 09 uct one.... *...
48000 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 * @constructor
48010 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 ... * @extends
48020 7b 54 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 73 69 {Tone}... * @si
48030 6e 67 6c 65 74 6f 6e 0a 09 09 20 2a 20 20 40 65 ngleton... * @e
48040 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f 74 68 xample... * //th
48050 65 20 61 75 64 69 6f 20 77 69 6c 6c 20 67 6f 20 e audio will go
48060 66 72 6f 6d 20 74 68 65 20 6f 73 63 69 6c 6c 61 from the oscilla
48070 74 6f 72 20 74 6f 20 74 68 65 20 73 70 65 61 6b tor to the speak
48080 65 72 73 0a 09 09 20 2a 20 6f 73 63 69 6c 6c 61 ers... * oscilla
48090 74 6f 72 2e 63 6f 6e 6e 65 63 74 28 54 6f 6e 65 tor.connect(Tone
480a0 2e 4d 61 73 74 65 72 29 3b 0a 09 09 20 2a 20 2f .Master);... * /
480b0 2f 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 66 /a convenience f
480c0 6f 72 20 63 6f 6e 6e 65 63 74 69 6e 67 20 74 6f or connecting to
480d0 20 74 68 65 20 6d 61 73 74 65 72 20 6f 75 74 70 the master outp
480e0 75 74 20 69 73 20 61 6c 73 6f 20 70 72 6f 76 69 ut is also provi
480f0 64 65 64 3a 0a 09 09 20 2a 20 6f 73 63 69 6c 6c ded:... * oscill
48100 61 74 6f 72 2e 74 6f 4d 61 73 74 65 72 28 29 3b ator.toMaster();
48110 0a 09 09 20 2a 20 2f 2f 74 68 65 20 61 62 6f 76 ... * //the abov
48120 65 20 74 77 6f 20 65 78 61 6d 70 6c 65 73 20 61 e two examples a
48130 72 65 20 65 71 75 69 76 61 6c 65 6e 74 2e 0a 09 re equivalent...
48140 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d . */.. Tone.M
48150 61 73 74 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e aster = function
48160 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 () {.. t
48170 68 69 73 2e 63 72 65 61 74 65 49 6e 73 4f 75 74 his.createInsOut
48180 73 28 31 2c 20 31 29 3b 0a 09 20 20 20 20 20 20 s(1, 1);..
48190 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
481a0 20 70 72 69 76 61 74 65 20 76 6f 6c 75 6d 65 20 private volume
481b0 6e 6f 64 65 0a 09 09 09 20 2a 20 20 40 74 79 70 node.... * @typ
481c0 65 20 20 7b 54 6f 6e 65 2e 56 6f 6c 75 6d 65 7d e {Tone.Volume}
481d0 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
481e0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
481f0 20 74 68 69 73 2e 5f 76 6f 6c 75 6d 65 20 3d 20 this._volume =
48200 74 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 6e 65 this.output = ne
48210 77 20 54 6f 6e 65 2e 56 6f 6c 75 6d 65 28 29 3b w Tone.Volume();
48220 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
48230 09 20 2a 20 54 68 65 20 76 6f 6c 75 6d 65 20 6f . * The volume o
48240 66 20 74 68 65 20 6d 61 73 74 65 72 20 6f 75 74 f the master out
48250 70 75 74 2e 0a 09 09 09 20 2a 20 40 74 79 70 65 put..... * @type
48260 20 7b 44 65 63 69 62 65 6c 73 7d 0a 09 09 09 20 {Decibels}....
48270 2a 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f * @signal.... */
48280 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 .. this.v
48290 6f 6c 75 6d 65 20 3d 20 74 68 69 73 2e 5f 76 6f olume = this._vo
482a0 6c 75 6d 65 2e 76 6f 6c 75 6d 65 3b 0a 09 20 20 lume.volume;..
482b0 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 64 this._read
482c0 4f 6e 6c 79 28 27 76 6f 6c 75 6d 65 27 29 3b 0a Only('volume');.
482d0 09 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 . //conne
482e0 63 74 69 6f 6e 73 0a 09 20 20 20 20 20 20 20 20 ctions..
482f0 74 68 69 73 2e 69 6e 70 75 74 2e 63 68 61 69 6e this.input.chain
48300 28 74 68 69 73 2e 6f 75 74 70 75 74 2c 20 74 68 (this.output, th
48310 69 73 2e 63 6f 6e 74 65 78 74 2e 64 65 73 74 69 is.context.desti
48320 6e 61 74 69 6f 6e 29 3b 0a 09 20 20 20 20 7d 3b nation);.. };
48330 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e .. Tone.exten
48340 64 28 54 6f 6e 65 2e 4d 61 73 74 65 72 29 3b 0a d(Tone.Master);.
48350 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 . /**... * @
48360 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 type {Object}...
48370 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a 2f * @const... */
48380 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 61 73 74 65 .. Tone.Maste
48390 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 r.defaults = {..
483a0 20 20 20 20 20 20 20 20 27 76 6f 6c 75 6d 65 27 'volume'
483b0 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 6d : 0,.. 'm
483c0 75 74 65 27 3a 20 66 61 6c 73 65 0a 09 20 20 20 ute': false..
483d0 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
483e0 2a 20 4d 75 74 65 20 74 68 65 20 6f 75 74 70 75 * Mute the outpu
483f0 74 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 t. ... * @member
48400 4f 66 20 54 6f 6e 65 2e 4d 61 73 74 65 72 23 0a Of Tone.Master#.
48410 09 09 20 2a 20 40 74 79 70 65 20 7b 62 6f 6f 6c .. * @type {bool
48420 65 61 6e 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 ean}... * @name
48430 6d 75 74 65 0a 09 09 20 2a 20 40 65 78 61 6d 70 mute... * @examp
48440 6c 65 0a 09 09 20 2a 20 2f 2f 6d 75 74 65 20 74 le... * //mute t
48450 68 65 20 6f 75 74 70 75 74 0a 09 09 20 2a 20 54 he output... * T
48460 6f 6e 65 2e 4d 61 73 74 65 72 2e 6d 75 74 65 20 one.Master.mute
48470 3d 20 74 72 75 65 3b 0a 09 09 20 2a 2f 0a 09 20 = true;... */..
48480 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
48490 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 4d 61 Property(Tone.Ma
484a0 73 74 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 ster.prototype,
484b0 27 6d 75 74 65 27 2c 20 7b 0a 09 20 20 20 20 20 'mute', {..
484c0 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e get: function
484d0 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 () {..
484e0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
484f0 76 6f 6c 75 6d 65 2e 6d 75 74 65 3b 0a 09 20 20 volume.mute;..
48500 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 },..
48510 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 set: function
48520 28 6d 75 74 65 29 20 7b 0a 09 20 20 20 20 20 20 (mute) {..
48530 20 20 20 20 20 20 74 68 69 73 2e 5f 76 6f 6c 75 this._volu
48540 6d 65 2e 6d 75 74 65 20 3d 20 6d 75 74 65 3b 0a me.mute = mute;.
48550 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
48560 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 });.. /**...
48570 2a 20 20 41 64 64 20 61 20 6d 61 73 74 65 72 20 * Add a master
48580 65 66 66 65 63 74 73 20 63 68 61 69 6e 2e 20 4e effects chain. N
48590 4f 54 45 3a 20 74 68 69 73 20 77 69 6c 6c 20 64 OTE: this will d
485a0 69 73 63 6f 6e 6e 65 63 74 20 61 6e 79 20 6e 6f isconnect any no
485b0 64 65 73 20 77 68 69 63 68 20 77 65 72 65 20 70 des which were p
485c0 72 65 76 69 6f 75 73 6c 79 20 0a 09 09 20 2a 20 reviously ... *
485d0 20 63 68 61 69 6e 65 64 20 69 6e 20 74 68 65 20 chained in the
485e0 6d 61 73 74 65 72 20 65 66 66 65 63 74 73 20 63 master effects c
485f0 68 61 69 6e 2e 20 0a 09 09 20 2a 20 20 40 70 61 hain. ... * @pa
48600 72 61 6d 20 7b 41 75 64 69 6f 4e 6f 64 65 7c 54 ram {AudioNode|T
48610 6f 6e 65 2e 2e 2e 7d 20 61 72 67 73 20 41 6c 6c one...} args All
48620 20 61 72 67 75 6d 65 6e 74 73 20 77 69 6c 6c 20 arguments will
48630 62 65 20 63 6f 6e 6e 65 63 74 65 64 20 69 6e 20 be connected in
48640 61 20 72 6f 77 0a 09 09 20 2a 20 20 20 20 20 20 a row... *
48650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
48660 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 and
48670 74 68 65 20 4d 61 73 74 65 72 20 77 69 6c 6c 20 the Master will
48680 62 65 20 72 6f 75 74 65 64 20 74 68 72 6f 75 67 be routed throug
48690 68 20 69 74 2e 0a 09 09 20 2a 20 20 40 72 65 74 h it.... * @ret
486a0 75 72 6e 20 20 7b 54 6f 6e 65 2e 4d 61 73 74 65 urn {Tone.Maste
486b0 72 7d 20 20 74 68 69 73 0a 09 09 20 2a 20 20 40 r} this... * @
486c0 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f 73 example... * //s
486d0 6f 6d 65 20 6f 76 65 72 61 6c 6c 20 63 6f 6d 70 ome overall comp
486e0 72 65 73 73 69 6f 6e 20 74 6f 20 6b 65 65 70 20 ression to keep
486f0 74 68 65 20 6c 65 76 65 6c 73 20 69 6e 20 63 68 the levels in ch
48700 65 63 6b 0a 09 09 20 2a 20 76 61 72 20 6d 61 73 eck... * var mas
48710 74 65 72 43 6f 6d 70 72 65 73 73 6f 72 20 3d 20 terCompressor =
48720 6e 65 77 20 54 6f 6e 65 2e 43 6f 6d 70 72 65 73 new Tone.Compres
48730 73 6f 72 28 7b 0a 09 09 20 2a 20 09 22 74 68 72 sor({... * ."thr
48740 65 73 68 6f 6c 64 22 20 3a 20 2d 36 2c 0a 09 09 eshold" : -6,...
48750 20 2a 20 09 22 72 61 74 69 6f 22 20 3a 20 33 2c * ."ratio" : 3,
48760 0a 09 09 20 2a 20 09 22 61 74 74 61 63 6b 22 20 ... * ."attack"
48770 3a 20 30 2e 35 2c 0a 09 09 20 2a 20 09 22 72 65 : 0.5,... * ."re
48780 6c 65 61 73 65 22 20 3a 20 30 2e 31 0a 09 09 20 lease" : 0.1...
48790 2a 20 7d 29 3b 0a 09 09 20 2a 20 2f 2f 67 69 76 * });... * //giv
487a0 65 20 61 20 6c 69 74 74 6c 65 20 62 6f 6f 73 74 e a little boost
487b0 20 74 6f 20 74 68 65 20 6c 6f 77 73 0a 09 09 20 to the lows...
487c0 2a 20 76 61 72 20 6c 6f 77 42 75 6d 70 20 3d 20 * var lowBump =
487d0 6e 65 77 20 54 6f 6e 65 2e 46 69 6c 74 65 72 28 new Tone.Filter(
487e0 32 30 30 2c 20 22 6c 6f 77 73 68 65 6c 66 22 29 200, "lowshelf")
487f0 3b 0a 09 09 20 2a 20 2f 2f 72 6f 75 74 65 20 65 ;... * //route e
48800 76 65 72 79 74 68 69 6e 67 20 74 68 72 6f 75 67 verything throug
48810 68 20 74 68 65 20 66 69 6c 74 65 72 20 0a 09 09 h the filter ...
48820 20 2a 20 2f 2f 61 6e 64 20 63 6f 6d 70 72 65 73 * //and compres
48830 73 6f 72 20 62 65 66 6f 72 65 20 67 6f 69 6e 67 sor before going
48840 20 74 6f 20 74 68 65 20 73 70 65 61 6b 65 72 73 to the speakers
48850 0a 09 09 20 2a 20 54 6f 6e 65 2e 4d 61 73 74 65 ... * Tone.Maste
48860 72 2e 63 68 61 69 6e 28 6c 6f 77 42 75 6d 70 2c r.chain(lowBump,
48870 20 6d 61 73 74 65 72 43 6f 6d 70 72 65 73 73 6f masterCompresso
48880 72 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 r);... */.. T
48890 6f 6e 65 2e 4d 61 73 74 65 72 2e 70 72 6f 74 6f one.Master.proto
488a0 74 79 70 65 2e 63 68 61 69 6e 20 3d 20 66 75 6e type.chain = fun
488b0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
488c0 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74 2e 64 this.input.d
488d0 69 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 20 20 isconnect();..
488e0 20 20 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74 this.input
488f0 2e 63 68 61 69 6e 2e 61 70 70 6c 79 28 74 68 69 .chain.apply(thi
48900 73 2e 69 6e 70 75 74 2c 20 61 72 67 75 6d 65 6e s.input, argumen
48910 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 61 72 ts);.. ar
48920 67 75 6d 65 6e 74 73 5b 61 72 67 75 6d 65 6e 74 guments[argument
48930 73 2e 6c 65 6e 67 74 68 20 2d 20 31 5d 2e 63 6f s.length - 1].co
48940 6e 6e 65 63 74 28 74 68 69 73 2e 6f 75 74 70 75 nnect(this.outpu
48950 74 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 t);.. };..
48960 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e /**... * Clean
48970 20 75 70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 up... * @retur
48980 6e 20 20 7b 54 6f 6e 65 2e 4d 61 73 74 65 72 7d n {Tone.Master}
48990 20 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 this... */..
489a0 20 20 54 6f 6e 65 2e 4d 61 73 74 65 72 2e 70 72 Tone.Master.pr
489b0 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 ototype.dispose
489c0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
489d0 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 . Tone.pr
489e0 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e ototype.dispose.
489f0 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 call(this);..
48a00 20 20 20 20 20 74 68 69 73 2e 5f 77 72 69 74 61 this._writa
48a10 62 6c 65 28 27 76 6f 6c 75 6d 65 27 29 3b 0a 09 ble('volume');..
48a20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 76 6f this._vo
48a30 6c 75 6d 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a lume.dispose();.
48a40 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 76 . this._v
48a50 6f 6c 75 6d 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 olume = null;..
48a60 20 20 20 20 20 20 20 74 68 69 73 2e 76 6f 6c 75 this.volu
48a70 6d 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 me = null;..
48a80 7d 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f };.. ////////
48a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
48aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
48ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
48ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
48ad0 2f 2f 2f 0a 09 20 20 20 20 2f 2f 09 41 55 47 4d ///.. //.AUGM
48ae0 45 4e 54 20 54 4f 4e 45 27 73 20 50 52 4f 54 4f ENT TONE's PROTO
48af0 54 59 50 45 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f TYPE.. //////
48b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
48b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
48b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
48b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
48b40 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 /////.. /**..
48b50 09 20 2a 20 20 43 6f 6e 6e 65 63 74 20 27 74 68 . * Connect 'th
48b60 69 73 27 20 74 6f 20 74 68 65 20 6d 61 73 74 65 is' to the maste
48b70 72 20 6f 75 74 70 75 74 2e 20 53 68 6f 72 74 68 r output. Shorth
48b80 61 6e 64 20 66 6f 72 20 74 68 69 73 2e 63 6f 6e and for this.con
48b90 6e 65 63 74 28 54 6f 6e 65 2e 4d 61 73 74 65 72 nect(Tone.Master
48ba0 29 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 )... * @returns
48bb0 20 7b 54 6f 6e 65 7d 20 74 68 69 73 0a 09 09 20 {Tone} this...
48bc0 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
48bd0 20 2f 2f 63 6f 6e 6e 65 63 74 20 61 6e 20 6f 73 //connect an os
48be0 63 69 6c 6c 61 74 6f 72 20 74 6f 20 74 68 65 20 cillator to the
48bf0 6d 61 73 74 65 72 20 6f 75 74 70 75 74 0a 09 09 master output...
48c00 20 2a 20 76 61 72 20 6f 73 63 20 3d 20 6e 65 77 * var osc = new
48c10 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 Tone.Oscillator
48c20 28 29 2e 74 6f 4d 61 73 74 65 72 28 29 3b 0a 09 ().toMaster();..
48c30 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 70 . */.. Tone.p
48c40 72 6f 74 6f 74 79 70 65 2e 74 6f 4d 61 73 74 65 rototype.toMaste
48c50 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 r = function ()
48c60 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e {.. this.
48c70 63 6f 6e 6e 65 63 74 28 54 6f 6e 65 2e 4d 61 73 connect(Tone.Mas
48c80 74 65 72 29 3b 0a 09 20 20 20 20 20 20 20 20 72 ter);.. r
48c90 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 eturn this;..
48ca0 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
48cb0 2a 20 20 41 6c 73 6f 20 61 75 67 6d 65 6e 74 20 * Also augment
48cc0 41 75 64 69 6f 4e 6f 64 65 27 73 20 70 72 6f 74 AudioNode's prot
48cd0 6f 74 79 70 65 20 74 6f 20 69 6e 63 6c 75 64 65 otype to include
48ce0 20 74 6f 4d 61 73 74 65 72 0a 09 09 20 2a 20 20 toMaster... *
48cf0 61 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 as a convenience
48d00 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
48d10 7b 41 75 64 69 6f 4e 6f 64 65 7d 20 74 68 69 73 {AudioNode} this
48d20 0a 09 09 20 2a 2f 0a 09 20 20 20 20 41 75 64 69 ... */.. Audi
48d30 6f 4e 6f 64 65 2e 70 72 6f 74 6f 74 79 70 65 2e oNode.prototype.
48d40 74 6f 4d 61 73 74 65 72 20 3d 20 66 75 6e 63 74 toMaster = funct
48d50 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
48d60 20 20 74 68 69 73 2e 63 6f 6e 6e 65 63 74 28 54 this.connect(T
48d70 6f 6e 65 2e 4d 61 73 74 65 72 29 3b 0a 09 20 20 one.Master);..
48d80 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
48d90 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
48da0 76 61 72 20 4d 61 73 74 65 72 43 6f 6e 73 74 72 var MasterConstr
48db0 75 63 74 6f 72 20 3d 20 54 6f 6e 65 2e 4d 61 73 uctor = Tone.Mas
48dc0 74 65 72 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 ter;.. /**...
48dd0 20 2a 20 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 * initialize t
48de0 68 65 20 6d 6f 64 75 6c 65 20 61 6e 64 20 6c 69 he module and li
48df0 73 74 65 6e 20 66 6f 72 20 6e 65 77 20 61 75 64 sten for new aud
48e00 69 6f 20 63 6f 6e 74 65 78 74 73 0a 09 09 20 2a io contexts... *
48e10 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 5f 69 6e 69 /.. Tone._ini
48e20 74 41 75 64 69 6f 43 6f 6e 74 65 78 74 28 66 75 tAudioContext(fu
48e30 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
48e40 20 20 20 20 20 2f 2f 61 20 73 69 6e 67 6c 65 20 //a single
48e50 6d 61 73 74 65 72 20 6f 75 74 70 75 74 0a 09 20 master output..
48e60 20 20 20 20 20 20 20 69 66 20 28 21 54 6f 6e 65 if (!Tone
48e70 2e 70 72 6f 74 6f 74 79 70 65 2e 69 73 55 6e 64 .prototype.isUnd
48e80 65 66 28 54 6f 6e 65 2e 4d 61 73 74 65 72 29 29 ef(Tone.Master))
48e90 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
48ea0 54 6f 6e 65 2e 4d 61 73 74 65 72 20 3d 20 6e 65 Tone.Master = ne
48eb0 77 20 4d 61 73 74 65 72 43 6f 6e 73 74 72 75 63 w MasterConstruc
48ec0 74 6f 72 28 29 3b 0a 09 20 20 20 20 20 20 20 20 tor();..
48ed0 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 } else {..
48ee0 20 20 20 20 20 20 4d 61 73 74 65 72 43 6f 6e 73 MasterCons
48ef0 74 72 75 63 74 6f 72 2e 70 72 6f 74 6f 74 79 70 tructor.prototyp
48f00 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 54 e.dispose.call(T
48f10 6f 6e 65 2e 4d 61 73 74 65 72 29 3b 0a 09 20 20 one.Master);..
48f20 20 20 20 20 20 20 20 20 20 20 4d 61 73 74 65 72 Master
48f30 43 6f 6e 73 74 72 75 63 74 6f 72 2e 63 61 6c 6c Constructor.call
48f40 28 54 6f 6e 65 2e 4d 61 73 74 65 72 29 3b 0a 09 (Tone.Master);..
48f50 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
48f60 29 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 );.. return T
48f70 6f 6e 65 2e 4d 61 73 74 65 72 3b 0a 09 7d 29 3b one.Master;..});
48f80 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f ..Module(functio
48f90 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 n (Tone) {..
48fa0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
48fb0 40 63 6c 61 73 73 20 20 42 61 73 65 20 63 6c 61 @class Base cla
48fc0 73 73 20 66 6f 72 20 73 6f 75 72 63 65 73 2e 20 ss for sources.
48fd0 53 6f 75 72 63 65 73 20 68 61 76 65 20 73 74 61 Sources have sta
48fe0 72 74 2f 73 74 6f 70 20 6d 65 74 68 6f 64 73 0a rt/stop methods.
48ff0 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 61 6e .. * an
49000 64 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f d the ability to
49010 20 62 65 20 73 79 6e 63 65 64 20 74 6f 20 74 68 be synced to th
49020 65 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 e ... *
49030 20 73 74 61 72 74 2f 73 74 6f 70 20 6f 66 20 54 start/stop of T
49040 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 20 0a one.Transport. .
49050 09 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 .. *... * @cons
49060 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 tructor... * @e
49070 78 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 xtends {Tone}...
49080 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 * @example...
49090 2a 20 2f 2f 4d 75 6c 74 69 70 6c 65 20 73 74 61 * //Multiple sta
490a0 74 65 20 63 68 61 6e 67 65 20 65 76 65 6e 74 73 te change events
490b0 20 63 61 6e 20 62 65 20 63 68 61 69 6e 65 64 20 can be chained
490c0 74 6f 67 65 74 68 65 72 2c 0a 09 09 20 2a 20 2f together,... * /
490d0 2f 62 75 74 20 6d 75 73 74 20 62 65 20 73 65 74 /but must be set
490e0 20 69 6e 20 74 68 65 20 63 6f 72 72 65 63 74 20 in the correct
490f0 6f 72 64 65 72 20 61 6e 64 20 77 69 74 68 20 61 order and with a
49100 73 63 65 6e 64 69 6e 67 20 74 69 6d 65 73 0a 09 scending times..
49110 09 20 2a 20 0a 09 09 20 2a 20 2f 2f 20 4f 4b 0a . * ... * // OK.
49120 09 09 20 2a 20 73 74 61 74 65 2e 73 74 61 72 74 .. * state.start
49130 28 29 2e 73 74 6f 70 28 22 2b 30 2e 32 22 29 3b ().stop("+0.2");
49140 0a 09 09 20 2a 20 2f 2f 20 41 4e 44 0a 09 09 20 ... * // AND...
49150 2a 20 73 74 61 74 65 2e 73 74 61 72 74 28 29 2e * state.start().
49160 73 74 6f 70 28 22 2b 30 2e 32 22 29 2e 73 74 61 stop("+0.2").sta
49170 72 74 28 22 2b 30 2e 34 22 29 2e 73 74 6f 70 28 rt("+0.4").stop(
49180 22 2b 30 2e 37 22 29 0a 09 09 20 2a 0a 09 09 20 "+0.7")... *...
49190 2a 20 2f 2f 20 42 41 44 0a 09 09 20 2a 20 73 74 * // BAD... * st
491a0 61 74 65 2e 73 74 6f 70 28 22 2b 30 2e 32 22 29 ate.stop("+0.2")
491b0 2e 73 74 61 72 74 28 29 3b 0a 09 09 20 2a 20 2f .start();... * /
491c0 2f 20 4f 52 0a 09 09 20 2a 20 73 74 61 74 65 2e / OR... * state.
491d0 73 74 61 72 74 28 22 2b 30 2e 33 22 29 2e 73 74 start("+0.3").st
491e0 6f 70 28 22 2b 30 2e 32 22 29 3b 0a 09 09 20 2a op("+0.2");... *
491f0 20 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e ... */.. Ton
49200 65 2e 53 6f 75 72 63 65 20 3d 20 66 75 6e 63 74 e.Source = funct
49210 69 6f 6e 20 28 6f 70 74 69 6f 6e 73 29 20 7b 0a ion (options) {.
49220 09 20 20 20 20 20 20 20 20 2f 2f 20 74 68 69 73 . // this
49230 2e 63 72 65 61 74 65 49 6e 73 4f 75 74 73 28 30 .createInsOuts(0
49240 2c 20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 6f , 1);.. o
49250 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 64 65 ptions = this.de
49260 66 61 75 6c 74 41 72 67 28 6f 70 74 69 6f 6e 73 faultArg(options
49270 2c 20 54 6f 6e 65 2e 53 6f 75 72 63 65 2e 64 65 , Tone.Source.de
49280 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 faults);..
49290 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
492a0 20 6f 75 74 70 75 74 20 76 6f 6c 75 6d 65 20 6e output volume n
492b0 6f 64 65 0a 09 09 09 20 2a 20 20 40 74 79 70 65 ode.... * @type
492c0 20 20 7b 54 6f 6e 65 2e 56 6f 6c 75 6d 65 7d 0a {Tone.Volume}.
492d0 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
492e0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
492f0 74 68 69 73 2e 5f 76 6f 6c 75 6d 65 20 3d 20 74 this._volume = t
49300 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 6e 65 77 his.output = new
49310 20 54 6f 6e 65 2e 56 6f 6c 75 6d 65 28 6f 70 74 Tone.Volume(opt
49320 69 6f 6e 73 2e 76 6f 6c 75 6d 65 29 3b 0a 09 20 ions.volume);..
49330 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
49340 20 54 68 65 20 76 6f 6c 75 6d 65 20 6f 66 20 74 The volume of t
49350 68 65 20 6f 75 74 70 75 74 20 69 6e 20 64 65 63 he output in dec
49360 69 62 65 6c 73 2e 0a 09 09 09 20 2a 20 40 74 79 ibels..... * @ty
49370 70 65 20 7b 44 65 63 69 62 65 6c 73 7d 0a 09 09 pe {Decibels}...
49380 09 20 2a 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 . * @signal....
49390 2a 20 40 65 78 61 6d 70 6c 65 0a 09 09 09 20 2a * @example.... *
493a0 20 73 6f 75 72 63 65 2e 76 6f 6c 75 6d 65 2e 76 source.volume.v
493b0 61 6c 75 65 20 3d 20 2d 36 3b 0a 09 09 09 20 2a alue = -6;.... *
493c0 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
493d0 76 6f 6c 75 6d 65 20 3d 20 74 68 69 73 2e 5f 76 volume = this._v
493e0 6f 6c 75 6d 65 2e 76 6f 6c 75 6d 65 3b 0a 09 20 olume.volume;..
493f0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 this._rea
49400 64 4f 6e 6c 79 28 27 76 6f 6c 75 6d 65 27 29 3b dOnly('volume');
49410 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
49420 09 20 2a 20 09 4b 65 65 70 20 74 72 61 63 6b 20 . * .Keep track
49430 6f 66 20 74 68 65 20 73 63 68 65 64 75 6c 65 64 of the scheduled
49440 20 73 74 61 74 65 2e 0a 09 09 09 20 2a 20 20 40 state..... * @
49450 74 79 70 65 20 7b 54 6f 6e 65 2e 54 69 6d 65 6c type {Tone.Timel
49460 69 6e 65 53 74 61 74 65 7d 0a 09 09 09 20 2a 20 ineState}.... *
49470 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
49480 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
49490 73 74 61 74 65 20 3d 20 6e 65 77 20 54 6f 6e 65 state = new Tone
494a0 2e 54 69 6d 65 6c 69 6e 65 53 74 61 74 65 28 54 .TimelineState(T
494b0 6f 6e 65 2e 53 74 61 74 65 2e 53 74 6f 70 70 65 one.State.Stoppe
494c0 64 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 d);.. thi
494d0 73 2e 5f 73 74 61 74 65 2e 6d 65 6d 6f 72 79 20 s._state.memory
494e0 3d 20 31 30 3b 0a 09 20 20 20 20 20 20 20 20 2f = 10;.. /
494f0 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 73 79 **.... * The sy
49500 6e 63 65 64 20 60 73 74 61 72 74 60 20 63 61 6c nced `start` cal
49510 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 66 lback function f
49520 72 6f 6d 20 74 68 65 20 74 72 61 6e 73 70 6f 72 rom the transpor
49530 74 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b t.... * @type {
49540 46 75 6e 63 74 69 6f 6e 7d 0a 09 09 09 20 2a 20 Function}.... *
49550 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
49560 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
49570 73 79 6e 63 65 64 20 3d 20 66 61 6c 73 65 3b 0a synced = false;.
49580 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
49590 20 2a 20 20 4b 65 65 70 20 74 72 61 63 6b 20 6f * Keep track o
495a0 66 20 61 6c 6c 20 6f 66 20 74 68 65 20 73 63 68 f all of the sch
495b0 65 64 75 6c 65 64 20 65 76 65 6e 74 20 69 64 73 eduled event ids
495c0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b .... * @type {
495d0 41 72 72 61 79 7d 0a 09 09 09 20 2a 20 20 40 70 Array}.... * @p
495e0 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
495f0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 63 68 this._sch
49600 65 64 75 6c 65 64 20 3d 20 5b 5d 3b 0a 09 20 20 eduled = [];..
49610 20 20 20 20 20 20 2f 2f 6d 61 6b 65 20 74 68 65 //make the
49620 20 6f 75 74 70 75 74 20 65 78 70 6c 69 63 69 74 output explicit
49630 6c 79 20 73 74 65 72 65 6f 0a 09 20 20 20 20 20 ly stereo..
49640 20 20 20 74 68 69 73 2e 5f 76 6f 6c 75 6d 65 2e this._volume.
49650 6f 75 74 70 75 74 2e 6f 75 74 70 75 74 2e 63 68 output.output.ch
49660 61 6e 6e 65 6c 43 6f 75 6e 74 20 3d 20 32 3b 0a annelCount = 2;.
49670 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 76 . this._v
49680 6f 6c 75 6d 65 2e 6f 75 74 70 75 74 2e 6f 75 74 olume.output.out
49690 70 75 74 2e 63 68 61 6e 6e 65 6c 43 6f 75 6e 74 put.channelCount
496a0 4d 6f 64 65 20 3d 20 27 65 78 70 6c 69 63 69 74 Mode = 'explicit
496b0 27 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 6d 75 ';.. //mu
496c0 74 65 20 69 6e 69 74 69 61 6c 6c 79 0a 09 20 20 te initially..
496d0 20 20 20 20 20 20 74 68 69 73 2e 6d 75 74 65 20 this.mute
496e0 3d 20 6f 70 74 69 6f 6e 73 2e 6d 75 74 65 3b 0a = options.mute;.
496f0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e . };.. Ton
49700 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 53 6f e.extend(Tone.So
49710 75 72 63 65 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a urce);.. /**.
49720 09 09 20 2a 20 20 54 68 65 20 64 65 66 61 75 6c .. * The defaul
49730 74 20 70 61 72 61 6d 65 74 65 72 73 0a 09 09 20 t parameters...
49740 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 * @static... *
49750 20 40 63 6f 6e 73 74 0a 09 09 20 2a 20 20 40 74 @const... * @t
49760 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 ype {Object}...
49770 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 6f 75 */.. Tone.Sou
49780 72 63 65 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b rce.defaults = {
49790 0a 09 20 20 20 20 20 20 20 20 27 76 6f 6c 75 6d .. 'volum
497a0 65 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 e': 0,..
497b0 27 6d 75 74 65 27 3a 20 66 61 6c 73 65 0a 09 20 'mute': false..
497c0 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
497d0 09 20 2a 20 20 52 65 74 75 72 6e 73 20 74 68 65 . * Returns the
497e0 20 70 6c 61 79 62 61 63 6b 20 73 74 61 74 65 20 playback state
497f0 6f 66 20 74 68 65 20 73 6f 75 72 63 65 2c 20 65 of the source, e
49800 69 74 68 65 72 20 22 73 74 61 72 74 65 64 22 20 ither "started"
49810 6f 72 20 22 73 74 6f 70 70 65 64 22 2e 0a 09 09 or "stopped"....
49820 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e * @type {Tone.
49830 53 74 61 74 65 7d 0a 09 09 20 2a 20 20 40 72 65 State}... * @re
49840 61 64 4f 6e 6c 79 0a 09 09 20 2a 20 20 40 6d 65 adOnly... * @me
49850 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 53 6f 75 72 mberOf Tone.Sour
49860 63 65 23 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 ce#... * @name
49870 73 74 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 state... */..
49880 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
49890 6f 70 65 72 74 79 28 54 6f 6e 65 2e 53 6f 75 72 operty(Tone.Sour
498a0 63 65 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 73 ce.prototype, 's
498b0 74 61 74 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 tate', {..
498c0 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
498d0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
498e0 20 20 69 66 20 28 74 68 69 73 2e 5f 73 79 6e 63 if (this._sync
498f0 65 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ed) {..
49900 20 20 20 20 20 20 20 69 66 20 28 54 6f 6e 65 2e if (Tone.
49910 54 72 61 6e 73 70 6f 72 74 2e 73 74 61 74 65 20 Transport.state
49920 3d 3d 3d 20 54 6f 6e 65 2e 53 74 61 74 65 2e 53 === Tone.State.S
49930 74 61 72 74 65 64 29 20 7b 0a 09 20 20 20 20 20 tarted) {..
49940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
49950 65 74 75 72 6e 20 74 68 69 73 2e 5f 73 74 61 74 eturn this._stat
49960 65 2e 67 65 74 56 61 6c 75 65 41 74 54 69 6d 65 e.getValueAtTime
49970 28 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e (Tone.Transport.
49980 73 65 63 6f 6e 64 73 29 3b 0a 09 20 20 20 20 20 seconds);..
49990 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
499a0 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
499b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
499c0 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 6f 70 70 Tone.State.Stopp
499d0 65 64 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ed;..
499e0 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
499f0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 } else {..
49a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
49a10 74 75 72 6e 20 74 68 69 73 2e 5f 73 74 61 74 65 turn this._state
49a20 2e 67 65 74 56 61 6c 75 65 41 74 54 69 6d 65 28 .getValueAtTime(
49a30 74 68 69 73 2e 6e 6f 77 28 29 29 3b 0a 09 20 20 this.now());..
49a40 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
49a50 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
49a60 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 4d 75 . /**... * Mu
49a70 74 65 20 74 68 65 20 6f 75 74 70 75 74 2e 20 0a te the output. .
49a80 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 .. * @memberOf T
49a90 6f 6e 65 2e 53 6f 75 72 63 65 23 0a 09 09 20 2a one.Source#... *
49aa0 20 40 74 79 70 65 20 7b 62 6f 6f 6c 65 61 6e 7d @type {boolean}
49ab0 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6d 75 74 65 ... * @name mute
49ac0 0a 09 09 20 2a 20 40 65 78 61 6d 70 6c 65 0a 09 ... * @example..
49ad0 09 20 2a 20 2f 2f 6d 75 74 65 20 74 68 65 20 6f . * //mute the o
49ae0 75 74 70 75 74 0a 09 09 20 2a 20 73 6f 75 72 63 utput... * sourc
49af0 65 2e 6d 75 74 65 20 3d 20 74 72 75 65 3b 0a 09 e.mute = true;..
49b00 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
49b10 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
49b20 54 6f 6e 65 2e 53 6f 75 72 63 65 2e 70 72 6f 74 Tone.Source.prot
49b30 6f 74 79 70 65 2c 20 27 6d 75 74 65 27 2c 20 7b otype, 'mute', {
49b40 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 .. get: f
49b50 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
49b60 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
49b70 20 74 68 69 73 2e 5f 76 6f 6c 75 6d 65 2e 6d 75 this._volume.mu
49b80 74 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a te;.. },.
49b90 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
49ba0 6e 63 74 69 6f 6e 20 28 6d 75 74 65 29 20 7b 0a nction (mute) {.
49bb0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
49bc0 73 2e 5f 76 6f 6c 75 6d 65 2e 6d 75 74 65 20 3d s._volume.mute =
49bd0 20 6d 75 74 65 3b 0a 09 20 20 20 20 20 20 20 20 mute;..
49be0 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
49bf0 2f 2f 6f 76 65 72 77 72 69 74 65 20 74 68 65 73 //overwrite thes
49c00 65 20 66 75 6e 63 74 69 6f 6e 73 0a 09 20 20 20 e functions..
49c10 20 54 6f 6e 65 2e 53 6f 75 72 63 65 2e 70 72 6f Tone.Source.pro
49c20 74 6f 74 79 70 65 2e 5f 73 74 61 72 74 20 3d 20 totype._start =
49c30 54 6f 6e 65 2e 6e 6f 4f 70 3b 0a 09 20 20 20 20 Tone.noOp;..
49c40 54 6f 6e 65 2e 53 6f 75 72 63 65 2e 70 72 6f 74 Tone.Source.prot
49c50 6f 74 79 70 65 2e 5f 73 74 6f 70 20 3d 20 54 6f otype._stop = To
49c60 6e 65 2e 6e 6f 4f 70 3b 0a 09 20 20 20 20 2f 2a ne.noOp;.. /*
49c70 2a 0a 09 09 20 2a 20 20 53 74 61 72 74 20 74 68 *... * Start th
49c80 65 20 73 6f 75 72 63 65 20 61 74 20 74 68 65 20 e source at the
49c90 73 70 65 63 69 66 69 65 64 20 74 69 6d 65 2e 20 specified time.
49ca0 49 66 20 6e 6f 20 74 69 6d 65 20 69 73 20 67 69 If no time is gi
49cb0 76 65 6e 2c 20 0a 09 09 20 2a 20 20 73 74 61 72 ven, ... * star
49cc0 74 20 74 68 65 20 73 6f 75 72 63 65 20 6e 6f 77 t the source now
49cd0 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 .... * @param
49ce0 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 {Time} [time=now
49cf0 5d 20 57 68 65 6e 20 74 68 65 20 73 6f 75 72 63 ] When the sourc
49d00 65 20 73 68 6f 75 6c 64 20 62 65 20 73 74 61 72 e should be star
49d10 74 65 64 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 ted.... * @retu
49d20 72 6e 73 20 7b 54 6f 6e 65 2e 53 6f 75 72 63 65 rns {Tone.Source
49d30 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 40 65 78 } this... * @ex
49d40 61 6d 70 6c 65 0a 09 09 20 2a 20 73 6f 75 72 63 ample... * sourc
49d50 65 2e 73 74 61 72 74 28 22 2b 30 2e 35 22 29 3b e.start("+0.5");
49d60 20 2f 2f 73 74 61 72 74 73 20 74 68 65 20 73 6f //starts the so
49d70 75 72 63 65 20 30 2e 35 20 73 65 63 6f 6e 64 73 urce 0.5 seconds
49d80 20 66 72 6f 6d 20 6e 6f 77 0a 09 09 20 2a 2f 0a from now... */.
49d90 09 20 20 20 20 54 6f 6e 65 2e 53 6f 75 72 63 65 . Tone.Source
49da0 2e 70 72 6f 74 6f 74 79 70 65 2e 73 74 61 72 74 .prototype.start
49db0 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d = function (tim
49dc0 65 2c 20 6f 66 66 73 65 74 2c 20 64 75 72 61 74 e, offset, durat
49dd0 69 6f 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ion) {..
49de0 69 66 20 28 74 68 69 73 2e 69 73 55 6e 64 65 66 if (this.isUndef
49df0 28 74 69 6d 65 29 20 26 26 20 74 68 69 73 2e 5f (time) && this._
49e00 73 79 6e 63 65 64 29 20 7b 0a 09 20 20 20 20 20 synced) {..
49e10 20 20 20 20 20 20 20 74 69 6d 65 20 3d 20 54 6f time = To
49e20 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 73 65 63 ne.Transport.sec
49e30 6f 6e 64 73 3b 0a 09 20 20 20 20 20 20 20 20 7d onds;.. }
49e40 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
49e50 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 73 time = this
49e60 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 29 .toSeconds(time)
49e70 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
49e80 20 20 20 20 20 20 2f 2f 69 66 20 69 74 27 73 20 //if it's
49e90 73 74 61 72 74 65 64 2c 20 73 74 6f 70 20 69 74 started, stop it
49ea0 20 61 6e 64 20 72 65 73 74 61 72 74 20 69 74 0a and restart it.
49eb0 09 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68 . if (!th
49ec0 69 73 2e 72 65 74 72 69 67 67 65 72 20 26 26 20 is.retrigger &&
49ed0 74 68 69 73 2e 5f 73 74 61 74 65 2e 67 65 74 56 this._state.getV
49ee0 61 6c 75 65 41 74 54 69 6d 65 28 74 69 6d 65 29 alueAtTime(time)
49ef0 20 3d 3d 3d 20 54 6f 6e 65 2e 53 74 61 74 65 2e === Tone.State.
49f00 53 74 61 72 74 65 64 29 20 7b 0a 09 20 20 20 20 Started) {..
49f10 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 74 6f this.sto
49f20 70 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 p(time);..
49f30 20 20 7d 0a 09 20 20 20 20 20 20 20 20 74 68 69 }.. thi
49f40 73 2e 5f 73 74 61 74 65 2e 73 65 74 53 74 61 74 s._state.setStat
49f50 65 41 74 54 69 6d 65 28 54 6f 6e 65 2e 53 74 61 eAtTime(Tone.Sta
49f60 74 65 2e 53 74 61 72 74 65 64 2c 20 74 69 6d 65 te.Started, time
49f70 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 );.. if (
49f80 74 68 69 73 2e 5f 73 79 6e 63 65 64 29 20 7b 0a this._synced) {.
49f90 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 . //
49fa0 61 64 64 20 74 68 65 20 6f 66 66 73 65 74 20 74 add the offset t
49fb0 69 6d 65 20 74 6f 20 74 68 65 20 65 76 65 6e 74 ime to the event
49fc0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
49fd0 72 20 65 76 65 6e 74 20 3d 20 74 68 69 73 2e 5f r event = this._
49fe0 73 74 61 74 65 2e 67 65 74 28 74 69 6d 65 29 3b state.get(time);
49ff0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 65 76 .. ev
4a000 65 6e 74 2e 6f 66 66 73 65 74 20 3d 20 74 68 69 ent.offset = thi
4a010 73 2e 64 65 66 61 75 6c 74 41 72 67 28 6f 66 66 s.defaultArg(off
4a020 73 65 74 2c 20 30 29 3b 0a 09 20 20 20 20 20 20 set, 0);..
4a030 20 20 20 20 20 20 65 76 65 6e 74 2e 64 75 72 61 event.dura
4a040 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 3b tion = duration;
4a050 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
4a060 72 20 73 63 68 65 64 20 3d 20 54 6f 6e 65 2e 54 r sched = Tone.T
4a070 72 61 6e 73 70 6f 72 74 2e 73 63 68 65 64 75 6c ransport.schedul
4a080 65 28 66 75 6e 63 74 69 6f 6e 20 28 74 29 20 7b e(function (t) {
4a090 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
4a0a0 20 20 74 68 69 73 2e 5f 73 74 61 72 74 28 74 2c this._start(t,
4a0b0 20 6f 66 66 73 65 74 2c 20 64 75 72 61 74 69 6f offset, duratio
4a0c0 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 n);..
4a0d0 20 7d 2e 62 69 6e 64 28 74 68 69 73 29 2c 20 74 }.bind(this), t
4a0e0 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 ime);..
4a0f0 20 20 20 74 68 69 73 2e 5f 73 63 68 65 64 75 6c this._schedul
4a100 65 64 2e 70 75 73 68 28 73 63 68 65 64 29 3b 0a ed.push(sched);.
4a110 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 . } else
4a120 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
4a130 68 69 73 2e 5f 73 74 61 72 74 2e 61 70 70 6c 79 his._start.apply
4a140 28 74 68 69 73 2c 20 61 72 67 75 6d 65 6e 74 73 (this, arguments
4a150 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
4a160 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
4a170 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
4a180 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 74 6f 70 20 /**... * Stop
4a190 74 68 65 20 73 6f 75 72 63 65 20 61 74 20 74 68 the source at th
4a1a0 65 20 73 70 65 63 69 66 69 65 64 20 74 69 6d 65 e specified time
4a1b0 2e 20 49 66 20 6e 6f 20 74 69 6d 65 20 69 73 20 . If no time is
4a1c0 67 69 76 65 6e 2c 20 0a 09 09 20 2a 20 20 73 74 given, ... * st
4a1d0 6f 70 20 74 68 65 20 73 6f 75 72 63 65 20 6e 6f op the source no
4a1e0 77 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 w.... * @param
4a1f0 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f {Time} [time=no
4a200 77 5d 20 57 68 65 6e 20 74 68 65 20 73 6f 75 72 w] When the sour
4a210 63 65 20 73 68 6f 75 6c 64 20 62 65 20 73 74 6f ce should be sto
4a220 70 70 65 64 2e 20 0a 09 09 20 2a 20 20 40 72 65 pped. ... * @re
4a230 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 6f 75 72 turns {Tone.Sour
4a240 63 65 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 40 ce} this... * @
4a250 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 73 6f 75 example... * sou
4a260 72 63 65 2e 73 74 6f 70 28 29 3b 20 2f 2f 20 73 rce.stop(); // s
4a270 74 6f 70 73 20 74 68 65 20 73 6f 75 72 63 65 20 tops the source
4a280 69 6d 6d 65 64 69 61 74 65 6c 79 0a 09 09 20 2a immediately... *
4a290 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 6f 75 72 /.. Tone.Sour
4a2a0 63 65 2e 70 72 6f 74 6f 74 79 70 65 2e 73 74 6f ce.prototype.sto
4a2b0 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 p = function (ti
4a2c0 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 69 me) {.. i
4a2d0 66 20 28 74 68 69 73 2e 69 73 55 6e 64 65 66 28 f (this.isUndef(
4a2e0 74 69 6d 65 29 20 26 26 20 74 68 69 73 2e 5f 73 time) && this._s
4a2f0 79 6e 63 65 64 29 20 7b 0a 09 20 20 20 20 20 20 ynced) {..
4a300 20 20 20 20 20 20 74 69 6d 65 20 3d 20 54 6f 6e time = Ton
4a310 65 2e 54 72 61 6e 73 70 6f 72 74 2e 73 65 63 6f e.Transport.seco
4a320 6e 64 73 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 nds;.. }
4a330 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 else {..
4a340 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 73 2e time = this.
4a350 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b toSeconds(time);
4a360 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
4a370 20 20 20 20 20 74 68 69 73 2e 5f 73 74 61 74 65 this._state
4a380 2e 63 61 6e 63 65 6c 28 74 69 6d 65 29 3b 0a 09 .cancel(time);..
4a390 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 74 this._st
4a3a0 61 74 65 2e 73 65 74 53 74 61 74 65 41 74 54 69 ate.setStateAtTi
4a3b0 6d 65 28 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 me(Tone.State.St
4a3c0 6f 70 70 65 64 2c 20 74 69 6d 65 29 3b 0a 09 20 opped, time);..
4a3d0 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73 if (!this
4a3e0 2e 5f 73 79 6e 63 65 64 29 20 7b 0a 09 20 20 20 ._synced) {..
4a3f0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 this._s
4a400 74 6f 70 2e 61 70 70 6c 79 28 74 68 69 73 2c 20 top.apply(this,
4a410 61 72 67 75 6d 65 6e 74 73 29 3b 0a 09 20 20 20 arguments);..
4a420 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
4a430 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 73 var s
4a440 63 68 65 64 20 3d 20 54 6f 6e 65 2e 54 72 61 6e ched = Tone.Tran
4a450 73 70 6f 72 74 2e 73 63 68 65 64 75 6c 65 28 74 sport.schedule(t
4a460 68 69 73 2e 5f 73 74 6f 70 2e 62 69 6e 64 28 74 his._stop.bind(t
4a470 68 69 73 29 2c 20 74 69 6d 65 29 3b 0a 09 20 20 his), time);..
4a480 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
4a490 73 63 68 65 64 75 6c 65 64 2e 70 75 73 68 28 73 scheduled.push(s
4a4a0 63 68 65 64 29 3b 0a 09 20 20 20 20 20 20 20 20 ched);..
4a4b0 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 }.. retur
4a4c0 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
4a4d0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 . /**... * S
4a4e0 79 6e 63 20 74 68 65 20 73 6f 75 72 63 65 20 74 ync the source t
4a4f0 6f 20 74 68 65 20 54 72 61 6e 73 70 6f 72 74 20 o the Transport
4a500 73 6f 20 74 68 61 74 20 61 6c 6c 20 73 75 62 73 so that all subs
4a510 65 71 75 65 6e 74 0a 09 09 20 2a 20 20 63 61 6c equent... * cal
4a520 6c 73 20 74 6f 20 60 73 74 61 72 74 60 20 61 6e ls to `start` an
4a530 64 20 60 73 74 6f 70 60 20 61 72 65 20 73 79 6e d `stop` are syn
4a540 63 65 64 20 74 6f 20 74 68 65 20 54 72 61 6e 73 ced to the Trans
4a550 70 6f 72 74 54 69 6d 65 0a 09 09 20 2a 20 20 69 portTime... * i
4a560 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 41 75 nstead of the Au
4a570 64 69 6f 43 6f 6e 74 65 78 74 20 74 69 6d 65 2e dioContext time.
4a580 20 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 72 65 ... *... * @re
4a590 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 6f 75 72 turns {Tone.Sour
4a5a0 63 65 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 40 ce} this... * @
4a5b0 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f 73 example... * //s
4a5c0 79 6e 63 20 74 68 65 20 73 6f 75 72 63 65 20 73 ync the source s
4a5d0 6f 20 74 68 61 74 20 69 74 20 70 6c 61 79 73 20 o that it plays
4a5e0 62 65 74 77 65 65 6e 20 30 20 61 6e 64 20 30 2e between 0 and 0.
4a5f0 33 20 6f 6e 20 74 68 65 20 54 72 61 6e 73 70 6f 3 on the Transpo
4a600 72 74 27 73 20 74 69 6d 65 6c 69 6e 65 0a 09 09 rt's timeline...
4a610 20 2a 20 73 6f 75 72 63 65 2e 73 79 6e 63 28 29 * source.sync()
4a620 2e 73 74 61 72 74 28 30 29 2e 73 74 6f 70 28 30 .start(0).stop(0
4a630 2e 33 29 3b 0a 09 09 20 2a 20 2f 2f 73 74 61 72 .3);... * //star
4a640 74 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 2e t the transport.
4a650 0a 09 09 20 2a 20 54 6f 6e 65 2e 54 72 61 6e 73 ... * Tone.Trans
4a660 70 6f 72 74 2e 73 74 61 72 74 28 29 3b 0a 09 09 port.start();...
4a670 20 2a 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c *... * @exampl
4a680 65 0a 09 09 20 2a 20 2f 2f 73 74 61 72 74 20 74 e... * //start t
4a690 68 65 20 74 72 61 6e 73 70 6f 72 74 20 77 69 74 he transport wit
4a6a0 68 20 61 6e 20 6f 66 66 73 65 74 20 61 6e 64 20 h an offset and
4a6b0 74 68 65 20 73 79 6e 63 27 65 64 20 73 6f 75 72 the sync'ed sour
4a6c0 63 65 73 0a 09 09 20 2a 20 2f 2f 77 69 6c 6c 20 ces... * //will
4a6d0 73 74 61 72 74 20 69 6e 20 74 68 65 20 63 6f 72 start in the cor
4a6e0 72 65 63 74 20 70 6f 73 69 74 69 6f 6e 0a 09 09 rect position...
4a6f0 20 2a 20 73 6f 75 72 63 65 2e 73 79 6e 63 28 29 * source.sync()
4a700 2e 73 74 61 72 74 28 30 2e 31 29 3b 0a 09 09 20 .start(0.1);...
4a710 2a 20 2f 2f 74 68 65 20 73 6f 75 72 63 65 20 77 * //the source w
4a720 69 6c 6c 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 ill be invoked w
4a730 69 74 68 20 61 6e 20 6f 66 66 73 65 74 20 6f 66 ith an offset of
4a740 20 30 2e 34 0a 09 09 20 2a 20 54 6f 6e 65 2e 54 0.4... * Tone.T
4a750 72 61 6e 73 70 6f 72 74 2e 73 74 61 72 74 28 22 ransport.start("
4a760 2b 30 2e 35 22 2c 20 30 2e 35 29 3b 0a 09 09 20 +0.5", 0.5);...
4a770 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 6f 75 */.. Tone.Sou
4a780 72 63 65 2e 70 72 6f 74 6f 74 79 70 65 2e 73 79 rce.prototype.sy
4a790 6e 63 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 nc = function ()
4a7a0 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 {.. this
4a7b0 2e 5f 73 79 6e 63 65 64 20 3d 20 74 72 75 65 3b ._synced = true;
4a7c0 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 54 .. Tone.T
4a7d0 72 61 6e 73 70 6f 72 74 2e 6f 6e 28 27 73 74 61 ransport.on('sta
4a7e0 72 74 20 6c 6f 6f 70 53 74 61 72 74 27 2c 20 66 rt loopStart', f
4a7f0 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 2c 20 6f unction (time, o
4a800 66 66 73 65 74 29 20 7b 0a 09 20 20 20 20 20 20 ffset) {..
4a810 20 20 20 20 20 20 69 66 20 28 6f 66 66 73 65 74 if (offset
4a820 20 3e 20 30 29 20 7b 0a 09 20 20 20 20 20 20 20 > 0) {..
4a830 20 20 20 20 20 20 20 20 20 2f 2f 20 67 65 74 20 // get
4a840 74 68 65 20 70 6c 61 79 62 61 63 6b 20 73 74 61 the playback sta
4a850 74 65 20 61 74 20 74 68 61 74 20 74 69 6d 65 0a te at that time.
4a860 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
4a870 20 76 61 72 20 73 74 61 74 65 45 76 65 6e 74 20 var stateEvent
4a880 3d 20 74 68 69 73 2e 5f 73 74 61 74 65 2e 67 65 = this._state.ge
4a890 74 28 6f 66 66 73 65 74 29 3b 0a 09 20 20 20 20 t(offset);..
4a8a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6c // l
4a8b0 69 73 74 65 6e 20 66 6f 72 20 73 74 61 72 74 20 isten for start
4a8c0 65 76 65 6e 74 73 20 77 68 69 63 68 20 6d 61 79 events which may
4a8d0 20 6f 63 63 75 72 20 69 6e 20 74 68 65 20 6d 69 occur in the mi
4a8e0 64 64 6c 65 20 6f 66 20 74 68 65 20 73 79 6e 63 ddle of the sync
4a8f0 27 65 64 20 74 69 6d 65 0a 09 20 20 20 20 20 20 'ed time..
4a900 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 if (st
4a910 61 74 65 45 76 65 6e 74 20 26 26 20 73 74 61 74 ateEvent && stat
4a920 65 45 76 65 6e 74 2e 73 74 61 74 65 20 3d 3d 3d eEvent.state ===
4a930 20 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 61 72 Tone.State.Star
4a940 74 65 64 20 26 26 20 73 74 61 74 65 45 76 65 6e ted && stateEven
4a950 74 2e 74 69 6d 65 20 21 3d 3d 20 6f 66 66 73 65 t.time !== offse
4a960 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 t) {..
4a970 20 20 20 20 20 20 20 20 20 20 2f 2f 20 67 65 74 // get
4a980 20 74 68 65 20 6f 66 66 73 65 74 0a 09 20 20 20 the offset..
4a990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4a9a0 20 76 61 72 20 73 74 61 72 74 4f 66 66 73 65 74 var startOffset
4a9b0 20 3d 20 6f 66 66 73 65 74 20 2d 20 74 68 69 73 = offset - this
4a9c0 2e 74 6f 53 65 63 6f 6e 64 73 28 73 74 61 74 65 .toSeconds(state
4a9d0 45 76 65 6e 74 2e 74 69 6d 65 29 3b 0a 09 20 20 Event.time);..
4a9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4a9f0 20 20 76 61 72 20 64 75 72 61 74 69 6f 6e 3b 0a var duration;.
4aa00 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
4aa10 20 20 20 20 20 69 66 20 28 73 74 61 74 65 45 76 if (stateEv
4aa20 65 6e 74 2e 64 75 72 61 74 69 6f 6e 29 20 7b 0a ent.duration) {.
4aa30 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
4aa40 20 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f duratio
4aa50 6e 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e n = this.toSecon
4aa60 64 73 28 73 74 61 74 65 45 76 65 6e 74 2e 64 75 ds(stateEvent.du
4aa70 72 61 74 69 6f 6e 29 20 2d 20 73 74 61 72 74 4f ration) - startO
4aa80 66 66 73 65 74 3b 0a 09 20 20 20 20 20 20 20 20 ffset;..
4aa90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
4aaa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4aab0 20 20 20 74 68 69 73 2e 5f 73 74 61 72 74 28 74 this._start(t
4aac0 69 6d 65 2c 20 74 68 69 73 2e 74 6f 53 65 63 6f ime, this.toSeco
4aad0 6e 64 73 28 73 74 61 74 65 45 76 65 6e 74 2e 6f nds(stateEvent.o
4aae0 66 66 73 65 74 29 20 2b 20 73 74 61 72 74 4f 66 ffset) + startOf
4aaf0 66 73 65 74 2c 20 64 75 72 61 74 69 6f 6e 29 3b fset, duration);
4ab00 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
4ab10 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
4ab20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 2e 62 69 }.. }.bi
4ab30 6e 64 28 74 68 69 73 29 29 3b 0a 09 20 20 20 20 nd(this));..
4ab40 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f Tone.Transpo
4ab50 72 74 2e 6f 6e 28 27 73 74 6f 70 20 70 61 75 73 rt.on('stop paus
4ab60 65 20 6c 6f 6f 70 45 6e 64 27 2c 20 66 75 6e 63 e loopEnd', func
4ab70 74 69 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 tion (time) {..
4ab80 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 if (t
4ab90 68 69 73 2e 5f 73 74 61 74 65 2e 67 65 74 56 61 his._state.getVa
4aba0 6c 75 65 41 74 54 69 6d 65 28 54 6f 6e 65 2e 54 lueAtTime(Tone.T
4abb0 72 61 6e 73 70 6f 72 74 2e 73 65 63 6f 6e 64 73 ransport.seconds
4abc0 29 20 3d 3d 3d 20 54 6f 6e 65 2e 53 74 61 74 65 ) === Tone.State
4abd0 2e 53 74 61 72 74 65 64 29 20 7b 0a 09 20 20 20 .Started) {..
4abe0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
4abf0 73 2e 5f 73 74 6f 70 28 74 69 6d 65 29 3b 0a 09 s._stop(time);..
4ac00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
4ac10 20 20 20 20 20 20 20 7d 2e 62 69 6e 64 28 74 68 }.bind(th
4ac20 69 73 29 29 3b 0a 09 20 20 20 20 20 20 20 20 72 is));.. r
4ac30 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 eturn this;..
4ac40 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
4ac50 2a 20 20 55 6e 73 79 6e 63 20 74 68 65 20 73 6f * Unsync the so
4ac60 75 72 63 65 20 74 6f 20 74 68 65 20 54 72 61 6e urce to the Tran
4ac70 73 70 6f 72 74 2e 20 53 65 65 20 54 6f 6e 65 2e sport. See Tone.
4ac80 53 6f 75 72 63 65 2e 73 79 6e 63 0a 09 09 20 2a Source.sync... *
4ac90 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
4aca0 2e 53 6f 75 72 63 65 7d 20 74 68 69 73 0a 09 09 .Source} this...
4acb0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 6f */.. Tone.So
4acc0 75 72 63 65 2e 70 72 6f 74 6f 74 79 70 65 2e 75 urce.prototype.u
4acd0 6e 73 79 6e 63 20 3d 20 66 75 6e 63 74 69 6f 6e nsync = function
4ace0 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 () {.. t
4acf0 68 69 73 2e 5f 73 79 6e 63 65 64 20 3d 20 66 61 his._synced = fa
4ad00 6c 73 65 3b 0a 09 20 20 20 20 20 20 20 20 54 6f lse;.. To
4ad10 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 6f 66 66 ne.Transport.off
4ad20 28 27 73 74 61 72 74 20 73 74 6f 70 20 70 61 75 ('start stop pau
4ad30 73 65 20 6c 6f 6f 70 45 6e 64 20 6c 6f 6f 70 53 se loopEnd loopS
4ad40 74 61 72 74 27 29 3b 0a 09 20 20 20 20 20 20 20 tart');..
4ad50 20 2f 2f 20 63 6c 65 61 72 20 61 6c 6c 20 6f 66 // clear all of
4ad60 20 74 68 65 20 73 63 68 65 64 75 6c 65 64 20 69 the scheduled i
4ad70 64 73 0a 09 20 20 20 20 20 20 20 20 66 6f 72 20 ds.. for
4ad80 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 (var i = 0; i <
4ad90 74 68 69 73 2e 5f 73 63 68 65 64 75 6c 65 64 2e this._scheduled.
4ada0 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 length; i++) {..
4adb0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
4adc0 69 64 20 3d 20 74 68 69 73 2e 5f 73 63 68 65 64 id = this._sched
4add0 75 6c 65 64 5b 69 5d 3b 0a 09 20 20 20 20 20 20 uled[i];..
4ade0 20 20 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 Tone.Trans
4adf0 70 6f 72 74 2e 63 6c 65 61 72 28 69 64 29 3b 0a port.clear(id);.
4ae00 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
4ae10 20 20 20 20 74 68 69 73 2e 5f 73 63 68 65 64 75 this._schedu
4ae20 6c 65 64 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 led = [];..
4ae30 20 20 20 74 68 69 73 2e 5f 73 74 61 74 65 2e 63 this._state.c
4ae40 61 6e 63 65 6c 28 30 29 3b 0a 09 20 20 20 20 20 ancel(0);..
4ae50 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
4ae60 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
4ae70 0a 09 09 20 2a 09 43 6c 65 61 6e 20 75 70 2e 0a ... *.Clean up..
4ae80 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 54 .. * @return {T
4ae90 6f 6e 65 2e 53 6f 75 72 63 65 7d 20 74 68 69 73 one.Source} this
4aea0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
4aeb0 2e 53 6f 75 72 63 65 2e 70 72 6f 74 6f 74 79 70 .Source.prototyp
4aec0 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 e.dispose = func
4aed0 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
4aee0 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 Tone.prototyp
4aef0 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 e.dispose.call(t
4af00 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 his);.. t
4af10 68 69 73 2e 75 6e 73 79 6e 63 28 29 3b 0a 09 20 his.unsync();..
4af20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 63 68 this._sch
4af30 65 64 75 6c 65 64 20 3d 20 6e 75 6c 6c 3b 0a 09 eduled = null;..
4af40 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 77 72 this._wr
4af50 69 74 61 62 6c 65 28 27 76 6f 6c 75 6d 65 27 29 itable('volume')
4af60 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
4af70 5f 76 6f 6c 75 6d 65 2e 64 69 73 70 6f 73 65 28 _volume.dispose(
4af80 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
4af90 2e 5f 76 6f 6c 75 6d 65 20 3d 20 6e 75 6c 6c 3b ._volume = null;
4afa0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 .. this.v
4afb0 6f 6c 75 6d 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 olume = null;..
4afc0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 74 61 this._sta
4afd0 74 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 te.dispose();..
4afe0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 74 61 this._sta
4aff0 74 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 te = null;..
4b000 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 };.. return T
4b010 6f 6e 65 2e 53 6f 75 72 63 65 3b 0a 09 7d 29 3b one.Source;..});
4b020 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f ..Module(functio
4b030 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 n (Tone) {..
4b040 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
4b050 40 63 6c 61 73 73 20 54 6f 6e 65 2e 4f 73 63 69 @class Tone.Osci
4b060 6c 6c 61 74 6f 72 20 73 75 70 70 6f 72 74 73 20 llator supports
4b070 61 20 6e 75 6d 62 65 72 20 6f 66 20 66 65 61 74 a number of feat
4b080 75 72 65 73 20 69 6e 63 6c 75 64 69 6e 67 0a 09 ures including..
4b090 09 20 2a 20 20 20 20 20 20 20 20 20 70 68 61 73 . * phas
4b0a0 65 20 72 6f 74 61 74 69 6f 6e 2c 20 6d 75 6c 74 e rotation, mult
4b0b0 69 70 6c 65 20 6f 73 63 69 6c 6c 61 74 6f 72 20 iple oscillator
4b0c0 74 79 70 65 73 20 28 73 65 65 20 54 6f 6e 65 2e types (see Tone.
4b0d0 4f 73 63 69 6c 6c 61 74 6f 72 2e 74 79 70 65 29 Oscillator.type)
4b0e0 2c 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 , ... *
4b0f0 61 6e 64 20 54 72 61 6e 73 70 6f 72 74 20 73 79 and Transport sy
4b100 6e 63 69 6e 67 20 28 73 65 65 20 54 6f 6e 65 2e ncing (see Tone.
4b110 4f 73 63 69 6c 6c 61 74 6f 72 2e 73 79 6e 63 46 Oscillator.syncF
4b120 72 65 71 75 65 6e 63 79 29 2e 0a 09 09 20 2a 0a requency).... *.
4b130 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 .. * @construct
4b140 6f 72 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 or... * @extend
4b150 73 20 7b 54 6f 6e 65 2e 53 6f 75 72 63 65 7d 0a s {Tone.Source}.
4b160 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 46 72 .. * @param {Fr
4b170 65 71 75 65 6e 63 79 7d 20 5b 66 72 65 71 75 65 equency} [freque
4b180 6e 63 79 5d 20 53 74 61 72 74 69 6e 67 20 66 72 ncy] Starting fr
4b190 65 71 75 65 6e 63 79 0a 09 09 20 2a 20 20 40 70 equency... * @p
4b1a0 61 72 61 6d 20 7b 73 74 72 69 6e 67 7d 20 5b 74 aram {string} [t
4b1b0 79 70 65 5d 20 54 68 65 20 6f 73 63 69 6c 6c 61 ype] The oscilla
4b1c0 74 6f 72 20 74 79 70 65 2e 20 52 65 61 64 20 6d tor type. Read m
4b1d0 6f 72 65 20 61 62 6f 75 74 20 74 79 70 65 20 62 ore about type b
4b1e0 65 6c 6f 77 2e 0a 09 09 20 2a 20 20 40 65 78 61 elow.... * @exa
4b1f0 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f 6d 61 6b 65 mple... * //make
4b200 20 61 6e 64 20 73 74 61 72 74 20 61 20 34 34 30 and start a 440
4b210 68 7a 20 73 69 6e 65 20 74 6f 6e 65 0a 09 09 20 hz sine tone...
4b220 2a 20 76 61 72 20 6f 73 63 20 3d 20 6e 65 77 20 * var osc = new
4b230 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 28 Tone.Oscillator(
4b240 34 34 30 2c 20 22 73 69 6e 65 22 29 2e 74 6f 4d 440, "sine").toM
4b250 61 73 74 65 72 28 29 2e 73 74 61 72 74 28 29 3b aster().start();
4b260 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
4b270 2e 4f 73 63 69 6c 6c 61 74 6f 72 20 3d 20 66 75 .Oscillator = fu
4b280 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
4b290 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 var options
4b2a0 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f = this.optionsO
4b2b0 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c bject(arguments,
4b2c0 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 [..
4b2d0 27 66 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 'frequency',..
4b2e0 20 20 20 20 20 20 20 20 20 20 27 74 79 70 65 27 'type'
4b2f0 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e .. ], Ton
4b300 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 2e 64 65 66 e.Oscillator.def
4b310 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 aults);..
4b320 20 54 6f 6e 65 2e 53 6f 75 72 63 65 2e 63 61 6c Tone.Source.cal
4b330 6c 28 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 29 l(this, options)
4b340 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
4b350 09 09 20 2a 20 20 74 68 65 20 6d 61 69 6e 20 6f .. * the main o
4b360 73 63 69 6c 6c 61 74 6f 72 0a 09 09 09 20 2a 20 scillator.... *
4b370 20 40 74 79 70 65 20 7b 4f 73 63 69 6c 6c 61 74 @type {Oscillat
4b380 6f 72 4e 6f 64 65 7d 0a 09 09 09 20 2a 20 20 40 orNode}.... * @
4b390 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
4b3a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 this._os
4b3b0 63 69 6c 6c 61 74 6f 72 20 3d 20 6e 75 6c 6c 3b cillator = null;
4b3c0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
4b3d0 09 20 2a 20 20 54 68 65 20 66 72 65 71 75 65 6e . * The frequen
4b3e0 63 79 20 63 6f 6e 74 72 6f 6c 2e 0a 09 09 09 20 cy control.....
4b3f0 2a 20 20 40 74 79 70 65 20 7b 46 72 65 71 75 65 * @type {Freque
4b400 6e 63 79 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 ncy}.... * @sig
4b410 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 nal.... */..
4b420 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 6e this.frequen
4b430 63 79 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 cy = new Tone.Si
4b440 67 6e 61 6c 28 6f 70 74 69 6f 6e 73 2e 66 72 65 gnal(options.fre
4b450 71 75 65 6e 63 79 2c 20 54 6f 6e 65 2e 54 79 70 quency, Tone.Typ
4b460 65 2e 46 72 65 71 75 65 6e 63 79 29 3b 0a 09 20 e.Frequency);..
4b470 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
4b480 20 20 54 68 65 20 64 65 74 75 6e 65 20 63 6f 6e The detune con
4b490 74 72 6f 6c 20 73 69 67 6e 61 6c 2e 0a 09 09 09 trol signal.....
4b4a0 20 2a 20 20 40 74 79 70 65 20 7b 43 65 6e 74 73 * @type {Cents
4b4b0 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c }.... * @signal
4b4c0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
4b4d0 20 74 68 69 73 2e 64 65 74 75 6e 65 20 3d 20 6e this.detune = n
4b4e0 65 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 6f ew Tone.Signal(o
4b4f0 70 74 69 6f 6e 73 2e 64 65 74 75 6e 65 2c 20 54 ptions.detune, T
4b500 6f 6e 65 2e 54 79 70 65 2e 43 65 6e 74 73 29 3b one.Type.Cents);
4b510 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
4b520 09 20 2a 20 20 74 68 65 20 70 65 72 69 6f 64 69 . * the periodi
4b530 63 20 77 61 76 65 0a 09 09 09 20 2a 20 20 40 74 c wave.... * @t
4b540 79 70 65 20 7b 50 65 72 69 6f 64 69 63 57 61 76 ype {PeriodicWav
4b550 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 e}.... * @priva
4b560 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
4b570 20 20 20 74 68 69 73 2e 5f 77 61 76 65 20 3d 20 this._wave =
4b580 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 2f null;.. /
4b590 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 70 61 **.... * The pa
4b5a0 72 74 69 61 6c 73 20 6f 66 20 74 68 65 20 6f 73 rtials of the os
4b5b0 63 69 6c 6c 61 74 6f 72 0a 09 09 09 20 2a 20 20 cillator.... *
4b5c0 40 74 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 @type {Array}...
4b5d0 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
4b5e0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
4b5f0 69 73 2e 5f 70 61 72 74 69 61 6c 73 20 3d 20 74 is._partials = t
4b600 68 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 6f his.defaultArg(o
4b610 70 74 69 6f 6e 73 2e 70 61 72 74 69 61 6c 73 2c ptions.partials,
4b620 20 5b 31 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 [1]);..
4b630 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 70 /**.... * the p
4b640 68 61 73 65 20 6f 66 20 74 68 65 20 6f 73 63 69 hase of the osci
4b650 6c 6c 61 74 6f 72 0a 09 09 09 20 2a 20 20 62 65 llator.... * be
4b660 74 77 65 65 6e 20 30 20 2d 20 33 36 30 0a 09 09 tween 0 - 360...
4b670 09 20 2a 20 20 40 74 79 70 65 20 7b 6e 75 6d 62 . * @type {numb
4b680 65 72 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 er}.... * @priv
4b690 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
4b6a0 20 20 20 20 74 68 69 73 2e 5f 70 68 61 73 65 20 this._phase
4b6b0 3d 20 6f 70 74 69 6f 6e 73 2e 70 68 61 73 65 3b = options.phase;
4b6c0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
4b6d0 09 20 2a 20 20 74 68 65 20 74 79 70 65 20 6f 66 . * the type of
4b6e0 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 0a the oscillator.
4b6f0 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 73 74 ... * @type {st
4b700 72 69 6e 67 7d 0a 09 09 09 20 2a 20 20 40 70 72 ring}.... * @pr
4b710 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 ivate.... */..
4b720 20 20 20 20 20 20 74 68 69 73 2e 5f 74 79 70 65 this._type
4b730 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
4b740 20 20 2f 2f 73 65 74 75 70 0a 09 20 20 20 20 20 //setup..
4b750 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20 6f this.type = o
4b760 70 74 69 6f 6e 73 2e 74 79 70 65 3b 0a 09 20 20 ptions.type;..
4b770 20 20 20 20 20 20 74 68 69 73 2e 70 68 61 73 65 this.phase
4b780 20 3d 20 74 68 69 73 2e 5f 70 68 61 73 65 3b 0a = this._phase;.
4b790 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 . this._r
4b7a0 65 61 64 4f 6e 6c 79 28 5b 0a 09 20 20 20 20 20 eadOnly([..
4b7b0 20 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 'frequenc
4b7c0 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 y',..
4b7d0 20 27 64 65 74 75 6e 65 27 0a 09 20 20 20 20 20 'detune'..
4b7e0 20 20 20 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 ]);.. };..
4b7f0 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 Tone.extend(
4b800 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 2c Tone.Oscillator,
4b810 20 54 6f 6e 65 2e 53 6f 75 72 63 65 29 3b 0a 09 Tone.Source);..
4b820 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 /**... * th
4b830 65 20 64 65 66 61 75 6c 74 20 70 61 72 61 6d 65 e default parame
4b840 74 65 72 73 0a 09 09 20 2a 20 20 40 74 79 70 65 ters... * @type
4b850 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a {Object}... */.
4b860 09 20 20 20 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c . Tone.Oscill
4b870 61 74 6f 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 ator.defaults =
4b880 7b 0a 09 20 20 20 20 20 20 20 20 27 74 79 70 65 {.. 'type
4b890 27 3a 20 27 73 69 6e 65 27 2c 0a 09 20 20 20 20 ': 'sine',..
4b8a0 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 3a 'frequency':
4b8b0 20 34 34 30 2c 0a 09 20 20 20 20 20 20 20 20 27 440,.. '
4b8c0 64 65 74 75 6e 65 27 3a 20 30 2c 0a 09 20 20 20 detune': 0,..
4b8d0 20 20 20 20 20 27 70 68 61 73 65 27 3a 20 30 2c 'phase': 0,
4b8e0 0a 09 20 20 20 20 20 20 20 20 27 70 61 72 74 69 .. 'parti
4b8f0 61 6c 73 27 3a 20 5b 5d 0a 09 20 20 20 20 7d 3b als': [].. };
4b900 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
4b910 54 68 65 20 4f 73 63 69 6c 6c 61 74 6f 72 20 74 The Oscillator t
4b920 79 70 65 73 0a 09 09 20 2a 20 20 40 65 6e 75 6d ypes... * @enum
4b930 20 7b 53 74 72 69 6e 67 7d 0a 09 09 20 2a 2f 0a {String}... */.
4b940 09 20 20 20 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c . Tone.Oscill
4b950 61 74 6f 72 2e 54 79 70 65 20 3d 20 7b 0a 09 20 ator.Type = {..
4b960 20 20 20 20 20 20 20 53 69 6e 65 3a 20 27 73 69 Sine: 'si
4b970 6e 65 27 2c 0a 09 20 20 20 20 20 20 20 20 54 72 ne',.. Tr
4b980 69 61 6e 67 6c 65 3a 20 27 74 72 69 61 6e 67 6c iangle: 'triangl
4b990 65 27 2c 0a 09 20 20 20 20 20 20 20 20 53 61 77 e',.. Saw
4b9a0 74 6f 6f 74 68 3a 20 27 73 61 77 74 6f 6f 74 68 tooth: 'sawtooth
4b9b0 27 2c 0a 09 20 20 20 20 20 20 20 20 53 71 75 61 ',.. Squa
4b9c0 72 65 3a 20 27 73 71 75 61 72 65 27 2c 0a 09 20 re: 'square',..
4b9d0 20 20 20 20 20 20 20 43 75 73 74 6f 6d 3a 20 27 Custom: '
4b9e0 63 75 73 74 6f 6d 27 0a 09 20 20 20 20 7d 3b 0a custom'.. };.
4b9f0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 73 . /**... * s
4ba00 74 61 72 74 20 74 68 65 20 6f 73 63 69 6c 6c 61 tart the oscilla
4ba10 74 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d tor... * @param
4ba20 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e {Time} [time=n
4ba30 6f 77 5d 20 0a 09 09 20 2a 20 20 40 70 72 69 76 ow] ... * @priv
4ba40 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ate... */.. T
4ba50 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 one.Oscillator.p
4ba60 72 6f 74 6f 74 79 70 65 2e 5f 73 74 61 72 74 20 rototype._start
4ba70 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 = function (time
4ba80 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f 2f 6e ) {.. //n
4ba90 65 77 20 6f 73 63 69 6c 6c 61 74 6f 72 20 77 69 ew oscillator wi
4baa0 74 68 20 70 72 65 76 69 6f 75 73 20 76 61 6c 75 th previous valu
4bab0 65 73 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 es.. this
4bac0 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 20 3d 20 74 ._oscillator = t
4bad0 68 69 73 2e 63 6f 6e 74 65 78 74 2e 63 72 65 61 his.context.crea
4bae0 74 65 4f 73 63 69 6c 6c 61 74 6f 72 28 29 3b 0a teOscillator();.
4baf0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f . this._o
4bb00 73 63 69 6c 6c 61 74 6f 72 2e 73 65 74 50 65 72 scillator.setPer
4bb10 69 6f 64 69 63 57 61 76 65 28 74 68 69 73 2e 5f iodicWave(this._
4bb20 77 61 76 65 29 3b 0a 09 20 20 20 20 20 20 20 20 wave);..
4bb30 2f 2f 63 6f 6e 6e 65 63 74 20 74 68 65 20 63 6f //connect the co
4bb40 6e 74 72 6f 6c 20 73 69 67 6e 61 6c 20 74 6f 20 ntrol signal to
4bb50 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 20 66 the oscillator f
4bb60 72 65 71 75 65 6e 63 79 20 26 20 64 65 74 75 6e requency & detun
4bb70 65 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e e.. this.
4bb80 5f 6f 73 63 69 6c 6c 61 74 6f 72 2e 63 6f 6e 6e _oscillator.conn
4bb90 65 63 74 28 74 68 69 73 2e 6f 75 74 70 75 74 29 ect(this.output)
4bba0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
4bbb0 66 72 65 71 75 65 6e 63 79 2e 63 6f 6e 6e 65 63 frequency.connec
4bbc0 74 28 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 t(this._oscillat
4bbd0 6f 72 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a 09 or.frequency);..
4bbe0 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 74 this.det
4bbf0 75 6e 65 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 une.connect(this
4bc00 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 2e 64 65 74 ._oscillator.det
4bc10 75 6e 65 29 3b 0a 09 20 20 20 20 20 20 20 20 2f une);.. /
4bc20 2f 73 74 61 72 74 20 74 68 65 20 6f 73 63 69 6c /start the oscil
4bc30 6c 61 74 6f 72 0a 09 20 20 20 20 20 20 20 20 74 lator.. t
4bc40 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 2e his._oscillator.
4bc50 73 74 61 72 74 28 74 68 69 73 2e 74 6f 53 65 63 start(this.toSec
4bc60 6f 6e 64 73 28 74 69 6d 65 29 29 3b 0a 09 20 20 onds(time));..
4bc70 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
4bc80 20 2a 20 20 73 74 6f 70 20 74 68 65 20 6f 73 63 * stop the osc
4bc90 69 6c 6c 61 74 6f 72 0a 09 09 20 2a 20 20 40 70 illator... * @p
4bca0 72 69 76 61 74 65 0a 09 09 20 2a 20 20 40 70 61 rivate... * @pa
4bcb0 72 61 6d 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d ram {Time} [tim
4bcc0 65 3d 6e 6f 77 5d 20 28 6f 70 74 69 6f 6e 61 6c e=now] (optional
4bcd0 29 20 74 69 6d 69 6e 67 20 70 61 72 61 6d 65 74 ) timing paramet
4bce0 65 72 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e er... * @return
4bcf0 73 20 7b 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 s {Tone.Oscillat
4bd00 6f 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 or} this... */..
4bd10 20 20 20 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 Tone.Oscilla
4bd20 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 73 tor.prototype._s
4bd30 74 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 top = function (
4bd40 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 time) {..
4bd50 20 69 66 20 28 74 68 69 73 2e 5f 6f 73 63 69 6c if (this._oscil
4bd60 6c 61 74 6f 72 29 20 7b 0a 09 20 20 20 20 20 20 lator) {..
4bd70 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 this._osci
4bd80 6c 6c 61 74 6f 72 2e 73 74 6f 70 28 74 68 69 73 llator.stop(this
4bd90 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 29 .toSeconds(time)
4bda0 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
4bdb0 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 this._oscillator
4bdc0 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
4bdd0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 }.. ret
4bde0 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
4bdf0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
4be00 20 53 79 6e 63 20 74 68 65 20 73 69 67 6e 61 6c Sync the signal
4be10 20 74 6f 20 74 68 65 20 54 72 61 6e 73 70 6f 72 to the Transpor
4be20 74 27 73 20 62 70 6d 2e 20 41 6e 79 20 63 68 61 t's bpm. Any cha
4be30 6e 67 65 73 20 74 6f 20 74 68 65 20 74 72 61 6e nges to the tran
4be40 73 70 6f 72 74 73 20 62 70 6d 2c 0a 09 09 20 2a sports bpm,... *
4be50 20 20 77 69 6c 6c 20 61 6c 73 6f 20 61 66 66 65 will also affe
4be60 63 74 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f ct the oscillato
4be70 72 73 20 66 72 65 71 75 65 6e 63 79 2e 20 0a 09 rs frequency. ..
4be80 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 . * @returns {T
4be90 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 7d 20 one.Oscillator}
4bea0 74 68 69 73 0a 09 09 20 2a 20 20 40 65 78 61 6d this... * @exam
4beb0 70 6c 65 0a 09 09 20 2a 20 54 6f 6e 65 2e 54 72 ple... * Tone.Tr
4bec0 61 6e 73 70 6f 72 74 2e 62 70 6d 2e 76 61 6c 75 ansport.bpm.valu
4bed0 65 20 3d 20 31 32 30 3b 0a 09 09 20 2a 20 6f 73 e = 120;... * os
4bee0 63 2e 66 72 65 71 75 65 6e 63 79 2e 76 61 6c 75 c.frequency.valu
4bef0 65 20 3d 20 34 34 30 3b 0a 09 09 20 2a 20 2f 2f e = 440;... * //
4bf00 74 68 65 20 72 61 74 69 6f 6e 20 62 65 74 77 65 the ration betwe
4bf10 65 6e 20 74 68 65 20 62 70 6d 20 61 6e 64 20 74 en the bpm and t
4bf20 68 65 20 66 72 65 71 75 65 6e 63 79 20 77 69 6c he frequency wil
4bf30 6c 20 62 65 20 6d 61 69 6e 74 61 69 6e 65 64 0a l be maintained.
4bf40 09 09 20 2a 20 6f 73 63 2e 73 79 6e 63 46 72 65 .. * osc.syncFre
4bf50 71 75 65 6e 63 79 28 29 3b 0a 09 09 20 2a 20 54 quency();... * T
4bf60 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e 62 70 one.Transport.bp
4bf70 6d 2e 76 61 6c 75 65 20 3d 20 32 34 30 3b 20 0a m.value = 240; .
4bf80 09 09 20 2a 20 2f 2f 20 74 68 65 20 66 72 65 71 .. * // the freq
4bf90 75 65 6e 63 79 20 6f 66 20 74 68 65 20 6f 73 63 uency of the osc
4bfa0 69 6c 6c 61 74 6f 72 20 69 73 20 64 6f 75 62 6c illator is doubl
4bfb0 65 64 20 74 6f 20 38 38 30 0a 09 09 20 2a 2f 0a ed to 880... */.
4bfc0 09 20 20 20 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c . Tone.Oscill
4bfd0 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73 ator.prototype.s
4bfe0 79 6e 63 46 72 65 71 75 65 6e 63 79 20 3d 20 66 yncFrequency = f
4bff0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
4c000 20 20 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e 73 Tone.Trans
4c010 70 6f 72 74 2e 73 79 6e 63 53 69 67 6e 61 6c 28 port.syncSignal(
4c020 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 29 3b this.frequency);
4c030 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
4c040 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
4c050 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 55 6e /**... * Un
4c060 73 79 6e 63 20 74 68 65 20 6f 73 63 69 6c 6c 61 sync the oscilla
4c070 74 6f 72 27 73 20 66 72 65 71 75 65 6e 63 79 20 tor's frequency
4c080 66 72 6f 6d 20 74 68 65 20 54 72 61 6e 73 70 6f from the Transpo
4c090 72 74 2e 20 0a 09 09 20 2a 20 20 53 65 65 20 54 rt. ... * See T
4c0a0 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 2e 73 one.Oscillator.s
4c0b0 79 6e 63 46 72 65 71 75 65 6e 63 79 0a 09 09 20 yncFrequency...
4c0c0 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
4c0d0 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 7d 20 74 68 e.Oscillator} th
4c0e0 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
4c0f0 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 ne.Oscillator.pr
4c100 6f 74 6f 74 79 70 65 2e 75 6e 73 79 6e 63 46 72 ototype.unsyncFr
4c110 65 71 75 65 6e 63 79 20 3d 20 66 75 6e 63 74 69 equency = functi
4c120 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
4c130 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e Tone.Transport.
4c140 75 6e 73 79 6e 63 53 69 67 6e 61 6c 28 74 68 69 unsyncSignal(thi
4c150 73 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a 09 20 s.frequency);..
4c160 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
4c170 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
4c180 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 74 79 /**... * The ty
4c190 70 65 20 6f 66 20 74 68 65 20 6f 73 63 69 6c 6c pe of the oscill
4c1a0 61 74 6f 72 3a 20 65 69 74 68 65 72 20 73 69 6e ator: either sin
4c1b0 65 2c 20 73 71 75 61 72 65 2c 20 74 72 69 61 6e e, square, trian
4c1c0 67 6c 65 2c 20 6f 72 20 73 61 77 74 6f 6f 74 68 gle, or sawtooth
4c1d0 2e 20 41 6c 73 6f 20 63 61 70 61 62 6c 65 20 6f . Also capable o
4c1e0 66 0a 09 09 20 2a 20 73 65 74 74 69 6e 67 20 74 f... * setting t
4c1f0 68 65 20 66 69 72 73 74 20 78 20 6e 75 6d 62 65 he first x numbe
4c200 72 20 6f 66 20 70 61 72 74 69 61 6c 73 20 6f 66 r of partials of
4c210 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 2e the oscillator.
4c220 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a 20 22 73 For example: "s
4c230 69 6e 65 34 22 20 77 6f 75 6c 64 0a 09 09 20 2a ine4" would... *
4c240 20 73 65 74 20 62 65 20 74 68 65 20 66 69 72 73 set be the firs
4c250 74 20 34 20 70 61 72 74 69 61 6c 73 20 6f 66 20 t 4 partials of
4c260 74 68 65 20 73 69 6e 65 20 77 61 76 65 20 61 6e the sine wave an
4c270 64 20 22 74 72 69 61 6e 67 6c 65 38 22 20 77 6f d "triangle8" wo
4c280 75 6c 64 20 73 65 74 20 74 68 65 20 66 69 72 73 uld set the firs
4c290 74 0a 09 09 20 2a 20 38 20 70 61 72 74 69 61 6c t... * 8 partial
4c2a0 73 20 6f 66 20 74 68 65 20 74 72 69 61 6e 67 6c s of the triangl
4c2b0 65 20 77 61 76 65 2e 0a 09 09 20 2a 20 3c 62 72 e wave.... * <br
4c2c0 3e 3c 62 72 3e 20 0a 09 09 20 2a 20 55 73 65 73 ><br> ... * Uses
4c2d0 20 50 65 72 69 6f 64 69 63 57 61 76 65 20 69 6e PeriodicWave in
4c2e0 74 65 72 6e 61 6c 6c 79 20 65 76 65 6e 20 66 6f ternally even fo
4c2f0 72 20 6e 61 74 69 76 65 20 74 79 70 65 73 20 73 r native types s
4c300 6f 20 74 68 61 74 20 69 74 20 63 61 6e 20 73 65 o that it can se
4c310 74 20 74 68 65 20 70 68 61 73 65 2e 20 0a 09 09 t the phase. ...
4c320 20 2a 20 50 65 72 69 6f 64 69 63 57 61 76 65 20 * PeriodicWave
4c330 65 71 75 61 74 69 6f 6e 73 20 61 72 65 20 66 72 equations are fr
4c340 6f 6d 20 74 68 65 20 0a 09 09 20 2a 20 5b 57 65 om the ... * [We
4c350 62 6b 69 74 20 57 65 62 20 41 75 64 69 6f 20 69 bkit Web Audio i
4c360 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 5d 28 68 mplementation](h
4c370 74 74 70 73 3a 2f 2f 63 6f 64 65 2e 67 6f 6f 67 ttps://code.goog
4c380 6c 65 2e 63 6f 6d 2f 70 2f 63 68 72 6f 6d 69 75 le.com/p/chromiu
4c390 6d 2f 63 6f 64 65 73 65 61 72 63 68 23 63 68 72 m/codesearch#chr
4c3a0 6f 6d 69 75 6d 2f 73 72 63 2f 74 68 69 72 64 5f omium/src/third_
4c3b0 70 61 72 74 79 2f 57 65 62 4b 69 74 2f 53 6f 75 party/WebKit/Sou
4c3c0 72 63 65 2f 6d 6f 64 75 6c 65 73 2f 77 65 62 61 rce/modules/weba
4c3d0 75 64 69 6f 2f 50 65 72 69 6f 64 69 63 57 61 76 udio/PeriodicWav
4c3e0 65 2e 63 70 70 26 73 71 3d 70 61 63 6b 61 67 65 e.cpp&sq=package
4c3f0 3a 63 68 72 6f 6d 69 75 6d 29 2e 0a 09 09 20 2a :chromium).... *
4c400 20 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f ... * @memberO
4c410 66 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f f Tone.Oscillato
4c420 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 73 r#... * @type {s
4c430 74 72 69 6e 67 7d 0a 09 09 20 2a 20 40 6e 61 6d tring}... * @nam
4c440 65 20 74 79 70 65 0a 09 09 20 2a 20 40 65 78 61 e type... * @exa
4c450 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f 73 65 74 20 mple... * //set
4c460 69 74 20 74 6f 20 61 20 73 71 75 61 72 65 20 77 it to a square w
4c470 61 76 65 0a 09 09 20 2a 20 6f 73 63 2e 74 79 70 ave... * osc.typ
4c480 65 20 3d 20 22 73 71 75 61 72 65 22 3b 0a 09 09 e = "square";...
4c490 20 2a 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
4c4a0 20 2f 2f 73 65 74 20 74 68 65 20 66 69 72 73 74 //set the first
4c4b0 20 36 20 70 61 72 74 69 61 6c 73 20 6f 66 20 61 6 partials of a
4c4c0 20 73 61 77 74 6f 6f 74 68 20 77 61 76 65 0a 09 sawtooth wave..
4c4d0 09 20 2a 20 6f 73 63 2e 74 79 70 65 20 3d 20 22 . * osc.type = "
4c4e0 73 61 77 74 6f 6f 74 68 36 22 3b 0a 09 09 20 2a sawtooth6";... *
4c4f0 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
4c500 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
4c510 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f e.Oscillator.pro
4c520 74 6f 74 79 70 65 2c 20 27 74 79 70 65 27 2c 20 totype, 'type',
4c530 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 {.. get:
4c540 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
4c550 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
4c560 6e 20 74 68 69 73 2e 5f 74 79 70 65 3b 0a 09 20 n this._type;..
4c570 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 },..
4c580 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e set: function
4c590 20 28 74 79 70 65 29 20 7b 0a 09 20 20 20 20 20 (type) {..
4c5a0 20 20 20 20 20 20 20 76 61 72 20 63 6f 65 66 73 var coefs
4c5b0 20 3d 20 74 68 69 73 2e 5f 67 65 74 52 65 61 6c = this._getReal
4c5c0 49 6d 61 67 69 6e 61 72 79 28 74 79 70 65 2c 20 Imaginary(type,
4c5d0 74 68 69 73 2e 5f 70 68 61 73 65 29 3b 0a 09 20 this._phase);..
4c5e0 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 70 var p
4c5f0 65 72 69 6f 64 69 63 57 61 76 65 20 3d 20 74 68 eriodicWave = th
4c600 69 73 2e 63 6f 6e 74 65 78 74 2e 63 72 65 61 74 is.context.creat
4c610 65 50 65 72 69 6f 64 69 63 57 61 76 65 28 63 6f ePeriodicWave(co
4c620 65 66 73 5b 30 5d 2c 20 63 6f 65 66 73 5b 31 5d efs[0], coefs[1]
4c630 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
4c640 74 68 69 73 2e 5f 77 61 76 65 20 3d 20 70 65 72 this._wave = per
4c650 69 6f 64 69 63 57 61 76 65 3b 0a 09 20 20 20 20 iodicWave;..
4c660 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
4c670 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 20 21 3d 3d ._oscillator !==
4c680 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 null) {..
4c690 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
4c6a0 6f 73 63 69 6c 6c 61 74 6f 72 2e 73 65 74 50 65 oscillator.setPe
4c6b0 72 69 6f 64 69 63 57 61 76 65 28 74 68 69 73 2e riodicWave(this.
4c6c0 5f 77 61 76 65 29 3b 0a 09 20 20 20 20 20 20 20 _wave);..
4c6d0 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
4c6e0 20 20 20 20 74 68 69 73 2e 5f 74 79 70 65 20 3d this._type =
4c6f0 20 74 79 70 65 3b 0a 09 20 20 20 20 20 20 20 20 type;..
4c700 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
4c710 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 6e /**... * Return
4c720 73 20 74 68 65 20 72 65 61 6c 20 61 6e 64 20 69 s the real and i
4c730 6d 61 67 69 6e 61 72 79 20 63 6f 6d 70 6f 6e 65 maginary compone
4c740 6e 74 73 20 62 61 73 65 64 20 0a 09 09 20 2a 20 nts based ... *
4c750 20 6f 6e 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 on the oscillat
4c760 6f 72 20 74 79 70 65 2e 0a 09 09 20 2a 20 20 40 or type.... * @
4c770 72 65 74 75 72 6e 73 20 7b 41 72 72 61 79 7d 20 returns {Array}
4c780 5b 72 65 61 6c 2c 20 69 6d 61 67 69 6e 61 72 79 [real, imaginary
4c790 5d 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 ]... * @private
4c7a0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
4c7b0 2e 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 .Oscillator.prot
4c7c0 6f 74 79 70 65 2e 5f 67 65 74 52 65 61 6c 49 6d otype._getRealIm
4c7d0 61 67 69 6e 61 72 79 20 3d 20 66 75 6e 63 74 69 aginary = functi
4c7e0 6f 6e 20 28 74 79 70 65 2c 20 70 68 61 73 65 29 on (type, phase)
4c7f0 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
4c800 66 66 74 53 69 7a 65 20 3d 20 34 30 39 36 3b 0a fftSize = 4096;.
4c810 09 20 20 20 20 20 20 20 20 76 61 72 20 70 65 72 . var per
4c820 69 6f 64 69 63 57 61 76 65 53 69 7a 65 20 3d 20 iodicWaveSize =
4c830 66 66 74 53 69 7a 65 20 2f 20 32 3b 0a 09 20 20 fftSize / 2;..
4c840 20 20 20 20 20 20 76 61 72 20 72 65 61 6c 20 3d var real =
4c850 20 6e 65 77 20 46 6c 6f 61 74 33 32 41 72 72 61 new Float32Arra
4c860 79 28 70 65 72 69 6f 64 69 63 57 61 76 65 53 69 y(periodicWaveSi
4c870 7a 65 29 3b 0a 09 20 20 20 20 20 20 20 20 76 61 ze);.. va
4c880 72 20 69 6d 61 67 20 3d 20 6e 65 77 20 46 6c 6f r imag = new Flo
4c890 61 74 33 32 41 72 72 61 79 28 70 65 72 69 6f 64 at32Array(period
4c8a0 69 63 57 61 76 65 53 69 7a 65 29 3b 0a 09 20 20 icWaveSize);..
4c8b0 20 20 20 20 20 20 76 61 72 20 70 61 72 74 69 61 var partia
4c8c0 6c 43 6f 75 6e 74 20 3d 20 31 3b 0a 09 20 20 20 lCount = 1;..
4c8d0 20 20 20 20 20 69 66 20 28 74 79 70 65 20 3d 3d if (type ==
4c8e0 3d 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f = Tone.Oscillato
4c8f0 72 2e 54 79 70 65 2e 43 75 73 74 6f 6d 29 20 7b r.Type.Custom) {
4c900 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 70 61 .. pa
4c910 72 74 69 61 6c 43 6f 75 6e 74 20 3d 20 74 68 69 rtialCount = thi
4c920 73 2e 5f 70 61 72 74 69 61 6c 73 2e 6c 65 6e 67 s._partials.leng
4c930 74 68 20 2b 20 31 3b 0a 09 20 20 20 20 20 20 20 th + 1;..
4c940 20 20 20 20 20 70 65 72 69 6f 64 69 63 57 61 76 periodicWav
4c950 65 53 69 7a 65 20 3d 20 70 61 72 74 69 61 6c 43 eSize = partialC
4c960 6f 75 6e 74 3b 0a 09 20 20 20 20 20 20 20 20 7d ount;.. }
4c970 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
4c980 20 20 20 20 20 76 61 72 20 70 61 72 74 69 61 6c var partial
4c990 20 3d 20 2f 5e 28 73 69 6e 65 7c 74 72 69 61 6e = /^(sine|trian
4c9a0 67 6c 65 7c 73 71 75 61 72 65 7c 73 61 77 74 6f gle|square|sawto
4c9b0 6f 74 68 29 28 5c 64 2b 29 24 2f 2e 65 78 65 63 oth)(\d+)$/.exec
4c9c0 28 74 79 70 65 29 3b 0a 09 20 20 20 20 20 20 20 (type);..
4c9d0 20 20 20 20 20 69 66 20 28 70 61 72 74 69 61 6c if (partial
4c9e0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
4c9f0 20 20 20 20 20 70 61 72 74 69 61 6c 43 6f 75 6e partialCoun
4ca00 74 20 3d 20 70 61 72 73 65 49 6e 74 28 70 61 72 t = parseInt(par
4ca10 74 69 61 6c 5b 32 5d 29 20 2b 20 31 3b 0a 09 20 tial[2]) + 1;..
4ca20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
4ca30 79 70 65 20 3d 20 70 61 72 74 69 61 6c 5b 31 5d ype = partial[1]
4ca40 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
4ca50 20 20 20 70 61 72 74 69 61 6c 43 6f 75 6e 74 20 partialCount
4ca60 3d 20 4d 61 74 68 2e 6d 61 78 28 70 61 72 74 69 = Math.max(parti
4ca70 61 6c 43 6f 75 6e 74 2c 20 32 29 3b 0a 09 20 20 alCount, 2);..
4ca80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 65 pe
4ca90 72 69 6f 64 69 63 57 61 76 65 53 69 7a 65 20 3d riodicWaveSize =
4caa0 20 70 61 72 74 69 61 6c 43 6f 75 6e 74 3b 0a 09 partialCount;..
4cab0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
4cac0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
4cad0 20 20 66 6f 72 20 28 76 61 72 20 6e 20 3d 20 31 for (var n = 1
4cae0 3b 20 6e 20 3c 20 70 65 72 69 6f 64 69 63 57 61 ; n < periodicWa
4caf0 76 65 53 69 7a 65 3b 20 2b 2b 6e 29 20 7b 0a 09 veSize; ++n) {..
4cb00 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
4cb10 70 69 46 61 63 74 6f 72 20 3d 20 32 20 2f 20 28 piFactor = 2 / (
4cb20 6e 20 2a 20 4d 61 74 68 2e 50 49 29 3b 0a 09 20 n * Math.PI);..
4cb30 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 62 var b
4cb40 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 73 ;.. s
4cb50 77 69 74 63 68 20 28 74 79 70 65 29 20 7b 0a 09 witch (type) {..
4cb60 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case
4cb70 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 Tone.Oscillator
4cb80 2e 54 79 70 65 2e 53 69 6e 65 3a 0a 09 20 20 20 .Type.Sine:..
4cb90 20 20 20 20 20 20 20 20 20 20 20 20 20 62 20 3d b =
4cba0 20 6e 20 3c 3d 20 70 61 72 74 69 61 6c 43 6f 75 n <= partialCou
4cbb0 6e 74 20 3f 20 31 20 3a 20 30 3b 0a 09 20 20 20 nt ? 1 : 0;..
4cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 bre
4cbd0 61 6b 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ak;..
4cbe0 20 63 61 73 65 20 54 6f 6e 65 2e 4f 73 63 69 6c case Tone.Oscil
4cbf0 6c 61 74 6f 72 2e 54 79 70 65 2e 53 71 75 61 72 lator.Type.Squar
4cc00 65 3a 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 e:..
4cc10 20 20 20 20 62 20 3d 20 6e 20 26 20 31 20 3f 20 b = n & 1 ?
4cc20 32 20 2a 20 70 69 46 61 63 74 6f 72 20 3a 20 30 2 * piFactor : 0
4cc30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
4cc40 20 20 20 62 72 65 61 6b 3b 0a 09 20 20 20 20 20 break;..
4cc50 20 20 20 20 20 20 20 63 61 73 65 20 54 6f 6e 65 case Tone
4cc60 2e 4f 73 63 69 6c 6c 61 74 6f 72 2e 54 79 70 65 .Oscillator.Type
4cc70 2e 53 61 77 74 6f 6f 74 68 3a 0a 09 20 20 20 20 .Sawtooth:..
4cc80 20 20 20 20 20 20 20 20 20 20 20 20 62 20 3d 20 b =
4cc90 70 69 46 61 63 74 6f 72 20 2a 20 28 6e 20 26 20 piFactor * (n &
4cca0 31 20 3f 20 31 20 3a 20 2d 31 29 3b 0a 09 20 20 1 ? 1 : -1);..
4ccb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
4ccc0 65 61 6b 3b 0a 09 20 20 20 20 20 20 20 20 20 20 eak;..
4ccd0 20 20 63 61 73 65 20 54 6f 6e 65 2e 4f 73 63 69 case Tone.Osci
4cce0 6c 6c 61 74 6f 72 2e 54 79 70 65 2e 54 72 69 61 llator.Type.Tria
4ccf0 6e 67 6c 65 3a 0a 09 20 20 20 20 20 20 20 20 20 ngle:..
4cd00 20 20 20 20 20 20 20 69 66 20 28 6e 20 26 20 31 if (n & 1
4cd10 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
4cd20 20 20 20 20 20 20 20 20 20 62 20 3d 20 32 20 2a b = 2 *
4cd30 20 28 70 69 46 61 63 74 6f 72 20 2a 20 70 69 46 (piFactor * piF
4cd40 61 63 74 6f 72 29 20 2a 20 28 6e 20 2d 20 31 20 actor) * (n - 1
4cd50 3e 3e 20 31 20 26 20 31 20 3f 20 2d 31 20 3a 20 >> 1 & 1 ? -1 :
4cd60 31 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 1);..
4cd70 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
4cd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4cd90 20 20 20 62 20 3d 20 30 3b 0a 09 20 20 20 20 20 b = 0;..
4cda0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
4cdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br
4cdc0 65 61 6b 3b 0a 09 20 20 20 20 20 20 20 20 20 20 eak;..
4cdd0 20 20 63 61 73 65 20 54 6f 6e 65 2e 4f 73 63 69 case Tone.Osci
4cde0 6c 6c 61 74 6f 72 2e 54 79 70 65 2e 43 75 73 74 llator.Type.Cust
4cdf0 6f 6d 3a 0a 09 20 20 20 20 20 20 20 20 20 20 20 om:..
4ce00 20 20 20 20 20 62 20 3d 20 74 68 69 73 2e 5f 70 b = this._p
4ce10 61 72 74 69 61 6c 73 5b 6e 20 2d 20 31 5d 3b 0a artials[n - 1];.
4ce20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
4ce30 20 62 72 65 61 6b 3b 0a 09 20 20 20 20 20 20 20 break;..
4ce40 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 09 20 default:..
4ce50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
4ce60 68 72 6f 77 20 6e 65 77 20 54 79 70 65 45 72 72 hrow new TypeErr
4ce70 6f 72 28 27 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 or('Tone.Oscilla
4ce80 74 6f 72 3a 20 69 6e 76 61 6c 69 64 20 74 79 70 tor: invalid typ
4ce90 65 3a 20 27 20 2b 20 74 79 70 65 29 3b 0a 09 20 e: ' + type);..
4cea0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
4ceb0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 20 if (b
4cec0 21 3d 3d 20 30 29 20 7b 0a 09 20 20 20 20 20 20 !== 0) {..
4ced0 20 20 20 20 20 20 20 20 20 20 72 65 61 6c 5b 6e real[n
4cee0 5d 20 3d 20 2d 62 20 2a 20 4d 61 74 68 2e 73 69 ] = -b * Math.si
4cef0 6e 28 70 68 61 73 65 20 2a 20 6e 29 3b 0a 09 20 n(phase * n);..
4cf00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
4cf10 6d 61 67 5b 6e 5d 20 3d 20 62 20 2a 20 4d 61 74 mag[n] = b * Mat
4cf20 68 2e 63 6f 73 28 70 68 61 73 65 20 2a 20 6e 29 h.cos(phase * n)
4cf30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
4cf40 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
4cf50 20 20 20 20 20 20 20 20 20 72 65 61 6c 5b 6e 5d real[n]
4cf60 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 20 20 = 0;..
4cf70 20 20 20 20 20 20 20 69 6d 61 67 5b 6e 5d 20 3d imag[n] =
4cf80 20 30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 0;..
4cf90 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 }.. }..
4cfa0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5b 0a return [.
4cfb0 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 . rea
4cfc0 6c 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 l,..
4cfd0 69 6d 61 67 0a 09 20 20 20 20 20 20 20 20 5d 3b imag.. ];
4cfe0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
4cff0 2a 0a 09 09 20 2a 20 20 43 6f 6d 70 75 74 65 20 *... * Compute
4d000 74 68 65 20 69 6e 76 65 72 73 65 20 46 46 54 20 the inverse FFT
4d010 66 6f 72 20 61 20 67 69 76 65 6e 20 70 68 61 73 for a given phas
4d020 65 2e 09 0a 09 09 20 2a 20 20 40 70 61 72 61 6d e..... * @param
4d030 20 20 7b 46 6c 6f 61 74 33 32 41 72 72 61 79 7d {Float32Array}
4d040 20 20 72 65 61 6c 0a 09 09 20 2a 20 20 40 70 61 real... * @pa
4d050 72 61 6d 20 20 7b 46 6c 6f 61 74 33 32 41 72 72 ram {Float32Arr
4d060 61 79 7d 20 20 69 6d 61 67 20 0a 09 09 20 2a 20 ay} imag ... *
4d070 20 40 70 61 72 61 6d 20 20 7b 4e 6f 72 6d 61 6c @param {Normal
4d080 52 61 6e 67 65 7d 20 20 70 68 61 73 65 20 0a 09 Range} phase ..
4d090 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 41 . * @return {A
4d0a0 75 64 69 6f 52 61 6e 67 65 7d 0a 09 09 20 2a 20 udioRange}... *
4d0b0 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a @private... */.
4d0c0 09 20 20 20 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c . Tone.Oscill
4d0d0 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f ator.prototype._
4d0e0 69 6e 76 65 72 73 65 46 46 54 20 3d 20 66 75 6e inverseFFT = fun
4d0f0 63 74 69 6f 6e 20 28 72 65 61 6c 2c 20 69 6d 61 ction (real, ima
4d100 67 2c 20 70 68 61 73 65 29 20 7b 0a 09 20 20 20 g, phase) {..
4d110 20 20 20 20 20 76 61 72 20 73 75 6d 20 3d 20 30 var sum = 0
4d120 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 6c ;.. var l
4d130 65 6e 20 3d 20 72 65 61 6c 2e 6c 65 6e 67 74 68 en = real.length
4d140 3b 0a 09 20 20 20 20 20 20 20 20 66 6f 72 20 28 ;.. for (
4d150 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 6c var i = 0; i < l
4d160 65 6e 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 en; i++) {..
4d170 20 20 20 20 20 20 20 20 73 75 6d 20 2b 3d 20 72 sum += r
4d180 65 61 6c 5b 69 5d 20 2a 20 4d 61 74 68 2e 63 6f eal[i] * Math.co
4d190 73 28 69 20 2a 20 70 68 61 73 65 29 20 2b 20 69 s(i * phase) + i
4d1a0 6d 61 67 5b 69 5d 20 2a 20 4d 61 74 68 2e 73 69 mag[i] * Math.si
4d1b0 6e 28 69 20 2a 20 70 68 61 73 65 29 3b 0a 09 20 n(i * phase);..
4d1c0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
4d1d0 20 20 72 65 74 75 72 6e 20 73 75 6d 3b 0a 09 20 return sum;..
4d1e0 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
4d1f0 09 20 2a 20 20 52 65 74 75 72 6e 73 20 74 68 65 . * Returns the
4d200 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 65 20 6f initial value o
4d210 66 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 f the oscillator
4d220 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 .... * @return
4d230 20 7b 41 75 64 69 6f 52 61 6e 67 65 7d 0a 09 09 {AudioRange}...
4d240 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 * @private...
4d250 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4f 73 63 */.. Tone.Osc
4d260 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 illator.prototyp
4d270 65 2e 5f 67 65 74 49 6e 69 74 69 61 6c 56 61 6c e._getInitialVal
4d280 75 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 ue = function ()
4d290 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
4d2a0 63 6f 65 66 73 20 3d 20 74 68 69 73 2e 5f 67 65 coefs = this._ge
4d2b0 74 52 65 61 6c 49 6d 61 67 69 6e 61 72 79 28 74 tRealImaginary(t
4d2c0 68 69 73 2e 5f 74 79 70 65 2c 20 30 29 3b 0a 09 his._type, 0);..
4d2d0 20 20 20 20 20 20 20 20 76 61 72 20 72 65 61 6c var real
4d2e0 20 3d 20 63 6f 65 66 73 5b 30 5d 3b 0a 09 20 20 = coefs[0];..
4d2f0 20 20 20 20 20 20 76 61 72 20 69 6d 61 67 20 3d var imag =
4d300 20 63 6f 65 66 73 5b 31 5d 3b 0a 09 20 20 20 20 coefs[1];..
4d310 20 20 20 20 76 61 72 20 6d 61 78 56 61 6c 75 65 var maxValue
4d320 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 20 76 = 0;.. v
4d330 61 72 20 74 77 6f 50 69 20 3d 20 4d 61 74 68 2e ar twoPi = Math.
4d340 50 49 20 2a 20 32 3b 0a 09 20 20 20 20 20 20 20 PI * 2;..
4d350 20 2f 2f 63 68 65 63 6b 20 66 6f 72 20 70 65 61 //check for pea
4d360 6b 73 20 69 6e 20 38 20 70 6c 61 63 65 73 0a 09 ks in 8 places..
4d370 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 for (var
4d380 20 69 20 3d 20 30 3b 20 69 20 3c 20 38 3b 20 69 i = 0; i < 8; i
4d390 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ++) {..
4d3a0 20 20 20 6d 61 78 56 61 6c 75 65 20 3d 20 4d 61 maxValue = Ma
4d3b0 74 68 2e 6d 61 78 28 74 68 69 73 2e 5f 69 6e 76 th.max(this._inv
4d3c0 65 72 73 65 46 46 54 28 72 65 61 6c 2c 20 69 6d erseFFT(real, im
4d3d0 61 67 2c 20 69 20 2f 20 38 20 2a 20 74 77 6f 50 ag, i / 8 * twoP
4d3e0 69 29 2c 20 6d 61 78 56 61 6c 75 65 29 3b 0a 09 i), maxValue);..
4d3f0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
4d400 20 20 20 72 65 74 75 72 6e 20 2d 74 68 69 73 2e return -this.
4d410 5f 69 6e 76 65 72 73 65 46 46 54 28 72 65 61 6c _inverseFFT(real
4d420 2c 20 69 6d 61 67 2c 20 74 68 69 73 2e 5f 70 68 , imag, this._ph
4d430 61 73 65 29 20 2f 20 6d 61 78 56 61 6c 75 65 3b ase) / maxValue;
4d440 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
4d450 2a 0a 09 09 20 2a 20 54 68 65 20 70 61 72 74 69 *... * The parti
4d460 61 6c 73 20 6f 66 20 74 68 65 20 77 61 76 65 66 als of the wavef
4d470 6f 72 6d 2e 20 41 20 70 61 72 74 69 61 6c 20 72 orm. A partial r
4d480 65 70 72 65 73 65 6e 74 73 20 0a 09 09 20 2a 20 epresents ... *
4d490 74 68 65 20 61 6d 70 6c 69 74 75 64 65 20 61 74 the amplitude at
4d4a0 20 61 20 68 61 72 6d 6f 6e 69 63 2e 20 54 68 65 a harmonic. The
4d4b0 20 66 69 72 73 74 20 68 61 72 6d 6f 6e 69 63 20 first harmonic
4d4c0 69 73 20 74 68 65 20 0a 09 09 20 2a 20 66 75 6e is the ... * fun
4d4d0 64 61 6d 65 6e 74 61 6c 20 66 72 65 71 75 65 6e damental frequen
4d4e0 63 79 2c 20 74 68 65 20 73 65 63 6f 6e 64 20 69 cy, the second i
4d4f0 73 20 74 68 65 20 6f 63 74 61 76 65 20 61 6e 64 s the octave and
4d500 20 73 6f 20 6f 6e 0a 09 09 20 2a 20 66 6f 6c 6c so on... * foll
4d510 6f 77 69 6e 67 20 74 68 65 20 68 61 72 6d 6f 6e owing the harmon
4d520 69 63 20 73 65 72 69 65 73 2e 20 0a 09 09 20 2a ic series. ... *
4d530 20 53 65 74 74 69 6e 67 20 74 68 69 73 20 76 61 Setting this va
4d540 6c 75 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 lue will automat
4d550 69 63 61 6c 6c 79 20 73 65 74 20 74 68 65 20 74 ically set the t
4d560 79 70 65 20 74 6f 20 22 63 75 73 74 6f 6d 22 2e ype to "custom".
4d570 20 0a 09 09 20 2a 20 54 68 65 20 76 61 6c 75 65 ... * The value
4d580 20 69 73 20 61 6e 20 65 6d 70 74 79 20 61 72 72 is an empty arr
4d590 61 79 20 77 68 65 6e 20 74 68 65 20 74 79 70 65 ay when the type
4d5a0 20 69 73 20 6e 6f 74 20 22 63 75 73 74 6f 6d 22 is not "custom"
4d5b0 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f . ... * @memberO
4d5c0 66 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f f Tone.Oscillato
4d5d0 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 41 r#... * @type {A
4d5e0 72 72 61 79 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 rray}... * @name
4d5f0 20 70 61 72 74 69 61 6c 73 0a 09 09 20 2a 20 40 partials... * @
4d600 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 6f 73 63 example... * osc
4d610 2e 70 61 72 74 69 61 6c 73 20 3d 20 5b 31 2c 20 .partials = [1,
4d620 30 2e 32 2c 20 30 2e 30 31 5d 3b 0a 09 09 20 2a 0.2, 0.01];... *
4d630 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
4d640 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
4d650 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f e.Oscillator.pro
4d660 74 6f 74 79 70 65 2c 20 27 70 61 72 74 69 61 6c totype, 'partial
4d670 73 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 s', {.. g
4d680 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
4d690 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 {.. i
4d6a0 66 20 28 74 68 69 73 2e 5f 74 79 70 65 20 21 3d f (this._type !=
4d6b0 3d 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f = Tone.Oscillato
4d6c0 72 2e 54 79 70 65 2e 43 75 73 74 6f 6d 29 20 7b r.Type.Custom) {
4d6d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
4d6e0 20 20 72 65 74 75 72 6e 20 5b 5d 3b 0a 09 20 20 return [];..
4d6f0 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
4d700 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
4d710 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
4d720 5f 70 61 72 74 69 61 6c 73 3b 0a 09 20 20 20 20 _partials;..
4d730 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
4d740 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 },.. s
4d750 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 70 61 et: function (pa
4d760 72 74 69 61 6c 73 29 20 7b 0a 09 20 20 20 20 20 rtials) {..
4d770 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 61 72 this._par
4d780 74 69 61 6c 73 20 3d 20 70 61 72 74 69 61 6c 73 tials = partials
4d790 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 ;.. t
4d7a0 68 69 73 2e 74 79 70 65 20 3d 20 54 6f 6e 65 2e his.type = Tone.
4d7b0 4f 73 63 69 6c 6c 61 74 6f 72 2e 54 79 70 65 2e Oscillator.Type.
4d7c0 43 75 73 74 6f 6d 3b 0a 09 20 20 20 20 20 20 20 Custom;..
4d7d0 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
4d7e0 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 70 68 /**... * The ph
4d7f0 61 73 65 20 6f 66 20 74 68 65 20 6f 73 63 69 6c ase of the oscil
4d800 6c 61 74 6f 72 20 69 6e 20 64 65 67 72 65 65 73 lator in degrees
4d810 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f . ... * @memberO
4d820 66 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f f Tone.Oscillato
4d830 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 44 r#... * @type {D
4d840 65 67 72 65 65 73 7d 0a 09 09 20 2a 20 40 6e 61 egrees}... * @na
4d850 6d 65 20 70 68 61 73 65 0a 09 09 20 2a 20 40 65 me phase... * @e
4d860 78 61 6d 70 6c 65 0a 09 09 20 2a 20 6f 73 63 2e xample... * osc.
4d870 70 68 61 73 65 20 3d 20 31 38 30 3b 20 2f 2f 66 phase = 180; //f
4d880 6c 69 70 73 20 74 68 65 20 70 68 61 73 65 20 6f lips the phase o
4d890 66 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 f the oscillator
4d8a0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 ... */.. Obje
4d8b0 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
4d8c0 79 28 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f y(Tone.Oscillato
4d8d0 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 70 68 r.prototype, 'ph
4d8e0 61 73 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 ase', {..
4d8f0 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
4d900 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
4d910 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 70 68 return this._ph
4d920 61 73 65 20 2a 20 28 31 38 30 20 2f 20 4d 61 74 ase * (180 / Mat
4d930 68 2e 50 49 29 3b 0a 09 20 20 20 20 20 20 20 20 h.PI);..
4d940 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a },.. set:
4d950 20 66 75 6e 63 74 69 6f 6e 20 28 70 68 61 73 65 function (phase
4d960 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
4d970 20 74 68 69 73 2e 5f 70 68 61 73 65 20 3d 20 70 this._phase = p
4d980 68 61 73 65 20 2a 20 4d 61 74 68 2e 50 49 20 2f hase * Math.PI /
4d990 20 31 38 30 3b 0a 09 20 20 20 20 20 20 20 20 20 180;..
4d9a0 20 20 20 2f 2f 72 65 73 65 74 20 74 68 65 20 74 //reset the t
4d9b0 79 70 65 0a 09 20 20 20 20 20 20 20 20 20 20 20 ype..
4d9c0 20 74 68 69 73 2e 74 79 70 65 20 3d 20 74 68 69 this.type = thi
4d9d0 73 2e 5f 74 79 70 65 3b 0a 09 20 20 20 20 20 20 s._type;..
4d9e0 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 }.. });..
4d9f0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 44 69 73 70 /**... * Disp
4da00 6f 73 65 20 61 6e 64 20 64 69 73 63 6f 6e 6e 65 ose and disconne
4da10 63 74 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 ct.... * @retur
4da20 6e 20 7b 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 n {Tone.Oscillat
4da30 6f 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 or} this... */..
4da40 20 20 20 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 Tone.Oscilla
4da50 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 tor.prototype.di
4da60 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e spose = function
4da70 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 () {.. T
4da80 6f 6e 65 2e 53 6f 75 72 63 65 2e 70 72 6f 74 6f one.Source.proto
4da90 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c type.dispose.cal
4daa0 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 l(this);..
4dab0 20 20 69 66 20 28 74 68 69 73 2e 5f 6f 73 63 69 if (this._osci
4dac0 6c 6c 61 74 6f 72 20 21 3d 3d 20 6e 75 6c 6c 29 llator !== null)
4dad0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
4dae0 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 this._oscillator
4daf0 2e 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 .disconnect();..
4db00 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
4db10 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 20 3d 20 6e ._oscillator = n
4db20 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a ull;.. }.
4db30 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 77 . this._w
4db40 61 76 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ave = null;..
4db50 20 20 20 20 20 74 68 69 73 2e 5f 77 72 69 74 61 this._writa
4db60 62 6c 65 28 5b 0a 09 20 20 20 20 20 20 20 20 20 ble([..
4db70 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 2c 0a 'frequency',.
4db80 09 20 20 20 20 20 20 20 20 20 20 20 20 27 64 65 . 'de
4db90 74 75 6e 65 27 0a 09 20 20 20 20 20 20 20 20 5d tune'.. ]
4dba0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
4dbb0 2e 66 72 65 71 75 65 6e 63 79 2e 64 69 73 70 6f .frequency.dispo
4dbc0 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
4dbd0 68 69 73 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 his.frequency =
4dbe0 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 null;.. t
4dbf0 68 69 73 2e 64 65 74 75 6e 65 2e 64 69 73 70 6f his.detune.dispo
4dc00 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
4dc10 68 69 73 2e 64 65 74 75 6e 65 20 3d 20 6e 75 6c his.detune = nul
4dc20 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
4dc30 2e 5f 70 61 72 74 69 61 6c 73 20 3d 20 6e 75 6c ._partials = nul
4dc40 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 l;.. retu
4dc50 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
4dc60 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e .. return Ton
4dc70 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 3b 0a 09 7d e.Oscillator;..}
4dc80 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
4dc90 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
4dca0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 /**... * @cla
4dcb0 73 73 20 54 6f 6e 65 2e 5a 65 72 6f 20 6f 75 74 ss Tone.Zero out
4dcc0 70 75 74 73 20 30 27 73 20 61 74 20 61 75 64 69 puts 0's at audi
4dcd0 6f 2d 72 61 74 65 2e 20 54 68 65 20 72 65 61 73 o-rate. The reas
4dce0 6f 6e 20 74 68 69 73 20 68 61 73 20 74 6f 20 62 on this has to b
4dcf0 65 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 69 e... * i
4dd00 74 27 73 20 6f 77 6e 20 63 6c 61 73 73 20 69 73 t's own class is
4dd10 20 74 68 61 74 20 6d 61 6e 79 20 62 72 6f 77 73 that many brows
4dd20 65 72 73 20 6f 70 74 69 6d 69 7a 65 20 6f 75 74 ers optimize out
4dd30 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 0a 09 09 20 Tone.Signal...
4dd40 2a 20 20 20 20 20 20 20 20 20 77 69 74 68 20 61 * with a
4dd50 20 76 61 6c 75 65 20 6f 66 20 30 20 61 6e 64 20 value of 0 and
4dd60 77 69 6c 6c 20 6e 6f 74 20 70 72 6f 63 65 73 73 will not process
4dd70 20 6e 6f 64 65 73 20 66 75 72 74 68 65 72 20 64 nodes further d
4dd80 6f 77 6e 20 74 68 65 20 67 72 61 70 68 2e 20 0a own the graph. .
4dd90 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b .. * @extends {
4dda0 54 6f 6e 65 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 Tone}... */..
4ddb0 20 54 6f 6e 65 2e 5a 65 72 6f 20 3d 20 66 75 6e Tone.Zero = fun
4ddc0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
4ddd0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
4dde0 68 65 20 67 61 69 6e 20 6e 6f 64 65 0a 09 09 09 he gain node....
4ddf0 20 2a 20 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 * @type {Tone
4de00 2e 47 61 69 6e 7d 0a 09 09 09 20 2a 20 20 40 70 .Gain}.... * @p
4de10 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
4de20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 67 61 69 this._gai
4de30 6e 20 3d 20 74 68 69 73 2e 69 6e 70 75 74 20 3d n = this.input =
4de40 20 74 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 6e this.output = n
4de50 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 29 3b 0a ew Tone.Gain();.
4de60 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 5a 65 . Tone.Ze
4de70 72 6f 2e 5f 7a 65 72 6f 73 2e 63 6f 6e 6e 65 63 ro._zeros.connec
4de80 74 28 74 68 69 73 2e 5f 67 61 69 6e 29 3b 0a 09 t(this._gain);..
4de90 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 };.. Tone
4dea0 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 5a 65 72 .extend(Tone.Zer
4deb0 6f 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 o);.. /**...
4dec0 2a 20 20 63 6c 65 61 6e 20 75 70 0a 09 09 20 2a * clean up... *
4ded0 20 20 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 @return {Tone
4dee0 2e 5a 65 72 6f 7d 20 20 74 68 69 73 0a 09 09 20 .Zero} this...
4def0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 5a 65 72 */.. Tone.Zer
4df00 6f 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 o.prototype.disp
4df10 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ose = function (
4df20 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e ) {.. Ton
4df30 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 e.prototype.disp
4df40 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a ose.call(this);.
4df50 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 67 . this._g
4df60 61 69 6e 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 ain.dispose();..
4df70 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 67 61 this._ga
4df80 69 6e 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 in = null;..
4df90 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
4dfa0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
4dfb0 2a 0a 09 09 20 2a 20 20 47 65 6e 65 72 61 74 65 *... * Generate
4dfc0 73 20 61 20 63 6f 6e 73 74 61 6e 74 20 6f 75 74 s a constant out
4dfd0 70 75 74 20 6f 66 20 30 2e 20 54 68 69 73 20 69 put of 0. This i
4dfe0 73 20 73 6f 20 0a 09 09 20 2a 20 20 74 68 65 20 s so ... * the
4dff0 70 72 6f 63 65 73 73 69 6e 67 20 67 72 61 70 68 processing graph
4e000 20 64 6f 65 73 6e 27 74 20 6f 70 74 69 6d 69 7a doesn't optimiz
4e010 65 20 6f 75 74 20 74 68 69 73 0a 09 09 20 2a 20 e out this... *
4e020 20 73 65 67 6d 65 6e 74 20 6f 66 20 74 68 65 20 segment of the
4e030 67 72 61 70 68 2e 20 0a 09 09 20 2a 20 20 40 73 graph. ... * @s
4e040 74 61 74 69 63 0a 09 09 20 2a 20 20 40 70 72 69 tatic... * @pri
4e050 76 61 74 65 0a 09 09 20 2a 20 20 40 63 6f 6e 73 vate... * @cons
4e060 74 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 41 t... * @type {A
4e070 75 64 69 6f 42 75 66 66 65 72 53 6f 75 72 63 65 udioBufferSource
4e080 4e 6f 64 65 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 Node}... */..
4e090 20 54 6f 6e 65 2e 5a 65 72 6f 2e 5f 7a 65 72 6f Tone.Zero._zero
4e0a0 73 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 2f s = null;.. /
4e0b0 2a 2a 0a 09 09 20 2a 20 20 69 6e 69 74 69 61 6c **... * initial
4e0c0 69 7a 65 72 20 66 75 6e 63 74 69 6f 6e 0a 09 09 izer function...
4e0d0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 5f 69 */.. Tone._i
4e0e0 6e 69 74 41 75 64 69 6f 43 6f 6e 74 65 78 74 28 nitAudioContext(
4e0f0 66 75 6e 63 74 69 6f 6e 20 28 61 75 64 69 6f 43 function (audioC
4e100 6f 6e 74 65 78 74 29 20 7b 0a 09 20 20 20 20 20 ontext) {..
4e110 20 20 20 76 61 72 20 62 75 66 66 65 72 20 3d 20 var buffer =
4e120 61 75 64 69 6f 43 6f 6e 74 65 78 74 2e 63 72 65 audioContext.cre
4e130 61 74 65 42 75 66 66 65 72 28 31 2c 20 31 32 38 ateBuffer(1, 128
4e140 2c 20 61 75 64 69 6f 43 6f 6e 74 65 78 74 2e 73 , audioContext.s
4e150 61 6d 70 6c 65 52 61 74 65 29 3b 0a 09 20 20 20 ampleRate);..
4e160 20 20 20 20 20 76 61 72 20 61 72 72 20 3d 20 62 var arr = b
4e170 75 66 66 65 72 2e 67 65 74 43 68 61 6e 6e 65 6c uffer.getChannel
4e180 44 61 74 61 28 30 29 3b 0a 09 20 20 20 20 20 20 Data(0);..
4e190 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 for (var i = 0
4e1a0 3b 20 69 20 3c 20 61 72 72 2e 6c 65 6e 67 74 68 ; i < arr.length
4e1b0 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 ; i++) {..
4e1c0 20 20 20 20 20 20 61 72 72 5b 69 5d 20 3d 20 30 arr[i] = 0
4e1d0 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
4e1e0 20 20 20 20 20 20 54 6f 6e 65 2e 5a 65 72 6f 2e Tone.Zero.
4e1f0 5f 7a 65 72 6f 73 20 3d 20 61 75 64 69 6f 43 6f _zeros = audioCo
4e200 6e 74 65 78 74 2e 63 72 65 61 74 65 42 75 66 66 ntext.createBuff
4e210 65 72 53 6f 75 72 63 65 28 29 3b 0a 09 20 20 20 erSource();..
4e220 20 20 20 20 20 54 6f 6e 65 2e 5a 65 72 6f 2e 5f Tone.Zero._
4e230 7a 65 72 6f 73 2e 63 68 61 6e 6e 65 6c 43 6f 75 zeros.channelCou
4e240 6e 74 20 3d 20 31 3b 0a 09 20 20 20 20 20 20 20 nt = 1;..
4e250 20 54 6f 6e 65 2e 5a 65 72 6f 2e 5f 7a 65 72 6f Tone.Zero._zero
4e260 73 2e 63 68 61 6e 6e 65 6c 43 6f 75 6e 74 4d 6f s.channelCountMo
4e270 64 65 20 3d 20 27 65 78 70 6c 69 63 69 74 27 3b de = 'explicit';
4e280 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 5a .. Tone.Z
4e290 65 72 6f 2e 5f 7a 65 72 6f 73 2e 62 75 66 66 65 ero._zeros.buffe
4e2a0 72 20 3d 20 62 75 66 66 65 72 3b 0a 09 20 20 20 r = buffer;..
4e2b0 20 20 20 20 20 54 6f 6e 65 2e 5a 65 72 6f 2e 5f Tone.Zero._
4e2c0 7a 65 72 6f 73 2e 6c 6f 6f 70 20 3d 20 74 72 75 zeros.loop = tru
4e2d0 65 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 e;.. Tone
4e2e0 2e 5a 65 72 6f 2e 5f 7a 65 72 6f 73 2e 73 74 61 .Zero._zeros.sta
4e2f0 72 74 28 30 29 3b 0a 09 20 20 20 20 20 20 20 20 rt(0);..
4e300 54 6f 6e 65 2e 5a 65 72 6f 2e 5f 7a 65 72 6f 73 Tone.Zero._zeros
4e310 2e 6e 6f 47 43 28 29 3b 0a 09 20 20 20 20 7d 29 .noGC();.. })
4e320 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f ;.. return To
4e330 6e 65 2e 5a 65 72 6f 3b 0a 09 7d 29 3b 0a 09 4d ne.Zero;..});..M
4e340 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 odule(function (
4e350 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 Tone) {.. ..
4e360 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c /**... * @cl
4e370 61 73 73 20 20 4c 46 4f 20 73 74 61 6e 64 73 20 ass LFO stands
4e380 66 6f 72 20 6c 6f 77 20 66 72 65 71 75 65 6e 63 for low frequenc
4e390 79 20 6f 73 63 69 6c 6c 61 74 6f 72 2e 20 54 6f y oscillator. To
4e3a0 6e 65 2e 4c 46 4f 20 70 72 6f 64 75 63 65 73 20 ne.LFO produces
4e3b0 61 6e 20 6f 75 74 70 75 74 20 73 69 67 6e 61 6c an output signal
4e3c0 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 ... *
4e3d0 77 68 69 63 68 20 63 61 6e 20 62 65 20 61 74 74 which can be att
4e3e0 61 63 68 65 64 20 74 6f 20 61 6e 20 41 75 64 69 ached to an Audi
4e3f0 6f 50 61 72 61 6d 20 6f 72 20 54 6f 6e 65 2e 53 oParam or Tone.S
4e400 69 67 6e 61 6c 20 0a 09 09 20 2a 20 20 20 20 20 ignal ... *
4e410 20 20 20 20 20 69 6e 20 6f 72 64 65 72 20 74 6f in order to
4e420 20 6d 6f 64 75 6c 61 74 65 20 74 68 61 74 20 70 modulate that p
4e430 61 72 61 6d 65 74 65 72 20 77 69 74 68 20 61 6e arameter with an
4e440 20 6f 73 63 69 6c 6c 61 74 6f 72 2e 20 54 68 65 oscillator. The
4e450 20 4c 46 4f 20 63 61 6e 20 0a 09 09 20 2a 20 20 LFO can ... *
4e460 20 20 20 20 20 20 20 20 61 6c 73 6f 20 62 65 20 also be
4e470 73 79 6e 63 65 64 20 74 6f 20 74 68 65 20 74 72 synced to the tr
4e480 61 6e 73 70 6f 72 74 20 74 6f 20 73 74 61 72 74 ansport to start
4e490 2f 73 74 6f 70 20 61 6e 64 20 63 68 61 6e 67 65 /stop and change
4e4a0 20 77 68 65 6e 20 74 68 65 20 74 65 6d 70 6f 20 when the tempo
4e4b0 63 68 61 6e 67 65 73 2e 0a 09 09 20 2a 0a 09 09 changes.... *...
4e4c0 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 * @constructor
4e4d0 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 ... * @extends
4e4e0 7b 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 {Tone.Oscillator
4e4f0 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b }... * @param {
4e500 46 72 65 71 75 65 6e 63 79 7c 4f 62 6a 65 63 74 Frequency|Object
4e510 7d 20 5b 66 72 65 71 75 65 6e 63 79 5d 20 54 68 } [frequency] Th
4e520 65 20 66 72 65 71 75 65 6e 63 79 20 6f 66 20 74 e frequency of t
4e530 68 65 20 6f 73 63 69 6c 6c 61 74 69 6f 6e 2e 20 he oscillation.
4e540 54 79 70 69 63 61 6c 6c 79 2c 20 4c 46 4f 73 20 Typically, LFOs
4e550 77 69 6c 6c 20 62 65 0a 09 09 20 2a 20 20 20 20 will be... *
4e560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4e570 20 20 20 20 20 20 20 20 20 20 20 69 6e 20 74 68 in th
4e580 65 20 66 72 65 71 75 65 6e 63 79 20 72 61 6e 67 e frequency rang
4e590 65 20 6f 66 20 30 2e 31 20 74 6f 20 31 30 20 68 e of 0.1 to 10 h
4e5a0 65 72 74 7a 2e 20 0a 09 09 20 2a 20 20 40 70 61 ertz. ... * @pa
4e5b0 72 61 6d 20 7b 6e 75 6d 62 65 72 3d 7d 20 6d 69 ram {number=} mi
4e5c0 6e 20 54 68 65 20 6d 69 6e 69 6d 75 6d 20 6f 75 n The minimum ou
4e5d0 74 70 75 74 20 76 61 6c 75 65 20 6f 66 20 74 68 tput value of th
4e5e0 65 20 4c 46 4f 2e 20 0a 09 09 20 2a 20 20 40 70 e LFO. ... * @p
4e5f0 61 72 61 6d 20 7b 6e 75 6d 62 65 72 3d 7d 20 6d aram {number=} m
4e600 61 78 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 76 ax The maximum v
4e610 61 6c 75 65 20 6f 66 20 74 68 65 20 4c 46 4f 2e alue of the LFO.
4e620 20 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 ... * @example
4e630 0a 09 09 20 2a 20 76 61 72 20 6c 66 6f 20 3d 20 ... * var lfo =
4e640 6e 65 77 20 54 6f 6e 65 2e 4c 46 4f 28 22 34 6e new Tone.LFO("4n
4e650 22 2c 20 34 30 30 2c 20 34 30 30 30 29 3b 0a 09 ", 400, 4000);..
4e660 09 20 2a 20 6c 66 6f 2e 63 6f 6e 6e 65 63 74 28 . * lfo.connect(
4e670 66 69 6c 74 65 72 2e 66 72 65 71 75 65 6e 63 79 filter.frequency
4e680 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f );... */.. To
4e690 6e 65 2e 4c 46 4f 20 3d 20 66 75 6e 63 74 69 6f ne.LFO = functio
4e6a0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
4e6b0 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 var options = th
4e6c0 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 is.optionsObject
4e6d0 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 (arguments, [..
4e6e0 20 20 20 20 20 20 20 20 20 20 20 27 66 72 65 71 'freq
4e6f0 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 uency',..
4e700 20 20 20 20 20 27 6d 69 6e 27 2c 0a 09 20 20 20 'min',..
4e710 20 20 20 20 20 20 20 20 20 27 6d 61 78 27 0a 09 'max'..
4e720 20 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 2e ], Tone.
4e730 4c 46 4f 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 LFO.defaults);..
4e740 20 20 20 20 20 20 20 20 2f 2a 2a 20 0a 09 09 09 /** ....
4e750 20 2a 20 20 54 68 65 20 6f 73 63 69 6c 6c 61 74 * The oscillat
4e760 6f 72 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 70 or. .... * @typ
4e770 65 20 7b 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 e {Tone.Oscillat
4e780 6f 72 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 or}.... * @priv
4e790 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
4e7a0 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c this._oscill
4e7b0 61 74 6f 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e ator = new Tone.
4e7c0 4f 73 63 69 6c 6c 61 74 6f 72 28 7b 0a 09 20 20 Oscillator({..
4e7d0 20 20 20 20 20 20 20 20 20 20 27 66 72 65 71 75 'frequ
4e7e0 65 6e 63 79 27 3a 20 6f 70 74 69 6f 6e 73 2e 66 ency': options.f
4e7f0 72 65 71 75 65 6e 63 79 2c 0a 09 20 20 20 20 20 requency,..
4e800 20 20 20 20 20 20 20 27 74 79 70 65 27 3a 20 6f 'type': o
4e810 70 74 69 6f 6e 73 2e 74 79 70 65 0a 09 20 20 20 ptions.type..
4e820 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 });..
4e830 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 /**.... * the
4e840 20 6c 66 6f 27 73 20 66 72 65 71 75 65 6e 63 79 lfo's frequency
4e850 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 46 .... * @type {F
4e860 72 65 71 75 65 6e 63 79 7d 0a 09 09 09 20 2a 20 requency}.... *
4e870 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a @signal.... */.
4e880 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 . this.fr
4e890 65 71 75 65 6e 63 79 20 3d 20 74 68 69 73 2e 5f equency = this._
4e8a0 6f 73 63 69 6c 6c 61 74 6f 72 2e 66 72 65 71 75 oscillator.frequ
4e8b0 65 6e 63 79 3b 0a 09 20 20 20 20 20 20 20 20 2f ency;.. /
4e8c0 2a 2a 0a 09 09 09 20 2a 20 54 68 65 20 61 6d 70 **.... * The amp
4e8d0 6c 69 74 75 64 65 20 6f 66 20 74 68 65 20 4c 46 litude of the LF
4e8e0 4f 2c 20 77 68 69 63 68 20 63 6f 6e 74 72 6f 6c O, which control
4e8f0 73 20 74 68 65 20 6f 75 74 70 75 74 20 72 61 6e s the output ran
4e900 67 65 20 62 65 74 77 65 65 6e 0a 09 09 09 20 2a ge between.... *
4e910 20 74 68 65 20 6d 69 6e 20 61 6e 64 20 6d 61 78 the min and max
4e920 20 6f 75 74 70 75 74 2e 20 46 6f 72 20 65 78 61 output. For exa
4e930 6d 70 6c 65 20 69 66 20 74 68 65 20 6d 69 6e 20 mple if the min
4e940 69 73 20 2d 31 30 20 61 6e 64 20 74 68 65 20 6d is -10 and the m
4e950 61 78 20 0a 09 09 09 20 2a 20 69 73 20 31 30 2c ax .... * is 10,
4e960 20 73 65 74 74 69 6e 67 20 74 68 65 20 61 6d 70 setting the amp
4e970 6c 69 74 75 64 65 20 74 6f 20 30 2e 35 20 77 6f litude to 0.5 wo
4e980 75 6c 64 20 6d 61 6b 65 20 74 68 65 20 4c 46 4f uld make the LFO
4e990 20 6d 6f 64 75 6c 61 74 65 0a 09 09 09 20 2a 20 modulate.... *
4e9a0 62 65 74 77 65 65 6e 20 2d 35 20 61 6e 64 20 35 between -5 and 5
4e9b0 2e 20 0a 09 09 09 20 2a 20 40 74 79 70 65 20 7b . .... * @type {
4e9c0 4e 75 6d 62 65 72 7d 0a 09 09 09 20 2a 20 40 73 Number}.... * @s
4e9d0 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 ignal.... */..
4e9e0 20 20 20 20 20 20 74 68 69 73 2e 61 6d 70 6c 69 this.ampli
4e9f0 74 75 64 65 20 3d 20 74 68 69 73 2e 5f 6f 73 63 tude = this._osc
4ea00 69 6c 6c 61 74 6f 72 2e 76 6f 6c 75 6d 65 3b 0a illator.volume;.
4ea10 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 6d . this.am
4ea20 70 6c 69 74 75 64 65 2e 75 6e 69 74 73 20 3d 20 plitude.units =
4ea30 54 6f 6e 65 2e 54 79 70 65 2e 4e 6f 72 6d 61 6c Tone.Type.Normal
4ea40 52 61 6e 67 65 3b 0a 09 20 20 20 20 20 20 20 20 Range;..
4ea50 74 68 69 73 2e 61 6d 70 6c 69 74 75 64 65 2e 76 this.amplitude.v
4ea60 61 6c 75 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 61 alue = options.a
4ea70 6d 70 6c 69 74 75 64 65 3b 0a 09 20 20 20 20 20 mplitude;..
4ea80 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 /**.... * Th
4ea90 65 20 73 69 67 6e 61 6c 20 77 68 69 63 68 20 69 e signal which i
4eaa0 73 20 6f 75 74 70 75 74 20 77 68 65 6e 20 74 68 s output when th
4eab0 65 20 4c 46 4f 20 69 73 20 73 74 6f 70 70 65 64 e LFO is stopped
4eac0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b .... * @type {
4ead0 54 6f 6e 65 2e 53 69 67 6e 61 6c 7d 0a 09 09 09 Tone.Signal}....
4eae0 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
4eaf0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
4eb00 73 2e 5f 73 74 6f 70 70 65 64 53 69 67 6e 61 6c s._stoppedSignal
4eb10 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e = new Tone.Sign
4eb20 61 6c 28 30 2c 20 54 6f 6e 65 2e 54 79 70 65 2e al(0, Tone.Type.
4eb30 41 75 64 69 6f 52 61 6e 67 65 29 3b 0a 09 20 20 AudioRange);..
4eb40 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
4eb50 20 4a 75 73 74 20 6f 75 74 70 75 74 73 20 7a 65 Just outputs ze
4eb60 72 6f 73 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 ros..... * @typ
4eb70 65 20 7b 54 6f 6e 65 2e 5a 65 72 6f 7d 0a 09 09 e {Tone.Zero}...
4eb80 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
4eb90 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
4eba0 69 73 2e 5f 7a 65 72 6f 73 20 3d 20 6e 65 77 20 is._zeros = new
4ebb0 54 6f 6e 65 2e 5a 65 72 6f 28 29 3b 0a 09 20 20 Tone.Zero();..
4ebc0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
4ebd0 20 54 68 65 20 76 61 6c 75 65 20 74 68 61 74 20 The value that
4ebe0 74 68 65 20 4c 46 4f 20 6f 75 74 70 75 74 73 20 the LFO outputs
4ebf0 77 68 65 6e 20 69 74 27 73 20 73 74 6f 70 70 65 when it's stoppe
4ec00 64 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b d.... * @type {
4ec10 41 75 64 69 6f 52 61 6e 67 65 7d 0a 09 09 09 20 AudioRange}....
4ec20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
4ec30 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
4ec40 2e 5f 73 74 6f 70 70 65 64 56 61 6c 75 65 20 3d ._stoppedValue =
4ec50 20 30 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0;.. /**
4ec60 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 .... * @type {T
4ec70 6f 6e 65 2e 41 75 64 69 6f 54 6f 47 61 69 6e 7d one.AudioToGain}
4ec80 20 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 .... * @privat
4ec90 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
4eca0 20 20 74 68 69 73 2e 5f 61 32 67 20 3d 20 6e 65 this._a2g = ne
4ecb0 77 20 54 6f 6e 65 2e 41 75 64 69 6f 54 6f 47 61 w Tone.AudioToGa
4ecc0 69 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 20 2f in();.. /
4ecd0 2a 2a 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 **.... * @type
4ece0 7b 54 6f 6e 65 2e 53 63 61 6c 65 7d 20 0a 09 09 {Tone.Scale} ...
4ecf0 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
4ed00 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
4ed10 69 73 2e 5f 73 63 61 6c 65 72 20 3d 20 74 68 69 is._scaler = thi
4ed20 73 2e 6f 75 74 70 75 74 20 3d 20 6e 65 77 20 54 s.output = new T
4ed30 6f 6e 65 2e 53 63 61 6c 65 28 6f 70 74 69 6f 6e one.Scale(option
4ed40 73 2e 6d 69 6e 2c 20 6f 70 74 69 6f 6e 73 2e 6d s.min, options.m
4ed50 61 78 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a ax);.. /*
4ed60 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 75 6e 69 *.... * the uni
4ed70 74 73 20 6f 66 20 74 68 65 20 4c 46 4f 20 28 75 ts of the LFO (u
4ed80 73 65 64 20 66 6f 72 20 63 6f 6e 76 65 72 74 69 sed for converti
4ed90 6e 67 29 0a 09 09 09 20 2a 20 20 40 74 79 70 65 ng).... * @type
4eda0 20 7b 54 6f 6e 65 2e 54 79 70 65 7d 20 0a 09 09 {Tone.Type} ...
4edb0 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
4edc0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
4edd0 69 73 2e 5f 75 6e 69 74 73 20 3d 20 54 6f 6e 65 is._units = Tone
4ede0 2e 54 79 70 65 2e 44 65 66 61 75 6c 74 3b 0a 09 .Type.Default;..
4edf0 20 20 20 20 20 20 20 20 74 68 69 73 2e 75 6e 69 this.uni
4ee00 74 73 20 3d 20 6f 70 74 69 6f 6e 73 2e 75 6e 69 ts = options.uni
4ee10 74 73 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 ts;.. //c
4ee20 6f 6e 6e 65 63 74 20 69 74 20 75 70 0a 09 20 20 onnect it up..
4ee30 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 this._osci
4ee40 6c 6c 61 74 6f 72 2e 63 68 61 69 6e 28 74 68 69 llator.chain(thi
4ee50 73 2e 5f 61 32 67 2c 20 74 68 69 73 2e 5f 73 63 s._a2g, this._sc
4ee60 61 6c 65 72 29 3b 0a 09 20 20 20 20 20 20 20 20 aler);..
4ee70 74 68 69 73 2e 5f 7a 65 72 6f 73 2e 63 6f 6e 6e this._zeros.conn
4ee80 65 63 74 28 74 68 69 73 2e 5f 61 32 67 29 3b 0a ect(this._a2g);.
4ee90 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 . this._s
4eea0 74 6f 70 70 65 64 53 69 67 6e 61 6c 2e 63 6f 6e toppedSignal.con
4eeb0 6e 65 63 74 28 74 68 69 73 2e 5f 61 32 67 29 3b nect(this._a2g);
4eec0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
4eed0 72 65 61 64 4f 6e 6c 79 28 5b 0a 09 20 20 20 20 readOnly([..
4eee0 20 20 20 20 20 20 20 20 27 61 6d 70 6c 69 74 75 'amplitu
4eef0 64 65 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 de',..
4ef00 20 20 27 66 72 65 71 75 65 6e 63 79 27 0a 09 20 'frequency'..
4ef10 20 20 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 ]);..
4ef20 20 20 20 20 74 68 69 73 2e 70 68 61 73 65 20 3d this.phase =
4ef30 20 6f 70 74 69 6f 6e 73 2e 70 68 61 73 65 3b 0a options.phase;.
4ef40 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e . };.. Ton
4ef50 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 4c 46 e.extend(Tone.LF
4ef60 4f 2c 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 O, Tone.Oscillat
4ef70 6f 72 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 or);.. /**...
4ef80 20 2a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 * the default
4ef90 70 61 72 61 6d 65 74 65 72 73 0a 09 09 20 2a 0a parameters... *.
4efa0 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 .. * @static...
4efb0 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a 20 * @const... *
4efc0 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a @type {Object}.
4efd0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
4efe0 4c 46 4f 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b LFO.defaults = {
4eff0 0a 09 20 20 20 20 20 20 20 20 27 74 79 70 65 27 .. 'type'
4f000 3a 20 27 73 69 6e 65 27 2c 0a 09 20 20 20 20 20 : 'sine',..
4f010 20 20 20 27 6d 69 6e 27 3a 20 30 2c 0a 09 20 20 'min': 0,..
4f020 20 20 20 20 20 20 27 6d 61 78 27 3a 20 31 2c 0a 'max': 1,.
4f030 09 20 20 20 20 20 20 20 20 27 70 68 61 73 65 27 . 'phase'
4f040 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 66 : 0,.. 'f
4f050 72 65 71 75 65 6e 63 79 27 3a 20 27 34 6e 27 2c requency': '4n',
4f060 0a 09 20 20 20 20 20 20 20 20 27 61 6d 70 6c 69 .. 'ampli
4f070 74 75 64 65 27 3a 20 31 2c 0a 09 20 20 20 20 20 tude': 1,..
4f080 20 20 20 27 75 6e 69 74 73 27 3a 20 54 6f 6e 65 'units': Tone
4f090 2e 54 79 70 65 2e 44 65 66 61 75 6c 74 0a 09 20 .Type.Default..
4f0a0 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
4f0b0 09 20 2a 20 20 53 74 61 72 74 20 74 68 65 20 4c . * Start the L
4f0c0 46 4f 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 FO. ... * @para
4f0d0 6d 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d m {Time} [time=
4f0e0 6e 6f 77 5d 20 74 68 65 20 74 69 6d 65 20 74 68 now] the time th
4f0f0 65 20 4c 46 4f 20 77 69 6c 6c 20 73 74 61 72 74 e LFO will start
4f100 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
4f110 7b 54 6f 6e 65 2e 4c 46 4f 7d 20 74 68 69 73 0a {Tone.LFO} this.
4f120 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
4f130 4c 46 4f 2e 70 72 6f 74 6f 74 79 70 65 2e 73 74 LFO.prototype.st
4f140 61 72 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 art = function (
4f150 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 time) {..
4f160 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 time = this.toS
4f170 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 econds(time);..
4f180 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 74 6f this._sto
4f190 70 70 65 64 53 69 67 6e 61 6c 2e 73 65 74 56 61 ppedSignal.setVa
4f1a0 6c 75 65 41 74 54 69 6d 65 28 30 2c 20 74 69 6d lueAtTime(0, tim
4f1b0 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 e);.. thi
4f1c0 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 2e 73 74 s._oscillator.st
4f1d0 61 72 74 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 art(time);..
4f1e0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
4f1f0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
4f200 2a 0a 09 09 20 2a 20 20 53 74 6f 70 20 74 68 65 *... * Stop the
4f210 20 4c 46 4f 2e 20 0a 09 09 20 2a 20 20 40 70 61 LFO. ... * @pa
4f220 72 61 6d 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d ram {Time} [tim
4f230 65 3d 6e 6f 77 5d 20 74 68 65 20 74 69 6d 65 20 e=now] the time
4f240 74 68 65 20 4c 46 4f 20 77 69 6c 6c 20 73 74 6f the LFO will sto
4f250 70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 p... * @returns
4f260 20 7b 54 6f 6e 65 2e 4c 46 4f 7d 20 74 68 69 73 {Tone.LFO} this
4f270 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
4f280 2e 4c 46 4f 2e 70 72 6f 74 6f 74 79 70 65 2e 73 .LFO.prototype.s
4f290 74 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 top = function (
4f2a0 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 time) {..
4f2b0 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 time = this.toS
4f2c0 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 econds(time);..
4f2d0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 74 6f this._sto
4f2e0 70 70 65 64 53 69 67 6e 61 6c 2e 73 65 74 56 61 ppedSignal.setVa
4f2f0 6c 75 65 41 74 54 69 6d 65 28 74 68 69 73 2e 5f lueAtTime(this._
4f300 73 74 6f 70 70 65 64 56 61 6c 75 65 2c 20 74 69 stoppedValue, ti
4f310 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 me);.. th
4f320 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 2e 73 is._oscillator.s
4f330 74 6f 70 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 top(time);..
4f340 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
4f350 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
4f360 2a 0a 09 09 20 2a 20 20 53 79 6e 63 20 74 68 65 *... * Sync the
4f370 20 73 74 61 72 74 2f 73 74 6f 70 2f 70 61 75 73 start/stop/paus
4f380 65 20 74 6f 20 74 68 65 20 74 72 61 6e 73 70 6f e to the transpo
4f390 72 74 20 0a 09 09 20 2a 20 20 61 6e 64 20 74 68 rt ... * and th
4f3a0 65 20 66 72 65 71 75 65 6e 63 79 20 74 6f 20 74 e frequency to t
4f3b0 68 65 20 62 70 6d 20 6f 66 20 74 68 65 20 74 72 he bpm of the tr
4f3c0 61 6e 73 70 6f 72 74 0a 09 09 20 2a 20 20 40 72 ansport... * @r
4f3d0 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 4c 46 4f eturns {Tone.LFO
4f3e0 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 40 65 78 } this... * @ex
4f3f0 61 6d 70 6c 65 0a 09 09 20 2a 20 20 6c 66 6f 2e ample... * lfo.
4f400 66 72 65 71 75 65 6e 63 79 2e 76 61 6c 75 65 20 frequency.value
4f410 3d 20 22 38 6e 22 3b 0a 09 09 20 2a 20 20 6c 66 = "8n";... * lf
4f420 6f 2e 73 79 6e 63 28 29 2e 73 74 61 72 74 28 30 o.sync().start(0
4f430 29 0a 09 09 20 2a 20 20 2f 2f 74 68 65 20 72 61 )... * //the ra
4f440 74 65 20 6f 66 20 74 68 65 20 4c 46 4f 20 77 69 te of the LFO wi
4f450 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 61 6e 20 ll always be an
4f460 65 69 67 68 74 68 20 6e 6f 74 65 2c 20 0a 09 09 eighth note, ...
4f470 20 2a 20 20 2f 2f 65 76 65 6e 20 61 73 20 74 68 * //even as th
4f480 65 20 74 65 6d 70 6f 20 63 68 61 6e 67 65 73 0a e tempo changes.
4f490 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
4f4a0 4c 46 4f 2e 70 72 6f 74 6f 74 79 70 65 2e 73 79 LFO.prototype.sy
4f4b0 6e 63 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 nc = function ()
4f4c0 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 {.. this
4f4d0 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 2e 73 79 6e ._oscillator.syn
4f4e0 63 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 c();.. th
4f4f0 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 2e 73 is._oscillator.s
4f500 79 6e 63 46 72 65 71 75 65 6e 63 79 28 29 3b 0a yncFrequency();.
4f510 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
4f520 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
4f530 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 75 6e 73 /**... * uns
4f540 79 6e 63 20 74 68 65 20 4c 46 4f 20 66 72 6f 6d ync the LFO from
4f550 20 74 72 61 6e 73 70 6f 72 74 20 63 6f 6e 74 72 transport contr
4f560 6f 6c 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e ol... * @return
4f570 73 20 7b 54 6f 6e 65 2e 4c 46 4f 7d 20 74 68 69 s {Tone.LFO} thi
4f580 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
4f590 65 2e 4c 46 4f 2e 70 72 6f 74 6f 74 79 70 65 2e e.LFO.prototype.
4f5a0 75 6e 73 79 6e 63 20 3d 20 66 75 6e 63 74 69 6f unsync = functio
4f5b0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
4f5c0 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 this._oscillator
4f5d0 2e 75 6e 73 79 6e 63 28 29 3b 0a 09 20 20 20 20 .unsync();..
4f5e0 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c this._oscill
4f5f0 61 74 6f 72 2e 75 6e 73 79 6e 63 46 72 65 71 75 ator.unsyncFrequ
4f600 65 6e 63 79 28 29 3b 0a 09 20 20 20 20 20 20 20 ency();..
4f610 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
4f620 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
4f630 09 20 2a 20 54 68 65 20 6d 69 6e 69 75 6d 75 6d . * The miniumum
4f640 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 4c output of the L
4f650 46 4f 2e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 FO.... * @member
4f660 4f 66 20 54 6f 6e 65 2e 4c 46 4f 23 0a 09 09 20 Of Tone.LFO#...
4f670 2a 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 7d * @type {number}
4f680 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6d 69 6e 0a ... * @name min.
4f690 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 .. */.. Objec
4f6a0 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 t.defineProperty
4f6b0 28 54 6f 6e 65 2e 4c 46 4f 2e 70 72 6f 74 6f 74 (Tone.LFO.protot
4f6c0 79 70 65 2c 20 27 6d 69 6e 27 2c 20 7b 0a 09 20 ype, 'min', {..
4f6d0 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
4f6e0 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
4f6f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
4f700 69 73 2e 5f 74 6f 55 6e 69 74 73 28 74 68 69 73 is._toUnits(this
4f710 2e 5f 73 63 61 6c 65 72 2e 6d 69 6e 29 3b 0a 09 ._scaler.min);..
4f720 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 },..
4f730 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f set: functio
4f740 6e 20 28 6d 69 6e 29 20 7b 0a 09 20 20 20 20 20 n (min) {..
4f750 20 20 20 20 20 20 20 6d 69 6e 20 3d 20 74 68 69 min = thi
4f760 73 2e 5f 66 72 6f 6d 55 6e 69 74 73 28 6d 69 6e s._fromUnits(min
4f770 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
4f780 74 68 69 73 2e 5f 73 63 61 6c 65 72 2e 6d 69 6e this._scaler.min
4f790 20 3d 20 6d 69 6e 3b 0a 09 20 20 20 20 20 20 20 = min;..
4f7a0 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
4f7b0 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 6d 61 /**... * The ma
4f7c0 78 69 6d 75 6d 20 6f 75 74 70 75 74 20 6f 66 20 ximum output of
4f7d0 74 68 65 20 4c 46 4f 2e 0a 09 09 20 2a 20 40 6d the LFO.... * @m
4f7e0 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 4c 46 4f emberOf Tone.LFO
4f7f0 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 6e 75 #... * @type {nu
4f800 6d 62 65 72 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 mber}... * @name
4f810 20 6d 61 78 0a 09 09 20 2a 2f 0a 09 20 20 20 20 max... */..
4f820 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
4f830 70 65 72 74 79 28 54 6f 6e 65 2e 4c 46 4f 2e 70 perty(Tone.LFO.p
4f840 72 6f 74 6f 74 79 70 65 2c 20 27 6d 61 78 27 2c rototype, 'max',
4f850 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
4f860 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
4f870 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
4f880 72 6e 20 74 68 69 73 2e 5f 74 6f 55 6e 69 74 73 rn this._toUnits
4f890 28 74 68 69 73 2e 5f 73 63 61 6c 65 72 2e 6d 61 (this._scaler.ma
4f8a0 78 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a x);.. },.
4f8b0 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
4f8c0 6e 63 74 69 6f 6e 20 28 6d 61 78 29 20 7b 0a 09 nction (max) {..
4f8d0 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 20 max
4f8e0 3d 20 74 68 69 73 2e 5f 66 72 6f 6d 55 6e 69 74 = this._fromUnit
4f8f0 73 28 6d 61 78 29 3b 0a 09 20 20 20 20 20 20 20 s(max);..
4f900 20 20 20 20 20 74 68 69 73 2e 5f 73 63 61 6c 65 this._scale
4f910 72 2e 6d 61 78 20 3d 20 6d 61 78 3b 0a 09 20 20 r.max = max;..
4f920 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b }.. });
4f930 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 .. /**... * T
4f940 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 20 6f he type of the o
4f950 73 63 69 6c 6c 61 74 6f 72 3a 20 73 69 6e 65 2c scillator: sine,
4f960 20 73 71 75 61 72 65 2c 20 73 61 77 74 6f 6f 74 square, sawtoot
4f970 68 2c 20 74 72 69 61 6e 67 6c 65 2e 20 0a 09 09 h, triangle. ...
4f980 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
4f990 65 2e 4c 46 4f 23 0a 09 09 20 2a 20 40 74 79 70 e.LFO#... * @typ
4f9a0 65 20 7b 73 74 72 69 6e 67 7d 0a 09 09 20 2a 20 e {string}... *
4f9b0 40 6e 61 6d 65 20 74 79 70 65 0a 09 09 20 2a 2f @name type... */
4f9c0 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 .. Object.def
4f9d0 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 ineProperty(Tone
4f9e0 2e 4c 46 4f 2e 70 72 6f 74 6f 74 79 70 65 2c 20 .LFO.prototype,
4f9f0 27 74 79 70 65 27 2c 20 7b 0a 09 20 20 20 20 20 'type', {..
4fa00 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e get: function
4fa10 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 () {..
4fa20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
4fa30 6f 73 63 69 6c 6c 61 74 6f 72 2e 74 79 70 65 3b oscillator.type;
4fa40 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
4fa50 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
4fa60 69 6f 6e 20 28 74 79 70 65 29 20 7b 0a 09 20 20 ion (type) {..
4fa70 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
4fa80 6f 73 63 69 6c 6c 61 74 6f 72 2e 74 79 70 65 20 oscillator.type
4fa90 3d 20 74 79 70 65 3b 0a 09 20 20 20 20 20 20 20 = type;..
4faa0 20 20 20 20 20 74 68 69 73 2e 5f 73 74 6f 70 70 this._stopp
4fab0 65 64 56 61 6c 75 65 20 3d 20 74 68 69 73 2e 5f edValue = this._
4fac0 6f 73 63 69 6c 6c 61 74 6f 72 2e 5f 67 65 74 49 oscillator._getI
4fad0 6e 69 74 69 61 6c 56 61 6c 75 65 28 29 3b 0a 09 nitialValue();..
4fae0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
4faf0 2e 5f 73 74 6f 70 70 65 64 53 69 67 6e 61 6c 2e ._stoppedSignal.
4fb00 76 61 6c 75 65 20 3d 20 74 68 69 73 2e 5f 73 74 value = this._st
4fb10 6f 70 70 65 64 56 61 6c 75 65 3b 0a 09 20 20 20 oppedValue;..
4fb20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
4fb30 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 . /**... * Th
4fb40 65 20 70 68 61 73 65 20 6f 66 20 74 68 65 20 4c e phase of the L
4fb50 46 4f 2e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 FO.... * @member
4fb60 4f 66 20 54 6f 6e 65 2e 4c 46 4f 23 0a 09 09 20 Of Tone.LFO#...
4fb70 2a 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 7d * @type {number}
4fb80 0a 09 09 20 2a 20 40 6e 61 6d 65 20 70 68 61 73 ... * @name phas
4fb90 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a e... */.. Obj
4fba0 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
4fbb0 74 79 28 54 6f 6e 65 2e 4c 46 4f 2e 70 72 6f 74 ty(Tone.LFO.prot
4fbc0 6f 74 79 70 65 2c 20 27 70 68 61 73 65 27 2c 20 otype, 'phase',
4fbd0 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 {.. get:
4fbe0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
4fbf0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
4fc00 6e 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 n this._oscillat
4fc10 6f 72 2e 70 68 61 73 65 3b 0a 09 20 20 20 20 20 or.phase;..
4fc20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 },.. s
4fc30 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 70 68 et: function (ph
4fc40 61 73 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ase) {..
4fc50 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c this._oscill
4fc60 61 74 6f 72 2e 70 68 61 73 65 20 3d 20 70 68 61 ator.phase = pha
4fc70 73 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 se;..
4fc80 20 74 68 69 73 2e 5f 73 74 6f 70 70 65 64 56 61 this._stoppedVa
4fc90 6c 75 65 20 3d 20 74 68 69 73 2e 5f 6f 73 63 69 lue = this._osci
4fca0 6c 6c 61 74 6f 72 2e 5f 67 65 74 49 6e 69 74 69 llator._getIniti
4fcb0 61 6c 56 61 6c 75 65 28 29 3b 0a 09 20 20 20 20 alValue();..
4fcc0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 74 this._st
4fcd0 6f 70 70 65 64 53 69 67 6e 61 6c 2e 76 61 6c 75 oppedSignal.valu
4fce0 65 20 3d 20 74 68 69 73 2e 5f 73 74 6f 70 70 65 e = this._stoppe
4fcf0 64 56 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 20 dValue;..
4fd00 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
4fd10 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 6f 75 /**... * The ou
4fd20 74 70 75 74 20 75 6e 69 74 73 20 6f 66 20 74 68 tput units of th
4fd30 65 20 4c 46 4f 2e 0a 09 09 20 2a 20 40 6d 65 6d e LFO.... * @mem
4fd40 62 65 72 4f 66 20 54 6f 6e 65 2e 4c 46 4f 23 0a berOf Tone.LFO#.
4fd50 09 09 20 2a 20 40 74 79 70 65 20 7b 54 6f 6e 65 .. * @type {Tone
4fd60 2e 54 79 70 65 7d 0a 09 09 20 2a 20 40 6e 61 6d .Type}... * @nam
4fd70 65 20 75 6e 69 74 73 0a 09 09 20 2a 2f 0a 09 20 e units... */..
4fd80 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
4fd90 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 4c 46 Property(Tone.LF
4fda0 4f 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 75 6e O.prototype, 'un
4fdb0 69 74 73 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 its', {..
4fdc0 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
4fdd0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
4fde0 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 75 6e return this._un
4fdf0 69 74 73 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c its;.. },
4fe00 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 .. set: f
4fe10 75 6e 63 74 69 6f 6e 20 28 76 61 6c 29 20 7b 0a unction (val) {.
4fe20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
4fe30 20 63 75 72 72 65 6e 74 4d 69 6e 20 3d 20 74 68 currentMin = th
4fe40 69 73 2e 6d 69 6e 3b 0a 09 20 20 20 20 20 20 20 is.min;..
4fe50 20 20 20 20 20 76 61 72 20 63 75 72 72 65 6e 74 var current
4fe60 4d 61 78 20 3d 20 74 68 69 73 2e 6d 61 78 3b 0a Max = this.max;.
4fe70 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 63 . //c
4fe80 6f 6e 76 65 72 74 20 74 68 65 20 6d 69 6e 20 61 onvert the min a
4fe90 6e 64 20 74 68 65 20 6d 61 78 0a 09 20 20 20 20 nd the max..
4fea0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 75 6e this._un
4feb0 69 74 73 20 3d 20 76 61 6c 3b 0a 09 20 20 20 20 its = val;..
4fec0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d 69 6e this.min
4fed0 20 3d 20 63 75 72 72 65 6e 74 4d 69 6e 3b 0a 09 = currentMin;..
4fee0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
4fef0 2e 6d 61 78 20 3d 20 63 75 72 72 65 6e 74 4d 61 .max = currentMa
4ff00 78 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 x;.. }..
4ff10 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
4ff20 09 09 20 2a 20 4d 75 74 65 20 74 68 65 20 6f 75 .. * Mute the ou
4ff30 74 70 75 74 2e 20 0a 09 09 20 2a 20 40 6d 65 6d tput. ... * @mem
4ff40 62 65 72 4f 66 20 54 6f 6e 65 2e 4c 46 4f 23 0a berOf Tone.LFO#.
4ff50 09 09 20 2a 20 40 74 79 70 65 20 7b 42 6f 6f 6c .. * @type {Bool
4ff60 65 61 6e 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 ean}... * @name
4ff70 6d 75 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 mute... */..
4ff80 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
4ff90 70 65 72 74 79 28 54 6f 6e 65 2e 4c 46 4f 2e 70 perty(Tone.LFO.p
4ffa0 72 6f 74 6f 74 79 70 65 2c 20 27 6d 75 74 65 27 rototype, 'mute'
4ffb0 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
4ffc0 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
4ffd0 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
4ffe0 75 72 6e 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c urn this._oscill
4fff0 61 74 6f 72 2e 6d 75 74 65 3b 0a 09 20 20 20 20 ator.mute;..
50000 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
50010 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6d set: function (m
50020 75 74 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ute) {..
50030 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c this._oscill
50040 61 74 6f 72 2e 6d 75 74 65 20 3d 20 6d 75 74 65 ator.mute = mute
50050 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
50060 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 });.. /**..
50070 09 20 2a 20 20 52 65 74 75 72 6e 73 20 74 68 65 . * Returns the
50080 20 70 6c 61 79 62 61 63 6b 20 73 74 61 74 65 20 playback state
50090 6f 66 20 74 68 65 20 73 6f 75 72 63 65 2c 20 65 of the source, e
500a0 69 74 68 65 72 20 22 73 74 61 72 74 65 64 22 20 ither "started"
500b0 6f 72 20 22 73 74 6f 70 70 65 64 22 2e 0a 09 09 or "stopped"....
500c0 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e * @type {Tone.
500d0 53 74 61 74 65 7d 0a 09 09 20 2a 20 20 40 72 65 State}... * @re
500e0 61 64 4f 6e 6c 79 0a 09 09 20 2a 20 20 40 6d 65 adOnly... * @me
500f0 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 4c 46 4f 23 mberOf Tone.LFO#
50100 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 73 74 61 ... * @name sta
50110 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 te... */.. Ob
50120 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
50130 72 74 79 28 54 6f 6e 65 2e 4c 46 4f 2e 70 72 6f rty(Tone.LFO.pro
50140 74 6f 74 79 70 65 2c 20 27 73 74 61 74 65 27 2c totype, 'state',
50150 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
50160 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
50170 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
50180 72 6e 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 rn this._oscilla
50190 74 6f 72 2e 73 74 61 74 65 3b 0a 09 20 20 20 20 tor.state;..
501a0 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
501b0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6f /**... * Co
501c0 6e 6e 65 63 74 20 74 68 65 20 6f 75 74 70 75 74 nnect the output
501d0 20 6f 66 20 74 68 65 20 4c 46 4f 20 74 6f 20 61 of the LFO to a
501e0 6e 20 41 75 64 69 6f 50 61 72 61 6d 2c 20 41 75 n AudioParam, Au
501f0 64 69 6f 4e 6f 64 65 2c 20 6f 72 20 54 6f 6e 65 dioNode, or Tone
50200 20 4e 6f 64 65 2e 20 0a 09 09 20 2a 20 20 54 6f Node. ... * To
50210 6e 65 2e 4c 46 4f 20 77 69 6c 6c 20 61 75 74 6f ne.LFO will auto
50220 6d 61 74 69 63 61 6c 6c 79 20 63 6f 6e 76 65 72 matically conver
50230 74 20 74 6f 20 74 68 65 20 64 65 73 74 69 6e 61 t to the destina
50240 74 69 6f 6e 20 75 6e 69 74 73 20 6f 66 20 74 68 tion units of th
50250 65 20 0a 09 09 20 2a 20 20 77 69 6c 6c 20 67 65 e ... * will ge
50260 74 20 74 68 65 20 75 6e 69 74 73 20 66 72 6f 6d t the units from
50270 20 74 68 65 20 63 6f 6e 6e 65 63 74 65 64 20 6e the connected n
50280 6f 64 65 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 ode.... * @para
50290 6d 20 20 7b 54 6f 6e 65 20 7c 20 41 75 64 69 6f m {Tone | Audio
502a0 50 61 72 61 6d 20 7c 20 41 75 64 69 6f 4e 6f 64 Param | AudioNod
502b0 65 7d 20 6e 6f 64 65 20 0a 09 09 20 2a 20 20 40 e} node ... * @
502c0 70 61 72 61 6d 20 7b 6e 75 6d 62 65 72 7d 20 5b param {number} [
502d0 6f 75 74 70 75 74 4e 75 6d 3d 30 5d 20 6f 70 74 outputNum=0] opt
502e0 69 6f 6e 61 6c 6c 79 20 77 68 69 63 68 20 6f 75 ionally which ou
502f0 74 70 75 74 20 74 6f 20 63 6f 6e 6e 65 63 74 20 tput to connect
50300 66 72 6f 6d 0a 09 09 20 2a 20 20 40 70 61 72 61 from... * @para
50310 6d 20 7b 6e 75 6d 62 65 72 7d 20 5b 69 6e 70 75 m {number} [inpu
50320 74 4e 75 6d 3d 30 5d 20 6f 70 74 69 6f 6e 61 6c tNum=0] optional
50330 6c 79 20 77 68 69 63 68 20 69 6e 70 75 74 20 74 ly which input t
50340 6f 20 63 6f 6e 6e 65 63 74 20 74 6f 0a 09 09 20 o connect to...
50350 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
50360 65 2e 4c 46 4f 7d 20 74 68 69 73 0a 09 09 20 2a e.LFO} this... *
50370 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f @private... */
50380 0a 09 20 20 20 20 54 6f 6e 65 2e 4c 46 4f 2e 70 .. Tone.LFO.p
50390 72 6f 74 6f 74 79 70 65 2e 63 6f 6e 6e 65 63 74 rototype.connect
503a0 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6e 6f 64 = function (nod
503b0 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 e) {.. if
503c0 20 28 6e 6f 64 65 2e 63 6f 6e 73 74 72 75 63 74 (node.construct
503d0 6f 72 20 3d 3d 3d 20 54 6f 6e 65 2e 53 69 67 6e or === Tone.Sign
503e0 61 6c 20 7c 7c 20 6e 6f 64 65 2e 63 6f 6e 73 74 al || node.const
503f0 72 75 63 74 6f 72 20 3d 3d 3d 20 54 6f 6e 65 2e ructor === Tone.
50400 50 61 72 61 6d 20 7c 7c 20 6e 6f 64 65 2e 63 6f Param || node.co
50410 6e 73 74 72 75 63 74 6f 72 20 3d 3d 3d 20 54 6f nstructor === To
50420 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 69 67 6e 61 ne.TimelineSigna
50430 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 l) {..
50440 20 20 74 68 69 73 2e 63 6f 6e 76 65 72 74 20 3d this.convert =
50450 20 6e 6f 64 65 2e 63 6f 6e 76 65 72 74 3b 0a 09 node.convert;..
50460 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
50470 2e 75 6e 69 74 73 20 3d 20 6e 6f 64 65 2e 75 6e .units = node.un
50480 69 74 73 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a its;.. }.
50490 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 53 69 . Tone.Si
504a0 67 6e 61 6c 2e 70 72 6f 74 6f 74 79 70 65 2e 63 gnal.prototype.c
504b0 6f 6e 6e 65 63 74 2e 61 70 70 6c 79 28 74 68 69 onnect.apply(thi
504c0 73 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b 0a 09 s, arguments);..
504d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
504e0 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
504f0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 70 72 69 76 /**... * priv
50500 61 74 65 20 6d 65 74 68 6f 64 20 62 6f 72 72 6f ate method borro
50510 77 65 64 20 66 72 6f 6d 20 50 61 72 61 6d 20 63 wed from Param c
50520 6f 6e 76 65 72 74 73 20 0a 09 09 20 2a 20 20 75 onverts ... * u
50530 6e 69 74 73 20 66 72 6f 6d 20 74 68 65 69 72 20 nits from their
50540 64 65 73 74 69 6e 61 74 69 6f 6e 20 76 61 6c 75 destination valu
50550 65 0a 09 09 20 2a 20 20 40 66 75 6e 63 74 69 6f e... * @functio
50560 6e 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 n... * @private
50570 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
50580 2e 4c 46 4f 2e 70 72 6f 74 6f 74 79 70 65 2e 5f .LFO.prototype._
50590 66 72 6f 6d 55 6e 69 74 73 20 3d 20 54 6f 6e 65 fromUnits = Tone
505a0 2e 50 61 72 61 6d 2e 70 72 6f 74 6f 74 79 70 65 .Param.prototype
505b0 2e 5f 66 72 6f 6d 55 6e 69 74 73 3b 0a 09 20 20 ._fromUnits;..
505c0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 70 72 69 76 /**... * priv
505d0 61 74 65 20 6d 65 74 68 6f 64 20 62 6f 72 72 6f ate method borro
505e0 77 65 64 20 66 72 6f 6d 20 50 61 72 61 6d 20 63 wed from Param c
505f0 6f 6e 76 65 72 74 73 20 0a 09 09 20 2a 20 20 75 onverts ... * u
50600 6e 69 74 73 20 74 6f 20 74 68 65 69 72 20 64 65 nits to their de
50610 73 74 69 6e 61 74 69 6f 6e 20 76 61 6c 75 65 0a stination value.
50620 09 09 20 2a 20 20 40 66 75 6e 63 74 69 6f 6e 0a .. * @function.
50630 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
50640 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4c . */.. Tone.L
50650 46 4f 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 74 6f FO.prototype._to
50660 55 6e 69 74 73 20 3d 20 54 6f 6e 65 2e 50 61 72 Units = Tone.Par
50670 61 6d 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 74 6f am.prototype._to
50680 55 6e 69 74 73 3b 0a 09 20 20 20 20 2f 2a 2a 0a Units;.. /**.
50690 09 09 20 2a 20 20 64 69 73 63 6f 6e 6e 65 63 74 .. * disconnect
506a0 20 61 6e 64 20 64 69 73 70 6f 73 65 0a 09 09 20 and dispose...
506b0 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
506c0 65 2e 4c 46 4f 7d 20 74 68 69 73 0a 09 09 20 2a e.LFO} this... *
506d0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4c 46 4f 2e /.. Tone.LFO.
506e0 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
506f0 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 e = function ()
50700 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e {.. Tone.
50710 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
50720 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 e.call(this);..
50730 20 20 20 20 20 20 20 74 68 69 73 2e 5f 77 72 69 this._wri
50740 74 61 62 6c 65 28 5b 0a 09 20 20 20 20 20 20 20 table([..
50750 20 20 20 20 20 27 61 6d 70 6c 69 74 75 64 65 27 'amplitude'
50760 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
50770 66 72 65 71 75 65 6e 63 79 27 0a 09 20 20 20 20 frequency'..
50780 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 ]);..
50790 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f this._oscillato
507a0 72 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 r.dispose();..
507b0 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 this._osci
507c0 6c 6c 61 74 6f 72 20 3d 20 6e 75 6c 6c 3b 0a 09 llator = null;..
507d0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 74 this._st
507e0 6f 70 70 65 64 53 69 67 6e 61 6c 2e 64 69 73 70 oppedSignal.disp
507f0 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
50800 74 68 69 73 2e 5f 73 74 6f 70 70 65 64 53 69 67 this._stoppedSig
50810 6e 61 6c 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 nal = null;..
50820 20 20 20 20 20 74 68 69 73 2e 5f 7a 65 72 6f 73 this._zeros
50830 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
50840 20 20 20 20 20 74 68 69 73 2e 5f 7a 65 72 6f 73 this._zeros
50850 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
50860 20 20 74 68 69 73 2e 5f 73 63 61 6c 65 72 2e 64 this._scaler.d
50870 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
50880 20 20 20 74 68 69 73 2e 5f 73 63 61 6c 65 72 20 this._scaler
50890 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
508a0 20 74 68 69 73 2e 5f 61 32 67 2e 64 69 73 70 6f this._a2g.dispo
508b0 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
508c0 68 69 73 2e 5f 61 32 67 20 3d 20 6e 75 6c 6c 3b his._a2g = null;
508d0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 .. this.f
508e0 72 65 71 75 65 6e 63 79 20 3d 20 6e 75 6c 6c 3b requency = null;
508f0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 .. this.a
50900 6d 70 6c 69 74 75 64 65 20 3d 20 6e 75 6c 6c 3b mplitude = null;
50910 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
50920 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
50930 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e return Tone.
50940 4c 46 4f 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c LFO;..});..Modul
50950 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 e(function (Tone
50960 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f ) {.. .. /
50970 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 **... * @class
50980 54 6f 6e 65 2e 4c 69 6d 69 74 65 72 20 77 69 6c Tone.Limiter wil
50990 6c 20 6c 69 6d 69 74 20 74 68 65 20 6c 6f 75 64 l limit the loud
509a0 6e 65 73 73 20 6f 66 20 61 6e 20 69 6e 63 6f 6d ness of an incom
509b0 69 6e 67 20 73 69 67 6e 61 6c 2e 20 0a 09 09 20 ing signal. ...
509c0 2a 20 20 20 20 20 20 20 20 20 49 74 20 69 73 20 * It is
509d0 63 6f 6d 70 6f 73 65 64 20 6f 66 20 61 20 54 6f composed of a To
509e0 6e 65 2e 43 6f 6d 70 72 65 73 73 6f 72 20 77 69 ne.Compressor wi
509f0 74 68 20 61 20 66 61 73 74 20 61 74 74 61 63 6b th a fast attack
50a00 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 61 ... * a
50a10 6e 64 20 72 65 6c 65 61 73 65 2e 20 4c 69 6d 69 nd release. Limi
50a20 74 65 72 73 20 61 72 65 20 63 6f 6d 6d 6f 6e 6c ters are commonl
50a30 79 20 75 73 65 64 20 74 6f 20 73 61 66 65 67 75 y used to safegu
50a40 61 72 64 20 61 67 61 69 6e 73 74 20 0a 09 09 20 ard against ...
50a50 2a 20 20 20 20 20 20 20 20 20 73 69 67 6e 61 6c * signal
50a60 20 63 6c 69 70 70 69 6e 67 2e 20 55 6e 6c 69 6b clipping. Unlik
50a70 65 20 61 20 63 6f 6d 70 72 65 73 73 6f 72 2c 20 e a compressor,
50a80 6c 69 6d 69 74 65 72 73 20 64 6f 20 6e 6f 74 20 limiters do not
50a90 70 72 6f 76 69 64 65 20 0a 09 09 20 2a 20 20 20 provide ... *
50aa0 20 20 20 20 20 20 73 6d 6f 6f 74 68 20 67 61 69 smooth gai
50ab0 6e 20 72 65 64 75 63 74 69 6f 6e 20 61 6e 64 20 n reduction and
50ac0 61 6c 6d 6f 73 74 20 63 6f 6d 70 6c 65 74 65 6c almost completel
50ad0 79 20 70 72 65 76 65 6e 74 20 0a 09 09 20 2a 20 y prevent ... *
50ae0 20 20 20 20 20 20 20 20 61 64 64 69 74 69 6f 6e addition
50af0 61 6c 20 67 61 69 6e 20 61 62 6f 76 65 20 74 68 al gain above th
50b00 65 20 74 68 72 65 73 68 6f 6c 64 2e 0a 09 09 20 e threshold....
50b10 2a 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 *... * @extends
50b20 20 7b 54 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 63 {Tone}... * @c
50b30 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 onstructor... *
50b40 20 40 70 61 72 61 6d 20 7b 6e 75 6d 62 65 72 7d @param {number}
50b50 20 74 68 72 65 73 68 6f 6c 64 20 54 68 65 20 74 threshold The t
50b60 68 65 73 68 6f 6c 64 20 61 62 6f 76 65 20 77 68 heshold above wh
50b70 69 63 68 20 74 68 65 20 6c 69 6d 69 74 69 6e 67 ich the limiting
50b80 20 69 73 20 61 70 70 6c 69 65 64 2e 20 0a 09 09 is applied. ...
50b90 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 * @example...
50ba0 2a 20 20 76 61 72 20 6c 69 6d 69 74 65 72 20 3d * var limiter =
50bb0 20 6e 65 77 20 54 6f 6e 65 2e 4c 69 6d 69 74 65 new Tone.Limite
50bc0 72 28 2d 36 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 r(-6);... */..
50bd0 20 20 54 6f 6e 65 2e 4c 69 6d 69 74 65 72 20 3d Tone.Limiter =
50be0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
50bf0 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 var opti
50c00 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f ons = this.optio
50c10 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e nsObject(argumen
50c20 74 73 2c 20 5b 27 74 68 72 65 73 68 6f 6c 64 27 ts, ['threshold'
50c30 5d 2c 20 54 6f 6e 65 2e 4c 69 6d 69 74 65 72 2e ], Tone.Limiter.
50c40 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 defaults);..
50c50 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 /**.... * t
50c60 68 65 20 63 6f 6d 70 72 65 73 73 6f 72 0a 09 09 he compressor...
50c70 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
50c80 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 . * @type {Tone
50c90 2e 43 6f 6d 70 72 65 73 73 6f 72 7d 0a 09 09 09 .Compressor}....
50ca0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
50cb0 73 2e 5f 63 6f 6d 70 72 65 73 73 6f 72 20 3d 20 s._compressor =
50cc0 74 68 69 73 2e 69 6e 70 75 74 20 3d 20 74 68 69 this.input = thi
50cd0 73 2e 6f 75 74 70 75 74 20 3d 20 6e 65 77 20 54 s.output = new T
50ce0 6f 6e 65 2e 43 6f 6d 70 72 65 73 73 6f 72 28 7b one.Compressor({
50cf0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 61 .. 'a
50d00 74 74 61 63 6b 27 3a 20 30 2e 30 30 31 2c 0a 09 ttack': 0.001,..
50d10 20 20 20 20 20 20 20 20 20 20 20 20 27 64 65 63 'dec
50d20 61 79 27 3a 20 30 2e 30 30 31 2c 0a 09 20 20 20 ay': 0.001,..
50d30 20 20 20 20 20 20 20 20 20 27 74 68 72 65 73 68 'thresh
50d40 6f 6c 64 27 3a 20 6f 70 74 69 6f 6e 73 2e 74 68 old': options.th
50d50 72 65 73 68 6f 6c 64 0a 09 20 20 20 20 20 20 20 reshold..
50d60 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a });.. /*
50d70 2a 0a 09 09 09 20 2a 20 54 68 65 20 74 68 72 65 *.... * The thre
50d80 73 68 6f 6c 64 20 6f 66 20 6f 66 20 74 68 65 20 shold of of the
50d90 6c 69 6d 69 74 65 72 0a 09 09 09 20 2a 20 40 74 limiter.... * @t
50da0 79 70 65 20 7b 44 65 63 69 62 65 6c 7d 0a 09 09 ype {Decibel}...
50db0 09 20 2a 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 . * @signal....
50dc0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
50dd0 2e 74 68 72 65 73 68 6f 6c 64 20 3d 20 74 68 69 .threshold = thi
50de0 73 2e 5f 63 6f 6d 70 72 65 73 73 6f 72 2e 74 68 s._compressor.th
50df0 72 65 73 68 6f 6c 64 3b 0a 09 20 20 20 20 20 20 reshold;..
50e00 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 this._readOnly
50e10 28 27 74 68 72 65 73 68 6f 6c 64 27 29 3b 0a 09 ('threshold');..
50e20 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 };.. Tone
50e30 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 4c 69 6d .extend(Tone.Lim
50e40 69 74 65 72 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a iter);.. /**.
50e50 09 09 20 2a 20 20 54 68 65 20 64 65 66 61 75 6c .. * The defaul
50e60 74 20 76 61 6c 75 65 0a 09 09 20 2a 20 20 40 74 t value... * @t
50e70 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 ype {Object}...
50e80 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a 20 20 * @const... *
50e90 40 73 74 61 74 69 63 0a 09 09 20 2a 2f 0a 09 20 @static... */..
50ea0 20 20 20 54 6f 6e 65 2e 4c 69 6d 69 74 65 72 2e Tone.Limiter.
50eb0 64 65 66 61 75 6c 74 73 20 3d 20 7b 20 27 74 68 defaults = { 'th
50ec0 72 65 73 68 6f 6c 64 27 3a 20 2d 31 32 20 7d 3b reshold': -12 };
50ed0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
50ee0 43 6c 65 61 6e 20 75 70 2e 0a 09 09 20 2a 20 20 Clean up.... *
50ef0 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 4c @returns {Tone.L
50f00 69 6d 69 74 65 72 7d 20 74 68 69 73 0a 09 09 20 imiter} this...
50f10 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4c 69 6d */.. Tone.Lim
50f20 69 74 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 iter.prototype.d
50f30 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f ispose = functio
50f40 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
50f50 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 Tone.prototype.d
50f60 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 ispose.call(this
50f70 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
50f80 2e 5f 63 6f 6d 70 72 65 73 73 6f 72 2e 64 69 73 ._compressor.dis
50f90 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
50fa0 20 74 68 69 73 2e 5f 63 6f 6d 70 72 65 73 73 6f this._compresso
50fb0 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 r = null;..
50fc0 20 20 20 74 68 69 73 2e 5f 77 72 69 74 61 62 6c this._writabl
50fd0 65 28 27 74 68 72 65 73 68 6f 6c 64 27 29 3b 0a e('threshold');.
50fe0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 68 . this.th
50ff0 72 65 73 68 6f 6c 64 20 3d 20 6e 75 6c 6c 3b 0a reshold = null;.
51000 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
51010 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
51020 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 4c return Tone.L
51030 69 6d 69 74 65 72 3b 0a 09 7d 29 3b 0a 09 4d 6f imiter;..});..Mo
51040 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 dule(function (T
51050 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 one) {.. ..
51060 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 /**... * @cla
51070 73 73 20 54 6f 6e 65 2e 4c 6f 77 70 61 73 73 20 ss Tone.Lowpass
51080 69 73 20 61 20 6c 6f 77 70 61 73 73 20 66 65 65 is a lowpass fee
51090 64 62 61 63 6b 20 63 6f 6d 62 20 66 69 6c 74 65 dback comb filte
510a0 72 2e 20 49 74 20 69 73 20 73 69 6d 69 6c 61 72 r. It is similar
510b0 20 74 6f 20 0a 09 09 20 2a 20 20 20 20 20 20 20 to ... *
510c0 20 20 54 6f 6e 65 2e 46 65 65 64 62 61 63 6b 43 Tone.FeedbackC
510d0 6f 6d 62 46 69 6c 74 65 72 2c 20 62 75 74 20 69 ombFilter, but i
510e0 6e 63 6c 75 64 65 73 20 61 20 6c 6f 77 70 61 73 ncludes a lowpas
510f0 73 20 66 69 6c 74 65 72 2e 0a 09 09 20 2a 0a 09 s filter.... *..
51100 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 . * @extends {T
51110 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 63 6f 6e 73 one}... * @cons
51120 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 70 tructor... * @p
51130 61 72 61 6d 20 7b 54 69 6d 65 7c 4f 62 6a 65 63 aram {Time|Objec
51140 74 7d 20 5b 64 65 6c 61 79 54 69 6d 65 5d 20 54 t} [delayTime] T
51150 68 65 20 64 65 6c 61 79 20 74 69 6d 65 20 6f 66 he delay time of
51160 20 74 68 65 20 63 6f 6d 62 20 66 69 6c 74 65 72 the comb filter
51170 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 4e ... * @param {N
51180 6f 72 6d 61 6c 52 61 6e 67 65 3d 7d 20 72 65 73 ormalRange=} res
51190 6f 6e 61 6e 63 65 20 54 68 65 20 72 65 73 6f 6e onance The reson
511a0 61 6e 63 65 20 28 66 65 65 64 62 61 63 6b 29 20 ance (feedback)
511b0 6f 66 20 74 68 65 20 63 6f 6d 62 20 66 69 6c 74 of the comb filt
511c0 65 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 er... * @param
511d0 7b 46 72 65 71 75 65 6e 63 79 3d 7d 20 64 61 6d {Frequency=} dam
511e0 70 65 6e 69 6e 67 20 54 68 65 20 63 75 74 6f 66 pening The cutof
511f0 66 20 6f 66 20 74 68 65 20 6c 6f 77 70 61 73 73 f of the lowpass
51200 20 66 69 6c 74 65 72 20 64 61 6d 70 65 6e 73 20 filter dampens
51210 74 68 65 0a 09 09 20 2a 20 20 20 20 20 20 20 20 the... *
51220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
51230 20 20 20 20 20 20 20 20 73 69 67 6e 61 6c 20 61 signal a
51240 73 20 69 74 20 69 73 20 66 65 64 62 61 63 6b 2e s it is fedback.
51250 20 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e ... */.. Ton
51260 65 2e 4c 6f 77 70 61 73 73 43 6f 6d 62 46 69 6c e.LowpassCombFil
51270 74 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ter = function (
51280 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ) {.. thi
51290 73 2e 63 72 65 61 74 65 49 6e 73 4f 75 74 73 28 s.createInsOuts(
512a0 31 2c 20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 1, 1);..
512b0 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 var options = th
512c0 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 is.optionsObject
512d0 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 (arguments, [..
512e0 20 20 20 20 20 20 20 20 20 20 20 27 64 65 6c 61 'dela
512f0 79 54 69 6d 65 27 2c 0a 09 20 20 20 20 20 20 20 yTime',..
51300 20 20 20 20 20 27 72 65 73 6f 6e 61 6e 63 65 27 'resonance'
51310 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
51320 64 61 6d 70 65 6e 69 6e 67 27 0a 09 20 20 20 20 dampening'..
51330 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 4c 6f 77 70 ], Tone.Lowp
51340 61 73 73 43 6f 6d 62 46 69 6c 74 65 72 2e 64 65 assCombFilter.de
51350 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 faults);..
51360 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 /**.... * the
51370 20 64 65 6c 61 79 20 6e 6f 64 65 0a 09 09 09 20 delay node....
51380 2a 20 20 40 74 79 70 65 20 7b 44 65 6c 61 79 4e * @type {DelayN
51390 6f 64 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 ode}.... * @pri
513a0 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
513b0 20 20 20 20 20 74 68 69 73 2e 5f 64 65 6c 61 79 this._delay
513c0 20 3d 20 74 68 69 73 2e 69 6e 70 75 74 20 3d 20 = this.input =
513d0 6e 65 77 20 54 6f 6e 65 2e 44 65 6c 61 79 28 6f new Tone.Delay(o
513e0 70 74 69 6f 6e 73 2e 64 65 6c 61 79 54 69 6d 65 ptions.delayTime
513f0 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
51400 09 09 09 20 2a 20 20 54 68 65 20 64 65 6c 61 79 ... * The delay
51410 54 69 6d 65 20 6f 66 20 74 68 65 20 63 6f 6d 62 Time of the comb
51420 20 66 69 6c 74 65 72 2e 20 0a 09 09 09 20 2a 20 filter. .... *
51430 20 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a 09 09 @type {Time}...
51440 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 . * @signal....
51450 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
51460 73 2e 64 65 6c 61 79 54 69 6d 65 20 3d 20 74 68 s.delayTime = th
51470 69 73 2e 5f 64 65 6c 61 79 2e 64 65 6c 61 79 54 is._delay.delayT
51480 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a ime;.. /*
51490 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 6c 6f 77 *.... * the low
514a0 70 61 73 73 20 66 69 6c 74 65 72 0a 09 09 09 20 pass filter....
514b0 2a 20 20 40 74 79 70 65 20 20 7b 42 69 71 75 61 * @type {Biqua
514c0 64 46 69 6c 74 65 72 4e 6f 64 65 7d 0a 09 09 09 dFilterNode}....
514d0 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
514e0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
514f0 73 2e 5f 6c 6f 77 70 61 73 73 20 3d 20 74 68 69 s._lowpass = thi
51500 73 2e 6f 75 74 70 75 74 20 3d 20 74 68 69 73 2e s.output = this.
51510 63 6f 6e 74 65 78 74 2e 63 72 65 61 74 65 42 69 context.createBi
51520 71 75 61 64 46 69 6c 74 65 72 28 29 3b 0a 09 20 quadFilter();..
51530 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f 77 this._low
51540 70 61 73 73 2e 51 2e 76 61 6c 75 65 20 3d 20 2d pass.Q.value = -
51550 33 2e 30 31 30 32 39 39 39 35 36 36 33 39 38 31 3.01029995663981
51560 32 35 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 25;.. thi
51570 73 2e 5f 6c 6f 77 70 61 73 73 2e 74 79 70 65 20 s._lowpass.type
51580 3d 20 27 6c 6f 77 70 61 73 73 27 3b 0a 09 20 20 = 'lowpass';..
51590 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
515a0 20 54 68 65 20 64 61 6d 70 65 6e 69 6e 67 20 63 The dampening c
515b0 6f 6e 74 72 6f 6c 20 6f 66 20 74 68 65 20 66 65 ontrol of the fe
515c0 65 64 62 61 63 6b 0a 09 09 09 20 2a 20 20 40 74 edback.... * @t
515d0 79 70 65 20 7b 46 72 65 71 75 65 6e 63 79 7d 0a ype {Frequency}.
515e0 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 ... * @signal..
515f0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
51600 68 69 73 2e 64 61 6d 70 65 6e 69 6e 67 20 3d 20 his.dampening =
51610 6e 65 77 20 54 6f 6e 65 2e 50 61 72 61 6d 28 7b new Tone.Param({
51620 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 70 .. 'p
51630 61 72 61 6d 27 3a 20 74 68 69 73 2e 5f 6c 6f 77 aram': this._low
51640 70 61 73 73 2e 66 72 65 71 75 65 6e 63 79 2c 0a pass.frequency,.
51650 09 20 20 20 20 20 20 20 20 20 20 20 20 27 75 6e . 'un
51660 69 74 73 27 3a 20 54 6f 6e 65 2e 54 79 70 65 2e its': Tone.Type.
51670 46 72 65 71 75 65 6e 63 79 2c 0a 09 20 20 20 20 Frequency,..
51680 20 20 20 20 20 20 20 20 27 76 61 6c 75 65 27 3a 'value':
51690 20 6f 70 74 69 6f 6e 73 2e 64 61 6d 70 65 6e 69 options.dampeni
516a0 6e 67 0a 09 20 20 20 20 20 20 20 20 7d 29 3b 0a ng.. });.
516b0 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
516c0 20 2a 20 20 74 68 65 20 66 65 65 64 62 61 63 6b * the feedback
516d0 20 67 61 69 6e 0a 09 09 09 20 2a 20 20 40 74 79 gain.... * @ty
516e0 70 65 20 7b 54 6f 6e 65 2e 47 61 69 6e 7d 0a 09 pe {Tone.Gain}..
516f0 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
51700 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
51710 68 69 73 2e 5f 66 65 65 64 62 61 63 6b 20 3d 20 his._feedback =
51720 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 6f 70 new Tone.Gain(op
51730 74 69 6f 6e 73 2e 72 65 73 6f 6e 61 6e 63 65 2c tions.resonance,
51740 20 54 6f 6e 65 2e 54 79 70 65 2e 4e 6f 72 6d 61 Tone.Type.Norma
51750 6c 52 61 6e 67 65 29 3b 0a 09 20 20 20 20 20 20 lRange);..
51760 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
51770 20 61 6d 6f 75 6e 74 20 6f 66 20 66 65 65 64 62 amount of feedb
51780 61 63 6b 20 6f 66 20 74 68 65 20 64 65 6c 61 79 ack of the delay
51790 65 64 20 73 69 67 6e 61 6c 2e 20 0a 09 09 09 20 ed signal. ....
517a0 2a 20 20 40 74 79 70 65 20 7b 4e 6f 72 6d 61 6c * @type {Normal
517b0 52 61 6e 67 65 7d 0a 09 09 09 20 2a 20 20 40 73 Range}.... * @s
517c0 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 ignal.... */..
517d0 20 20 20 20 20 20 74 68 69 73 2e 72 65 73 6f 6e this.reson
517e0 61 6e 63 65 20 3d 20 74 68 69 73 2e 5f 66 65 65 ance = this._fee
517f0 64 62 61 63 6b 2e 67 61 69 6e 3b 0a 09 20 20 20 dback.gain;..
51800 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 63 74 69 6f //connectio
51810 6e 73 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 ns.. this
51820 2e 5f 64 65 6c 61 79 2e 63 68 61 69 6e 28 74 68 ._delay.chain(th
51830 69 73 2e 5f 6c 6f 77 70 61 73 73 2c 20 74 68 69 is._lowpass, thi
51840 73 2e 5f 66 65 65 64 62 61 63 6b 2c 20 74 68 69 s._feedback, thi
51850 73 2e 5f 64 65 6c 61 79 29 3b 0a 09 20 20 20 20 s._delay);..
51860 20 20 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e this._readOn
51870 6c 79 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 ly([..
51880 20 20 27 64 61 6d 70 65 6e 69 6e 67 27 2c 0a 09 'dampening',..
51890 20 20 20 20 20 20 20 20 20 20 20 20 27 72 65 73 'res
518a0 6f 6e 61 6e 63 65 27 2c 0a 09 20 20 20 20 20 20 onance',..
518b0 20 20 20 20 20 20 27 64 65 6c 61 79 54 69 6d 65 'delayTime
518c0 27 0a 09 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 '.. ]);..
518d0 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 };.. Tone
518e0 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 4c 6f 77 .extend(Tone.Low
518f0 70 61 73 73 43 6f 6d 62 46 69 6c 74 65 72 29 3b passCombFilter);
51900 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
51910 74 68 65 20 64 65 66 61 75 6c 74 20 70 61 72 61 the default para
51920 6d 65 74 65 72 73 0a 09 09 20 2a 20 20 40 73 74 meters... * @st
51930 61 74 69 63 0a 09 09 20 2a 20 20 40 63 6f 6e 73 atic... * @cons
51940 74 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4f t... * @type {O
51950 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 bject}... */..
51960 20 20 54 6f 6e 65 2e 4c 6f 77 70 61 73 73 43 6f Tone.LowpassCo
51970 6d 62 46 69 6c 74 65 72 2e 64 65 66 61 75 6c 74 mbFilter.default
51980 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 27 s = {.. '
51990 64 65 6c 61 79 54 69 6d 65 27 3a 20 30 2e 31 2c delayTime': 0.1,
519a0 0a 09 20 20 20 20 20 20 20 20 27 72 65 73 6f 6e .. 'reson
519b0 61 6e 63 65 27 3a 20 30 2e 35 2c 0a 09 20 20 20 ance': 0.5,..
519c0 20 20 20 20 20 27 64 61 6d 70 65 6e 69 6e 67 27 'dampening'
519d0 3a 20 33 30 30 30 0a 09 20 20 20 20 7d 3b 0a 09 : 3000.. };..
519e0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c /**... * Cl
519f0 65 61 6e 20 75 70 2e 20 0a 09 09 20 2a 20 20 40 ean up. ... * @
51a00 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 4c 6f returns {Tone.Lo
51a10 77 70 61 73 73 43 6f 6d 62 46 69 6c 74 65 72 7d wpassCombFilter}
51a20 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
51a30 20 54 6f 6e 65 2e 4c 6f 77 70 61 73 73 43 6f 6d Tone.LowpassCom
51a40 62 46 69 6c 74 65 72 2e 70 72 6f 74 6f 74 79 70 bFilter.prototyp
51a50 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 e.dispose = func
51a60 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
51a70 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 Tone.prototyp
51a80 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 e.dispose.call(t
51a90 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 his);.. t
51aa0 68 69 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b 0a his._writable([.
51ab0 09 20 20 20 20 20 20 20 20 20 20 20 20 27 64 61 . 'da
51ac0 6d 70 65 6e 69 6e 67 27 2c 0a 09 20 20 20 20 20 mpening',..
51ad0 20 20 20 20 20 20 20 27 72 65 73 6f 6e 61 6e 63 'resonanc
51ae0 65 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 e',..
51af0 20 27 64 65 6c 61 79 54 69 6d 65 27 0a 09 20 20 'delayTime'..
51b00 20 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 ]);..
51b10 20 20 20 74 68 69 73 2e 64 61 6d 70 65 6e 69 6e this.dampenin
51b20 67 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 g.dispose();..
51b30 20 20 20 20 20 20 74 68 69 73 2e 64 61 6d 70 65 this.dampe
51b40 6e 69 6e 67 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 ning = null;..
51b50 20 20 20 20 20 20 74 68 69 73 2e 72 65 73 6f 6e this.reson
51b60 61 6e 63 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a ance.dispose();.
51b70 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 65 . this.re
51b80 73 6f 6e 61 6e 63 65 20 3d 20 6e 75 6c 6c 3b 0a sonance = null;.
51b90 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 . this._d
51ba0 65 6c 61 79 2e 64 69 73 70 6f 73 65 28 29 3b 0a elay.dispose();.
51bb0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 . this._d
51bc0 65 6c 61 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 elay = null;..
51bd0 20 20 20 20 20 20 74 68 69 73 2e 64 65 6c 61 79 this.delay
51be0 54 69 6d 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 Time = null;..
51bf0 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f 77 70 this._lowp
51c00 61 73 73 2e 64 69 73 63 6f 6e 6e 65 63 74 28 29 ass.disconnect()
51c10 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
51c20 5f 6c 6f 77 70 61 73 73 20 3d 20 6e 75 6c 6c 3b _lowpass = null;
51c30 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
51c40 66 65 65 64 62 61 63 6b 2e 64 69 73 63 6f 6e 6e feedback.disconn
51c50 65 63 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ect();..
51c60 74 68 69 73 2e 5f 66 65 65 64 62 61 63 6b 20 3d this._feedback =
51c70 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
51c80 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 return this;..
51c90 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 6e };.. return
51ca0 20 54 6f 6e 65 2e 4c 6f 77 70 61 73 73 43 6f 6d Tone.LowpassCom
51cb0 62 46 69 6c 74 65 72 3b 0a 09 7d 29 3b 0a 09 4d bFilter;..});..M
51cc0 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 odule(function (
51cd0 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 Tone) {.. ..
51ce0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c /**... * @cl
51cf0 61 73 73 20 20 54 6f 6e 65 2e 4d 65 72 67 65 20 ass Tone.Merge
51d00 62 72 69 6e 67 73 20 74 77 6f 20 73 69 67 6e 61 brings two signa
51d10 6c 73 20 69 6e 74 6f 20 74 68 65 20 6c 65 66 74 ls into the left
51d20 20 61 6e 64 20 72 69 67 68 74 20 0a 09 09 20 2a and right ... *
51d30 20 20 20 20 20 20 20 20 20 20 63 68 61 6e 6e 65 channe
51d40 6c 73 20 6f 66 20 61 20 73 69 6e 67 6c 65 20 73 ls of a single s
51d50 74 65 72 65 6f 20 63 68 61 6e 6e 65 6c 2e 0a 09 tereo channel...
51d60 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 . *... * @const
51d70 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 ructor... * @ex
51d80 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 20 tends {Tone}...
51d90 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
51da0 20 76 61 72 20 6d 65 72 67 65 20 3d 20 6e 65 77 var merge = new
51db0 20 54 6f 6e 65 2e 4d 65 72 67 65 28 29 2e 74 6f Tone.Merge().to
51dc0 4d 61 73 74 65 72 28 29 3b 0a 09 09 20 2a 20 2f Master();... * /
51dd0 2f 72 6f 75 74 69 6e 67 20 61 20 73 69 6e 65 20 /routing a sine
51de0 74 6f 6e 65 20 69 6e 20 74 68 65 20 6c 65 66 74 tone in the left
51df0 20 63 68 61 6e 6e 65 6c 0a 09 09 20 2a 20 2f 2f channel... * //
51e00 61 6e 64 20 6e 6f 69 73 65 20 69 6e 20 74 68 65 and noise in the
51e10 20 72 69 67 68 74 20 63 68 61 6e 6e 65 6c 0a 09 right channel..
51e20 09 20 2a 20 76 61 72 20 6f 73 63 20 3d 20 6e 65 . * var osc = ne
51e30 77 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f w Tone.Oscillato
51e40 72 28 29 2e 63 6f 6e 6e 65 63 74 28 6d 65 72 67 r().connect(merg
51e50 65 2e 6c 65 66 74 29 3b 0a 09 09 20 2a 20 76 61 e.left);... * va
51e60 72 20 6e 6f 69 73 65 20 3d 20 6e 65 77 20 54 6f r noise = new To
51e70 6e 65 2e 4e 6f 69 73 65 28 29 2e 63 6f 6e 6e 65 ne.Noise().conne
51e80 63 74 28 6d 65 72 67 65 2e 72 69 67 68 74 29 3b ct(merge.right);
51e90 0a 09 09 20 2a 20 2f 2f 73 74 61 72 74 69 6e 67 ... * //starting
51ea0 20 6f 75 72 20 6f 73 63 69 6c 6c 61 74 6f 72 73 our oscillators
51eb0 0a 09 09 20 2a 20 6e 6f 69 73 65 2e 73 74 61 72 ... * noise.star
51ec0 74 28 29 3b 0a 09 09 20 2a 20 6f 73 63 2e 73 74 t();... * osc.st
51ed0 61 72 74 28 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 art();... */..
51ee0 20 20 54 6f 6e 65 2e 4d 65 72 67 65 20 3d 20 66 Tone.Merge = f
51ef0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
51f00 20 20 20 20 20 20 74 68 69 73 2e 63 72 65 61 74 this.creat
51f10 65 49 6e 73 4f 75 74 73 28 32 2c 20 30 29 3b 0a eInsOuts(2, 0);.
51f20 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
51f30 20 2a 20 20 54 68 65 20 6c 65 66 74 20 69 6e 70 * The left inp
51f40 75 74 20 63 68 61 6e 6e 65 6c 2e 0a 09 09 09 20 ut channel.....
51f50 2a 20 20 41 6c 69 61 73 20 66 6f 72 20 3c 63 6f * Alias for <co
51f60 64 65 3e 69 6e 70 75 74 5b 30 5d 3c 2f 63 6f 64 de>input[0]</cod
51f70 65 3e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 e>.... * @type
51f80 7b 47 61 69 6e 4e 6f 64 65 7d 0a 09 09 09 20 2a {GainNode}.... *
51f90 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
51fa0 6c 65 66 74 20 3d 20 74 68 69 73 2e 69 6e 70 75 left = this.inpu
51fb0 74 5b 30 5d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e t[0] = new Tone.
51fc0 47 61 69 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 Gain();..
51fd0 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
51fe0 72 69 67 68 74 20 69 6e 70 75 74 20 63 68 61 6e right input chan
51ff0 6e 65 6c 2e 0a 09 09 09 20 2a 20 20 41 6c 69 61 nel..... * Alia
52000 73 20 66 6f 72 20 3c 63 6f 64 65 3e 69 6e 70 75 s for <code>inpu
52010 74 5b 31 5d 3c 2f 63 6f 64 65 3e 2e 0a 09 09 09 t[1]</code>.....
52020 20 2a 20 20 40 74 79 70 65 20 7b 47 61 69 6e 4e * @type {GainN
52030 6f 64 65 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 ode}.... */..
52040 20 20 20 20 20 74 68 69 73 2e 72 69 67 68 74 20 this.right
52050 3d 20 74 68 69 73 2e 69 6e 70 75 74 5b 31 5d 20 = this.input[1]
52060 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 = new Tone.Gain(
52070 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
52080 09 09 09 20 2a 20 20 74 68 65 20 6d 65 72 67 65 ... * the merge
52090 72 20 6e 6f 64 65 20 66 6f 72 20 74 68 65 20 74 r node for the t
520a0 77 6f 20 63 68 61 6e 6e 65 6c 73 0a 09 09 09 20 wo channels....
520b0 2a 20 20 40 74 79 70 65 20 7b 43 68 61 6e 6e 65 * @type {Channe
520c0 6c 4d 65 72 67 65 72 4e 6f 64 65 7d 0a 09 09 09 lMergerNode}....
520d0 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
520e0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
520f0 73 2e 5f 6d 65 72 67 65 72 20 3d 20 74 68 69 73 s._merger = this
52100 2e 6f 75 74 70 75 74 20 3d 20 74 68 69 73 2e 63 .output = this.c
52110 6f 6e 74 65 78 74 2e 63 72 65 61 74 65 43 68 61 ontext.createCha
52120 6e 6e 65 6c 4d 65 72 67 65 72 28 32 29 3b 0a 09 nnelMerger(2);..
52130 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 63 //connec
52140 74 69 6f 6e 73 0a 09 20 20 20 20 20 20 20 20 74 tions.. t
52150 68 69 73 2e 6c 65 66 74 2e 63 6f 6e 6e 65 63 74 his.left.connect
52160 28 74 68 69 73 2e 5f 6d 65 72 67 65 72 2c 20 30 (this._merger, 0
52170 2c 20 30 29 3b 0a 09 20 20 20 20 20 20 20 20 74 , 0);.. t
52180 68 69 73 2e 72 69 67 68 74 2e 63 6f 6e 6e 65 63 his.right.connec
52190 74 28 74 68 69 73 2e 5f 6d 65 72 67 65 72 2c 20 t(this._merger,
521a0 30 2c 20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 0, 1);..
521b0 74 68 69 73 2e 6c 65 66 74 2e 63 68 61 6e 6e 65 this.left.channe
521c0 6c 43 6f 75 6e 74 20 3d 20 31 3b 0a 09 20 20 20 lCount = 1;..
521d0 20 20 20 20 20 74 68 69 73 2e 72 69 67 68 74 2e this.right.
521e0 63 68 61 6e 6e 65 6c 43 6f 75 6e 74 20 3d 20 31 channelCount = 1
521f0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
52200 6c 65 66 74 2e 63 68 61 6e 6e 65 6c 43 6f 75 6e left.channelCoun
52210 74 4d 6f 64 65 20 3d 20 27 65 78 70 6c 69 63 69 tMode = 'explici
52220 74 27 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 t';.. thi
52230 73 2e 72 69 67 68 74 2e 63 68 61 6e 6e 65 6c 43 s.right.channelC
52240 6f 75 6e 74 4d 6f 64 65 20 3d 20 27 65 78 70 6c ountMode = 'expl
52250 69 63 69 74 27 3b 0a 09 20 20 20 20 7d 3b 0a 09 icit';.. };..
52260 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 Tone.extend(
52270 54 6f 6e 65 2e 4d 65 72 67 65 29 3b 0a 09 20 20 Tone.Merge);..
52280 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 /**... * Clea
52290 6e 20 75 70 2e 0a 09 09 20 2a 20 20 40 72 65 74 n up.... * @ret
522a0 75 72 6e 73 20 7b 54 6f 6e 65 2e 4d 65 72 67 65 urns {Tone.Merge
522b0 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 } this... */..
522c0 20 20 54 6f 6e 65 2e 4d 65 72 67 65 2e 70 72 6f Tone.Merge.pro
522d0 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d totype.dispose =
522e0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
522f0 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 6f Tone.pro
52300 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 totype.dispose.c
52310 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 all(this);..
52320 20 20 20 20 74 68 69 73 2e 6c 65 66 74 2e 64 69 this.left.di
52330 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
52340 20 20 74 68 69 73 2e 6c 65 66 74 20 3d 20 6e 75 this.left = nu
52350 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
52360 73 2e 72 69 67 68 74 2e 64 69 73 70 6f 73 65 28 s.right.dispose(
52370 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
52380 2e 72 69 67 68 74 20 3d 20 6e 75 6c 6c 3b 0a 09 .right = null;..
52390 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 65 this._me
523a0 72 67 65 72 2e 64 69 73 63 6f 6e 6e 65 63 74 28 rger.disconnect(
523b0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
523c0 2e 5f 6d 65 72 67 65 72 20 3d 20 6e 75 6c 6c 3b ._merger = null;
523d0 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
523e0 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
523f0 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e return Tone.
52400 4d 65 72 67 65 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 Merge;..});..Mod
52410 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f ule(function (To
52420 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 ne) {.. ..
52430 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 /**... * @clas
52440 73 20 20 54 6f 6e 65 2e 4d 65 74 65 72 20 67 65 s Tone.Meter ge
52450 74 73 20 74 68 65 20 5b 52 4d 53 5d 28 68 74 74 ts the [RMS](htt
52460 70 73 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 ps://en.wikipedi
52470 61 2e 6f 72 67 2f 77 69 6b 69 2f 52 6f 6f 74 5f a.org/wiki/Root_
52480 6d 65 61 6e 5f 73 71 75 61 72 65 29 0a 09 09 20 mean_square)...
52490 2a 20 20 20 20 20 20 20 20 20 20 6f 66 20 61 6e * of an
524a0 20 69 6e 70 75 74 20 73 69 67 6e 61 6c 20 77 69 input signal wi
524b0 74 68 20 73 6f 6d 65 20 61 76 65 72 61 67 69 6e th some averagin
524c0 67 20 61 70 70 6c 69 65 64 2e 20 49 74 20 63 61 g applied. It ca
524d0 6e 20 61 6c 73 6f 20 67 65 74 20 74 68 65 20 72 n also get the r
524e0 61 77 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 aw ... *
524f0 20 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 69 value of the i
52500 6e 70 75 74 20 73 69 67 6e 61 6c 2e 0a 09 09 20 nput signal....
52510 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 *... * @constru
52520 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 74 65 ctor... * @exte
52530 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 20 2a 20 nds {Tone}... *
52540 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e 67 7d @param {String}
52550 20 74 79 70 65 20 45 69 74 68 65 72 20 22 6c 65 type Either "le
52560 76 65 6c 22 20 6f 72 20 22 73 69 67 6e 61 6c 22 vel" or "signal"
52570 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 . ... * @param
52580 7b 4e 75 6d 62 65 72 7d 20 73 6d 6f 6f 74 68 69 {Number} smoothi
52590 6e 67 20 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 ng The amount of
525a0 20 73 6d 6f 6f 74 68 69 6e 67 20 61 70 70 6c 69 smoothing appli
525b0 65 64 20 62 65 74 77 65 65 6e 20 66 72 61 6d 65 ed between frame
525c0 73 2e 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c s.... * @exampl
525d0 65 0a 09 09 20 2a 20 76 61 72 20 6d 65 74 65 72 e... * var meter
525e0 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 65 74 65 = new Tone.Mete
525f0 72 28 29 3b 0a 09 09 20 2a 20 76 61 72 20 6d 69 r();... * var mi
52600 63 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 55 73 65 c = new Tone.Use
52610 72 4d 65 64 69 61 28 29 2e 73 74 61 72 74 28 29 rMedia().start()
52620 3b 0a 09 09 20 2a 20 2f 2f 63 6f 6e 6e 65 63 74 ;... * //connect
52630 20 6d 69 63 20 74 6f 20 74 68 65 20 6d 65 74 65 mic to the mete
52640 72 0a 09 09 20 2a 20 6d 69 63 2e 63 6f 6e 6e 65 r... * mic.conne
52650 63 74 28 6d 65 74 65 72 29 3b 0a 09 09 20 2a 20 ct(meter);... *
52660 2f 2f 74 68 65 20 63 75 72 72 65 6e 74 20 6c 65 //the current le
52670 76 65 6c 20 6f 66 20 74 68 65 20 6d 69 63 20 69 vel of the mic i
52680 6e 70 75 74 0a 09 09 20 2a 20 76 61 72 20 6c 65 nput... * var le
52690 76 65 6c 20 3d 20 6d 65 74 65 72 2e 76 61 6c 75 vel = meter.valu
526a0 65 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f e;... */.. To
526b0 6e 65 2e 4d 65 74 65 72 20 3d 20 66 75 6e 63 74 ne.Meter = funct
526c0 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
526d0 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 var options =
526e0 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 this.optionsObje
526f0 63 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a ct(arguments, [.
52700 09 20 20 20 20 20 20 20 20 20 20 20 20 27 74 79 . 'ty
52710 70 65 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 pe',..
52720 20 20 27 73 6d 6f 6f 74 68 69 6e 67 27 0a 09 20 'smoothing'..
52730 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 4d ], Tone.M
52740 65 74 65 72 2e 64 65 66 61 75 6c 74 73 29 3b 0a eter.defaults);.
52750 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
52760 20 2a 20 20 54 68 65 20 74 79 70 65 20 6f 66 20 * The type of
52770 74 68 65 20 6d 65 74 65 72 2c 20 65 69 74 68 65 the meter, eithe
52780 72 20 22 6c 65 76 65 6c 22 20 6f 72 20 22 73 69 r "level" or "si
52790 67 6e 61 6c 22 2e 20 0a 09 09 09 20 2a 20 20 41 gnal". .... * A
527a0 20 22 6c 65 76 65 6c 22 20 6d 65 74 65 72 20 77 "level" meter w
527b0 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65 20 76 ill return the v
527c0 6f 6c 75 6d 65 20 6c 65 76 65 6c 20 28 72 6d 73 olume level (rms
527d0 29 20 6f 66 20 74 68 65 20 0a 09 09 09 20 2a 20 ) of the .... *
527e0 20 69 6e 70 75 74 20 73 69 67 6e 61 6c 20 61 6e input signal an
527f0 64 20 61 20 22 73 69 67 6e 61 6c 22 20 6d 65 74 d a "signal" met
52800 65 72 20 77 69 6c 6c 20 72 65 74 75 72 6e 0a 09 er will return..
52810 09 09 20 2a 20 20 74 68 65 20 73 69 67 6e 61 6c .. * the signal
52820 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 69 6e value of the in
52830 70 75 74 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 put. .... * @ty
52840 70 65 20 20 7b 53 74 72 69 6e 67 7d 0a 09 09 09 pe {String}....
52850 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
52860 73 2e 74 79 70 65 20 3d 20 6f 70 74 69 6f 6e 73 s.type = options
52870 2e 74 79 70 65 3b 0a 09 20 20 20 20 20 20 20 20 .type;..
52880 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 61 /**.... * The a
52890 6e 61 6c 79 73 65 72 20 6e 6f 64 65 20 77 68 69 nalyser node whi
528a0 63 68 20 63 6f 6d 70 75 74 65 73 20 74 68 65 20 ch computes the
528b0 6c 65 76 65 6c 73 2e 0a 09 09 09 20 2a 20 20 40 levels..... * @
528c0 70 72 69 76 61 74 65 0a 09 09 09 20 2a 20 20 40 private.... * @
528d0 74 79 70 65 20 20 7b 54 6f 6e 65 2e 41 6e 61 6c type {Tone.Anal
528e0 79 73 65 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 yser}.... */..
528f0 20 20 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74 this.input
52900 20 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 20 3d = this.output =
52910 20 74 68 69 73 2e 5f 61 6e 61 6c 79 73 65 72 20 this._analyser
52920 3d 20 6e 65 77 20 54 6f 6e 65 2e 41 6e 61 6c 79 = new Tone.Analy
52930 73 65 72 28 27 77 61 76 65 66 6f 72 6d 27 2c 20 ser('waveform',
52940 35 31 32 29 3b 0a 09 20 20 20 20 20 20 20 20 74 512);.. t
52950 68 69 73 2e 5f 61 6e 61 6c 79 73 65 72 2e 72 65 his._analyser.re
52960 74 75 72 6e 54 79 70 65 20 3d 20 27 66 6c 6f 61 turnType = 'floa
52970 74 27 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a t';.. /**
52980 0a 09 09 09 20 2a 20 20 54 68 65 20 61 6d 6f 75 .... * The amou
52990 6e 74 20 6f 66 20 63 61 72 72 79 6f 76 65 72 20 nt of carryover
529a0 62 65 74 77 65 65 6e 20 74 68 65 20 63 75 72 72 between the curr
529b0 65 6e 74 20 61 6e 64 20 6c 61 73 74 20 66 72 61 ent and last fra
529c0 6d 65 2e 20 0a 09 09 09 20 2a 20 20 4f 6e 6c 79 me. .... * Only
529d0 20 61 70 70 6c 69 65 64 20 6d 65 74 65 72 20 66 applied meter f
529e0 6f 72 20 22 6c 65 76 65 6c 22 20 74 79 70 65 2e or "level" type.
529f0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b .... * @type {
52a00 4e 75 6d 62 65 72 7d 0a 09 09 09 20 2a 2f 0a 09 Number}.... */..
52a10 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 6d 6f this.smo
52a20 6f 74 68 69 6e 67 20 3d 20 6f 70 74 69 6f 6e 73 othing = options
52a30 2e 73 6d 6f 6f 74 68 69 6e 67 3b 0a 09 20 20 20 .smoothing;..
52a40 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
52a50 54 68 65 20 6c 61 73 74 20 63 6f 6d 70 75 74 65 The last compute
52a60 64 20 76 61 6c 75 65 0a 09 09 09 20 2a 20 20 40 d value.... * @
52a70 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 type {Number}...
52a80 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
52a90 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
52aa0 69 73 2e 5f 6c 61 73 74 56 61 6c 75 65 20 3d 20 is._lastValue =
52ab0 30 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 0;.. };..
52ac0 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 Tone.extend(Tone
52ad0 2e 4d 65 74 65 72 29 3b 0a 09 20 20 20 20 2f 2a .Meter);.. /*
52ae0 2a 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 *... * @private
52af0 0a 09 09 20 2a 20 20 40 65 6e 75 6d 20 7b 53 74 ... * @enum {St
52b00 72 69 6e 67 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 ring}... */..
52b10 20 54 6f 6e 65 2e 4d 65 74 65 72 2e 54 79 70 65 Tone.Meter.Type
52b20 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 4c 65 = {.. Le
52b30 76 65 6c 3a 20 27 6c 65 76 65 6c 27 2c 0a 09 20 vel: 'level',..
52b40 20 20 20 20 20 20 20 53 69 67 6e 61 6c 3a 20 27 Signal: '
52b50 73 69 67 6e 61 6c 27 0a 09 20 20 20 20 7d 3b 0a signal'.. };.
52b60 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 . /**... * T
52b70 68 65 20 64 65 66 61 75 6c 74 73 0a 09 09 20 2a he defaults... *
52b80 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d @type {Object}
52b90 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 ... * @static..
52ba0 09 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a . * @const... *
52bb0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 65 74 65 /.. Tone.Mete
52bc0 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 r.defaults = {..
52bd0 20 20 20 20 20 20 20 20 27 73 6d 6f 6f 74 68 69 'smoothi
52be0 6e 67 27 3a 20 30 2e 38 2c 0a 09 20 20 20 20 20 ng': 0.8,..
52bf0 20 20 20 27 74 79 70 65 27 3a 20 54 6f 6e 65 2e 'type': Tone.
52c00 4d 65 74 65 72 2e 54 79 70 65 2e 4c 65 76 65 6c Meter.Type.Level
52c10 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
52c20 2a 0a 09 09 20 2a 20 54 68 65 20 63 75 72 72 65 *... * The curre
52c30 6e 74 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 nt value of the
52c40 6d 65 74 65 72 2e 20 41 20 76 61 6c 75 65 20 6f meter. A value o
52c50 66 20 31 20 69 73 0a 09 09 20 2a 20 22 75 6e 69 f 1 is... * "uni
52c60 74 79 22 2e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 ty".... * @membe
52c70 72 4f 66 20 54 6f 6e 65 2e 4d 65 74 65 72 23 0a rOf Tone.Meter#.
52c80 09 09 20 2a 20 40 74 79 70 65 20 7b 4e 75 6d 62 .. * @type {Numb
52c90 65 72 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 76 er}... * @name v
52ca0 61 6c 75 65 0a 09 09 20 2a 20 40 72 65 61 64 4f alue... * @readO
52cb0 6e 6c 79 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f nly... */.. O
52cc0 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 bject.defineProp
52cd0 65 72 74 79 28 54 6f 6e 65 2e 4d 65 74 65 72 2e erty(Tone.Meter.
52ce0 70 72 6f 74 6f 74 79 70 65 2c 20 27 76 61 6c 75 prototype, 'valu
52cf0 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 e', {.. g
52d00 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
52d10 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 {.. v
52d20 61 72 20 73 69 67 6e 61 6c 20 3d 20 74 68 69 73 ar signal = this
52d30 2e 5f 61 6e 61 6c 79 73 65 72 2e 61 6e 61 6c 79 ._analyser.analy
52d40 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 se();..
52d50 20 20 20 69 66 20 28 74 68 69 73 2e 74 79 70 65 if (this.type
52d60 20 3d 3d 3d 20 54 6f 6e 65 2e 4d 65 74 65 72 2e === Tone.Meter.
52d70 54 79 70 65 2e 4c 65 76 65 6c 29 20 7b 0a 09 20 Type.Level) {..
52d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
52d90 2f 72 6d 73 0a 09 20 20 20 20 20 20 20 20 20 20 /rms..
52da0 20 20 20 20 20 20 76 61 72 20 73 75 6d 20 3d 20 var sum =
52db0 30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 0;..
52dc0 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d for (var i =
52dd0 20 30 3b 20 69 20 3c 20 73 69 67 6e 61 6c 2e 6c 0; i < signal.l
52de0 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 ength; i++) {..
52df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
52e00 20 20 20 73 75 6d 20 2b 3d 20 4d 61 74 68 2e 70 sum += Math.p
52e10 6f 77 28 73 69 67 6e 61 6c 5b 69 5d 2c 20 32 29 ow(signal[i], 2)
52e20 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
52e30 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 }..
52e40 20 20 20 20 20 20 76 61 72 20 72 6d 73 20 3d 20 var rms =
52e50 4d 61 74 68 2e 73 71 72 74 28 73 75 6d 20 2f 20 Math.sqrt(sum /
52e60 73 69 67 6e 61 6c 2e 6c 65 6e 67 74 68 29 3b 0a signal.length);.
52e70 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
52e80 20 2f 2f 73 6d 6f 6f 74 68 20 69 74 0a 09 20 20 //smooth it..
52e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6d rm
52ea0 73 20 3d 20 4d 61 74 68 2e 6d 61 78 28 72 6d 73 s = Math.max(rms
52eb0 2c 20 74 68 69 73 2e 5f 6c 61 73 74 56 61 6c 75 , this._lastValu
52ec0 65 20 2a 20 74 68 69 73 2e 73 6d 6f 6f 74 68 69 e * this.smoothi
52ed0 6e 67 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ng);..
52ee0 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 61 73 74 this._last
52ef0 56 61 6c 75 65 20 3d 20 72 6d 73 3b 0a 09 20 20 Value = rms;..
52f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
52f10 73 63 61 6c 65 20 69 74 0a 09 20 20 20 20 20 20 scale it..
52f20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 75 6e var un
52f30 69 74 79 20 3d 20 30 2e 33 35 3b 0a 09 20 20 20 ity = 0.35;..
52f40 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var
52f50 20 76 61 6c 20 3d 20 72 6d 73 20 2f 20 75 6e 69 val = rms / uni
52f60 74 79 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ty;..
52f70 20 20 20 20 20 2f 2f 73 63 61 6c 65 20 74 68 65 //scale the
52f80 20 6f 75 74 70 75 74 20 63 75 72 76 65 0a 09 20 output curve..
52f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
52fa0 65 74 75 72 6e 20 4d 61 74 68 2e 73 71 72 74 28 eturn Math.sqrt(
52fb0 76 61 6c 29 3b 0a 09 20 20 20 20 20 20 20 20 20 val);..
52fc0 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
52fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
52fe0 75 72 6e 20 73 69 67 6e 61 6c 5b 30 5d 3b 0a 09 urn signal[0];..
52ff0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
53000 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 }.. })
53010 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
53020 20 43 6c 65 61 6e 20 75 70 2e 0a 09 09 20 2a 20 Clean up.... *
53030 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e @returns {Tone.
53040 4d 65 74 65 72 7d 20 74 68 69 73 0a 09 09 20 2a Meter} this... *
53050 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 65 74 65 /.. Tone.Mete
53060 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 r.prototype.disp
53070 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ose = function (
53080 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e ) {.. Ton
53090 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 e.prototype.disp
530a0 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a ose.call(this);.
530b0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 61 . this._a
530c0 6e 61 6c 79 73 65 72 2e 64 69 73 70 6f 73 65 28 nalyser.dispose(
530d0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
530e0 2e 5f 61 6e 61 6c 79 73 65 72 20 3d 20 6e 75 6c ._analyser = nul
530f0 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 l;.. retu
53100 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
53110 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e .. return Ton
53120 65 2e 4d 65 74 65 72 3b 0a 09 7d 29 3b 0a 09 4d e.Meter;..});..M
53130 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 odule(function (
53140 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 Tone) {.. ..
53150 20 20 20 2f 2a 2a 0a 09 09 20 2a 09 40 63 6c 61 /**... *.@cla
53160 73 73 20 20 54 6f 6e 65 2e 53 70 6c 69 74 20 73 ss Tone.Split s
53170 70 6c 69 74 73 20 61 6e 20 69 6e 63 6f 6d 69 6e plits an incomin
53180 67 20 73 69 67 6e 61 6c 20 69 6e 74 6f 20 6c 65 g signal into le
53190 66 74 20 61 6e 64 20 72 69 67 68 74 20 63 68 61 ft and right cha
531a0 6e 6e 65 6c 73 2e 0a 09 09 20 2a 09 0a 09 09 20 nnels.... *....
531b0 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a * @constructor.
531c0 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b .. * @extends {
531d0 54 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 65 78 61 Tone}... * @exa
531e0 6d 70 6c 65 0a 09 09 20 2a 20 76 61 72 20 73 70 mple... * var sp
531f0 6c 69 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 lit = new Tone.S
53200 70 6c 69 74 28 29 3b 0a 09 09 20 2a 20 73 74 65 plit();... * ste
53210 72 65 6f 53 69 67 6e 61 6c 2e 63 6f 6e 6e 65 63 reoSignal.connec
53220 74 28 73 70 6c 69 74 29 3b 0a 09 09 20 2a 2f 0a t(split);... */.
53230 09 20 20 20 20 54 6f 6e 65 2e 53 70 6c 69 74 20 . Tone.Split
53240 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
53250 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 72 . this.cr
53260 65 61 74 65 49 6e 73 4f 75 74 73 28 30 2c 20 32 eateInsOuts(0, 2
53270 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 20 );.. /**
53280 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 43 .... * @type {C
53290 68 61 6e 6e 65 6c 53 70 6c 69 74 74 65 72 4e 6f hannelSplitterNo
532a0 64 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 de}.... * @priv
532b0 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
532c0 20 20 20 20 74 68 69 73 2e 5f 73 70 6c 69 74 74 this._splitt
532d0 65 72 20 3d 20 74 68 69 73 2e 69 6e 70 75 74 20 er = this.input
532e0 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 63 = this.context.c
532f0 72 65 61 74 65 43 68 61 6e 6e 65 6c 53 70 6c 69 reateChannelSpli
53300 74 74 65 72 28 32 29 3b 0a 09 20 20 20 20 20 20 tter(2);..
53310 20 20 2f 2a 2a 20 0a 09 09 09 20 2a 20 20 4c 65 /** .... * Le
53320 66 74 20 63 68 61 6e 6e 65 6c 20 6f 75 74 70 75 ft channel outpu
53330 74 2e 20 0a 09 09 09 20 2a 20 20 41 6c 69 61 73 t. .... * Alias
53340 20 66 6f 72 20 3c 63 6f 64 65 3e 6f 75 74 70 75 for <code>outpu
53350 74 5b 30 5d 3c 2f 63 6f 64 65 3e 0a 09 09 09 20 t[0]</code>....
53360 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 47 * @type {Tone.G
53370 61 69 6e 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 ain}.... */..
53380 20 20 20 20 20 74 68 69 73 2e 6c 65 66 74 20 3d this.left =
53390 20 74 68 69 73 2e 6f 75 74 70 75 74 5b 30 5d 20 this.output[0]
533a0 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 = new Tone.Gain(
533b0 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
533c0 09 09 09 20 2a 20 20 52 69 67 68 74 20 63 68 61 ... * Right cha
533d0 6e 6e 65 6c 20 6f 75 74 70 75 74 2e 0a 09 09 09 nnel output.....
533e0 20 2a 20 20 41 6c 69 61 73 20 66 6f 72 20 3c 63 * Alias for <c
533f0 6f 64 65 3e 6f 75 74 70 75 74 5b 31 5d 3c 2f 63 ode>output[1]</c
53400 6f 64 65 3e 0a 09 09 09 20 2a 20 20 40 74 79 70 ode>.... * @typ
53410 65 20 7b 54 6f 6e 65 2e 47 61 69 6e 7d 0a 09 09 e {Tone.Gain}...
53420 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
53430 69 73 2e 72 69 67 68 74 20 3d 20 74 68 69 73 2e is.right = this.
53440 6f 75 74 70 75 74 5b 31 5d 20 3d 20 6e 65 77 20 output[1] = new
53450 54 6f 6e 65 2e 47 61 69 6e 28 29 3b 0a 09 20 20 Tone.Gain();..
53460 20 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 63 74 69 //connecti
53470 6f 6e 73 0a 09 20 20 20 20 20 20 20 20 74 68 69 ons.. thi
53480 73 2e 5f 73 70 6c 69 74 74 65 72 2e 63 6f 6e 6e s._splitter.conn
53490 65 63 74 28 74 68 69 73 2e 6c 65 66 74 2c 20 30 ect(this.left, 0
534a0 2c 20 30 29 3b 0a 09 20 20 20 20 20 20 20 20 74 , 0);.. t
534b0 68 69 73 2e 5f 73 70 6c 69 74 74 65 72 2e 63 6f his._splitter.co
534c0 6e 6e 65 63 74 28 74 68 69 73 2e 72 69 67 68 74 nnect(this.right
534d0 2c 20 31 2c 20 30 29 3b 0a 09 20 20 20 20 7d 3b , 1, 0);.. };
534e0 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e .. Tone.exten
534f0 64 28 54 6f 6e 65 2e 53 70 6c 69 74 29 3b 0a 09 d(Tone.Split);..
53500 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c /**... * Cl
53510 65 61 6e 20 75 70 2e 20 0a 09 09 20 2a 20 20 40 ean up. ... * @
53520 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 70 returns {Tone.Sp
53530 6c 69 74 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a lit} this... */.
53540 09 20 20 20 20 54 6f 6e 65 2e 53 70 6c 69 74 2e . Tone.Split.
53550 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
53560 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 e = function ()
53570 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e {.. Tone.
53580 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
53590 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 e.call(this);..
535a0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 70 6c this._spl
535b0 69 74 74 65 72 2e 64 69 73 63 6f 6e 6e 65 63 74 itter.disconnect
535c0 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
535d0 73 2e 6c 65 66 74 2e 64 69 73 70 6f 73 65 28 29 s.left.dispose()
535e0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
535f0 6c 65 66 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 left = null;..
53600 20 20 20 20 20 20 74 68 69 73 2e 72 69 67 68 74 this.right
53610 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
53620 20 20 20 20 20 74 68 69 73 2e 72 69 67 68 74 20 this.right
53630 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
53640 20 74 68 69 73 2e 5f 73 70 6c 69 74 74 65 72 20 this._splitter
53650 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
53660 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
53670 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
53680 6e 20 54 6f 6e 65 2e 53 70 6c 69 74 3b 0a 09 7d n Tone.Split;..}
53690 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
536a0 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
536b0 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a .. /**... *
536c0 20 20 40 63 6c 61 73 73 20 4d 69 64 2f 53 69 64 @class Mid/Sid
536d0 65 20 70 72 6f 63 65 73 73 69 6e 67 20 73 65 70 e processing sep
536e0 61 72 61 74 65 73 20 74 68 65 20 74 68 65 20 27 arates the the '
536f0 6d 69 64 27 20 73 69 67 6e 61 6c 20 0a 09 09 20 mid' signal ...
53700 2a 20 20 20 20 20 20 20 20 20 28 77 68 69 63 68 * (which
53710 20 63 6f 6d 65 73 20 6f 75 74 20 6f 66 20 62 6f comes out of bo
53720 74 68 20 74 68 65 20 6c 65 66 74 20 61 6e 64 20 th the left and
53730 74 68 65 20 72 69 67 68 74 20 63 68 61 6e 6e 65 the right channe
53740 6c 29 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 l) ... *
53750 20 61 6e 64 20 74 68 65 20 27 73 69 64 65 27 20 and the 'side'
53760 28 77 68 69 63 68 20 6f 6e 6c 79 20 63 6f 6d 65 (which only come
53770 73 20 6f 75 74 20 6f 66 20 74 68 65 20 74 68 65 s out of the the
53780 20 73 69 64 65 20 63 68 61 6e 6e 65 6c 73 29 2e side channels).
53790 20 3c 62 72 3e 3c 62 72 3e 0a 09 09 20 2a 20 20 <br><br>... *
537a0 20 20 20 20 20 20 20 3c 63 6f 64 65 3e 0a 09 09 <code>...
537b0 20 2a 20 20 20 20 20 20 20 20 20 4d 69 64 20 3d * Mid =
537c0 20 28 4c 65 66 74 2b 52 69 67 68 74 29 2f 73 71 (Left+Right)/sq
537d0 72 74 28 32 29 3b 20 20 20 2f 2f 20 6f 62 74 61 rt(2); // obta
537e0 69 6e 20 6d 69 64 2d 73 69 67 6e 61 6c 20 66 72 in mid-signal fr
537f0 6f 6d 20 6c 65 66 74 20 61 6e 64 20 72 69 67 68 om left and righ
53800 74 3c 62 72 3e 0a 09 09 20 2a 20 20 20 20 20 20 t<br>... *
53810 20 20 20 53 69 64 65 20 3d 20 28 4c 65 66 74 2d Side = (Left-
53820 52 69 67 68 74 29 2f 73 71 72 74 28 32 29 3b 20 Right)/sqrt(2);
53830 20 20 2f 2f 20 6f 62 74 61 69 6e 20 73 69 64 65 // obtain side
53840 2d 73 69 67 6e 61 6c 20 66 72 6f 6d 20 6c 65 66 -signal from lef
53850 74 20 61 6e 64 20 72 69 67 68 3c 62 72 3e 0a 09 t and righ<br>..
53860 09 20 2a 20 20 20 20 20 20 20 20 20 3c 2f 63 6f . * </co
53870 64 65 3e 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 de>... *... * @
53880 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 extends {Tone}..
53890 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f . * @constructo
538a0 72 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e r... */.. Ton
538b0 65 2e 4d 69 64 53 69 64 65 53 70 6c 69 74 20 3d e.MidSideSplit =
538c0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
538d0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 72 65 this.cre
538e0 61 74 65 49 6e 73 4f 75 74 73 28 30 2c 20 32 29 ateInsOuts(0, 2)
538f0 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
53900 09 09 20 2a 20 20 73 70 6c 69 74 20 74 68 65 20 .. * split the
53910 69 6e 63 6f 6d 69 6e 67 20 73 69 67 6e 61 6c 20 incoming signal
53920 69 6e 74 6f 20 6c 65 66 74 20 61 6e 64 20 72 69 into left and ri
53930 67 68 74 20 63 68 61 6e 6e 65 6c 73 0a 09 09 09 ght channels....
53940 20 2a 20 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 * @type {Tone
53950 2e 53 70 6c 69 74 7d 0a 09 09 09 20 2a 20 20 40 .Split}.... * @
53960 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
53970 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 70 this._sp
53980 6c 69 74 20 3d 20 74 68 69 73 2e 69 6e 70 75 74 lit = this.input
53990 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 70 6c 69 = new Tone.Spli
539a0 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a t();.. /*
539b0 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 6d 69 64 *.... * The mid
539c0 20 73 65 6e 64 2e 20 43 6f 6e 6e 65 63 74 20 74 send. Connect t
539d0 6f 20 6d 69 64 20 70 72 6f 63 65 73 73 69 6e 67 o mid processing
539e0 2e 20 41 6c 69 61 73 20 66 6f 72 0a 09 09 09 20 . Alias for....
539f0 2a 20 20 3c 63 6f 64 65 3e 6f 75 74 70 75 74 5b * <code>output[
53a00 30 5d 3c 2f 63 6f 64 65 3e 0a 09 09 09 20 2a 20 0]</code>.... *
53a10 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 45 78 70 @type {Tone.Exp
53a20 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 r}.... */..
53a30 20 20 20 74 68 69 73 2e 6d 69 64 20 3d 20 74 68 this.mid = th
53a40 69 73 2e 6f 75 74 70 75 74 5b 30 5d 20 3d 20 6e is.output[0] = n
53a50 65 77 20 54 6f 6e 65 2e 45 78 70 72 28 27 28 24 ew Tone.Expr('($
53a60 30 20 2b 20 24 31 29 20 2a 20 24 32 27 29 3b 0a 0 + $1) * $2');.
53a70 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
53a80 20 2a 20 20 54 68 65 20 73 69 64 65 20 6f 75 74 * The side out
53a90 70 75 74 2e 20 43 6f 6e 6e 65 63 74 20 74 6f 20 put. Connect to
53aa0 73 69 64 65 20 70 72 6f 63 65 73 73 69 6e 67 2e side processing.
53ab0 20 41 6c 69 61 73 20 66 6f 72 0a 09 09 09 20 2a Alias for.... *
53ac0 20 20 3c 63 6f 64 65 3e 6f 75 74 70 75 74 5b 31 <code>output[1
53ad0 5d 3c 2f 63 6f 64 65 3e 0a 09 09 09 20 2a 20 20 ]</code>.... *
53ae0 40 74 79 70 65 20 7b 54 6f 6e 65 2e 45 78 70 72 @type {Tone.Expr
53af0 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 }.... */..
53b00 20 20 74 68 69 73 2e 73 69 64 65 20 3d 20 74 68 this.side = th
53b10 69 73 2e 6f 75 74 70 75 74 5b 31 5d 20 3d 20 6e is.output[1] = n
53b20 65 77 20 54 6f 6e 65 2e 45 78 70 72 28 27 28 24 ew Tone.Expr('($
53b30 30 20 2d 20 24 31 29 20 2a 20 24 32 27 29 3b 0a 0 - $1) * $2');.
53b40 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 . this._s
53b50 70 6c 69 74 2e 63 6f 6e 6e 65 63 74 28 74 68 69 plit.connect(thi
53b60 73 2e 6d 69 64 2c 20 30 2c 20 30 29 3b 0a 09 20 s.mid, 0, 0);..
53b70 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 70 6c this._spl
53b80 69 74 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e it.connect(this.
53b90 6d 69 64 2c 20 31 2c 20 31 29 3b 0a 09 20 20 20 mid, 1, 1);..
53ba0 20 20 20 20 20 74 68 69 73 2e 5f 73 70 6c 69 74 this._split
53bb0 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 73 69 .connect(this.si
53bc0 64 65 2c 20 30 2c 20 30 29 3b 0a 09 20 20 20 20 de, 0, 0);..
53bd0 20 20 20 20 74 68 69 73 2e 5f 73 70 6c 69 74 2e this._split.
53be0 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 73 69 64 connect(this.sid
53bf0 65 2c 20 31 2c 20 31 29 3b 0a 09 20 20 20 20 20 e, 1, 1);..
53c00 20 20 20 73 71 72 74 54 77 6f 2e 63 6f 6e 6e 65 sqrtTwo.conne
53c10 63 74 28 74 68 69 73 2e 6d 69 64 2c 20 30 2c 20 ct(this.mid, 0,
53c20 32 29 3b 0a 09 20 20 20 20 20 20 20 20 73 71 72 2);.. sqr
53c30 74 54 77 6f 2e 63 6f 6e 6e 65 63 74 28 74 68 69 tTwo.connect(thi
53c40 73 2e 73 69 64 65 2c 20 30 2c 20 32 29 3b 0a 09 s.side, 0, 2);..
53c50 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 };.. Tone
53c60 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 4d 69 64 .extend(Tone.Mid
53c70 53 69 64 65 53 70 6c 69 74 29 3b 0a 09 20 20 20 SideSplit);..
53c80 20 2f 2a 2a 0a 09 09 20 2a 20 20 61 20 63 6f 6e /**... * a con
53c90 73 74 61 6e 74 20 73 69 67 6e 61 6c 20 65 71 75 stant signal equ
53ca0 61 6c 20 74 6f 20 31 20 2f 20 73 71 72 74 28 32 al to 1 / sqrt(2
53cb0 29 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e )... * @type {N
53cc0 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 73 69 umber}... * @si
53cd0 67 6e 61 6c 0a 09 09 20 2a 20 20 40 70 72 69 76 gnal... * @priv
53ce0 61 74 65 0a 09 09 20 2a 20 20 40 73 74 61 74 69 ate... * @stati
53cf0 63 0a 09 09 20 2a 2f 0a 09 20 20 20 20 76 61 72 c... */.. var
53d00 20 73 71 72 74 54 77 6f 20 3d 20 6e 75 6c 6c 3b sqrtTwo = null;
53d10 0a 09 20 20 20 20 54 6f 6e 65 2e 5f 69 6e 69 74 .. Tone._init
53d20 41 75 64 69 6f 43 6f 6e 74 65 78 74 28 66 75 6e AudioContext(fun
53d30 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
53d40 20 20 20 20 73 71 72 74 54 77 6f 20 3d 20 6e 65 sqrtTwo = ne
53d50 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 31 20 w Tone.Signal(1
53d60 2f 20 4d 61 74 68 2e 73 71 72 74 28 32 29 29 3b / Math.sqrt(2));
53d70 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f .. });.. /
53d80 2a 2a 0a 09 09 20 2a 20 20 63 6c 65 61 6e 20 75 **... * clean u
53d90 70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 p... * @returns
53da0 20 7b 54 6f 6e 65 2e 4d 69 64 53 69 64 65 53 70 {Tone.MidSideSp
53db0 6c 69 74 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a lit} this... */.
53dc0 09 20 20 20 20 54 6f 6e 65 2e 4d 69 64 53 69 64 . Tone.MidSid
53dd0 65 53 70 6c 69 74 2e 70 72 6f 74 6f 74 79 70 65 eSplit.prototype
53de0 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 .dispose = funct
53df0 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
53e00 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 Tone.prototype
53e10 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 .dispose.call(th
53e20 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 is);.. th
53e30 69 73 2e 6d 69 64 2e 64 69 73 70 6f 73 65 28 29 is.mid.dispose()
53e40 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
53e50 6d 69 64 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 mid = null;..
53e60 20 20 20 20 20 74 68 69 73 2e 73 69 64 65 2e 64 this.side.d
53e70 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
53e80 20 20 20 74 68 69 73 2e 73 69 64 65 20 3d 20 6e this.side = n
53e90 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
53ea0 69 73 2e 5f 73 70 6c 69 74 2e 64 69 73 70 6f 73 is._split.dispos
53eb0 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
53ec0 69 73 2e 5f 73 70 6c 69 74 20 3d 20 6e 75 6c 6c is._split = null
53ed0 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
53ee0 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
53ef0 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 . return Tone
53f00 2e 4d 69 64 53 69 64 65 53 70 6c 69 74 3b 0a 09 .MidSideSplit;..
53f10 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 });..Module(func
53f20 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 tion (Tone) {..
53f30 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 .. /**...
53f40 2a 20 20 40 63 6c 61 73 73 20 4d 69 64 2f 53 69 * @class Mid/Si
53f50 64 65 20 70 72 6f 63 65 73 73 69 6e 67 20 73 65 de processing se
53f60 70 61 72 61 74 65 73 20 74 68 65 20 74 68 65 20 parates the the
53f70 27 6d 69 64 27 20 73 69 67 6e 61 6c 20 0a 09 09 'mid' signal ...
53f80 20 2a 20 20 20 20 20 20 20 20 20 28 77 68 69 63 * (whic
53f90 68 20 63 6f 6d 65 73 20 6f 75 74 20 6f 66 20 62 h comes out of b
53fa0 6f 74 68 20 74 68 65 20 6c 65 66 74 20 61 6e 64 oth the left and
53fb0 20 74 68 65 20 72 69 67 68 74 20 63 68 61 6e 6e the right chann
53fc0 65 6c 29 20 0a 09 09 20 2a 20 20 20 20 20 20 20 el) ... *
53fd0 20 20 61 6e 64 20 74 68 65 20 27 73 69 64 65 27 and the 'side'
53fe0 20 28 77 68 69 63 68 20 6f 6e 6c 79 20 63 6f 6d (which only com
53ff0 65 73 20 6f 75 74 20 6f 66 20 74 68 65 20 74 68 es out of the th
54000 65 20 73 69 64 65 20 63 68 61 6e 6e 65 6c 73 29 e side channels)
54010 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 . ... *
54020 4d 69 64 53 69 64 65 4d 65 72 67 65 20 6d 65 72 MidSideMerge mer
54030 67 65 73 20 74 68 65 20 6d 69 64 20 61 6e 64 20 ges the mid and
54040 73 69 64 65 20 73 69 67 6e 61 6c 20 61 66 74 65 side signal afte
54050 72 20 74 68 65 79 27 76 65 20 62 65 65 6e 20 73 r they've been s
54060 65 70 65 72 61 74 65 64 0a 09 09 20 2a 20 20 20 eperated... *
54070 20 20 20 20 20 20 62 79 20 54 6f 6e 65 2e 4d 69 by Tone.Mi
54080 64 53 69 64 65 53 70 6c 69 74 2e 3c 62 72 3e 3c dSideSplit.<br><
54090 62 72 3e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 br>... *
540a0 20 3c 63 6f 64 65 3e 0a 09 09 20 2a 20 20 20 20 <code>... *
540b0 20 20 20 20 20 4c 65 66 74 20 3d 20 28 4d 69 64 Left = (Mid
540c0 2b 53 69 64 65 29 2f 73 71 72 74 28 32 29 3b 20 +Side)/sqrt(2);
540d0 20 20 2f 2f 20 6f 62 74 61 69 6e 20 6c 65 66 74 // obtain left
540e0 20 73 69 67 6e 61 6c 20 66 72 6f 6d 20 6d 69 64 signal from mid
540f0 20 61 6e 64 20 73 69 64 65 3c 62 72 3e 0a 09 09 and side<br>...
54100 20 2a 20 20 20 20 20 20 20 20 20 52 69 67 68 74 * Right
54110 20 3d 20 28 4d 69 64 2d 53 69 64 65 29 2f 73 71 = (Mid-Side)/sq
54120 72 74 28 32 29 3b 20 20 20 2f 2f 20 6f 62 74 61 rt(2); // obta
54130 69 6e 20 72 69 67 68 74 20 73 69 67 6e 61 6c 20 in right signal
54140 66 72 6f 6d 20 6d 69 64 20 61 6e 64 20 73 69 64 from mid and sid
54150 65 3c 62 72 3e 0a 09 09 20 2a 20 20 20 20 20 20 e<br>... *
54160 20 20 20 3c 2f 63 6f 64 65 3e 0a 09 09 20 2a 0a </code>... *.
54170 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b .. * @extends {
54180 54 6f 6e 65 2e 53 74 65 72 65 6f 45 66 66 65 63 Tone.StereoEffec
54190 74 7d 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 t}... * @constr
541a0 75 63 74 6f 72 0a 09 09 20 2a 2f 0a 09 20 20 20 uctor... */..
541b0 20 54 6f 6e 65 2e 4d 69 64 53 69 64 65 4d 65 72 Tone.MidSideMer
541c0 67 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 ge = function ()
541d0 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 {.. this
541e0 2e 63 72 65 61 74 65 49 6e 73 4f 75 74 73 28 32 .createInsOuts(2
541f0 2c 20 30 29 3b 0a 09 20 20 20 20 20 20 20 20 2f , 0);.. /
54200 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 6d 69 **.... * The mi
54210 64 20 73 69 67 6e 61 6c 20 69 6e 70 75 74 2e 20 d signal input.
54220 41 6c 69 61 73 20 66 6f 72 0a 09 09 09 20 2a 20 Alias for.... *
54230 20 3c 63 6f 64 65 3e 69 6e 70 75 74 5b 30 5d 3c <code>input[0]<
54240 2f 63 6f 64 65 3e 0a 09 09 09 20 2a 20 20 40 74 /code>.... * @t
54250 79 70 65 20 20 7b 54 6f 6e 65 2e 47 61 69 6e 7d ype {Tone.Gain}
54260 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
54270 20 74 68 69 73 2e 6d 69 64 20 3d 20 74 68 69 73 this.mid = this
54280 2e 69 6e 70 75 74 5b 30 5d 20 3d 20 6e 65 77 20 .input[0] = new
54290 54 6f 6e 65 2e 47 61 69 6e 28 29 3b 0a 09 20 20 Tone.Gain();..
542a0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
542b0 20 72 65 63 6f 6d 62 69 6e 65 20 74 68 65 20 6d recombine the m
542c0 69 64 2f 73 69 64 65 20 69 6e 74 6f 20 4c 65 66 id/side into Lef
542d0 74 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b t.... * @type {
542e0 54 6f 6e 65 2e 45 78 70 72 7d 0a 09 09 09 20 2a Tone.Expr}.... *
542f0 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
54300 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
54310 5f 6c 65 66 74 20 3d 20 6e 65 77 20 54 6f 6e 65 _left = new Tone
54320 2e 45 78 70 72 28 27 28 24 30 20 2b 20 24 31 29 .Expr('($0 + $1)
54330 20 2a 20 24 32 27 29 3b 0a 09 20 20 20 20 20 20 * $2');..
54340 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
54350 20 73 69 64 65 20 73 69 67 6e 61 6c 20 69 6e 70 side signal inp
54360 75 74 2e 20 41 6c 69 61 73 20 66 6f 72 0a 09 09 ut. Alias for...
54370 09 20 2a 20 20 3c 63 6f 64 65 3e 69 6e 70 75 74 . * <code>input
54380 5b 31 5d 3c 2f 63 6f 64 65 3e 0a 09 09 09 20 2a [1]</code>.... *
54390 20 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 2e 47 @type {Tone.G
543a0 61 69 6e 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 ain}.... */..
543b0 20 20 20 20 20 74 68 69 73 2e 73 69 64 65 20 3d this.side =
543c0 20 74 68 69 73 2e 69 6e 70 75 74 5b 31 5d 20 3d this.input[1] =
543d0 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 29 new Tone.Gain()
543e0 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
543f0 09 09 20 2a 20 20 72 65 63 6f 6d 62 69 6e 65 20 .. * recombine
54400 74 68 65 20 6d 69 64 2f 73 69 64 65 20 69 6e 74 the mid/side int
54410 6f 20 52 69 67 68 74 0a 09 09 09 20 2a 20 20 40 o Right.... * @
54420 74 79 70 65 20 7b 54 6f 6e 65 2e 45 78 70 72 7d type {Tone.Expr}
54430 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
54440 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
54450 20 74 68 69 73 2e 5f 72 69 67 68 74 20 3d 20 6e this._right = n
54460 65 77 20 54 6f 6e 65 2e 45 78 70 72 28 27 28 24 ew Tone.Expr('($
54470 30 20 2d 20 24 31 29 20 2a 20 24 32 27 29 3b 0a 0 - $1) * $2');.
54480 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
54490 20 2a 20 20 4d 65 72 67 65 20 74 68 65 20 6c 65 * Merge the le
544a0 66 74 2f 72 69 67 68 74 20 73 69 67 6e 61 6c 20 ft/right signal
544b0 62 61 63 6b 20 69 6e 74 6f 20 61 20 73 74 65 72 back into a ster
544c0 65 6f 20 73 69 67 6e 61 6c 2e 0a 09 09 09 20 2a eo signal..... *
544d0 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4d 65 @type {Tone.Me
544e0 72 67 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 rge}.... * @pri
544f0 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
54500 20 20 20 20 20 74 68 69 73 2e 5f 6d 65 72 67 65 this._merge
54510 20 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 20 3d = this.output =
54520 20 6e 65 77 20 54 6f 6e 65 2e 4d 65 72 67 65 28 new Tone.Merge(
54530 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
54540 2e 6d 69 64 2e 63 6f 6e 6e 65 63 74 28 74 68 69 .mid.connect(thi
54550 73 2e 5f 6c 65 66 74 2c 20 30 2c 20 30 29 3b 0a s._left, 0, 0);.
54560 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 69 . this.si
54570 64 65 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e de.connect(this.
54580 5f 6c 65 66 74 2c 20 30 2c 20 31 29 3b 0a 09 20 _left, 0, 1);..
54590 20 20 20 20 20 20 20 74 68 69 73 2e 6d 69 64 2e this.mid.
545a0 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 72 69 connect(this._ri
545b0 67 68 74 2c 20 30 2c 20 30 29 3b 0a 09 20 20 20 ght, 0, 0);..
545c0 20 20 20 20 20 74 68 69 73 2e 73 69 64 65 2e 63 this.side.c
545d0 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 72 69 67 onnect(this._rig
545e0 68 74 2c 20 30 2c 20 31 29 3b 0a 09 20 20 20 20 ht, 0, 1);..
545f0 20 20 20 20 74 68 69 73 2e 5f 6c 65 66 74 2e 63 this._left.c
54600 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 6d 65 72 onnect(this._mer
54610 67 65 2c 20 30 2c 20 30 29 3b 0a 09 20 20 20 20 ge, 0, 0);..
54620 20 20 20 20 74 68 69 73 2e 5f 72 69 67 68 74 2e this._right.
54630 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 6d 65 connect(this._me
54640 72 67 65 2c 20 30 2c 20 31 29 3b 0a 09 20 20 20 rge, 0, 1);..
54650 20 20 20 20 20 73 71 72 74 54 77 6f 2e 63 6f 6e sqrtTwo.con
54660 6e 65 63 74 28 74 68 69 73 2e 5f 6c 65 66 74 2c nect(this._left,
54670 20 30 2c 20 32 29 3b 0a 09 20 20 20 20 20 20 20 0, 2);..
54680 20 73 71 72 74 54 77 6f 2e 63 6f 6e 6e 65 63 74 sqrtTwo.connect
54690 28 74 68 69 73 2e 5f 72 69 67 68 74 2c 20 30 2c (this._right, 0,
546a0 20 32 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 2);.. };..
546b0 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
546c0 6e 65 2e 4d 69 64 53 69 64 65 4d 65 72 67 65 29 ne.MidSideMerge)
546d0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
546e0 20 41 20 63 6f 6e 73 74 61 6e 74 20 73 69 67 6e A constant sign
546f0 61 6c 20 65 71 75 61 6c 20 74 6f 20 31 20 2f 20 al equal to 1 /
54700 73 71 72 74 28 32 29 2e 0a 09 09 20 2a 20 20 40 sqrt(2).... * @
54710 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 type {Number}...
54720 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 20 2a * @signal... *
54730 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 20 @private... *
54740 20 40 73 74 61 74 69 63 0a 09 09 20 2a 2f 0a 09 @static... */..
54750 20 20 20 20 76 61 72 20 73 71 72 74 54 77 6f 20 var sqrtTwo
54760 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 54 6f 6e = null;.. Ton
54770 65 2e 5f 69 6e 69 74 41 75 64 69 6f 43 6f 6e 74 e._initAudioCont
54780 65 78 74 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 ext(function ()
54790 7b 0a 09 20 20 20 20 20 20 20 20 73 71 72 74 54 {.. sqrtT
547a0 77 6f 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 wo = new Tone.Si
547b0 67 6e 61 6c 28 31 20 2f 20 4d 61 74 68 2e 73 71 gnal(1 / Math.sq
547c0 72 74 28 32 29 29 3b 0a 09 20 20 20 20 7d 29 3b rt(2));.. });
547d0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
547e0 63 6c 65 61 6e 20 75 70 0a 09 09 20 2a 20 20 40 clean up... * @
547f0 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 4d 69 returns {Tone.Mi
54800 64 53 69 64 65 4d 65 72 67 65 7d 20 74 68 69 73 dSideMerge} this
54810 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
54820 2e 4d 69 64 53 69 64 65 4d 65 72 67 65 2e 70 72 .MidSideMerge.pr
54830 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 ototype.dispose
54840 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
54850 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 . Tone.pr
54860 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e ototype.dispose.
54870 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 call(this);..
54880 20 20 20 20 20 74 68 69 73 2e 6d 69 64 2e 64 69 this.mid.di
54890 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
548a0 20 20 74 68 69 73 2e 6d 69 64 20 3d 20 6e 75 6c this.mid = nul
548b0 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
548c0 2e 73 69 64 65 2e 64 69 73 70 6f 73 65 28 29 3b .side.dispose();
548d0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 .. this.s
548e0 69 64 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ide = null;..
548f0 20 20 20 20 20 74 68 69 73 2e 5f 6c 65 66 74 2e this._left.
54900 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
54910 20 20 20 20 74 68 69 73 2e 5f 6c 65 66 74 20 3d this._left =
54920 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
54930 74 68 69 73 2e 5f 72 69 67 68 74 2e 64 69 73 70 this._right.disp
54940 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
54950 74 68 69 73 2e 5f 72 69 67 68 74 20 3d 20 6e 75 this._right = nu
54960 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
54970 73 2e 5f 6d 65 72 67 65 2e 64 69 73 70 6f 73 65 s._merge.dispose
54980 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
54990 73 2e 5f 6d 65 72 67 65 20 3d 20 6e 75 6c 6c 3b s._merge = null;
549a0 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
549b0 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
549c0 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e return Tone.
549d0 4d 69 64 53 69 64 65 4d 65 72 67 65 3b 0a 09 7d MidSideMerge;..}
549e0 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
549f0 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
54a00 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a .. /**... *
54a10 20 20 40 63 6c 61 73 73 20 54 6f 6e 65 2e 4d 69 @class Tone.Mi
54a20 64 53 69 64 65 43 6f 6d 70 72 65 73 73 6f 72 20 dSideCompressor
54a30 61 70 70 6c 69 65 73 20 74 77 6f 20 64 69 66 66 applies two diff
54a40 65 72 65 6e 74 20 63 6f 6d 70 72 65 73 73 6f 72 erent compressor
54a50 73 20 74 6f 20 74 68 65 20 6d 69 64 0a 09 09 20 s to the mid...
54a60 2a 20 20 20 20 20 20 20 20 20 61 6e 64 20 73 69 * and si
54a70 64 65 20 73 69 67 6e 61 6c 20 63 6f 6d 70 6f 6e de signal compon
54a80 65 6e 74 73 2e 20 53 65 65 20 54 6f 6e 65 2e 4d ents. See Tone.M
54a90 69 64 53 69 64 65 53 70 6c 69 74 2e 20 0a 09 09 idSideSplit. ...
54aa0 20 2a 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 *... * @extend
54ab0 73 20 7b 54 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 s {Tone}... * @
54ac0 70 61 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20 6f param {Object} o
54ad0 70 74 69 6f 6e 73 20 54 68 65 20 6f 70 74 69 6f ptions The optio
54ae0 6e 73 20 74 68 61 74 20 61 72 65 20 70 61 73 73 ns that are pass
54af0 65 64 20 74 6f 20 74 68 65 20 6d 69 64 20 61 6e ed to the mid an
54b00 64 20 73 69 64 65 0a 09 09 20 2a 20 20 20 20 20 d side... *
54b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
54b20 20 20 20 20 20 63 6f 6d 70 72 65 73 73 6f 72 73 compressors
54b30 2e 20 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 . ... * @constr
54b40 75 63 74 6f 72 0a 09 09 20 2a 2f 0a 09 20 20 20 uctor... */..
54b50 20 54 6f 6e 65 2e 4d 69 64 53 69 64 65 43 6f 6d Tone.MidSideCom
54b60 70 72 65 73 73 6f 72 20 3d 20 66 75 6e 63 74 69 pressor = functi
54b70 6f 6e 20 28 6f 70 74 69 6f 6e 73 29 20 7b 0a 09 on (options) {..
54b80 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 20 options
54b90 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 = this.defaultAr
54ba0 67 28 6f 70 74 69 6f 6e 73 2c 20 54 6f 6e 65 2e g(options, Tone.
54bb0 4d 69 64 53 69 64 65 43 6f 6d 70 72 65 73 73 6f MidSideCompresso
54bc0 72 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 r.defaults);..
54bd0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
54be0 20 74 68 65 20 6d 69 64 2f 73 69 64 65 20 73 70 the mid/side sp
54bf0 6c 69 74 0a 09 09 09 20 2a 20 20 40 74 79 70 65 lit.... * @type
54c00 20 20 7b 54 6f 6e 65 2e 4d 69 64 53 69 64 65 53 {Tone.MidSideS
54c10 70 6c 69 74 7d 0a 09 09 09 20 2a 20 20 40 70 72 plit}.... * @pr
54c20 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 ivate.... */..
54c30 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 69 64 53 this._midS
54c40 69 64 65 53 70 6c 69 74 20 3d 20 74 68 69 73 2e ideSplit = this.
54c50 69 6e 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 input = new Tone
54c60 2e 4d 69 64 53 69 64 65 53 70 6c 69 74 28 29 3b .MidSideSplit();
54c70 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
54c80 09 20 2a 20 20 74 68 65 20 6d 69 64 2f 73 69 64 . * the mid/sid
54c90 65 20 72 65 63 6f 6d 62 69 6e 61 74 69 6f 6e 0a e recombination.
54ca0 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 54 ... * @type {T
54cb0 6f 6e 65 2e 4d 69 64 53 69 64 65 4d 65 72 67 65 one.MidSideMerge
54cc0 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
54cd0 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
54ce0 20 20 74 68 69 73 2e 5f 6d 69 64 53 69 64 65 4d this._midSideM
54cf0 65 72 67 65 20 3d 20 74 68 69 73 2e 6f 75 74 70 erge = this.outp
54d00 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 69 ut = new Tone.Mi
54d10 64 53 69 64 65 4d 65 72 67 65 28 29 3b 0a 09 20 dSideMerge();..
54d20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
54d30 20 20 54 68 65 20 63 6f 6d 70 72 65 73 73 6f 72 The compressor
54d40 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 applied to the
54d50 6d 69 64 20 73 69 67 6e 61 6c 0a 09 09 09 20 2a mid signal.... *
54d60 20 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 2e 43 @type {Tone.C
54d70 6f 6d 70 72 65 73 73 6f 72 7d 0a 09 09 09 20 2a ompressor}.... *
54d80 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
54d90 6d 69 64 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 mid = new Tone.C
54da0 6f 6d 70 72 65 73 73 6f 72 28 6f 70 74 69 6f 6e ompressor(option
54db0 73 2e 6d 69 64 29 3b 0a 09 20 20 20 20 20 20 20 s.mid);..
54dc0 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
54dd0 63 6f 6d 70 72 65 73 73 6f 72 20 61 70 70 6c 69 compressor appli
54de0 65 64 20 74 6f 20 74 68 65 20 73 69 64 65 20 73 ed to the side s
54df0 69 67 6e 61 6c 0a 09 09 09 20 2a 20 20 40 74 79 ignal.... * @ty
54e00 70 65 20 20 7b 54 6f 6e 65 2e 43 6f 6d 70 72 65 pe {Tone.Compre
54e10 73 73 6f 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 ssor}.... */..
54e20 20 20 20 20 20 20 74 68 69 73 2e 73 69 64 65 20 this.side
54e30 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 6f 6d 70 72 = new Tone.Compr
54e40 65 73 73 6f 72 28 6f 70 74 69 6f 6e 73 2e 73 69 essor(options.si
54e50 64 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 de);.. th
54e60 69 73 2e 5f 6d 69 64 53 69 64 65 53 70 6c 69 74 is._midSideSplit
54e70 2e 6d 69 64 2e 63 68 61 69 6e 28 74 68 69 73 2e .mid.chain(this.
54e80 6d 69 64 2c 20 74 68 69 73 2e 5f 6d 69 64 53 69 mid, this._midSi
54e90 64 65 4d 65 72 67 65 2e 6d 69 64 29 3b 0a 09 20 deMerge.mid);..
54ea0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 69 64 this._mid
54eb0 53 69 64 65 53 70 6c 69 74 2e 73 69 64 65 2e 63 SideSplit.side.c
54ec0 68 61 69 6e 28 74 68 69 73 2e 73 69 64 65 2c 20 hain(this.side,
54ed0 74 68 69 73 2e 5f 6d 69 64 53 69 64 65 4d 65 72 this._midSideMer
54ee0 67 65 2e 73 69 64 65 29 3b 0a 09 20 20 20 20 20 ge.side);..
54ef0 20 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c this._readOnl
54f00 79 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 y([..
54f10 20 27 6d 69 64 27 2c 0a 09 20 20 20 20 20 20 20 'mid',..
54f20 20 20 20 20 20 27 73 69 64 65 27 0a 09 20 20 20 'side'..
54f30 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 7d 3b ]);.. };
54f40 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e .. Tone.exten
54f50 64 28 54 6f 6e 65 2e 4d 69 64 53 69 64 65 43 6f d(Tone.MidSideCo
54f60 6d 70 72 65 73 73 6f 72 29 3b 0a 09 20 20 20 20 mpressor);..
54f70 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 /**... * @const
54f80 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 ... * @static..
54f90 09 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 . * @type {Obje
54fa0 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ct}... */.. T
54fb0 6f 6e 65 2e 4d 69 64 53 69 64 65 43 6f 6d 70 72 one.MidSideCompr
54fc0 65 73 73 6f 72 2e 64 65 66 61 75 6c 74 73 20 3d essor.defaults =
54fd0 20 7b 0a 09 20 20 20 20 20 20 20 20 27 6d 69 64 {.. 'mid
54fe0 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 ': {..
54ff0 20 20 27 72 61 74 69 6f 27 3a 20 33 2c 0a 09 20 'ratio': 3,..
55000 20 20 20 20 20 20 20 20 20 20 20 27 74 68 72 65 'thre
55010 73 68 6f 6c 64 27 3a 20 2d 32 34 2c 0a 09 20 20 shold': -24,..
55020 20 20 20 20 20 20 20 20 20 20 27 72 65 6c 65 61 'relea
55030 73 65 27 3a 20 30 2e 30 33 2c 0a 09 20 20 20 20 se': 0.03,..
55040 20 20 20 20 20 20 20 20 27 61 74 74 61 63 6b 27 'attack'
55050 3a 20 30 2e 30 32 2c 0a 09 20 20 20 20 20 20 20 : 0.02,..
55060 20 20 20 20 20 27 6b 6e 65 65 27 3a 20 31 36 0a 'knee': 16.
55070 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 . },..
55080 20 20 20 20 20 27 73 69 64 65 27 3a 20 7b 0a 09 'side': {..
55090 20 20 20 20 20 20 20 20 20 20 20 20 27 72 61 74 'rat
550a0 69 6f 27 3a 20 36 2c 0a 09 20 20 20 20 20 20 20 io': 6,..
550b0 20 20 20 20 20 27 74 68 72 65 73 68 6f 6c 64 27 'threshold'
550c0 3a 20 2d 33 30 2c 0a 09 20 20 20 20 20 20 20 20 : -30,..
550d0 20 20 20 20 27 72 65 6c 65 61 73 65 27 3a 20 30 'release': 0
550e0 2e 32 35 2c 0a 09 20 20 20 20 20 20 20 20 20 20 .25,..
550f0 20 20 27 61 74 74 61 63 6b 27 3a 20 30 2e 30 33 'attack': 0.03
55100 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
55110 6b 6e 65 65 27 3a 20 31 30 0a 09 20 20 20 20 20 knee': 10..
55120 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 }.. };..
55130 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 /**... * Clea
55140 6e 20 75 70 2e 0a 09 09 20 2a 20 20 40 72 65 74 n up.... * @ret
55150 75 72 6e 73 20 7b 54 6f 6e 65 2e 4d 69 64 53 69 urns {Tone.MidSi
55160 64 65 43 6f 6d 70 72 65 73 73 6f 72 7d 20 74 68 deCompressor} th
55170 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
55180 6e 65 2e 4d 69 64 53 69 64 65 43 6f 6d 70 72 65 ne.MidSideCompre
55190 73 73 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 ssor.prototype.d
551a0 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f ispose = functio
551b0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
551c0 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 Tone.prototype.d
551d0 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 ispose.call(this
551e0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
551f0 2e 5f 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 ._writable([..
55200 20 20 20 20 20 20 20 20 20 20 27 6d 69 64 27 2c 'mid',
55210 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 73 .. 's
55220 69 64 65 27 0a 09 20 20 20 20 20 20 20 20 5d 29 ide'.. ])
55230 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
55240 6d 69 64 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 mid.dispose();..
55250 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d 69 64 this.mid
55260 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
55270 20 20 74 68 69 73 2e 73 69 64 65 2e 64 69 73 70 this.side.disp
55280 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
55290 74 68 69 73 2e 73 69 64 65 20 3d 20 6e 75 6c 6c this.side = null
552a0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
552b0 5f 6d 69 64 53 69 64 65 53 70 6c 69 74 2e 64 69 _midSideSplit.di
552c0 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
552d0 20 20 74 68 69 73 2e 5f 6d 69 64 53 69 64 65 53 this._midSideS
552e0 70 6c 69 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 plit = null;..
552f0 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 69 64 53 this._midS
55300 69 64 65 4d 65 72 67 65 2e 64 69 73 70 6f 73 65 ideMerge.dispose
55310 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
55320 73 2e 5f 6d 69 64 53 69 64 65 4d 65 72 67 65 20 s._midSideMerge
55330 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
55340 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
55350 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
55360 6e 20 54 6f 6e 65 2e 4d 69 64 53 69 64 65 43 6f n Tone.MidSideCo
55370 6d 70 72 65 73 73 6f 72 3b 0a 09 7d 29 3b 0a 09 mpressor;..});..
55380 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 Module(function
55390 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 (Tone) {.. ..
553a0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 /**... * @c
553b0 6c 61 73 73 20 54 6f 6e 65 2e 4d 6f 6e 6f 20 63 lass Tone.Mono c
553c0 6f 65 72 63 65 73 20 74 68 65 20 69 6e 63 6f 6d oerces the incom
553d0 69 6e 67 20 6d 6f 6e 6f 20 6f 72 20 73 74 65 72 ing mono or ster
553e0 65 6f 20 73 69 67 6e 61 6c 20 69 6e 74 6f 20 61 eo signal into a
553f0 20 6d 6f 6e 6f 20 73 69 67 6e 61 6c 0a 09 09 20 mono signal...
55400 2a 20 20 20 20 20 20 20 20 20 77 68 65 72 65 20 * where
55410 62 6f 74 68 20 6c 65 66 74 20 61 6e 64 20 72 69 both left and ri
55420 67 68 74 20 63 68 61 6e 6e 65 6c 73 20 68 61 76 ght channels hav
55430 65 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 e the same value
55440 2e 20 54 68 69 73 20 63 61 6e 20 62 65 20 75 73 . This can be us
55450 65 66 75 6c 20 0a 09 09 20 2a 20 20 20 20 20 20 eful ... *
55460 20 20 20 66 6f 72 20 5b 73 74 65 72 65 6f 20 69 for [stereo i
55470 6d 61 67 69 6e 67 5d 28 68 74 74 70 73 3a 2f 2f maging](https://
55480 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 en.wikipedia.org
55490 2f 77 69 6b 69 2f 53 74 65 72 65 6f 5f 69 6d 61 /wiki/Stereo_ima
554a0 67 69 6e 67 29 2e 0a 09 09 20 2a 0a 09 09 20 2a ging).... *... *
554b0 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
554c0 7d 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 }... * @constru
554d0 63 74 6f 72 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ctor... */..
554e0 54 6f 6e 65 2e 4d 6f 6e 6f 20 3d 20 66 75 6e 63 Tone.Mono = func
554f0 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
55500 20 20 20 74 68 69 73 2e 63 72 65 61 74 65 49 6e this.createIn
55510 73 4f 75 74 73 28 31 2c 20 30 29 3b 0a 09 20 20 sOuts(1, 0);..
55520 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
55530 20 6d 65 72 67 65 20 74 68 65 20 73 69 67 6e 61 merge the signa
55540 6c 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b l.... * @type {
55550 54 6f 6e 65 2e 4d 65 72 67 65 7d 0a 09 09 09 20 Tone.Merge}....
55560 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
55570 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
55580 2e 5f 6d 65 72 67 65 20 3d 20 74 68 69 73 2e 6f ._merge = this.o
55590 75 74 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 utput = new Tone
555a0 2e 4d 65 72 67 65 28 29 3b 0a 09 20 20 20 20 20 .Merge();..
555b0 20 20 20 74 68 69 73 2e 69 6e 70 75 74 2e 63 6f this.input.co
555c0 6e 6e 65 63 74 28 74 68 69 73 2e 5f 6d 65 72 67 nnect(this._merg
555d0 65 2c 20 30 2c 20 30 29 3b 0a 09 20 20 20 20 20 e, 0, 0);..
555e0 20 20 20 74 68 69 73 2e 69 6e 70 75 74 2e 63 6f this.input.co
555f0 6e 6e 65 63 74 28 74 68 69 73 2e 5f 6d 65 72 67 nnect(this._merg
55600 65 2c 20 30 2c 20 31 29 3b 0a 09 20 20 20 20 20 e, 0, 1);..
55610 20 20 20 74 68 69 73 2e 69 6e 70 75 74 2e 67 61 this.input.ga
55620 69 6e 2e 76 61 6c 75 65 20 3d 20 74 68 69 73 2e in.value = this.
55630 64 62 54 6f 47 61 69 6e 28 2d 31 30 29 3b 0a 09 dbToGain(-10);..
55640 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 };.. Tone
55650 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 4d 6f 6e .extend(Tone.Mon
55660 6f 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 o);.. /**...
55670 2a 20 20 63 6c 65 61 6e 20 75 70 0a 09 09 20 2a * clean up... *
55680 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
55690 2e 4d 6f 6e 6f 7d 20 74 68 69 73 0a 09 09 20 2a .Mono} this... *
556a0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f /.. Tone.Mono
556b0 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
556c0 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 se = function ()
556d0 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 {.. Tone
556e0 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
556f0 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 se.call(this);..
55700 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 65 this._me
55710 72 67 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 rge.dispose();..
55720 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 65 this._me
55730 72 67 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 rge = null;..
55740 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
55750 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 ;.. };.. r
55760 65 74 75 72 6e 20 54 6f 6e 65 2e 4d 6f 6e 6f 3b eturn Tone.Mono;
55770 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 ..});..Module(fu
55780 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a nction (Tone) {.
55790 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 . .. /**..
557a0 09 20 2a 20 20 40 63 6c 61 73 73 20 41 20 63 6f . * @class A co
557b0 6d 70 72 65 73 73 6f 72 20 77 69 74 68 20 73 65 mpressor with se
557c0 70 65 72 61 74 65 20 63 6f 6e 74 72 6f 6c 73 20 perate controls
557d0 6f 76 65 72 20 6c 6f 77 2f 6d 69 64 2f 68 69 67 over low/mid/hig
557e0 68 20 64 79 6e 61 6d 69 63 73 0a 09 09 20 2a 0a h dynamics... *.
557f0 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b .. * @extends {
55800 54 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 63 6f 6e Tone}... * @con
55810 73 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 structor... * @
55820 70 61 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20 6f param {Object} o
55830 70 74 69 6f 6e 73 20 54 68 65 20 6c 6f 77 2f 6d ptions The low/m
55840 69 64 2f 68 69 67 68 20 63 6f 6d 70 72 65 73 73 id/high compress
55850 6f 72 20 73 65 74 74 69 6e 67 73 2e 0a 09 09 20 or settings....
55860 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
55870 20 20 76 61 72 20 6d 75 6c 74 69 62 61 6e 64 20 var multiband
55880 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 75 6c 74 69 = new Tone.Multi
55890 62 61 6e 64 43 6f 6d 70 72 65 73 73 6f 72 28 7b bandCompressor({
558a0 0a 09 09 20 2a 20 20 09 22 6c 6f 77 46 72 65 71 ... * ."lowFreq
558b0 75 65 6e 63 79 22 20 3a 20 32 30 30 2c 0a 09 09 uency" : 200,...
558c0 20 2a 20 20 09 22 68 69 67 68 46 72 65 71 75 65 * ."highFreque
558d0 6e 63 79 22 20 3a 20 31 33 30 30 0a 09 09 20 2a ncy" : 1300... *
558e0 20 20 09 22 6c 6f 77 22 20 3a 20 7b 0a 09 09 20 ."low" : {...
558f0 2a 20 20 09 09 22 74 68 72 65 73 68 6f 6c 64 22 * .."threshold"
55900 20 3a 20 2d 31 32 0a 09 09 20 2a 20 20 09 7d 0a : -12... * .}.
55910 09 09 20 2a 20 20 7d 29 0a 09 09 20 2a 2f 0a 09 .. * })... */..
55920 20 20 20 20 54 6f 6e 65 2e 4d 75 6c 74 69 62 61 Tone.Multiba
55930 6e 64 43 6f 6d 70 72 65 73 73 6f 72 20 3d 20 66 ndCompressor = f
55940 75 6e 63 74 69 6f 6e 20 28 6f 70 74 69 6f 6e 73 unction (options
55950 29 20 7b 0a 09 20 20 20 20 20 20 20 20 6f 70 74 ) {.. opt
55960 69 6f 6e 73 20 3d 20 74 68 69 73 2e 64 65 66 61 ions = this.defa
55970 75 6c 74 41 72 67 28 61 72 67 75 6d 65 6e 74 73 ultArg(arguments
55980 2c 20 54 6f 6e 65 2e 4d 75 6c 74 69 62 61 6e 64 , Tone.Multiband
55990 43 6f 6d 70 72 65 73 73 6f 72 2e 64 65 66 61 75 Compressor.defau
559a0 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f lts);.. /
559b0 2a 2a 0a 09 09 09 20 2a 20 20 73 70 6c 69 74 20 **.... * split
559c0 74 68 65 20 69 6e 63 6f 6d 69 6e 67 20 73 69 67 the incoming sig
559d0 6e 61 6c 20 69 6e 74 6f 20 68 69 67 68 2f 6d 69 nal into high/mi
559e0 64 2f 6c 6f 77 0a 09 09 09 20 2a 20 20 40 74 79 d/low.... * @ty
559f0 70 65 20 7b 54 6f 6e 65 2e 4d 75 6c 74 69 62 61 pe {Tone.Multiba
55a00 6e 64 53 70 6c 69 74 7d 0a 09 09 09 20 2a 20 20 ndSplit}.... *
55a10 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
55a20 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 . this._s
55a30 70 6c 69 74 74 65 72 20 3d 20 74 68 69 73 2e 69 plitter = this.i
55a40 6e 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e nput = new Tone.
55a50 4d 75 6c 74 69 62 61 6e 64 53 70 6c 69 74 28 7b MultibandSplit({
55a60 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6c .. 'l
55a70 6f 77 46 72 65 71 75 65 6e 63 79 27 3a 20 6f 70 owFrequency': op
55a80 74 69 6f 6e 73 2e 6c 6f 77 46 72 65 71 75 65 6e tions.lowFrequen
55a90 63 79 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 cy,..
55aa0 20 27 68 69 67 68 46 72 65 71 75 65 6e 63 79 27 'highFrequency'
55ab0 3a 20 6f 70 74 69 6f 6e 73 2e 68 69 67 68 46 72 : options.highFr
55ac0 65 71 75 65 6e 63 79 0a 09 20 20 20 20 20 20 20 equency..
55ad0 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a });.. /*
55ae0 2a 0a 09 09 09 20 2a 20 20 6c 6f 77 2f 6d 69 64 *.... * low/mid
55af0 20 63 72 6f 73 73 6f 76 65 72 20 66 72 65 71 75 crossover frequ
55b00 65 6e 63 79 2e 0a 09 09 09 20 2a 20 20 40 74 79 ency..... * @ty
55b10 70 65 20 7b 46 72 65 71 75 65 6e 63 79 7d 0a 09 pe {Frequency}..
55b20 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 .. * @signal...
55b30 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
55b40 69 73 2e 6c 6f 77 46 72 65 71 75 65 6e 63 79 20 is.lowFrequency
55b50 3d 20 74 68 69 73 2e 5f 73 70 6c 69 74 74 65 72 = this._splitter
55b60 2e 6c 6f 77 46 72 65 71 75 65 6e 63 79 3b 0a 09 .lowFrequency;..
55b70 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
55b80 2a 20 20 6d 69 64 2f 68 69 67 68 20 63 72 6f 73 * mid/high cros
55b90 73 6f 76 65 72 20 66 72 65 71 75 65 6e 63 79 2e sover frequency.
55ba0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 46 .... * @type {F
55bb0 72 65 71 75 65 6e 63 79 7d 0a 09 09 09 20 2a 20 requency}.... *
55bc0 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a @signal.... */.
55bd0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 68 69 . this.hi
55be0 67 68 46 72 65 71 75 65 6e 63 79 20 3d 20 74 68 ghFrequency = th
55bf0 69 73 2e 5f 73 70 6c 69 74 74 65 72 2e 68 69 67 is._splitter.hig
55c00 68 46 72 65 71 75 65 6e 63 79 3b 0a 09 20 20 20 hFrequency;..
55c10 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
55c20 74 68 65 20 6f 75 74 70 75 74 0a 09 09 09 20 2a the output.... *
55c30 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 47 61 @type {Tone.Ga
55c40 69 6e 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 in}.... * @priv
55c50 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
55c60 20 20 20 20 74 68 69 73 2e 6f 75 74 70 75 74 20 this.output
55c70 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 = new Tone.Gain(
55c80 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
55c90 09 09 09 20 2a 20 20 54 68 65 20 63 6f 6d 70 72 ... * The compr
55ca0 65 73 73 6f 72 20 61 70 70 6c 69 65 64 20 74 6f essor applied to
55cb0 20 74 68 65 20 6c 6f 77 20 66 72 65 71 75 65 6e the low frequen
55cc0 63 69 65 73 2e 0a 09 09 09 20 2a 20 20 40 74 79 cies..... * @ty
55cd0 70 65 20 7b 54 6f 6e 65 2e 43 6f 6d 70 72 65 73 pe {Tone.Compres
55ce0 73 6f 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 sor}.... */..
55cf0 20 20 20 20 20 74 68 69 73 2e 6c 6f 77 20 3d 20 this.low =
55d00 6e 65 77 20 54 6f 6e 65 2e 43 6f 6d 70 72 65 73 new Tone.Compres
55d10 73 6f 72 28 6f 70 74 69 6f 6e 73 2e 6c 6f 77 29 sor(options.low)
55d20 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
55d30 09 09 20 2a 20 20 54 68 65 20 63 6f 6d 70 72 65 .. * The compre
55d40 73 73 6f 72 20 61 70 70 6c 69 65 64 20 74 6f 20 ssor applied to
55d50 74 68 65 20 6d 69 64 20 66 72 65 71 75 65 6e 63 the mid frequenc
55d60 69 65 73 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 ies..... * @typ
55d70 65 20 7b 54 6f 6e 65 2e 43 6f 6d 70 72 65 73 73 e {Tone.Compress
55d80 6f 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 or}.... */..
55d90 20 20 20 20 74 68 69 73 2e 6d 69 64 20 3d 20 6e this.mid = n
55da0 65 77 20 54 6f 6e 65 2e 43 6f 6d 70 72 65 73 73 ew Tone.Compress
55db0 6f 72 28 6f 70 74 69 6f 6e 73 2e 6d 69 64 29 3b or(options.mid);
55dc0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
55dd0 09 20 2a 20 20 54 68 65 20 63 6f 6d 70 72 65 73 . * The compres
55de0 73 6f 72 20 61 70 70 6c 69 65 64 20 74 6f 20 74 sor applied to t
55df0 68 65 20 68 69 67 68 20 66 72 65 71 75 65 6e 63 he high frequenc
55e00 69 65 73 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 ies..... * @typ
55e10 65 20 7b 54 6f 6e 65 2e 43 6f 6d 70 72 65 73 73 e {Tone.Compress
55e20 6f 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 or}.... */..
55e30 20 20 20 20 74 68 69 73 2e 68 69 67 68 20 3d 20 this.high =
55e40 6e 65 77 20 54 6f 6e 65 2e 43 6f 6d 70 72 65 73 new Tone.Compres
55e50 73 6f 72 28 6f 70 74 69 6f 6e 73 2e 68 69 67 68 sor(options.high
55e60 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 6f );.. //co
55e70 6e 6e 65 63 74 20 74 68 65 20 63 6f 6d 70 72 65 nnect the compre
55e80 73 73 6f 72 0a 09 20 20 20 20 20 20 20 20 74 68 ssor.. th
55e90 69 73 2e 5f 73 70 6c 69 74 74 65 72 2e 6c 6f 77 is._splitter.low
55ea0 2e 63 68 61 69 6e 28 74 68 69 73 2e 6c 6f 77 2c .chain(this.low,
55eb0 20 74 68 69 73 2e 6f 75 74 70 75 74 29 3b 0a 09 this.output);..
55ec0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 70 this._sp
55ed0 6c 69 74 74 65 72 2e 6d 69 64 2e 63 68 61 69 6e litter.mid.chain
55ee0 28 74 68 69 73 2e 6d 69 64 2c 20 74 68 69 73 2e (this.mid, this.
55ef0 6f 75 74 70 75 74 29 3b 0a 09 20 20 20 20 20 20 output);..
55f00 20 20 74 68 69 73 2e 5f 73 70 6c 69 74 74 65 72 this._splitter
55f10 2e 68 69 67 68 2e 63 68 61 69 6e 28 74 68 69 73 .high.chain(this
55f20 2e 68 69 67 68 2c 20 74 68 69 73 2e 6f 75 74 70 .high, this.outp
55f30 75 74 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ut);.. th
55f40 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 5b 0a 09 is._readOnly([..
55f50 20 20 20 20 20 20 20 20 20 20 20 20 27 68 69 67 'hig
55f60 68 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 h',..
55f70 20 27 6d 69 64 27 2c 0a 09 20 20 20 20 20 20 20 'mid',..
55f80 20 20 20 20 20 27 6c 6f 77 27 2c 0a 09 20 20 20 'low',..
55f90 20 20 20 20 20 20 20 20 20 27 68 69 67 68 46 72 'highFr
55fa0 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 equency',..
55fb0 20 20 20 20 20 20 20 27 6c 6f 77 46 72 65 71 75 'lowFrequ
55fc0 65 6e 63 79 27 0a 09 20 20 20 20 20 20 20 20 5d ency'.. ]
55fd0 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
55fe0 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 Tone.extend(Tone
55ff0 2e 4d 75 6c 74 69 62 61 6e 64 43 6f 6d 70 72 65 .MultibandCompre
56000 73 73 6f 72 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a ssor);.. /**.
56010 09 09 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 .. * @const...
56020 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 * @static... *
56030 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a @type {Object}.
56040 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
56050 4d 75 6c 74 69 62 61 6e 64 43 6f 6d 70 72 65 73 MultibandCompres
56060 73 6f 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b sor.defaults = {
56070 0a 09 20 20 20 20 20 20 20 20 27 6c 6f 77 27 3a .. 'low':
56080 20 54 6f 6e 65 2e 43 6f 6d 70 72 65 73 73 6f 72 Tone.Compressor
56090 2e 64 65 66 61 75 6c 74 73 2c 0a 09 20 20 20 20 .defaults,..
560a0 20 20 20 20 27 6d 69 64 27 3a 20 54 6f 6e 65 2e 'mid': Tone.
560b0 43 6f 6d 70 72 65 73 73 6f 72 2e 64 65 66 61 75 Compressor.defau
560c0 6c 74 73 2c 0a 09 20 20 20 20 20 20 20 20 27 68 lts,.. 'h
560d0 69 67 68 27 3a 20 54 6f 6e 65 2e 43 6f 6d 70 72 igh': Tone.Compr
560e0 65 73 73 6f 72 2e 64 65 66 61 75 6c 74 73 2c 0a essor.defaults,.
560f0 09 20 20 20 20 20 20 20 20 27 6c 6f 77 46 72 65 . 'lowFre
56100 71 75 65 6e 63 79 27 3a 20 32 35 30 2c 0a 09 20 quency': 250,..
56110 20 20 20 20 20 20 20 27 68 69 67 68 46 72 65 71 'highFreq
56120 75 65 6e 63 79 27 3a 20 32 30 30 30 0a 09 20 20 uency': 2000..
56130 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
56140 20 2a 20 20 63 6c 65 61 6e 20 75 70 0a 09 09 20 * clean up...
56150 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
56160 65 2e 4d 75 6c 74 69 62 61 6e 64 43 6f 6d 70 72 e.MultibandCompr
56170 65 73 73 6f 72 7d 20 74 68 69 73 0a 09 09 20 2a essor} this... *
56180 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 75 6c 74 /.. Tone.Mult
56190 69 62 61 6e 64 43 6f 6d 70 72 65 73 73 6f 72 2e ibandCompressor.
561a0 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
561b0 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 e = function ()
561c0 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e {.. Tone.
561d0 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
561e0 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 e.call(this);..
561f0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 70 6c this._spl
56200 69 74 74 65 72 2e 64 69 73 70 6f 73 65 28 29 3b itter.dispose();
56210 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
56220 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 20 writable([..
56230 20 20 20 20 20 20 20 20 27 68 69 67 68 27 2c 0a 'high',.
56240 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 69 . 'mi
56250 64 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 d',..
56260 20 27 6c 6f 77 27 2c 0a 09 20 20 20 20 20 20 20 'low',..
56270 20 20 20 20 20 27 68 69 67 68 46 72 65 71 75 65 'highFreque
56280 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 ncy',..
56290 20 20 20 27 6c 6f 77 46 72 65 71 75 65 6e 63 79 'lowFrequency
562a0 27 0a 09 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 '.. ]);..
562b0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 77 this.low
562c0 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
562d0 20 20 20 20 20 74 68 69 73 2e 6d 69 64 2e 64 69 this.mid.di
562e0 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
562f0 20 20 74 68 69 73 2e 68 69 67 68 2e 64 69 73 70 this.high.disp
56300 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
56310 74 68 69 73 2e 5f 73 70 6c 69 74 74 65 72 20 3d this._splitter =
56320 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
56330 74 68 69 73 2e 6c 6f 77 20 3d 20 6e 75 6c 6c 3b this.low = null;
56340 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d .. this.m
56350 69 64 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 id = null;..
56360 20 20 20 20 74 68 69 73 2e 68 69 67 68 20 3d 20 this.high =
56370 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 null;.. t
56380 68 69 73 2e 6c 6f 77 46 72 65 71 75 65 6e 63 79 his.lowFrequency
56390 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
563a0 20 20 74 68 69 73 2e 68 69 67 68 46 72 65 71 75 this.highFrequ
563b0 65 6e 63 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 ency = null;..
563c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
563d0 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
563e0 72 65 74 75 72 6e 20 54 6f 6e 65 2e 4d 75 6c 74 return Tone.Mult
563f0 69 62 61 6e 64 43 6f 6d 70 72 65 73 73 6f 72 3b ibandCompressor;
56400 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 ..});..Module(fu
56410 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a nction (Tone) {.
56420 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 . .. /**..
56430 09 20 2a 20 20 40 63 6c 61 73 73 20 20 54 6f 6e . * @class Ton
56440 65 2e 50 61 6e 6e 65 72 20 69 73 20 61 6e 20 65 e.Panner is an e
56450 71 75 61 6c 20 70 6f 77 65 72 20 4c 65 66 74 2f qual power Left/
56460 52 69 67 68 74 20 50 61 6e 6e 65 72 20 61 6e 64 Right Panner and
56470 20 64 6f 65 73 20 6e 6f 74 0a 09 09 20 2a 20 20 does not... *
56480 20 20 20 20 20 20 20 20 73 75 70 70 6f 72 74 20 support
56490 33 44 2e 20 50 61 6e 6e 65 72 20 75 73 65 73 20 3D. Panner uses
564a0 74 68 65 20 53 74 65 72 65 6f 50 61 6e 6e 65 72 the StereoPanner
564b0 4e 6f 64 65 20 77 68 65 6e 20 61 76 61 69 6c 61 Node when availa
564c0 62 6c 65 2e 20 0a 09 09 20 2a 20 20 0a 09 09 20 ble. ... * ...
564d0 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a * @constructor.
564e0 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b .. * @extends {
564f0 54 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 70 61 72 Tone}... * @par
56500 61 6d 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d am {NormalRange}
56510 20 5b 69 6e 69 74 69 61 6c 50 61 6e 3d 30 5d 20 [initialPan=0]
56520 54 68 65 20 69 6e 69 74 61 69 6c 20 70 61 6e 6e The initail pann
56530 65 72 20 76 61 6c 75 65 20 28 64 65 66 61 75 6c er value (defaul
56540 74 73 20 74 6f 20 30 20 3d 20 63 65 6e 74 65 72 ts to 0 = center
56550 29 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 )... * @example
56560 0a 09 09 20 2a 20 20 2f 2f 70 61 6e 20 74 68 65 ... * //pan the
56570 20 69 6e 70 75 74 20 73 69 67 6e 61 6c 20 68 61 input signal ha
56580 72 64 20 72 69 67 68 74 2e 20 0a 09 09 20 2a 20 rd right. ... *
56590 20 76 61 72 20 70 61 6e 6e 65 72 20 3d 20 6e 65 var panner = ne
565a0 77 20 54 6f 6e 65 2e 50 61 6e 6e 65 72 28 31 29 w Tone.Panner(1)
565b0 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e ;... */.. Ton
565c0 65 2e 50 61 6e 6e 65 72 20 3d 20 66 75 6e 63 74 e.Panner = funct
565d0 69 6f 6e 20 28 69 6e 69 74 69 61 6c 50 61 6e 29 ion (initialPan)
565e0 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
565f0 74 68 69 73 2e 5f 68 61 73 53 74 65 72 65 6f 50 this._hasStereoP
56600 61 6e 6e 65 72 29 20 7b 0a 09 20 20 20 20 20 20 anner) {..
56610 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 09 20 2a /**..... *
56620 20 20 74 68 65 20 70 61 6e 6e 65 72 20 6e 6f 64 the panner nod
56630 65 0a 09 09 09 09 20 2a 20 20 40 74 79 70 65 20 e..... * @type
56640 7b 53 74 65 72 65 6f 50 61 6e 6e 65 72 4e 6f 64 {StereoPannerNod
56650 65 7d 0a 09 09 09 09 20 2a 20 20 40 70 72 69 76 e}..... * @priv
56660 61 74 65 0a 09 09 09 09 20 2a 2f 0a 09 20 20 20 ate..... */..
56670 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 this._p
56680 61 6e 6e 65 72 20 3d 20 74 68 69 73 2e 69 6e 70 anner = this.inp
56690 75 74 20 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 ut = this.output
566a0 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e = this.context.
566b0 63 72 65 61 74 65 53 74 65 72 65 6f 50 61 6e 6e createStereoPann
566c0 65 72 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 er();..
566d0 20 20 20 2f 2a 2a 0a 09 09 09 09 20 2a 20 20 54 /**..... * T
566e0 68 65 20 70 61 6e 20 63 6f 6e 74 72 6f 6c 2e 20 he pan control.
566f0 2d 31 20 3d 20 68 61 72 64 20 6c 65 66 74 2c 20 -1 = hard left,
56700 31 20 3d 20 68 61 72 64 20 72 69 67 68 74 2e 20 1 = hard right.
56710 0a 09 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b ..... * @type {
56720 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 09 NormalRange}....
56730 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 . * @signal....
56740 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 20 20 . */..
56750 20 20 74 68 69 73 2e 70 61 6e 20 3d 20 74 68 69 this.pan = thi
56760 73 2e 5f 70 61 6e 6e 65 72 2e 70 61 6e 3b 0a 09 s._panner.pan;..
56770 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
56780 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a .. /*
56790 2a 0a 09 09 09 09 20 2a 20 20 74 68 65 20 64 72 *..... * the dr
567a0 79 2f 77 65 74 20 6b 6e 6f 62 0a 09 09 09 09 20 y/wet knob.....
567b0 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 43 * @type {Tone.C
567c0 72 6f 73 73 46 61 64 65 7d 0a 09 09 09 09 20 2a rossFade}..... *
567d0 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 09 20 @private.....
567e0 2a 2f 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 */..
567f0 74 68 69 73 2e 5f 63 72 6f 73 73 46 61 64 65 20 this._crossFade
56800 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 72 6f 73 73 = new Tone.Cross
56810 46 61 64 65 28 29 3b 0a 09 20 20 20 20 20 20 20 Fade();..
56820 20 20 20 20 20 2f 2a 2a 0a 09 09 09 09 20 2a 20 /**..... *
56830 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4d 65 72 @type {Tone.Mer
56840 67 65 7d 0a 09 09 09 09 20 2a 20 20 40 70 72 69 ge}..... * @pri
56850 76 61 74 65 0a 09 09 09 09 20 2a 2f 0a 09 20 20 vate..... */..
56860 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
56870 6d 65 72 67 65 72 20 3d 20 74 68 69 73 2e 6f 75 merger = this.ou
56880 74 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e tput = new Tone.
56890 4d 65 72 67 65 28 29 3b 0a 09 20 20 20 20 20 20 Merge();..
568a0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 09 20 2a /**..... *
568b0 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 53 70 @type {Tone.Sp
568c0 6c 69 74 7d 0a 09 09 09 09 20 2a 20 20 40 70 72 lit}..... * @pr
568d0 69 76 61 74 65 0a 09 09 09 09 20 2a 2f 0a 09 20 ivate..... */..
568e0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
568f0 5f 73 70 6c 69 74 74 65 72 20 3d 20 74 68 69 73 _splitter = this
56900 2e 69 6e 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e .input = new Ton
56910 65 2e 53 70 6c 69 74 28 29 3b 0a 09 20 20 20 20 e.Split();..
56920 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 09 /**.....
56930 20 2a 20 20 54 68 65 20 70 61 6e 20 63 6f 6e 74 * The pan cont
56940 72 6f 6c 2e 20 2d 31 20 3d 20 68 61 72 64 20 6c rol. -1 = hard l
56950 65 66 74 2c 20 31 20 3d 20 68 61 72 64 20 72 69 eft, 1 = hard ri
56960 67 68 74 2e 20 0a 09 09 09 09 20 2a 20 20 40 74 ght. ..... * @t
56970 79 70 65 20 7b 41 75 64 69 6f 52 61 6e 67 65 7d ype {AudioRange}
56980 0a 09 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c ..... * @signal
56990 0a 09 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 ..... */..
569a0 20 20 20 20 20 20 74 68 69 73 2e 70 61 6e 20 3d this.pan =
569b0 20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c new Tone.Signal
569c0 28 30 2c 20 54 6f 6e 65 2e 54 79 70 65 2e 41 75 (0, Tone.Type.Au
569d0 64 69 6f 52 61 6e 67 65 29 3b 0a 09 20 20 20 20 dioRange);..
569e0 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 09 /**.....
569f0 20 2a 20 20 61 6c 77 61 79 73 20 73 65 6e 64 73 * always sends
56a00 20 30 0a 09 09 09 09 20 2a 20 20 40 74 79 70 65 0..... * @type
56a10 20 7b 54 6f 6e 65 2e 5a 65 72 6f 7d 0a 09 09 09 {Tone.Zero}....
56a20 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
56a30 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 20 .. */..
56a40 20 20 20 74 68 69 73 2e 5f 7a 65 72 6f 20 3d 20 this._zero =
56a50 6e 65 77 20 54 6f 6e 65 2e 5a 65 72 6f 28 29 3b new Tone.Zero();
56a60 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a .. /*
56a70 2a 0a 09 09 09 09 20 2a 20 20 54 68 65 20 61 6e *..... * The an
56a80 61 6c 6f 67 20 74 6f 20 67 61 69 6e 20 63 6f 6e alog to gain con
56a90 76 65 72 73 69 6f 6e 0a 09 09 09 09 20 2a 20 20 version..... *
56aa0 40 74 79 70 65 20 20 7b 54 6f 6e 65 2e 41 75 64 @type {Tone.Aud
56ab0 69 6f 54 6f 47 61 69 6e 7d 0a 09 09 09 09 20 2a ioToGain}..... *
56ac0 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 09 20 @private.....
56ad0 2a 2f 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 */..
56ae0 74 68 69 73 2e 5f 61 32 67 20 3d 20 6e 65 77 20 this._a2g = new
56af0 54 6f 6e 65 2e 41 75 64 69 6f 54 6f 47 61 69 6e Tone.AudioToGain
56b00 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ();..
56b10 20 2f 2f 43 4f 4e 4e 45 43 54 49 4f 4e 53 3a 0a //CONNECTIONS:.
56b20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
56b30 73 2e 5f 7a 65 72 6f 2e 63 6f 6e 6e 65 63 74 28 s._zero.connect(
56b40 74 68 69 73 2e 5f 61 32 67 29 3b 0a 09 20 20 20 this._a2g);..
56b50 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 61 this.pa
56b60 6e 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f 61 32 n.chain(this._a2
56b70 67 2c 20 74 68 69 73 2e 5f 63 72 6f 73 73 46 61 g, this._crossFa
56b80 64 65 2e 66 61 64 65 29 3b 0a 09 20 20 20 20 20 de.fade);..
56b90 20 20 20 20 20 20 20 2f 2f 6c 65 66 74 20 63 68 //left ch
56ba0 61 6e 6e 65 6c 20 69 73 20 61 2c 20 72 69 67 68 annel is a, righ
56bb0 74 20 63 68 61 6e 6e 65 6c 20 69 73 20 62 0a 09 t channel is b..
56bc0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
56bd0 2e 5f 73 70 6c 69 74 74 65 72 2e 63 6f 6e 6e 65 ._splitter.conne
56be0 63 74 28 74 68 69 73 2e 5f 63 72 6f 73 73 46 61 ct(this._crossFa
56bf0 64 65 2c 20 30 2c 20 30 29 3b 0a 09 20 20 20 20 de, 0, 0);..
56c00 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 70 this._sp
56c10 6c 69 74 74 65 72 2e 63 6f 6e 6e 65 63 74 28 74 litter.connect(t
56c20 68 69 73 2e 5f 63 72 6f 73 73 46 61 64 65 2c 20 his._crossFade,
56c30 31 2c 20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 1, 1);..
56c40 20 20 20 20 2f 2f 6d 65 72 67 65 20 69 74 20 62 //merge it b
56c50 61 63 6b 20 74 6f 67 65 74 68 65 72 0a 09 20 20 ack together..
56c60 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
56c70 63 72 6f 73 73 46 61 64 65 2e 61 2e 63 6f 6e 6e crossFade.a.conn
56c80 65 63 74 28 74 68 69 73 2e 5f 6d 65 72 67 65 72 ect(this._merger
56c90 2c 20 30 2c 20 30 29 3b 0a 09 20 20 20 20 20 20 , 0, 0);..
56ca0 20 20 20 20 20 20 74 68 69 73 2e 5f 63 72 6f 73 this._cros
56cb0 73 46 61 64 65 2e 62 2e 63 6f 6e 6e 65 63 74 28 sFade.b.connect(
56cc0 74 68 69 73 2e 5f 6d 65 72 67 65 72 2c 20 30 2c this._merger, 0,
56cd0 20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 1);.. }.
56ce0 09 20 20 20 20 20 20 20 20 2f 2f 69 6e 69 74 69 . //initi
56cf0 61 6c 20 76 61 6c 75 65 0a 09 20 20 20 20 20 20 al value..
56d00 20 20 74 68 69 73 2e 70 61 6e 2e 76 61 6c 75 65 this.pan.value
56d10 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 = this.defaultA
56d20 72 67 28 69 6e 69 74 69 61 6c 50 61 6e 2c 20 30 rg(initialPan, 0
56d30 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
56d40 2e 5f 72 65 61 64 4f 6e 6c 79 28 27 70 61 6e 27 ._readOnly('pan'
56d50 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
56d60 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 Tone.extend(Tone
56d70 2e 50 61 6e 6e 65 72 29 3b 0a 09 20 20 20 20 2f .Panner);.. /
56d80 2a 2a 0a 09 09 20 2a 20 20 69 6e 64 69 63 61 74 **... * indicat
56d90 65 73 20 69 66 20 74 68 65 20 70 61 6e 6e 65 72 es if the panner
56da0 20 69 73 20 75 73 69 6e 67 20 74 68 65 20 6e 65 is using the ne
56db0 77 20 53 74 65 72 65 6f 50 61 6e 6e 65 72 4e 6f w StereoPannerNo
56dc0 64 65 20 69 6e 74 65 72 6e 61 6c 6c 79 0a 09 09 de internally...
56dd0 20 2a 20 20 40 74 79 70 65 20 20 7b 62 6f 6f 6c * @type {bool
56de0 65 61 6e 7d 0a 09 09 20 2a 20 20 40 70 72 69 76 ean}... * @priv
56df0 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ate... */.. T
56e00 6f 6e 65 2e 50 61 6e 6e 65 72 2e 70 72 6f 74 6f one.Panner.proto
56e10 74 79 70 65 2e 5f 68 61 73 53 74 65 72 65 6f 50 type._hasStereoP
56e20 61 6e 6e 65 72 20 3d 20 54 6f 6e 65 2e 70 72 6f anner = Tone.pro
56e30 74 6f 74 79 70 65 2e 69 73 46 75 6e 63 74 69 6f totype.isFunctio
56e40 6e 28 54 6f 6e 65 2e 63 6f 6e 74 65 78 74 2e 63 n(Tone.context.c
56e50 72 65 61 74 65 53 74 65 72 65 6f 50 61 6e 6e 65 reateStereoPanne
56e60 72 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 r);.. /**...
56e70 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a 09 09 20 * Clean up....
56e80 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
56e90 65 2e 50 61 6e 6e 65 72 7d 20 74 68 69 73 0a 09 e.Panner} this..
56ea0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 . */.. Tone.P
56eb0 61 6e 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e anner.prototype.
56ec0 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 dispose = functi
56ed0 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
56ee0 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e Tone.prototype.
56ef0 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 dispose.call(thi
56f00 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 s);.. thi
56f10 73 2e 5f 77 72 69 74 61 62 6c 65 28 27 70 61 6e s._writable('pan
56f20 27 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 ');.. if
56f30 28 74 68 69 73 2e 5f 68 61 73 53 74 65 72 65 6f (this._hasStereo
56f40 50 61 6e 6e 65 72 29 20 7b 0a 09 20 20 20 20 20 Panner) {..
56f50 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 61 6e this._pan
56f60 6e 65 72 2e 64 69 73 63 6f 6e 6e 65 63 74 28 29 ner.disconnect()
56f70 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 ;.. t
56f80 68 69 73 2e 5f 70 61 6e 6e 65 72 20 3d 20 6e 75 his._panner = nu
56f90 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ll;..
56fa0 20 74 68 69 73 2e 70 61 6e 20 3d 20 6e 75 6c 6c this.pan = null
56fb0 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 ;.. } els
56fc0 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
56fd0 20 74 68 69 73 2e 5f 7a 65 72 6f 2e 64 69 73 70 this._zero.disp
56fe0 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
56ff0 20 20 20 20 74 68 69 73 2e 5f 7a 65 72 6f 20 3d this._zero =
57000 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
57010 20 20 20 20 74 68 69 73 2e 5f 63 72 6f 73 73 46 this._crossF
57020 61 64 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 ade.dispose();..
57030 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
57040 2e 5f 63 72 6f 73 73 46 61 64 65 20 3d 20 6e 75 ._crossFade = nu
57050 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ll;..
57060 20 74 68 69 73 2e 5f 73 70 6c 69 74 74 65 72 2e this._splitter.
57070 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
57080 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 70 this._sp
57090 6c 69 74 74 65 72 20 3d 20 6e 75 6c 6c 3b 0a 09 litter = null;..
570a0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
570b0 2e 5f 6d 65 72 67 65 72 2e 64 69 73 70 6f 73 65 ._merger.dispose
570c0 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ();..
570d0 20 74 68 69 73 2e 5f 6d 65 72 67 65 72 20 3d 20 this._merger =
570e0 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 20 null;..
570f0 20 20 20 74 68 69 73 2e 70 61 6e 2e 64 69 73 70 this.pan.disp
57100 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
57110 20 20 20 20 74 68 69 73 2e 70 61 6e 20 3d 20 6e this.pan = n
57120 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ull;..
57130 20 20 74 68 69 73 2e 5f 61 32 67 2e 64 69 73 70 this._a2g.disp
57140 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
57150 20 20 20 20 74 68 69 73 2e 5f 61 32 67 20 3d 20 this._a2g =
57160 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 7d null;.. }
57170 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
57180 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
57190 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e return Tone.
571a0 50 61 6e 6e 65 72 3b 0a 09 7d 29 3b 0a 09 4d 6f Panner;..});..Mo
571b0 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 dule(function (T
571c0 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 one) {.. ..
571d0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 /**... * @cla
571e0 73 73 20 20 41 20 73 70 61 74 69 61 6c 69 7a 65 ss A spatialize
571f0 64 20 70 61 6e 6e 65 72 20 6e 6f 64 65 20 77 68 d panner node wh
57200 69 63 68 20 73 75 70 70 6f 72 74 73 20 65 71 75 ich supports equ
57210 61 6c 70 6f 77 65 72 20 6f 72 20 48 52 54 46 20 alpower or HRTF
57220 70 61 6e 6e 69 6e 67 2e 0a 09 09 20 2a 20 20 20 panning.... *
57230 20 20 20 20 20 20 20 54 72 69 65 73 20 74 6f 20 Tries to
57240 6e 6f 72 6d 61 6c 69 7a 65 20 74 68 65 20 41 50 normalize the AP
57250 49 20 61 63 72 6f 73 73 20 76 61 72 69 6f 75 73 I across various
57260 20 62 72 6f 77 73 65 72 73 2e 20 53 65 65 20 54 browsers. See T
57270 6f 6e 65 2e 4c 69 73 74 65 6e 65 72 0a 09 09 20 one.Listener...
57280 2a 20 20 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 * ... * @const
57290 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 ructor... * @ex
572a0 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 20 tends {Tone}...
572b0 2a 20 20 40 70 61 72 61 6d 20 7b 4e 75 6d 62 65 * @param {Numbe
572c0 72 7d 20 70 6f 73 69 74 69 6f 6e 58 20 54 68 65 r} positionX The
572d0 20 69 6e 69 74 69 61 6c 20 78 20 70 6f 73 69 74 initial x posit
572e0 69 6f 6e 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 ion.... * @para
572f0 6d 20 7b 4e 75 6d 62 65 72 7d 20 70 6f 73 69 74 m {Number} posit
57300 69 6f 6e 59 20 54 68 65 20 69 6e 69 74 69 61 6c ionY The initial
57310 20 79 20 70 6f 73 69 74 69 6f 6e 2e 0a 09 09 20 y position....
57320 2a 20 20 40 70 61 72 61 6d 20 7b 4e 75 6d 62 65 * @param {Numbe
57330 72 7d 20 70 6f 73 69 74 69 6f 6e 5a 20 54 68 65 r} positionZ The
57340 20 69 6e 69 74 69 61 6c 20 7a 20 70 6f 73 69 74 initial z posit
57350 69 6f 6e 2e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ion.... */..
57360 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 20 3d 20 Tone.Panner3D =
57370 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
57380 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f var optio
57390 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e ns = this.option
573a0 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 sObject(argument
573b0 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 s, [..
573c0 20 20 27 70 6f 73 69 74 69 6f 6e 58 27 2c 0a 09 'positionX',..
573d0 20 20 20 20 20 20 20 20 20 20 20 20 27 70 6f 73 'pos
573e0 69 74 69 6f 6e 59 27 2c 0a 09 20 20 20 20 20 20 itionY',..
573f0 20 20 20 20 20 20 27 70 6f 73 69 74 69 6f 6e 5a 'positionZ
57400 27 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 54 6f '.. ], To
57410 6e 65 2e 50 61 6e 6e 65 72 33 44 2e 64 65 66 61 ne.Panner3D.defa
57420 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 ults);..
57430 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 70 /**.... * The p
57440 61 6e 6e 65 72 20 6e 6f 64 65 0a 09 09 09 20 2a anner node.... *
57450 20 20 40 74 79 70 65 20 7b 50 61 6e 6e 65 72 4e @type {PannerN
57460 6f 64 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 ode}.... * @pri
57470 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
57480 20 20 20 20 20 74 68 69 73 2e 5f 70 61 6e 6e 65 this._panne
57490 72 20 3d 20 74 68 69 73 2e 69 6e 70 75 74 20 3d r = this.input =
574a0 20 74 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 74 this.output = t
574b0 68 69 73 2e 63 6f 6e 74 65 78 74 2e 63 72 65 61 his.context.crea
574c0 74 65 50 61 6e 6e 65 72 28 29 3b 0a 09 20 20 20 tePanner();..
574d0 20 20 20 20 20 2f 2f 73 65 74 20 73 6f 6d 65 20 //set some
574e0 76 61 6c 75 65 73 0a 09 20 20 20 20 20 20 20 20 values..
574f0 74 68 69 73 2e 5f 70 61 6e 6e 65 72 2e 70 61 6e this._panner.pan
57500 6e 69 6e 67 4d 6f 64 65 6c 20 3d 20 6f 70 74 69 ningModel = opti
57510 6f 6e 73 2e 70 61 6e 6e 69 6e 67 4d 6f 64 65 6c ons.panningModel
57520 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
57530 5f 70 61 6e 6e 65 72 2e 6d 61 78 44 69 73 74 61 _panner.maxDista
57540 6e 63 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 6d 61 nce = options.ma
57550 78 44 69 73 74 61 6e 63 65 3b 0a 09 20 20 20 20 xDistance;..
57560 20 20 20 20 74 68 69 73 2e 5f 70 61 6e 6e 65 72 this._panner
57570 2e 64 69 73 74 61 6e 63 65 4d 6f 64 65 6c 20 3d .distanceModel =
57580 20 6f 70 74 69 6f 6e 73 2e 64 69 73 74 61 6e 63 options.distanc
57590 65 4d 6f 64 65 6c 3b 0a 09 20 20 20 20 20 20 20 eModel;..
575a0 20 74 68 69 73 2e 5f 70 61 6e 6e 65 72 2e 63 6f this._panner.co
575b0 6e 65 4f 75 74 65 72 47 61 69 6e 20 3d 20 6f 70 neOuterGain = op
575c0 74 69 6f 6e 73 2e 63 6f 6e 65 4f 75 74 65 72 47 tions.coneOuterG
575d0 61 69 6e 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ain;.. th
575e0 69 73 2e 5f 70 61 6e 6e 65 72 2e 63 6f 6e 65 4f is._panner.coneO
575f0 75 74 65 72 41 6e 67 6c 65 20 3d 20 6f 70 74 69 uterAngle = opti
57600 6f 6e 73 2e 63 6f 6e 65 4f 75 74 65 72 41 6e 67 ons.coneOuterAng
57610 6c 65 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 le;.. thi
57620 73 2e 5f 70 61 6e 6e 65 72 2e 63 6f 6e 65 49 6e s._panner.coneIn
57630 6e 65 72 41 6e 67 6c 65 20 3d 20 6f 70 74 69 6f nerAngle = optio
57640 6e 73 2e 63 6f 6e 65 49 6e 6e 65 72 41 6e 67 6c ns.coneInnerAngl
57650 65 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 e;.. this
57660 2e 5f 70 61 6e 6e 65 72 2e 72 65 66 44 69 73 74 ._panner.refDist
57670 61 6e 63 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 72 ance = options.r
57680 65 66 44 69 73 74 61 6e 63 65 3b 0a 09 20 20 20 efDistance;..
57690 20 20 20 20 20 74 68 69 73 2e 5f 70 61 6e 6e 65 this._panne
576a0 72 2e 72 6f 6c 6c 6f 66 66 46 61 63 74 6f 72 20 r.rolloffFactor
576b0 3d 20 6f 70 74 69 6f 6e 73 2e 72 6f 6c 6c 6f 66 = options.rollof
576c0 66 46 61 63 74 6f 72 3b 0a 09 20 20 20 20 20 20 fFactor;..
576d0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 48 6f 6c /**.... * Hol
576e0 64 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 6f ds the current o
576f0 72 69 65 6e 74 61 74 69 6f 6e 0a 09 09 09 20 2a rientation.... *
57700 20 20 40 74 79 70 65 20 20 7b 41 72 72 61 79 7d @type {Array}
57710 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
57720 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
57730 20 74 68 69 73 2e 5f 6f 72 69 65 6e 74 61 74 69 this._orientati
57740 6f 6e 20 3d 20 5b 0a 09 20 20 20 20 20 20 20 20 on = [..
57750 20 20 20 20 6f 70 74 69 6f 6e 73 2e 6f 72 69 65 options.orie
57760 6e 74 61 74 69 6f 6e 58 2c 0a 09 20 20 20 20 20 ntationX,..
57770 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 2e 6f options.o
57780 72 69 65 6e 74 61 74 69 6f 6e 59 2c 0a 09 20 20 rientationY,..
57790 20 20 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e option
577a0 73 2e 6f 72 69 65 6e 74 61 74 69 6f 6e 5a 0a 09 s.orientationZ..
577b0 20 20 20 20 20 20 20 20 5d 3b 0a 09 20 20 20 20 ];..
577c0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 48 /**.... * H
577d0 6f 6c 64 73 20 74 68 65 20 63 75 72 72 65 6e 74 olds the current
577e0 20 70 6f 73 69 74 69 6f 6e 0a 09 09 09 20 2a 20 position.... *
577f0 20 40 74 79 70 65 20 20 7b 41 72 72 61 79 7d 0a @type {Array}.
57800 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
57810 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
57820 74 68 69 73 2e 5f 70 6f 73 69 74 69 6f 6e 20 3d this._position =
57830 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 [..
57840 6f 70 74 69 6f 6e 73 2e 70 6f 73 69 74 69 6f 6e options.position
57850 58 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 X,..
57860 6f 70 74 69 6f 6e 73 2e 70 6f 73 69 74 69 6f 6e options.position
57870 59 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 Y,..
57880 6f 70 74 69 6f 6e 73 2e 70 6f 73 69 74 69 6f 6e options.position
57890 5a 0a 09 20 20 20 20 20 20 20 20 5d 3b 0a 09 20 Z.. ];..
578a0 20 20 20 20 20 20 20 2f 2f 20 73 65 74 20 74 68 // set th
578b0 65 20 64 65 66 61 75 6c 74 20 70 6f 73 69 74 69 e default positi
578c0 6f 6e 2f 6f 72 69 65 6e 74 61 74 69 6f 6e 0a 09 on/orientation..
578d0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 72 69 this.ori
578e0 65 6e 74 61 74 69 6f 6e 58 20 3d 20 6f 70 74 69 entationX = opti
578f0 6f 6e 73 2e 6f 72 69 65 6e 74 61 74 69 6f 6e 58 ons.orientationX
57900 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
57910 6f 72 69 65 6e 74 61 74 69 6f 6e 59 20 3d 20 6f orientationY = o
57920 70 74 69 6f 6e 73 2e 6f 72 69 65 6e 74 61 74 69 ptions.orientati
57930 6f 6e 59 3b 0a 09 20 20 20 20 20 20 20 20 74 68 onY;.. th
57940 69 73 2e 6f 72 69 65 6e 74 61 74 69 6f 6e 5a 20 is.orientationZ
57950 3d 20 6f 70 74 69 6f 6e 73 2e 6f 72 69 65 6e 74 = options.orient
57960 61 74 69 6f 6e 5a 3b 0a 09 20 20 20 20 20 20 20 ationZ;..
57970 20 74 68 69 73 2e 70 6f 73 69 74 69 6f 6e 58 20 this.positionX
57980 3d 20 6f 70 74 69 6f 6e 73 2e 70 6f 73 69 74 69 = options.positi
57990 6f 6e 58 3b 0a 09 20 20 20 20 20 20 20 20 74 68 onX;.. th
579a0 69 73 2e 70 6f 73 69 74 69 6f 6e 59 20 3d 20 6f is.positionY = o
579b0 70 74 69 6f 6e 73 2e 70 6f 73 69 74 69 6f 6e 59 ptions.positionY
579c0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
579d0 70 6f 73 69 74 69 6f 6e 5a 20 3d 20 6f 70 74 69 positionZ = opti
579e0 6f 6e 73 2e 70 6f 73 69 74 69 6f 6e 5a 3b 0a 09 ons.positionZ;..
579f0 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 };.. Tone
57a00 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 50 61 6e .extend(Tone.Pan
57a10 6e 65 72 33 44 29 3b 0a 09 20 20 20 20 2f 2a 2a ner3D);.. /**
57a20 0a 09 09 20 2a 20 20 74 68 65 20 64 65 66 61 75 ... * the defau
57a30 6c 74 20 70 61 72 61 6d 65 74 65 72 73 0a 09 09 lt parameters...
57a40 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a * @static... *
57a50 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a 20 20 40 @const... * @
57a60 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 type {Object}...
57a70 20 2a 20 20 44 65 66 61 75 6c 74 73 20 61 63 63 * Defaults acc
57a80 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20 73 70 ording to the sp
57a90 65 63 69 66 69 63 61 74 69 6f 6e 0a 09 09 20 2a ecification... *
57aa0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 6e 6e /.. Tone.Pann
57ab0 65 72 33 44 2e 64 65 66 61 75 6c 74 73 20 3d 20 er3D.defaults =
57ac0 7b 0a 09 20 20 20 20 20 20 20 20 27 70 6f 73 69 {.. 'posi
57ad0 74 69 6f 6e 58 27 3a 20 30 2c 0a 09 20 20 20 20 tionX': 0,..
57ae0 20 20 20 20 27 70 6f 73 69 74 69 6f 6e 59 27 3a 'positionY':
57af0 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 70 6f 0,.. 'po
57b00 73 69 74 69 6f 6e 5a 27 3a 20 30 2c 0a 09 20 20 sitionZ': 0,..
57b10 20 20 20 20 20 20 27 6f 72 69 65 6e 74 61 74 69 'orientati
57b20 6f 6e 58 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 onX': 0,..
57b30 20 20 27 6f 72 69 65 6e 74 61 74 69 6f 6e 59 27 'orientationY'
57b40 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 6f : 0,.. 'o
57b50 72 69 65 6e 74 61 74 69 6f 6e 5a 27 3a 20 30 2c rientationZ': 0,
57b60 0a 09 20 20 20 20 20 20 20 20 27 70 61 6e 6e 69 .. 'panni
57b70 6e 67 4d 6f 64 65 6c 27 3a 20 27 65 71 75 61 6c ngModel': 'equal
57b80 70 6f 77 65 72 27 2c 0a 09 20 20 20 20 20 20 20 power',..
57b90 20 27 6d 61 78 44 69 73 74 61 6e 63 65 27 3a 20 'maxDistance':
57ba0 31 30 30 30 30 2c 0a 09 20 20 20 20 20 20 20 20 10000,..
57bb0 27 64 69 73 74 61 6e 63 65 4d 6f 64 65 6c 27 3a 'distanceModel':
57bc0 20 27 69 6e 76 65 72 73 65 27 2c 0a 09 20 20 20 'inverse',..
57bd0 20 20 20 20 20 27 63 6f 6e 65 4f 75 74 65 72 47 'coneOuterG
57be0 61 69 6e 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 ain': 0,..
57bf0 20 20 27 63 6f 6e 65 4f 75 74 65 72 41 6e 67 6c 'coneOuterAngl
57c00 65 27 3a 20 33 36 30 2c 0a 09 20 20 20 20 20 20 e': 360,..
57c10 20 20 27 63 6f 6e 65 49 6e 6e 65 72 41 6e 67 6c 'coneInnerAngl
57c20 65 27 3a 20 33 36 30 2c 0a 09 20 20 20 20 20 20 e': 360,..
57c30 20 20 27 72 65 66 44 69 73 74 61 6e 63 65 27 3a 'refDistance':
57c40 20 31 2c 0a 09 20 20 20 20 20 20 20 20 27 72 6f 1,.. 'ro
57c50 6c 6c 6f 66 66 46 61 63 74 6f 72 27 3a 20 31 0a lloffFactor': 1.
57c60 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
57c70 0a 09 09 20 2a 20 54 68 65 20 72 61 6d 70 20 74 ... * The ramp t
57c80 69 6d 65 20 77 68 69 63 68 20 69 73 20 61 70 70 ime which is app
57c90 6c 69 65 64 20 74 6f 20 74 68 65 20 73 65 74 54 lied to the setT
57ca0 61 72 67 65 74 41 74 54 69 6d 65 0a 09 09 20 2a argetAtTime... *
57cb0 20 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a @type {Number}.
57cc0 09 09 20 2a 20 40 70 72 69 76 61 74 65 0a 09 09 .. * @private...
57cd0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 */.. Tone.Pa
57ce0 6e 6e 65 72 33 44 2e 70 72 6f 74 6f 74 79 70 65 nner3D.prototype
57cf0 2e 5f 72 61 6d 70 54 69 6d 65 43 6f 6e 73 74 61 ._rampTimeConsta
57d00 6e 74 20 3d 20 30 2e 30 31 3b 0a 09 20 20 20 20 nt = 0.01;..
57d10 2f 2a 2a 0a 09 09 20 2a 20 20 53 65 74 73 20 74 /**... * Sets t
57d20 68 65 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 74 he position of t
57d30 68 65 20 73 6f 75 72 63 65 20 69 6e 20 33 64 20 he source in 3d
57d40 73 70 61 63 65 2e 09 0a 09 09 20 2a 20 20 40 70 space..... * @p
57d50 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 20 aram {Number}
57d60 78 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 x... * @param
57d70 7b 4e 75 6d 62 65 72 7d 20 20 79 0a 09 09 20 2a {Number} y... *
57d80 20 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 @param {Numbe
57d90 72 7d 20 20 7a 0a 09 09 20 2a 20 20 40 72 65 74 r} z... * @ret
57da0 75 72 6e 20 7b 54 6f 6e 65 2e 50 61 6e 6e 65 72 urn {Tone.Panner
57db0 33 44 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 3D} this... */..
57dc0 20 20 20 20 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 Tone.Panner3
57dd0 44 2e 70 72 6f 74 6f 74 79 70 65 2e 73 65 74 50 D.prototype.setP
57de0 6f 73 69 74 69 6f 6e 20 3d 20 66 75 6e 63 74 69 osition = functi
57df0 6f 6e 20 28 78 2c 20 79 2c 20 7a 29 20 7b 0a 09 on (x, y, z) {..
57e00 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
57e10 2e 5f 70 61 6e 6e 65 72 2e 70 6f 73 69 74 69 6f ._panner.positio
57e20 6e 58 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 nX) {..
57e30 20 20 20 76 61 72 20 6e 6f 77 20 3d 20 74 68 69 var now = thi
57e40 73 2e 6e 6f 77 28 29 3b 0a 09 20 20 20 20 20 20 s.now();..
57e50 20 20 20 20 20 20 74 68 69 73 2e 5f 70 61 6e 6e this._pann
57e60 65 72 2e 70 6f 73 69 74 69 6f 6e 58 2e 73 65 74 er.positionX.set
57e70 54 61 72 67 65 74 41 74 54 69 6d 65 28 78 2c 20 TargetAtTime(x,
57e80 6e 6f 77 2c 20 74 68 69 73 2e 5f 72 61 6d 70 54 now, this._rampT
57e90 69 6d 65 43 6f 6e 73 74 61 6e 74 29 3b 0a 09 20 imeConstant);..
57ea0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
57eb0 5f 70 61 6e 6e 65 72 2e 70 6f 73 69 74 69 6f 6e _panner.position
57ec0 59 2e 73 65 74 54 61 72 67 65 74 41 74 54 69 6d Y.setTargetAtTim
57ed0 65 28 79 2c 20 6e 6f 77 2c 20 74 68 69 73 2e 5f e(y, now, this._
57ee0 72 61 6d 70 54 69 6d 65 43 6f 6e 73 74 61 6e 74 rampTimeConstant
57ef0 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
57f00 74 68 69 73 2e 5f 70 61 6e 6e 65 72 2e 70 6f 73 this._panner.pos
57f10 69 74 69 6f 6e 5a 2e 73 65 74 54 61 72 67 65 74 itionZ.setTarget
57f20 41 74 54 69 6d 65 28 7a 2c 20 6e 6f 77 2c 20 74 AtTime(z, now, t
57f30 68 69 73 2e 5f 72 61 6d 70 54 69 6d 65 43 6f 6e his._rampTimeCon
57f40 73 74 61 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 stant);..
57f50 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
57f60 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 61 6e this._pan
57f70 6e 65 72 2e 73 65 74 50 6f 73 69 74 69 6f 6e 28 ner.setPosition(
57f80 78 2c 20 79 2c 20 7a 29 3b 0a 09 20 20 20 20 20 x, y, z);..
57f90 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 74 68 }.. th
57fa0 69 73 2e 5f 70 6f 73 69 74 69 6f 6e 20 3d 20 41 is._position = A
57fb0 72 72 61 79 2e 70 72 6f 74 6f 74 79 70 65 2e 73 rray.prototype.s
57fc0 6c 69 63 65 2e 63 61 6c 6c 28 61 72 67 75 6d 65 lice.call(argume
57fd0 6e 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 72 nts);.. r
57fe0 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 eturn this;..
57ff0 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
58000 2a 20 20 53 65 74 73 20 74 68 65 20 6f 72 69 65 * Sets the orie
58010 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 ntation of the s
58020 6f 75 72 63 65 20 69 6e 20 33 64 20 73 70 61 63 ource in 3d spac
58030 65 2e 09 0a 09 09 20 2a 20 20 40 70 61 72 61 6d e..... * @param
58040 20 20 7b 4e 75 6d 62 65 72 7d 20 20 78 0a 09 09 {Number} x...
58050 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d * @param {Num
58060 62 65 72 7d 20 20 79 0a 09 09 20 2a 20 20 40 70 ber} y... * @p
58070 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 20 aram {Number}
58080 7a 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 z... * @return
58090 7b 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 7d 20 {Tone.Panner3D}
580a0 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
580b0 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 2e 70 72 Tone.Panner3D.pr
580c0 6f 74 6f 74 79 70 65 2e 73 65 74 4f 72 69 65 6e ototype.setOrien
580d0 74 61 74 69 6f 6e 20 3d 20 66 75 6e 63 74 69 6f tation = functio
580e0 6e 20 28 78 2c 20 79 2c 20 7a 29 20 7b 0a 09 20 n (x, y, z) {..
580f0 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e if (this.
58100 5f 70 61 6e 6e 65 72 2e 6f 72 69 65 6e 74 61 74 _panner.orientat
58110 69 6f 6e 58 29 20 7b 0a 09 20 20 20 20 20 20 20 ionX) {..
58120 20 20 20 20 20 76 61 72 20 6e 6f 77 20 3d 20 74 var now = t
58130 68 69 73 2e 6e 6f 77 28 29 3b 0a 09 20 20 20 20 his.now();..
58140 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 61 this._pa
58150 6e 6e 65 72 2e 6f 72 69 65 6e 74 61 74 69 6f 6e nner.orientation
58160 58 2e 73 65 74 54 61 72 67 65 74 41 74 54 69 6d X.setTargetAtTim
58170 65 28 78 2c 20 6e 6f 77 2c 20 74 68 69 73 2e 5f e(x, now, this._
58180 72 61 6d 70 54 69 6d 65 43 6f 6e 73 74 61 6e 74 rampTimeConstant
58190 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
581a0 74 68 69 73 2e 5f 70 61 6e 6e 65 72 2e 6f 72 69 this._panner.ori
581b0 65 6e 74 61 74 69 6f 6e 59 2e 73 65 74 54 61 72 entationY.setTar
581c0 67 65 74 41 74 54 69 6d 65 28 79 2c 20 6e 6f 77 getAtTime(y, now
581d0 2c 20 74 68 69 73 2e 5f 72 61 6d 70 54 69 6d 65 , this._rampTime
581e0 43 6f 6e 73 74 61 6e 74 29 3b 0a 09 20 20 20 20 Constant);..
581f0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 61 this._pa
58200 6e 6e 65 72 2e 6f 72 69 65 6e 74 61 74 69 6f 6e nner.orientation
58210 5a 2e 73 65 74 54 61 72 67 65 74 41 74 54 69 6d Z.setTargetAtTim
58220 65 28 7a 2c 20 6e 6f 77 2c 20 74 68 69 73 2e 5f e(z, now, this._
58230 72 61 6d 70 54 69 6d 65 43 6f 6e 73 74 61 6e 74 rampTimeConstant
58240 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c );.. } el
58250 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 se {..
58260 20 20 74 68 69 73 2e 5f 70 61 6e 6e 65 72 2e 73 this._panner.s
58270 65 74 4f 72 69 65 6e 74 61 74 69 6f 6e 28 78 2c etOrientation(x,
58280 20 79 2c 20 7a 29 3b 0a 09 20 20 20 20 20 20 20 y, z);..
58290 20 7d 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 }.. this
582a0 2e 5f 6f 72 69 65 6e 74 61 74 69 6f 6e 20 3d 20 ._orientation =
582b0 41 72 72 61 79 2e 70 72 6f 74 6f 74 79 70 65 2e Array.prototype.
582c0 73 6c 69 63 65 2e 63 61 6c 6c 28 61 72 67 75 6d slice.call(argum
582d0 65 6e 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 ents);..
582e0 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 return this;..
582f0 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
58300 20 2a 20 20 54 68 65 20 78 20 70 6f 73 69 74 69 * The x positi
58310 6f 6e 20 6f 66 20 74 68 65 20 70 61 6e 6e 65 72 on of the panner
58320 20 6f 62 6a 65 63 74 2e 0a 09 09 20 2a 20 20 40 object.... * @
58330 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 type {Number}...
58340 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
58350 6e 65 2e 50 61 6e 6e 65 72 33 44 23 0a 09 09 20 ne.Panner3D#...
58360 2a 20 20 40 6e 61 6d 65 20 70 6f 73 69 74 69 6f * @name positio
58370 6e 58 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 nX... */.. Ob
58380 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
58390 72 74 79 28 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 rty(Tone.Panner3
583a0 44 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 70 6f D.prototype, 'po
583b0 73 69 74 69 6f 6e 58 27 2c 20 7b 0a 09 20 20 20 sitionX', {..
583c0 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 set: functi
583d0 6f 6e 20 28 70 6f 73 29 20 7b 0a 09 20 20 20 20 on (pos) {..
583e0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 6f this._po
583f0 73 69 74 69 6f 6e 5b 30 5d 20 3d 20 70 6f 73 3b sition[0] = pos;
58400 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
58410 69 73 2e 73 65 74 50 6f 73 69 74 69 6f 6e 2e 61 is.setPosition.a
58420 70 70 6c 79 28 74 68 69 73 2c 20 74 68 69 73 2e pply(this, this.
58430 5f 70 6f 73 69 74 69 6f 6e 29 3b 0a 09 20 20 20 _position);..
58440 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
58450 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
58460 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
58470 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 70 6f return this._po
58480 73 69 74 69 6f 6e 5b 30 5d 3b 0a 09 20 20 20 20 sition[0];..
58490 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
584a0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 /**... * Th
584b0 65 20 79 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 e y position of
584c0 74 68 65 20 70 61 6e 6e 65 72 20 6f 62 6a 65 63 the panner objec
584d0 74 2e 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b t.... * @type {
584e0 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 6d Number}... * @m
584f0 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 50 61 6e emberOf Tone.Pan
58500 6e 65 72 33 44 23 0a 09 09 20 2a 20 20 40 6e 61 ner3D#... * @na
58510 6d 65 20 70 6f 73 69 74 69 6f 6e 59 0a 09 09 20 me positionY...
58520 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 */.. Object.d
58530 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f efineProperty(To
58540 6e 65 2e 50 61 6e 6e 65 72 33 44 2e 70 72 6f 74 ne.Panner3D.prot
58550 6f 74 79 70 65 2c 20 27 70 6f 73 69 74 69 6f 6e otype, 'position
58560 59 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 73 Y', {.. s
58570 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 70 6f et: function (po
58580 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 s) {..
58590 20 20 74 68 69 73 2e 5f 70 6f 73 69 74 69 6f 6e this._position
585a0 5b 31 5d 20 3d 20 70 6f 73 3b 0a 09 20 20 20 20 [1] = pos;..
585b0 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 74 this.set
585c0 50 6f 73 69 74 69 6f 6e 2e 61 70 70 6c 79 28 74 Position.apply(t
585d0 68 69 73 2c 20 74 68 69 73 2e 5f 70 6f 73 69 74 his, this._posit
585e0 69 6f 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 7d ion);.. }
585f0 2c 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 ,.. get:
58600 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
58610 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
58620 6e 20 74 68 69 73 2e 5f 70 6f 73 69 74 69 6f 6e n this._position
58630 5b 31 5d 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a [1];.. }.
58640 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a . });.. /*
58650 2a 0a 09 09 20 2a 20 20 54 68 65 20 7a 20 70 6f *... * The z po
58660 73 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 61 sition of the pa
58670 6e 6e 65 72 20 6f 62 6a 65 63 74 2e 0a 09 09 20 nner object....
58680 2a 20 20 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 * @type {Number
58690 7d 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f }... * @memberO
586a0 66 20 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 23 f Tone.Panner3D#
586b0 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 70 6f 73 ... * @name pos
586c0 69 74 69 6f 6e 5a 0a 09 09 20 2a 2f 0a 09 20 20 itionZ... */..
586d0 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
586e0 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 61 6e roperty(Tone.Pan
586f0 6e 65 72 33 44 2e 70 72 6f 74 6f 74 79 70 65 2c ner3D.prototype,
58700 20 27 70 6f 73 69 74 69 6f 6e 5a 27 2c 20 7b 0a 'positionZ', {.
58710 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
58720 6e 63 74 69 6f 6e 20 28 70 6f 73 29 20 7b 0a 09 nction (pos) {..
58730 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
58740 2e 5f 70 6f 73 69 74 69 6f 6e 5b 32 5d 20 3d 20 ._position[2] =
58750 70 6f 73 3b 0a 09 20 20 20 20 20 20 20 20 20 20 pos;..
58760 20 20 74 68 69 73 2e 73 65 74 50 6f 73 69 74 69 this.setPositi
58770 6f 6e 2e 61 70 70 6c 79 28 74 68 69 73 2c 20 74 on.apply(this, t
58780 68 69 73 2e 5f 70 6f 73 69 74 69 6f 6e 29 3b 0a his._position);.
58790 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 . },..
587a0 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
587b0 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
587c0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
587d0 2e 5f 70 6f 73 69 74 69 6f 6e 5b 32 5d 3b 0a 09 ._position[2];..
587e0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
587f0 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
58800 20 20 54 68 65 20 78 20 6f 72 69 65 6e 74 61 74 The x orientat
58810 69 6f 6e 20 6f 66 20 74 68 65 20 70 61 6e 6e 65 ion of the panne
58820 72 20 6f 62 6a 65 63 74 2e 0a 09 09 20 2a 20 20 r object.... *
58830 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 @type {Number}..
58840 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 . * @memberOf T
58850 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 23 0a 09 09 one.Panner3D#...
58860 20 2a 20 20 40 6e 61 6d 65 20 6f 72 69 65 6e 74 * @name orient
58870 61 74 69 6f 6e 58 0a 09 09 20 2a 2f 0a 09 20 20 ationX... */..
58880 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
58890 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 61 6e roperty(Tone.Pan
588a0 6e 65 72 33 44 2e 70 72 6f 74 6f 74 79 70 65 2c ner3D.prototype,
588b0 20 27 6f 72 69 65 6e 74 61 74 69 6f 6e 58 27 2c 'orientationX',
588c0 20 7b 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a {.. set:
588d0 20 66 75 6e 63 74 69 6f 6e 20 28 70 6f 73 29 20 function (pos)
588e0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
588f0 68 69 73 2e 5f 6f 72 69 65 6e 74 61 74 69 6f 6e his._orientation
58900 5b 30 5d 20 3d 20 70 6f 73 3b 0a 09 20 20 20 20 [0] = pos;..
58910 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 74 this.set
58920 4f 72 69 65 6e 74 61 74 69 6f 6e 2e 61 70 70 6c Orientation.appl
58930 79 28 74 68 69 73 2c 20 74 68 69 73 2e 5f 6f 72 y(this, this._or
58940 69 65 6e 74 61 74 69 6f 6e 29 3b 0a 09 20 20 20 ientation);..
58950 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
58960 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
58970 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
58980 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6f 72 return this._or
58990 69 65 6e 74 61 74 69 6f 6e 5b 30 5d 3b 0a 09 20 ientation[0];..
589a0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 }.. })
589b0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
589c0 20 54 68 65 20 79 20 6f 72 69 65 6e 74 61 74 69 The y orientati
589d0 6f 6e 20 6f 66 20 74 68 65 20 70 61 6e 6e 65 72 on of the panner
589e0 20 6f 62 6a 65 63 74 2e 0a 09 09 20 2a 20 20 40 object.... * @
589f0 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 type {Number}...
58a00 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
58a10 6e 65 2e 50 61 6e 6e 65 72 33 44 23 0a 09 09 20 ne.Panner3D#...
58a20 2a 20 20 40 6e 61 6d 65 20 6f 72 69 65 6e 74 61 * @name orienta
58a30 74 69 6f 6e 59 0a 09 09 20 2a 2f 0a 09 20 20 20 tionY... */..
58a40 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
58a50 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 61 6e 6e operty(Tone.Pann
58a60 65 72 33 44 2e 70 72 6f 74 6f 74 79 70 65 2c 20 er3D.prototype,
58a70 27 6f 72 69 65 6e 74 61 74 69 6f 6e 59 27 2c 20 'orientationY',
58a80 7b 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 {.. set:
58a90 66 75 6e 63 74 69 6f 6e 20 28 70 6f 73 29 20 7b function (pos) {
58aa0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
58ab0 69 73 2e 5f 6f 72 69 65 6e 74 61 74 69 6f 6e 5b is._orientation[
58ac0 31 5d 20 3d 20 70 6f 73 3b 0a 09 20 20 20 20 20 1] = pos;..
58ad0 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 74 4f this.setO
58ae0 72 69 65 6e 74 61 74 69 6f 6e 2e 61 70 70 6c 79 rientation.apply
58af0 28 74 68 69 73 2c 20 74 68 69 73 2e 5f 6f 72 69 (this, this._ori
58b00 65 6e 74 61 74 69 6f 6e 29 3b 0a 09 20 20 20 20 entation);..
58b10 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
58b20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 get: function ()
58b30 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
58b40 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6f 72 69 return this._ori
58b50 65 6e 74 61 74 69 6f 6e 5b 31 5d 3b 0a 09 20 20 entation[1];..
58b60 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b }.. });
58b70 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
58b80 54 68 65 20 7a 20 6f 72 69 65 6e 74 61 74 69 6f The z orientatio
58b90 6e 20 6f 66 20 74 68 65 20 70 61 6e 6e 65 72 20 n of the panner
58ba0 6f 62 6a 65 63 74 2e 0a 09 09 20 2a 20 20 40 74 object.... * @t
58bb0 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 ype {Number}...
58bc0 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
58bd0 65 2e 50 61 6e 6e 65 72 33 44 23 0a 09 09 20 2a e.Panner3D#... *
58be0 20 20 40 6e 61 6d 65 20 6f 72 69 65 6e 74 61 74 @name orientat
58bf0 69 6f 6e 5a 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ionZ... */..
58c00 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
58c10 70 65 72 74 79 28 54 6f 6e 65 2e 50 61 6e 6e 65 perty(Tone.Panne
58c20 72 33 44 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 r3D.prototype, '
58c30 6f 72 69 65 6e 74 61 74 69 6f 6e 5a 27 2c 20 7b orientationZ', {
58c40 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 .. set: f
58c50 75 6e 63 74 69 6f 6e 20 28 70 6f 73 29 20 7b 0a unction (pos) {.
58c60 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
58c70 73 2e 5f 6f 72 69 65 6e 74 61 74 69 6f 6e 5b 32 s._orientation[2
58c80 5d 20 3d 20 70 6f 73 3b 0a 09 20 20 20 20 20 20 ] = pos;..
58c90 20 20 20 20 20 20 74 68 69 73 2e 73 65 74 4f 72 this.setOr
58ca0 69 65 6e 74 61 74 69 6f 6e 2e 61 70 70 6c 79 28 ientation.apply(
58cb0 74 68 69 73 2c 20 74 68 69 73 2e 5f 6f 72 69 65 this, this._orie
58cc0 6e 74 61 74 69 6f 6e 29 3b 0a 09 20 20 20 20 20 ntation);..
58cd0 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 67 },.. g
58ce0 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
58cf0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
58d00 65 74 75 72 6e 20 74 68 69 73 2e 5f 6f 72 69 65 eturn this._orie
58d10 6e 74 61 74 69 6f 6e 5b 32 5d 3b 0a 09 20 20 20 ntation[2];..
58d20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
58d30 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 50 . /**... * P
58d40 72 6f 78 79 20 61 20 70 72 6f 70 65 72 74 79 20 roxy a property
58d50 6f 6e 20 74 68 65 20 70 61 6e 6e 65 72 20 74 6f on the panner to
58d60 20 61 6e 20 65 78 70 6f 73 65 64 20 70 75 62 6c an exposed publ
58d70 69 63 20 70 72 6f 70 65 72 79 0a 09 09 20 2a 20 ic propery... *
58d80 20 40 70 61 72 61 6d 20 20 7b 53 74 72 69 6e 67 @param {String
58d90 7d 20 20 70 72 6f 70 0a 09 09 20 2a 20 20 40 70 } prop... * @p
58da0 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 rivate... */..
58db0 20 20 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 2e Tone.Panner3D.
58dc0 5f 61 6c 69 61 73 50 72 6f 70 65 72 74 79 20 3d _aliasProperty =
58dd0 20 66 75 6e 63 74 69 6f 6e 20 28 70 72 6f 70 29 function (prop)
58de0 20 7b 0a 09 20 20 20 20 20 20 20 20 4f 62 6a 65 {.. Obje
58df0 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
58e00 79 28 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 2e y(Tone.Panner3D.
58e10 70 72 6f 74 6f 74 79 70 65 2c 20 70 72 6f 70 2c prototype, prop,
58e20 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
58e30 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 76 set: function (v
58e40 61 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 al) {..
58e50 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 61 6e this._pan
58e60 6e 65 72 5b 70 72 6f 70 5d 20 3d 20 76 61 6c 3b ner[prop] = val;
58e70 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c .. },
58e80 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 67 65 .. ge
58e90 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b t: function () {
58ea0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
58eb0 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 70 return this._p
58ec0 61 6e 6e 65 72 5b 70 72 6f 70 5d 3b 0a 09 20 20 anner[prop];..
58ed0 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
58ee0 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 7d 3b });.. };
58ef0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
58f00 54 68 65 20 70 61 6e 6e 69 6e 67 20 6d 6f 64 65 The panning mode
58f10 6c 2e 20 45 69 74 68 65 72 20 22 65 71 75 61 6c l. Either "equal
58f20 70 6f 77 65 72 22 20 6f 72 20 22 48 52 54 46 22 power" or "HRTF"
58f30 2e 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 53 .... * @type {S
58f40 74 72 69 6e 67 7d 0a 09 09 20 2a 20 20 40 6d 65 tring}... * @me
58f50 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 50 61 6e 6e mberOf Tone.Pann
58f60 65 72 33 44 23 0a 09 09 20 2a 20 20 40 6e 61 6d er3D#... * @nam
58f70 65 20 70 61 6e 6e 69 6e 67 4d 6f 64 65 6c 0a 09 e panningModel..
58f80 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 . */.. Tone.P
58f90 61 6e 6e 65 72 33 44 2e 5f 61 6c 69 61 73 50 72 anner3D._aliasPr
58fa0 6f 70 65 72 74 79 28 27 70 61 6e 6e 69 6e 67 4d operty('panningM
58fb0 6f 64 65 6c 27 29 3b 0a 09 20 20 20 20 2f 2a 2a odel');.. /**
58fc0 0a 09 09 20 2a 20 20 41 20 72 65 66 65 72 65 6e ... * A referen
58fd0 63 65 20 64 69 73 74 61 6e 63 65 20 66 6f 72 20 ce distance for
58fe0 72 65 64 75 63 69 6e 67 20 76 6f 6c 75 6d 65 20 reducing volume
58ff0 61 73 20 73 6f 75 72 63 65 20 6d 6f 76 65 20 66 as source move f
59000 75 72 74 68 65 72 20 66 72 6f 6d 20 74 68 65 20 urther from the
59010 6c 69 73 74 65 6e 65 72 0a 09 09 20 2a 20 20 40 listener... * @
59020 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 type {Number}...
59030 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
59040 6e 65 2e 50 61 6e 6e 65 72 33 44 23 0a 09 09 20 ne.Panner3D#...
59050 2a 20 20 40 6e 61 6d 65 20 72 65 66 44 69 73 74 * @name refDist
59060 61 6e 63 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ance... */..
59070 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 2e 5f 61 Tone.Panner3D._a
59080 6c 69 61 73 50 72 6f 70 65 72 74 79 28 27 72 65 liasProperty('re
59090 66 44 69 73 74 61 6e 63 65 27 29 3b 0a 09 20 20 fDistance');..
590a0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 44 65 73 63 /**... * Desc
590b0 72 69 62 65 73 20 68 6f 77 20 71 75 69 63 6b 6c ribes how quickl
590c0 79 20 74 68 65 20 76 6f 6c 75 6d 65 20 69 73 20 y the volume is
590d0 72 65 64 75 63 65 64 20 61 73 20 73 6f 75 72 63 reduced as sourc
590e0 65 20 6d 6f 76 65 73 20 61 77 61 79 20 66 72 6f e moves away fro
590f0 6d 20 6c 69 73 74 65 6e 65 72 2e 0a 09 09 20 2a m listener.... *
59100 20 20 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d @type {Number}
59110 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
59120 20 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 23 0a Tone.Panner3D#.
59130 09 09 20 2a 20 20 40 6e 61 6d 65 20 72 6f 6c 6c .. * @name roll
59140 6f 66 66 46 61 63 74 6f 72 0a 09 09 20 2a 2f 0a offFactor... */.
59150 09 20 20 20 20 54 6f 6e 65 2e 50 61 6e 6e 65 72 . Tone.Panner
59160 33 44 2e 5f 61 6c 69 61 73 50 72 6f 70 65 72 74 3D._aliasPropert
59170 79 28 27 72 6f 6c 6c 6f 66 66 46 61 63 74 6f 72 y('rolloffFactor
59180 27 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 ');.. /**...
59190 2a 20 20 54 68 65 20 64 69 73 74 61 6e 63 65 20 * The distance
591a0 6d 6f 64 65 6c 20 75 73 65 64 20 62 79 2c 20 20 model used by,
591b0 22 6c 69 6e 65 61 72 22 2c 20 22 69 6e 76 65 72 "linear", "inver
591c0 73 65 22 2c 20 6f 72 20 22 65 78 70 6f 6e 65 6e se", or "exponen
591d0 74 69 61 6c 22 2e 0a 09 09 20 2a 20 20 40 74 79 tial".... * @ty
591e0 70 65 20 7b 53 74 72 69 6e 67 7d 0a 09 09 20 2a pe {String}... *
591f0 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 @memberOf Tone
59200 2e 50 61 6e 6e 65 72 33 44 23 0a 09 09 20 2a 20 .Panner3D#... *
59210 20 40 6e 61 6d 65 20 64 69 73 74 61 6e 63 65 4d @name distanceM
59220 6f 64 65 6c 0a 09 09 20 2a 2f 0a 09 20 20 20 20 odel... */..
59230 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 2e 5f 61 Tone.Panner3D._a
59240 6c 69 61 73 50 72 6f 70 65 72 74 79 28 27 64 69 liasProperty('di
59250 73 74 61 6e 63 65 4d 6f 64 65 6c 27 29 3b 0a 09 stanceModel');..
59260 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 /**... * Th
59270 65 20 61 6e 67 6c 65 2c 20 69 6e 20 64 65 67 72 e angle, in degr
59280 65 65 73 2c 20 69 6e 73 69 64 65 20 6f 66 20 77 ees, inside of w
59290 68 69 63 68 20 74 68 65 72 65 20 77 69 6c 6c 20 hich there will
592a0 62 65 20 6e 6f 20 76 6f 6c 75 6d 65 20 72 65 64 be no volume red
592b0 75 63 74 69 6f 6e 0a 09 09 20 2a 20 20 40 74 79 uction... * @ty
592c0 70 65 20 7b 44 65 67 72 65 65 73 7d 0a 09 09 20 pe {Degrees}...
592d0 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
592e0 65 2e 50 61 6e 6e 65 72 33 44 23 0a 09 09 20 2a e.Panner3D#... *
592f0 20 20 40 6e 61 6d 65 20 63 6f 6e 65 49 6e 6e 65 @name coneInne
59300 72 41 6e 67 6c 65 0a 09 09 20 2a 2f 0a 09 20 20 rAngle... */..
59310 20 20 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 2e Tone.Panner3D.
59320 5f 61 6c 69 61 73 50 72 6f 70 65 72 74 79 28 27 _aliasProperty('
59330 63 6f 6e 65 49 6e 6e 65 72 41 6e 67 6c 65 27 29 coneInnerAngle')
59340 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
59350 20 54 68 65 20 61 6e 67 6c 65 2c 20 69 6e 20 64 The angle, in d
59360 65 67 72 65 65 73 2c 20 6f 75 74 73 69 64 65 20 egrees, outside
59370 6f 66 20 77 68 69 63 68 20 74 68 65 20 76 6f 6c of which the vol
59380 75 6d 65 20 77 69 6c 6c 20 62 65 20 72 65 64 75 ume will be redu
59390 63 65 64 20 0a 09 09 20 2a 20 20 74 6f 20 61 20 ced ... * to a
593a0 63 6f 6e 73 74 61 6e 74 20 76 61 6c 75 65 20 6f constant value o
593b0 66 20 63 6f 6e 65 4f 75 74 65 72 47 61 69 6e 0a f coneOuterGain.
593c0 09 09 20 2a 20 20 40 74 79 70 65 20 7b 44 65 67 .. * @type {Deg
593d0 72 65 65 73 7d 0a 09 09 20 2a 20 20 40 6d 65 6d rees}... * @mem
593e0 62 65 72 4f 66 20 54 6f 6e 65 2e 50 61 6e 6e 65 berOf Tone.Panne
593f0 72 33 44 23 0a 09 09 20 2a 20 20 40 6e 61 6d 65 r3D#... * @name
59400 20 63 6f 6e 65 4f 75 74 65 72 41 6e 67 6c 65 0a coneOuterAngle.
59410 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
59420 50 61 6e 6e 65 72 33 44 2e 5f 61 6c 69 61 73 50 Panner3D._aliasP
59430 72 6f 70 65 72 74 79 28 27 63 6f 6e 65 4f 75 74 roperty('coneOut
59440 65 72 41 6e 67 6c 65 27 29 3b 0a 09 20 20 20 20 erAngle');..
59450 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 67 61 /**... * The ga
59460 69 6e 20 6f 75 74 73 69 64 65 20 6f 66 20 74 68 in outside of th
59470 65 20 63 6f 6e 65 4f 75 74 65 72 41 6e 67 6c 65 e coneOuterAngle
59480 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 47 61 ... * @type {Ga
59490 69 6e 7d 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 in}... * @membe
594a0 72 4f 66 20 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 rOf Tone.Panner3
594b0 44 23 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 63 D#... * @name c
594c0 6f 6e 65 4f 75 74 65 72 47 61 69 6e 0a 09 09 20 oneOuterGain...
594d0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 6e */.. Tone.Pan
594e0 6e 65 72 33 44 2e 5f 61 6c 69 61 73 50 72 6f 70 ner3D._aliasProp
594f0 65 72 74 79 28 27 63 6f 6e 65 4f 75 74 65 72 47 erty('coneOuterG
59500 61 69 6e 27 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a ain');.. /**.
59510 09 09 20 2a 20 20 54 68 65 20 6d 61 78 69 6d 75 .. * The maximu
59520 6d 20 64 69 73 74 61 6e 63 65 20 62 65 74 77 65 m distance betwe
59530 65 6e 20 73 6f 75 72 63 65 20 61 6e 64 20 6c 69 en source and li
59540 73 74 65 6e 65 72 2c 20 0a 09 09 20 2a 20 20 61 stener, ... * a
59550 66 74 65 72 20 77 68 69 63 68 20 74 68 65 20 76 fter which the v
59560 6f 6c 75 6d 65 20 77 69 6c 6c 20 6e 6f 74 20 62 olume will not b
59570 65 20 72 65 64 75 63 65 64 20 61 6e 79 20 66 75 e reduced any fu
59580 72 74 68 65 72 2e 0a 09 09 20 2a 20 20 40 74 79 rther.... * @ty
59590 70 65 20 7b 50 6f 73 69 74 69 76 65 7d 0a 09 09 pe {Positive}...
595a0 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
595b0 6e 65 2e 50 61 6e 6e 65 72 33 44 23 0a 09 09 20 ne.Panner3D#...
595c0 2a 20 20 40 6e 61 6d 65 20 6d 61 78 44 69 73 74 * @name maxDist
595d0 61 6e 63 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ance... */..
595e0 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 2e 5f 61 Tone.Panner3D._a
595f0 6c 69 61 73 50 72 6f 70 65 72 74 79 28 27 6d 61 liasProperty('ma
59600 78 44 69 73 74 61 6e 63 65 27 29 3b 0a 09 20 20 xDistance');..
59610 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 /**... * Clea
59620 6e 20 75 70 2e 0a 09 09 20 2a 20 20 40 72 65 74 n up.... * @ret
59630 75 72 6e 73 20 7b 54 6f 6e 65 2e 50 61 6e 6e 65 urns {Tone.Panne
59640 72 33 44 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a r3D} this... */.
59650 09 20 20 20 20 54 6f 6e 65 2e 50 61 6e 6e 65 72 . Tone.Panner
59660 33 44 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 3D.prototype.dis
59670 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 pose = function
59680 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 () {.. th
59690 69 73 2e 5f 70 61 6e 6e 65 72 2e 64 69 73 63 6f is._panner.disco
596a0 6e 6e 65 63 74 28 29 3b 0a 09 20 20 20 20 20 20 nnect();..
596b0 20 20 74 68 69 73 2e 5f 70 61 6e 6e 65 72 20 3d this._panner =
596c0 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
596d0 74 68 69 73 2e 5f 6f 72 69 65 6e 74 61 74 69 6f this._orientatio
596e0 6e 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 n = null;..
596f0 20 20 20 74 68 69 73 2e 5f 70 6f 73 69 74 69 6f this._positio
59700 6e 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 n = null;..
59710 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
59720 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 . };.. ret
59730 75 72 6e 20 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 urn Tone.Panner3
59740 44 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 D;..});..Module(
59750 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 function (Tone)
59760 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a {.. .. /**
59770 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 54 6f ... * @class To
59780 6e 65 2e 50 61 6e 56 6f 6c 20 69 73 20 61 20 54 ne.PanVol is a T
59790 6f 6e 65 2e 50 61 6e 6e 65 72 20 61 6e 64 20 54 one.Panner and T
597a0 6f 6e 65 2e 56 6f 6c 75 6d 65 20 69 6e 20 6f 6e one.Volume in on
597b0 65 2e 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 65 e.... *... * @e
597c0 78 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 xtends {Tone}...
597d0 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 * @constructor
597e0 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 41 ... * @param {A
597f0 75 64 69 6f 52 61 6e 67 65 7d 20 70 61 6e 20 74 udioRange} pan t
59800 68 65 20 69 6e 69 74 69 61 6c 20 70 61 6e 0a 09 he initial pan..
59810 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e 75 6d . * @param {num
59820 62 65 72 7d 20 76 6f 6c 75 6d 65 20 54 68 65 20 ber} volume The
59830 6f 75 74 70 75 74 20 76 6f 6c 75 6d 65 2e 20 0a output volume. .
59840 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
59850 09 20 2a 20 2f 2f 70 61 6e 20 74 68 65 20 69 6e . * //pan the in
59860 63 6f 6d 69 6e 67 20 73 69 67 6e 61 6c 20 6c 65 coming signal le
59870 66 74 20 61 6e 64 20 64 72 6f 70 20 74 68 65 20 ft and drop the
59880 76 6f 6c 75 6d 65 0a 09 09 20 2a 20 76 61 72 20 volume... * var
59890 70 61 6e 56 6f 6c 20 3d 20 6e 65 77 20 54 6f 6e panVol = new Ton
598a0 65 2e 50 61 6e 56 6f 6c 28 30 2e 32 35 2c 20 2d e.PanVol(0.25, -
598b0 31 32 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 12);... */..
598c0 54 6f 6e 65 2e 50 61 6e 56 6f 6c 20 3d 20 66 75 Tone.PanVol = fu
598d0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
598e0 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 var options
598f0 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f = this.optionsO
59900 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c bject(arguments,
59910 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 [..
59920 27 70 61 6e 27 2c 0a 09 20 20 20 20 20 20 20 20 'pan',..
59930 20 20 20 20 27 76 6f 6c 75 6d 65 27 0a 09 20 20 'volume'..
59940 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 50 61 ], Tone.Pa
59950 6e 56 6f 6c 2e 64 65 66 61 75 6c 74 73 29 3b 0a nVol.defaults);.
59960 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
59970 20 2a 20 20 54 68 65 20 70 61 6e 6e 69 6e 67 20 * The panning
59980 6e 6f 64 65 0a 09 09 09 20 2a 20 20 40 74 79 70 node.... * @typ
59990 65 20 7b 54 6f 6e 65 2e 50 61 6e 6e 65 72 7d 0a e {Tone.Panner}.
599a0 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
599b0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
599c0 74 68 69 73 2e 5f 70 61 6e 6e 65 72 20 3d 20 74 this._panner = t
599d0 68 69 73 2e 69 6e 70 75 74 20 3d 20 6e 65 77 20 his.input = new
599e0 54 6f 6e 65 2e 50 61 6e 6e 65 72 28 6f 70 74 69 Tone.Panner(opti
599f0 6f 6e 73 2e 70 61 6e 29 3b 0a 09 20 20 20 20 20 ons.pan);..
59a00 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 /**.... * Th
59a10 65 20 4c 2f 52 20 70 61 6e 6e 69 6e 67 20 63 6f e L/R panning co
59a20 6e 74 72 6f 6c 2e 0a 09 09 09 20 2a 20 20 40 74 ntrol..... * @t
59a30 79 70 65 20 7b 41 75 64 69 6f 52 61 6e 67 65 7d ype {AudioRange}
59a40 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a .... * @signal.
59a50 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
59a60 74 68 69 73 2e 70 61 6e 20 3d 20 74 68 69 73 2e this.pan = this.
59a70 5f 70 61 6e 6e 65 72 2e 70 61 6e 3b 0a 09 20 20 _panner.pan;..
59a80 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
59a90 20 54 68 65 20 76 6f 6c 75 6d 65 20 6e 6f 64 65 The volume node
59aa0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 .... * @type {T
59ab0 6f 6e 65 2e 56 6f 6c 75 6d 65 7d 0a 09 09 09 20 one.Volume}....
59ac0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
59ad0 2e 5f 76 6f 6c 75 6d 65 20 3d 20 74 68 69 73 2e ._volume = this.
59ae0 6f 75 74 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e output = new Ton
59af0 65 2e 56 6f 6c 75 6d 65 28 6f 70 74 69 6f 6e 73 e.Volume(options
59b00 2e 76 6f 6c 75 6d 65 29 3b 0a 09 20 20 20 20 20 .volume);..
59b10 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 /**.... * Th
59b20 65 20 76 6f 6c 75 6d 65 20 63 6f 6e 74 72 6f 6c e volume control
59b30 20 69 6e 20 64 65 63 69 62 65 6c 73 2e 20 0a 09 in decibels. ..
59b40 09 09 20 2a 20 20 40 74 79 70 65 20 7b 44 65 63 .. * @type {Dec
59b50 69 62 65 6c 73 7d 0a 09 09 09 20 2a 20 20 40 73 ibels}.... * @s
59b60 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 ignal.... */..
59b70 20 20 20 20 20 20 74 68 69 73 2e 76 6f 6c 75 6d this.volum
59b80 65 20 3d 20 74 68 69 73 2e 5f 76 6f 6c 75 6d 65 e = this._volume
59b90 2e 76 6f 6c 75 6d 65 3b 0a 09 20 20 20 20 20 20 .volume;..
59ba0 20 20 2f 2f 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a //connections.
59bb0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 . this._p
59bc0 61 6e 6e 65 72 2e 63 6f 6e 6e 65 63 74 28 74 68 anner.connect(th
59bd0 69 73 2e 5f 76 6f 6c 75 6d 65 29 3b 0a 09 20 20 is._volume);..
59be0 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 64 this._read
59bf0 4f 6e 6c 79 28 5b 0a 09 20 20 20 20 20 20 20 20 Only([..
59c00 20 20 20 20 27 70 61 6e 27 2c 0a 09 20 20 20 20 'pan',..
59c10 20 20 20 20 20 20 20 20 27 76 6f 6c 75 6d 65 27 'volume'
59c20 0a 09 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 20 .. ]);..
59c30 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e };.. Tone.
59c40 65 78 74 65 6e 64 28 54 6f 6e 65 2e 50 61 6e 56 extend(Tone.PanV
59c50 6f 6c 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 ol);.. /**...
59c60 20 2a 20 20 54 68 65 20 64 65 66 61 75 6c 74 73 * The defaults
59c70 0a 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 4f ... * @type {O
59c80 62 6a 65 63 74 7d 0a 09 09 20 2a 20 20 40 63 6f bject}... * @co
59c90 6e 73 74 0a 09 09 20 2a 20 20 40 73 74 61 74 69 nst... * @stati
59ca0 63 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e c... */.. Ton
59cb0 65 2e 50 61 6e 56 6f 6c 2e 64 65 66 61 75 6c 74 e.PanVol.default
59cc0 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 27 s = {.. '
59cd0 70 61 6e 27 3a 20 30 2e 35 2c 0a 09 20 20 20 20 pan': 0.5,..
59ce0 20 20 20 20 27 76 6f 6c 75 6d 65 27 3a 20 30 0a 'volume': 0.
59cf0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
59d00 0a 09 09 20 2a 20 20 63 6c 65 61 6e 20 75 70 0a ... * clean up.
59d10 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
59d20 54 6f 6e 65 2e 50 61 6e 56 6f 6c 7d 20 74 68 69 Tone.PanVol} thi
59d30 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
59d40 65 2e 50 61 6e 56 6f 6c 2e 70 72 6f 74 6f 74 79 e.PanVol.prototy
59d50 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e pe.dispose = fun
59d60 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
59d70 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 Tone.prototy
59d80 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 pe.dispose.call(
59d90 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 this);..
59da0 74 68 69 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b this._writable([
59db0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 70 .. 'p
59dc0 61 6e 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 an',..
59dd0 20 20 27 76 6f 6c 75 6d 65 27 0a 09 20 20 20 20 'volume'..
59de0 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 ]);..
59df0 20 74 68 69 73 2e 5f 70 61 6e 6e 65 72 2e 64 69 this._panner.di
59e00 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
59e10 20 20 74 68 69 73 2e 5f 70 61 6e 6e 65 72 20 3d this._panner =
59e20 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
59e30 74 68 69 73 2e 70 61 6e 20 3d 20 6e 75 6c 6c 3b this.pan = null;
59e40 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
59e50 76 6f 6c 75 6d 65 2e 64 69 73 70 6f 73 65 28 29 volume.dispose()
59e60 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
59e70 5f 76 6f 6c 75 6d 65 20 3d 20 6e 75 6c 6c 3b 0a _volume = null;.
59e80 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 6f . this.vo
59e90 6c 75 6d 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 lume = null;..
59ea0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
59eb0 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
59ec0 72 65 74 75 72 6e 20 54 6f 6e 65 2e 50 61 6e 56 return Tone.PanV
59ed0 6f 6c 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 ol;..});..Module
59ee0 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 (function (Tone)
59ef0 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a {.. .. /*
59f00 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 54 *... * @class T
59f10 6f 6e 65 2e 43 74 72 6c 49 6e 74 65 72 70 6f 6c one.CtrlInterpol
59f20 61 74 65 20 77 69 6c 6c 20 69 6e 74 65 72 70 6f ate will interpo
59f30 6c 61 74 65 20 62 65 74 77 65 65 6e 20 67 69 76 late between giv
59f40 65 6e 20 76 61 6c 75 65 73 20 62 61 73 65 64 0a en values based.
59f50 09 09 20 2a 20 20 20 20 20 20 20 20 20 6f 6e 20 .. * on
59f60 74 68 65 20 22 69 6e 64 65 78 22 20 70 72 6f 70 the "index" prop
59f70 65 72 74 79 2e 20 50 61 73 73 69 6e 67 20 69 6e erty. Passing in
59f80 20 61 6e 20 61 72 72 61 79 20 6f 72 20 6f 62 6a an array or obj
59f90 65 63 74 20 6c 69 74 65 72 61 6c 0a 09 09 20 2a ect literal... *
59fa0 20 20 20 20 20 20 20 20 20 77 69 6c 6c 20 69 6e will in
59fb0 74 65 72 70 6f 6c 61 74 65 20 65 61 63 68 20 6f terpolate each o
59fc0 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 f the parameters
59fd0 2e 20 4e 6f 74 65 20 28 69 2e 65 2e 20 22 43 33 . Note (i.e. "C3
59fe0 22 29 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 ")... *
59ff0 61 6e 64 20 54 69 6d 65 20 28 69 2e 65 2e 20 22 and Time (i.e. "
5a000 34 6e 20 2b 20 32 22 29 20 63 61 6e 20 62 65 20 4n + 2") can be
5a010 69 6e 74 65 72 70 6f 6c 61 74 65 64 2e 20 41 6c interpolated. Al
5a020 6c 20 6f 74 68 65 72 20 76 61 6c 75 65 73 20 61 l other values a
5a030 72 65 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 re... *
5a040 61 73 73 75 6d 65 64 20 74 6f 20 62 65 20 6e 75 assumed to be nu
5a050 6d 62 65 72 73 2e 20 0a 09 09 20 2a 20 20 40 65 mbers. ... * @e
5a060 78 61 6d 70 6c 65 0a 09 09 20 2a 20 76 61 72 20 xample... * var
5a070 69 6e 74 65 72 70 20 3d 20 6e 65 77 20 54 6f 6e interp = new Ton
5a080 65 2e 43 74 72 6c 49 6e 74 65 72 70 6f 6c 61 74 e.CtrlInterpolat
5a090 65 28 5b 30 2c 20 32 2c 20 39 2c 20 34 5d 29 3b e([0, 2, 9, 4]);
5a0a0 0a 09 09 20 2a 20 69 6e 74 65 72 70 2e 69 6e 64 ... * interp.ind
5a0b0 65 78 20 3d 20 30 2e 37 35 3b 0a 09 09 20 2a 20 ex = 0.75;... *
5a0c0 69 6e 74 65 72 70 2e 76 61 6c 75 65 3b 20 2f 2f interp.value; //
5a0d0 72 65 74 75 72 6e 73 20 31 2e 35 0a 09 09 20 2a returns 1.5... *
5a0e0 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
5a0f0 09 09 20 2a 20 76 61 72 20 69 6e 74 65 72 70 20 .. * var interp
5a100 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 74 72 6c 49 = new Tone.CtrlI
5a110 6e 74 65 72 70 6f 6c 61 74 65 28 5b 0a 09 09 20 nterpolate([...
5a120 2a 20 09 5b 32 2c 20 34 2c 20 35 5d 2c 0a 09 09 * .[2, 4, 5],...
5a130 20 2a 20 09 5b 39 2c 20 33 2c 20 32 5d 2c 0a 09 * .[9, 3, 2],..
5a140 09 20 2a 20 5d 29 3b 0a 09 09 20 2a 20 40 70 61 . * ]);... * @pa
5a150 72 61 6d 20 7b 41 72 72 61 79 7d 20 76 61 6c 75 ram {Array} valu
5a160 65 73 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 es The array of
5a170 76 61 6c 75 65 73 20 74 6f 20 69 6e 74 65 72 70 values to interp
5a180 6f 6c 61 74 65 20 6f 76 65 72 0a 09 09 20 2a 20 olate over... *
5a190 40 70 61 72 61 6d 20 7b 50 6f 73 69 74 69 76 65 @param {Positive
5a1a0 7d 20 69 6e 64 65 78 20 54 68 65 20 69 6e 69 74 } index The init
5a1b0 69 61 6c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f ial interpolatio
5a1c0 6e 20 69 6e 64 65 78 2e 0a 09 09 20 2a 20 40 65 n index.... * @e
5a1d0 78 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 xtends {Tone}...
5a1e0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 43 74 */.. Tone.Ct
5a1f0 72 6c 49 6e 74 65 72 70 6f 6c 61 74 65 20 3d 20 rlInterpolate =
5a200 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
5a210 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f var optio
5a220 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e ns = this.option
5a230 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 sObject(argument
5a240 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 s, [..
5a250 20 20 27 76 61 6c 75 65 73 27 2c 0a 09 20 20 20 'values',..
5a260 20 20 20 20 20 20 20 20 20 27 69 6e 64 65 78 27 'index'
5a270 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e .. ], Ton
5a280 65 2e 43 74 72 6c 49 6e 74 65 72 70 6f 6c 61 74 e.CtrlInterpolat
5a290 65 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 e.defaults);..
5a2a0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
5a2b0 20 54 68 65 20 76 61 6c 75 65 73 20 74 6f 20 69 The values to i
5a2c0 6e 74 65 72 70 6f 6c 61 74 65 20 62 65 74 77 65 nterpolate betwe
5a2d0 65 6e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 en.... * @type
5a2e0 20 7b 41 72 72 61 79 7d 0a 09 09 09 20 2a 2f 0a {Array}.... */.
5a2f0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 61 . this.va
5a300 6c 75 65 73 20 3d 20 6f 70 74 69 6f 6e 73 2e 76 lues = options.v
5a310 61 6c 75 65 73 3b 0a 09 20 20 20 20 20 20 20 20 alues;..
5a320 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 69 /**.... * The i
5a330 6e 74 65 72 70 6f 6c 61 74 65 64 20 69 6e 64 65 nterpolated inde
5a340 78 20 62 65 74 77 65 65 6e 20 76 61 6c 75 65 73 x between values
5a350 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a 20 61 . For example: a
5a360 20 76 61 6c 75 65 20 6f 66 20 31 2e 35 0a 09 09 value of 1.5...
5a370 09 20 2a 20 20 77 6f 75 6c 64 20 69 6e 74 65 72 . * would inter
5a380 70 6f 6c 61 74 65 20 65 71 75 61 6c 6c 79 20 62 polate equally b
5a390 65 74 77 65 65 6e 20 74 68 65 20 76 61 6c 75 65 etween the value
5a3a0 20 61 74 20 69 6e 64 65 78 20 31 0a 09 09 09 20 at index 1....
5a3b0 2a 20 20 61 6e 64 20 74 68 65 20 76 61 6c 75 65 * and the value
5a3c0 20 61 74 20 69 6e 64 65 78 20 32 2e 20 0a 09 09 at index 2. ...
5a3d0 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 . * @example...
5a3e0 09 20 2a 20 69 6e 74 65 72 70 2e 69 6e 64 65 78 . * interp.index
5a3f0 20 3d 20 30 3b 20 0a 09 09 09 20 2a 20 69 6e 74 = 0; .... * int
5a400 65 72 70 2e 76 61 6c 75 65 3b 20 2f 2f 72 65 74 erp.value; //ret
5a410 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20 61 urns the value a
5a420 74 20 30 0a 09 09 09 20 2a 20 69 6e 74 65 72 70 t 0.... * interp
5a430 2e 69 6e 64 65 78 20 3d 20 30 2e 35 3b 0a 09 09 .index = 0.5;...
5a440 09 20 2a 20 69 6e 74 65 72 70 2e 76 61 6c 75 65 . * interp.value
5a450 3b 20 2f 2f 72 65 74 75 72 6e 73 20 74 68 65 20 ; //returns the
5a460 76 61 6c 75 65 20 62 65 74 77 65 65 6e 20 69 6e value between in
5a470 64 69 63 65 73 20 30 20 61 6e 64 20 31 2e 20 0a dices 0 and 1. .
5a480 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 50 ... * @type {P
5a490 6f 73 69 74 69 76 65 7d 0a 09 09 09 20 2a 2f 0a ositive}.... */.
5a4a0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e . this.in
5a4b0 64 65 78 20 3d 20 6f 70 74 69 6f 6e 73 2e 69 6e dex = options.in
5a4c0 64 65 78 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 dex;.. };..
5a4d0 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
5a4e0 6e 65 2e 43 74 72 6c 49 6e 74 65 72 70 6f 6c 61 ne.CtrlInterpola
5a4f0 74 65 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 te);.. /**...
5a500 20 2a 20 20 54 68 65 20 64 65 66 61 75 6c 74 73 * The defaults
5a510 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 ... * @const...
5a520 20 2a 20 20 40 74 79 70 65 20 20 7b 4f 62 6a 65 * @type {Obje
5a530 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ct}... */.. T
5a540 6f 6e 65 2e 43 74 72 6c 49 6e 74 65 72 70 6f 6c one.CtrlInterpol
5a550 61 74 65 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b ate.defaults = {
5a560 0a 09 20 20 20 20 20 20 20 20 27 69 6e 64 65 78 .. 'index
5a570 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 ': 0,.. '
5a580 76 61 6c 75 65 73 27 3a 20 5b 5d 0a 09 20 20 20 values': []..
5a590 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
5a5a0 2a 20 20 54 68 65 20 63 75 72 72 65 6e 74 20 69 * The current i
5a5b0 6e 74 65 72 70 6f 6c 61 74 65 64 20 76 61 6c 75 nterpolated valu
5a5c0 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 69 e based on the i
5a5d0 6e 64 65 78 0a 09 09 20 2a 20 20 40 72 65 61 64 ndex... * @read
5a5e0 4f 6e 6c 79 0a 09 09 20 2a 20 20 40 6d 65 6d 62 Only... * @memb
5a5f0 65 72 4f 66 20 54 6f 6e 65 2e 43 74 72 6c 49 6e erOf Tone.CtrlIn
5a600 74 65 72 70 6f 6c 61 74 65 23 0a 09 09 20 2a 20 terpolate#... *
5a610 20 40 74 79 70 65 20 7b 2a 7d 0a 09 09 20 2a 20 @type {*}... *
5a620 20 40 6e 61 6d 65 20 76 61 6c 75 65 0a 09 09 20 @name value...
5a630 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 */.. Object.d
5a640 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f efineProperty(To
5a650 6e 65 2e 43 74 72 6c 49 6e 74 65 72 70 6f 6c 61 ne.CtrlInterpola
5a660 74 65 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 76 te.prototype, 'v
5a670 61 6c 75 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 alue', {..
5a680 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
5a690 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
5a6a0 20 20 76 61 72 20 69 6e 64 65 78 20 3d 20 74 68 var index = th
5a6b0 69 73 2e 69 6e 64 65 78 3b 0a 09 20 20 20 20 20 is.index;..
5a6c0 20 20 20 20 20 20 20 69 6e 64 65 78 20 3d 20 4d index = M
5a6d0 61 74 68 2e 6d 69 6e 28 69 6e 64 65 78 2c 20 74 ath.min(index, t
5a6e0 68 69 73 2e 76 61 6c 75 65 73 2e 6c 65 6e 67 74 his.values.lengt
5a6f0 68 20 2d 20 31 29 3b 0a 09 20 20 20 20 20 20 20 h - 1);..
5a700 20 20 20 20 20 76 61 72 20 6c 6f 77 65 72 50 6f var lowerPo
5a710 73 69 74 69 6f 6e 20 3d 20 4d 61 74 68 2e 66 6c sition = Math.fl
5a720 6f 6f 72 28 69 6e 64 65 78 29 3b 0a 09 20 20 20 oor(index);..
5a730 20 20 20 20 20 20 20 20 20 76 61 72 20 6c 6f 77 var low
5a740 65 72 20 3d 20 74 68 69 73 2e 76 61 6c 75 65 73 er = this.values
5a750 5b 6c 6f 77 65 72 50 6f 73 69 74 69 6f 6e 5d 3b [lowerPosition];
5a760 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
5a770 72 20 75 70 70 65 72 20 3d 20 74 68 69 73 2e 76 r upper = this.v
5a780 61 6c 75 65 73 5b 4d 61 74 68 2e 63 65 69 6c 28 alues[Math.ceil(
5a790 69 6e 64 65 78 29 5d 3b 0a 09 20 20 20 20 20 20 index)];..
5a7a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
5a7b0 73 2e 5f 69 6e 74 65 72 70 6f 6c 61 74 65 28 69 s._interpolate(i
5a7c0 6e 64 65 78 20 2d 20 6c 6f 77 65 72 50 6f 73 69 ndex - lowerPosi
5a7d0 74 69 6f 6e 2c 20 6c 6f 77 65 72 2c 20 75 70 70 tion, lower, upp
5a7e0 65 72 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a er);.. }.
5a7f0 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a . });.. /*
5a800 2a 0a 09 09 20 2a 20 20 49 6e 74 65 72 6e 61 6c *... * Internal
5a810 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 20 72 interpolation r
5a820 6f 75 74 69 6e 65 0a 09 09 20 2a 20 20 40 70 61 outine... * @pa
5a830 72 61 6d 20 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 ram {NormalRang
5a840 65 7d 20 20 69 6e 64 65 78 20 20 54 68 65 20 69 e} index The i
5a850 6e 64 65 78 20 62 65 74 77 65 65 6e 20 74 68 65 ndex between the
5a860 20 6c 6f 77 65 72 20 61 6e 64 20 75 70 70 65 72 lower and upper
5a870 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
5a880 2a 7d 20 20 6c 6f 77 65 72 20 0a 09 09 20 2a 20 *} lower ... *
5a890 20 40 70 61 72 61 6d 20 20 7b 2a 7d 20 20 75 70 @param {*} up
5a8a0 70 65 72 20 0a 09 09 20 2a 20 20 40 72 65 74 75 per ... * @retu
5a8b0 72 6e 20 20 7b 2a 7d 20 20 54 68 65 20 69 6e 74 rn {*} The int
5a8c0 65 72 70 6f 6c 61 74 65 64 20 76 61 6c 75 65 0a erpolated value.
5a8d0 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
5a8e0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 43 . */.. Tone.C
5a8f0 74 72 6c 49 6e 74 65 72 70 6f 6c 61 74 65 2e 70 trlInterpolate.p
5a900 72 6f 74 6f 74 79 70 65 2e 5f 69 6e 74 65 72 70 rototype._interp
5a910 6f 6c 61 74 65 20 3d 20 66 75 6e 63 74 69 6f 6e olate = function
5a920 20 28 69 6e 64 65 78 2c 20 6c 6f 77 65 72 2c 20 (index, lower,
5a930 75 70 70 65 72 29 20 7b 0a 09 20 20 20 20 20 20 upper) {..
5a940 20 20 69 66 20 28 74 68 69 73 2e 69 73 41 72 72 if (this.isArr
5a950 61 79 28 6c 6f 77 65 72 29 29 20 7b 0a 09 20 20 ay(lower)) {..
5a960 20 20 20 20 20 20 20 20 20 20 76 61 72 20 72 65 var re
5a970 74 41 72 72 61 79 20 3d 20 5b 5d 3b 0a 09 20 20 tArray = [];..
5a980 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 for (v
5a990 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 6c 6f ar i = 0; i < lo
5a9a0 77 65 72 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 wer.length; i++)
5a9b0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
5a9c0 20 20 20 20 72 65 74 41 72 72 61 79 5b 69 5d 20 retArray[i]
5a9d0 3d 20 74 68 69 73 2e 5f 69 6e 74 65 72 70 6f 6c = this._interpol
5a9e0 61 74 65 28 69 6e 64 65 78 2c 20 6c 6f 77 65 72 ate(index, lower
5a9f0 5b 69 5d 2c 20 75 70 70 65 72 5b 69 5d 29 3b 0a [i], upper[i]);.
5aa00 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
5aa10 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
5aa20 72 6e 20 72 65 74 41 72 72 61 79 3b 0a 09 20 20 rn retArray;..
5aa30 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 } else if
5aa40 28 74 68 69 73 2e 69 73 4f 62 6a 65 63 74 28 6c (this.isObject(l
5aa50 6f 77 65 72 29 29 20 7b 0a 09 20 20 20 20 20 20 ower)) {..
5aa60 20 20 20 20 20 20 76 61 72 20 72 65 74 4f 62 6a var retObj
5aa70 20 3d 20 7b 7d 3b 0a 09 20 20 20 20 20 20 20 20 = {};..
5aa80 20 20 20 20 66 6f 72 20 28 76 61 72 20 61 74 74 for (var att
5aa90 72 20 69 6e 20 6c 6f 77 65 72 29 20 7b 0a 09 20 r in lower) {..
5aaa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
5aab0 65 74 4f 62 6a 5b 61 74 74 72 5d 20 3d 20 74 68 etObj[attr] = th
5aac0 69 73 2e 5f 69 6e 74 65 72 70 6f 6c 61 74 65 28 is._interpolate(
5aad0 69 6e 64 65 78 2c 20 6c 6f 77 65 72 5b 61 74 74 index, lower[att
5aae0 72 5d 2c 20 75 70 70 65 72 5b 61 74 74 72 5d 29 r], upper[attr])
5aaf0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
5ab00 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
5ab10 74 75 72 6e 20 72 65 74 4f 62 6a 3b 0a 09 20 20 turn retObj;..
5ab20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 } else {..
5ab30 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 77 65 lowe
5ab40 72 20 3d 20 74 68 69 73 2e 5f 74 6f 4e 75 6d 62 r = this._toNumb
5ab50 65 72 28 6c 6f 77 65 72 29 3b 0a 09 20 20 20 20 er(lower);..
5ab60 20 20 20 20 20 20 20 20 75 70 70 65 72 20 3d 20 upper =
5ab70 74 68 69 73 2e 5f 74 6f 4e 75 6d 62 65 72 28 75 this._toNumber(u
5ab80 70 70 65 72 29 3b 0a 09 20 20 20 20 20 20 20 20 pper);..
5ab90 20 20 20 20 72 65 74 75 72 6e 20 28 31 20 2d 20 return (1 -
5aba0 69 6e 64 65 78 29 20 2a 20 6c 6f 77 65 72 20 2b index) * lower +
5abb0 20 69 6e 64 65 78 20 2a 20 75 70 70 65 72 3b 0a index * upper;.
5abc0 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
5abd0 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
5abe0 20 20 43 6f 6e 76 65 72 74 20 66 72 6f 6d 20 74 Convert from t
5abf0 68 65 20 67 69 76 65 6e 20 74 79 70 65 20 69 6e he given type in
5ac00 74 6f 20 61 20 6e 75 6d 62 65 72 0a 09 09 20 2a to a number... *
5ac10 20 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 @param {Numbe
5ac20 72 7c 53 74 72 69 6e 67 7d 20 20 76 61 6c 75 65 r|String} value
5ac30 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 ... * @return
5ac40 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 {Number}... * @
5ac50 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 private... */..
5ac60 20 20 20 54 6f 6e 65 2e 43 74 72 6c 49 6e 74 65 Tone.CtrlInte
5ac70 72 70 6f 6c 61 74 65 2e 70 72 6f 74 6f 74 79 70 rpolate.prototyp
5ac80 65 2e 5f 74 6f 4e 75 6d 62 65 72 20 3d 20 66 75 e._toNumber = fu
5ac90 6e 63 74 69 6f 6e 20 28 76 61 6c 29 20 7b 0a 09 nction (val) {..
5aca0 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
5acb0 2e 69 73 4e 75 6d 62 65 72 28 76 61 6c 29 29 20 .isNumber(val))
5acc0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
5acd0 65 74 75 72 6e 20 76 61 6c 3b 0a 09 20 20 20 20 eturn val;..
5ace0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 } else {..
5acf0 20 20 20 20 20 20 20 20 20 20 2f 2f 6f 74 68 65 //othe
5ad00 72 77 69 73 65 20 61 73 73 75 6d 65 20 74 68 61 rwise assume tha
5ad10 74 20 69 74 27 73 20 54 69 6d 65 2e 2e 2e 0a 09 t it's Time.....
5ad20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
5ad30 72 6e 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 rn this.toSecond
5ad40 73 28 76 61 6c 29 3b 0a 09 20 20 20 20 20 20 20 s(val);..
5ad50 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 }.. };..
5ad60 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 /**... * Clean
5ad70 75 70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e up... * @return
5ad80 20 20 7b 54 6f 6e 65 2e 43 74 72 6c 49 6e 74 65 {Tone.CtrlInte
5ad90 72 70 6f 6c 61 74 65 7d 20 20 74 68 69 73 0a 09 rpolate} this..
5ada0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 43 . */.. Tone.C
5adb0 74 72 6c 49 6e 74 65 72 70 6f 6c 61 74 65 2e 70 trlInterpolate.p
5adc0 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 rototype.dispose
5add0 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
5ade0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 .. this.v
5adf0 61 6c 75 65 73 20 3d 20 6e 75 6c 6c 3b 0a 09 20 alues = null;..
5ae00 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
5ae10 6e 20 54 6f 6e 65 2e 43 74 72 6c 49 6e 74 65 72 n Tone.CtrlInter
5ae20 70 6f 6c 61 74 65 3b 0a 09 7d 29 3b 0a 09 4d 6f polate;..});..Mo
5ae30 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 dule(function (T
5ae40 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 one) {.. ..
5ae50 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 /**... * @cla
5ae60 73 73 20 54 6f 6e 65 2e 43 74 72 6c 4d 61 72 6b ss Tone.CtrlMark
5ae70 6f 76 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 ov represents a
5ae80 4d 61 72 6b 6f 76 20 43 68 61 69 6e 20 77 68 65 Markov Chain whe
5ae90 72 65 20 65 61 63 68 20 63 61 6c 6c 0a 09 09 20 re each call...
5aea0 2a 20 20 20 20 20 20 20 20 20 74 6f 20 54 6f 6e * to Ton
5aeb0 65 2e 43 74 72 6c 4d 61 72 6b 6f 76 2e 6e 65 78 e.CtrlMarkov.nex
5aec0 74 20 77 69 6c 6c 20 6d 6f 76 65 20 74 6f 20 74 t will move to t
5aed0 68 65 20 6e 65 78 74 20 73 74 61 74 65 2e 20 49 he next state. I
5aee0 66 20 74 68 65 20 6e 65 78 74 0a 09 09 20 2a 20 f the next... *
5aef0 20 20 20 20 20 20 20 20 73 74 61 74 65 20 63 68 state ch
5af00 6f 69 63 65 20 69 73 20 61 6e 20 61 72 72 61 79 oice is an array
5af10 2c 20 74 68 65 20 6e 65 78 74 20 73 74 61 74 65 , the next state
5af20 20 69 73 20 63 68 6f 73 65 6e 20 72 61 6e 64 6f is chosen rando
5af30 6d 6c 79 20 77 69 74 68 0a 09 09 20 2a 20 20 20 mly with... *
5af40 20 20 20 20 20 20 65 76 65 6e 20 70 72 6f 62 61 even proba
5af50 62 69 6c 69 74 79 20 66 6f 72 20 61 6c 6c 20 6f bility for all o
5af60 66 20 74 68 65 20 63 68 6f 69 63 65 73 2e 20 46 f the choices. F
5af70 6f 72 20 61 20 77 65 69 67 68 74 65 64 20 70 72 or a weighted pr
5af80 6f 62 61 62 69 6c 69 74 79 0a 09 09 20 2a 20 20 obability... *
5af90 20 20 20 20 20 20 20 6f 66 20 74 68 65 20 6e 65 of the ne
5afa0 78 74 20 63 68 6f 69 63 65 73 2c 20 70 61 73 73 xt choices, pass
5afb0 20 69 6e 20 61 6e 20 6f 62 6a 65 63 74 20 77 69 in an object wi
5afc0 74 68 20 22 73 74 61 74 65 22 20 61 6e 64 20 22 th "state" and "
5afd0 70 72 6f 62 61 62 69 6c 69 74 79 22 20 61 74 74 probability" att
5afe0 72 69 62 75 74 65 73 2e 20 0a 09 09 20 2a 20 20 ributes. ... *
5aff0 20 20 20 20 20 20 20 54 68 65 20 70 72 6f 62 61 The proba
5b000 62 69 6c 69 74 69 65 73 20 77 69 6c 6c 20 62 65 bilities will be
5b010 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 61 6e 64 20 normalized and
5b020 74 68 65 6e 20 63 68 6f 73 65 6e 2e 20 49 66 20 then chosen. If
5b030 6e 6f 20 6e 65 78 74 20 6f 70 74 69 6f 6e 73 0a no next options.
5b040 09 09 20 2a 20 20 20 20 20 20 20 20 20 61 72 65 .. * are
5b050 20 67 69 76 65 6e 20 66 6f 72 20 74 68 65 20 63 given for the c
5b060 75 72 72 65 6e 74 20 73 74 61 74 65 2c 20 74 68 urrent state, th
5b070 65 20 73 74 61 74 65 20 77 69 6c 6c 20 73 74 61 e state will sta
5b080 79 20 74 68 65 72 65 2e 20 0a 09 09 20 2a 20 20 y there. ... *
5b090 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a @extends {Tone}.
5b0a0 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
5b0b0 09 20 2a 20 76 61 72 20 63 68 61 69 6e 20 3d 20 . * var chain =
5b0c0 6e 65 77 20 54 6f 6e 65 2e 43 74 72 6c 4d 61 72 new Tone.CtrlMar
5b0d0 6b 6f 76 28 7b 0a 09 09 20 2a 20 09 22 62 65 67 kov({... * ."beg
5b0e0 69 6e 6e 69 6e 67 22 20 3a 20 5b 22 65 6e 64 22 inning" : ["end"
5b0f0 2c 20 22 6d 69 64 64 6c 65 22 5d 2c 0a 09 09 20 , "middle"],...
5b100 2a 20 09 22 6d 69 64 64 6c 65 22 20 3a 20 22 65 * ."middle" : "e
5b110 6e 64 22 0a 09 09 20 2a 20 7d 29 3b 0a 09 09 20 nd"... * });...
5b120 2a 20 63 68 61 69 6e 2e 76 61 6c 75 65 20 3d 20 * chain.value =
5b130 22 62 65 67 69 6e 6e 69 6e 67 22 3b 0a 09 09 20 "beginning";...
5b140 2a 20 63 68 61 69 6e 2e 6e 65 78 74 28 29 3b 20 * chain.next();
5b150 2f 2f 72 65 74 75 72 6e 73 20 22 65 6e 64 22 20 //returns "end"
5b160 6f 72 20 22 6d 69 64 64 6c 65 22 20 77 69 74 68 or "middle" with
5b170 20 35 30 25 20 70 72 6f 62 61 62 69 6c 69 74 79 50% probability
5b180 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 65 78 61 ... *... * @exa
5b190 6d 70 6c 65 0a 09 09 20 2a 20 76 61 72 20 63 68 mple... * var ch
5b1a0 61 69 6e 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 ain = new Tone.C
5b1b0 74 72 6c 4d 61 72 6b 6f 76 28 7b 0a 09 09 20 2a trlMarkov({... *
5b1c0 20 09 22 62 65 67 69 6e 6e 69 6e 67 22 20 3a 20 ."beginning" :
5b1d0 5b 7b 22 76 61 6c 75 65 22 20 3a 20 22 65 6e 64 [{"value" : "end
5b1e0 22 2c 20 22 70 72 6f 62 61 62 69 6c 69 74 79 22 ", "probability"
5b1f0 20 3a 20 30 2e 38 7d 2c 20 0a 09 09 20 2a 20 09 : 0.8}, ... * .
5b200 09 09 09 09 7b 22 76 61 6c 75 65 22 20 3a 20 22 ....{"value" : "
5b210 6d 69 64 64 6c 65 22 2c 20 22 70 72 6f 62 61 62 middle", "probab
5b220 69 6c 69 74 79 22 20 3a 20 30 2e 32 7d 5d 2c 0a ility" : 0.2}],.
5b230 09 09 20 2a 20 09 22 6d 69 64 64 6c 65 22 20 3a .. * ."middle" :
5b240 20 22 65 6e 64 22 0a 09 09 20 2a 20 7d 29 3b 0a "end"... * });.
5b250 09 09 20 2a 20 63 68 61 69 6e 2e 76 61 6c 75 65 .. * chain.value
5b260 20 3d 20 22 62 65 67 69 6e 6e 69 6e 67 22 3b 0a = "beginning";.
5b270 09 09 20 2a 20 63 68 61 69 6e 2e 6e 65 78 74 28 .. * chain.next(
5b280 29 3b 20 2f 2f 72 65 74 75 72 6e 73 20 22 65 6e ); //returns "en
5b290 64 22 20 77 69 74 68 20 38 30 25 20 70 72 6f 62 d" with 80% prob
5b2a0 61 62 69 6c 69 74 79 20 6f 72 20 22 6d 69 64 64 ability or "midd
5b2b0 6c 65 22 20 77 69 74 68 20 32 30 25 2e 0a 09 09 le" with 20%....
5b2c0 20 2a 20 20 40 70 61 72 61 6d 20 7b 4f 62 6a 65 * @param {Obje
5b2d0 63 74 7d 20 76 61 6c 75 65 73 20 41 6e 20 6f 62 ct} values An ob
5b2e0 6a 65 63 74 20 77 69 74 68 20 74 68 65 20 73 74 ject with the st
5b2f0 61 74 65 20 6e 61 6d 65 73 20 61 73 20 74 68 65 ate names as the
5b300 20 6b 65 79 73 0a 09 09 20 2a 20 20 20 20 20 20 keys... *
5b310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5b320 20 20 20 61 6e 64 20 74 68 65 20 6e 65 78 74 20 and the next
5b330 73 74 61 74 65 28 73 29 20 61 73 20 74 68 65 20 state(s) as the
5b340 76 61 6c 75 65 73 2e 20 0a 09 09 20 2a 2f 0a 09 values. ... */..
5b350 20 20 20 20 54 6f 6e 65 2e 43 74 72 6c 4d 61 72 Tone.CtrlMar
5b360 6b 6f 76 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 kov = function (
5b370 76 61 6c 75 65 73 2c 20 69 6e 69 74 69 61 6c 29 values, initial)
5b380 20 7b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a {.. /**.
5b390 09 09 09 20 2a 20 20 54 68 65 20 4d 61 72 6b 6f ... * The Marko
5b3a0 76 20 76 61 6c 75 65 73 20 77 69 74 68 20 73 74 v values with st
5b3b0 61 74 65 73 20 61 73 20 74 68 65 20 6b 65 79 73 ates as the keys
5b3c0 0a 09 09 09 20 2a 20 20 61 6e 64 20 6e 65 78 74 .... * and next
5b3d0 20 73 74 61 74 65 28 73 29 20 61 73 20 74 68 65 state(s) as the
5b3e0 20 76 61 6c 75 65 73 2e 20 0a 09 09 09 20 2a 20 values. .... *
5b3f0 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a @type {Object}.
5b400 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
5b410 74 68 69 73 2e 76 61 6c 75 65 73 20 3d 20 74 68 this.values = th
5b420 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 76 61 is.defaultArg(va
5b430 6c 75 65 73 2c 20 7b 7d 29 3b 0a 09 20 20 20 20 lues, {});..
5b440 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
5b450 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 he current state
5b460 20 6f 66 20 74 68 65 20 4d 61 72 6b 6f 76 20 76 of the Markov v
5b470 61 6c 75 65 73 2e 20 54 68 65 20 6e 65 78 74 0a alues. The next.
5b480 09 09 09 20 2a 20 20 73 74 61 74 65 20 77 69 6c ... * state wil
5b490 6c 20 62 65 20 65 76 61 6c 75 61 74 65 64 20 61 l be evaluated a
5b4a0 6e 64 20 72 65 74 75 72 6e 65 64 20 77 68 65 6e nd returned when
5b4b0 20 54 6f 6e 65 2e 43 74 72 6c 4d 61 72 6b 6f 76 Tone.CtrlMarkov
5b4c0 2e 6e 65 78 74 0a 09 09 09 20 2a 20 20 69 73 20 .next.... * is
5b4d0 69 6e 76 6f 6b 65 64 2e 0a 09 09 09 20 2a 20 20 invoked..... *
5b4e0 40 74 79 70 65 20 7b 53 74 72 69 6e 67 7d 0a 09 @type {String}..
5b4f0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
5b500 68 69 73 2e 76 61 6c 75 65 20 3d 20 74 68 69 73 his.value = this
5b510 2e 64 65 66 61 75 6c 74 41 72 67 28 69 6e 69 74 .defaultArg(init
5b520 69 61 6c 2c 20 4f 62 6a 65 63 74 2e 6b 65 79 73 ial, Object.keys
5b530 28 74 68 69 73 2e 76 61 6c 75 65 73 29 5b 30 5d (this.values)[0]
5b540 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
5b550 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 Tone.extend(Tone
5b560 2e 43 74 72 6c 4d 61 72 6b 6f 76 29 3b 0a 09 20 .CtrlMarkov);..
5b570 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 /**... * Ret
5b580 75 72 6e 73 20 74 68 65 20 6e 65 78 74 20 73 74 urns the next st
5b590 61 74 65 20 6f 66 20 74 68 65 20 4d 61 72 6b 6f ate of the Marko
5b5a0 76 20 76 61 6c 75 65 73 2e 20 0a 09 09 20 2a 20 v values. ... *
5b5b0 20 40 72 65 74 75 72 6e 20 20 7b 53 74 72 69 6e @return {Strin
5b5c0 67 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f g}... */.. To
5b5d0 6e 65 2e 43 74 72 6c 4d 61 72 6b 6f 76 2e 70 72 ne.CtrlMarkov.pr
5b5e0 6f 74 6f 74 79 70 65 2e 6e 65 78 74 20 3d 20 66 ototype.next = f
5b5f0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
5b600 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 76 if (this.v
5b610 61 6c 75 65 73 2e 68 61 73 4f 77 6e 50 72 6f 70 alues.hasOwnProp
5b620 65 72 74 79 28 74 68 69 73 2e 76 61 6c 75 65 29 erty(this.value)
5b630 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
5b640 20 76 61 72 20 6e 65 78 74 20 3d 20 74 68 69 73 var next = this
5b650 2e 76 61 6c 75 65 73 5b 74 68 69 73 2e 76 61 6c .values[this.val
5b660 75 65 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ue];..
5b670 20 20 69 66 20 28 74 68 69 73 2e 69 73 41 72 72 if (this.isArr
5b680 61 79 28 6e 65 78 74 29 29 20 7b 0a 09 20 20 20 ay(next)) {..
5b690 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var
5b6a0 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 3d 20 distribution =
5b6b0 74 68 69 73 2e 5f 67 65 74 50 72 6f 62 44 69 73 this._getProbDis
5b6c0 74 72 69 62 75 74 69 6f 6e 28 6e 65 78 74 29 3b tribution(next);
5b6d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
5b6e0 20 20 76 61 72 20 72 61 6e 64 20 3d 20 4d 61 74 var rand = Mat
5b6f0 68 2e 72 61 6e 64 6f 6d 28 29 3b 0a 09 20 20 20 h.random();..
5b700 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var
5b710 20 74 6f 74 61 6c 20 3d 20 30 3b 0a 09 20 20 20 total = 0;..
5b720 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 for
5b730 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c (var i = 0; i <
5b740 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e 6c 65 distribution.le
5b750 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 ngth; i++) {..
5b760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5b770 20 20 76 61 72 20 64 69 73 74 20 3d 20 64 69 73 var dist = dis
5b780 74 72 69 62 75 74 69 6f 6e 5b 69 5d 3b 0a 09 20 tribution[i];..
5b790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5b7a0 20 20 20 69 66 20 28 72 61 6e 64 20 3e 20 74 6f if (rand > to
5b7b0 74 61 6c 20 26 26 20 72 61 6e 64 20 3c 20 74 6f tal && rand < to
5b7c0 74 61 6c 20 2b 20 64 69 73 74 29 20 7b 0a 09 20 tal + dist) {..
5b7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5b7e0 20 20 20 20 20 20 20 76 61 72 20 63 68 6f 73 65 var chose
5b7f0 6e 20 3d 20 6e 65 78 74 5b 69 5d 3b 0a 09 20 20 n = next[i];..
5b800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5b810 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 if (this.i
5b820 73 4f 62 6a 65 63 74 28 63 68 6f 73 65 6e 29 29 sObject(chosen))
5b830 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
5b840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5b850 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 63 68 6f this.value = cho
5b860 73 65 6e 2e 76 61 6c 75 65 3b 0a 09 20 20 20 20 sen.value;..
5b870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5b880 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 } else {..
5b890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5b8a0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 this.v
5b8b0 61 6c 75 65 20 3d 20 63 68 6f 73 65 6e 3b 0a 09 alue = chosen;..
5b8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5b8d0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
5b8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
5b8f0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
5b900 20 20 20 20 20 20 74 6f 74 61 6c 20 2b 3d 20 64 total += d
5b910 69 73 74 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ist;..
5b920 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
5b930 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
5b940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
5b950 68 69 73 2e 76 61 6c 75 65 20 3d 20 6e 65 78 74 his.value = next
5b960 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
5b970 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
5b980 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
5b990 2e 76 61 6c 75 65 3b 0a 09 20 20 20 20 7d 3b 0a .value;.. };.
5b9a0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 . /**... * C
5b9b0 68 6f 6f 73 65 20 72 61 6e 64 6f 6d 6c 79 20 66 hoose randomly f
5b9c0 72 6f 6d 20 61 6e 20 61 72 72 61 79 20 77 65 69 rom an array wei
5b9d0 67 68 74 65 64 20 6f 70 74 69 6f 6e 73 20 69 6e ghted options in
5b9e0 20 74 68 65 20 66 6f 72 6d 20 0a 09 09 20 2a 20 the form ... *
5b9f0 20 7b 22 73 74 61 74 65 22 20 3a 20 73 74 72 69 {"state" : stri
5ba00 6e 67 2c 20 22 70 72 6f 62 61 62 69 6c 69 74 79 ng, "probability
5ba10 22 20 3a 20 6e 75 6d 62 65 72 7d 20 6f 72 20 61 " : number} or a
5ba20 6e 20 61 72 72 61 79 20 6f 66 20 76 61 6c 75 65 n array of value
5ba30 73 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 s... * @param
5ba40 7b 41 72 72 61 79 7d 20 20 6f 70 74 69 6f 6e 73 {Array} options
5ba50 20 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 ... * @return
5ba60 20 7b 41 72 72 61 79 7d 20 20 54 68 65 20 72 61 {Array} The ra
5ba70 6e 64 6f 6d 6c 79 20 73 65 6c 65 63 74 65 64 20 ndomly selected
5ba80 63 68 6f 69 63 65 0a 09 09 20 2a 20 20 40 70 72 choice... * @pr
5ba90 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 ivate... */..
5baa0 20 54 6f 6e 65 2e 43 74 72 6c 4d 61 72 6b 6f 76 Tone.CtrlMarkov
5bab0 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 67 65 74 50 .prototype._getP
5bac0 72 6f 62 44 69 73 74 72 69 62 75 74 69 6f 6e 20 robDistribution
5bad0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6f 70 74 69 = function (opti
5bae0 6f 6e 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ons) {..
5baf0 76 61 72 20 64 69 73 74 72 69 62 75 74 69 6f 6e var distribution
5bb00 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 20 20 20 = [];..
5bb10 76 61 72 20 74 6f 74 61 6c 20 3d 20 30 3b 0a 09 var total = 0;..
5bb20 20 20 20 20 20 20 20 20 76 61 72 20 6e 65 65 64 var need
5bb30 73 4e 6f 72 6d 61 6c 69 7a 69 6e 67 20 3d 20 66 sNormalizing = f
5bb40 61 6c 73 65 3b 0a 09 20 20 20 20 20 20 20 20 66 alse;.. f
5bb50 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 or (var i = 0; i
5bb60 20 3c 20 6f 70 74 69 6f 6e 73 2e 6c 65 6e 67 74 < options.lengt
5bb70 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 h; i++) {..
5bb80 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f var optio
5bb90 6e 20 3d 20 6f 70 74 69 6f 6e 73 5b 69 5d 3b 0a n = options[i];.
5bba0 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
5bbb0 28 74 68 69 73 2e 69 73 4f 62 6a 65 63 74 28 6f (this.isObject(o
5bbc0 70 74 69 6f 6e 29 29 20 7b 0a 09 20 20 20 20 20 ption)) {..
5bbd0 20 20 20 20 20 20 20 20 20 20 20 6e 65 65 64 73 needs
5bbe0 4e 6f 72 6d 61 6c 69 7a 69 6e 67 20 3d 20 74 72 Normalizing = tr
5bbf0 75 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ue;..
5bc00 20 20 20 20 20 64 69 73 74 72 69 62 75 74 69 6f distributio
5bc10 6e 5b 69 5d 20 3d 20 6f 70 74 69 6f 6e 2e 70 72 n[i] = option.pr
5bc20 6f 62 61 62 69 6c 69 74 79 3b 0a 09 20 20 20 20 obability;..
5bc30 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
5bc40 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
5bc50 20 20 64 69 73 74 72 69 62 75 74 69 6f 6e 5b 69 distribution[i
5bc60 5d 20 3d 20 31 20 2f 20 6f 70 74 69 6f 6e 73 2e ] = 1 / options.
5bc70 6c 65 6e 67 74 68 3b 0a 09 20 20 20 20 20 20 20 length;..
5bc80 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
5bc90 20 20 20 20 74 6f 74 61 6c 20 2b 3d 20 64 69 73 total += dis
5bca0 74 72 69 62 75 74 69 6f 6e 5b 69 5d 3b 0a 09 20 tribution[i];..
5bcb0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
5bcc0 20 20 69 66 20 28 6e 65 65 64 73 4e 6f 72 6d 61 if (needsNorma
5bcd0 6c 69 7a 69 6e 67 29 20 7b 0a 09 20 20 20 20 20 lizing) {..
5bce0 20 20 20 20 20 20 20 2f 2f 6e 6f 72 6d 61 6c 69 //normali
5bcf0 7a 65 20 74 68 65 20 76 61 6c 75 65 73 0a 09 20 ze the values..
5bd00 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 for (
5bd10 76 61 72 20 6a 20 3d 20 30 3b 20 6a 20 3c 20 64 var j = 0; j < d
5bd20 69 73 74 72 69 62 75 74 69 6f 6e 2e 6c 65 6e 67 istribution.leng
5bd30 74 68 3b 20 6a 2b 2b 29 20 7b 0a 09 20 20 20 20 th; j++) {..
5bd40 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 74 dist
5bd50 72 69 62 75 74 69 6f 6e 5b 6a 5d 20 3d 20 64 69 ribution[j] = di
5bd60 73 74 72 69 62 75 74 69 6f 6e 5b 6a 5d 20 2f 20 stribution[j] /
5bd70 74 6f 74 61 6c 3b 0a 09 20 20 20 20 20 20 20 20 total;..
5bd80 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d }.. }
5bd90 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
5bda0 20 64 69 73 74 72 69 62 75 74 69 6f 6e 3b 0a 09 distribution;..
5bdb0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
5bdc0 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 0a 09 .. * Clean up..
5bdd0 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 . * @return {T
5bde0 6f 6e 65 2e 43 74 72 6c 4d 61 72 6b 6f 76 7d 20 one.CtrlMarkov}
5bdf0 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
5be00 20 54 6f 6e 65 2e 43 74 72 6c 4d 61 72 6b 6f 76 Tone.CtrlMarkov
5be10 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
5be20 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 se = function ()
5be30 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 {.. this
5be40 2e 76 61 6c 75 65 73 20 3d 20 6e 75 6c 6c 3b 0a .values = null;.
5be50 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 . };.. ret
5be60 75 72 6e 20 54 6f 6e 65 2e 43 74 72 6c 4d 61 72 urn Tone.CtrlMar
5be70 6b 6f 76 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c kov;..});..Modul
5be80 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 e(function (Tone
5be90 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f ) {.. .. /
5bea0 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 **... * @class
5beb0 47 65 6e 65 72 61 74 65 20 70 61 74 74 65 72 6e Generate pattern
5bec0 73 20 66 72 6f 6d 20 61 6e 20 61 72 72 61 79 20 s from an array
5bed0 6f 66 20 76 61 6c 75 65 73 2e 0a 09 09 20 2a 20 of values.... *
5bee0 20 20 20 20 20 20 20 20 48 61 73 20 61 20 6e 75 Has a nu
5bef0 6d 62 65 72 20 6f 66 20 61 72 70 65 67 67 69 61 mber of arpeggia
5bf00 74 69 6f 6e 20 61 6e 64 20 72 61 6e 64 6f 6d 69 tion and randomi
5bf10 7a 65 64 0a 09 09 20 2a 20 20 20 20 20 20 20 20 zed... *
5bf20 20 73 65 6c 65 63 74 69 6f 6e 20 70 61 74 74 65 selection patte
5bf30 72 6e 73 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 rns. ... *
5bf40 20 20 20 20 20 3c 75 6c 3e 0a 09 09 20 2a 20 20 <ul>... *
5bf50 09 20 20 20 20 20 20 20 20 3c 6c 69 3e 22 75 70 . <li>"up
5bf60 22 20 2d 20 63 79 63 6c 65 73 20 75 70 77 61 72 " - cycles upwar
5bf70 64 3c 2f 6c 69 3e 0a 09 09 20 2a 20 20 09 09 09 d</li>... * ...
5bf80 3c 6c 69 3e 22 64 6f 77 6e 22 20 2d 20 63 79 63 <li>"down" - cyc
5bf90 6c 65 73 20 64 6f 77 6e 77 61 72 64 3c 2f 6c 69 les downward</li
5bfa0 3e 0a 09 09 20 2a 20 20 09 09 09 3c 6c 69 3e 22 >... * ...<li>"
5bfb0 75 70 44 6f 77 6e 22 20 2d 20 75 70 20 74 68 65 upDown" - up the
5bfc0 6e 20 61 6e 64 20 64 6f 77 6e 3c 2f 6c 69 3e 0a n and down</li>.
5bfd0 09 09 20 2a 20 20 09 09 09 3c 6c 69 3e 22 64 6f .. * ...<li>"do
5bfe0 77 6e 55 70 22 20 2d 20 63 79 63 6c 65 73 20 64 wnUp" - cycles d
5bff0 6f 77 6e 20 74 68 65 6e 20 61 6e 64 20 75 70 3c own then and up<
5c000 2f 6c 69 3e 0a 09 09 20 2a 20 20 09 09 09 3c 6c /li>... * ...<l
5c010 69 3e 22 61 6c 74 65 72 6e 61 74 65 55 70 22 20 i>"alternateUp"
5c020 2d 20 6a 75 6d 70 20 75 70 20 74 77 6f 20 61 6e - jump up two an
5c030 64 20 64 6f 77 6e 20 6f 6e 65 3c 2f 6c 69 3e 0a d down one</li>.
5c040 09 09 20 2a 20 20 09 09 09 3c 6c 69 3e 22 61 6c .. * ...<li>"al
5c050 74 65 72 6e 61 74 65 44 6f 77 6e 22 20 2d 20 6a ternateDown" - j
5c060 75 6d 70 20 64 6f 77 6e 20 74 77 6f 20 61 6e 64 ump down two and
5c070 20 75 70 20 6f 6e 65 3c 2f 6c 69 3e 0a 09 09 20 up one</li>...
5c080 2a 20 20 09 09 09 3c 6c 69 3e 22 72 61 6e 64 6f * ...<li>"rando
5c090 6d 22 20 2d 20 72 61 6e 64 6f 6d 6c 79 20 73 65 m" - randomly se
5c0a0 6c 65 63 74 20 61 6e 20 69 6e 64 65 78 3c 2f 6c lect an index</l
5c0b0 69 3e 0a 09 09 20 2a 20 20 09 09 09 3c 6c 69 3e i>... * ...<li>
5c0c0 22 72 61 6e 64 6f 6d 57 61 6c 6b 22 20 2d 20 72 "randomWalk" - r
5c0d0 61 6e 64 6f 6d 6c 79 20 6d 6f 76 65 73 20 6f 6e andomly moves on
5c0e0 65 20 69 6e 64 65 78 20 61 77 61 79 20 66 72 6f e index away fro
5c0f0 6d 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 6f m the current po
5c100 73 69 74 69 6f 6e 3c 2f 6c 69 3e 0a 09 09 20 2a sition</li>... *
5c110 20 20 09 09 09 3c 6c 69 3e 22 72 61 6e 64 6f 6d ...<li>"random
5c120 4f 6e 63 65 22 20 2d 20 72 61 6e 64 6f 6d 6c 79 Once" - randomly
5c130 20 73 65 6c 65 63 74 20 61 6e 20 69 6e 64 65 78 select an index
5c140 20 77 69 74 68 6f 75 74 20 72 65 70 65 61 74 69 without repeati
5c150 6e 67 20 75 6e 74 69 6c 20 61 6c 6c 20 76 61 6c ng until all val
5c160 75 65 73 20 68 61 76 65 20 62 65 65 6e 20 63 68 ues have been ch
5c170 6f 73 65 6e 2e 3c 2f 6c 69 3e 0a 09 09 20 2a 20 osen.</li>... *
5c180 20 20 20 20 09 09 3c 2f 75 6c 3e 0a 09 09 20 2a ..</ul>... *
5c190 20 20 40 70 61 72 61 6d 20 20 7b 41 72 72 61 79 @param {Array
5c1a0 7d 20 20 76 61 6c 75 65 73 20 20 20 41 6e 20 61 } values An a
5c1b0 72 72 61 79 20 6f 66 20 6f 70 74 69 6f 6e 73 20 rray of options
5c1c0 74 6f 20 63 68 6f 6f 73 65 20 66 72 6f 6d 2e 0a to choose from..
5c1d0 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 .. * @param {T
5c1e0 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e 2e one.CtrlPattern.
5c1f0 54 79 70 65 3d 7d 20 20 74 79 70 65 20 20 54 68 Type=} type Th
5c200 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 61 e name of the pa
5c210 74 74 65 72 6e 2e 0a 09 09 20 2a 20 20 40 65 78 ttern.... * @ex
5c220 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 20 tends {Tone}...
5c230 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 43 74 72 */.. Tone.Ctr
5c240 6c 50 61 74 74 65 72 6e 20 3d 20 66 75 6e 63 74 lPattern = funct
5c250 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
5c260 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 var options =
5c270 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 this.optionsObje
5c280 63 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a ct(arguments, [.
5c290 09 20 20 20 20 20 20 20 20 20 20 20 20 27 76 61 . 'va
5c2a0 6c 75 65 73 27 2c 0a 09 20 20 20 20 20 20 20 20 lues',..
5c2b0 20 20 20 20 27 74 79 70 65 27 0a 09 20 20 20 20 'type'..
5c2c0 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 43 74 72 6c ], Tone.Ctrl
5c2d0 50 61 74 74 65 72 6e 2e 64 65 66 61 75 6c 74 73 Pattern.defaults
5c2e0 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
5c2f0 09 09 09 20 2a 20 20 54 68 65 20 61 72 72 61 79 ... * The array
5c300 20 6f 66 20 76 61 6c 75 65 73 20 74 6f 20 61 72 of values to ar
5c310 70 65 67 67 69 61 74 65 20 6f 76 65 72 0a 09 09 peggiate over...
5c320 09 20 2a 20 20 40 74 79 70 65 20 7b 41 72 72 61 . * @type {Arra
5c330 79 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 y}.... */..
5c340 20 20 20 74 68 69 73 2e 76 61 6c 75 65 73 20 3d this.values =
5c350 20 6f 70 74 69 6f 6e 73 2e 76 61 6c 75 65 73 3b options.values;
5c360 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
5c370 09 20 2a 20 20 54 68 65 20 63 75 72 72 65 6e 74 . * The current
5c380 20 70 6f 73 69 74 69 6f 6e 20 69 6e 20 74 68 65 position in the
5c390 20 76 61 6c 75 65 73 20 61 72 72 61 79 0a 09 09 values array...
5c3a0 09 20 2a 20 20 40 74 79 70 65 20 20 7b 4e 75 6d . * @type {Num
5c3b0 62 65 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 ber}.... */..
5c3c0 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 20 this.index
5c3d0 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a = 0;.. /*
5c3e0 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 74 79 70 *.... * The typ
5c3f0 65 20 70 6c 61 63 65 68 6f 6c 64 65 72 0a 09 09 e placeholder...
5c400 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 . * @type {Tone
5c410 2e 43 74 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 .CtrlPattern.Typ
5c420 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 e}.... * @priva
5c430 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
5c440 20 20 20 74 68 69 73 2e 5f 74 79 70 65 20 3d 20 this._type =
5c450 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 2f null;.. /
5c460 2a 2a 0a 09 09 09 20 2a 20 20 53 68 75 66 66 6c **.... * Shuffl
5c470 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 ed values for th
5c480 65 20 52 61 6e 64 6f 6d 4f 6e 63 65 20 74 79 70 e RandomOnce typ
5c490 65 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b e.... * @type {
5c4a0 41 72 72 61 79 7d 0a 09 09 09 20 2a 20 20 40 70 Array}.... * @p
5c4b0 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
5c4c0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 68 75 this._shu
5c4d0 66 66 6c 65 64 20 3d 20 6e 75 6c 6c 3b 0a 09 20 ffled = null;..
5c4e0 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
5c4f0 20 20 54 68 65 20 64 69 72 65 63 74 69 6f 6e 20 The direction
5c500 6f 66 20 74 68 65 20 6d 6f 76 65 6d 65 6e 74 0a of the movement.
5c510 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 53 74 ... * @type {St
5c520 72 69 6e 67 7d 0a 09 09 09 20 2a 20 20 40 70 72 ring}.... * @pr
5c530 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 ivate.... */..
5c540 20 20 20 20 20 20 74 68 69 73 2e 5f 64 69 72 65 this._dire
5c550 63 74 69 6f 6e 20 3d 20 6e 75 6c 6c 3b 0a 09 20 ction = null;..
5c560 20 20 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 this.type
5c570 20 3d 20 6f 70 74 69 6f 6e 73 2e 74 79 70 65 3b = options.type;
5c580 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f .. };.. To
5c590 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 43 ne.extend(Tone.C
5c5a0 74 72 6c 50 61 74 74 65 72 6e 29 3b 0a 09 20 20 trlPattern);..
5c5b0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 /**... * The
5c5c0 43 6f 6e 74 72 6f 6c 20 50 61 74 74 65 72 6e 73 Control Patterns
5c5d0 0a 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 4f ... * @type {O
5c5e0 62 6a 65 63 74 7d 0a 09 09 20 2a 20 20 40 73 74 bject}... * @st
5c5f0 61 74 69 63 0a 09 09 20 2a 2f 0a 09 20 20 20 20 atic... */..
5c600 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e Tone.CtrlPattern
5c610 2e 54 79 70 65 20 3d 20 7b 0a 09 20 20 20 20 20 .Type = {..
5c620 20 20 20 55 70 3a 20 27 75 70 27 2c 0a 09 20 20 Up: 'up',..
5c630 20 20 20 20 20 20 44 6f 77 6e 3a 20 27 64 6f 77 Down: 'dow
5c640 6e 27 2c 0a 09 20 20 20 20 20 20 20 20 55 70 44 n',.. UpD
5c650 6f 77 6e 3a 20 27 75 70 44 6f 77 6e 27 2c 0a 09 own: 'upDown',..
5c660 20 20 20 20 20 20 20 20 44 6f 77 6e 55 70 3a 20 DownUp:
5c670 27 64 6f 77 6e 55 70 27 2c 0a 09 20 20 20 20 20 'downUp',..
5c680 20 20 20 41 6c 74 65 72 6e 61 74 65 55 70 3a 20 AlternateUp:
5c690 27 61 6c 74 65 72 6e 61 74 65 55 70 27 2c 0a 09 'alternateUp',..
5c6a0 20 20 20 20 20 20 20 20 41 6c 74 65 72 6e 61 74 Alternat
5c6b0 65 44 6f 77 6e 3a 20 27 61 6c 74 65 72 6e 61 74 eDown: 'alternat
5c6c0 65 44 6f 77 6e 27 2c 0a 09 20 20 20 20 20 20 20 eDown',..
5c6d0 20 52 61 6e 64 6f 6d 3a 20 27 72 61 6e 64 6f 6d Random: 'random
5c6e0 27 2c 0a 09 20 20 20 20 20 20 20 20 52 61 6e 64 ',.. Rand
5c6f0 6f 6d 57 61 6c 6b 3a 20 27 72 61 6e 64 6f 6d 57 omWalk: 'randomW
5c700 61 6c 6b 27 2c 0a 09 20 20 20 20 20 20 20 20 52 alk',.. R
5c710 61 6e 64 6f 6d 4f 6e 63 65 3a 20 27 72 61 6e 64 andomOnce: 'rand
5c720 6f 6d 4f 6e 63 65 27 0a 09 20 20 20 20 7d 3b 0a omOnce'.. };.
5c730 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 . /**... * T
5c740 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 he default value
5c750 73 2e 20 0a 09 09 20 2a 20 20 40 74 79 70 65 20 s. ... * @type
5c760 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a {Object}... */.
5c770 09 20 20 20 20 54 6f 6e 65 2e 43 74 72 6c 50 61 . Tone.CtrlPa
5c780 74 74 65 72 6e 2e 64 65 66 61 75 6c 74 73 20 3d ttern.defaults =
5c790 20 7b 0a 09 20 20 20 20 20 20 20 20 27 74 79 70 {.. 'typ
5c7a0 65 27 3a 20 54 6f 6e 65 2e 43 74 72 6c 50 61 74 e': Tone.CtrlPat
5c7b0 74 65 72 6e 2e 54 79 70 65 2e 55 70 2c 0a 09 20 tern.Type.Up,..
5c7c0 20 20 20 20 20 20 20 27 76 61 6c 75 65 73 27 3a 'values':
5c7d0 20 5b 5d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 [].. };..
5c7e0 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 76 /**... * The v
5c7f0 61 6c 75 65 20 61 74 20 74 68 65 20 63 75 72 72 alue at the curr
5c800 65 6e 74 20 69 6e 64 65 78 20 6f 66 20 74 68 65 ent index of the
5c810 20 70 61 74 74 65 72 6e 2e 0a 09 09 20 2a 20 20 pattern.... *
5c820 40 72 65 61 64 4f 6e 6c 79 0a 09 09 20 2a 20 20 @readOnly... *
5c830 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 43 @memberOf Tone.C
5c840 74 72 6c 50 61 74 74 65 72 6e 23 0a 09 09 20 2a trlPattern#... *
5c850 20 20 40 74 79 70 65 20 7b 2a 7d 0a 09 09 20 2a @type {*}... *
5c860 20 20 40 6e 61 6d 65 20 76 61 6c 75 65 0a 09 09 @name value...
5c870 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
5c880 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
5c890 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e 2e one.CtrlPattern.
5c8a0 70 72 6f 74 6f 74 79 70 65 2c 20 27 76 61 6c 75 prototype, 'valu
5c8b0 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 e', {.. g
5c8c0 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
5c8d0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f {.. /
5c8e0 2f 73 6f 6d 65 20 73 61 66 65 67 75 61 72 64 73 /some safeguards
5c8f0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
5c900 20 28 74 68 69 73 2e 76 61 6c 75 65 73 2e 6c 65 (this.values.le
5c910 6e 67 74 68 20 3d 3d 3d 20 30 29 20 7b 0a 09 20 ngth === 0) {..
5c920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
5c930 65 74 75 72 6e 3b 0a 09 20 20 20 20 20 20 20 20 eturn;..
5c940 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 } else if (t
5c950 68 69 73 2e 76 61 6c 75 65 73 2e 6c 65 6e 67 74 his.values.lengt
5c960 68 20 3d 3d 3d 20 31 29 20 7b 0a 09 20 20 20 20 h === 1) {..
5c970 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
5c980 72 6e 20 74 68 69 73 2e 76 61 6c 75 65 73 5b 30 rn this.values[0
5c990 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ];..
5c9a0 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 }.. t
5c9b0 68 69 73 2e 69 6e 64 65 78 20 3d 20 4d 61 74 68 his.index = Math
5c9c0 2e 6d 69 6e 28 74 68 69 73 2e 69 6e 64 65 78 2c .min(this.index,
5c9d0 20 74 68 69 73 2e 76 61 6c 75 65 73 2e 6c 65 6e this.values.len
5c9e0 67 74 68 20 2d 20 31 29 3b 0a 09 20 20 20 20 20 gth - 1);..
5c9f0 20 20 20 20 20 20 20 76 61 72 20 76 61 6c 20 3d var val =
5ca00 20 74 68 69 73 2e 76 61 6c 75 65 73 5b 74 68 69 this.values[thi
5ca10 73 2e 69 6e 64 65 78 5d 3b 0a 09 20 20 20 20 20 s.index];..
5ca20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e if (this.
5ca30 74 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 43 74 type === Tone.Ct
5ca40 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 2e 52 rlPattern.Type.R
5ca50 61 6e 64 6f 6d 4f 6e 63 65 29 20 7b 0a 09 20 20 andomOnce) {..
5ca60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
5ca70 20 28 74 68 69 73 2e 76 61 6c 75 65 73 2e 6c 65 (this.values.le
5ca80 6e 67 74 68 20 21 3d 3d 20 74 68 69 73 2e 5f 73 ngth !== this._s
5ca90 68 75 66 66 6c 65 64 2e 6c 65 6e 67 74 68 29 20 huffled.length)
5caa0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
5cab0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 68 75 this._shu
5cac0 66 66 6c 65 56 61 6c 75 65 73 28 29 3b 0a 09 20 ffleValues();..
5cad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
5cae0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
5caf0 20 20 76 61 6c 20 3d 20 74 68 69 73 2e 76 61 6c val = this.val
5cb00 75 65 73 5b 74 68 69 73 2e 5f 73 68 75 66 66 6c ues[this._shuffl
5cb10 65 64 5b 74 68 69 73 2e 69 6e 64 65 78 5d 5d 3b ed[this.index]];
5cb20 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
5cb30 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
5cb40 75 72 6e 20 76 61 6c 3b 0a 09 20 20 20 20 20 20 urn val;..
5cb50 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 }.. });..
5cb60 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 /**... * The
5cb70 70 61 74 74 65 72 6e 20 75 73 65 64 20 74 6f 20 pattern used to
5cb80 73 65 6c 65 63 74 20 74 68 65 20 6e 65 78 74 0a select the next.
5cb90 09 09 20 2a 20 20 69 74 65 6d 20 66 72 6f 6d 20 .. * item from
5cba0 74 68 65 20 76 61 6c 75 65 73 20 61 72 72 61 79 the values array
5cbb0 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
5cbc0 20 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 Tone.CtrlPatter
5cbd0 6e 23 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b n#... * @type {
5cbe0 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e Tone.CtrlPattern
5cbf0 2e 54 79 70 65 7d 0a 09 09 20 2a 20 20 40 6e 61 .Type}... * @na
5cc00 6d 65 20 74 79 70 65 0a 09 09 20 2a 2f 0a 09 20 me type... */..
5cc10 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
5cc20 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 43 74 Property(Tone.Ct
5cc30 72 6c 50 61 74 74 65 72 6e 2e 70 72 6f 74 6f 74 rlPattern.protot
5cc40 79 70 65 2c 20 27 74 79 70 65 27 2c 20 7b 0a 09 ype, 'type', {..
5cc50 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e get: fun
5cc60 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
5cc70 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
5cc80 68 69 73 2e 5f 74 79 70 65 3b 0a 09 20 20 20 20 his._type;..
5cc90 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
5cca0 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 74 set: function (t
5ccb0 79 70 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ype) {..
5ccc0 20 20 20 20 74 68 69 73 2e 5f 74 79 70 65 20 3d this._type =
5ccd0 20 74 79 70 65 3b 0a 09 20 20 20 20 20 20 20 20 type;..
5cce0 20 20 20 20 74 68 69 73 2e 5f 73 68 75 66 66 6c this._shuffl
5ccf0 65 64 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 ed = null;..
5cd00 20 20 20 20 20 20 20 20 2f 2f 74 68 65 20 66 69 //the fi
5cd10 72 73 74 20 69 6e 64 65 78 0a 09 20 20 20 20 20 rst index..
5cd20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e if (this.
5cd30 5f 74 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 43 _type === Tone.C
5cd40 74 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 2e trlPattern.Type.
5cd50 55 70 20 7c 7c 20 74 68 69 73 2e 5f 74 79 70 65 Up || this._type
5cd60 20 3d 3d 3d 20 54 6f 6e 65 2e 43 74 72 6c 50 61 === Tone.CtrlPa
5cd70 74 74 65 72 6e 2e 54 79 70 65 2e 55 70 44 6f 77 ttern.Type.UpDow
5cd80 6e 20 7c 7c 20 74 68 69 73 2e 5f 74 79 70 65 20 n || this._type
5cd90 3d 3d 3d 20 54 6f 6e 65 2e 43 74 72 6c 50 61 74 === Tone.CtrlPat
5cda0 74 65 72 6e 2e 54 79 70 65 2e 52 61 6e 64 6f 6d tern.Type.Random
5cdb0 4f 6e 63 65 20 7c 7c 20 74 68 69 73 2e 5f 74 79 Once || this._ty
5cdc0 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 43 74 72 6c pe === Tone.Ctrl
5cdd0 50 61 74 74 65 72 6e 2e 54 79 70 65 2e 41 6c 74 Pattern.Type.Alt
5cde0 65 72 6e 61 74 65 55 70 29 20 7b 0a 09 20 20 20 ernateUp) {..
5cdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
5ce00 73 2e 69 6e 64 65 78 20 3d 20 30 3b 0a 09 20 20 s.index = 0;..
5ce10 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
5ce20 20 69 66 20 28 74 68 69 73 2e 5f 74 79 70 65 20 if (this._type
5ce30 3d 3d 3d 20 54 6f 6e 65 2e 43 74 72 6c 50 61 74 === Tone.CtrlPat
5ce40 74 65 72 6e 2e 54 79 70 65 2e 44 6f 77 6e 20 7c tern.Type.Down |
5ce50 7c 20 74 68 69 73 2e 5f 74 79 70 65 20 3d 3d 3d | this._type ===
5ce60 20 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 Tone.CtrlPatter
5ce70 6e 2e 54 79 70 65 2e 44 6f 77 6e 55 70 20 7c 7c n.Type.DownUp ||
5ce80 20 74 68 69 73 2e 5f 74 79 70 65 20 3d 3d 3d 20 this._type ===
5ce90 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e Tone.CtrlPattern
5cea0 2e 54 79 70 65 2e 41 6c 74 65 72 6e 61 74 65 44 .Type.AlternateD
5ceb0 6f 77 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 20 own) {..
5cec0 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 this.ind
5ced0 65 78 20 3d 20 74 68 69 73 2e 76 61 6c 75 65 73 ex = this.values
5cee0 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 0a 09 20 20 .length - 1;..
5cef0 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
5cf00 20 20 20 20 20 20 20 20 20 2f 2f 74 68 65 20 64 //the d
5cf10 69 72 65 63 74 69 6f 6e 0a 09 20 20 20 20 20 20 irection..
5cf20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f if (this._
5cf30 74 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 43 74 type === Tone.Ct
5cf40 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 2e 55 rlPattern.Type.U
5cf50 70 44 6f 77 6e 20 7c 7c 20 74 68 69 73 2e 5f 74 pDown || this._t
5cf60 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 43 74 72 ype === Tone.Ctr
5cf70 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 2e 41 6c lPattern.Type.Al
5cf80 74 65 72 6e 61 74 65 55 70 29 20 7b 0a 09 20 20 ternateUp) {..
5cf90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
5cfa0 69 73 2e 5f 64 69 72 65 63 74 69 6f 6e 20 3d 20 is._direction =
5cfb0 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e Tone.CtrlPattern
5cfc0 2e 54 79 70 65 2e 55 70 3b 0a 09 20 20 20 20 20 .Type.Up;..
5cfd0 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 } else if
5cfe0 20 28 74 68 69 73 2e 5f 74 79 70 65 20 3d 3d 3d (this._type ===
5cff0 20 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 Tone.CtrlPatter
5d000 6e 2e 54 79 70 65 2e 44 6f 77 6e 55 70 20 7c 7c n.Type.DownUp ||
5d010 20 74 68 69 73 2e 5f 74 79 70 65 20 3d 3d 3d 20 this._type ===
5d020 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e Tone.CtrlPattern
5d030 2e 54 79 70 65 2e 41 6c 74 65 72 6e 61 74 65 44 .Type.AlternateD
5d040 6f 77 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 20 own) {..
5d050 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 69 this._di
5d060 72 65 63 74 69 6f 6e 20 3d 20 54 6f 6e 65 2e 43 rection = Tone.C
5d070 74 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 2e trlPattern.Type.
5d080 44 6f 77 6e 3b 0a 09 20 20 20 20 20 20 20 20 20 Down;..
5d090 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 }..
5d0a0 20 20 2f 2f 72 61 6e 64 6f 6d 73 0a 09 20 20 20 //randoms..
5d0b0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 if (thi
5d0c0 73 2e 5f 74 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 s._type === Tone
5d0d0 2e 43 74 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 .CtrlPattern.Typ
5d0e0 65 2e 52 61 6e 64 6f 6d 4f 6e 63 65 29 20 7b 0a e.RandomOnce) {.
5d0f0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
5d100 20 74 68 69 73 2e 5f 73 68 75 66 66 6c 65 56 61 this._shuffleVa
5d110 6c 75 65 73 28 29 3b 0a 09 20 20 20 20 20 20 20 lues();..
5d120 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
5d130 74 68 69 73 2e 5f 74 79 70 65 20 3d 3d 3d 20 54 this._type === T
5d140 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e 2e one.CtrlPattern.
5d150 52 61 6e 64 6f 6d 29 20 7b 0a 09 20 20 20 20 20 Random) {..
5d160 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
5d170 69 6e 64 65 78 20 3d 20 4d 61 74 68 2e 66 6c 6f index = Math.flo
5d180 6f 72 28 4d 61 74 68 2e 72 61 6e 64 6f 6d 28 29 or(Math.random()
5d190 20 2a 20 74 68 69 73 2e 76 61 6c 75 65 73 2e 6c * this.values.l
5d1a0 65 6e 67 74 68 29 3b 0a 09 20 20 20 20 20 20 20 ength);..
5d1b0 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
5d1c0 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
5d1d0 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 6e /**... * Return
5d1e0 20 74 68 65 20 6e 65 78 74 20 76 61 6c 75 65 20 the next value
5d1f0 67 69 76 65 6e 20 74 68 65 20 63 75 72 72 65 6e given the curren
5d200 74 20 70 6f 73 69 74 69 6f 6e 0a 09 09 20 2a 20 t position... *
5d210 20 61 6e 64 20 70 61 74 74 65 72 6e 2e 0a 09 09 and pattern....
5d220 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 2a 7d 20 * @return {*}
5d230 54 68 65 20 6e 65 78 74 20 76 61 6c 75 65 0a 09 The next value..
5d240 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 43 . */.. Tone.C
5d250 74 72 6c 50 61 74 74 65 72 6e 2e 70 72 6f 74 6f trlPattern.proto
5d260 74 79 70 65 2e 6e 65 78 74 20 3d 20 66 75 6e 63 type.next = func
5d270 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
5d280 20 20 20 76 61 72 20 74 79 70 65 20 3d 20 74 68 var type = th
5d290 69 73 2e 74 79 70 65 3b 0a 09 20 20 20 20 20 20 is.type;..
5d2a0 20 20 2f 2f 63 68 6f 6f 73 65 20 74 68 65 20 6e //choose the n
5d2b0 65 78 74 20 69 6e 64 65 78 0a 09 20 20 20 20 20 ext index..
5d2c0 20 20 20 69 66 20 28 74 79 70 65 20 3d 3d 3d 20 if (type ===
5d2d0 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e Tone.CtrlPattern
5d2e0 2e 54 79 70 65 2e 55 70 29 20 7b 0a 09 20 20 20 .Type.Up) {..
5d2f0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e this.in
5d300 64 65 78 2b 2b 3b 0a 09 20 20 20 20 20 20 20 20 dex++;..
5d310 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 6e 64 if (this.ind
5d320 65 78 20 3e 3d 20 74 68 69 73 2e 76 61 6c 75 65 ex >= this.value
5d330 73 2e 6c 65 6e 67 74 68 29 20 7b 0a 09 20 20 20 s.length) {..
5d340 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
5d350 73 2e 69 6e 64 65 78 20 3d 20 30 3b 0a 09 20 20 s.index = 0;..
5d360 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
5d370 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
5d380 74 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 43 74 type === Tone.Ct
5d390 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 2e 44 rlPattern.Type.D
5d3a0 6f 77 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 20 own) {..
5d3b0 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 2d 2d this.index--
5d3c0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 ;.. i
5d3d0 66 20 28 74 68 69 73 2e 69 6e 64 65 78 20 3c 20 f (this.index <
5d3e0 30 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 0) {..
5d3f0 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 this.index
5d400 20 3d 20 74 68 69 73 2e 76 61 6c 75 65 73 2e 6c = this.values.l
5d410 65 6e 67 74 68 20 2d 20 31 3b 0a 09 20 20 20 20 ength - 1;..
5d420 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
5d430 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 79 } else if (ty
5d440 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 43 74 72 6c pe === Tone.Ctrl
5d450 50 61 74 74 65 72 6e 2e 54 79 70 65 2e 55 70 44 Pattern.Type.UpD
5d460 6f 77 6e 20 7c 7c 20 74 79 70 65 20 3d 3d 3d 20 own || type ===
5d470 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e Tone.CtrlPattern
5d480 2e 54 79 70 65 2e 44 6f 77 6e 55 70 29 20 7b 0a .Type.DownUp) {.
5d490 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
5d4a0 28 74 68 69 73 2e 5f 64 69 72 65 63 74 69 6f 6e (this._direction
5d4b0 20 3d 3d 3d 20 54 6f 6e 65 2e 43 74 72 6c 50 61 === Tone.CtrlPa
5d4c0 74 74 65 72 6e 2e 54 79 70 65 2e 55 70 29 20 7b ttern.Type.Up) {
5d4d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
5d4e0 20 20 74 68 69 73 2e 69 6e 64 65 78 2b 2b 3b 0a this.index++;.
5d4f0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
5d500 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
5d510 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 this.inde
5d520 78 2d 2d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 x--;..
5d530 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
5d540 20 69 66 20 28 74 68 69 73 2e 69 6e 64 65 78 20 if (this.index
5d550 3c 20 30 29 20 7b 0a 09 20 20 20 20 20 20 20 20 < 0) {..
5d560 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 this.ind
5d570 65 78 20 3d 20 31 3b 0a 09 20 20 20 20 20 20 20 ex = 1;..
5d580 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 this._d
5d590 69 72 65 63 74 69 6f 6e 20 3d 20 54 6f 6e 65 2e irection = Tone.
5d5a0 43 74 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 CtrlPattern.Type
5d5b0 2e 55 70 3b 0a 09 20 20 20 20 20 20 20 20 20 20 .Up;..
5d5c0 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 68 69 } else if (thi
5d5d0 73 2e 69 6e 64 65 78 20 3e 3d 20 74 68 69 73 2e s.index >= this.
5d5e0 76 61 6c 75 65 73 2e 6c 65 6e 67 74 68 29 20 7b values.length) {
5d5f0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
5d600 20 20 74 68 69 73 2e 69 6e 64 65 78 20 3d 20 74 this.index = t
5d610 68 69 73 2e 76 61 6c 75 65 73 2e 6c 65 6e 67 74 his.values.lengt
5d620 68 20 2d 20 32 3b 0a 09 20 20 20 20 20 20 20 20 h - 2;..
5d630 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 69 this._di
5d640 72 65 63 74 69 6f 6e 20 3d 20 54 6f 6e 65 2e 43 rection = Tone.C
5d650 74 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 2e trlPattern.Type.
5d660 44 6f 77 6e 3b 0a 09 20 20 20 20 20 20 20 20 20 Down;..
5d670 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 20 }.. }
5d680 65 6c 73 65 20 69 66 20 28 74 79 70 65 20 3d 3d else if (type ==
5d690 3d 20 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 = Tone.CtrlPatte
5d6a0 72 6e 2e 54 79 70 65 2e 52 61 6e 64 6f 6d 29 20 rn.Type.Random)
5d6b0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
5d6c0 68 69 73 2e 69 6e 64 65 78 20 3d 20 4d 61 74 68 his.index = Math
5d6d0 2e 66 6c 6f 6f 72 28 4d 61 74 68 2e 72 61 6e 64 .floor(Math.rand
5d6e0 6f 6d 28 29 20 2a 20 74 68 69 73 2e 76 61 6c 75 om() * this.valu
5d6f0 65 73 2e 6c 65 6e 67 74 68 29 3b 0a 09 20 20 20 es.length);..
5d700 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
5d710 74 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 43 74 type === Tone.Ct
5d720 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 2e 52 rlPattern.Type.R
5d730 61 6e 64 6f 6d 57 61 6c 6b 29 20 7b 0a 09 20 20 andomWalk) {..
5d740 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4d 61 if (Ma
5d750 74 68 2e 72 61 6e 64 6f 6d 28 29 20 3c 20 30 2e th.random() < 0.
5d760 35 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 5) {..
5d770 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 this.index
5d780 2d 2d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 --;..
5d790 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 20 this.index
5d7a0 3d 20 4d 61 74 68 2e 6d 61 78 28 74 68 69 73 2e = Math.max(this.
5d7b0 69 6e 64 65 78 2c 20 30 29 3b 0a 09 20 20 20 20 index, 0);..
5d7c0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
5d7d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
5d7e0 20 20 74 68 69 73 2e 69 6e 64 65 78 2b 2b 3b 0a this.index++;.
5d7f0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
5d800 20 74 68 69 73 2e 69 6e 64 65 78 20 3d 20 4d 61 this.index = Ma
5d810 74 68 2e 6d 69 6e 28 74 68 69 73 2e 69 6e 64 65 th.min(this.inde
5d820 78 2c 20 74 68 69 73 2e 76 61 6c 75 65 73 2e 6c x, this.values.l
5d830 65 6e 67 74 68 20 2d 20 31 29 3b 0a 09 20 20 20 ength - 1);..
5d840 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
5d850 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 } else if (t
5d860 79 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 43 74 72 ype === Tone.Ctr
5d870 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 2e 52 61 lPattern.Type.Ra
5d880 6e 64 6f 6d 4f 6e 63 65 29 20 7b 0a 09 20 20 20 ndomOnce) {..
5d890 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e this.in
5d8a0 64 65 78 2b 2b 3b 0a 09 20 20 20 20 20 20 20 20 dex++;..
5d8b0 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 6e 64 if (this.ind
5d8c0 65 78 20 3e 3d 20 74 68 69 73 2e 76 61 6c 75 65 ex >= this.value
5d8d0 73 2e 6c 65 6e 67 74 68 29 20 7b 0a 09 20 20 20 s.length) {..
5d8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
5d8f0 73 2e 69 6e 64 65 78 20 3d 20 30 3b 0a 09 20 20 s.index = 0;..
5d900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
5d910 72 65 73 68 75 66 66 6c 65 20 74 68 65 20 76 61 reshuffle the va
5d920 6c 75 65 73 20 66 6f 72 20 6e 65 78 74 20 74 69 lues for next ti
5d930 6d 65 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 me..
5d940 20 20 20 20 74 68 69 73 2e 5f 73 68 75 66 66 6c this._shuffl
5d950 65 56 61 6c 75 65 73 28 29 3b 0a 09 20 20 20 20 eValues();..
5d960 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
5d970 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 79 } else if (ty
5d980 70 65 20 3d 3d 3d 20 54 6f 6e 65 2e 43 74 72 6c pe === Tone.Ctrl
5d990 50 61 74 74 65 72 6e 2e 54 79 70 65 2e 41 6c 74 Pattern.Type.Alt
5d9a0 65 72 6e 61 74 65 55 70 29 20 7b 0a 09 20 20 20 ernateUp) {..
5d9b0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 if (thi
5d9c0 73 2e 5f 64 69 72 65 63 74 69 6f 6e 20 3d 3d 3d s._direction ===
5d9d0 20 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 Tone.CtrlPatter
5d9e0 6e 2e 54 79 70 65 2e 55 70 29 20 7b 0a 09 20 20 n.Type.Up) {..
5d9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
5da00 69 73 2e 69 6e 64 65 78 20 2b 3d 20 32 3b 0a 09 is.index += 2;..
5da10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5da20 74 68 69 73 2e 5f 64 69 72 65 63 74 69 6f 6e 20 this._direction
5da30 3d 20 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 = Tone.CtrlPatte
5da40 72 6e 2e 54 79 70 65 2e 44 6f 77 6e 3b 0a 09 20 rn.Type.Down;..
5da50 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
5da60 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
5da70 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 20 this.index
5da80 2d 3d 20 31 3b 0a 09 20 20 20 20 20 20 20 20 20 -= 1;..
5da90 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 69 72 this._dir
5daa0 65 63 74 69 6f 6e 20 3d 20 54 6f 6e 65 2e 43 74 ection = Tone.Ct
5dab0 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 2e 55 rlPattern.Type.U
5dac0 70 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 p;..
5dad0 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 }.. i
5dae0 66 20 28 74 68 69 73 2e 69 6e 64 65 78 20 3e 3d f (this.index >=
5daf0 20 74 68 69 73 2e 76 61 6c 75 65 73 2e 6c 65 6e this.values.len
5db00 67 74 68 29 20 7b 0a 09 20 20 20 20 20 20 20 20 gth) {..
5db10 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 this.ind
5db20 65 78 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 ex = 0;..
5db30 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 this._d
5db40 69 72 65 63 74 69 6f 6e 20 3d 20 54 6f 6e 65 2e irection = Tone.
5db50 43 74 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 CtrlPattern.Type
5db60 2e 55 70 3b 0a 09 20 20 20 20 20 20 20 20 20 20 .Up;..
5db70 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 20 65 }.. } e
5db80 6c 73 65 20 69 66 20 28 74 79 70 65 20 3d 3d 3d lse if (type ===
5db90 20 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 Tone.CtrlPatter
5dba0 6e 2e 54 79 70 65 2e 41 6c 74 65 72 6e 61 74 65 n.Type.Alternate
5dbb0 44 6f 77 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 Down) {..
5dbc0 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 64 if (this._d
5dbd0 69 72 65 63 74 69 6f 6e 20 3d 3d 3d 20 54 6f 6e irection === Ton
5dbe0 65 2e 43 74 72 6c 50 61 74 74 65 72 6e 2e 54 79 e.CtrlPattern.Ty
5dbf0 70 65 2e 55 70 29 20 7b 0a 09 20 20 20 20 20 20 pe.Up) {..
5dc00 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 this.i
5dc10 6e 64 65 78 20 2b 3d 20 31 3b 0a 09 20 20 20 20 ndex += 1;..
5dc20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
5dc30 2e 5f 64 69 72 65 63 74 69 6f 6e 20 3d 20 54 6f ._direction = To
5dc40 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e 2e 54 ne.CtrlPattern.T
5dc50 79 70 65 2e 44 6f 77 6e 3b 0a 09 20 20 20 20 20 ype.Down;..
5dc60 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
5dc70 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
5dc80 20 74 68 69 73 2e 69 6e 64 65 78 20 2d 3d 20 32 this.index -= 2
5dc90 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
5dca0 20 20 20 74 68 69 73 2e 5f 64 69 72 65 63 74 69 this._directi
5dcb0 6f 6e 20 3d 20 54 6f 6e 65 2e 43 74 72 6c 50 61 on = Tone.CtrlPa
5dcc0 74 74 65 72 6e 2e 54 79 70 65 2e 55 70 3b 0a 09 ttern.Type.Up;..
5dcd0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
5dce0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 if (t
5dcf0 68 69 73 2e 69 6e 64 65 78 20 3c 20 30 29 20 7b his.index < 0) {
5dd00 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
5dd10 20 20 74 68 69 73 2e 69 6e 64 65 78 20 3d 20 74 this.index = t
5dd20 68 69 73 2e 76 61 6c 75 65 73 2e 6c 65 6e 67 74 his.values.lengt
5dd30 68 20 2d 20 31 3b 0a 09 20 20 20 20 20 20 20 20 h - 1;..
5dd40 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 69 this._di
5dd50 72 65 63 74 69 6f 6e 20 3d 20 54 6f 6e 65 2e 43 rection = Tone.C
5dd60 74 72 6c 50 61 74 74 65 72 6e 2e 54 79 70 65 2e trlPattern.Type.
5dd70 44 6f 77 6e 3b 0a 09 20 20 20 20 20 20 20 20 20 Down;..
5dd80 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a }.. }.
5dd90 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
5dda0 74 68 69 73 2e 76 61 6c 75 65 3b 0a 09 20 20 20 this.value;..
5ddb0 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
5ddc0 2a 20 20 53 68 75 66 66 6c 65 73 20 74 68 65 20 * Shuffles the
5ddd0 76 61 6c 75 65 73 20 61 6e 64 20 70 6c 61 63 65 values and place
5dde0 73 20 74 68 65 20 72 65 73 75 6c 74 73 20 69 6e s the results in
5ddf0 74 6f 20 74 68 65 20 5f 73 68 75 66 66 6c 65 64 to the _shuffled
5de00 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
5de10 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
5de20 43 74 72 6c 50 61 74 74 65 72 6e 2e 70 72 6f 74 CtrlPattern.prot
5de30 6f 74 79 70 65 2e 5f 73 68 75 66 66 6c 65 56 61 otype._shuffleVa
5de40 6c 75 65 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 lues = function
5de50 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 () {.. va
5de60 72 20 63 6f 70 79 20 3d 20 5b 5d 3b 0a 09 20 20 r copy = [];..
5de70 20 20 20 20 20 20 74 68 69 73 2e 5f 73 68 75 66 this._shuf
5de80 66 6c 65 64 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 fled = [];..
5de90 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d for (var i =
5dea0 20 30 3b 20 69 20 3c 20 74 68 69 73 2e 76 61 6c 0; i < this.val
5deb0 75 65 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 ues.length; i++)
5dec0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
5ded0 63 6f 70 79 5b 69 5d 20 3d 20 69 3b 0a 09 20 20 copy[i] = i;..
5dee0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
5def0 20 77 68 69 6c 65 20 28 63 6f 70 79 2e 6c 65 6e while (copy.len
5df00 67 74 68 20 3e 20 30 29 20 7b 0a 09 20 20 20 20 gth > 0) {..
5df10 20 20 20 20 20 20 20 20 76 61 72 20 72 61 6e 64 var rand
5df20 56 61 6c 20 3d 20 63 6f 70 79 2e 73 70 6c 69 63 Val = copy.splic
5df30 65 28 4d 61 74 68 2e 66 6c 6f 6f 72 28 63 6f 70 e(Math.floor(cop
5df40 79 2e 6c 65 6e 67 74 68 20 2a 20 4d 61 74 68 2e y.length * Math.
5df50 72 61 6e 64 6f 6d 28 29 29 2c 20 31 29 3b 0a 09 random()), 1);..
5df60 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
5df70 2e 5f 73 68 75 66 66 6c 65 64 2e 70 75 73 68 28 ._shuffled.push(
5df80 72 61 6e 64 56 61 6c 5b 30 5d 29 3b 0a 09 20 20 randVal[0]);..
5df90 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a }.. };.
5dfa0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 . /**... * C
5dfb0 6c 65 61 6e 20 75 70 0a 09 09 20 2a 20 20 40 72 lean up... * @r
5dfc0 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 43 74 72 eturns {Tone.Ctr
5dfd0 6c 50 61 74 74 65 72 6e 7d 20 74 68 69 73 0a 09 lPattern} this..
5dfe0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 43 . */.. Tone.C
5dff0 74 72 6c 50 61 74 74 65 72 6e 2e 70 72 6f 74 6f trlPattern.proto
5e000 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 type.dispose = f
5e010 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
5e020 20 20 20 20 20 20 74 68 69 73 2e 5f 73 68 75 66 this._shuf
5e030 66 6c 65 64 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 fled = null;..
5e040 20 20 20 20 20 20 74 68 69 73 2e 76 61 6c 75 65 this.value
5e050 73 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 7d s = null;.. }
5e060 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f ;.. return To
5e070 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e 3b 0a ne.CtrlPattern;.
5e080 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e .});..Module(fun
5e090 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 ction (Tone) {..
5e0a0 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
5e0b0 20 2a 20 20 40 63 6c 61 73 73 20 20 43 68 6f 6f * @class Choo
5e0c0 73 65 20 61 20 72 61 6e 64 6f 6d 20 76 61 6c 75 se a random valu
5e0d0 65 2e 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 e.... * @extend
5e0e0 73 20 7b 54 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 s {Tone}... * @
5e0f0 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 76 61 72 example... * var
5e100 20 72 61 6e 64 6f 6d 57 61 6c 6b 20 3d 20 6e 65 randomWalk = ne
5e110 77 20 54 6f 6e 65 2e 43 74 72 6c 52 61 6e 64 6f w Tone.CtrlRando
5e120 6d 28 7b 0a 09 09 20 2a 20 09 22 6d 69 6e 22 20 m({... * ."min"
5e130 3a 20 30 2c 0a 09 09 20 2a 20 09 22 6d 61 78 22 : 0,... * ."max"
5e140 20 3a 20 31 30 2c 0a 09 09 20 2a 20 09 22 69 6e : 10,... * ."in
5e150 74 65 67 65 72 22 20 3a 20 74 72 75 65 0a 09 09 teger" : true...
5e160 20 2a 20 7d 29 3b 0a 09 09 20 2a 20 72 61 6e 64 * });... * rand
5e170 6f 6d 57 61 6c 6b 2e 65 76 61 6c 28 29 3b 0a 09 omWalk.eval();..
5e180 09 20 2a 0a 09 09 20 2a 20 20 40 70 61 72 61 6d . *... * @param
5e190 20 7b 4e 75 6d 62 65 72 7c 54 69 6d 65 3d 7d 20 {Number|Time=}
5e1a0 6d 69 6e 20 54 68 65 20 6d 69 6e 69 6d 75 6d 20 min The minimum
5e1b0 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 0a 09 09 return value....
5e1c0 20 2a 20 20 40 70 61 72 61 6d 20 7b 4e 75 6d 62 * @param {Numb
5e1d0 65 72 7c 54 69 6d 65 3d 7d 20 6d 61 78 20 54 68 er|Time=} max Th
5e1e0 65 20 6d 61 78 69 6d 75 6d 20 72 65 74 75 72 6e e maximum return
5e1f0 20 76 61 6c 75 65 2e 0a 09 09 20 2a 2f 0a 09 20 value.... */..
5e200 20 20 20 54 6f 6e 65 2e 43 74 72 6c 52 61 6e 64 Tone.CtrlRand
5e210 6f 6d 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 om = function ()
5e220 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
5e230 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f options = this.o
5e240 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 ptionsObject(arg
5e250 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 uments, [..
5e260 20 20 20 20 20 20 20 27 6d 69 6e 27 2c 0a 09 20 'min',..
5e270 20 20 20 20 20 20 20 20 20 20 20 27 6d 61 78 27 'max'
5e280 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e .. ], Ton
5e290 65 2e 43 74 72 6c 52 61 6e 64 6f 6d 2e 64 65 66 e.CtrlRandom.def
5e2a0 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 aults);..
5e2b0 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
5e2c0 6d 69 6e 69 6d 75 6d 20 72 65 74 75 72 6e 20 76 minimum return v
5e2d0 61 6c 75 65 0a 09 09 09 20 2a 20 20 40 74 79 70 alue.... * @typ
5e2e0 65 20 20 7b 4e 75 6d 62 65 72 7c 54 69 6d 65 7d e {Number|Time}
5e2f0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
5e300 20 74 68 69 73 2e 6d 69 6e 20 3d 20 6f 70 74 69 this.min = opti
5e310 6f 6e 73 2e 6d 69 6e 3b 0a 09 20 20 20 20 20 20 ons.min;..
5e320 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
5e330 20 6d 61 78 69 6d 75 6d 20 72 65 74 75 72 6e 20 maximum return
5e340 76 61 6c 75 65 0a 09 09 09 20 2a 20 20 40 74 79 value.... * @ty
5e350 70 65 20 20 7b 4e 75 6d 62 65 72 7c 54 69 6d 65 pe {Number|Time
5e360 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 }.... */..
5e370 20 20 74 68 69 73 2e 6d 61 78 20 3d 20 6f 70 74 this.max = opt
5e380 69 6f 6e 73 2e 6d 61 78 3b 0a 09 20 20 20 20 20 ions.max;..
5e390 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 49 66 /**.... * If
5e3a0 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 the return valu
5e3b0 65 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 69 e should be an i
5e3c0 6e 74 65 67 65 72 0a 09 09 09 20 2a 20 20 40 74 nteger.... * @t
5e3d0 79 70 65 20 20 7b 42 6f 6f 6c 65 61 6e 7d 0a 09 ype {Boolean}..
5e3e0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
5e3f0 68 69 73 2e 69 6e 74 65 67 65 72 20 3d 20 6f 70 his.integer = op
5e400 74 69 6f 6e 73 2e 69 6e 74 65 67 65 72 3b 0a 09 tions.integer;..
5e410 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 };.. Tone
5e420 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 43 74 72 .extend(Tone.Ctr
5e430 6c 52 61 6e 64 6f 6d 29 3b 0a 09 20 20 20 20 2f lRandom);.. /
5e440 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 64 65 66 **... * The def
5e450 61 75 6c 74 73 0a 09 09 20 2a 20 20 40 63 6f 6e aults... * @con
5e460 73 74 0a 09 09 20 2a 20 20 40 74 79 70 65 20 20 st... * @type
5e470 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 {Object}... */..
5e480 20 20 20 20 54 6f 6e 65 2e 43 74 72 6c 52 61 6e Tone.CtrlRan
5e490 64 6f 6d 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b dom.defaults = {
5e4a0 0a 09 20 20 20 20 20 20 20 20 27 6d 69 6e 27 3a .. 'min':
5e4b0 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 6d 61 0,.. 'ma
5e4c0 78 27 3a 20 31 2c 0a 09 20 20 20 20 20 20 20 20 x': 1,..
5e4d0 27 69 6e 74 65 67 65 72 27 3a 20 66 61 6c 73 65 'integer': false
5e4e0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
5e4f0 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 6e 20 61 *... * Return a
5e500 20 72 61 6e 64 6f 6d 20 76 61 6c 75 65 20 62 65 random value be
5e510 74 77 65 65 6e 20 6d 69 6e 20 61 6e 64 20 6d 61 tween min and ma
5e520 78 2e 20 0a 09 09 20 2a 20 20 40 72 65 61 64 4f x. ... * @readO
5e530 6e 6c 79 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 nly... * @membe
5e540 72 4f 66 20 54 6f 6e 65 2e 43 74 72 6c 52 61 6e rOf Tone.CtrlRan
5e550 64 6f 6d 23 0a 09 09 20 2a 20 20 40 74 79 70 65 dom#... * @type
5e560 20 7b 2a 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 {*}... * @name
5e570 20 76 61 6c 75 65 0a 09 09 20 2a 2f 0a 09 20 20 value... */..
5e580 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
5e590 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 43 74 72 roperty(Tone.Ctr
5e5a0 6c 52 61 6e 64 6f 6d 2e 70 72 6f 74 6f 74 79 70 lRandom.prototyp
5e5b0 65 2c 20 27 76 61 6c 75 65 27 2c 20 7b 0a 09 20 e, 'value', {..
5e5c0 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
5e5d0 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
5e5e0 20 20 20 20 20 20 20 76 61 72 20 6d 69 6e 20 3d var min =
5e5f0 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 this.toSeconds(
5e600 74 68 69 73 2e 6d 69 6e 29 3b 0a 09 20 20 20 20 this.min);..
5e610 20 20 20 20 20 20 20 20 76 61 72 20 6d 61 78 20 var max
5e620 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 = this.toSeconds
5e630 28 74 68 69 73 2e 6d 61 78 29 3b 0a 09 20 20 20 (this.max);..
5e640 20 20 20 20 20 20 20 20 20 76 61 72 20 72 61 6e var ran
5e650 64 20 3d 20 4d 61 74 68 2e 72 61 6e 64 6f 6d 28 d = Math.random(
5e660 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
5e670 76 61 72 20 76 61 6c 20 3d 20 72 61 6e 64 20 2a var val = rand *
5e680 20 6d 69 6e 20 2b 20 28 31 20 2d 20 72 61 6e 64 min + (1 - rand
5e690 29 20 2a 20 6d 61 78 3b 0a 09 20 20 20 20 20 20 ) * max;..
5e6a0 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 if (this.i
5e6b0 6e 74 65 67 65 72 29 20 7b 0a 09 20 20 20 20 20 nteger) {..
5e6c0 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 20 3d val =
5e6d0 20 4d 61 74 68 2e 66 6c 6f 6f 72 28 76 61 6c 29 Math.floor(val)
5e6e0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
5e6f0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
5e700 74 75 72 6e 20 76 61 6c 3b 0a 09 20 20 20 20 20 turn val;..
5e710 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
5e720 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 43 return Tone.C
5e730 74 72 6c 52 61 6e 64 6f 6d 3b 0a 09 7d 29 3b 0a trlRandom;..});.
5e740 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e .Module(function
5e750 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a (Tone) {.. .
5e760 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 . /**... * @
5e770 63 6c 61 73 73 20 20 42 75 66 66 65 72 20 6c 6f class Buffer lo
5e780 61 64 69 6e 67 20 61 6e 64 20 73 74 6f 72 61 67 ading and storag
5e790 65 2e 20 54 6f 6e 65 2e 42 75 66 66 65 72 20 69 e. Tone.Buffer i
5e7a0 73 20 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c s used internall
5e7b0 79 20 62 79 20 61 6c 6c 20 0a 09 09 20 2a 20 20 y by all ... *
5e7c0 20 20 20 20 20 20 20 20 63 6c 61 73 73 65 73 20 classes
5e7d0 74 68 61 74 20 6d 61 6b 65 20 72 65 71 75 65 73 that make reques
5e7e0 74 73 20 66 6f 72 20 61 75 64 69 6f 20 66 69 6c ts for audio fil
5e7f0 65 73 20 73 75 63 68 20 61 73 20 54 6f 6e 65 2e es such as Tone.
5e800 50 6c 61 79 65 72 2c 0a 09 09 20 2a 20 20 20 20 Player,... *
5e810 20 20 20 20 20 20 54 6f 6e 65 2e 53 61 6d 70 6c Tone.Sampl
5e820 65 72 20 61 6e 64 20 54 6f 6e 65 2e 43 6f 6e 76 er and Tone.Conv
5e830 6f 6c 76 65 72 2e 0a 09 09 20 2a 20 20 20 20 20 olver.... *
5e840 20 20 20 20 20 3c 62 72 3e 3c 62 72 3e 0a 09 09 <br><br>...
5e850 20 2a 20 20 20 20 20 20 20 20 20 20 41 73 69 64 * Asid
5e860 65 20 66 72 6f 6d 20 6c 6f 61 64 20 63 61 6c 6c e from load call
5e870 62 61 63 6b 73 20 66 72 6f 6d 20 69 6e 64 69 76 backs from indiv
5e880 69 64 75 61 6c 20 62 75 66 66 65 72 73 2c 20 54 idual buffers, T
5e890 6f 6e 65 2e 42 75 66 66 65 72 20 0a 09 09 20 2a one.Buffer ... *
5e8a0 20 20 09 09 70 72 6f 76 69 64 65 73 20 73 74 61 ..provides sta
5e8b0 74 69 63 20 6d 65 74 68 6f 64 73 20 77 68 69 63 tic methods whic
5e8c0 68 20 6b 65 65 70 20 74 72 61 63 6b 20 6f 66 20 h keep track of
5e8d0 74 68 65 20 6c 6f 61 64 69 6e 67 20 70 72 6f 67 the loading prog
5e8e0 72 65 73 73 20 0a 09 09 20 2a 20 20 09 09 6f 66 ress ... * ..of
5e8f0 20 61 6c 6c 20 6f 66 20 74 68 65 20 62 75 66 66 all of the buff
5e900 65 72 73 2e 20 54 68 65 73 65 20 6d 65 74 68 6f ers. These metho
5e910 64 73 20 61 72 65 20 54 6f 6e 65 2e 42 75 66 66 ds are Tone.Buff
5e920 65 72 2e 6f 6e 28 22 6c 6f 61 64 22 20 2f 20 22 er.on("load" / "
5e930 70 72 6f 67 72 65 73 73 22 20 2f 20 22 65 72 72 progress" / "err
5e940 6f 72 22 29 0a 09 09 20 2a 0a 09 09 20 2a 20 20 or")... *... *
5e950 40 63 6f 6e 73 74 72 75 63 74 6f 72 20 0a 09 09 @constructor ...
5e960 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f * @extends {To
5e970 6e 65 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ne}... * @param
5e980 20 7b 41 75 64 69 6f 42 75 66 66 65 72 7c 73 74 {AudioBuffer|st
5e990 72 69 6e 67 7d 20 75 72 6c 20 54 68 65 20 75 72 ring} url The ur
5e9a0 6c 20 74 6f 20 6c 6f 61 64 2c 20 6f 72 20 74 68 l to load, or th
5e9b0 65 20 61 75 64 69 6f 20 62 75 66 66 65 72 20 74 e audio buffer t
5e9c0 6f 20 73 65 74 2e 20 0a 09 09 20 2a 20 20 40 70 o set. ... * @p
5e9d0 61 72 61 6d 20 7b 46 75 6e 63 74 69 6f 6e 3d 7d aram {Function=}
5e9e0 20 6f 6e 6c 6f 61 64 20 41 20 63 61 6c 6c 62 61 onload A callba
5e9f0 63 6b 20 77 68 69 63 68 20 69 73 20 69 6e 76 6f ck which is invo
5ea00 6b 65 64 20 61 66 74 65 72 20 74 68 65 20 62 75 ked after the bu
5ea10 66 66 65 72 20 69 73 20 6c 6f 61 64 65 64 2e 20 ffer is loaded.
5ea20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 ... *
5ea30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5ea40 20 49 74 27 73 20 72 65 63 6f 6d 6d 65 6e 64 65 It's recommende
5ea50 64 20 74 6f 20 75 73 65 20 54 6f 6e 65 2e 42 75 d to use Tone.Bu
5ea60 66 66 65 72 2e 6f 6e 6c 6f 61 64 20 69 6e 73 74 ffer.onload inst
5ea70 65 61 64 20 0a 09 09 20 2a 20 20 20 20 20 20 20 ead ... *
5ea80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5ea90 20 20 20 20 20 73 69 6e 63 65 20 69 74 20 77 69 since it wi
5eaa0 6c 6c 20 67 69 76 65 20 79 6f 75 20 61 20 63 61 ll give you a ca
5eab0 6c 6c 62 61 63 6b 20 77 68 65 6e 20 41 4c 4c 20 llback when ALL
5eac0 62 75 66 66 65 72 73 20 61 72 65 20 6c 6f 61 64 buffers are load
5ead0 65 64 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ed.... * @param
5eae0 20 7b 46 75 6e 63 74 69 6f 6e 3d 7d 20 6f 6e 65 {Function=} one
5eaf0 72 72 6f 72 20 54 68 65 20 63 61 6c 6c 62 61 63 rror The callbac
5eb00 6b 20 74 6f 20 69 6e 76 6f 6b 65 20 69 66 20 74 k to invoke if t
5eb10 68 65 72 65 20 69 73 20 61 6e 20 65 72 72 6f 72 here is an error
5eb20 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
5eb30 09 09 20 2a 20 76 61 72 20 62 75 66 66 65 72 20 .. * var buffer
5eb40 3d 20 6e 65 77 20 54 6f 6e 65 2e 42 75 66 66 65 = new Tone.Buffe
5eb50 72 28 22 70 61 74 68 2f 74 6f 2f 73 6f 75 6e 64 r("path/to/sound
5eb60 2e 6d 70 33 22 2c 20 66 75 6e 63 74 69 6f 6e 28 .mp3", function(
5eb70 29 7b 0a 09 09 20 2a 20 09 2f 2f 74 68 65 20 62 ){... * .//the b
5eb80 75 66 66 65 72 20 69 73 20 6e 6f 77 20 61 76 61 uffer is now ava
5eb90 69 6c 61 62 6c 65 2e 0a 09 09 20 2a 20 09 76 61 ilable.... * .va
5eba0 72 20 62 75 66 66 20 3d 20 62 75 66 66 65 72 2e r buff = buffer.
5ebb0 67 65 74 28 29 3b 0a 09 09 20 2a 20 7d 29 3b 0a get();... * });.
5ebc0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
5ebd0 42 75 66 66 65 72 20 3d 20 66 75 6e 63 74 69 6f Buffer = functio
5ebe0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
5ebf0 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 var options = th
5ec00 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 is.optionsObject
5ec10 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 (arguments, [..
5ec20 20 20 20 20 20 20 20 20 20 20 20 27 75 72 6c 27 'url'
5ec30 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
5ec40 6f 6e 6c 6f 61 64 27 2c 0a 09 20 20 20 20 20 20 onload',..
5ec50 20 20 20 20 20 20 27 6f 6e 65 72 72 6f 72 27 0a 'onerror'.
5ec60 09 20 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 . ], Tone
5ec70 2e 42 75 66 66 65 72 2e 64 65 66 61 75 6c 74 73 .Buffer.defaults
5ec80 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
5ec90 09 09 09 20 2a 20 20 73 74 6f 72 65 73 20 74 68 ... * stores th
5eca0 65 20 6c 6f 61 64 65 64 20 41 75 64 69 6f 42 75 e loaded AudioBu
5ecb0 66 66 65 72 0a 09 09 09 20 2a 20 20 40 74 79 70 ffer.... * @typ
5ecc0 65 20 7b 41 75 64 69 6f 42 75 66 66 65 72 7d 0a e {AudioBuffer}.
5ecd0 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
5ece0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
5ecf0 74 68 69 73 2e 5f 62 75 66 66 65 72 20 3d 20 6e this._buffer = n
5ed00 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a ull;.. /*
5ed10 2a 0a 09 09 09 20 2a 20 20 69 6e 64 69 63 61 74 *.... * indicat
5ed20 65 73 20 69 66 20 74 68 65 20 62 75 66 66 65 72 es if the buffer
5ed30 20 73 68 6f 75 6c 64 20 62 65 20 72 65 76 65 72 should be rever
5ed40 73 65 64 20 6f 72 20 6e 6f 74 0a 09 09 09 20 2a sed or not.... *
5ed50 20 20 40 74 79 70 65 20 7b 42 6f 6f 6c 65 61 6e @type {Boolean
5ed60 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
5ed70 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
5ed80 20 20 74 68 69 73 2e 5f 72 65 76 65 72 73 65 64 this._reversed
5ed90 20 3d 20 6f 70 74 69 6f 6e 73 2e 72 65 76 65 72 = options.rever
5eda0 73 65 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a se;.. /**
5edb0 0a 09 09 09 20 2a 20 20 54 68 65 20 58 48 52 0a .... * The XHR.
5edc0 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 58 ... * @type {X
5edd0 4d 4c 48 74 74 70 52 65 71 75 65 73 74 7d 0a 09 MLHttpRequest}..
5ede0 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
5edf0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
5ee00 68 69 73 2e 5f 78 68 72 20 3d 20 6e 75 6c 6c 3b his._xhr = null;
5ee10 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 .. if (op
5ee20 74 69 6f 6e 73 2e 75 72 6c 20 69 6e 73 74 61 6e tions.url instan
5ee30 63 65 6f 66 20 41 75 64 69 6f 42 75 66 66 65 72 ceof AudioBuffer
5ee40 20 7c 7c 20 6f 70 74 69 6f 6e 73 2e 75 72 6c 20 || options.url
5ee50 69 6e 73 74 61 6e 63 65 6f 66 20 54 6f 6e 65 2e instanceof Tone.
5ee60 42 75 66 66 65 72 29 20 7b 0a 09 20 20 20 20 20 Buffer) {..
5ee70 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 74 28 this.set(
5ee80 6f 70 74 69 6f 6e 73 2e 75 72 6c 29 3b 0a 09 20 options.url);..
5ee90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 6e // in
5eea0 76 6f 6b 65 20 74 68 65 20 6f 6e 6c 6f 61 64 20 voke the onload
5eeb0 63 61 6c 6c 62 61 63 6b 0a 09 20 20 20 20 20 20 callback..
5eec0 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 6f 6e if (option
5eed0 73 2e 6f 6e 6c 6f 61 64 29 20 7b 0a 09 20 20 20 s.onload) {..
5eee0 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 74 opt
5eef0 69 6f 6e 73 2e 6f 6e 6c 6f 61 64 28 74 68 69 73 ions.onload(this
5ef00 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
5ef10 7d 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 }.. } els
5ef20 65 20 69 66 20 28 74 68 69 73 2e 69 73 53 74 72 e if (this.isStr
5ef30 69 6e 67 28 6f 70 74 69 6f 6e 73 2e 75 72 6c 29 ing(options.url)
5ef40 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
5ef50 20 74 68 69 73 2e 6c 6f 61 64 28 6f 70 74 69 6f this.load(optio
5ef60 6e 73 2e 75 72 6c 2c 20 6f 70 74 69 6f 6e 73 2e ns.url, options.
5ef70 6f 6e 6c 6f 61 64 2c 20 6f 70 74 69 6f 6e 73 2e onload, options.
5ef80 6f 6e 65 72 72 6f 72 29 3b 0a 09 20 20 20 20 20 onerror);..
5ef90 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 }.. };..
5efa0 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
5efb0 6e 65 2e 42 75 66 66 65 72 29 3b 0a 09 20 20 20 ne.Buffer);..
5efc0 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 65 20 64 /**... * the d
5efd0 65 66 61 75 6c 74 20 70 61 72 61 6d 65 74 65 72 efault parameter
5efe0 73 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4f s... * @type {O
5eff0 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 bject}... */..
5f000 20 20 54 6f 6e 65 2e 42 75 66 66 65 72 2e 64 65 Tone.Buffer.de
5f010 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 faults = {..
5f020 20 20 20 20 27 75 72 6c 27 3a 20 75 6e 64 65 66 'url': undef
5f030 69 6e 65 64 2c 0a 09 20 20 20 20 20 20 20 20 27 ined,.. '
5f040 72 65 76 65 72 73 65 27 3a 20 66 61 6c 73 65 0a reverse': false.
5f050 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
5f060 0a 09 09 20 2a 20 20 50 61 73 73 20 69 6e 20 61 ... * Pass in a
5f070 6e 20 41 75 64 69 6f 42 75 66 66 65 72 20 6f 72 n AudioBuffer or
5f080 20 54 6f 6e 65 2e 42 75 66 66 65 72 20 74 6f 20 Tone.Buffer to
5f090 73 65 74 20 74 68 65 20 76 61 6c 75 65 0a 09 09 set the value...
5f0a0 20 2a 20 20 6f 66 20 74 68 69 73 20 62 75 66 66 * of this buff
5f0b0 65 72 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d er.... * @param
5f0c0 20 7b 41 75 64 69 6f 42 75 66 66 65 72 7c 54 6f {AudioBuffer|To
5f0d0 6e 65 2e 42 75 66 66 65 72 7d 20 62 75 66 66 65 ne.Buffer} buffe
5f0e0 72 20 74 68 65 20 62 75 66 66 65 72 0a 09 09 20 r the buffer...
5f0f0 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
5f100 65 2e 42 75 66 66 65 72 7d 20 74 68 69 73 0a 09 e.Buffer} this..
5f110 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 42 . */.. Tone.B
5f120 75 66 66 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e uffer.prototype.
5f130 73 65 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 set = function (
5f140 62 75 66 66 65 72 29 20 7b 0a 09 20 20 20 20 20 buffer) {..
5f150 20 20 20 69 66 20 28 62 75 66 66 65 72 20 69 6e if (buffer in
5f160 73 74 61 6e 63 65 6f 66 20 54 6f 6e 65 2e 42 75 stanceof Tone.Bu
5f170 66 66 65 72 29 20 7b 0a 09 20 20 20 20 20 20 20 ffer) {..
5f180 20 20 20 20 20 74 68 69 73 2e 5f 62 75 66 66 65 this._buffe
5f190 72 20 3d 20 62 75 66 66 65 72 2e 67 65 74 28 29 r = buffer.get()
5f1a0 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 ;.. } els
5f1b0 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
5f1c0 20 74 68 69 73 2e 5f 62 75 66 66 65 72 20 3d 20 this._buffer =
5f1d0 62 75 66 66 65 72 3b 0a 09 20 20 20 20 20 20 20 buffer;..
5f1e0 20 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 }.. retu
5f1f0 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
5f200 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
5f210 40 72 65 74 75 72 6e 20 7b 41 75 64 69 6f 42 75 @return {AudioBu
5f220 66 66 65 72 7d 20 54 68 65 20 61 75 64 69 6f 20 ffer} The audio
5f230 62 75 66 66 65 72 20 73 74 6f 72 65 64 20 69 6e buffer stored in
5f240 20 74 68 65 20 6f 62 6a 65 63 74 2e 0a 09 09 20 the object....
5f250 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 42 75 66 */.. Tone.Buf
5f260 66 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 67 65 fer.prototype.ge
5f270 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 t = function ()
5f280 7b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 {.. retur
5f290 6e 20 74 68 69 73 2e 5f 62 75 66 66 65 72 3b 0a n this._buffer;.
5f2a0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
5f2b0 0a 09 09 20 2a 20 20 4d 61 6b 65 73 20 61 6e 20 ... * Makes an
5f2c0 78 68 72 20 72 65 71 65 73 74 20 66 6f 72 20 74 xhr reqest for t
5f2d0 68 65 20 73 65 6c 65 63 74 65 64 20 75 72 6c 20 he selected url
5f2e0 74 68 65 6e 20 64 65 63 6f 64 65 73 0a 09 09 20 then decodes...
5f2f0 2a 20 20 74 68 65 20 66 69 6c 65 20 61 73 20 61 * the file as a
5f300 6e 20 61 75 64 69 6f 20 62 75 66 66 65 72 2e 20 n audio buffer.
5f310 49 6e 76 6f 6b 65 73 0a 09 09 20 2a 20 20 74 68 Invokes... * th
5f320 65 20 63 61 6c 6c 62 61 63 6b 20 6f 6e 63 65 20 e callback once
5f330 74 68 65 20 61 75 64 69 6f 20 62 75 66 66 65 72 the audio buffer
5f340 20 6c 6f 61 64 73 2e 0a 09 09 20 2a 20 20 40 70 loads.... * @p
5f350 61 72 61 6d 20 7b 53 74 72 69 6e 67 7d 20 75 72 aram {String} ur
5f360 6c 20 54 68 65 20 75 72 6c 20 6f 66 20 74 68 65 l The url of the
5f370 20 62 75 66 66 65 72 20 74 6f 20 6c 6f 61 64 2e buffer to load.
5f380 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 ... *
5f390 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 74 filet
5f3a0 79 70 65 20 73 75 70 70 6f 72 74 20 64 65 70 65 ype support depe
5f3b0 6e 64 73 20 6f 6e 20 74 68 65 0a 09 09 20 2a 20 nds on the... *
5f3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5f3d0 20 20 20 20 20 62 72 6f 77 73 65 72 2e 0a 09 09 browser....
5f3e0 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 50 72 * @returns {Pr
5f3f0 6f 6d 69 73 65 7d 20 72 65 74 75 72 6e 73 20 61 omise} returns a
5f400 20 50 72 6f 6d 69 73 65 20 77 68 69 63 68 20 72 Promise which r
5f410 65 73 6f 6c 76 65 73 20 77 69 74 68 20 74 68 65 esolves with the
5f420 20 54 6f 6e 65 2e 42 75 66 66 65 72 0a 09 09 20 Tone.Buffer...
5f430 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 42 75 66 */.. Tone.Buf
5f440 66 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6c 6f fer.prototype.lo
5f450 61 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 75 ad = function (u
5f460 72 6c 2c 20 6f 6e 6c 6f 61 64 2c 20 6f 6e 65 72 rl, onload, oner
5f470 72 6f 72 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ror) {..
5f480 76 61 72 20 70 72 6f 6d 69 73 65 20 3d 20 6e 65 var promise = ne
5f490 77 20 50 72 6f 6d 69 73 65 28 66 75 6e 63 74 69 w Promise(functi
5f4a0 6f 6e 20 28 6c 6f 61 64 2c 20 65 72 72 6f 72 29 on (load, error)
5f4b0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
5f4c0 74 68 69 73 2e 5f 78 68 72 20 3d 20 54 6f 6e 65 this._xhr = Tone
5f4d0 2e 42 75 66 66 65 72 2e 6c 6f 61 64 28 75 72 6c .Buffer.load(url
5f4e0 2c 20 2f 2f 73 75 63 63 65 73 73 0a 09 20 20 20 , //success..
5f4f0 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f functio
5f500 6e 20 28 62 75 66 66 29 20 7b 0a 09 20 20 20 20 n (buff) {..
5f510 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
5f520 2e 5f 78 68 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 ._xhr = null;..
5f530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
5f540 68 69 73 2e 73 65 74 28 62 75 66 66 29 3b 0a 09 his.set(buff);..
5f550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5f560 6c 6f 61 64 28 74 68 69 73 29 3b 0a 09 20 20 20 load(this);..
5f570 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
5f580 28 6f 6e 6c 6f 61 64 29 20 7b 0a 09 20 20 20 20 (onload) {..
5f590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5f5a0 6f 6e 6c 6f 61 64 28 74 68 69 73 29 3b 0a 09 20 onload(this);..
5f5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
5f5c0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 2e .. }.
5f5d0 62 69 6e 64 28 74 68 69 73 29 2c 20 2f 2f 65 72 bind(this), //er
5f5e0 72 6f 72 0a 09 20 20 20 20 20 20 20 20 20 20 20 ror..
5f5f0 20 66 75 6e 63 74 69 6f 6e 20 28 65 72 72 29 20 function (err)
5f600 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
5f610 20 20 20 74 68 69 73 2e 5f 78 68 72 20 3d 20 6e this._xhr = n
5f620 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ull;..
5f630 20 20 20 20 20 20 65 72 72 6f 72 28 65 72 72 29 error(err)
5f640 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
5f650 20 20 20 69 66 20 28 6f 6e 65 72 72 6f 72 29 20 if (onerror)
5f660 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
5f670 20 20 20 20 20 20 20 6f 6e 65 72 72 6f 72 28 65 onerror(e
5f680 72 72 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 rr);..
5f690 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
5f6a0 20 20 20 20 20 7d 2e 62 69 6e 64 28 74 68 69 73 }.bind(this
5f6b0 29 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 2e 62 ));.. }.b
5f6c0 69 6e 64 28 74 68 69 73 29 29 3b 0a 09 20 20 20 ind(this));..
5f6d0 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 6f 6d return prom
5f6e0 69 73 65 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ise;.. };..
5f6f0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 64 69 73 70 /**... * disp
5f700 6f 73 65 20 61 6e 64 20 64 69 73 63 6f 6e 6e 65 ose and disconne
5f710 63 74 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e ct... * @return
5f720 73 20 7b 54 6f 6e 65 2e 42 75 66 66 65 72 7d 20 s {Tone.Buffer}
5f730 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
5f740 54 6f 6e 65 2e 42 75 66 66 65 72 2e 70 72 6f 74 Tone.Buffer.prot
5f750 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 otype.dispose =
5f760 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
5f770 20 20 20 20 20 20 20 54 6f 6e 65 2e 45 6d 69 74 Tone.Emit
5f780 74 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 ter.prototype.di
5f790 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 spose.call(this)
5f7a0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
5f7b0 5f 62 75 66 66 65 72 20 3d 20 6e 75 6c 6c 3b 0a _buffer = null;.
5f7c0 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 . if (thi
5f7d0 73 2e 5f 78 68 72 29 20 7b 0a 09 20 20 20 20 20 s._xhr) {..
5f7e0 20 20 20 20 20 20 20 54 6f 6e 65 2e 42 75 66 66 Tone.Buff
5f7f0 65 72 2e 5f 63 75 72 72 65 6e 74 44 6f 77 6e 6c er._currentDownl
5f800 6f 61 64 73 2d 2d 3b 0a 09 20 20 20 20 20 20 20 oads--;..
5f810 20 20 20 20 20 74 68 69 73 2e 5f 78 68 72 2e 61 this._xhr.a
5f820 62 6f 72 74 28 29 3b 0a 09 20 20 20 20 20 20 20 bort();..
5f830 20 20 20 20 20 74 68 69 73 2e 5f 78 68 72 20 3d this._xhr =
5f840 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
5f850 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 }.. retur
5f860 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
5f870 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 49 66 . /**... * If
5f880 20 74 68 65 20 62 75 66 66 65 72 20 69 73 20 6c the buffer is l
5f890 6f 61 64 65 64 20 6f 72 20 6e 6f 74 0a 09 09 20 oaded or not...
5f8a0 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 * @memberOf Tone
5f8b0 2e 42 75 66 66 65 72 23 0a 09 09 20 2a 20 40 74 .Buffer#... * @t
5f8c0 79 70 65 20 7b 42 6f 6f 6c 65 61 6e 7d 0a 09 09 ype {Boolean}...
5f8d0 20 2a 20 40 6e 61 6d 65 20 6c 6f 61 64 65 64 0a * @name loaded.
5f8e0 09 09 20 2a 20 40 72 65 61 64 4f 6e 6c 79 0a 09 .. * @readOnly..
5f8f0 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
5f900 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
5f910 54 6f 6e 65 2e 42 75 66 66 65 72 2e 70 72 6f 74 Tone.Buffer.prot
5f920 6f 74 79 70 65 2c 20 27 6c 6f 61 64 65 64 27 2c otype, 'loaded',
5f930 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
5f940 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
5f950 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
5f960 72 6e 20 74 68 69 73 2e 6c 65 6e 67 74 68 20 3e rn this.length >
5f970 20 30 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 0;.. }..
5f980 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
5f990 0a 09 09 20 2a 20 54 68 65 20 64 75 72 61 74 69 ... * The durati
5f9a0 6f 6e 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 on of the buffer
5f9b0 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f . ... * @memberO
5f9c0 66 20 54 6f 6e 65 2e 42 75 66 66 65 72 23 0a 09 f Tone.Buffer#..
5f9d0 09 20 2a 20 40 74 79 70 65 20 7b 4e 75 6d 62 65 . * @type {Numbe
5f9e0 72 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 64 75 r}... * @name du
5f9f0 72 61 74 69 6f 6e 0a 09 09 20 2a 20 40 72 65 61 ration... * @rea
5fa00 64 4f 6e 6c 79 0a 09 09 20 2a 2f 0a 09 20 20 20 dOnly... */..
5fa10 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
5fa20 6f 70 65 72 74 79 28 54 6f 6e 65 2e 42 75 66 66 operty(Tone.Buff
5fa30 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 64 er.prototype, 'd
5fa40 75 72 61 74 69 6f 6e 27 2c 20 7b 0a 09 20 20 20 uration', {..
5fa50 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
5fa60 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
5fa70 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 62 if (this._b
5fa80 75 66 66 65 72 29 20 7b 0a 09 20 20 20 20 20 20 uffer) {..
5fa90 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
5faa0 20 74 68 69 73 2e 5f 62 75 66 66 65 72 2e 64 75 this._buffer.du
5fab0 72 61 74 69 6f 6e 3b 0a 09 20 20 20 20 20 20 20 ration;..
5fac0 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
5fad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
5fae0 65 74 75 72 6e 20 30 3b 0a 09 20 20 20 20 20 20 eturn 0;..
5faf0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
5fb00 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
5fb10 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 6c 65 /**... * The le
5fb20 6e 67 74 68 20 6f 66 20 74 68 65 20 62 75 66 66 ngth of the buff
5fb30 65 72 20 69 6e 20 73 61 6d 70 6c 65 73 0a 09 09 er in samples...
5fb40 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
5fb50 65 2e 42 75 66 66 65 72 23 0a 09 09 20 2a 20 40 e.Buffer#... * @
5fb60 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 type {Number}...
5fb70 20 2a 20 40 6e 61 6d 65 20 6c 65 6e 67 74 68 0a * @name length.
5fb80 09 09 20 2a 20 40 72 65 61 64 4f 6e 6c 79 0a 09 .. * @readOnly..
5fb90 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
5fba0 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
5fbb0 54 6f 6e 65 2e 42 75 66 66 65 72 2e 70 72 6f 74 Tone.Buffer.prot
5fbc0 6f 74 79 70 65 2c 20 27 6c 65 6e 67 74 68 27 2c otype, 'length',
5fbd0 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
5fbe0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
5fbf0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
5fc00 74 68 69 73 2e 5f 62 75 66 66 65 72 29 20 7b 0a this._buffer) {.
5fc10 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
5fc20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 62 75 return this._bu
5fc30 66 66 65 72 2e 6c 65 6e 67 74 68 3b 0a 09 20 20 ffer.length;..
5fc40 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
5fc50 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
5fc60 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 09 20 return 0;..
5fc70 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
5fc80 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b }.. });
5fc90 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 .. /**... * T
5fca0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 64 69 73 he number of dis
5fcb0 63 72 65 74 65 20 61 75 64 69 6f 20 63 68 61 6e crete audio chan
5fcc0 6e 65 6c 73 2e 20 52 65 74 75 72 6e 73 20 30 20 nels. Returns 0
5fcd0 69 66 20 6e 6f 20 62 75 66 66 65 72 0a 09 09 20 if no buffer...
5fce0 2a 20 69 73 20 6c 6f 61 64 65 64 2e 0a 09 09 20 * is loaded....
5fcf0 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 * @memberOf Tone
5fd00 2e 42 75 66 66 65 72 23 0a 09 09 20 2a 20 40 74 .Buffer#... * @t
5fd10 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 ype {Number}...
5fd20 2a 20 40 6e 61 6d 65 20 6e 75 6d 62 65 72 4f 66 * @name numberOf
5fd30 43 68 61 6e 6e 65 6c 73 0a 09 09 20 2a 20 40 72 Channels... * @r
5fd40 65 61 64 4f 6e 6c 79 0a 09 09 20 2a 2f 0a 09 20 eadOnly... */..
5fd50 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
5fd60 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 42 75 Property(Tone.Bu
5fd70 66 66 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 ffer.prototype,
5fd80 27 6e 75 6d 62 65 72 4f 66 43 68 61 6e 6e 65 6c 'numberOfChannel
5fd90 73 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 s', {.. g
5fda0 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
5fdb0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 {.. i
5fdc0 66 20 28 74 68 69 73 2e 5f 62 75 66 66 65 72 29 f (this._buffer)
5fdd0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
5fde0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
5fdf0 5f 62 75 66 66 65 72 2e 6e 75 6d 62 65 72 4f 66 _buffer.numberOf
5fe00 43 68 61 6e 6e 65 6c 73 3b 0a 09 20 20 20 20 20 Channels;..
5fe10 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
5fe20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
5fe30 20 72 65 74 75 72 6e 20 30 3b 0a 09 20 20 20 20 return 0;..
5fe40 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
5fe50 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
5fe60 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 65 74 /**... * Set
5fe70 20 74 68 65 20 61 75 64 69 6f 20 62 75 66 66 65 the audio buffe
5fe80 72 20 66 72 6f 6d 20 74 68 65 20 61 72 72 61 79 r from the array
5fe90 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 46 ... * @param {F
5fea0 6c 6f 61 74 33 32 41 72 72 61 79 7d 20 61 72 72 loat32Array} arr
5feb0 61 79 20 54 68 65 20 61 72 72 61 79 20 74 6f 20 ay The array to
5fec0 66 69 6c 6c 20 74 68 65 20 61 75 64 69 6f 20 62 fill the audio b
5fed0 75 66 66 65 72 0a 09 09 20 2a 20 20 40 70 61 72 uffer... * @par
5fee0 61 6d 20 7b 4e 75 6d 62 65 72 7d 20 5b 63 68 61 am {Number} [cha
5fef0 6e 6e 65 6c 73 3d 31 5d 20 54 68 65 20 6e 75 6d nnels=1] The num
5ff00 62 65 72 20 6f 66 20 63 68 61 6e 6e 65 6c 73 20 ber of channels
5ff10 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 74 68 65 contained in the
5ff20 20 61 72 72 61 79 2e 20 0a 09 09 20 2a 20 20 20 array. ... *
5ff30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5ff40 20 20 20 20 20 20 20 20 20 20 20 20 49 66 20 74 If t
5ff50 68 65 20 63 68 61 6e 6e 65 6c 20 69 73 20 6d 6f he channel is mo
5ff60 72 65 20 74 68 61 6e 20 31 2c 20 74 68 65 20 69 re than 1, the i
5ff70 6e 70 75 74 20 61 72 72 61 79 0a 09 09 20 2a 20 nput array... *
5ff80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5ff90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 is
5ffa0 20 65 78 70 65 63 74 65 64 20 74 6f 20 62 65 20 expected to be
5ffb0 61 20 6d 75 6c 74 69 64 69 6d 65 6e 73 69 6f 6e a multidimension
5ffc0 61 6c 20 61 72 72 61 79 0a 09 09 20 2a 20 20 20 al array... *
5ffd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5ffe0 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 with
5fff0 20 64 69 6d 65 6e 73 69 6f 6e 73 20 65 71 75 61 dimensions equa
60000 6c 20 74 6f 20 74 68 65 20 6e 75 6d 62 65 72 20 l to the number
60010 6f 66 20 63 68 61 6e 6e 65 6c 73 2e 0a 09 09 20 of channels....
60020 2a 20 20 40 72 65 74 75 72 6e 20 7b 54 6f 6e 65 * @return {Tone
60030 2e 42 75 66 66 65 72 7d 20 74 68 69 73 0a 09 09 .Buffer} this...
60040 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 42 75 */.. Tone.Bu
60050 66 66 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 66 ffer.prototype.f
60060 72 6f 6d 41 72 72 61 79 20 3d 20 66 75 6e 63 74 romArray = funct
60070 69 6f 6e 20 28 61 72 72 61 79 29 20 7b 0a 09 20 ion (array) {..
60080 20 20 20 20 20 20 20 76 61 72 20 69 73 4d 75 6c var isMul
60090 74 69 64 69 6d 65 6e 73 69 6f 6e 61 6c 20 3d 20 tidimensional =
600a0 61 72 72 61 79 5b 30 5d 2e 6c 65 6e 67 74 68 20 array[0].length
600b0 3e 20 30 3b 0a 09 20 20 20 20 20 20 20 20 76 61 > 0;.. va
600c0 72 20 63 68 61 6e 6e 65 6c 73 20 3d 20 69 73 4d r channels = isM
600d0 75 6c 74 69 64 69 6d 65 6e 73 69 6f 6e 61 6c 20 ultidimensional
600e0 3f 20 61 72 72 61 79 2e 6c 65 6e 67 74 68 20 3a ? array.length :
600f0 20 31 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 1;.. var
60100 20 6c 65 6e 20 3d 20 69 73 4d 75 6c 74 69 64 69 len = isMultidi
60110 6d 65 6e 73 69 6f 6e 61 6c 20 3f 20 61 72 72 61 mensional ? arra
60120 79 5b 30 5d 2e 6c 65 6e 67 74 68 20 3a 20 61 72 y[0].length : ar
60130 72 61 79 2e 6c 65 6e 67 74 68 3b 0a 09 20 20 20 ray.length;..
60140 20 20 20 20 20 76 61 72 20 62 75 66 66 65 72 20 var buffer
60150 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 63 = this.context.c
60160 72 65 61 74 65 42 75 66 66 65 72 28 63 68 61 6e reateBuffer(chan
60170 6e 65 6c 73 2c 20 6c 65 6e 2c 20 74 68 69 73 2e nels, len, this.
60180 63 6f 6e 74 65 78 74 2e 73 61 6d 70 6c 65 52 61 context.sampleRa
60190 74 65 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 te);.. if
601a0 20 28 21 69 73 4d 75 6c 74 69 64 69 6d 65 6e 73 (!isMultidimens
601b0 69 6f 6e 61 6c 20 26 26 20 63 68 61 6e 6e 65 6c ional && channel
601c0 73 20 3d 3d 3d 20 31 29 20 7b 0a 09 20 20 20 20 s === 1) {..
601d0 20 20 20 20 20 20 20 20 61 72 72 61 79 20 3d 20 array =
601e0 5b 61 72 72 61 79 5d 3b 0a 09 20 20 20 20 20 20 [array];..
601f0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 66 6f 72 }.. for
60200 20 28 76 61 72 20 63 20 3d 20 30 3b 20 63 20 3c (var c = 0; c <
60210 20 63 68 61 6e 6e 65 6c 73 3b 20 63 2b 2b 29 20 channels; c++)
60220 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 {.. i
60230 66 20 28 74 68 69 73 2e 69 73 46 75 6e 63 74 69 f (this.isFuncti
60240 6f 6e 28 62 75 66 66 65 72 2e 63 6f 70 79 54 6f on(buffer.copyTo
60250 43 68 61 6e 6e 65 6c 29 29 20 7b 0a 09 20 20 20 Channel)) {..
60260 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 buf
60270 66 65 72 2e 63 6f 70 79 54 6f 43 68 61 6e 6e 65 fer.copyToChanne
60280 6c 28 61 72 72 61 79 5b 63 5d 2c 20 63 29 3b 0a l(array[c], c);.
60290 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
602a0 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
602b0 20 20 20 20 20 20 20 76 61 72 20 63 68 61 6e 6e var chann
602c0 65 6c 20 3d 20 62 75 66 66 65 72 2e 67 65 74 43 el = buffer.getC
602d0 68 61 6e 6e 65 6c 44 61 74 61 28 63 29 3b 0a 09 hannelData(c);..
602e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
602f0 76 61 72 20 63 68 61 6e 6e 65 6c 41 72 72 61 79 var channelArray
60300 20 3d 20 61 72 72 61 79 5b 63 5d 3b 0a 09 20 20 = array[c];..
60310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f fo
60320 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 r (var i = 0; i
60330 3c 20 63 68 61 6e 6e 65 6c 41 72 72 61 79 2e 6c < channelArray.l
60340 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 ength; i++) {..
60350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
60360 20 20 20 63 68 61 6e 6e 65 6c 5b 69 5d 20 3d 20 channel[i] =
60370 63 68 61 6e 6e 65 6c 41 72 72 61 79 5b 69 5d 3b channelArray[i];
60380 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
60390 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
603a0 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 }.. }..
603b0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 62 75 66 this._buf
603c0 66 65 72 20 3d 20 62 75 66 66 65 72 3b 0a 09 20 fer = buffer;..
603d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
603e0 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
603f0 20 2f 2a 2a 0a 09 09 20 2a 20 09 47 65 74 20 74 /**... * .Get t
60400 68 65 20 62 75 66 66 65 72 20 61 73 20 61 6e 20 he buffer as an
60410 61 72 72 61 79 2e 20 53 69 6e 67 6c 65 20 63 68 array. Single ch
60420 61 6e 6e 65 6c 20 62 75 66 66 65 72 73 20 77 69 annel buffers wi
60430 6c 6c 20 72 65 74 75 72 6e 20 61 20 31 2d 64 69 ll return a 1-di
60440 6d 65 6e 73 69 6f 6e 61 6c 20 0a 09 09 20 2a 20 mensional ... *
60450 09 46 6c 6f 61 74 33 32 41 72 72 61 79 2c 20 61 .Float32Array, a
60460 6e 64 20 6d 75 6c 74 69 63 68 61 6e 6e 65 6c 20 nd multichannel
60470 62 75 66 66 65 72 73 20 77 69 6c 6c 20 72 65 74 buffers will ret
60480 75 72 6e 20 6d 75 6c 74 69 64 69 6d 65 6e 73 69 urn multidimensi
60490 6f 6e 61 6c 20 61 72 72 61 79 73 2e 0a 09 09 20 onal arrays....
604a0 2a 20 20 40 70 61 72 61 6d 20 7b 4e 75 6d 62 65 * @param {Numbe
604b0 72 3d 7d 20 63 68 61 6e 6e 65 6c 20 4f 70 74 69 r=} channel Opti
604c0 6f 6e 61 6c 6c 79 20 6f 6e 6c 79 20 63 6f 70 79 onally only copy
604d0 20 61 20 73 69 6e 67 6c 65 20 63 68 61 6e 6e 65 a single channe
604e0 6c 20 66 72 6f 6d 20 74 68 65 20 61 72 72 61 79 l from the array
604f0 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 .... * @return
60500 7b 41 72 72 61 79 7d 0a 09 09 20 2a 2f 0a 09 20 {Array}... */..
60510 20 20 20 54 6f 6e 65 2e 42 75 66 66 65 72 2e 70 Tone.Buffer.p
60520 72 6f 74 6f 74 79 70 65 2e 74 6f 41 72 72 61 79 rototype.toArray
60530 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 63 68 61 = function (cha
60540 6e 6e 65 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 nnel) {..
60550 20 69 66 20 28 74 68 69 73 2e 69 73 4e 75 6d 62 if (this.isNumb
60560 65 72 28 63 68 61 6e 6e 65 6c 29 29 20 7b 0a 09 er(channel)) {..
60570 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
60580 72 6e 20 74 68 69 73 2e 5f 62 75 66 66 65 72 2e rn this._buffer.
60590 67 65 74 43 68 61 6e 6e 65 6c 44 61 74 61 28 63 getChannelData(c
605a0 68 61 6e 6e 65 6c 29 3b 0a 09 20 20 20 20 20 20 hannel);..
605b0 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 } else {..
605c0 20 20 20 20 20 20 20 20 76 61 72 20 72 65 74 20 var ret
605d0 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 = [];..
605e0 20 20 20 66 6f 72 20 28 76 61 72 20 63 20 3d 20 for (var c =
605f0 30 3b 20 63 20 3c 20 74 68 69 73 2e 6e 75 6d 62 0; c < this.numb
60600 65 72 4f 66 43 68 61 6e 6e 65 6c 73 3b 20 63 2b erOfChannels; c+
60610 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 +) {..
60620 20 20 20 20 20 20 72 65 74 5b 63 5d 20 3d 20 6e ret[c] = n
60630 65 77 20 46 6c 6f 61 74 33 32 41 72 72 61 79 28 ew Float32Array(
60640 74 68 69 73 2e 6c 65 6e 67 74 68 29 3b 0a 09 20 this.length);..
60650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
60660 66 20 28 74 68 69 73 2e 69 73 46 75 6e 63 74 69 f (this.isFuncti
60670 6f 6e 28 74 68 69 73 2e 5f 62 75 66 66 65 72 2e on(this._buffer.
60680 63 6f 70 79 46 72 6f 6d 43 68 61 6e 6e 65 6c 29 copyFromChannel)
60690 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
606a0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 62 this._b
606b0 75 66 66 65 72 2e 63 6f 70 79 46 72 6f 6d 43 68 uffer.copyFromCh
606c0 61 6e 6e 65 6c 28 72 65 74 5b 63 5d 2c 20 63 29 annel(ret[c], c)
606d0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
606e0 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
606f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
60700 20 76 61 72 20 63 68 61 6e 6e 65 6c 44 61 74 61 var channelData
60710 20 3d 20 74 68 69 73 2e 5f 62 75 66 66 65 72 2e = this._buffer.
60720 67 65 74 43 68 61 6e 6e 65 6c 44 61 74 61 28 63 getChannelData(c
60730 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
60740 20 20 20 20 20 20 20 20 76 61 72 20 72 65 74 41 var retA
60750 72 72 61 79 20 3d 20 72 65 74 5b 63 5d 3b 0a 09 rray = ret[c];..
60760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
60770 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d for (var i =
60780 20 30 3b 20 69 20 3c 20 63 68 61 6e 6e 65 6c 44 0; i < channelD
60790 61 74 61 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 ata.length; i++)
607a0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
607b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 41 retA
607c0 72 72 61 79 5b 69 5d 20 3d 20 63 68 61 6e 6e 65 rray[i] = channe
607d0 6c 44 61 74 61 5b 69 5d 3b 0a 09 20 20 20 20 20 lData[i];..
607e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
607f0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
60800 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
60810 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
60820 69 66 20 28 72 65 74 2e 6c 65 6e 67 74 68 20 3d if (ret.length =
60830 3d 3d 20 31 29 20 7b 0a 09 20 20 20 20 20 20 20 == 1) {..
60840 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
60850 72 65 74 5b 30 5d 3b 0a 09 20 20 20 20 20 20 20 ret[0];..
60860 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
60870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
60880 65 74 75 72 6e 20 72 65 74 3b 0a 09 20 20 20 20 eturn ret;..
60890 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
608a0 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 }.. };..
608b0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 75 74 20 /**... * Cut
608c0 61 20 73 75 62 73 65 63 74 69 6f 6e 20 6f 66 20 a subsection of
608d0 74 68 65 20 61 72 72 61 79 20 61 6e 64 20 72 65 the array and re
608e0 74 75 72 6e 20 61 20 62 75 66 66 65 72 20 6f 66 turn a buffer of
608f0 20 74 68 65 0a 09 09 20 2a 20 20 73 75 62 73 65 the... * subse
60900 63 74 69 6f 6e 2e 20 44 6f 65 73 20 6e 6f 74 20 ction. Does not
60910 6d 6f 64 69 66 79 20 74 68 65 20 6f 72 69 67 69 modify the origi
60920 6e 61 6c 20 62 75 66 66 65 72 0a 09 09 20 2a 20 nal buffer... *
60930 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 73 @param {Time} s
60940 74 61 72 74 20 54 68 65 20 74 69 6d 65 20 74 6f tart The time to
60950 20 73 74 61 72 74 20 74 68 65 20 73 6c 69 63 65 start the slice
60960 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 ... * @param {T
60970 69 6d 65 3d 7d 20 65 6e 64 20 54 68 65 20 65 6e ime=} end The en
60980 64 20 74 69 6d 65 20 74 6f 20 73 6c 69 63 65 2e d time to slice.
60990 20 49 66 20 6e 6f 6e 65 20 69 73 20 67 69 76 65 If none is give
609a0 6e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 n... *
609b0 20 20 20 20 20 20 20 20 20 20 20 77 69 6c 6c 20 will
609c0 64 65 66 61 75 6c 74 20 74 6f 20 74 68 65 20 65 default to the e
609d0 6e 64 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 nd of the buffer
609e0 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b ... * @return {
609f0 54 6f 6e 65 2e 42 75 66 66 65 72 7d 20 74 68 69 Tone.Buffer} thi
60a00 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
60a10 65 2e 42 75 66 66 65 72 2e 70 72 6f 74 6f 74 79 e.Buffer.prototy
60a20 70 65 2e 73 6c 69 63 65 20 3d 20 66 75 6e 63 74 pe.slice = funct
60a30 69 6f 6e 20 28 73 74 61 72 74 2c 20 65 6e 64 29 ion (start, end)
60a40 20 7b 0a 09 20 20 20 20 20 20 20 20 65 6e 64 20 {.. end
60a50 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 = this.defaultAr
60a60 67 28 65 6e 64 2c 20 74 68 69 73 2e 64 75 72 61 g(end, this.dura
60a70 74 69 6f 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 tion);..
60a80 76 61 72 20 73 74 61 72 74 53 61 6d 70 6c 65 73 var startSamples
60a90 20 3d 20 4d 61 74 68 2e 66 6c 6f 6f 72 28 74 68 = Math.floor(th
60aa0 69 73 2e 63 6f 6e 74 65 78 74 2e 73 61 6d 70 6c is.context.sampl
60ab0 65 52 61 74 65 20 2a 20 74 68 69 73 2e 74 6f 53 eRate * this.toS
60ac0 65 63 6f 6e 64 73 28 73 74 61 72 74 29 29 3b 0a econds(start));.
60ad0 09 20 20 20 20 20 20 20 20 76 61 72 20 65 6e 64 . var end
60ae0 53 61 6d 70 6c 65 73 20 3d 20 4d 61 74 68 2e 66 Samples = Math.f
60af0 6c 6f 6f 72 28 74 68 69 73 2e 63 6f 6e 74 65 78 loor(this.contex
60b00 74 2e 73 61 6d 70 6c 65 52 61 74 65 20 2a 20 74 t.sampleRate * t
60b10 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 65 6e his.toSeconds(en
60b20 64 29 29 3b 0a 09 20 20 20 20 20 20 20 20 76 61 d));.. va
60b30 72 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d 20 r replacement =
60b40 5b 5d 3b 0a 09 20 20 20 20 20 20 20 20 66 6f 72 [];.. for
60b50 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c (var i = 0; i <
60b60 20 74 68 69 73 2e 6e 75 6d 62 65 72 4f 66 43 68 this.numberOfCh
60b70 61 6e 6e 65 6c 73 3b 20 69 2b 2b 29 20 7b 0a 09 annels; i++) {..
60b80 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6c repl
60b90 61 63 65 6d 65 6e 74 5b 69 5d 20 3d 20 74 68 69 acement[i] = thi
60ba0 73 2e 74 6f 41 72 72 61 79 28 69 29 2e 73 6c 69 s.toArray(i).sli
60bb0 63 65 28 73 74 61 72 74 53 61 6d 70 6c 65 73 2c ce(startSamples,
60bc0 20 65 6e 64 53 61 6d 70 6c 65 73 29 3b 0a 09 20 endSamples);..
60bd0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
60be0 20 20 76 61 72 20 72 65 74 42 75 66 66 65 72 20 var retBuffer
60bf0 3d 20 6e 65 77 20 54 6f 6e 65 2e 42 75 66 66 65 = new Tone.Buffe
60c00 72 28 29 2e 66 72 6f 6d 41 72 72 61 79 28 72 65 r().fromArray(re
60c10 70 6c 61 63 65 6d 65 6e 74 29 3b 0a 09 20 20 20 placement);..
60c20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 42 return retB
60c30 75 66 66 65 72 3b 0a 09 20 20 20 20 7d 3b 0a 09 uffer;.. };..
60c40 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 /**... * Re
60c50 76 65 72 73 65 20 74 68 65 20 62 75 66 66 65 72 verse the buffer
60c60 2e 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
60c70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b ... * @return {
60c80 54 6f 6e 65 2e 42 75 66 66 65 72 7d 20 74 68 69 Tone.Buffer} thi
60c90 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
60ca0 65 2e 42 75 66 66 65 72 2e 70 72 6f 74 6f 74 79 e.Buffer.prototy
60cb0 70 65 2e 5f 72 65 76 65 72 73 65 20 3d 20 66 75 pe._reverse = fu
60cc0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
60cd0 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c 6f if (this.lo
60ce0 61 64 65 64 29 20 7b 0a 09 20 20 20 20 20 20 20 aded) {..
60cf0 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 for (var i
60d00 3d 20 30 3b 20 69 20 3c 20 74 68 69 73 2e 5f 62 = 0; i < this._b
60d10 75 66 66 65 72 2e 6e 75 6d 62 65 72 4f 66 43 68 uffer.numberOfCh
60d20 61 6e 6e 65 6c 73 3b 20 69 2b 2b 29 20 7b 0a 09 annels; i++) {..
60d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
60d40 41 72 72 61 79 2e 70 72 6f 74 6f 74 79 70 65 2e Array.prototype.
60d50 72 65 76 65 72 73 65 2e 63 61 6c 6c 28 74 68 69 reverse.call(thi
60d60 73 2e 5f 62 75 66 66 65 72 2e 67 65 74 43 68 61 s._buffer.getCha
60d70 6e 6e 65 6c 44 61 74 61 28 69 29 29 3b 0a 09 20 nnelData(i));..
60d80 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
60d90 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
60da0 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
60db0 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
60dc0 09 20 2a 20 52 65 76 65 72 73 65 20 74 68 65 20 . * Reverse the
60dd0 62 75 66 66 65 72 2e 0a 09 09 20 2a 20 40 6d 65 buffer.... * @me
60de0 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 42 75 66 66 mberOf Tone.Buff
60df0 65 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b er#... * @type {
60e00 42 6f 6f 6c 65 61 6e 7d 0a 09 09 20 2a 20 40 6e Boolean}... * @n
60e10 61 6d 65 20 72 65 76 65 72 73 65 0a 09 09 20 2a ame reverse... *
60e20 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
60e30 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
60e40 65 2e 42 75 66 66 65 72 2e 70 72 6f 74 6f 74 79 e.Buffer.prototy
60e50 70 65 2c 20 27 72 65 76 65 72 73 65 27 2c 20 7b pe, 'reverse', {
60e60 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 .. get: f
60e70 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
60e80 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
60e90 20 74 68 69 73 2e 5f 72 65 76 65 72 73 65 64 3b this._reversed;
60ea0 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
60eb0 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
60ec0 69 6f 6e 20 28 72 65 76 29 20 7b 0a 09 20 20 20 ion (rev) {..
60ed0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 if (thi
60ee0 73 2e 5f 72 65 76 65 72 73 65 64 20 21 3d 3d 20 s._reversed !==
60ef0 72 65 76 29 20 7b 0a 09 20 20 20 20 20 20 20 20 rev) {..
60f00 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 this._re
60f10 76 65 72 73 65 64 20 3d 20 72 65 76 3b 0a 09 20 versed = rev;..
60f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
60f30 68 69 73 2e 5f 72 65 76 65 72 73 65 28 29 3b 0a his._reverse();.
60f40 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
60f50 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
60f60 29 3b 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f );.. ////////
60f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
60f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
60f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
60fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
60fb0 2f 2f 2f 0a 09 20 20 20 20 2f 2f 20 53 54 41 54 ///.. // STAT
60fc0 49 43 20 4d 45 54 48 4f 44 53 0a 09 20 20 20 20 IC METHODS..
60fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
60fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
60ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
61000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
61010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a 09 20 20 20 ///////////..
61020 20 2f 2f 73 74 61 74 69 63 61 6c 6c 79 20 69 6e //statically in
61030 68 65 72 69 74 73 20 45 6d 69 74 74 65 72 20 6d herits Emitter m
61040 65 74 68 6f 64 73 0a 09 20 20 20 20 54 6f 6e 65 ethods.. Tone
61050 2e 45 6d 69 74 74 65 72 2e 6d 69 78 69 6e 28 54 .Emitter.mixin(T
61060 6f 6e 65 2e 42 75 66 66 65 72 29 3b 0a 09 20 20 one.Buffer);..
61070 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 65 20 /**... * the
61080 73 74 61 74 69 63 20 71 75 65 75 65 20 66 6f 72 static queue for
61090 20 61 6c 6c 20 6f 66 20 74 68 65 20 78 68 72 20 all of the xhr
610a0 72 65 71 75 65 73 74 73 0a 09 09 20 2a 20 20 40 requests... * @
610b0 74 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 20 type {Array}...
610c0 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a * @private... *
610d0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 42 75 66 66 /.. Tone.Buff
610e0 65 72 2e 5f 64 6f 77 6e 6c 6f 61 64 51 75 65 75 er._downloadQueu
610f0 65 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 2f 2a 2a e = [];.. /**
61100 0a 09 09 20 2a 20 20 74 68 65 20 74 6f 74 61 6c ... * the total
61110 20 6e 75 6d 62 65 72 20 6f 66 20 64 6f 77 6e 6c number of downl
61120 6f 61 64 73 0a 09 09 20 2a 20 20 40 74 79 70 65 oads... * @type
61130 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 {Number}... *
61140 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 @private... */..
61150 20 20 20 20 54 6f 6e 65 2e 42 75 66 66 65 72 2e Tone.Buffer.
61160 5f 63 75 72 72 65 6e 74 44 6f 77 6e 6c 6f 61 64 _currentDownload
61170 73 20 3d 20 30 3b 0a 09 20 20 20 20 2f 2a 2a 0a s = 0;.. /**.
61180 09 09 20 2a 20 20 41 20 70 61 74 68 20 77 68 69 .. * A path whi
61190 63 68 20 69 73 20 70 72 65 66 69 78 65 64 20 62 ch is prefixed b
611a0 65 66 6f 72 65 20 65 76 65 72 79 20 75 72 6c 2e efore every url.
611b0 0a 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 53 ... * @type {S
611c0 74 72 69 6e 67 7d 0a 09 09 20 2a 20 20 40 73 74 tring}... * @st
611d0 61 74 69 63 0a 09 09 20 2a 2f 0a 09 20 20 20 20 atic... */..
611e0 54 6f 6e 65 2e 42 75 66 66 65 72 2e 62 61 73 65 Tone.Buffer.base
611f0 55 72 6c 20 3d 20 27 27 3b 0a 09 20 20 20 20 2f Url = '';.. /
61200 2a 2a 0a 09 09 20 2a 20 20 4c 6f 61 64 73 20 61 **... * Loads a
61210 20 75 72 6c 20 75 73 69 6e 67 20 58 4d 4c 48 74 url using XMLHt
61220 74 70 52 65 71 75 65 73 74 2e 0a 09 09 20 2a 20 tpRequest.... *
61230 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e 67 7d @param {String}
61240 20 75 72 6c 0a 09 09 20 2a 20 20 40 70 61 72 61 url... * @para
61250 6d 20 7b 46 75 6e 63 74 69 6f 6e 7d 20 6f 6e 6c m {Function} onl
61260 6f 61 64 0a 09 09 20 2a 20 20 40 70 61 72 61 6d oad... * @param
61270 20 7b 46 75 6e 63 74 69 6f 6e 7d 20 6f 6e 65 72 {Function} oner
61280 72 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ror... * @param
61290 20 7b 46 75 6e 63 74 69 6f 6e 7d 20 6f 6e 70 72 {Function} onpr
612a0 6f 67 72 65 73 73 0a 09 09 20 2a 20 20 40 72 65 ogress... * @re
612b0 74 75 72 6e 20 7b 58 4d 4c 48 74 74 70 52 65 71 turn {XMLHttpReq
612c0 75 65 73 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 uest}... */..
612d0 20 54 6f 6e 65 2e 42 75 66 66 65 72 2e 6c 6f 61 Tone.Buffer.loa
612e0 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 75 72 d = function (ur
612f0 6c 2c 20 6f 6e 6c 6f 61 64 2c 20 6f 6e 65 72 72 l, onload, onerr
61300 6f 72 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f or) {.. /
61310 2f 64 65 66 61 75 6c 74 0a 09 20 20 20 20 20 20 /default..
61320 20 20 6f 6e 6c 6f 61 64 20 3d 20 6f 6e 6c 6f 61 onload = onloa
61330 64 20 7c 7c 20 54 6f 6e 65 2e 6e 6f 4f 70 3b 0a d || Tone.noOp;.
61340 09 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f . functio
61350 6e 20 6f 6e 45 72 72 6f 72 28 65 29 20 7b 0a 09 n onError(e) {..
61360 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
61370 6f 6e 65 72 72 6f 72 29 20 7b 0a 09 20 20 20 20 onerror) {..
61380 20 20 20 20 20 20 20 20 20 20 20 20 6f 6e 65 72 oner
61390 72 6f 72 28 65 29 3b 0a 09 20 20 20 20 20 20 20 ror(e);..
613a0 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
613b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
613c0 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 28 65 hrow new Error(e
613d0 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
613e0 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }.. }..
613f0 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6f function o
61400 6e 50 72 6f 67 72 65 73 73 28 29 20 7b 0a 09 20 nProgress() {..
61410 20 20 20 20 20 20 20 20 20 20 20 2f 2f 63 61 6c //cal
61420 63 75 6c 61 74 65 20 74 68 65 20 70 72 6f 67 72 culate the progr
61430 65 73 73 0a 09 20 20 20 20 20 20 20 20 20 20 20 ess..
61440 20 76 61 72 20 74 6f 74 61 6c 50 72 6f 67 72 65 var totalProgre
61450 73 73 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 ss = 0;..
61460 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 for (var i
61470 3d 20 30 3b 20 69 20 3c 20 54 6f 6e 65 2e 42 75 = 0; i < Tone.Bu
61480 66 66 65 72 2e 5f 64 6f 77 6e 6c 6f 61 64 51 75 ffer._downloadQu
61490 65 75 65 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 eue.length; i++)
614a0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
614b0 20 20 20 20 74 6f 74 61 6c 50 72 6f 67 72 65 73 totalProgres
614c0 73 20 2b 3d 20 54 6f 6e 65 2e 42 75 66 66 65 72 s += Tone.Buffer
614d0 2e 5f 64 6f 77 6e 6c 6f 61 64 51 75 65 75 65 5b ._downloadQueue[
614e0 69 5d 2e 70 72 6f 67 72 65 73 73 3b 0a 09 20 20 i].progress;..
614f0 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
61500 20 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 42 75 Tone.Bu
61510 66 66 65 72 2e 65 6d 69 74 28 27 70 72 6f 67 72 ffer.emit('progr
61520 65 73 73 27 2c 20 74 6f 74 61 6c 50 72 6f 67 72 ess', totalProgr
61530 65 73 73 20 2f 20 54 6f 6e 65 2e 42 75 66 66 65 ess / Tone.Buffe
61540 72 2e 5f 64 6f 77 6e 6c 6f 61 64 51 75 65 75 65 r._downloadQueue
61550 2e 6c 65 6e 67 74 68 29 3b 0a 09 20 20 20 20 20 .length);..
61560 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 76 61 }.. va
61570 72 20 72 65 71 75 65 73 74 20 3d 20 6e 65 77 20 r request = new
61580 58 4d 4c 48 74 74 70 52 65 71 75 65 73 74 28 29 XMLHttpRequest()
61590 3b 0a 09 20 20 20 20 20 20 20 20 72 65 71 75 65 ;.. reque
615a0 73 74 2e 6f 70 65 6e 28 27 47 45 54 27 2c 20 54 st.open('GET', T
615b0 6f 6e 65 2e 42 75 66 66 65 72 2e 62 61 73 65 55 one.Buffer.baseU
615c0 72 6c 20 2b 20 75 72 6c 2c 20 74 72 75 65 29 3b rl + url, true);
615d0 0a 09 20 20 20 20 20 20 20 20 72 65 71 75 65 73 .. reques
615e0 74 2e 72 65 73 70 6f 6e 73 65 54 79 70 65 20 3d t.responseType =
615f0 20 27 61 72 72 61 79 62 75 66 66 65 72 27 3b 0a 'arraybuffer';.
61600 09 20 20 20 20 20 20 20 20 2f 2f 73 74 61 72 74 . //start
61610 20 6f 75 74 20 61 73 20 30 0a 09 20 20 20 20 20 out as 0..
61620 20 20 20 72 65 71 75 65 73 74 2e 70 72 6f 67 72 request.progr
61630 65 73 73 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 ess = 0;..
61640 20 20 54 6f 6e 65 2e 42 75 66 66 65 72 2e 5f 63 Tone.Buffer._c
61650 75 72 72 65 6e 74 44 6f 77 6e 6c 6f 61 64 73 2b urrentDownloads+
61660 2b 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 +;.. Tone
61670 2e 42 75 66 66 65 72 2e 5f 64 6f 77 6e 6c 6f 61 .Buffer._downloa
61680 64 51 75 65 75 65 2e 70 75 73 68 28 72 65 71 75 dQueue.push(requ
61690 65 73 74 29 3b 0a 09 20 20 20 20 20 20 20 20 72 est);.. r
616a0 65 71 75 65 73 74 2e 61 64 64 45 76 65 6e 74 4c equest.addEventL
616b0 69 73 74 65 6e 65 72 28 27 6c 6f 61 64 27 2c 20 istener('load',
616c0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
616d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 if (r
616e0 65 71 75 65 73 74 2e 73 74 61 74 75 73 20 3d 3d equest.status ==
616f0 3d 20 32 30 30 29 20 7b 0a 09 20 20 20 20 20 20 = 200) {..
61700 20 20 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 63 Tone.c
61710 6f 6e 74 65 78 74 2e 64 65 63 6f 64 65 41 75 64 ontext.decodeAud
61720 69 6f 44 61 74 61 28 72 65 71 75 65 73 74 2e 72 ioData(request.r
61730 65 73 70 6f 6e 73 65 2c 20 66 75 6e 63 74 69 6f esponse, functio
61740 6e 20 28 62 75 66 66 29 20 7b 0a 09 20 20 20 20 n (buff) {..
61750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
61760 72 65 71 75 65 73 74 2e 70 72 6f 67 72 65 73 73 request.progress
61770 20 3d 20 31 3b 0a 09 20 20 20 20 20 20 20 20 20 = 1;..
61780 20 20 20 20 20 20 20 20 20 20 20 6f 6e 50 72 6f onPro
61790 67 72 65 73 73 28 29 3b 0a 09 20 20 20 20 20 20 gress();..
617a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6e on
617b0 6c 6f 61 64 28 62 75 66 66 29 3b 0a 09 20 20 20 load(buff);..
617c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
617d0 20 54 6f 6e 65 2e 42 75 66 66 65 72 2e 5f 63 75 Tone.Buffer._cu
617e0 72 72 65 6e 74 44 6f 77 6e 6c 6f 61 64 73 2d 2d rrentDownloads--
617f0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
61800 20 20 20 20 20 20 20 69 66 20 28 54 6f 6e 65 2e if (Tone.
61810 42 75 66 66 65 72 2e 5f 63 75 72 72 65 6e 74 44 Buffer._currentD
61820 6f 77 6e 6c 6f 61 64 73 20 3d 3d 3d 20 30 29 20 ownloads === 0)
61830 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
61840 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 63 6c // cl
61850 65 61 72 20 74 68 65 20 64 6f 77 6e 6c 6f 61 64 ear the download
61860 73 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 s..
61870 20 20 20 20 20 20 20 20 20 20 20 54 6f 6e 65 2e Tone.
61880 42 75 66 66 65 72 2e 5f 64 6f 77 6e 6c 6f 61 64 Buffer._download
61890 51 75 65 75 65 20 3d 20 5b 5d 3b 0a 09 20 20 20 Queue = [];..
618a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
618b0 20 20 20 20 20 2f 2f 65 6d 69 74 20 74 68 65 20 //emit the
618c0 65 76 65 6e 74 20 61 74 20 74 68 65 20 65 6e 64 event at the end
618d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
618e0 20 20 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 42 Tone.B
618f0 75 66 66 65 72 2e 65 6d 69 74 28 27 6c 6f 61 64 uffer.emit('load
61900 27 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ');..
61910 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
61920 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 20 66 }, f
61930 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
61940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
61950 20 20 6f 6e 45 72 72 6f 72 28 27 54 6f 6e 65 2e onError('Tone.
61960 42 75 66 66 65 72 3a 20 63 6f 75 6c 64 20 6e 6f Buffer: could no
61970 74 20 64 65 63 6f 64 65 20 61 75 64 69 6f 20 64 t decode audio d
61980 61 74 61 3a 20 27 20 2b 20 75 72 6c 29 3b 0a 09 ata: ' + url);..
61990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
619a0 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 });..
619b0 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
619c0 20 20 20 20 20 20 20 20 20 20 20 6f 6e 45 72 72 onErr
619d0 6f 72 28 27 54 6f 6e 65 2e 42 75 66 66 65 72 3a or('Tone.Buffer:
619e0 20 63 6f 75 6c 64 20 6e 6f 74 20 6c 6f 63 61 74 could not locat
619f0 65 20 66 69 6c 65 3a 20 27 20 2b 20 75 72 6c 29 e file: ' + url)
61a00 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
61a10 0a 09 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 .. });..
61a20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2e 61 request.a
61a30 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 ddEventListener(
61a40 27 65 72 72 6f 72 27 2c 20 6f 6e 45 72 72 6f 72 'error', onError
61a50 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 71 75 );.. requ
61a60 65 73 74 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 est.addEventList
61a70 65 6e 65 72 28 27 70 72 6f 67 72 65 73 73 27 2c ener('progress',
61a80 20 66 75 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 function (event
61a90 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
61aa0 20 69 66 20 28 65 76 65 6e 74 2e 6c 65 6e 67 74 if (event.lengt
61ab0 68 43 6f 6d 70 75 74 61 62 6c 65 29 20 7b 0a 09 hComputable) {..
61ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
61ad0 2f 2f 6f 6e 6c 79 20 67 6f 20 74 6f 20 39 35 25 //only go to 95%
61ae0 2c 20 74 68 65 20 6c 61 73 74 20 35 25 20 69 73 , the last 5% is
61af0 20 77 68 65 6e 20 74 68 65 20 61 75 64 69 6f 20 when the audio
61b00 69 73 20 64 65 63 6f 64 65 64 0a 09 20 20 20 20 is decoded..
61b10 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 requ
61b20 65 73 74 2e 70 72 6f 67 72 65 73 73 20 3d 20 65 est.progress = e
61b30 76 65 6e 74 2e 6c 6f 61 64 65 64 20 2f 20 65 76 vent.loaded / ev
61b40 65 6e 74 2e 74 6f 74 61 6c 20 2a 20 30 2e 39 35 ent.total * 0.95
61b50 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
61b60 20 20 20 6f 6e 50 72 6f 67 72 65 73 73 28 29 3b onProgress();
61b70 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
61b80 09 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 . });..
61b90 20 20 20 20 20 20 72 65 71 75 65 73 74 2e 73 65 request.se
61ba0 6e 64 28 29 3b 0a 09 20 20 20 20 20 20 20 20 72 nd();.. r
61bb0 65 74 75 72 6e 20 72 65 71 75 65 73 74 3b 0a 09 eturn request;..
61bc0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
61bd0 09 09 20 2a 20 20 53 74 6f 70 20 61 6c 6c 20 6f .. * Stop all o
61be0 66 20 74 68 65 20 64 6f 77 6e 6c 6f 61 64 73 20 f the downloads
61bf0 69 6e 20 70 72 6f 67 72 65 73 73 0a 09 09 20 2a in progress... *
61c00 20 20 40 72 65 74 75 72 6e 20 7b 54 6f 6e 65 2e @return {Tone.
61c10 42 75 66 66 65 72 7d 0a 09 09 20 2a 2f 0a 09 20 Buffer}... */..
61c20 20 20 20 54 6f 6e 65 2e 42 75 66 66 65 72 2e 73 Tone.Buffer.s
61c30 74 6f 70 44 6f 77 6e 6c 6f 61 64 73 20 3d 20 66 topDownloads = f
61c40 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
61c50 20 20 20 20 20 20 54 6f 6e 65 2e 42 75 66 66 65 Tone.Buffe
61c60 72 2e 5f 64 6f 77 6e 6c 6f 61 64 51 75 65 75 65 r._downloadQueue
61c70 2e 66 6f 72 45 61 63 68 28 66 75 6e 63 74 69 6f .forEach(functio
61c80 6e 20 28 72 65 71 75 65 73 74 29 20 7b 0a 09 20 n (request) {..
61c90 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 reque
61ca0 73 74 2e 61 62 6f 72 74 28 29 3b 0a 09 20 20 20 st.abort();..
61cb0 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 });..
61cc0 20 20 54 6f 6e 65 2e 42 75 66 66 65 72 2e 5f 63 Tone.Buffer._c
61cd0 75 72 72 65 6e 74 44 6f 77 6e 6c 6f 61 64 73 20 urrentDownloads
61ce0 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 20 72 65 = 0;.. re
61cf0 74 75 72 6e 20 54 6f 6e 65 2e 42 75 66 66 65 72 turn Tone.Buffer
61d00 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
61d10 2a 2a 0a 09 09 20 2a 20 20 43 68 65 63 6b 73 20 **... * Checks
61d20 61 20 75 72 6c 27 73 20 65 78 74 65 6e 73 69 6f a url's extensio
61d30 6e 20 74 6f 20 73 65 65 20 69 66 20 74 68 65 20 n to see if the
61d40 63 75 72 72 65 6e 74 20 62 72 6f 77 73 65 72 20 current browser
61d50 63 61 6e 20 70 6c 61 79 20 74 68 61 74 20 66 69 can play that fi
61d60 6c 65 20 74 79 70 65 2e 0a 09 09 20 2a 20 20 40 le type.... * @
61d70 70 61 72 61 6d 20 7b 53 74 72 69 6e 67 7d 20 75 param {String} u
61d80 72 6c 20 54 68 65 20 75 72 6c 2f 65 78 74 65 6e rl The url/exten
61d90 73 69 6f 6e 20 74 6f 20 74 65 73 74 0a 09 09 20 sion to test...
61da0 2a 20 20 40 72 65 74 75 72 6e 20 7b 42 6f 6f 6c * @return {Bool
61db0 65 61 6e 7d 20 49 66 20 74 68 65 20 66 69 6c 65 ean} If the file
61dc0 20 65 78 74 65 6e 73 69 6f 6e 20 63 61 6e 20 62 extension can b
61dd0 65 20 70 6c 61 79 65 64 0a 09 09 20 2a 20 20 40 e played... * @
61de0 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 65 78 static... * @ex
61df0 61 6d 70 6c 65 0a 09 09 20 2a 20 54 6f 6e 65 2e ample... * Tone.
61e00 42 75 66 66 65 72 2e 73 75 70 70 6f 72 74 73 54 Buffer.supportsT
61e10 79 70 65 28 22 77 61 76 22 29 3b 20 2f 2f 72 65 ype("wav"); //re
61e20 74 75 72 6e 73 20 74 72 75 65 0a 09 09 20 2a 20 turns true... *
61e30 54 6f 6e 65 2e 42 75 66 66 65 72 2e 73 75 70 70 Tone.Buffer.supp
61e40 6f 72 74 73 54 79 70 65 28 22 70 61 74 68 2f 74 ortsType("path/t
61e50 6f 2f 66 69 6c 65 2e 77 61 76 22 29 3b 20 2f 2f o/file.wav"); //
61e60 72 65 74 75 72 6e 73 20 74 72 75 65 0a 09 09 20 returns true...
61e70 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 42 75 66 */.. Tone.Buf
61e80 66 65 72 2e 73 75 70 70 6f 72 74 73 54 79 70 65 fer.supportsType
61e90 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 75 72 6c = function (url
61ea0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 ) {.. var
61eb0 20 65 78 74 65 6e 73 69 6f 6e 20 3d 20 75 72 6c extension = url
61ec0 2e 73 70 6c 69 74 28 27 2e 27 29 3b 0a 09 20 20 .split('.');..
61ed0 20 20 20 20 20 20 65 78 74 65 6e 73 69 6f 6e 20 extension
61ee0 3d 20 65 78 74 65 6e 73 69 6f 6e 5b 65 78 74 65 = extension[exte
61ef0 6e 73 69 6f 6e 2e 6c 65 6e 67 74 68 20 2d 20 31 nsion.length - 1
61f00 5d 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 ];.. var
61f10 72 65 73 70 6f 6e 73 65 20 3d 20 64 6f 63 75 6d response = docum
61f20 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e ent.createElemen
61f30 74 28 27 61 75 64 69 6f 27 29 2e 63 61 6e 50 6c t('audio').canPl
61f40 61 79 54 79 70 65 28 27 61 75 64 69 6f 2f 27 20 ayType('audio/'
61f50 2b 20 65 78 74 65 6e 73 69 6f 6e 29 3b 0a 09 20 + extension);..
61f60 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 return re
61f70 73 70 6f 6e 73 65 20 21 3d 3d 20 27 27 3b 0a 09 sponse !== '';..
61f80 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 };.. retu
61f90 72 6e 20 54 6f 6e 65 2e 42 75 66 66 65 72 3b 0a rn Tone.Buffer;.
61fa0 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e .});..Module(fun
61fb0 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 ction (Tone) {..
61fc0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 /**... * @c
61fd0 6c 61 73 73 20 41 20 64 61 74 61 20 73 74 72 75 lass A data stru
61fe0 63 74 75 72 65 20 66 6f 72 20 68 6f 6c 64 69 6e cture for holdin
61ff0 67 20 6d 75 6c 74 69 70 6c 65 20 62 75 66 66 65 g multiple buffe
62000 72 73 2e 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 rs.... * ... *
62010 20 40 70 61 72 61 6d 20 20 7b 4f 62 6a 65 63 74 @param {Object
62020 7c 41 72 72 61 79 7d 20 20 20 20 75 72 6c 73 20 |Array} urls
62030 20 20 20 20 20 41 6e 20 6f 62 6a 65 63 74 20 6c An object l
62040 69 74 65 72 61 6c 20 6f 72 20 61 72 72 61 79 0a iteral or array.
62050 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 .. *
62060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
62070 20 20 20 20 20 20 20 20 20 20 6f 66 20 75 72 6c of url
62080 73 20 74 6f 20 6c 6f 61 64 2e 0a 09 09 20 2a 20 s to load.... *
62090 20 40 70 61 72 61 6d 20 20 7b 46 75 6e 63 74 69 @param {Functi
620a0 6f 6e 3d 7d 20 20 63 61 6c 6c 62 61 63 6b 20 20 on=} callback
620b0 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 The callback to
620c0 69 6e 76 6f 6b 65 20 77 68 65 6e 0a 09 09 20 2a invoke when... *
620d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
620e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
620f0 20 74 68 65 20 62 75 66 66 65 72 73 20 61 72 65 the buffers are
62100 20 6c 6f 61 64 65 64 2e 20 0a 09 09 20 2a 20 20 loaded. ... *
62110 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a @extends {Tone}.
62120 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
62130 09 20 2a 20 2f 2f 6c 6f 61 64 20 61 20 77 68 6f . * //load a who
62140 6c 65 20 62 61 6e 6b 20 6f 66 20 70 69 61 6e 6f le bank of piano
62150 20 73 61 6d 70 6c 65 73 0a 09 09 20 2a 20 76 61 samples... * va
62160 72 20 70 69 61 6e 6f 53 61 6d 70 6c 65 73 20 3d r pianoSamples =
62170 20 6e 65 77 20 54 6f 6e 65 2e 42 75 66 66 65 72 new Tone.Buffer
62180 73 28 7b 0a 09 09 20 2a 20 09 22 43 34 22 20 3a s({... * ."C4" :
62190 20 22 70 61 74 68 2f 74 6f 2f 43 34 2e 6d 70 33 "path/to/C4.mp3
621a0 22 0a 09 09 20 2a 20 09 22 43 23 34 22 20 3a 20 "... * ."C#4" :
621b0 22 70 61 74 68 2f 74 6f 2f 43 23 34 2e 6d 70 33 "path/to/C#4.mp3
621c0 22 0a 09 09 20 2a 20 09 22 44 34 22 20 3a 20 22 "... * ."D4" : "
621d0 70 61 74 68 2f 74 6f 2f 44 34 2e 6d 70 33 22 0a path/to/D4.mp3".
621e0 09 09 20 2a 20 09 22 44 23 34 22 20 3a 20 22 70 .. * ."D#4" : "p
621f0 61 74 68 2f 74 6f 2f 44 23 34 2e 6d 70 33 22 0a ath/to/D#4.mp3".
62200 09 09 20 2a 20 09 2e 2e 2e 0a 09 09 20 2a 20 7d .. * ....... * }
62210 2c 20 66 75 6e 63 74 69 6f 6e 28 29 7b 0a 09 09 , function(){...
62220 20 2a 20 09 2f 2f 70 6c 61 79 20 6f 6e 65 20 6f * .//play one o
62230 66 20 74 68 65 20 73 61 6d 70 6c 65 73 20 77 68 f the samples wh
62240 65 6e 20 74 68 65 79 20 61 6c 6c 20 6c 6f 61 64 en they all load
62250 0a 09 09 20 2a 20 09 70 6c 61 79 65 72 2e 62 75 ... * .player.bu
62260 66 66 65 72 20 3d 20 70 69 61 6e 6f 53 61 6d 70 ffer = pianoSamp
62270 6c 65 73 2e 67 65 74 28 22 43 34 22 29 3b 0a 09 les.get("C4");..
62280 09 20 2a 20 09 70 6c 61 79 65 72 2e 73 74 61 72 . * .player.star
62290 74 28 29 3b 0a 09 09 20 2a 20 7d 29 3b 0a 09 09 t();... * });...
622a0 20 2a 20 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 * ... */.. T
622b0 6f 6e 65 2e 42 75 66 66 65 72 73 20 3d 20 66 75 one.Buffers = fu
622c0 6e 63 74 69 6f 6e 20 28 75 72 6c 73 2c 20 6f 6e nction (urls, on
622d0 6c 6f 61 64 2c 20 62 61 73 65 55 72 6c 29 20 7b load, baseUrl) {
622e0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
622f0 09 20 2a 20 20 41 6c 6c 20 6f 66 20 74 68 65 20 . * All of the
62300 62 75 66 66 65 72 73 0a 09 09 09 20 2a 20 20 40 buffers.... * @
62310 74 79 70 65 20 20 7b 4f 62 6a 65 63 74 7d 0a 09 type {Object}..
62320 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
62330 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
62340 68 69 73 2e 5f 62 75 66 66 65 72 73 20 3d 20 7b his._buffers = {
62350 7d 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a };.. /**.
62360 09 09 09 20 2a 20 20 41 20 70 61 74 68 20 77 68 ... * A path wh
62370 69 63 68 20 69 73 20 70 72 65 66 69 78 65 64 20 ich is prefixed
62380 62 65 66 6f 72 65 20 65 76 65 72 79 20 75 72 6c before every url
62390 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 ..... * @type
623a0 7b 53 74 72 69 6e 67 7d 0a 09 09 09 20 2a 2f 0a {String}.... */.
623b0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 61 . this.ba
623c0 73 65 55 72 6c 20 3d 20 74 68 69 73 2e 64 65 66 seUrl = this.def
623d0 61 75 6c 74 41 72 67 28 62 61 73 65 55 72 6c 2c aultArg(baseUrl,
623e0 20 27 27 29 3b 0a 09 20 20 20 20 20 20 20 20 75 '');.. u
623f0 72 6c 73 20 3d 20 74 68 69 73 2e 5f 66 6c 61 74 rls = this._flat
62400 74 65 6e 55 72 6c 73 28 75 72 6c 73 29 3b 0a 09 tenUrls(urls);..
62410 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f this._lo
62420 61 64 69 6e 67 43 6f 75 6e 74 20 3d 20 30 3b 0a adingCount = 0;.
62430 09 20 20 20 20 20 20 20 20 2f 2f 61 64 64 20 65 . //add e
62440 61 63 68 20 6f 6e 65 0a 09 20 20 20 20 20 20 20 ach one..
62450 20 66 6f 72 20 28 76 61 72 20 6b 65 79 20 69 6e for (var key in
62460 20 75 72 6c 73 29 20 7b 0a 09 20 20 20 20 20 20 urls) {..
62470 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f 61 64 this._load
62480 69 6e 67 43 6f 75 6e 74 2b 2b 3b 0a 09 20 20 20 ingCount++;..
62490 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 64 this.ad
624a0 64 28 6b 65 79 2c 20 75 72 6c 73 5b 6b 65 79 5d d(key, urls[key]
624b0 2c 20 74 68 69 73 2e 5f 62 75 66 66 65 72 4c 6f , this._bufferLo
624c0 61 64 65 64 2e 62 69 6e 64 28 74 68 69 73 2c 20 aded.bind(this,
624d0 6f 6e 6c 6f 61 64 29 29 3b 0a 09 20 20 20 20 20 onload));..
624e0 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 }.. };..
624f0 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
62500 6e 65 2e 42 75 66 66 65 72 73 29 3b 0a 09 20 20 ne.Buffers);..
62510 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 72 75 65 /**... * True
62520 20 69 66 20 74 68 65 20 62 75 66 66 65 72 73 20 if the buffers
62530 6f 62 6a 65 63 74 20 68 61 73 20 61 20 62 75 66 object has a buf
62540 66 65 72 20 62 79 20 74 68 61 74 20 6e 61 6d 65 fer by that name
62550 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 .... * @param
62560 7b 53 74 72 69 6e 67 7c 4e 75 6d 62 65 72 7d 20 {String|Number}
62570 20 6e 61 6d 65 20 20 54 68 65 20 6b 65 79 20 6f name The key o
62580 72 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20 0a r index of the .
62590 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 .. *
625a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
625b0 20 20 20 20 20 62 75 66 66 65 72 2e 0a 09 09 20 buffer....
625c0 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 42 6f 6f * @return {Boo
625d0 6c 65 61 6e 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 lean}... */..
625e0 20 54 6f 6e 65 2e 42 75 66 66 65 72 73 2e 70 72 Tone.Buffers.pr
625f0 6f 74 6f 74 79 70 65 2e 68 61 73 20 3d 20 66 75 ototype.has = fu
62600 6e 63 74 69 6f 6e 20 28 6e 61 6d 65 29 20 7b 0a nction (name) {.
62610 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
62620 74 68 69 73 2e 5f 62 75 66 66 65 72 73 2e 68 61 this._buffers.ha
62630 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 6e 61 6d sOwnProperty(nam
62640 65 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 e);.. };..
62650 20 2f 2a 2a 0a 09 09 20 2a 20 20 47 65 74 20 61 /**... * Get a
62660 20 62 75 66 66 65 72 20 62 79 20 6e 61 6d 65 2e buffer by name.
62670 20 49 66 20 61 6e 20 61 72 72 61 79 20 77 61 73 If an array was
62680 20 6c 6f 61 64 65 64 2c 20 0a 09 09 20 2a 20 20 loaded, ... *
62690 74 68 65 6e 20 75 73 65 20 74 68 65 20 61 72 72 then use the arr
626a0 61 79 20 69 6e 64 65 78 2e 0a 09 09 20 2a 20 20 ay index.... *
626b0 40 70 61 72 61 6d 20 20 7b 53 74 72 69 6e 67 7c @param {String|
626c0 4e 75 6d 62 65 72 7d 20 20 6e 61 6d 65 20 20 54 Number} name T
626d0 68 65 20 6b 65 79 20 6f 72 20 69 6e 64 65 78 20 he key or index
626e0 6f 66 20 74 68 65 20 0a 09 09 20 2a 20 20 20 20 of the ... *
626f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
62700 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 buf
62710 66 65 72 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 fer.... * @retu
62720 72 6e 20 20 7b 54 6f 6e 65 2e 42 75 66 66 65 72 rn {Tone.Buffer
62730 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e }... */.. Ton
62740 65 2e 42 75 66 66 65 72 73 2e 70 72 6f 74 6f 74 e.Buffers.protot
62750 79 70 65 2e 67 65 74 20 3d 20 66 75 6e 63 74 69 ype.get = functi
62760 6f 6e 20 28 6e 61 6d 65 29 20 7b 0a 09 20 20 20 on (name) {..
62770 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 68 61 if (this.ha
62780 73 28 6e 61 6d 65 29 29 20 7b 0a 09 20 20 20 20 s(name)) {..
62790 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
627a0 68 69 73 2e 5f 62 75 66 66 65 72 73 5b 6e 61 6d his._buffers[nam
627b0 65 5d 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 e];.. } e
627c0 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
627d0 20 20 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 throw new Err
627e0 6f 72 28 27 54 6f 6e 65 2e 42 75 66 66 65 72 73 or('Tone.Buffers
627f0 3a 20 6e 6f 20 62 75 66 66 65 72 20 6e 61 6d 65 : no buffer name
62800 64 20 27 20 2b 20 6e 61 6d 65 29 3b 0a 09 20 20 d ' + name);..
62810 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a }.. };.
62820 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 41 . /**... * A
62830 20 62 75 66 66 65 72 20 77 61 73 20 6c 6f 61 64 buffer was load
62840 65 64 2e 20 64 65 63 72 65 6d 65 6e 74 20 74 68 ed. decrement th
62850 65 20 63 6f 75 6e 74 65 72 2e 0a 09 09 20 2a 20 e counter.... *
62860 20 40 70 61 72 61 6d 20 20 7b 46 75 6e 63 74 69 @param {Functi
62870 6f 6e 7d 20 20 63 61 6c 6c 62 61 63 6b 20 0a 09 on} callback ..
62880 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
62890 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 42 75 */.. Tone.Bu
628a0 66 66 65 72 73 2e 70 72 6f 74 6f 74 79 70 65 2e ffers.prototype.
628b0 5f 62 75 66 66 65 72 4c 6f 61 64 65 64 20 3d 20 _bufferLoaded =
628c0 66 75 6e 63 74 69 6f 6e 20 28 63 61 6c 6c 62 61 function (callba
628d0 63 6b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 ck) {.. t
628e0 68 69 73 2e 5f 6c 6f 61 64 69 6e 67 43 6f 75 6e his._loadingCoun
628f0 74 2d 2d 3b 0a 09 20 20 20 20 20 20 20 20 69 66 t--;.. if
62900 20 28 74 68 69 73 2e 5f 6c 6f 61 64 69 6e 67 43 (this._loadingC
62910 6f 75 6e 74 20 3d 3d 3d 20 30 20 26 26 20 63 61 ount === 0 && ca
62920 6c 6c 62 61 63 6b 29 20 7b 0a 09 20 20 20 20 20 llback) {..
62930 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 28 callback(
62940 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 this);..
62950 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f }.. };.. /
62960 2a 2a 0a 09 09 20 2a 20 49 66 20 74 68 65 20 62 **... * If the b
62970 75 66 66 65 72 73 20 61 72 65 20 6c 6f 61 64 65 uffers are loade
62980 64 20 6f 72 20 6e 6f 74 0a 09 09 20 2a 20 40 6d d or not... * @m
62990 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 42 75 66 emberOf Tone.Buf
629a0 66 65 72 73 23 0a 09 09 20 2a 20 40 74 79 70 65 fers#... * @type
629b0 20 7b 42 6f 6f 6c 65 61 6e 7d 0a 09 09 20 2a 20 {Boolean}... *
629c0 40 6e 61 6d 65 20 6c 6f 61 64 65 64 0a 09 09 20 @name loaded...
629d0 2a 20 40 72 65 61 64 4f 6e 6c 79 0a 09 09 20 2a * @readOnly... *
629e0 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
629f0 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
62a00 65 2e 42 75 66 66 65 72 73 2e 70 72 6f 74 6f 74 e.Buffers.protot
62a10 79 70 65 2c 20 27 6c 6f 61 64 65 64 27 2c 20 7b ype, 'loaded', {
62a20 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 .. get: f
62a30 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
62a40 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 73 var is
62a50 4c 6f 61 64 65 64 20 3d 20 74 72 75 65 3b 0a 09 Loaded = true;..
62a60 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 for
62a70 28 76 61 72 20 62 75 66 66 4e 61 6d 65 20 69 6e (var buffName in
62a80 20 74 68 69 73 2e 5f 62 75 66 66 65 72 73 29 20 this._buffers)
62a90 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
62aa0 20 20 20 76 61 72 20 62 75 66 66 20 3d 20 74 68 var buff = th
62ab0 69 73 2e 67 65 74 28 62 75 66 66 4e 61 6d 65 29 is.get(buffName)
62ac0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
62ad0 20 20 20 69 73 4c 6f 61 64 65 64 20 3d 20 69 73 isLoaded = is
62ae0 4c 6f 61 64 65 64 20 26 26 20 62 75 66 66 2e 6c Loaded && buff.l
62af0 6f 61 64 65 64 3b 0a 09 20 20 20 20 20 20 20 20 oaded;..
62b00 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
62b10 20 20 20 72 65 74 75 72 6e 20 69 73 4c 6f 61 64 return isLoad
62b20 65 64 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 ed;.. }..
62b30 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
62b40 0a 09 09 20 2a 20 20 41 64 64 20 61 20 62 75 66 ... * Add a buf
62b50 66 65 72 20 62 79 20 6e 61 6d 65 20 61 6e 64 20 fer by name and
62b60 75 72 6c 20 74 6f 20 74 68 65 20 42 75 66 66 65 url to the Buffe
62b70 72 73 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 rs... * @param
62b80 20 7b 53 74 72 69 6e 67 7d 20 20 20 20 6e 61 6d {String} nam
62b90 65 20 20 20 20 20 20 41 20 75 6e 69 71 75 65 20 e A unique
62ba0 6e 61 6d 65 20 74 6f 20 67 69 76 65 0a 09 09 20 name to give...
62bb0 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
62bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
62bd0 20 74 68 65 20 62 75 66 66 65 72 0a 09 09 20 2a the buffer... *
62be0 20 20 40 70 61 72 61 6d 20 20 7b 53 74 72 69 6e @param {Strin
62bf0 67 7c 54 6f 6e 65 2e 42 75 66 66 65 72 7c 41 75 g|Tone.Buffer|Au
62c00 64 69 6f 62 75 66 66 65 72 7d 20 20 75 72 6c 20 diobuffer} url
62c10 20 45 69 74 68 65 72 20 74 68 65 20 75 72 6c 20 Either the url
62c20 6f 66 20 74 68 65 20 62 75 66 65 72 2c 20 0a 09 of the bufer, ..
62c30 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 . *
62c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
62c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
62c60 20 20 20 20 6f 72 20 61 20 62 75 66 66 65 72 20 or a buffer
62c70 77 68 69 63 68 20 77 69 6c 6c 20 62 65 20 61 64 which will be ad
62c80 64 65 64 0a 09 09 20 2a 20 20 20 20 20 20 20 20 ded... *
62c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
62ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
62cb0 20 20 20 20 20 20 20 20 20 77 69 74 68 20 74 68 with th
62cc0 65 20 67 69 76 65 6e 20 6e 61 6d 65 2e 0a 09 09 e given name....
62cd0 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 46 75 6e * @param {Fun
62ce0 63 74 69 6f 6e 3d 7d 20 20 63 61 6c 6c 62 61 63 ction=} callbac
62cf0 6b 20 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 k The callback
62d00 74 6f 20 69 6e 76 6f 6b 65 20 0a 09 09 20 2a 20 to invoke ... *
62d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
62d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
62d30 77 68 65 6e 20 74 68 65 20 75 72 6c 20 69 73 20 when the url is
62d40 6c 6f 61 64 65 64 2e 0a 09 09 20 2a 2f 0a 09 20 loaded.... */..
62d50 20 20 20 54 6f 6e 65 2e 42 75 66 66 65 72 73 2e Tone.Buffers.
62d60 70 72 6f 74 6f 74 79 70 65 2e 61 64 64 20 3d 20 prototype.add =
62d70 66 75 6e 63 74 69 6f 6e 20 28 6e 61 6d 65 2c 20 function (name,
62d80 75 72 6c 2c 20 63 61 6c 6c 62 61 63 6b 29 20 7b url, callback) {
62d90 0a 09 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 .. callba
62da0 63 6b 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c ck = this.defaul
62db0 74 41 72 67 28 63 61 6c 6c 62 61 63 6b 2c 20 54 tArg(callback, T
62dc0 6f 6e 65 2e 6e 6f 4f 70 29 3b 0a 09 20 20 20 20 one.noOp);..
62dd0 20 20 20 20 69 66 20 28 75 72 6c 20 69 6e 73 74 if (url inst
62de0 61 6e 63 65 6f 66 20 54 6f 6e 65 2e 42 75 66 66 anceof Tone.Buff
62df0 65 72 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 er) {..
62e00 20 20 20 74 68 69 73 2e 5f 62 75 66 66 65 72 73 this._buffers
62e10 5b 6e 61 6d 65 5d 20 3d 20 75 72 6c 3b 0a 09 20 [name] = url;..
62e20 20 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 callb
62e30 61 63 6b 28 74 68 69 73 29 3b 0a 09 20 20 20 20 ack(this);..
62e40 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 75 } else if (u
62e50 72 6c 20 69 6e 73 74 61 6e 63 65 6f 66 20 41 75 rl instanceof Au
62e60 64 69 6f 42 75 66 66 65 72 29 20 7b 0a 09 20 20 dioBuffer) {..
62e70 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
62e80 62 75 66 66 65 72 73 5b 6e 61 6d 65 5d 20 3d 20 buffers[name] =
62e90 6e 65 77 20 54 6f 6e 65 2e 42 75 66 66 65 72 28 new Tone.Buffer(
62ea0 75 72 6c 29 3b 0a 09 20 20 20 20 20 20 20 20 20 url);..
62eb0 20 20 20 63 61 6c 6c 62 61 63 6b 28 74 68 69 73 callback(this
62ec0 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c );.. } el
62ed0 73 65 20 69 66 20 28 74 68 69 73 2e 69 73 53 74 se if (this.isSt
62ee0 72 69 6e 67 28 75 72 6c 29 29 20 7b 0a 09 20 20 ring(url)) {..
62ef0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
62f00 62 75 66 66 65 72 73 5b 6e 61 6d 65 5d 20 3d 20 buffers[name] =
62f10 6e 65 77 20 54 6f 6e 65 2e 42 75 66 66 65 72 28 new Tone.Buffer(
62f20 74 68 69 73 2e 62 61 73 65 55 72 6c 20 2b 20 75 this.baseUrl + u
62f30 72 6c 2c 20 63 61 6c 6c 62 61 63 6b 29 3b 0a 09 rl, callback);..
62f40 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
62f50 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
62f60 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
62f70 0a 09 09 20 2a 20 20 46 6c 61 74 74 65 6e 20 61 ... * Flatten a
62f80 6e 20 6f 62 6a 65 63 74 20 69 6e 74 6f 20 61 20 n object into a
62f90 73 69 6e 67 6c 65 20 64 65 70 74 68 20 6f 62 6a single depth obj
62fa0 65 63 74 2e 20 0a 09 09 20 2a 20 20 74 68 61 6e ect. ... * than
62fb0 6b 73 20 74 6f 20 68 74 74 70 73 3a 2f 2f 67 69 ks to https://gi
62fc0 73 74 2e 67 69 74 68 75 62 2e 63 6f 6d 2f 70 65 st.github.com/pe
62fd0 6e 67 75 69 6e 62 6f 79 2f 37 36 32 31 39 37 0a nguinboy/762197.
62fe0 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 20 7b .. * @param {
62ff0 4f 62 6a 65 63 74 7d 20 6f 62 20 09 0a 09 09 20 Object} ob ....
63000 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 4f 62 6a * @return {Obj
63010 65 63 74 7d 20 20 20 20 0a 09 09 20 2a 20 20 40 ect} ... * @
63020 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 private... */..
63030 20 20 20 54 6f 6e 65 2e 42 75 66 66 65 72 73 2e Tone.Buffers.
63040 70 72 6f 74 6f 74 79 70 65 2e 5f 66 6c 61 74 74 prototype._flatt
63050 65 6e 55 72 6c 73 20 3d 20 66 75 6e 63 74 69 6f enUrls = functio
63060 6e 20 28 6f 62 29 20 7b 0a 09 20 20 20 20 20 20 n (ob) {..
63070 20 20 76 61 72 20 74 6f 52 65 74 75 72 6e 20 3d var toReturn =
63080 20 7b 7d 3b 0a 09 20 20 20 20 20 20 20 20 66 6f {};.. fo
63090 72 20 28 76 61 72 20 69 20 69 6e 20 6f 62 29 20 r (var i in ob)
630a0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 {.. i
630b0 66 20 28 21 6f 62 2e 68 61 73 4f 77 6e 50 72 6f f (!ob.hasOwnPro
630c0 70 65 72 74 79 28 69 29 29 0a 09 20 20 20 20 20 perty(i))..
630d0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 conti
630e0 6e 75 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 nue;..
630f0 20 20 69 66 20 28 74 68 69 73 2e 69 73 4f 62 6a if (this.isObj
63100 65 63 74 28 6f 62 5b 69 5d 29 29 20 7b 0a 09 20 ect(ob[i])) {..
63110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 v
63120 61 72 20 66 6c 61 74 4f 62 6a 65 63 74 20 3d 20 ar flatObject =
63130 74 68 69 73 2e 5f 66 6c 61 74 74 65 6e 55 72 6c this._flattenUrl
63140 73 28 6f 62 5b 69 5d 29 3b 0a 09 20 20 20 20 20 s(ob[i]);..
63150 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 for (
63160 76 61 72 20 78 20 69 6e 20 66 6c 61 74 4f 62 6a var x in flatObj
63170 65 63 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ect) {..
63180 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
63190 21 66 6c 61 74 4f 62 6a 65 63 74 2e 68 61 73 4f !flatObject.hasO
631a0 77 6e 50 72 6f 70 65 72 74 79 28 78 29 29 0a 09 wnProperty(x))..
631b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
631c0 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 continue
631d0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
631e0 20 20 20 20 20 20 20 74 6f 52 65 74 75 72 6e 5b toReturn[
631f0 69 20 2b 20 27 2e 27 20 2b 20 78 5d 20 3d 20 66 i + '.' + x] = f
63200 6c 61 74 4f 62 6a 65 63 74 5b 78 5d 3b 0a 09 20 latObject[x];..
63210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
63220 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 .. }
63230 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 else {..
63240 20 20 20 20 20 20 20 20 74 6f 52 65 74 75 72 6e toReturn
63250 5b 69 5d 20 3d 20 6f 62 5b 69 5d 3b 0a 09 20 20 [i] = ob[i];..
63260 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
63270 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
63280 72 65 74 75 72 6e 20 74 6f 52 65 74 75 72 6e 3b return toReturn;
63290 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
632a0 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 *... * Clean up
632b0 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 .... * @return
632c0 20 7b 54 6f 6e 65 2e 42 75 66 66 65 72 73 7d 20 {Tone.Buffers}
632d0 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
632e0 54 6f 6e 65 2e 42 75 66 66 65 72 73 2e 70 72 6f Tone.Buffers.pro
632f0 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d totype.dispose =
63300 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
63310 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 for (var
63320 20 6e 61 6d 65 20 69 6e 20 74 68 69 73 2e 5f 62 name in this._b
63330 75 66 66 65 72 73 29 20 7b 0a 09 20 20 20 20 20 uffers) {..
63340 20 20 20 20 20 20 20 74 68 69 73 2e 5f 62 75 66 this._buf
63350 66 65 72 73 5b 6e 61 6d 65 5d 2e 64 69 73 70 6f fers[name].dispo
63360 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 7d se();.. }
63370 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
63380 62 75 66 66 65 72 73 20 3d 20 6e 75 6c 6c 3b 0a buffers = null;.
63390 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
633a0 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
633b0 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 42 return Tone.B
633c0 75 66 66 65 72 73 3b 0a 09 7d 29 3b 0a 09 4d 6f uffers;..});..Mo
633d0 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 dule(function (T
633e0 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 one) {.. ..
633f0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 62 75 73 65 /**... * buse
63400 73 20 61 72 65 20 61 6e 6f 74 68 65 72 20 77 61 s are another wa
63410 79 20 6f 66 20 72 6f 75 74 69 6e 67 20 61 75 64 y of routing aud
63420 69 6f 0a 09 09 20 2a 0a 09 09 20 2a 20 20 61 75 io... *... * au
63430 67 6d 65 6e 74 73 20 54 6f 6e 65 2e 70 72 6f 74 gments Tone.prot
63440 6f 74 79 70 65 20 74 6f 20 69 6e 63 6c 75 64 65 otype to include
63450 20 73 65 6e 64 20 61 6e 64 20 72 65 63 69 65 76 send and reciev
63460 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 2f 2a 2a e... */.. /**
63470 0a 09 09 20 20 2a 20 20 41 6c 6c 20 6f 66 20 74 ... * All of t
63480 68 65 20 72 6f 75 74 65 73 0a 09 09 20 20 2a 20 he routes... *
63490 20 0a 09 09 20 20 2a 20 20 40 74 79 70 65 20 7b ... * @type {
634a0 4f 62 6a 65 63 74 7d 0a 09 09 20 20 2a 20 20 40 Object}... * @
634b0 73 74 61 74 69 63 0a 09 09 20 20 2a 20 20 40 70 static... * @p
634c0 72 69 76 61 74 65 0a 09 09 20 20 2a 2f 0a 09 20 rivate... */..
634d0 20 20 20 76 61 72 20 42 75 73 65 73 20 3d 20 7b var Buses = {
634e0 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
634f0 20 20 53 65 6e 64 20 74 68 69 73 20 73 69 67 6e Send this sign
63500 61 6c 20 74 6f 20 74 68 65 20 63 68 61 6e 6e 65 al to the channe
63510 6c 20 6e 61 6d 65 2e 20 0a 09 09 20 2a 20 20 40 l name. ... * @
63520 70 61 72 61 6d 20 20 7b 73 74 72 69 6e 67 7d 20 param {string}
63530 63 68 61 6e 6e 65 6c 4e 61 6d 65 20 41 20 6e 61 channelName A na
63540 6d 65 64 20 63 68 61 6e 6e 65 6c 20 74 6f 20 73 med channel to s
63550 65 6e 64 20 74 68 65 20 73 69 67 6e 61 6c 20 74 end the signal t
63560 6f 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 o.... * @param
63570 20 7b 44 65 63 69 62 65 6c 73 7d 20 61 6d 6f 75 {Decibels} amou
63580 6e 74 20 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 nt The amount of
63590 20 74 68 65 20 73 6f 75 72 63 65 20 74 6f 20 73 the source to s
635a0 65 6e 64 20 74 6f 20 74 68 65 20 62 75 73 2e 20 end to the bus.
635b0 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b ... * @return {
635c0 47 61 69 6e 4e 6f 64 65 7d 20 54 68 65 20 67 61 GainNode} The ga
635d0 69 6e 20 6e 6f 64 65 20 77 68 69 63 68 20 63 6f in node which co
635e0 6e 6e 65 63 74 73 20 74 68 69 73 20 6e 6f 64 65 nnects this node
635f0 20 74 6f 20 74 68 65 20 64 65 73 69 72 65 64 20 to the desired
63600 63 68 61 6e 6e 65 6c 2e 20 0a 09 09 20 2a 20 20 channel. ... *
63610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
63620 20 20 20 43 61 6e 20 62 65 20 75 73 65 64 20 74 Can be used t
63630 6f 20 61 64 6a 75 73 74 20 74 68 65 20 6c 65 76 o adjust the lev
63640 65 6c 73 20 6f 66 20 74 68 65 20 73 65 6e 64 2e els of the send.
63650 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
63660 09 09 20 2a 20 73 6f 75 72 63 65 2e 73 65 6e 64 .. * source.send
63670 28 22 72 65 76 65 72 62 22 2c 20 2d 31 32 29 3b ("reverb", -12);
63680 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
63690 2e 70 72 6f 74 6f 74 79 70 65 2e 73 65 6e 64 20 .prototype.send
636a0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 63 68 61 6e = function (chan
636b0 6e 65 6c 4e 61 6d 65 2c 20 61 6d 6f 75 6e 74 29 nelName, amount)
636c0 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
636d0 21 42 75 73 65 73 2e 68 61 73 4f 77 6e 50 72 6f !Buses.hasOwnPro
636e0 70 65 72 74 79 28 63 68 61 6e 6e 65 6c 4e 61 6d perty(channelNam
636f0 65 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 e)) {..
63700 20 20 20 42 75 73 65 73 5b 63 68 61 6e 6e 65 6c Buses[channel
63710 4e 61 6d 65 5d 20 3d 20 74 68 69 73 2e 63 6f 6e Name] = this.con
63720 74 65 78 74 2e 63 72 65 61 74 65 47 61 69 6e 28 text.createGain(
63730 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
63740 20 20 20 20 20 20 20 61 6d 6f 75 6e 74 20 3d 20 amount =
63750 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 this.defaultArg(
63760 61 6d 6f 75 6e 74 2c 20 30 29 3b 0a 09 20 20 20 amount, 0);..
63770 20 20 20 20 20 76 61 72 20 73 65 6e 64 4b 6e 6f var sendKno
63780 62 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 b = new Tone.Gai
63790 6e 28 61 6d 6f 75 6e 74 2c 20 54 6f 6e 65 2e 54 n(amount, Tone.T
637a0 79 70 65 2e 44 65 63 69 62 65 6c 73 29 3b 0a 09 ype.Decibels);..
637b0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75 74 this.out
637c0 70 75 74 2e 63 68 61 69 6e 28 73 65 6e 64 4b 6e put.chain(sendKn
637d0 6f 62 2c 20 42 75 73 65 73 5b 63 68 61 6e 6e 65 ob, Buses[channe
637e0 6c 4e 61 6d 65 5d 29 3b 0a 09 20 20 20 20 20 20 lName]);..
637f0 20 20 72 65 74 75 72 6e 20 73 65 6e 64 4b 6e 6f return sendKno
63800 62 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 b;.. };..
63810 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 63 69 65 76 /**... * Reciev
63820 65 20 74 68 65 20 69 6e 70 75 74 20 66 72 6f 6d e the input from
63830 20 74 68 65 20 64 65 73 69 72 65 64 20 63 68 61 the desired cha
63840 6e 6e 65 6c 4e 61 6d 65 20 74 6f 20 74 68 65 20 nnelName to the
63850 69 6e 70 75 74 0a 09 09 20 2a 0a 09 09 20 2a 20 input... *... *
63860 20 40 70 61 72 61 6d 20 20 7b 73 74 72 69 6e 67 @param {string
63870 7d 20 63 68 61 6e 6e 65 6c 4e 61 6d 65 20 41 20 } channelName A
63880 6e 61 6d 65 64 20 63 68 61 6e 6e 65 6c 20 74 6f named channel to
63890 20 73 65 6e 64 20 74 68 65 20 73 69 67 6e 61 6c send the signal
638a0 20 74 6f 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 to.... * @para
638b0 6d 20 7b 41 75 64 69 6f 4e 6f 64 65 7d 20 5b 69 m {AudioNode} [i
638c0 6e 70 75 74 5d 20 49 66 20 6e 6f 20 69 6e 70 75 nput] If no inpu
638d0 74 20 69 73 20 73 65 6c 65 63 74 65 64 2c 20 74 t is selected, t
638e0 68 65 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 he... *
638f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
63900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
63910 69 6e 70 75 74 20 6f 66 20 74 68 65 20 63 75 72 input of the cur
63920 72 65 6e 74 20 6e 6f 64 65 20 69 73 0a 09 09 20 rent node is...
63930 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
63940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
63950 20 20 20 20 20 20 20 20 20 20 63 68 6f 73 65 6e chosen
63960 2e 20 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e . ... * @return
63970 73 20 7b 54 6f 6e 65 7d 20 74 68 69 73 0a 09 09 s {Tone} this...
63980 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 * @example...
63990 2a 20 72 65 76 65 72 62 45 66 66 65 63 74 2e 72 * reverbEffect.r
639a0 65 63 65 69 76 65 28 22 72 65 76 65 72 62 22 29 eceive("reverb")
639b0 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e ;... */.. Ton
639c0 65 2e 70 72 6f 74 6f 74 79 70 65 2e 72 65 63 65 e.prototype.rece
639d0 69 76 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ive = function (
639e0 63 68 61 6e 6e 65 6c 4e 61 6d 65 2c 20 69 6e 70 channelName, inp
639f0 75 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 69 ut) {.. i
63a00 66 20 28 21 42 75 73 65 73 2e 68 61 73 4f 77 6e f (!Buses.hasOwn
63a10 50 72 6f 70 65 72 74 79 28 63 68 61 6e 6e 65 6c Property(channel
63a20 4e 61 6d 65 29 29 20 7b 0a 09 20 20 20 20 20 20 Name)) {..
63a30 20 20 20 20 20 20 42 75 73 65 73 5b 63 68 61 6e Buses[chan
63a40 6e 65 6c 4e 61 6d 65 5d 20 3d 20 74 68 69 73 2e nelName] = this.
63a50 63 6f 6e 74 65 78 74 2e 63 72 65 61 74 65 47 61 context.createGa
63a60 69 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 20 7d in();.. }
63a70 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
63a80 69 73 2e 69 73 55 6e 64 65 66 28 69 6e 70 75 74 is.isUndef(input
63a90 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 )) {..
63aa0 20 20 69 6e 70 75 74 20 3d 20 74 68 69 73 2e 69 input = this.i
63ab0 6e 70 75 74 3b 0a 09 20 20 20 20 20 20 20 20 7d nput;.. }
63ac0 0a 09 20 20 20 20 20 20 20 20 42 75 73 65 73 5b .. Buses[
63ad0 63 68 61 6e 6e 65 6c 4e 61 6d 65 5d 2e 63 6f 6e channelName].con
63ae0 6e 65 63 74 28 69 6e 70 75 74 29 3b 0a 09 20 20 nect(input);..
63af0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
63b00 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
63b10 2f 2f 72 65 6d 6f 76 65 20 61 6c 6c 20 74 68 65 //remove all the
63b20 20 73 65 6e 64 2f 72 65 63 65 69 76 65 73 20 77 send/receives w
63b30 68 65 6e 20 61 20 6e 65 77 20 61 75 64 69 6f 20 hen a new audio
63b40 63 6f 6e 74 65 78 74 20 69 73 20 70 61 73 73 65 context is passe
63b50 64 20 69 6e 0a 09 20 20 20 20 54 6f 6e 65 2e 5f d in.. Tone._
63b60 69 6e 69 74 41 75 64 69 6f 43 6f 6e 74 65 78 74 initAudioContext
63b70 28 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 (function () {..
63b80 20 20 20 20 20 20 20 20 42 75 73 65 73 20 3d 20 Buses =
63b90 7b 7d 3b 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 {};.. });..
63ba0 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 3b 0a 09 return Tone;..
63bb0 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 });..Module(func
63bc0 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 tion (Tone) {..
63bd0 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 .. /**...
63be0 2a 20 20 40 63 6c 61 73 73 20 54 6f 6e 65 2e 44 * @class Tone.D
63bf0 72 61 77 20 69 73 20 75 73 65 66 75 6c 20 66 6f raw is useful fo
63c00 72 20 73 79 6e 63 68 72 6f 6e 69 7a 69 6e 67 20 r synchronizing
63c10 76 69 73 75 61 6c 73 20 61 6e 64 20 61 75 64 69 visuals and audi
63c20 6f 20 65 76 65 6e 74 73 2e 0a 09 09 20 2a 20 20 o events.... *
63c30 20 20 20 20 20 20 20 43 61 6c 6c 62 61 63 6b 73 Callbacks
63c40 20 66 72 6f 6d 20 54 6f 6e 65 2e 54 72 61 6e 73 from Tone.Trans
63c50 70 6f 72 74 20 6f 72 20 61 6e 79 20 6f 66 20 74 port or any of t
63c60 68 65 20 54 6f 6e 65 2e 45 76 65 6e 74 20 63 6c he Tone.Event cl
63c70 61 73 73 65 73 0a 09 09 20 2a 20 20 20 20 20 20 asses... *
63c80 20 20 20 61 6c 77 61 79 73 20 68 61 70 70 65 6e always happen
63c90 20 5f 62 65 66 6f 72 65 5f 20 74 68 65 20 73 63 _before_ the sc
63ca0 68 65 64 75 6c 65 64 20 74 69 6d 65 20 61 6e 64 heduled time and
63cb0 20 61 72 65 20 6e 6f 74 20 73 79 6e 63 68 72 6f are not synchro
63cc0 6e 69 7a 65 64 0a 09 09 20 2a 20 20 20 20 20 20 nized... *
63cd0 20 20 20 74 6f 20 74 68 65 20 61 6e 69 6d 61 74 to the animat
63ce0 69 6f 6e 20 66 72 61 6d 65 20 73 6f 20 74 68 65 ion frame so the
63cf0 79 20 61 72 65 20 6e 6f 74 20 67 6f 6f 64 20 66 y are not good f
63d00 6f 72 20 74 72 69 67 67 65 72 69 6e 67 20 74 69 or triggering ti
63d10 67 68 74 6c 79 0a 09 09 20 2a 20 20 20 20 20 20 ghtly... *
63d20 20 20 20 73 79 6e 63 68 72 6f 6e 69 7a 65 64 20 synchronized
63d30 76 69 73 75 61 6c 73 20 61 6e 64 20 73 6f 75 6e visuals and soun
63d40 64 2e 20 54 6f 6e 65 2e 44 72 61 77 20 6d 61 6b d. Tone.Draw mak
63d50 65 73 20 69 74 20 65 61 73 79 20 74 6f 20 73 63 es it easy to sc
63d60 68 65 64 75 6c 65 0a 09 09 20 2a 20 20 20 20 20 hedule... *
63d70 20 20 20 20 63 61 6c 6c 62 61 63 6b 73 20 75 73 callbacks us
63d80 69 6e 67 20 74 68 65 20 41 75 64 69 6f 43 6f 6e ing the AudioCon
63d90 74 65 78 74 20 74 69 6d 65 20 61 6e 64 20 75 73 text time and us
63da0 65 73 20 72 65 71 75 65 73 74 41 6e 69 6d 61 74 es requestAnimat
63db0 69 6f 6e 46 72 61 6d 65 2e 0a 09 09 20 2a 20 20 ionFrame.... *
63dc0 20 20 20 20 20 20 20 0a 09 09 20 2a 20 20 40 73 ... * @s
63dd0 69 6e 67 6c 65 74 6f 6e 0a 09 09 20 2a 20 20 40 ingleton... * @
63de0 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 extends {Tone}..
63df0 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 . * @example...
63e00 20 2a 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 * Tone.Transpor
63e10 74 2e 73 63 68 65 64 75 6c 65 28 66 75 6e 63 74 t.schedule(funct
63e20 69 6f 6e 28 74 69 6d 65 29 7b 0a 09 09 20 2a 20 ion(time){... *
63e30 09 2f 2f 75 73 65 20 74 68 65 20 74 69 6d 65 20 .//use the time
63e40 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 63 68 65 argument to sche
63e50 64 75 6c 65 20 61 20 63 61 6c 6c 62 61 63 6b 20 dule a callback
63e60 77 69 74 68 20 54 6f 6e 65 2e 44 72 61 77 0a 09 with Tone.Draw..
63e70 09 20 2a 20 09 54 6f 6e 65 2e 44 72 61 77 2e 73 . * .Tone.Draw.s
63e80 63 68 65 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e chedule(function
63e90 28 29 7b 0a 09 09 20 2a 20 09 09 2f 2f 64 6f 20 (){... * ..//do
63ea0 64 72 61 77 69 6e 67 20 6f 72 20 44 4f 4d 20 6d drawing or DOM m
63eb0 61 6e 69 70 75 6c 61 74 69 6f 6e 20 68 65 72 65 anipulation here
63ec0 0a 09 09 20 2a 20 09 7d 2c 20 74 69 6d 65 29 0a ... * .}, time).
63ed0 09 09 20 2a 20 7d 2c 20 22 2b 30 2e 35 22 29 0a .. * }, "+0.5").
63ee0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
63ef0 44 72 61 77 20 3d 20 66 75 6e 63 74 69 6f 6e 20 Draw = function
63f00 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f 2a () {.. /*
63f10 2a 0a 09 09 09 20 2a 20 20 41 6c 6c 20 6f 66 20 *.... * All of
63f20 74 68 65 20 65 76 65 6e 74 73 2e 0a 09 09 09 20 the events.....
63f30 2a 20 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 2e * @type {Tone.
63f40 54 69 6d 65 6c 69 6e 65 7d 0a 09 09 09 20 2a 20 Timeline}.... *
63f50 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
63f60 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
63f70 65 76 65 6e 74 73 20 3d 20 6e 65 77 20 54 6f 6e events = new Ton
63f80 65 2e 54 69 6d 65 6c 69 6e 65 28 29 3b 0a 09 20 e.Timeline();..
63f90 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
63fa0 20 20 54 68 65 20 64 75 72 61 74 69 6f 6e 20 61 The duration a
63fb0 66 74 65 72 20 77 68 69 63 68 20 65 76 65 6e 74 fter which event
63fc0 73 20 61 72 65 20 6e 6f 74 20 69 6e 76 6f 6b 65 s are not invoke
63fd0 64 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 d..... * @type
63fe0 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 09 20 2a 20 {Number}.... *
63ff0 20 40 64 65 66 61 75 6c 74 20 30 2e 32 35 0a 09 @default 0.25..
64000 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
64010 68 69 73 2e 65 78 70 69 72 61 74 69 6f 6e 20 3d his.expiration =
64020 20 30 2e 32 35 3b 0a 09 20 20 20 20 20 20 20 20 0.25;..
64030 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 61 /**.... * The a
64040 6d 6f 75 6e 74 20 6f 66 20 74 69 6d 65 20 62 65 mount of time be
64050 66 6f 72 65 20 74 68 65 20 73 63 68 65 64 75 6c fore the schedul
64060 65 64 20 74 69 6d 65 20 0a 09 09 09 20 2a 20 20 ed time .... *
64070 74 68 61 74 20 74 68 65 20 63 61 6c 6c 62 61 63 that the callbac
64080 6b 20 63 61 6e 20 62 65 20 69 6e 76 6f 6b 65 64 k can be invoked
64090 2e 20 44 65 66 61 75 6c 74 20 69 73 0a 09 09 09 . Default is....
640a0 20 2a 20 20 68 61 6c 66 20 74 68 65 20 74 69 6d * half the tim
640b0 65 20 6f 66 20 61 6e 20 61 6e 69 6d 61 74 69 6f e of an animatio
640c0 6e 20 66 72 61 6d 65 20 28 30 2e 30 30 38 20 73 n frame (0.008 s
640d0 65 63 6f 6e 64 73 29 2e 0a 09 09 09 20 2a 20 20 econds)..... *
640e0 40 74 79 70 65 20 20 7b 4e 75 6d 62 65 72 7d 0a @type {Number}.
640f0 09 09 09 20 2a 20 20 40 64 65 66 61 75 6c 74 20 ... * @default
64100 30 2e 30 30 38 0a 09 09 09 20 2a 2f 0a 09 20 20 0.008.... */..
64110 20 20 20 20 20 20 74 68 69 73 2e 61 6e 74 69 63 this.antic
64120 69 70 61 74 69 6f 6e 20 3d 20 30 2e 30 30 38 3b ipation = 0.008;
64130 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
64140 09 20 2a 20 20 54 68 65 20 64 72 61 77 20 6c 6f . * The draw lo
64150 6f 70 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 op.... * @type
64160 20 7b 46 75 6e 63 74 69 6f 6e 7d 0a 09 09 09 20 {Function}....
64170 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
64180 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
64190 2e 5f 62 6f 75 6e 64 44 72 61 77 4c 6f 6f 70 20 ._boundDrawLoop
641a0 3d 20 74 68 69 73 2e 5f 64 72 61 77 4c 6f 6f 70 = this._drawLoop
641b0 2e 62 69 6e 64 28 74 68 69 73 29 3b 0a 09 20 20 .bind(this);..
641c0 20 20 20 20 20 20 2f 2f 73 74 61 72 74 20 74 68 //start th
641d0 65 20 6c 6f 6f 70 0a 09 20 20 20 20 20 20 20 20 e loop..
641e0 74 68 69 73 2e 5f 64 72 61 77 4c 6f 6f 70 28 29 this._drawLoop()
641f0 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 ;.. };.. T
64200 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e one.extend(Tone.
64210 44 72 61 77 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a Draw);.. /**.
64220 09 09 20 2a 20 20 53 63 68 65 64 75 6c 65 20 61 .. * Schedule a
64230 20 66 75 6e 63 74 69 6f 6e 20 61 74 20 74 68 65 function at the
64240 20 67 69 76 65 6e 20 74 69 6d 65 20 74 6f 20 62 given time to b
64250 65 20 69 6e 76 6f 6b 65 64 0a 09 09 20 2a 20 20 e invoked... *
64260 6f 6e 20 74 68 65 20 6e 65 61 72 65 73 74 20 61 on the nearest a
64270 6e 69 6d 61 74 69 6f 6e 20 66 72 61 6d 65 2e 0a nimation frame..
64280 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 46 .. * @param {F
64290 75 6e 63 74 69 6f 6e 7d 20 20 63 61 6c 6c 62 61 unction} callba
642a0 63 6b 20 20 43 61 6c 6c 62 61 63 6b 20 69 73 20 ck Callback is
642b0 69 6e 76 6f 6b 65 64 20 61 74 20 74 68 65 20 67 invoked at the g
642c0 69 76 65 6e 20 74 69 6d 65 2e 0a 09 09 20 2a 20 iven time.... *
642d0 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 @param {Time}
642e0 20 20 20 74 69 6d 65 20 20 20 20 20 20 54 68 65 time The
642f0 20 74 69 6d 65 20 72 65 6c 61 74 69 76 65 20 74 time relative t
64300 6f 20 74 68 65 20 41 75 64 69 6f 43 6f 6e 74 65 o the AudioConte
64310 78 74 20 74 69 6d 65 0a 09 09 20 2a 20 20 20 20 xt time... *
64320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
64330 20 20 20 20 20 20 20 20 20 20 74 6f 20 69 6e 76 to inv
64340 6f 6b 65 20 74 68 65 20 63 61 6c 6c 62 61 63 6b oke the callback
64350 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 .... * @return
64360 20 7b 54 6f 6e 65 2e 44 72 61 77 7d 20 20 20 20 {Tone.Draw}
64370 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
64380 54 6f 6e 65 2e 44 72 61 77 2e 70 72 6f 74 6f 74 Tone.Draw.protot
64390 79 70 65 2e 73 63 68 65 64 75 6c 65 20 3d 20 66 ype.schedule = f
643a0 75 6e 63 74 69 6f 6e 20 28 63 61 6c 6c 62 61 63 unction (callbac
643b0 6b 2c 20 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 k, time) {..
643c0 20 20 20 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 this._events
643d0 2e 61 64 64 28 7b 0a 09 20 20 20 20 20 20 20 20 .add({..
643e0 20 20 20 20 63 61 6c 6c 62 61 63 6b 3a 20 63 61 callback: ca
643f0 6c 6c 62 61 63 6b 2c 0a 09 20 20 20 20 20 20 20 llback,..
64400 20 20 20 20 20 74 69 6d 65 3a 20 74 68 69 73 2e time: this.
64410 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 29 0a toSeconds(time).
64420 09 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 . });..
64430 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
64440 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
64450 2f 2a 2a 0a 09 09 20 2a 20 20 43 61 6e 63 65 6c /**... * Cancel
64460 20 65 76 65 6e 74 73 20 73 63 68 65 64 75 6c 65 events schedule
64470 64 20 61 66 74 65 72 20 74 68 65 20 67 69 76 65 d after the give
64480 6e 20 74 69 6d 65 0a 09 09 20 2a 20 20 40 70 61 n time... * @pa
64490 72 61 6d 20 20 7b 54 69 6d 65 3d 7d 20 20 61 66 ram {Time=} af
644a0 74 65 72 20 20 54 69 6d 65 20 61 66 74 65 72 20 ter Time after
644b0 77 68 69 63 68 20 73 63 68 65 64 75 6c 65 64 20 which scheduled
644c0 65 76 65 6e 74 73 20 77 69 6c 6c 20 0a 09 09 20 events will ...
644d0 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
644e0 20 20 20 20 20 20 20 20 20 20 20 62 65 20 72 65 be re
644f0 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 73 moved from the s
64500 63 68 65 64 75 6c 69 6e 67 20 74 69 6d 65 6c 69 cheduling timeli
64510 6e 65 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 ne.... * @retur
64520 6e 20 20 7b 54 6f 6e 65 2e 44 72 61 77 7d 20 20 n {Tone.Draw}
64530 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
64540 54 6f 6e 65 2e 44 72 61 77 2e 70 72 6f 74 6f 74 Tone.Draw.protot
64550 79 70 65 2e 63 61 6e 63 65 6c 20 3d 20 66 75 6e ype.cancel = fun
64560 63 74 69 6f 6e 20 28 61 66 74 65 72 29 20 7b 0a ction (after) {.
64570 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 65 . this._e
64580 76 65 6e 74 73 2e 63 61 6e 63 65 6c 28 74 68 69 vents.cancel(thi
64590 73 2e 74 6f 53 65 63 6f 6e 64 73 28 61 66 74 65 s.toSeconds(afte
645a0 72 29 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 r));.. re
645b0 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 turn this;..
645c0 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
645d0 20 20 54 68 65 20 64 72 61 77 20 6c 6f 6f 70 0a The draw loop.
645e0 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
645f0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 44 . */.. Tone.D
64600 72 61 77 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 64 raw.prototype._d
64610 72 61 77 4c 6f 6f 70 20 3d 20 66 75 6e 63 74 69 rawLoop = functi
64620 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
64630 20 72 65 71 75 65 73 74 41 6e 69 6d 61 74 69 6f requestAnimatio
64640 6e 46 72 61 6d 65 28 74 68 69 73 2e 5f 62 6f 75 nFrame(this._bou
64650 6e 64 44 72 61 77 4c 6f 6f 70 29 3b 0a 09 20 20 ndDrawLoop);..
64660 20 20 20 20 20 20 76 61 72 20 6e 6f 77 20 3d 20 var now =
64670 54 6f 6e 65 2e 6e 6f 77 28 29 3b 0a 09 20 20 20 Tone.now();..
64680 20 20 20 20 20 77 68 69 6c 65 20 28 74 68 69 73 while (this
64690 2e 5f 65 76 65 6e 74 73 2e 6c 65 6e 67 74 68 20 ._events.length
646a0 26 26 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 2e && this._events.
646b0 70 65 65 6b 28 29 2e 74 69 6d 65 20 2d 20 74 68 peek().time - th
646c0 69 73 2e 61 6e 74 69 63 69 70 61 74 69 6f 6e 20 is.anticipation
646d0 3c 3d 20 6e 6f 77 29 20 7b 0a 09 20 20 20 20 20 <= now) {..
646e0 20 20 20 20 20 20 20 76 61 72 20 65 76 65 6e 74 var event
646f0 20 3d 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 2e = this._events.
64700 73 68 69 66 74 28 29 3b 0a 09 20 20 20 20 20 20 shift();..
64710 20 20 20 20 20 20 69 66 20 28 6e 6f 77 20 2d 20 if (now -
64720 65 76 65 6e 74 2e 74 69 6d 65 20 3c 3d 20 74 68 event.time <= th
64730 69 73 2e 65 78 70 69 72 61 74 69 6f 6e 29 20 7b is.expiration) {
64740 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
64750 20 20 65 76 65 6e 74 2e 63 61 6c 6c 62 61 63 6b event.callback
64760 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ();..
64770 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 }.. }..
64780 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f 6d 61 6b };.. //mak
64790 65 20 61 20 73 69 6e 67 6c 65 74 6f 6e 0a 09 20 e a singleton..
647a0 20 20 20 54 6f 6e 65 2e 44 72 61 77 20 3d 20 6e Tone.Draw = n
647b0 65 77 20 54 6f 6e 65 2e 44 72 61 77 28 29 3b 0a ew Tone.Draw();.
647c0 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 . return Tone
647d0 2e 44 72 61 77 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 .Draw;..});..Mod
647e0 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f ule(function (To
647f0 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 ne) {.. ..
64800 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 /**... * @clas
64810 73 20 20 42 6f 74 68 20 54 6f 6e 65 2e 50 61 6e s Both Tone.Pan
64820 6e 65 72 33 44 20 61 6e 64 20 54 6f 6e 65 2e 4c ner3D and Tone.L
64830 69 73 74 65 6e 65 72 20 68 61 76 65 20 61 20 70 istener have a p
64840 6f 73 69 74 69 6f 6e 20 69 6e 20 33 44 20 73 70 osition in 3D sp
64850 61 63 65 20 0a 09 09 20 2a 20 20 20 20 20 20 20 ace ... *
64860 20 20 20 75 73 69 6e 67 20 61 20 72 69 67 68 74 using a right
64870 2d 68 61 6e 64 65 64 20 63 61 72 74 65 73 69 61 -handed cartesia
64880 6e 20 63 6f 6f 72 64 69 6e 61 74 65 20 73 79 73 n coordinate sys
64890 74 65 6d 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 tem. ... *
648a0 20 20 20 20 54 68 65 20 75 6e 69 74 73 20 75 73 The units us
648b0 65 64 20 69 6e 20 74 68 65 20 63 6f 6f 72 64 69 ed in the coordi
648c0 6e 61 74 65 20 73 79 73 74 65 6d 20 61 72 65 20 nate system are
648d0 6e 6f 74 20 64 65 66 69 6e 65 64 3b 20 0a 09 09 not defined; ...
648e0 20 2a 20 20 20 20 20 20 20 20 20 20 74 68 65 73 * thes
648f0 65 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 61 72 e coordinates ar
64900 65 20 69 6e 64 65 70 65 6e 64 65 6e 74 2f 69 6e e independent/in
64910 76 61 72 69 61 6e 74 20 6f 66 20 61 6e 79 20 70 variant of any p
64920 61 72 74 69 63 75 6c 61 72 20 0a 09 09 20 2a 20 articular ... *
64930 20 20 20 20 20 20 20 20 20 75 6e 69 74 73 20 73 units s
64940 75 63 68 20 61 73 20 6d 65 74 65 72 73 20 6f 72 uch as meters or
64950 20 66 65 65 74 2e 20 54 6f 6e 65 2e 50 61 6e 6e feet. Tone.Pann
64960 65 72 33 44 20 6f 62 6a 65 63 74 73 20 68 61 76 er3D objects hav
64970 65 20 61 6e 20 66 6f 72 77 61 72 64 20 0a 09 09 e an forward ...
64980 20 2a 20 20 20 20 20 20 20 20 20 20 76 65 63 74 * vect
64990 6f 72 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 or representing
649a0 74 68 65 20 64 69 72 65 63 74 69 6f 6e 20 74 68 the direction th
649b0 65 20 73 6f 75 6e 64 20 69 73 20 70 72 6f 6a 65 e sound is proje
649c0 63 74 69 6e 67 2e 20 41 64 64 69 74 69 6f 6e 61 cting. Additiona
649d0 6c 6c 79 2c 20 0a 09 09 20 2a 20 20 20 20 20 20 lly, ... *
649e0 20 20 20 20 74 68 65 79 20 68 61 76 65 20 61 20 they have a
649f0 73 6f 75 6e 64 20 63 6f 6e 65 20 72 65 70 72 65 sound cone repre
64a00 73 65 6e 74 69 6e 67 20 68 6f 77 20 64 69 72 65 senting how dire
64a10 63 74 69 6f 6e 61 6c 20 74 68 65 20 73 6f 75 6e ctional the soun
64a20 64 20 69 73 2e 20 0a 09 09 20 2a 20 20 20 20 20 d is. ... *
64a30 20 20 20 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 For example
64a40 2c 20 74 68 65 20 73 6f 75 6e 64 20 63 6f 75 6c , the sound coul
64a50 64 20 62 65 20 6f 6d 6e 69 64 69 72 65 63 74 69 d be omnidirecti
64a60 6f 6e 61 6c 2c 20 69 6e 20 77 68 69 63 68 20 63 onal, in which c
64a70 61 73 65 20 69 74 20 77 6f 75 6c 64 20 0a 09 09 ase it would ...
64a80 20 2a 20 20 20 20 20 20 20 20 20 20 62 65 20 68 * be h
64a90 65 61 72 64 20 61 6e 79 77 68 65 72 65 20 72 65 eard anywhere re
64aa0 67 61 72 64 6c 65 73 73 20 6f 66 20 69 74 73 20 gardless of its
64ab0 66 6f 72 77 61 72 64 2c 20 6f 72 20 69 74 20 63 forward, or it c
64ac0 61 6e 20 62 65 20 6d 6f 72 65 20 64 69 72 65 63 an be more direc
64ad0 74 69 6f 6e 61 6c 20 0a 09 09 20 2a 20 20 20 20 tional ... *
64ae0 20 20 20 20 20 20 61 6e 64 20 68 65 61 72 64 20 and heard
64af0 6f 6e 6c 79 20 69 66 20 69 74 20 69 73 20 66 61 only if it is fa
64b00 63 69 6e 67 20 74 68 65 20 6c 69 73 74 65 6e 65 cing the listene
64b10 72 2e 20 54 6f 6e 65 2e 4c 69 73 74 65 6e 65 72 r. Tone.Listener
64b20 20 6f 62 6a 65 63 74 73 20 0a 09 09 20 2a 20 20 objects ... *
64b30 20 20 20 20 20 20 20 20 28 72 65 70 72 65 73 65 (represe
64b40 6e 74 69 6e 67 20 61 20 70 65 72 73 6f 6e 27 73 nting a person's
64b50 20 65 61 72 73 29 20 68 61 76 65 20 61 6e 20 66 ears) have an f
64b60 6f 72 77 61 72 64 20 61 6e 64 20 75 70 20 76 65 orward and up ve
64b70 63 74 6f 72 20 0a 09 09 20 2a 20 20 20 20 20 20 ctor ... *
64b80 20 20 20 20 72 65 70 72 65 73 65 6e 74 69 6e 67 representing
64b90 20 69 6e 20 77 68 69 63 68 20 64 69 72 65 63 74 in which direct
64ba0 69 6f 6e 20 74 68 65 20 70 65 72 73 6f 6e 20 69 ion the person i
64bb0 73 20 66 61 63 69 6e 67 2e 20 42 65 63 61 75 73 s facing. Becaus
64bc0 65 20 62 6f 74 68 20 74 68 65 20 0a 09 09 20 2a e both the ... *
64bd0 20 20 20 20 20 20 20 20 20 20 73 6f 75 72 63 65 source
64be0 20 73 74 72 65 61 6d 20 61 6e 64 20 74 68 65 20 stream and the
64bf0 6c 69 73 74 65 6e 65 72 20 63 61 6e 20 62 65 20 listener can be
64c00 6d 6f 76 69 6e 67 2c 20 74 68 65 79 20 62 6f 74 moving, they bot
64c10 68 20 68 61 76 65 20 61 20 76 65 6c 6f 63 69 74 h have a velocit
64c20 79 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 y ... *
64c30 20 76 65 63 74 6f 72 20 72 65 70 72 65 73 65 6e vector represen
64c40 74 69 6e 67 20 62 6f 74 68 20 74 68 65 20 73 70 ting both the sp
64c50 65 65 64 20 61 6e 64 20 64 69 72 65 63 74 69 6f eed and directio
64c60 6e 20 6f 66 20 6d 6f 76 65 6d 65 6e 74 2e 20 54 n of movement. T
64c70 61 6b 65 6e 20 74 6f 67 65 74 68 65 72 2c 20 0a aken together, .
64c80 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 74 68 .. * th
64c90 65 73 65 20 74 77 6f 20 76 65 6c 6f 63 69 74 69 ese two velociti
64ca0 65 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 es can be used t
64cb0 6f 20 67 65 6e 65 72 61 74 65 20 61 20 64 6f 70 o generate a dop
64cc0 70 6c 65 72 20 73 68 69 66 74 20 65 66 66 65 63 pler shift effec
64cd0 74 20 77 68 69 63 68 20 63 68 61 6e 67 65 73 20 t which changes
64ce0 74 68 65 20 70 69 74 63 68 2e 0a 09 09 20 2a 20 the pitch.... *
64cf0 20 20 20 20 20 20 20 20 20 3c 62 72 3e 3c 62 72 <br><br
64d00 3e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 >... *
64d10 4e 6f 74 65 3a 20 74 68 65 20 70 6f 73 69 74 69 Note: the positi
64d20 6f 6e 20 6f 66 20 74 68 65 20 4c 69 73 74 65 6e on of the Listen
64d30 65 72 20 77 69 6c 6c 20 68 61 76 65 20 6e 6f 20 er will have no
64d40 65 66 66 65 63 74 20 6f 6e 20 6e 6f 64 65 73 20 effect on nodes
64d50 6e 6f 74 20 63 6f 6e 6e 65 63 74 65 64 20 74 6f not connected to
64d60 20 61 20 54 6f 6e 65 2e 50 61 6e 6e 65 72 33 44 a Tone.Panner3D
64d70 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 63 ... * ... * @c
64d80 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 onstructor... *
64d90 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 7d @extends {Tone}
64da0 0a 09 09 20 2a 20 20 40 73 69 6e 67 6c 65 74 6f ... * @singleto
64db0 6e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b n... * @param {
64dc0 4e 75 6d 62 65 72 7d 20 70 6f 73 69 74 69 6f 6e Number} position
64dd0 58 20 54 68 65 20 69 6e 69 74 69 61 6c 20 78 20 X The initial x
64de0 70 6f 73 69 74 69 6f 6e 2e 0a 09 09 20 2a 20 20 position.... *
64df0 40 70 61 72 61 6d 20 7b 4e 75 6d 62 65 72 7d 20 @param {Number}
64e00 70 6f 73 69 74 69 6f 6e 59 20 54 68 65 20 69 6e positionY The in
64e10 69 74 69 61 6c 20 79 20 70 6f 73 69 74 69 6f 6e itial y position
64e20 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b .... * @param {
64e30 4e 75 6d 62 65 72 7d 20 70 6f 73 69 74 69 6f 6e Number} position
64e40 5a 20 54 68 65 20 69 6e 69 74 69 61 6c 20 7a 20 Z The initial z
64e50 70 6f 73 69 74 69 6f 6e 2e 0a 09 09 20 2a 2f 0a position.... */.
64e60 09 20 20 20 20 54 6f 6e 65 2e 4c 69 73 74 65 6e . Tone.Listen
64e70 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 er = function ()
64e80 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
64e90 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f options = this.o
64ea0 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 ptionsObject(arg
64eb0 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 uments, [..
64ec0 20 20 20 20 20 20 20 27 70 6f 73 69 74 69 6f 6e 'position
64ed0 58 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 X',..
64ee0 20 27 70 6f 73 69 74 69 6f 6e 59 27 2c 0a 09 20 'positionY',..
64ef0 20 20 20 20 20 20 20 20 20 20 20 27 70 6f 73 69 'posi
64f00 74 69 6f 6e 5a 27 0a 09 20 20 20 20 20 20 20 20 tionZ'..
64f10 5d 2c 20 4c 69 73 74 65 6e 65 72 43 6f 6e 73 74 ], ListenerConst
64f20 72 75 63 74 6f 72 2e 64 65 66 61 75 6c 74 73 29 ructor.defaults)
64f30 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
64f40 09 09 20 2a 20 20 54 68 65 20 6c 69 73 74 65 6e .. * The listen
64f50 65 72 20 6e 6f 64 65 0a 09 09 09 20 2a 20 20 40 er node.... * @
64f60 74 79 70 65 20 7b 41 75 64 69 6f 4c 69 73 74 65 type {AudioListe
64f70 6e 65 72 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 ner}.... * @pri
64f80 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
64f90 20 20 20 20 20 74 68 69 73 2e 5f 6c 69 73 74 65 this._liste
64fa0 6e 65 72 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65 ner = this.conte
64fb0 78 74 2e 6c 69 73 74 65 6e 65 72 3b 0a 09 20 20 xt.listener;..
64fc0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
64fd0 20 48 6f 6c 64 73 20 74 68 65 20 63 75 72 72 65 Holds the curre
64fe0 6e 74 20 66 6f 72 77 61 72 64 20 6f 72 69 65 6e nt forward orien
64ff0 74 61 74 69 6f 6e 0a 09 09 09 20 2a 20 20 40 74 tation.... * @t
65000 79 70 65 20 20 7b 41 72 72 61 79 7d 0a 09 09 09 ype {Array}....
65010 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
65020 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
65030 73 2e 5f 6f 72 69 65 6e 74 61 74 69 6f 6e 20 3d s._orientation =
65040 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 [..
65050 6f 70 74 69 6f 6e 73 2e 66 6f 72 77 61 72 64 58 options.forwardX
65060 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 6f ,.. o
65070 70 74 69 6f 6e 73 2e 66 6f 72 77 61 72 64 59 2c ptions.forwardY,
65080 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 .. op
65090 74 69 6f 6e 73 2e 66 6f 72 77 61 72 64 5a 2c 0a tions.forwardZ,.
650a0 09 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 74 . opt
650b0 69 6f 6e 73 2e 75 70 58 2c 0a 09 20 20 20 20 20 ions.upX,..
650c0 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 2e 75 options.u
650d0 70 59 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 pY,..
650e0 20 6f 70 74 69 6f 6e 73 2e 75 70 5a 0a 09 20 20 options.upZ..
650f0 20 20 20 20 20 20 5d 3b 0a 09 20 20 20 20 20 20 ];..
65100 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 48 6f 6c /**.... * Hol
65110 64 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 ds the current p
65120 6f 73 69 74 69 6f 6e 0a 09 09 09 20 2a 20 20 40 osition.... * @
65130 74 79 70 65 20 20 7b 41 72 72 61 79 7d 0a 09 09 type {Array}...
65140 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
65150 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
65160 69 73 2e 5f 70 6f 73 69 74 69 6f 6e 20 3d 20 5b is._position = [
65170 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 .. op
65180 74 69 6f 6e 73 2e 70 6f 73 69 74 69 6f 6e 58 2c tions.positionX,
65190 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 .. op
651a0 74 69 6f 6e 73 2e 70 6f 73 69 74 69 6f 6e 59 2c tions.positionY,
651b0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 .. op
651c0 74 69 6f 6e 73 2e 70 6f 73 69 74 69 6f 6e 5a 0a tions.positionZ.
651d0 09 20 20 20 20 20 20 20 20 5d 3b 0a 09 20 20 20 . ];..
651e0 20 20 20 20 20 2f 2f 20 73 65 74 20 74 68 65 20 // set the
651f0 64 65 66 61 75 6c 74 20 70 6f 73 69 74 69 6f 6e default position
65200 2f 66 6f 72 77 61 72 64 0a 09 20 20 20 20 20 20 /forward..
65210 20 20 74 68 69 73 2e 66 6f 72 77 61 72 64 58 20 this.forwardX
65220 3d 20 6f 70 74 69 6f 6e 73 2e 66 6f 72 77 61 72 = options.forwar
65230 64 58 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 dX;.. thi
65240 73 2e 66 6f 72 77 61 72 64 59 20 3d 20 6f 70 74 s.forwardY = opt
65250 69 6f 6e 73 2e 66 6f 72 77 61 72 64 59 3b 0a 09 ions.forwardY;..
65260 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 6f 72 this.for
65270 77 61 72 64 5a 20 3d 20 6f 70 74 69 6f 6e 73 2e wardZ = options.
65280 66 6f 72 77 61 72 64 5a 3b 0a 09 20 20 20 20 20 forwardZ;..
65290 20 20 20 74 68 69 73 2e 75 70 58 20 3d 20 6f 70 this.upX = op
652a0 74 69 6f 6e 73 2e 75 70 58 3b 0a 09 20 20 20 20 tions.upX;..
652b0 20 20 20 20 74 68 69 73 2e 75 70 59 20 3d 20 6f this.upY = o
652c0 70 74 69 6f 6e 73 2e 75 70 59 3b 0a 09 20 20 20 ptions.upY;..
652d0 20 20 20 20 20 74 68 69 73 2e 75 70 5a 20 3d 20 this.upZ =
652e0 6f 70 74 69 6f 6e 73 2e 75 70 5a 3b 0a 09 20 20 options.upZ;..
652f0 20 20 20 20 20 20 74 68 69 73 2e 70 6f 73 69 74 this.posit
65300 69 6f 6e 58 20 3d 20 6f 70 74 69 6f 6e 73 2e 70 ionX = options.p
65310 6f 73 69 74 69 6f 6e 58 3b 0a 09 20 20 20 20 20 ositionX;..
65320 20 20 20 74 68 69 73 2e 70 6f 73 69 74 69 6f 6e this.position
65330 59 20 3d 20 6f 70 74 69 6f 6e 73 2e 70 6f 73 69 Y = options.posi
65340 74 69 6f 6e 59 3b 0a 09 20 20 20 20 20 20 20 20 tionY;..
65350 74 68 69 73 2e 70 6f 73 69 74 69 6f 6e 5a 20 3d this.positionZ =
65360 20 6f 70 74 69 6f 6e 73 2e 70 6f 73 69 74 69 6f options.positio
65370 6e 5a 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 nZ;.. };..
65380 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e Tone.extend(Ton
65390 65 2e 4c 69 73 74 65 6e 65 72 29 3b 0a 09 20 20 e.Listener);..
653a0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 65 20 /**... * the
653b0 64 65 66 61 75 6c 74 20 70 61 72 61 6d 65 74 65 default paramete
653c0 72 73 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 rs... * @static
653d0 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 ... * @const...
653e0 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 * @type {Objec
653f0 74 7d 0a 09 09 20 2a 20 20 44 65 66 61 75 6c 74 t}... * Default
65400 73 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 s according to t
65410 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e he specification
65420 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
65430 2e 4c 69 73 74 65 6e 65 72 2e 64 65 66 61 75 6c .Listener.defaul
65440 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 ts = {..
65450 27 70 6f 73 69 74 69 6f 6e 58 27 3a 20 30 2c 0a 'positionX': 0,.
65460 09 20 20 20 20 20 20 20 20 27 70 6f 73 69 74 69 . 'positi
65470 6f 6e 59 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 onY': 0,..
65480 20 20 27 70 6f 73 69 74 69 6f 6e 5a 27 3a 20 30 'positionZ': 0
65490 2c 0a 09 20 20 20 20 20 20 20 20 27 66 6f 72 77 ,.. 'forw
654a0 61 72 64 58 27 3a 20 30 2c 0a 09 20 20 20 20 20 ardX': 0,..
654b0 20 20 20 27 66 6f 72 77 61 72 64 59 27 3a 20 30 'forwardY': 0
654c0 2c 0a 09 20 20 20 20 20 20 20 20 27 66 6f 72 77 ,.. 'forw
654d0 61 72 64 5a 27 3a 20 31 2c 0a 09 20 20 20 20 20 ardZ': 1,..
654e0 20 20 20 27 75 70 58 27 3a 20 30 2c 0a 09 20 20 'upX': 0,..
654f0 20 20 20 20 20 20 27 75 70 59 27 3a 20 31 2c 0a 'upY': 1,.
65500 09 20 20 20 20 20 20 20 20 27 75 70 5a 27 3a 20 . 'upZ':
65510 30 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 0.. };.. /
65520 2a 2a 0a 09 09 20 2a 20 54 68 65 20 72 61 6d 70 **... * The ramp
65530 20 74 69 6d 65 20 77 68 69 63 68 20 69 73 20 61 time which is a
65540 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 73 65 pplied to the se
65550 74 54 61 72 67 65 74 41 74 54 69 6d 65 0a 09 09 tTargetAtTime...
65560 20 2a 20 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 * @type {Number
65570 7d 0a 09 09 20 2a 20 40 70 72 69 76 61 74 65 0a }... * @private.
65580 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
65590 4c 69 73 74 65 6e 65 72 2e 70 72 6f 74 6f 74 79 Listener.prototy
655a0 70 65 2e 5f 72 61 6d 70 54 69 6d 65 43 6f 6e 73 pe._rampTimeCons
655b0 74 61 6e 74 20 3d 20 30 2e 30 31 3b 0a 09 20 20 tant = 0.01;..
655c0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 65 74 73 /**... * Sets
655d0 20 74 68 65 20 70 6f 73 69 74 69 6f 6e 20 6f 66 the position of
655e0 20 74 68 65 20 6c 69 73 74 65 6e 65 72 20 69 6e the listener in
655f0 20 33 64 20 73 70 61 63 65 2e 09 0a 09 09 20 2a 3d space..... *
65600 20 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 @param {Numbe
65610 72 7d 20 20 78 0a 09 09 20 2a 20 20 40 70 61 72 r} x... * @par
65620 61 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 20 79 0a am {Number} y.
65630 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 4e .. * @param {N
65640 75 6d 62 65 72 7d 20 20 7a 0a 09 09 20 2a 20 20 umber} z... *
65650 40 72 65 74 75 72 6e 20 7b 54 6f 6e 65 2e 4c 69 @return {Tone.Li
65660 73 74 65 6e 65 72 7d 20 74 68 69 73 0a 09 09 20 stener} this...
65670 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4c 69 73 */.. Tone.Lis
65680 74 65 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e tener.prototype.
65690 73 65 74 50 6f 73 69 74 69 6f 6e 20 3d 20 66 75 setPosition = fu
656a0 6e 63 74 69 6f 6e 20 28 78 2c 20 79 2c 20 7a 29 nction (x, y, z)
656b0 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
656c0 74 68 69 73 2e 5f 6c 69 73 74 65 6e 65 72 2e 70 this._listener.p
656d0 6f 73 69 74 69 6f 6e 58 29 20 7b 0a 09 20 20 20 ositionX) {..
656e0 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 77 var now
656f0 20 3d 20 74 68 69 73 2e 6e 6f 77 28 29 3b 0a 09 = this.now();..
65700 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
65710 2e 5f 6c 69 73 74 65 6e 65 72 2e 70 6f 73 69 74 ._listener.posit
65720 69 6f 6e 58 2e 73 65 74 54 61 72 67 65 74 41 74 ionX.setTargetAt
65730 54 69 6d 65 28 78 2c 20 6e 6f 77 2c 20 74 68 69 Time(x, now, thi
65740 73 2e 5f 72 61 6d 70 54 69 6d 65 43 6f 6e 73 74 s._rampTimeConst
65750 61 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 20 20 ant);..
65760 20 20 20 74 68 69 73 2e 5f 6c 69 73 74 65 6e 65 this._listene
65770 72 2e 70 6f 73 69 74 69 6f 6e 59 2e 73 65 74 54 r.positionY.setT
65780 61 72 67 65 74 41 74 54 69 6d 65 28 79 2c 20 6e argetAtTime(y, n
65790 6f 77 2c 20 74 68 69 73 2e 5f 72 61 6d 70 54 69 ow, this._rampTi
657a0 6d 65 43 6f 6e 73 74 61 6e 74 29 3b 0a 09 20 20 meConstant);..
657b0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
657c0 6c 69 73 74 65 6e 65 72 2e 70 6f 73 69 74 69 6f listener.positio
657d0 6e 5a 2e 73 65 74 54 61 72 67 65 74 41 74 54 69 nZ.setTargetAtTi
657e0 6d 65 28 7a 2c 20 6e 6f 77 2c 20 74 68 69 73 2e me(z, now, this.
657f0 5f 72 61 6d 70 54 69 6d 65 43 6f 6e 73 74 61 6e _rampTimeConstan
65800 74 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 t);.. } e
65810 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
65820 20 20 20 74 68 69 73 2e 5f 6c 69 73 74 65 6e 65 this._listene
65830 72 2e 73 65 74 50 6f 73 69 74 69 6f 6e 28 78 2c r.setPosition(x,
65840 20 79 2c 20 7a 29 3b 0a 09 20 20 20 20 20 20 20 y, z);..
65850 20 7d 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 }.. this
65860 2e 5f 70 6f 73 69 74 69 6f 6e 20 3d 20 41 72 72 ._position = Arr
65870 61 79 2e 70 72 6f 74 6f 74 79 70 65 2e 73 6c 69 ay.prototype.sli
65880 63 65 2e 63 61 6c 6c 28 61 72 67 75 6d 65 6e 74 ce.call(argument
65890 73 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 s);.. ret
658a0 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
658b0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
658c0 20 53 65 74 73 20 74 68 65 20 6f 72 69 65 6e 74 Sets the orient
658d0 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6c 69 73 ation of the lis
658e0 74 65 6e 65 72 20 75 73 69 6e 67 20 74 77 6f 20 tener using two
658f0 76 65 63 74 6f 72 73 2c 20 74 68 65 20 66 6f 72 vectors, the for
65900 77 61 72 64 0a 09 09 20 2a 20 20 76 65 63 74 6f ward... * vecto
65910 72 20 28 77 68 69 63 68 20 64 69 72 65 63 74 69 r (which directi
65920 6f 6e 20 74 68 65 20 6c 69 73 74 65 6e 65 72 20 on the listener
65930 69 73 20 66 61 63 69 6e 67 29 20 61 6e 64 20 74 is facing) and t
65940 68 65 20 75 70 20 76 65 63 74 6f 72 20 0a 09 09 he up vector ...
65950 20 2a 20 20 28 77 68 69 63 68 20 74 68 65 20 75 * (which the u
65960 70 20 64 69 72 65 63 74 69 6f 6e 20 6f 66 20 74 p direction of t
65970 68 65 20 6c 69 73 74 65 6e 65 72 29 2e 20 41 6e he listener). An
65980 20 75 70 20 76 65 63 74 6f 72 0a 09 09 20 2a 20 up vector... *
65990 20 6f 66 20 30 2c 20 30 2c 20 31 20 69 73 20 65 of 0, 0, 1 is e
659a0 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 74 68 65 quivalent to the
659b0 20 6c 69 73 74 65 6e 65 72 20 73 74 61 6e 64 69 listener standi
659c0 6e 67 20 75 70 20 69 6e 20 74 68 65 20 5a 20 64 ng up in the Z d
659d0 69 72 65 63 74 69 6f 6e 2e 20 0a 09 09 20 2a 20 irection. ... *
659e0 20 40 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 @param {Number
659f0 7d 20 20 78 0a 09 09 20 2a 20 20 40 70 61 72 61 } x... * @para
65a00 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 20 79 0a 09 m {Number} y..
65a10 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 4e 75 . * @param {Nu
65a20 6d 62 65 72 7d 20 20 7a 0a 09 09 20 2a 20 20 40 mber} z... * @
65a30 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 param {Number}
65a40 20 75 70 58 0a 09 09 20 2a 20 20 40 70 61 72 61 upX... * @para
65a50 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 20 75 70 59 m {Number} upY
65a60 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
65a70 4e 75 6d 62 65 72 7d 20 20 75 70 5a 0a 09 09 20 Number} upZ...
65a80 2a 20 20 40 72 65 74 75 72 6e 20 7b 54 6f 6e 65 * @return {Tone
65a90 2e 4c 69 73 74 65 6e 65 72 7d 20 74 68 69 73 0a .Listener} this.
65aa0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
65ab0 4c 69 73 74 65 6e 65 72 2e 70 72 6f 74 6f 74 79 Listener.prototy
65ac0 70 65 2e 73 65 74 4f 72 69 65 6e 74 61 74 69 6f pe.setOrientatio
65ad0 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 78 2c n = function (x,
65ae0 20 79 2c 20 7a 2c 20 75 70 58 2c 20 75 70 59 2c y, z, upX, upY,
65af0 20 75 70 5a 29 20 7b 0a 09 20 20 20 20 20 20 20 upZ) {..
65b00 20 69 66 20 28 74 68 69 73 2e 5f 6c 69 73 74 65 if (this._liste
65b10 6e 65 72 2e 66 6f 72 77 61 72 64 58 29 20 7b 0a ner.forwardX) {.
65b20 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
65b30 20 6e 6f 77 20 3d 20 74 68 69 73 2e 6e 6f 77 28 now = this.now(
65b40 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
65b50 74 68 69 73 2e 5f 6c 69 73 74 65 6e 65 72 2e 66 this._listener.f
65b60 6f 72 77 61 72 64 58 2e 73 65 74 54 61 72 67 65 orwardX.setTarge
65b70 74 41 74 54 69 6d 65 28 78 2c 20 6e 6f 77 2c 20 tAtTime(x, now,
65b80 74 68 69 73 2e 5f 72 61 6d 70 54 69 6d 65 43 6f this._rampTimeCo
65b90 6e 73 74 61 6e 74 29 3b 0a 09 20 20 20 20 20 20 nstant);..
65ba0 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 69 73 74 this._list
65bb0 65 6e 65 72 2e 66 6f 72 77 61 72 64 59 2e 73 65 ener.forwardY.se
65bc0 74 54 61 72 67 65 74 41 74 54 69 6d 65 28 79 2c tTargetAtTime(y,
65bd0 20 6e 6f 77 2c 20 74 68 69 73 2e 5f 72 61 6d 70 now, this._ramp
65be0 54 69 6d 65 43 6f 6e 73 74 61 6e 74 29 3b 0a 09 TimeConstant);..
65bf0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
65c00 2e 5f 6c 69 73 74 65 6e 65 72 2e 66 6f 72 77 61 ._listener.forwa
65c10 72 64 5a 2e 73 65 74 54 61 72 67 65 74 41 74 54 rdZ.setTargetAtT
65c20 69 6d 65 28 7a 2c 20 6e 6f 77 2c 20 74 68 69 73 ime(z, now, this
65c30 2e 5f 72 61 6d 70 54 69 6d 65 43 6f 6e 73 74 61 ._rampTimeConsta
65c40 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 nt);..
65c50 20 20 74 68 69 73 2e 5f 6c 69 73 74 65 6e 65 72 this._listener
65c60 2e 75 70 58 2e 73 65 74 54 61 72 67 65 74 41 74 .upX.setTargetAt
65c70 54 69 6d 65 28 75 70 58 2c 20 6e 6f 77 2c 20 74 Time(upX, now, t
65c80 68 69 73 2e 5f 72 61 6d 70 54 69 6d 65 43 6f 6e his._rampTimeCon
65c90 73 74 61 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 stant);..
65ca0 20 20 20 20 20 74 68 69 73 2e 5f 6c 69 73 74 65 this._liste
65cb0 6e 65 72 2e 75 70 59 2e 73 65 74 54 61 72 67 65 ner.upY.setTarge
65cc0 74 41 74 54 69 6d 65 28 75 70 59 2c 20 6e 6f 77 tAtTime(upY, now
65cd0 2c 20 74 68 69 73 2e 5f 72 61 6d 70 54 69 6d 65 , this._rampTime
65ce0 43 6f 6e 73 74 61 6e 74 29 3b 0a 09 20 20 20 20 Constant);..
65cf0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 69 this._li
65d00 73 74 65 6e 65 72 2e 75 70 5a 2e 73 65 74 54 61 stener.upZ.setTa
65d10 72 67 65 74 41 74 54 69 6d 65 28 75 70 5a 2c 20 rgetAtTime(upZ,
65d20 6e 6f 77 2c 20 74 68 69 73 2e 5f 72 61 6d 70 54 now, this._rampT
65d30 69 6d 65 43 6f 6e 73 74 61 6e 74 29 3b 0a 09 20 imeConstant);..
65d40 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
65d50 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
65d60 73 2e 5f 6c 69 73 74 65 6e 65 72 2e 73 65 74 4f s._listener.setO
65d70 72 69 65 6e 74 61 74 69 6f 6e 28 78 2c 20 79 2c rientation(x, y,
65d80 20 7a 2c 20 75 70 58 2c 20 75 70 59 2c 20 75 70 z, upX, upY, up
65d90 5a 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 Z);.. }..
65da0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 72 this._or
65db0 69 65 6e 74 61 74 69 6f 6e 20 3d 20 41 72 72 61 ientation = Arra
65dc0 79 2e 70 72 6f 74 6f 74 79 70 65 2e 73 6c 69 63 y.prototype.slic
65dd0 65 2e 63 61 6c 6c 28 61 72 67 75 6d 65 6e 74 73 e.call(arguments
65de0 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 );.. retu
65df0 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
65e00 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
65e10 54 68 65 20 78 20 70 6f 73 69 74 69 6f 6e 20 6f The x position o
65e20 66 20 74 68 65 20 70 61 6e 6e 65 72 20 6f 62 6a f the panner obj
65e30 65 63 74 2e 0a 09 09 20 2a 20 20 40 74 79 70 65 ect.... * @type
65e40 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 {Number}... *
65e50 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 4c @memberOf Tone.L
65e60 69 73 74 65 6e 65 72 23 0a 09 09 20 2a 20 20 40 istener#... * @
65e70 6e 61 6d 65 20 70 6f 73 69 74 69 6f 6e 58 0a 09 name positionX..
65e80 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
65e90 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
65ea0 54 6f 6e 65 2e 4c 69 73 74 65 6e 65 72 2e 70 72 Tone.Listener.pr
65eb0 6f 74 6f 74 79 70 65 2c 20 27 70 6f 73 69 74 69 ototype, 'positi
65ec0 6f 6e 58 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 onX', {..
65ed0 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 set: function (
65ee0 70 6f 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 pos) {..
65ef0 20 20 20 20 74 68 69 73 2e 5f 70 6f 73 69 74 69 this._positi
65f00 6f 6e 5b 30 5d 20 3d 20 70 6f 73 3b 0a 09 20 20 on[0] = pos;..
65f10 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 this.s
65f20 65 74 50 6f 73 69 74 69 6f 6e 2e 61 70 70 6c 79 etPosition.apply
65f30 28 74 68 69 73 2c 20 74 68 69 73 2e 5f 70 6f 73 (this, this._pos
65f40 69 74 69 6f 6e 29 3b 0a 09 20 20 20 20 20 20 20 ition);..
65f50 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 67 65 74 },.. get
65f60 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
65f70 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
65f80 75 72 6e 20 74 68 69 73 2e 5f 70 6f 73 69 74 69 urn this._positi
65f90 6f 6e 5b 30 5d 3b 0a 09 20 20 20 20 20 20 20 20 on[0];..
65fa0 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
65fb0 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 79 20 /**... * The y
65fc0 70 6f 73 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 position of the
65fd0 70 61 6e 6e 65 72 20 6f 62 6a 65 63 74 2e 0a 09 panner object...
65fe0 09 20 2a 20 20 40 74 79 70 65 20 7b 4e 75 6d 62 . * @type {Numb
65ff0 65 72 7d 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 er}... * @membe
66000 72 4f 66 20 54 6f 6e 65 2e 4c 69 73 74 65 6e 65 rOf Tone.Listene
66010 72 23 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 70 r#... * @name p
66020 6f 73 69 74 69 6f 6e 59 0a 09 09 20 2a 2f 0a 09 ositionY... */..
66030 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
66040 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 4c eProperty(Tone.L
66050 69 73 74 65 6e 65 72 2e 70 72 6f 74 6f 74 79 70 istener.prototyp
66060 65 2c 20 27 70 6f 73 69 74 69 6f 6e 59 27 2c 20 e, 'positionY',
66070 7b 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 {.. set:
66080 66 75 6e 63 74 69 6f 6e 20 28 70 6f 73 29 20 7b function (pos) {
66090 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
660a0 69 73 2e 5f 70 6f 73 69 74 69 6f 6e 5b 31 5d 20 is._position[1]
660b0 3d 20 70 6f 73 3b 0a 09 20 20 20 20 20 20 20 20 = pos;..
660c0 20 20 20 20 74 68 69 73 2e 73 65 74 50 6f 73 69 this.setPosi
660d0 74 69 6f 6e 2e 61 70 70 6c 79 28 74 68 69 73 2c tion.apply(this,
660e0 20 74 68 69 73 2e 5f 70 6f 73 69 74 69 6f 6e 29 this._position)
660f0 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 ;.. },..
66100 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
66110 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
66120 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
66130 69 73 2e 5f 70 6f 73 69 74 69 6f 6e 5b 31 5d 3b is._position[1];
66140 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
66150 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
66160 20 2a 20 20 54 68 65 20 7a 20 70 6f 73 69 74 69 * The z positi
66170 6f 6e 20 6f 66 20 74 68 65 20 70 61 6e 6e 65 72 on of the panner
66180 20 6f 62 6a 65 63 74 2e 0a 09 09 20 2a 20 20 40 object.... * @
66190 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 type {Number}...
661a0 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
661b0 6e 65 2e 4c 69 73 74 65 6e 65 72 23 0a 09 09 20 ne.Listener#...
661c0 2a 20 20 40 6e 61 6d 65 20 70 6f 73 69 74 69 6f * @name positio
661d0 6e 5a 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 nZ... */.. Ob
661e0 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
661f0 72 74 79 28 54 6f 6e 65 2e 4c 69 73 74 65 6e 65 rty(Tone.Listene
66200 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 70 6f r.prototype, 'po
66210 73 69 74 69 6f 6e 5a 27 2c 20 7b 0a 09 20 20 20 sitionZ', {..
66220 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 set: functi
66230 6f 6e 20 28 70 6f 73 29 20 7b 0a 09 20 20 20 20 on (pos) {..
66240 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 6f this._po
66250 73 69 74 69 6f 6e 5b 32 5d 20 3d 20 70 6f 73 3b sition[2] = pos;
66260 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
66270 69 73 2e 73 65 74 50 6f 73 69 74 69 6f 6e 2e 61 is.setPosition.a
66280 70 70 6c 79 28 74 68 69 73 2c 20 74 68 69 73 2e pply(this, this.
66290 5f 70 6f 73 69 74 69 6f 6e 29 3b 0a 09 20 20 20 _position);..
662a0 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
662b0 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
662c0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
662d0 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 70 6f return this._po
662e0 73 69 74 69 6f 6e 5b 32 5d 3b 0a 09 20 20 20 20 sition[2];..
662f0 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
66300 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 /**... * Th
66310 65 20 78 20 63 6f 6f 72 64 69 6e 61 74 65 20 6f e x coordinate o
66320 66 20 74 68 65 20 6c 69 73 74 65 6e 65 72 73 20 f the listeners
66330 66 72 6f 6e 74 20 64 69 72 65 63 74 69 6f 6e 2e front direction.
66340 20 69 2e 65 2e 20 0a 09 09 20 2a 20 20 77 68 69 i.e. ... * whi
66350 63 68 20 77 61 79 20 74 68 65 79 20 61 72 65 20 ch way they are
66360 66 61 63 69 6e 67 2e 0a 09 09 20 2a 20 20 40 74 facing.... * @t
66370 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 ype {Number}...
66380 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
66390 65 2e 4c 69 73 74 65 6e 65 72 23 0a 09 09 20 2a e.Listener#... *
663a0 20 20 40 6e 61 6d 65 20 66 6f 72 77 61 72 64 58 @name forwardX
663b0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 ... */.. Obje
663c0 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
663d0 79 28 54 6f 6e 65 2e 4c 69 73 74 65 6e 65 72 2e y(Tone.Listener.
663e0 70 72 6f 74 6f 74 79 70 65 2c 20 27 66 6f 72 77 prototype, 'forw
663f0 61 72 64 58 27 2c 20 7b 0a 09 20 20 20 20 20 20 ardX', {..
66400 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 set: function
66410 28 70 6f 73 29 20 7b 0a 09 20 20 20 20 20 20 20 (pos) {..
66420 20 20 20 20 20 74 68 69 73 2e 5f 6f 72 69 65 6e this._orien
66430 74 61 74 69 6f 6e 5b 30 5d 20 3d 20 70 6f 73 3b tation[0] = pos;
66440 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
66450 69 73 2e 73 65 74 4f 72 69 65 6e 74 61 74 69 6f is.setOrientatio
66460 6e 2e 61 70 70 6c 79 28 74 68 69 73 2c 20 74 68 n.apply(this, th
66470 69 73 2e 5f 6f 72 69 65 6e 74 61 74 69 6f 6e 29 is._orientation)
66480 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 ;.. },..
66490 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
664a0 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
664b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
664c0 69 73 2e 5f 6f 72 69 65 6e 74 61 74 69 6f 6e 5b is._orientation[
664d0 30 5d 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 0];.. }..
664e0 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
664f0 0a 09 09 20 2a 20 20 54 68 65 20 79 20 63 6f 6f ... * The y coo
66500 72 64 69 6e 61 74 65 20 6f 66 20 74 68 65 20 6c rdinate of the l
66510 69 73 74 65 6e 65 72 73 20 66 72 6f 6e 74 20 64 isteners front d
66520 69 72 65 63 74 69 6f 6e 2e 20 69 2e 65 2e 20 0a irection. i.e. .
66530 09 09 20 2a 20 20 77 68 69 63 68 20 77 61 79 20 .. * which way
66540 74 68 65 79 20 61 72 65 20 66 61 63 69 6e 67 2e they are facing.
66550 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e 75 ... * @type {Nu
66560 6d 62 65 72 7d 0a 09 09 20 2a 20 20 40 6d 65 6d mber}... * @mem
66570 62 65 72 4f 66 20 54 6f 6e 65 2e 4c 69 73 74 65 berOf Tone.Liste
66580 6e 65 72 23 0a 09 09 20 2a 20 20 40 6e 61 6d 65 ner#... * @name
66590 20 66 6f 72 77 61 72 64 59 0a 09 09 20 2a 2f 0a forwardY... */.
665a0 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 . Object.defi
665b0 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e neProperty(Tone.
665c0 4c 69 73 74 65 6e 65 72 2e 70 72 6f 74 6f 74 79 Listener.prototy
665d0 70 65 2c 20 27 66 6f 72 77 61 72 64 59 27 2c 20 pe, 'forwardY',
665e0 7b 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 {.. set:
665f0 66 75 6e 63 74 69 6f 6e 20 28 70 6f 73 29 20 7b function (pos) {
66600 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
66610 69 73 2e 5f 6f 72 69 65 6e 74 61 74 69 6f 6e 5b is._orientation[
66620 31 5d 20 3d 20 70 6f 73 3b 0a 09 20 20 20 20 20 1] = pos;..
66630 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 74 4f this.setO
66640 72 69 65 6e 74 61 74 69 6f 6e 2e 61 70 70 6c 79 rientation.apply
66650 28 74 68 69 73 2c 20 74 68 69 73 2e 5f 6f 72 69 (this, this._ori
66660 65 6e 74 61 74 69 6f 6e 29 3b 0a 09 20 20 20 20 entation);..
66670 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
66680 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 get: function ()
66690 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
666a0 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6f 72 69 return this._ori
666b0 65 6e 74 61 74 69 6f 6e 5b 31 5d 3b 0a 09 20 20 entation[1];..
666c0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b }.. });
666d0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
666e0 54 68 65 20 7a 20 63 6f 6f 72 64 69 6e 61 74 65 The z coordinate
666f0 20 6f 66 20 74 68 65 20 6c 69 73 74 65 6e 65 72 of the listener
66700 73 20 66 72 6f 6e 74 20 64 69 72 65 63 74 69 6f s front directio
66710 6e 2e 20 69 2e 65 2e 20 0a 09 09 20 2a 20 20 77 n. i.e. ... * w
66720 68 69 63 68 20 77 61 79 20 74 68 65 79 20 61 72 hich way they ar
66730 65 20 66 61 63 69 6e 67 2e 0a 09 09 20 2a 20 20 e facing.... *
66740 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 @type {Number}..
66750 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 . * @memberOf T
66760 6f 6e 65 2e 4c 69 73 74 65 6e 65 72 23 0a 09 09 one.Listener#...
66770 20 2a 20 20 40 6e 61 6d 65 20 66 6f 72 77 61 72 * @name forwar
66780 64 5a 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 dZ... */.. Ob
66790 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
667a0 72 74 79 28 54 6f 6e 65 2e 4c 69 73 74 65 6e 65 rty(Tone.Listene
667b0 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 66 6f r.prototype, 'fo
667c0 72 77 61 72 64 5a 27 2c 20 7b 0a 09 20 20 20 20 rwardZ', {..
667d0 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f set: functio
667e0 6e 20 28 70 6f 73 29 20 7b 0a 09 20 20 20 20 20 n (pos) {..
667f0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 72 69 this._ori
66800 65 6e 74 61 74 69 6f 6e 5b 32 5d 20 3d 20 70 6f entation[2] = po
66810 73 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 s;..
66820 74 68 69 73 2e 73 65 74 4f 72 69 65 6e 74 61 74 this.setOrientat
66830 69 6f 6e 2e 61 70 70 6c 79 28 74 68 69 73 2c 20 ion.apply(this,
66840 74 68 69 73 2e 5f 6f 72 69 65 6e 74 61 74 69 6f this._orientatio
66850 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a n);.. },.
66860 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
66870 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
66880 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
66890 74 68 69 73 2e 5f 6f 72 69 65 6e 74 61 74 69 6f this._orientatio
668a0 6e 5b 32 5d 3b 0a 09 20 20 20 20 20 20 20 20 7d n[2];.. }
668b0 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f .. });.. /
668c0 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 78 20 63 **... * The x c
668d0 6f 6f 72 64 69 6e 61 74 65 20 6f 66 20 74 68 65 oordinate of the
668e0 20 6c 69 73 74 65 6e 65 72 27 73 20 75 70 20 64 listener's up d
668f0 69 72 65 63 74 69 6f 6e 2e 20 69 2e 65 2e 0a 09 irection. i.e...
66900 09 20 2a 20 20 74 68 65 20 64 69 72 65 63 74 69 . * the directi
66910 6f 6e 20 74 68 65 20 6c 69 73 74 65 6e 65 72 20 on the listener
66920 69 73 20 73 74 61 6e 64 69 6e 67 20 69 6e 2e 0a is standing in..
66930 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e 75 6d .. * @type {Num
66940 62 65 72 7d 0a 09 09 20 2a 20 20 40 6d 65 6d 62 ber}... * @memb
66950 65 72 4f 66 20 54 6f 6e 65 2e 4c 69 73 74 65 6e erOf Tone.Listen
66960 65 72 23 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 er#... * @name
66970 75 70 58 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f upX... */.. O
66980 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 bject.defineProp
66990 65 72 74 79 28 54 6f 6e 65 2e 4c 69 73 74 65 6e erty(Tone.Listen
669a0 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 75 er.prototype, 'u
669b0 70 58 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 pX', {..
669c0 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 70 set: function (p
669d0 6f 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 os) {..
669e0 20 20 20 74 68 69 73 2e 5f 6f 72 69 65 6e 74 61 this._orienta
669f0 74 69 6f 6e 5b 33 5d 20 3d 20 70 6f 73 3b 0a 09 tion[3] = pos;..
66a00 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
66a10 2e 73 65 74 4f 72 69 65 6e 74 61 74 69 6f 6e 2e .setOrientation.
66a20 61 70 70 6c 79 28 74 68 69 73 2c 20 74 68 69 73 apply(this, this
66a30 2e 5f 6f 72 69 65 6e 74 61 74 69 6f 6e 29 3b 0a ._orientation);.
66a40 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 . },..
66a50 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
66a60 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
66a70 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
66a80 2e 5f 6f 72 69 65 6e 74 61 74 69 6f 6e 5b 33 5d ._orientation[3]
66a90 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
66aa0 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 });.. /**..
66ab0 09 20 2a 20 20 54 68 65 20 79 20 63 6f 6f 72 64 . * The y coord
66ac0 69 6e 61 74 65 20 6f 66 20 74 68 65 20 6c 69 73 inate of the lis
66ad0 74 65 6e 65 72 27 73 20 75 70 20 64 69 72 65 63 tener's up direc
66ae0 74 69 6f 6e 2e 20 69 2e 65 2e 0a 09 09 20 2a 20 tion. i.e.... *
66af0 20 74 68 65 20 64 69 72 65 63 74 69 6f 6e 20 74 the direction t
66b00 68 65 20 6c 69 73 74 65 6e 65 72 20 69 73 20 73 he listener is s
66b10 74 61 6e 64 69 6e 67 20 69 6e 2e 0a 09 09 20 2a tanding in.... *
66b20 20 20 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d @type {Number}
66b30 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
66b40 20 54 6f 6e 65 2e 4c 69 73 74 65 6e 65 72 23 0a Tone.Listener#.
66b50 09 09 20 2a 20 20 40 6e 61 6d 65 20 75 70 59 0a .. * @name upY.
66b60 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 .. */.. Objec
66b70 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 t.defineProperty
66b80 28 54 6f 6e 65 2e 4c 69 73 74 65 6e 65 72 2e 70 (Tone.Listener.p
66b90 72 6f 74 6f 74 79 70 65 2c 20 27 75 70 59 27 2c rototype, 'upY',
66ba0 20 7b 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a {.. set:
66bb0 20 66 75 6e 63 74 69 6f 6e 20 28 70 6f 73 29 20 function (pos)
66bc0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
66bd0 68 69 73 2e 5f 6f 72 69 65 6e 74 61 74 69 6f 6e his._orientation
66be0 5b 34 5d 20 3d 20 70 6f 73 3b 0a 09 20 20 20 20 [4] = pos;..
66bf0 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 74 this.set
66c00 4f 72 69 65 6e 74 61 74 69 6f 6e 2e 61 70 70 6c Orientation.appl
66c10 79 28 74 68 69 73 2c 20 74 68 69 73 2e 5f 6f 72 y(this, this._or
66c20 69 65 6e 74 61 74 69 6f 6e 29 3b 0a 09 20 20 20 ientation);..
66c30 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
66c40 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
66c50 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
66c60 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6f 72 return this._or
66c70 69 65 6e 74 61 74 69 6f 6e 5b 34 5d 3b 0a 09 20 ientation[4];..
66c80 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 }.. })
66c90 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
66ca0 20 54 68 65 20 7a 20 63 6f 6f 72 64 69 6e 61 74 The z coordinat
66cb0 65 20 6f 66 20 74 68 65 20 6c 69 73 74 65 6e 65 e of the listene
66cc0 72 27 73 20 75 70 20 64 69 72 65 63 74 69 6f 6e r's up direction
66cd0 2e 20 69 2e 65 2e 0a 09 09 20 2a 20 20 74 68 65 . i.e.... * the
66ce0 20 64 69 72 65 63 74 69 6f 6e 20 74 68 65 20 6c direction the l
66cf0 69 73 74 65 6e 65 72 20 69 73 20 73 74 61 6e 64 istener is stand
66d00 69 6e 67 20 69 6e 2e 0a 09 09 20 2a 20 20 40 74 ing in.... * @t
66d10 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 ype {Number}...
66d20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
66d30 65 2e 4c 69 73 74 65 6e 65 72 23 0a 09 09 20 2a e.Listener#... *
66d40 20 20 40 6e 61 6d 65 20 75 70 5a 0a 09 09 20 2a @name upZ... *
66d50 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
66d60 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
66d70 65 2e 4c 69 73 74 65 6e 65 72 2e 70 72 6f 74 6f e.Listener.proto
66d80 74 79 70 65 2c 20 27 75 70 5a 27 2c 20 7b 0a 09 type, 'upZ', {..
66d90 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e set: fun
66da0 63 74 69 6f 6e 20 28 70 6f 73 29 20 7b 0a 09 20 ction (pos) {..
66db0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
66dc0 5f 6f 72 69 65 6e 74 61 74 69 6f 6e 5b 35 5d 20 _orientation[5]
66dd0 3d 20 70 6f 73 3b 0a 09 20 20 20 20 20 20 20 20 = pos;..
66de0 20 20 20 20 74 68 69 73 2e 73 65 74 4f 72 69 65 this.setOrie
66df0 6e 74 61 74 69 6f 6e 2e 61 70 70 6c 79 28 74 68 ntation.apply(th
66e00 69 73 2c 20 74 68 69 73 2e 5f 6f 72 69 65 6e 74 is, this._orient
66e10 61 74 69 6f 6e 29 3b 0a 09 20 20 20 20 20 20 20 ation);..
66e20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 67 65 74 },.. get
66e30 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
66e40 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
66e50 75 72 6e 20 74 68 69 73 2e 5f 6f 72 69 65 6e 74 urn this._orient
66e60 61 74 69 6f 6e 5b 35 5d 3b 0a 09 20 20 20 20 20 ation[5];..
66e70 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
66e80 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 /**... * Cle
66e90 61 6e 20 75 70 2e 0a 09 09 20 2a 20 20 40 72 65 an up.... * @re
66ea0 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 4c 69 73 74 turns {Tone.List
66eb0 65 6e 65 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f ener} this... */
66ec0 0a 09 20 20 20 20 54 6f 6e 65 2e 4c 69 73 74 65 .. Tone.Liste
66ed0 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 ner.prototype.di
66ee0 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e spose = function
66ef0 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 () {.. t
66f00 68 69 73 2e 5f 6c 69 73 74 65 6e 65 72 2e 64 69 his._listener.di
66f10 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 20 20 20 sconnect();..
66f20 20 20 20 20 20 74 68 69 73 2e 5f 6c 69 73 74 65 this._liste
66f30 6e 65 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ner = null;..
66f40 20 20 20 20 20 74 68 69 73 2e 5f 6f 72 69 65 6e this._orien
66f50 74 61 74 69 6f 6e 20 3d 20 6e 75 6c 6c 3b 0a 09 tation = null;..
66f60 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 6f this._po
66f70 73 69 74 69 6f 6e 20 3d 20 6e 75 6c 6c 3b 0a 09 sition = null;..
66f80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
66f90 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
66fa0 20 20 2f 2f 53 49 4e 47 4c 45 54 4f 4e 20 53 45 //SINGLETON SE
66fb0 54 55 50 0a 09 20 20 20 20 76 61 72 20 4c 69 73 TUP.. var Lis
66fc0 74 65 6e 65 72 43 6f 6e 73 74 72 75 63 74 6f 72 tenerConstructor
66fd0 20 3d 20 54 6f 6e 65 2e 4c 69 73 74 65 6e 65 72 = Tone.Listener
66fe0 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 5f 69 6e 69 ;.. Tone._ini
66ff0 74 41 75 64 69 6f 43 6f 6e 74 65 78 74 28 66 75 tAudioContext(fu
67000 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
67010 20 20 20 20 20 69 66 20 28 74 79 70 65 6f 66 20 if (typeof
67020 54 6f 6e 65 2e 4c 69 73 74 65 6e 65 72 20 3d 3d Tone.Listener ==
67030 3d 20 27 66 75 6e 63 74 69 6f 6e 27 29 20 7b 0a = 'function') {.
67040 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 61 . //a
67050 20 73 69 6e 67 6c 65 20 6c 69 73 74 65 6e 65 72 single listener
67060 20 6f 62 6a 65 63 74 0a 09 20 20 20 20 20 20 20 object..
67070 20 20 20 20 20 54 6f 6e 65 2e 4c 69 73 74 65 6e Tone.Listen
67080 65 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4c 69 er = new Tone.Li
67090 73 74 65 6e 65 72 28 29 3b 0a 09 20 20 20 20 20 stener();..
670a0 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
670b0 20 20 20 20 20 20 20 20 20 2f 2f 6d 61 6b 65 20 //make
670c0 6e 65 77 20 4c 69 73 74 65 6e 65 72 20 69 6e 73 new Listener ins
670d0 69 64 65 73 0a 09 20 20 20 20 20 20 20 20 20 20 ides..
670e0 20 20 4c 69 73 74 65 6e 65 72 43 6f 6e 73 74 72 ListenerConstr
670f0 75 63 74 6f 72 2e 63 61 6c 6c 28 54 6f 6e 65 2e uctor.call(Tone.
67100 4c 69 73 74 65 6e 65 72 29 3b 0a 09 20 20 20 20 Listener);..
67110 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
67120 20 20 20 20 2f 2f 45 4e 44 20 53 49 4e 47 4c 45 //END SINGLE
67130 54 4f 4e 20 53 45 54 55 50 0a 09 20 20 20 20 72 TON SETUP.. r
67140 65 74 75 72 6e 20 54 6f 6e 65 2e 4c 69 73 74 65 eturn Tone.Liste
67150 6e 65 72 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c ner;..});..Modul
67160 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 e(function (Tone
67170 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f ) {.. .. /
67180 2a 2a 0a 09 09 20 2a 20 09 40 63 6c 61 73 73 20 **... * .@class
67190 20 54 6f 6e 65 2e 45 66 66 65 63 74 20 69 73 20 Tone.Effect is
671a0 74 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 66 the base class f
671b0 6f 72 20 65 66 66 65 63 74 73 2e 20 43 6f 6e 6e or effects. Conn
671c0 65 63 74 20 74 68 65 20 65 66 66 65 63 74 20 62 ect the effect b
671d0 65 74 77 65 65 6e 0a 09 09 20 2a 20 09 20 20 20 etween... * .
671e0 20 20 20 20 20 74 68 65 20 65 66 66 65 63 74 53 the effectS
671f0 65 6e 64 20 61 6e 64 20 65 66 66 65 63 74 52 65 end and effectRe
67200 74 75 72 6e 20 47 61 69 6e 4e 6f 64 65 73 2c 20 turn GainNodes,
67210 74 68 65 6e 20 63 6f 6e 74 72 6f 6c 20 74 68 65 then control the
67220 20 61 6d 6f 75 6e 74 20 6f 66 0a 09 09 20 2a 20 amount of... *
67230 09 20 20 20 20 20 20 20 20 65 66 66 65 63 74 20 . effect
67240 77 68 69 63 68 20 67 6f 65 73 20 74 6f 20 74 68 which goes to th
67250 65 20 6f 75 74 70 75 74 20 75 73 69 6e 67 20 74 e output using t
67260 68 65 20 77 65 74 20 63 6f 6e 74 72 6f 6c 2e 0a he wet control..
67270 09 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 .. *... * @cons
67280 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 tructor... * @e
67290 78 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 xtends {Tone}...
672a0 20 2a 20 20 40 70 61 72 61 6d 20 7b 4e 6f 72 6d * @param {Norm
672b0 61 6c 52 61 6e 67 65 7c 4f 62 6a 65 63 74 7d 20 alRange|Object}
672c0 5b 77 65 74 5d 20 54 68 65 20 73 74 61 72 74 69 [wet] The starti
672d0 6e 67 20 77 65 74 20 76 61 6c 75 65 2e 20 0a 09 ng wet value. ..
672e0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 . */.. Tone.E
672f0 66 66 65 63 74 20 3d 20 66 75 6e 63 74 69 6f 6e ffect = function
67300 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 () {.. t
67310 68 69 73 2e 63 72 65 61 74 65 49 6e 73 4f 75 74 his.createInsOut
67320 73 28 31 2c 20 31 29 3b 0a 09 20 20 20 20 20 20 s(1, 1);..
67330 20 20 2f 2f 67 65 74 20 61 6c 6c 20 6f 66 20 74 //get all of t
67340 68 65 20 64 65 66 61 75 6c 74 73 0a 09 20 20 20 he defaults..
67350 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 var options
67360 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f = this.optionsO
67370 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c bject(arguments,
67380 20 5b 27 77 65 74 27 5d 2c 20 54 6f 6e 65 2e 45 ['wet'], Tone.E
67390 66 66 65 63 74 2e 64 65 66 61 75 6c 74 73 29 3b ffect.defaults);
673a0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
673b0 09 20 2a 20 20 74 68 65 20 64 72 79 77 65 74 20 . * the drywet
673c0 6b 6e 6f 62 20 74 6f 20 63 6f 6e 74 72 6f 6c 20 knob to control
673d0 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 65 66 the amount of ef
673e0 66 65 63 74 0a 09 09 09 20 2a 20 20 40 74 79 70 fect.... * @typ
673f0 65 20 7b 54 6f 6e 65 2e 43 72 6f 73 73 46 61 64 e {Tone.CrossFad
67400 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 e}.... * @priva
67410 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
67420 20 20 20 74 68 69 73 2e 5f 64 72 79 57 65 74 20 this._dryWet
67430 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 72 6f 73 73 = new Tone.Cross
67440 46 61 64 65 28 6f 70 74 69 6f 6e 73 2e 77 65 74 Fade(options.wet
67450 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
67460 09 09 09 20 2a 20 20 54 68 65 20 77 65 74 20 63 ... * The wet c
67470 6f 6e 74 72 6f 6c 20 69 73 20 68 6f 77 20 6d 75 ontrol is how mu
67480 63 68 20 6f 66 20 74 68 65 20 65 66 66 65 63 74 ch of the effect
67490 65 64 0a 09 09 09 20 2a 20 20 77 69 6c 6c 20 70 ed.... * will p
674a0 61 73 73 20 74 68 72 6f 75 67 68 20 74 6f 20 74 ass through to t
674b0 68 65 20 6f 75 74 70 75 74 2e 20 31 20 3d 20 31 he output. 1 = 1
674c0 30 30 25 20 65 66 66 65 63 74 65 64 0a 09 09 09 00% effected....
674d0 20 2a 20 20 73 69 67 6e 61 6c 2c 20 30 20 3d 20 * signal, 0 =
674e0 31 30 30 25 20 64 72 79 20 73 69 67 6e 61 6c 2e 100% dry signal.
674f0 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b .... * @type {
67500 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 09 NormalRange}....
67510 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 * @signal....
67520 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
67530 2e 77 65 74 20 3d 20 74 68 69 73 2e 5f 64 72 79 .wet = this._dry
67540 57 65 74 2e 66 61 64 65 3b 0a 09 20 20 20 20 20 Wet.fade;..
67550 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 63 6f /**.... * co
67560 6e 6e 65 63 74 20 74 68 65 20 65 66 66 65 63 74 nnect the effect
67570 53 65 6e 64 20 74 6f 20 74 68 65 20 69 6e 70 75 Send to the inpu
67580 74 20 6f 66 20 68 74 65 20 65 66 66 65 63 74 0a t of hte effect.
67590 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f ... * @type {To
675a0 6e 65 2e 47 61 69 6e 7d 0a 09 09 09 20 2a 20 20 ne.Gain}.... *
675b0 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
675c0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 66 . this.ef
675d0 66 65 63 74 53 65 6e 64 20 3d 20 6e 65 77 20 54 fectSend = new T
675e0 6f 6e 65 2e 47 61 69 6e 28 29 3b 0a 09 20 20 20 one.Gain();..
675f0 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
67600 63 6f 6e 6e 65 63 74 20 74 68 65 20 6f 75 74 70 connect the outp
67610 75 74 20 6f 66 20 74 68 65 20 65 66 66 65 63 74 ut of the effect
67620 20 74 6f 20 74 68 65 20 65 66 66 65 63 74 52 65 to the effectRe
67630 74 75 72 6e 0a 09 09 09 20 2a 20 20 40 74 79 70 turn.... * @typ
67640 65 20 7b 54 6f 6e 65 2e 47 61 69 6e 7d 0a 09 09 e {Tone.Gain}...
67650 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
67660 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
67670 69 73 2e 65 66 66 65 63 74 52 65 74 75 72 6e 20 is.effectReturn
67680 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 = new Tone.Gain(
67690 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 6f );.. //co
676a0 6e 6e 65 63 74 69 6f 6e 73 0a 09 20 20 20 20 20 nnections..
676b0 20 20 20 74 68 69 73 2e 69 6e 70 75 74 2e 63 6f this.input.co
676c0 6e 6e 65 63 74 28 74 68 69 73 2e 5f 64 72 79 57 nnect(this._dryW
676d0 65 74 2e 61 29 3b 0a 09 20 20 20 20 20 20 20 20 et.a);..
676e0 74 68 69 73 2e 69 6e 70 75 74 2e 63 6f 6e 6e 65 this.input.conne
676f0 63 74 28 74 68 69 73 2e 65 66 66 65 63 74 53 65 ct(this.effectSe
67700 6e 64 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 nd);.. th
67710 69 73 2e 65 66 66 65 63 74 52 65 74 75 72 6e 2e is.effectReturn.
67720 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 64 72 connect(this._dr
67730 79 57 65 74 2e 62 29 3b 0a 09 20 20 20 20 20 20 yWet.b);..
67740 20 20 74 68 69 73 2e 5f 64 72 79 57 65 74 2e 63 this._dryWet.c
67750 6f 6e 6e 65 63 74 28 74 68 69 73 2e 6f 75 74 70 onnect(this.outp
67760 75 74 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ut);.. th
67770 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 5b 27 77 is._readOnly(['w
67780 65 74 27 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 et']);.. };..
67790 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 Tone.extend(
677a0 54 6f 6e 65 2e 45 66 66 65 63 74 29 3b 0a 09 20 Tone.Effect);..
677b0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 73 74 /**... * @st
677c0 61 74 69 63 0a 09 09 20 2a 20 20 40 74 79 70 65 atic... * @type
677d0 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a {Object}... */.
677e0 09 20 20 20 20 54 6f 6e 65 2e 45 66 66 65 63 74 . Tone.Effect
677f0 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 20 27 77 .defaults = { 'w
67800 65 74 27 3a 20 31 20 7d 3b 0a 09 20 20 20 20 2f et': 1 };.. /
67810 2a 2a 0a 09 09 20 2a 20 20 63 68 61 69 6e 73 20 **... * chains
67820 74 68 65 20 65 66 66 65 63 74 20 69 6e 20 62 65 the effect in be
67830 74 77 65 65 6e 20 74 68 65 20 65 66 66 65 63 74 tween the effect
67840 53 65 6e 64 20 61 6e 64 20 65 66 66 65 63 74 52 Send and effectR
67850 65 74 75 72 6e 0a 09 09 20 2a 20 20 40 70 61 72 eturn... * @par
67860 61 6d 20 20 7b 54 6f 6e 65 7d 20 65 66 66 65 63 am {Tone} effec
67870 74 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 t... * @private
67880 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
67890 7b 54 6f 6e 65 2e 45 66 66 65 63 74 7d 20 74 68 {Tone.Effect} th
678a0 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
678b0 6e 65 2e 45 66 66 65 63 74 2e 70 72 6f 74 6f 74 ne.Effect.protot
678c0 79 70 65 2e 63 6f 6e 6e 65 63 74 45 66 66 65 63 ype.connectEffec
678d0 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 65 66 t = function (ef
678e0 66 65 63 74 29 20 7b 0a 09 20 20 20 20 20 20 20 fect) {..
678f0 20 74 68 69 73 2e 65 66 66 65 63 74 53 65 6e 64 this.effectSend
67900 2e 63 68 61 69 6e 28 65 66 66 65 63 74 2c 20 74 .chain(effect, t
67910 68 69 73 2e 65 66 66 65 63 74 52 65 74 75 72 6e his.effectReturn
67920 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 );.. retu
67930 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
67940 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
67950 43 6c 65 61 6e 20 75 70 2e 20 0a 09 09 20 2a 20 Clean up. ... *
67960 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e @returns {Tone.
67970 45 66 66 65 63 74 7d 20 74 68 69 73 0a 09 09 20 Effect} this...
67980 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 66 66 */.. Tone.Eff
67990 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 ect.prototype.di
679a0 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e spose = function
679b0 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 () {.. T
679c0 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 one.prototype.di
679d0 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 spose.call(this)
679e0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
679f0 5f 64 72 79 57 65 74 2e 64 69 73 70 6f 73 65 28 _dryWet.dispose(
67a00 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
67a10 2e 5f 64 72 79 57 65 74 20 3d 20 6e 75 6c 6c 3b ._dryWet = null;
67a20 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 .. this.e
67a30 66 66 65 63 74 53 65 6e 64 2e 64 69 73 70 6f 73 ffectSend.dispos
67a40 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
67a50 69 73 2e 65 66 66 65 63 74 53 65 6e 64 20 3d 20 is.effectSend =
67a60 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 null;.. t
67a70 68 69 73 2e 65 66 66 65 63 74 52 65 74 75 72 6e his.effectReturn
67a80 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
67a90 20 20 20 20 20 74 68 69 73 2e 65 66 66 65 63 74 this.effect
67aa0 52 65 74 75 72 6e 20 3d 20 6e 75 6c 6c 3b 0a 09 Return = null;..
67ab0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 77 72 this._wr
67ac0 69 74 61 62 6c 65 28 5b 27 77 65 74 27 5d 29 3b itable(['wet']);
67ad0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 .. this.w
67ae0 65 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 et = null;..
67af0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
67b00 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 .. };.. re
67b10 74 75 72 6e 20 54 6f 6e 65 2e 45 66 66 65 63 74 turn Tone.Effect
67b20 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 ;..});..Module(f
67b30 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b unction (Tone) {
67b40 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a .. .. /**.
67b50 09 09 20 2a 20 20 40 63 6c 61 73 73 20 54 6f 6e .. * @class Ton
67b60 65 2e 41 75 74 6f 46 69 6c 74 65 72 20 69 73 20 e.AutoFilter is
67b70 61 20 54 6f 6e 65 2e 46 69 6c 74 65 72 20 77 69 a Tone.Filter wi
67b80 74 68 20 61 20 54 6f 6e 65 2e 4c 46 4f 20 63 6f th a Tone.LFO co
67b90 6e 6e 65 63 74 65 64 20 74 6f 20 74 68 65 20 66 nnected to the f
67ba0 69 6c 74 65 72 20 63 75 74 6f 66 66 20 66 72 65 ilter cutoff fre
67bb0 71 75 65 6e 63 79 2e 0a 09 09 20 2a 20 20 20 20 quency.... *
67bc0 20 20 20 20 20 53 65 74 74 69 6e 67 20 74 68 65 Setting the
67bd0 20 4c 46 4f 20 72 61 74 65 20 61 6e 64 20 64 65 LFO rate and de
67be0 70 74 68 20 61 6c 6c 6f 77 73 20 66 6f 72 20 63 pth allows for c
67bf0 6f 6e 74 72 6f 6c 20 6f 76 65 72 20 74 68 65 20 ontrol over the
67c00 66 69 6c 74 65 72 20 6d 6f 64 75 6c 61 74 69 6f filter modulatio
67c10 6e 20 72 61 74 65 20 0a 09 09 20 2a 20 20 20 20 n rate ... *
67c20 20 20 20 20 20 61 6e 64 20 64 65 70 74 68 2e 0a and depth..
67c30 09 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 .. *... * @cons
67c40 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 tructor... * @e
67c50 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 45 66 66 xtends {Tone.Eff
67c60 65 63 74 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 ect}... * @para
67c70 6d 20 7b 54 69 6d 65 7c 4f 62 6a 65 63 74 7d 20 m {Time|Object}
67c80 5b 66 72 65 71 75 65 6e 63 79 5d 20 54 68 65 20 [frequency] The
67c90 72 61 74 65 20 6f 66 20 74 68 65 20 4c 46 4f 2e rate of the LFO.
67ca0 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 46 ... * @param {F
67cb0 72 65 71 75 65 6e 63 79 3d 7d 20 62 61 73 65 46 requency=} baseF
67cc0 72 65 71 75 65 6e 63 79 20 54 68 65 20 6c 6f 77 requency The low
67cd0 65 72 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 er value of the
67ce0 4c 46 4f 73 20 6f 73 63 69 6c 6c 61 74 69 6f 6e LFOs oscillation
67cf0 0a 09 20 09 20 2a 20 20 40 70 61 72 61 6d 20 7b .. . * @param {
67d00 46 72 65 71 75 65 6e 63 79 3d 7d 20 6f 63 74 61 Frequency=} octa
67d10 76 65 73 20 54 68 65 20 6e 75 6d 62 65 72 20 6f ves The number o
67d20 66 20 6f 63 74 61 76 65 73 20 61 62 6f 76 65 20 f octaves above
67d30 74 68 65 20 62 61 73 65 46 72 65 71 75 65 6e 63 the baseFrequenc
67d40 79 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 y... * @example
67d50 0a 09 09 20 2a 20 2f 2f 63 72 65 61 74 65 20 61 ... * //create a
67d60 6e 20 61 75 74 6f 66 69 6c 74 65 72 20 61 6e 64 n autofilter and
67d70 20 73 74 61 72 74 20 69 74 27 73 20 4c 46 4f 0a start it's LFO.
67d80 09 09 20 2a 20 76 61 72 20 61 75 74 6f 46 69 6c .. * var autoFil
67d90 74 65 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 41 ter = new Tone.A
67da0 75 74 6f 46 69 6c 74 65 72 28 22 34 6e 22 29 2e utoFilter("4n").
67db0 74 6f 4d 61 73 74 65 72 28 29 2e 73 74 61 72 74 toMaster().start
67dc0 28 29 3b 0a 09 09 20 2a 20 2f 2f 72 6f 75 74 65 ();... * //route
67dd0 20 61 6e 20 6f 73 63 69 6c 6c 61 74 6f 72 20 74 an oscillator t
67de0 68 72 6f 75 67 68 20 74 68 65 20 66 69 6c 74 65 hrough the filte
67df0 72 20 61 6e 64 20 73 74 61 72 74 20 69 74 0a 09 r and start it..
67e00 09 20 2a 20 76 61 72 20 6f 73 63 69 6c 6c 61 74 . * var oscillat
67e10 6f 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4f 73 or = new Tone.Os
67e20 63 69 6c 6c 61 74 6f 72 28 29 2e 63 6f 6e 6e 65 cillator().conne
67e30 63 74 28 61 75 74 6f 46 69 6c 74 65 72 29 2e 73 ct(autoFilter).s
67e40 74 61 72 74 28 29 3b 0a 09 09 20 2a 2f 0a 09 20 tart();... */..
67e50 20 20 20 54 6f 6e 65 2e 41 75 74 6f 46 69 6c 74 Tone.AutoFilt
67e60 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 er = function ()
67e70 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
67e80 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f options = this.o
67e90 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 ptionsObject(arg
67ea0 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 uments, [..
67eb0 20 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 'frequenc
67ec0 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 y',..
67ed0 20 27 62 61 73 65 46 72 65 71 75 65 6e 63 79 27 'baseFrequency'
67ee0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
67ef0 6f 63 74 61 76 65 73 27 0a 09 20 20 20 20 20 20 octaves'..
67f00 20 20 5d 2c 20 54 6f 6e 65 2e 41 75 74 6f 46 69 ], Tone.AutoFi
67f10 6c 74 65 72 2e 64 65 66 61 75 6c 74 73 29 3b 0a lter.defaults);.
67f20 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 45 66 . Tone.Ef
67f30 66 65 63 74 2e 63 61 6c 6c 28 74 68 69 73 2c 20 fect.call(this,
67f40 6f 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 20 options);..
67f50 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 /**.... * th
67f60 65 20 6c 66 6f 20 77 68 69 63 68 20 64 72 69 76 e lfo which driv
67f70 65 73 20 74 68 65 20 66 69 6c 74 65 72 20 63 75 es the filter cu
67f80 74 6f 66 66 0a 09 09 09 20 2a 20 20 40 74 79 70 toff.... * @typ
67f90 65 20 7b 54 6f 6e 65 2e 4c 46 4f 7d 0a 09 09 09 e {Tone.LFO}....
67fa0 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
67fb0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
67fc0 73 2e 5f 6c 66 6f 20 3d 20 6e 65 77 20 54 6f 6e s._lfo = new Ton
67fd0 65 2e 4c 46 4f 28 7b 0a 09 20 20 20 20 20 20 20 e.LFO({..
67fe0 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 'frequency'
67ff0 3a 20 6f 70 74 69 6f 6e 73 2e 66 72 65 71 75 65 : options.freque
68000 6e 63 79 2c 0a 09 20 20 20 20 20 20 20 20 20 20 ncy,..
68010 20 20 27 61 6d 70 6c 69 74 75 64 65 27 3a 20 6f 'amplitude': o
68020 70 74 69 6f 6e 73 2e 64 65 70 74 68 0a 09 20 20 ptions.depth..
68030 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 });..
68040 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 54 68 65 /**.... * The
68050 20 72 61 6e 67 65 20 6f 66 20 74 68 65 20 66 69 range of the fi
68060 6c 74 65 72 20 6d 6f 64 75 6c 61 74 69 6e 67 20 lter modulating
68070 62 65 74 77 65 65 6e 20 74 68 65 20 6d 69 6e 20 between the min
68080 61 6e 64 20 6d 61 78 20 66 72 65 71 75 65 6e 63 and max frequenc
68090 79 2e 20 0a 09 09 09 20 2a 20 30 20 3d 20 6e 6f y. .... * 0 = no
680a0 20 6d 6f 64 75 6c 61 74 69 6f 6e 2e 20 31 20 3d modulation. 1 =
680b0 20 66 75 6c 6c 20 6d 6f 64 75 6c 61 74 69 6f 6e full modulation
680c0 2e 0a 09 09 09 20 2a 20 40 74 79 70 65 20 7b 4e ..... * @type {N
680d0 6f 72 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 09 20 ormalRange}....
680e0 2a 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f * @signal.... */
680f0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 .. this.d
68100 65 70 74 68 20 3d 20 74 68 69 73 2e 5f 6c 66 6f epth = this._lfo
68110 2e 61 6d 70 6c 69 74 75 64 65 3b 0a 09 20 20 20 .amplitude;..
68120 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 48 /**.... * H
68130 6f 77 20 66 61 73 74 20 74 68 65 20 66 69 6c 74 ow fast the filt
68140 65 72 20 6d 6f 64 75 6c 61 74 65 73 20 62 65 74 er modulates bet
68150 77 65 65 6e 20 6d 69 6e 20 61 6e 64 20 6d 61 78 ween min and max
68160 2e 20 0a 09 09 09 20 2a 20 40 74 79 70 65 20 7b . .... * @type {
68170 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 09 20 2a Frequency}.... *
68180 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a @signal.... */.
68190 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 . this.fr
681a0 65 71 75 65 6e 63 79 20 3d 20 74 68 69 73 2e 5f equency = this._
681b0 6c 66 6f 2e 66 72 65 71 75 65 6e 63 79 3b 0a 09 lfo.frequency;..
681c0 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
681d0 2a 20 20 54 68 65 20 66 69 6c 74 65 72 20 6e 6f * The filter no
681e0 64 65 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 de.... * @type
681f0 7b 54 6f 6e 65 2e 46 69 6c 74 65 72 7d 0a 09 09 {Tone.Filter}...
68200 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
68210 69 73 2e 66 69 6c 74 65 72 20 3d 20 6e 65 77 20 is.filter = new
68220 54 6f 6e 65 2e 46 69 6c 74 65 72 28 6f 70 74 69 Tone.Filter(opti
68230 6f 6e 73 2e 66 69 6c 74 65 72 29 3b 0a 09 20 20 ons.filter);..
68240 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
68250 20 54 68 65 20 6f 63 74 61 76 65 73 20 70 6c 61 The octaves pla
68260 63 65 68 6f 6c 64 65 72 0a 09 09 09 20 2a 20 20 ceholder.... *
68270 40 74 79 70 65 20 7b 50 6f 73 69 74 69 76 65 7d @type {Positive}
68280 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
68290 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
682a0 20 74 68 69 73 2e 5f 6f 63 74 61 76 65 73 20 3d this._octaves =
682b0 20 30 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 0;.. //c
682c0 6f 6e 6e 65 63 74 69 6f 6e 73 0a 09 20 20 20 20 onnections..
682d0 20 20 20 20 74 68 69 73 2e 63 6f 6e 6e 65 63 74 this.connect
682e0 45 66 66 65 63 74 28 74 68 69 73 2e 66 69 6c 74 Effect(this.filt
682f0 65 72 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 er);.. th
68300 69 73 2e 5f 6c 66 6f 2e 63 6f 6e 6e 65 63 74 28 is._lfo.connect(
68310 74 68 69 73 2e 66 69 6c 74 65 72 2e 66 72 65 71 this.filter.freq
68320 75 65 6e 63 79 29 3b 0a 09 20 20 20 20 20 20 20 uency);..
68330 20 74 68 69 73 2e 74 79 70 65 20 3d 20 6f 70 74 this.type = opt
68340 69 6f 6e 73 2e 74 79 70 65 3b 0a 09 20 20 20 20 ions.type;..
68350 20 20 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e this._readOn
68360 6c 79 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 ly([..
68370 20 20 27 66 72 65 71 75 65 6e 63 79 27 2c 0a 09 'frequency',..
68380 20 20 20 20 20 20 20 20 20 20 20 20 27 64 65 70 'dep
68390 74 68 27 0a 09 20 20 20 20 20 20 20 20 5d 29 3b th'.. ]);
683a0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f .. this.o
683b0 63 74 61 76 65 73 20 3d 20 6f 70 74 69 6f 6e 73 ctaves = options
683c0 2e 6f 63 74 61 76 65 73 3b 0a 09 20 20 20 20 20 .octaves;..
683d0 20 20 20 74 68 69 73 2e 62 61 73 65 46 72 65 71 this.baseFreq
683e0 75 65 6e 63 79 20 3d 20 6f 70 74 69 6f 6e 73 2e uency = options.
683f0 62 61 73 65 46 72 65 71 75 65 6e 63 79 3b 0a 09 baseFrequency;..
68400 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2f 65 78 };.. //ex
68410 74 65 6e 64 20 45 66 66 65 63 74 0a 09 20 20 20 tend Effect..
68420 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e Tone.extend(Ton
68430 65 2e 41 75 74 6f 46 69 6c 74 65 72 2c 20 54 6f e.AutoFilter, To
68440 6e 65 2e 45 66 66 65 63 74 29 3b 0a 09 20 20 20 ne.Effect);..
68450 20 2f 2a 2a 0a 09 09 20 2a 20 20 64 65 66 61 75 /**... * defau
68460 6c 74 73 0a 09 09 20 2a 20 20 40 73 74 61 74 69 lts... * @stati
68470 63 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4f c... * @type {O
68480 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 bject}... */..
68490 20 20 54 6f 6e 65 2e 41 75 74 6f 46 69 6c 74 65 Tone.AutoFilte
684a0 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 r.defaults = {..
684b0 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 'frequen
684c0 63 79 27 3a 20 31 2c 0a 09 20 20 20 20 20 20 20 cy': 1,..
684d0 20 27 74 79 70 65 27 3a 20 27 73 69 6e 65 27 2c 'type': 'sine',
684e0 0a 09 20 20 20 20 20 20 20 20 27 64 65 70 74 68 .. 'depth
684f0 27 3a 20 31 2c 0a 09 20 20 20 20 20 20 20 20 27 ': 1,.. '
68500 62 61 73 65 46 72 65 71 75 65 6e 63 79 27 3a 20 baseFrequency':
68510 32 30 30 2c 0a 09 20 20 20 20 20 20 20 20 27 6f 200,.. 'o
68520 63 74 61 76 65 73 27 3a 20 32 2e 36 2c 0a 09 20 ctaves': 2.6,..
68530 20 20 20 20 20 20 20 27 66 69 6c 74 65 72 27 3a 'filter':
68540 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
68550 27 74 79 70 65 27 3a 20 27 6c 6f 77 70 61 73 73 'type': 'lowpass
68560 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
68570 27 72 6f 6c 6c 6f 66 66 27 3a 20 2d 31 32 2c 0a 'rolloff': -12,.
68580 09 20 20 20 20 20 20 20 20 20 20 20 20 27 51 27 . 'Q'
68590 3a 20 31 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 : 1.. }..
685a0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
685b0 09 09 20 2a 20 53 74 61 72 74 20 74 68 65 20 65 .. * Start the e
685c0 66 66 65 63 74 2e 0a 09 09 20 2a 20 40 70 61 72 ffect.... * @par
685d0 61 6d 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d am {Time} [time=
685e0 6e 6f 77 5d 20 57 68 65 6e 20 74 68 65 20 4c 46 now] When the LF
685f0 4f 20 77 69 6c 6c 20 73 74 61 72 74 2e 20 0a 09 O will start. ..
68600 09 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 54 6f . * @returns {To
68610 6e 65 2e 41 75 74 6f 46 69 6c 74 65 72 7d 20 74 ne.AutoFilter} t
68620 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
68630 6f 6e 65 2e 41 75 74 6f 46 69 6c 74 65 72 2e 70 one.AutoFilter.p
68640 72 6f 74 6f 74 79 70 65 2e 73 74 61 72 74 20 3d rototype.start =
68650 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 function (time)
68660 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 {.. this
68670 2e 5f 6c 66 6f 2e 73 74 61 72 74 28 74 69 6d 65 ._lfo.start(time
68680 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 );.. retu
68690 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
686a0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 53 .. /**... * S
686b0 74 6f 70 20 74 68 65 20 65 66 66 65 63 74 2e 0a top the effect..
686c0 09 09 20 2a 20 40 70 61 72 61 6d 20 7b 54 69 6d .. * @param {Tim
686d0 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 57 68 e} [time=now] Wh
686e0 65 6e 20 74 68 65 20 4c 46 4f 20 77 69 6c 6c 20 en the LFO will
686f0 73 74 6f 70 2e 20 0a 09 09 20 2a 20 40 72 65 74 stop. ... * @ret
68700 75 72 6e 73 20 7b 54 6f 6e 65 2e 41 75 74 6f 46 urns {Tone.AutoF
68710 69 6c 74 65 72 7d 20 74 68 69 73 0a 09 09 20 2a ilter} this... *
68720 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 41 75 74 6f /.. Tone.Auto
68730 46 69 6c 74 65 72 2e 70 72 6f 74 6f 74 79 70 65 Filter.prototype
68740 2e 73 74 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e .stop = function
68750 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 (time) {..
68760 20 20 20 74 68 69 73 2e 5f 6c 66 6f 2e 73 74 6f this._lfo.sto
68770 70 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 p(time);..
68780 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
68790 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
687a0 09 09 20 2a 20 53 79 6e 63 20 74 68 65 20 66 69 .. * Sync the fi
687b0 6c 74 65 72 20 74 6f 20 74 68 65 20 74 72 61 6e lter to the tran
687c0 73 70 6f 72 74 2e 0a 09 09 20 2a 20 40 70 61 72 sport.... * @par
687d0 61 6d 20 7b 54 69 6d 65 7d 20 5b 64 65 6c 61 79 am {Time} [delay
687e0 3d 30 5d 20 44 65 6c 61 79 20 74 69 6d 65 20 62 =0] Delay time b
687f0 65 66 6f 72 65 20 73 74 61 72 74 69 6e 67 20 74 efore starting t
68800 68 65 20 65 66 66 65 63 74 20 61 66 74 65 72 20 he effect after
68810 74 68 65 0a 09 09 20 2a 20 20 20 20 20 20 20 20 the... *
68820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
68830 20 20 20 20 20 20 20 54 72 61 6e 73 70 6f 72 74 Transport
68840 20 68 61 73 20 73 74 61 72 74 65 64 2e 20 0a 09 has started. ..
68850 09 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 54 6f . * @returns {To
68860 6e 65 2e 41 75 74 6f 46 69 6c 74 65 72 7d 20 74 ne.AutoFilter} t
68870 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
68880 6f 6e 65 2e 41 75 74 6f 46 69 6c 74 65 72 2e 70 one.AutoFilter.p
68890 72 6f 74 6f 74 79 70 65 2e 73 79 6e 63 20 3d 20 rototype.sync =
688a0 66 75 6e 63 74 69 6f 6e 20 28 64 65 6c 61 79 29 function (delay)
688b0 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 {.. this
688c0 2e 5f 6c 66 6f 2e 73 79 6e 63 28 64 65 6c 61 79 ._lfo.sync(delay
688d0 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 );.. retu
688e0 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
688f0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 55 .. /**... * U
68900 6e 73 79 6e 63 20 74 68 65 20 66 69 6c 74 65 72 nsync the filter
68910 20 66 72 6f 6d 20 74 68 65 20 74 72 61 6e 73 70 from the transp
68920 6f 72 74 2e 0a 09 09 20 2a 20 40 72 65 74 75 72 ort.... * @retur
68930 6e 73 20 7b 54 6f 6e 65 2e 41 75 74 6f 46 69 6c ns {Tone.AutoFil
68940 74 65 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a ter} this... */.
68950 09 20 20 20 20 54 6f 6e 65 2e 41 75 74 6f 46 69 . Tone.AutoFi
68960 6c 74 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 75 lter.prototype.u
68970 6e 73 79 6e 63 20 3d 20 66 75 6e 63 74 69 6f 6e nsync = function
68980 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 () {.. t
68990 68 69 73 2e 5f 6c 66 6f 2e 75 6e 73 79 6e 63 28 his._lfo.unsync(
689a0 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 );.. retu
689b0 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
689c0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 .. /**... * T
689d0 79 70 65 20 6f 66 20 6f 73 63 69 6c 6c 61 74 6f ype of oscillato
689e0 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 r attached to th
689f0 65 20 41 75 74 6f 46 69 6c 74 65 72 2e 20 0a 09 e AutoFilter. ..
68a00 09 20 2a 20 50 6f 73 73 69 62 6c 65 20 76 61 6c . * Possible val
68a10 75 65 73 3a 20 22 73 69 6e 65 22 2c 20 22 73 71 ues: "sine", "sq
68a20 75 61 72 65 22 2c 20 22 74 72 69 61 6e 67 6c 65 uare", "triangle
68a30 22 2c 20 22 73 61 77 74 6f 6f 74 68 22 2e 0a 09 ", "sawtooth"...
68a40 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f . * @memberOf To
68a50 6e 65 2e 41 75 74 6f 46 69 6c 74 65 72 23 0a 09 ne.AutoFilter#..
68a60 09 20 2a 20 40 74 79 70 65 20 7b 73 74 72 69 6e . * @type {strin
68a70 67 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 74 79 g}... * @name ty
68a80 70 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 pe... */.. Ob
68a90 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
68aa0 72 74 79 28 54 6f 6e 65 2e 41 75 74 6f 46 69 6c rty(Tone.AutoFil
68ab0 74 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 ter.prototype, '
68ac0 74 79 70 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 type', {..
68ad0 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
68ae0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
68af0 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6c return this._l
68b00 66 6f 2e 74 79 70 65 3b 0a 09 20 20 20 20 20 20 fo.type;..
68b10 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
68b20 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 74 79 70 t: function (typ
68b30 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
68b40 20 20 74 68 69 73 2e 5f 6c 66 6f 2e 74 79 70 65 this._lfo.type
68b50 20 3d 20 74 79 70 65 3b 0a 09 20 20 20 20 20 20 = type;..
68b60 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 }.. });..
68b70 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 6d /**... * The m
68b80 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20 inimum value of
68b90 74 68 65 20 66 69 6c 74 65 72 27 73 20 63 75 74 the filter's cut
68ba0 6f 66 66 20 66 72 65 71 75 65 6e 63 79 2e 0a 09 off frequency...
68bb0 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f . * @memberOf To
68bc0 6e 65 2e 41 75 74 6f 46 69 6c 74 65 72 23 0a 09 ne.AutoFilter#..
68bd0 09 20 2a 20 40 74 79 70 65 20 7b 46 72 65 71 75 . * @type {Frequ
68be0 65 6e 63 79 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 ency}... * @name
68bf0 20 6d 69 6e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 min... */..
68c00 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
68c10 70 65 72 74 79 28 54 6f 6e 65 2e 41 75 74 6f 46 perty(Tone.AutoF
68c20 69 6c 74 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c ilter.prototype,
68c30 20 27 62 61 73 65 46 72 65 71 75 65 6e 63 79 27 'baseFrequency'
68c40 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
68c50 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
68c60 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
68c70 75 72 6e 20 74 68 69 73 2e 5f 6c 66 6f 2e 6d 69 urn this._lfo.mi
68c80 6e 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 n;.. },..
68c90 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e set: fun
68ca0 63 74 69 6f 6e 20 28 66 72 65 71 29 20 7b 0a 09 ction (freq) {..
68cb0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
68cc0 2e 5f 6c 66 6f 2e 6d 69 6e 20 3d 20 74 68 69 73 ._lfo.min = this
68cd0 2e 74 6f 46 72 65 71 75 65 6e 63 79 28 66 72 65 .toFrequency(fre
68ce0 71 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 q);..
68cf0 20 2f 2f 61 6e 64 20 73 65 74 20 74 68 65 20 6d //and set the m
68d00 61 78 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ax..
68d10 74 68 69 73 2e 6f 63 74 61 76 65 73 20 3d 20 74 this.octaves = t
68d20 68 69 73 2e 5f 6f 63 74 61 76 65 73 3b 0a 09 20 his._octaves;..
68d30 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 }.. })
68d40 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
68d50 54 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 The maximum valu
68d60 65 20 6f 66 20 74 68 65 20 66 69 6c 74 65 72 27 e of the filter'
68d70 73 20 63 75 74 6f 66 66 20 66 72 65 71 75 65 6e s cutoff frequen
68d80 63 79 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 cy. ... * @membe
68d90 72 4f 66 20 54 6f 6e 65 2e 41 75 74 6f 46 69 6c rOf Tone.AutoFil
68da0 74 65 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 ter#... * @type
68db0 7b 50 6f 73 69 74 69 76 65 7d 0a 09 09 20 2a 20 {Positive}... *
68dc0 40 6e 61 6d 65 20 6f 63 74 61 76 65 73 0a 09 09 @name octaves...
68dd0 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
68de0 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
68df0 6f 6e 65 2e 41 75 74 6f 46 69 6c 74 65 72 2e 70 one.AutoFilter.p
68e00 72 6f 74 6f 74 79 70 65 2c 20 27 6f 63 74 61 76 rototype, 'octav
68e10 65 73 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 es', {..
68e20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 get: function ()
68e30 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
68e40 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6f 63 74 return this._oct
68e50 61 76 65 73 3b 0a 09 20 20 20 20 20 20 20 20 7d aves;.. }
68e60 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 ,.. set:
68e70 66 75 6e 63 74 69 6f 6e 20 28 6f 63 74 29 20 7b function (oct) {
68e80 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
68e90 69 73 2e 5f 6f 63 74 61 76 65 73 20 3d 20 6f 63 is._octaves = oc
68ea0 74 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 t;..
68eb0 74 68 69 73 2e 5f 6c 66 6f 2e 6d 61 78 20 3d 20 this._lfo.max =
68ec0 74 68 69 73 2e 62 61 73 65 46 72 65 71 75 65 6e this.baseFrequen
68ed0 63 79 20 2a 20 4d 61 74 68 2e 70 6f 77 28 32 2c cy * Math.pow(2,
68ee0 20 6f 63 74 29 3b 0a 09 20 20 20 20 20 20 20 20 oct);..
68ef0 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
68f00 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 /**... * Clean
68f10 75 70 2e 20 0a 09 09 20 2a 20 20 40 72 65 74 75 up. ... * @retu
68f20 72 6e 73 20 7b 54 6f 6e 65 2e 41 75 74 6f 46 69 rns {Tone.AutoFi
68f30 6c 74 65 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f lter} this... */
68f40 0a 09 20 20 20 20 54 6f 6e 65 2e 41 75 74 6f 46 .. Tone.AutoF
68f50 69 6c 74 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e ilter.prototype.
68f60 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 dispose = functi
68f70 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
68f80 20 54 6f 6e 65 2e 45 66 66 65 63 74 2e 70 72 6f Tone.Effect.pro
68f90 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 totype.dispose.c
68fa0 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 all(this);..
68fb0 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 2e 64 69 this._lfo.di
68fc0 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
68fd0 20 20 74 68 69 73 2e 5f 6c 66 6f 20 3d 20 6e 75 this._lfo = nu
68fe0 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
68ff0 73 2e 66 69 6c 74 65 72 2e 64 69 73 70 6f 73 65 s.filter.dispose
69000 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
69010 73 2e 66 69 6c 74 65 72 20 3d 20 6e 75 6c 6c 3b s.filter = null;
69020 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
69030 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 20 writable([..
69040 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 'frequen
69050 63 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 cy',..
69060 20 20 27 64 65 70 74 68 27 0a 09 20 20 20 20 20 'depth'..
69070 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 ]);..
69080 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 20 3d this.frequency =
69090 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
690a0 74 68 69 73 2e 64 65 70 74 68 20 3d 20 6e 75 6c this.depth = nul
690b0 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 l;.. retu
690c0 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
690d0 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e .. return Ton
690e0 65 2e 41 75 74 6f 46 69 6c 74 65 72 3b 0a 09 7d e.AutoFilter;..}
690f0 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
69100 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
69110 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a .. /**... *
69120 20 20 40 63 6c 61 73 73 20 54 6f 6e 65 2e 41 75 @class Tone.Au
69130 74 6f 50 61 6e 6e 65 72 20 69 73 20 61 20 54 6f toPanner is a To
69140 6e 65 2e 50 61 6e 6e 65 72 20 77 69 74 68 20 61 ne.Panner with a
69150 6e 20 4c 46 4f 20 63 6f 6e 6e 65 63 74 65 64 20 n LFO connected
69160 74 6f 20 74 68 65 20 70 61 6e 20 61 6d 6f 75 6e to the pan amoun
69170 74 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 t. ... *
69180 20 4d 6f 72 65 20 6f 6e 20 75 73 69 6e 67 20 61 More on using a
69190 75 74 6f 70 61 6e 6e 65 72 73 20 5b 68 65 72 65 utopanners [here
691a0 5d 28 68 74 74 70 73 3a 2f 2f 77 77 77 2e 61 62 ](https://www.ab
691b0 6c 65 74 6f 6e 2e 63 6f 6d 2f 65 6e 2f 62 6c 6f leton.com/en/blo
691c0 67 2f 61 75 74 6f 70 61 6e 2d 63 68 6f 70 70 65 g/autopan-choppe
691d0 72 2d 65 66 66 65 63 74 2d 61 6e 64 2d 6d 6f 72 r-effect-and-mor
691e0 65 2d 6c 69 76 65 73 63 68 6f 6f 6c 2f 29 2e 0a e-liveschool/)..
691f0 09 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 .. *... * @cons
69200 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 tructor... * @e
69210 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 45 66 66 xtends {Tone.Eff
69220 65 63 74 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 ect}... * @para
69230 6d 20 7b 46 72 65 71 75 65 6e 63 79 7c 4f 62 6a m {Frequency|Obj
69240 65 63 74 7d 20 5b 66 72 65 71 75 65 6e 63 79 5d ect} [frequency]
69250 20 52 61 74 65 20 6f 66 20 6c 65 66 74 2d 72 69 Rate of left-ri
69260 67 68 74 20 6f 73 63 69 6c 6c 61 74 69 6f 6e 2e ght oscillation.
69270 20 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 ... * @example
69280 0a 09 09 20 2a 20 2f 2f 63 72 65 61 74 65 20 61 ... * //create a
69290 6e 20 61 75 74 6f 70 61 6e 6e 65 72 20 61 6e 64 n autopanner and
692a0 20 73 74 61 72 74 20 69 74 27 73 20 4c 46 4f 0a start it's LFO.
692b0 09 09 20 2a 20 76 61 72 20 61 75 74 6f 50 61 6e .. * var autoPan
692c0 6e 65 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 41 ner = new Tone.A
692d0 75 74 6f 50 61 6e 6e 65 72 28 22 34 6e 22 29 2e utoPanner("4n").
692e0 74 6f 4d 61 73 74 65 72 28 29 2e 73 74 61 72 74 toMaster().start
692f0 28 29 3b 0a 09 09 20 2a 20 2f 2f 72 6f 75 74 65 ();... * //route
69300 20 61 6e 20 6f 73 63 69 6c 6c 61 74 6f 72 20 74 an oscillator t
69310 68 72 6f 75 67 68 20 74 68 65 20 70 61 6e 6e 65 hrough the panne
69320 72 20 61 6e 64 20 73 74 61 72 74 20 69 74 0a 09 r and start it..
69330 09 20 2a 20 76 61 72 20 6f 73 63 69 6c 6c 61 74 . * var oscillat
69340 6f 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4f 73 or = new Tone.Os
69350 63 69 6c 6c 61 74 6f 72 28 29 2e 63 6f 6e 6e 65 cillator().conne
69360 63 74 28 61 75 74 6f 50 61 6e 6e 65 72 29 2e 73 ct(autoPanner).s
69370 74 61 72 74 28 29 3b 0a 09 09 20 2a 2f 0a 09 20 tart();... */..
69380 20 20 20 54 6f 6e 65 2e 41 75 74 6f 50 61 6e 6e Tone.AutoPann
69390 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 er = function ()
693a0 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
693b0 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f options = this.o
693c0 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 ptionsObject(arg
693d0 75 6d 65 6e 74 73 2c 20 5b 27 66 72 65 71 75 65 uments, ['freque
693e0 6e 63 79 27 5d 2c 20 54 6f 6e 65 2e 41 75 74 6f ncy'], Tone.Auto
693f0 50 61 6e 6e 65 72 2e 64 65 66 61 75 6c 74 73 29 Panner.defaults)
69400 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e ;.. Tone.
69410 45 66 66 65 63 74 2e 63 61 6c 6c 28 74 68 69 73 Effect.call(this
69420 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 , options);..
69430 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
69440 74 68 65 20 6c 66 6f 20 77 68 69 63 68 20 64 72 the lfo which dr
69450 69 76 65 73 20 74 68 65 20 70 61 6e 6e 69 6e 67 ives the panning
69460 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 .... * @type {T
69470 6f 6e 65 2e 4c 46 4f 7d 0a 09 09 09 20 2a 20 20 one.LFO}.... *
69480 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
69490 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c . this._l
694a0 66 6f 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4c 46 fo = new Tone.LF
694b0 4f 28 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 O({..
694c0 20 27 66 72 65 71 75 65 6e 63 79 27 3a 20 6f 70 'frequency': op
694d0 74 69 6f 6e 73 2e 66 72 65 71 75 65 6e 63 79 2c tions.frequency,
694e0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 61 .. 'a
694f0 6d 70 6c 69 74 75 64 65 27 3a 20 6f 70 74 69 6f mplitude': optio
69500 6e 73 2e 64 65 70 74 68 2c 0a 09 20 20 20 20 20 ns.depth,..
69510 20 20 20 20 20 20 20 27 6d 69 6e 27 3a 20 2d 31 'min': -1
69520 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
69530 6d 61 78 27 3a 20 31 0a 09 20 20 20 20 20 20 20 max': 1..
69540 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a });.. /*
69550 2a 0a 09 09 09 20 2a 20 54 68 65 20 61 6d 6f 75 *.... * The amou
69560 6e 74 20 6f 66 20 70 61 6e 6e 69 6e 67 20 62 65 nt of panning be
69570 74 77 65 65 6e 20 6c 65 66 74 20 61 6e 64 20 72 tween left and r
69580 69 67 68 74 2e 20 0a 09 09 09 20 2a 20 30 20 3d ight. .... * 0 =
69590 20 61 6c 77 61 79 73 20 63 65 6e 74 65 72 2e 20 always center.
695a0 31 20 3d 20 66 75 6c 6c 20 72 61 6e 67 65 20 62 1 = full range b
695b0 65 74 77 65 65 6e 20 6c 65 66 74 20 61 6e 64 20 etween left and
695c0 72 69 67 68 74 2e 20 0a 09 09 09 20 2a 20 40 74 right. .... * @t
695d0 79 70 65 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 ype {NormalRange
695e0 7d 0a 09 09 09 20 2a 20 40 73 69 67 6e 61 6c 0a }.... * @signal.
695f0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
69600 74 68 69 73 2e 64 65 70 74 68 20 3d 20 74 68 69 this.depth = thi
69610 73 2e 5f 6c 66 6f 2e 61 6d 70 6c 69 74 75 64 65 s._lfo.amplitude
69620 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
69630 09 09 20 2a 20 20 74 68 65 20 70 61 6e 6e 65 72 .. * the panner
69640 20 6e 6f 64 65 20 77 68 69 63 68 20 64 6f 65 73 node which does
69650 20 74 68 65 20 70 61 6e 6e 69 6e 67 0a 09 09 09 the panning....
69660 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e * @type {Tone.
69670 50 61 6e 6e 65 72 7d 0a 09 09 09 20 2a 20 20 40 Panner}.... * @
69680 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
69690 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 61 this._pa
696a0 6e 6e 65 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e nner = new Tone.
696b0 50 61 6e 6e 65 72 28 29 3b 0a 09 20 20 20 20 20 Panner();..
696c0 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 48 6f 77 /**.... * How
696d0 20 66 61 73 74 20 74 68 65 20 70 61 6e 6e 65 72 fast the panner
696e0 20 6d 6f 64 75 6c 61 74 65 73 20 62 65 74 77 65 modulates betwe
696f0 65 6e 20 6c 65 66 74 20 61 6e 64 20 72 69 67 68 en left and righ
69700 74 2e 20 0a 09 09 09 20 2a 20 40 74 79 70 65 20 t. .... * @type
69710 7b 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 09 20 {Frequency}....
69720 2a 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f * @signal.... */
69730 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 .. this.f
69740 72 65 71 75 65 6e 63 79 20 3d 20 74 68 69 73 2e requency = this.
69750 5f 6c 66 6f 2e 66 72 65 71 75 65 6e 63 79 3b 0a _lfo.frequency;.
69760 09 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 . //conne
69770 63 74 69 6f 6e 73 0a 09 20 20 20 20 20 20 20 20 ctions..
69780 74 68 69 73 2e 63 6f 6e 6e 65 63 74 45 66 66 65 this.connectEffe
69790 63 74 28 74 68 69 73 2e 5f 70 61 6e 6e 65 72 29 ct(this._panner)
697a0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
697b0 5f 6c 66 6f 2e 63 6f 6e 6e 65 63 74 28 74 68 69 _lfo.connect(thi
697c0 73 2e 5f 70 61 6e 6e 65 72 2e 70 61 6e 29 3b 0a s._panner.pan);.
697d0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 79 . this.ty
697e0 70 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 74 79 70 pe = options.typ
697f0 65 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 e;.. this
69800 2e 5f 72 65 61 64 4f 6e 6c 79 28 5b 0a 09 20 20 ._readOnly([..
69810 20 20 20 20 20 20 20 20 20 20 27 64 65 70 74 68 'depth
69820 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
69830 27 66 72 65 71 75 65 6e 63 79 27 0a 09 20 20 20 'frequency'..
69840 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 7d 3b ]);.. };
69850 0a 09 20 20 20 20 2f 2f 65 78 74 65 6e 64 20 45 .. //extend E
69860 66 66 65 63 74 0a 09 20 20 20 20 54 6f 6e 65 2e ffect.. Tone.
69870 65 78 74 65 6e 64 28 54 6f 6e 65 2e 41 75 74 6f extend(Tone.Auto
69880 50 61 6e 6e 65 72 2c 20 54 6f 6e 65 2e 45 66 66 Panner, Tone.Eff
69890 65 63 74 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 ect);.. /**..
698a0 09 20 2a 20 20 64 65 66 61 75 6c 74 73 0a 09 09 . * defaults...
698b0 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a * @static... *
698c0 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d @type {Object}
698d0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
698e0 2e 41 75 74 6f 50 61 6e 6e 65 72 2e 64 65 66 61 .AutoPanner.defa
698f0 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 ults = {..
69900 20 20 27 66 72 65 71 75 65 6e 63 79 27 3a 20 31 'frequency': 1
69910 2c 0a 09 20 20 20 20 20 20 20 20 27 74 79 70 65 ,.. 'type
69920 27 3a 20 27 73 69 6e 65 27 2c 0a 09 20 20 20 20 ': 'sine',..
69930 20 20 20 20 27 64 65 70 74 68 27 3a 20 31 0a 09 'depth': 1..
69940 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
69950 09 09 20 2a 20 53 74 61 72 74 20 74 68 65 20 65 .. * Start the e
69960 66 66 65 63 74 2e 0a 09 09 20 2a 20 40 70 61 72 ffect.... * @par
69970 61 6d 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d am {Time} [time=
69980 6e 6f 77 5d 20 57 68 65 6e 20 74 68 65 20 4c 46 now] When the LF
69990 4f 20 77 69 6c 6c 20 73 74 61 72 74 2e 20 0a 09 O will start. ..
699a0 09 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 54 6f . * @returns {To
699b0 6e 65 2e 41 75 74 6f 50 61 6e 6e 65 72 7d 20 74 ne.AutoPanner} t
699c0 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
699d0 6f 6e 65 2e 41 75 74 6f 50 61 6e 6e 65 72 2e 70 one.AutoPanner.p
699e0 72 6f 74 6f 74 79 70 65 2e 73 74 61 72 74 20 3d rototype.start =
699f0 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 function (time)
69a00 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 {.. this
69a10 2e 5f 6c 66 6f 2e 73 74 61 72 74 28 74 69 6d 65 ._lfo.start(time
69a20 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 );.. retu
69a30 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
69a40 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 53 .. /**... * S
69a50 74 6f 70 20 74 68 65 20 65 66 66 65 63 74 2e 0a top the effect..
69a60 09 09 20 2a 20 40 70 61 72 61 6d 20 7b 54 69 6d .. * @param {Tim
69a70 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 57 68 e} [time=now] Wh
69a80 65 6e 20 74 68 65 20 4c 46 4f 20 77 69 6c 6c 20 en the LFO will
69a90 73 74 6f 70 2e 20 0a 09 09 20 2a 20 40 72 65 74 stop. ... * @ret
69aa0 75 72 6e 73 20 7b 54 6f 6e 65 2e 41 75 74 6f 50 urns {Tone.AutoP
69ab0 61 6e 6e 65 72 7d 20 74 68 69 73 0a 09 09 20 2a anner} this... *
69ac0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 41 75 74 6f /.. Tone.Auto
69ad0 50 61 6e 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 Panner.prototype
69ae0 2e 73 74 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e .stop = function
69af0 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 (time) {..
69b00 20 20 20 74 68 69 73 2e 5f 6c 66 6f 2e 73 74 6f this._lfo.sto
69b10 70 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 p(time);..
69b20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
69b30 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
69b40 09 09 20 2a 20 53 79 6e 63 20 74 68 65 20 70 61 .. * Sync the pa
69b50 6e 6e 65 72 20 74 6f 20 74 68 65 20 74 72 61 6e nner to the tran
69b60 73 70 6f 72 74 2e 0a 09 09 20 2a 20 40 70 61 72 sport.... * @par
69b70 61 6d 20 7b 54 69 6d 65 7d 20 5b 64 65 6c 61 79 am {Time} [delay
69b80 3d 30 5d 20 44 65 6c 61 79 20 74 69 6d 65 20 62 =0] Delay time b
69b90 65 66 6f 72 65 20 73 74 61 72 74 69 6e 67 20 74 efore starting t
69ba0 68 65 20 65 66 66 65 63 74 20 61 66 74 65 72 20 he effect after
69bb0 74 68 65 0a 09 09 20 2a 20 20 20 20 20 20 20 20 the... *
69bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
69bd0 20 20 20 20 20 20 20 54 72 61 6e 73 70 6f 72 74 Transport
69be0 20 68 61 73 20 73 74 61 72 74 65 64 2e 20 0a 09 has started. ..
69bf0 09 20 2a 20 40 72 65 74 75 72 6e 73 20 7b 54 6f . * @returns {To
69c00 6e 65 2e 41 75 74 6f 50 61 6e 6e 65 72 7d 20 74 ne.AutoPanner} t
69c10 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
69c20 6f 6e 65 2e 41 75 74 6f 50 61 6e 6e 65 72 2e 70 one.AutoPanner.p
69c30 72 6f 74 6f 74 79 70 65 2e 73 79 6e 63 20 3d 20 rototype.sync =
69c40 66 75 6e 63 74 69 6f 6e 20 28 64 65 6c 61 79 29 function (delay)
69c50 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 {.. this
69c60 2e 5f 6c 66 6f 2e 73 79 6e 63 28 64 65 6c 61 79 ._lfo.sync(delay
69c70 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 );.. retu
69c80 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
69c90 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 55 .. /**... * U
69ca0 6e 73 79 6e 63 20 74 68 65 20 70 61 6e 6e 65 72 nsync the panner
69cb0 20 66 72 6f 6d 20 74 68 65 20 74 72 61 6e 73 70 from the transp
69cc0 6f 72 74 0a 09 09 20 2a 20 40 72 65 74 75 72 6e ort... * @return
69cd0 73 20 7b 54 6f 6e 65 2e 41 75 74 6f 50 61 6e 6e s {Tone.AutoPann
69ce0 65 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 er} this... */..
69cf0 20 20 20 20 54 6f 6e 65 2e 41 75 74 6f 50 61 6e Tone.AutoPan
69d00 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 75 6e ner.prototype.un
69d10 73 79 6e 63 20 3d 20 66 75 6e 63 74 69 6f 6e 20 sync = function
69d20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 () {.. th
69d30 69 73 2e 5f 6c 66 6f 2e 75 6e 73 79 6e 63 28 29 is._lfo.unsync()
69d40 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
69d50 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
69d60 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 79 . /**... * Ty
69d70 70 65 20 6f 66 20 6f 73 63 69 6c 6c 61 74 6f 72 pe of oscillator
69d80 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 attached to the
69d90 20 41 75 74 6f 46 69 6c 74 65 72 2e 20 0a 09 09 AutoFilter. ...
69da0 20 2a 20 50 6f 73 73 69 62 6c 65 20 76 61 6c 75 * Possible valu
69db0 65 73 3a 20 22 73 69 6e 65 22 2c 20 22 73 71 75 es: "sine", "squ
69dc0 61 72 65 22 2c 20 22 74 72 69 61 6e 67 6c 65 22 are", "triangle"
69dd0 2c 20 22 73 61 77 74 6f 6f 74 68 22 2e 0a 09 09 , "sawtooth"....
69de0 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
69df0 65 2e 41 75 74 6f 46 69 6c 74 65 72 23 0a 09 09 e.AutoFilter#...
69e00 20 2a 20 40 74 79 70 65 20 7b 73 74 72 69 6e 67 * @type {string
69e10 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 74 79 70 }... * @name typ
69e20 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a e... */.. Obj
69e30 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
69e40 74 79 28 54 6f 6e 65 2e 41 75 74 6f 50 61 6e 6e ty(Tone.AutoPann
69e50 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 74 er.prototype, 't
69e60 79 70 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 ype', {..
69e70 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
69e80 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
69e90 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6c 66 return this._lf
69ea0 6f 2e 74 79 70 65 3b 0a 09 20 20 20 20 20 20 20 o.type;..
69eb0 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 },.. set
69ec0 3a 20 66 75 6e 63 74 69 6f 6e 20 28 74 79 70 65 : function (type
69ed0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
69ee0 20 74 68 69 73 2e 5f 6c 66 6f 2e 74 79 70 65 20 this._lfo.type
69ef0 3d 20 74 79 70 65 3b 0a 09 20 20 20 20 20 20 20 = type;..
69f00 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
69f10 20 2f 2a 2a 0a 09 09 20 2a 20 20 63 6c 65 61 6e /**... * clean
69f20 20 75 70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 up... * @retur
69f30 6e 73 20 7b 54 6f 6e 65 2e 41 75 74 6f 50 61 6e ns {Tone.AutoPan
69f40 6e 65 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a ner} this... */.
69f50 09 20 20 20 20 54 6f 6e 65 2e 41 75 74 6f 50 61 . Tone.AutoPa
69f60 6e 6e 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 nner.prototype.d
69f70 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f ispose = functio
69f80 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
69f90 54 6f 6e 65 2e 45 66 66 65 63 74 2e 70 72 6f 74 Tone.Effect.prot
69fa0 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 otype.dispose.ca
69fb0 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 ll(this);..
69fc0 20 20 20 74 68 69 73 2e 5f 6c 66 6f 2e 64 69 73 this._lfo.dis
69fd0 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
69fe0 20 74 68 69 73 2e 5f 6c 66 6f 20 3d 20 6e 75 6c this._lfo = nul
69ff0 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
6a000 2e 5f 70 61 6e 6e 65 72 2e 64 69 73 70 6f 73 65 ._panner.dispose
6a010 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
6a020 73 2e 5f 70 61 6e 6e 65 72 20 3d 20 6e 75 6c 6c s._panner = null
6a030 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
6a040 5f 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 _writable([..
6a050 20 20 20 20 20 20 20 20 20 27 64 65 70 74 68 27 'depth'
6a060 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
6a070 66 72 65 71 75 65 6e 63 79 27 0a 09 20 20 20 20 frequency'..
6a080 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 ]);..
6a090 20 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 20 this.frequency
6a0a0 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
6a0b0 20 74 68 69 73 2e 64 65 70 74 68 20 3d 20 6e 75 this.depth = nu
6a0c0 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ll;.. ret
6a0d0 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
6a0e0 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f ;.. return To
6a0f0 6e 65 2e 41 75 74 6f 50 61 6e 6e 65 72 3b 0a 09 ne.AutoPanner;..
6a100 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 });..Module(func
6a110 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 tion (Tone) {..
6a120 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 .. /**...
6a130 2a 20 20 40 63 6c 61 73 73 20 20 54 6f 6e 65 2e * @class Tone.
6a140 41 75 74 6f 57 61 68 20 63 6f 6e 6e 65 63 74 73 AutoWah connects
6a150 20 61 20 54 6f 6e 65 2e 46 6f 6c 6c 6f 77 65 72 a Tone.Follower
6a160 20 74 6f 20 61 20 62 61 6e 64 70 61 73 73 20 66 to a bandpass f
6a170 69 6c 74 65 72 20 28 54 6f 6e 65 2e 46 69 6c 74 ilter (Tone.Filt
6a180 65 72 29 2e 0a 09 09 20 2a 20 20 20 20 20 20 20 er).... *
6a190 20 20 20 54 68 65 20 66 72 65 71 75 65 6e 63 79 The frequency
6a1a0 20 6f 66 20 74 68 65 20 66 69 6c 74 65 72 20 69 of the filter i
6a1b0 73 20 61 64 6a 75 73 74 65 64 20 70 72 6f 70 6f s adjusted propo
6a1c0 72 74 69 6f 6e 61 6c 6c 79 20 74 6f 20 74 68 65 rtionally to the
6a1d0 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 ... *
6a1e0 69 6e 63 6f 6d 69 6e 67 20 73 69 67 6e 61 6c 27 incoming signal'
6a1f0 73 20 61 6d 70 6c 69 74 75 64 65 2e 20 49 6e 73 s amplitude. Ins
6a200 70 69 72 61 74 69 6f 6e 20 66 72 6f 6d 20 5b 54 piration from [T
6a210 75 6e 61 2e 6a 73 5d 28 68 74 74 70 73 3a 2f 2f una.js](https://
6a220 67 69 74 68 75 62 2e 63 6f 6d 2f 44 69 6e 61 68 github.com/Dinah
6a230 6d 6f 65 2f 74 75 6e 61 29 2e 0a 09 09 20 2a 0a moe/tuna).... *.
6a240 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 .. * @construct
6a250 6f 72 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 or... * @extend
6a260 73 20 7b 54 6f 6e 65 2e 45 66 66 65 63 74 7d 0a s {Tone.Effect}.
6a270 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 46 72 .. * @param {Fr
6a280 65 71 75 65 6e 63 79 7c 4f 62 6a 65 63 74 7d 20 equency|Object}
6a290 5b 62 61 73 65 46 72 65 71 75 65 6e 63 79 5d 20 [baseFrequency]
6a2a0 54 68 65 20 66 72 65 71 75 65 6e 63 79 20 74 68 The frequency th
6a2b0 65 20 66 69 6c 74 65 72 20 69 73 20 73 65 74 20 e filter is set
6a2c0 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 ... *
6a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6a2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6a2f0 20 74 6f 20 61 74 20 74 68 65 20 6c 6f 77 20 70 to at the low p
6a300 6f 69 6e 74 20 6f 66 20 74 68 65 20 77 61 68 0a oint of the wah.
6a310 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 50 6f .. * @param {Po
6a320 73 69 74 69 76 65 7d 20 5b 6f 63 74 61 76 65 73 sitive} [octaves
6a330 5d 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 ] The number of
6a340 6f 63 74 61 76 65 73 20 61 62 6f 76 65 20 74 68 octaves above th
6a350 65 20 62 61 73 65 46 72 65 71 75 65 6e 63 79 0a e baseFrequency.
6a360 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 .. *
6a370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6a380 20 20 20 20 74 68 65 20 66 69 6c 74 65 72 20 77 the filter w
6a390 69 6c 6c 20 73 77 65 65 70 20 74 6f 20 77 68 65 ill sweep to whe
6a3a0 6e 20 66 75 6c 6c 79 20 6f 70 65 6e 0a 09 09 20 n fully open...
6a3b0 2a 20 20 40 70 61 72 61 6d 20 7b 44 65 63 69 62 * @param {Decib
6a3c0 65 6c 73 7d 20 5b 73 65 6e 73 69 74 69 76 69 74 els} [sensitivit
6a3d0 79 5d 20 54 68 65 20 64 65 63 69 62 65 6c 20 74 y] The decibel t
6a3e0 68 72 65 73 68 6f 6c 64 20 73 65 6e 73 69 74 69 hreshold sensiti
6a3f0 76 69 74 79 20 66 6f 72 20 0a 09 09 20 2a 20 20 vity for ... *
6a400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6a410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6a420 20 74 68 65 20 69 6e 63 6f 6d 69 6e 67 20 73 69 the incoming si
6a430 67 6e 61 6c 2e 20 4e 6f 72 6d 61 6c 20 72 61 6e gnal. Normal ran
6a440 67 65 20 6f 66 20 2d 34 30 20 74 6f 20 30 2e 20 ge of -40 to 0.
6a450 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
6a460 09 09 20 2a 20 76 61 72 20 61 75 74 6f 57 61 68 .. * var autoWah
6a470 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 41 75 74 6f = new Tone.Auto
6a480 57 61 68 28 35 30 2c 20 36 2c 20 2d 33 30 29 2e Wah(50, 6, -30).
6a490 74 6f 4d 61 73 74 65 72 28 29 3b 0a 09 09 20 2a toMaster();... *
6a4a0 20 2f 2f 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 //initialize th
6a4b0 65 20 73 79 6e 74 68 20 61 6e 64 20 63 6f 6e 6e e synth and conn
6a4c0 65 63 74 20 74 6f 20 61 75 74 6f 77 61 68 0a 09 ect to autowah..
6a4d0 09 20 2a 20 76 61 72 20 73 79 6e 74 68 20 3d 20 . * var synth =
6a4e0 6e 65 77 20 53 79 6e 74 68 2e 63 6f 6e 6e 65 63 new Synth.connec
6a4f0 74 28 61 75 74 6f 57 61 68 29 3b 0a 09 09 20 2a t(autoWah);... *
6a500 20 2f 2f 51 20 76 61 6c 75 65 20 69 6e 66 6c 75 //Q value influ
6a510 65 6e 63 65 73 20 74 68 65 20 65 66 66 65 63 74 ences the effect
6a520 20 6f 66 20 74 68 65 20 77 61 68 20 2d 20 64 65 of the wah - de
6a530 66 61 75 6c 74 20 69 73 20 32 0a 09 09 20 2a 20 fault is 2... *
6a540 61 75 74 6f 57 61 68 2e 51 2e 76 61 6c 75 65 20 autoWah.Q.value
6a550 3d 20 36 3b 0a 09 09 20 2a 20 2f 2f 6d 6f 72 65 = 6;... * //more
6a560 20 61 75 64 69 62 6c 65 20 6f 6e 20 68 69 67 68 audible on high
6a570 65 72 20 6e 6f 74 65 73 0a 09 09 20 2a 20 73 79 er notes... * sy
6a580 6e 74 68 2e 74 72 69 67 67 65 72 41 74 74 61 63 nth.triggerAttac
6a590 6b 52 65 6c 65 61 73 65 28 22 43 34 22 2c 20 22 kRelease("C4", "
6a5a0 38 6e 22 29 0a 09 09 20 2a 2f 0a 09 20 20 20 20 8n")... */..
6a5b0 54 6f 6e 65 2e 41 75 74 6f 57 61 68 20 3d 20 66 Tone.AutoWah = f
6a5c0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
6a5d0 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e var option
6a5e0 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 s = this.options
6a5f0 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 Object(arguments
6a600 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 , [..
6a610 20 27 62 61 73 65 46 72 65 71 75 65 6e 63 79 27 'baseFrequency'
6a620 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
6a630 6f 63 74 61 76 65 73 27 2c 0a 09 20 20 20 20 20 octaves',..
6a640 20 20 20 20 20 20 20 27 73 65 6e 73 69 74 69 76 'sensitiv
6a650 69 74 79 27 0a 09 20 20 20 20 20 20 20 20 5d 2c ity'.. ],
6a660 20 54 6f 6e 65 2e 41 75 74 6f 57 61 68 2e 64 65 Tone.AutoWah.de
6a670 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 faults);..
6a680 20 20 54 6f 6e 65 2e 45 66 66 65 63 74 2e 63 61 Tone.Effect.ca
6a690 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 ll(this, options
6a6a0 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
6a6b0 09 09 09 20 2a 20 20 54 68 65 20 65 6e 76 65 6c ... * The envel
6a6c0 6f 70 65 20 66 6f 6c 6c 6f 77 65 72 2e 20 53 65 ope follower. Se
6a6d0 74 20 74 68 65 20 61 74 74 61 63 6b 2f 72 65 6c t the attack/rel
6a6e0 65 61 73 65 0a 09 09 09 20 2a 20 20 74 69 6d 69 ease.... * timi
6a6f0 6e 67 20 74 6f 20 61 64 6a 75 73 74 20 68 6f 77 ng to adjust how
6a700 20 74 68 65 20 65 6e 76 65 6c 6f 70 65 20 69 73 the envelope is
6a710 20 66 6f 6c 6c 6f 77 65 64 2e 20 0a 09 09 09 20 followed. ....
6a720 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 46 * @type {Tone.F
6a730 6f 6c 6c 6f 77 65 72 7d 0a 09 09 09 20 2a 20 20 ollower}.... *
6a740 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
6a750 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 6f . this.fo
6a760 6c 6c 6f 77 65 72 20 3d 20 6e 65 77 20 54 6f 6e llower = new Ton
6a770 65 2e 46 6f 6c 6c 6f 77 65 72 28 6f 70 74 69 6f e.Follower(optio
6a780 6e 73 2e 66 6f 6c 6c 6f 77 65 72 29 3b 0a 09 20 ns.follower);..
6a790 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
6a7a0 20 20 73 63 61 6c 65 73 20 74 68 65 20 66 6f 6c scales the fol
6a7b0 6c 6f 77 65 72 20 76 61 6c 75 65 20 74 6f 20 74 lower value to t
6a7c0 68 65 20 66 72 65 71 75 65 6e 63 79 20 64 6f 6d he frequency dom
6a7d0 61 69 6e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 ain.... * @type
6a7e0 20 7b 54 6f 6e 65 7d 0a 09 09 09 20 2a 20 20 40 {Tone}.... * @
6a7f0 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
6a800 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 77 this._sw
6a810 65 65 70 52 61 6e 67 65 20 3d 20 6e 65 77 20 54 eepRange = new T
6a820 6f 6e 65 2e 53 63 61 6c 65 45 78 70 28 30 2c 20 one.ScaleExp(0,
6a830 31 2c 20 30 2e 35 29 3b 0a 09 20 20 20 20 20 20 1, 0.5);..
6a840 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 40 74 79 /**.... * @ty
6a850 70 65 20 7b 6e 75 6d 62 65 72 7d 0a 09 09 09 20 pe {number}....
6a860 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
6a870 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
6a880 2e 5f 62 61 73 65 46 72 65 71 75 65 6e 63 79 20 ._baseFrequency
6a890 3d 20 6f 70 74 69 6f 6e 73 2e 62 61 73 65 46 72 = options.baseFr
6a8a0 65 71 75 65 6e 63 79 3b 0a 09 20 20 20 20 20 20 equency;..
6a8b0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 40 74 79 /**.... * @ty
6a8c0 70 65 20 7b 6e 75 6d 62 65 72 7d 0a 09 09 09 20 pe {number}....
6a8d0 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
6a8e0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
6a8f0 2e 5f 6f 63 74 61 76 65 73 20 3d 20 6f 70 74 69 ._octaves = opti
6a900 6f 6e 73 2e 6f 63 74 61 76 65 73 3b 0a 09 20 20 ons.octaves;..
6a910 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
6a920 20 74 68 65 20 69 6e 70 75 74 20 67 61 69 6e 20 the input gain
6a930 74 6f 20 61 64 6a 75 73 74 20 74 68 65 20 73 65 to adjust the se
6a940 6e 73 69 74 69 76 69 74 79 0a 09 09 09 20 2a 20 nsitivity.... *
6a950 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 47 61 69 @type {Tone.Gai
6a960 6e 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 n}.... * @priva
6a970 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
6a980 20 20 20 74 68 69 73 2e 5f 69 6e 70 75 74 42 6f this._inputBo
6a990 6f 73 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 ost = new Tone.G
6a9a0 61 69 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ain();..
6a9b0 2f 2a 2a 0a 09 09 09 20 2a 20 20 40 74 79 70 65 /**.... * @type
6a9c0 20 7b 42 69 71 75 61 64 46 69 6c 74 65 72 4e 6f {BiquadFilterNo
6a9d0 64 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 de}.... * @priv
6a9e0 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
6a9f0 20 20 20 20 74 68 69 73 2e 5f 62 61 6e 64 70 61 this._bandpa
6aa00 73 73 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 46 69 ss = new Tone.Fi
6aa10 6c 74 65 72 28 7b 0a 09 20 20 20 20 20 20 20 20 lter({..
6aa20 20 20 20 20 27 72 6f 6c 6c 6f 66 66 27 3a 20 2d 'rolloff': -
6aa30 34 38 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 48,..
6aa40 20 27 66 72 65 71 75 65 6e 63 79 27 3a 20 30 2c 'frequency': 0,
6aa50 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 51 .. 'Q
6aa60 27 3a 20 6f 70 74 69 6f 6e 73 2e 51 0a 09 20 20 ': options.Q..
6aa70 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 });..
6aa80 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 40 74 /**.... * @t
6aa90 79 70 65 20 7b 54 6f 6e 65 2e 46 69 6c 74 65 72 ype {Tone.Filter
6aaa0 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
6aab0 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
6aac0 20 20 74 68 69 73 2e 5f 70 65 61 6b 69 6e 67 20 this._peaking
6aad0 3d 20 6e 65 77 20 54 6f 6e 65 2e 46 69 6c 74 65 = new Tone.Filte
6aae0 72 28 30 2c 20 27 70 65 61 6b 69 6e 67 27 29 3b r(0, 'peaking');
6aaf0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
6ab00 70 65 61 6b 69 6e 67 2e 67 61 69 6e 2e 76 61 6c peaking.gain.val
6ab10 75 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 67 61 69 ue = options.gai
6ab20 6e 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a n;.. /**.
6ab30 09 09 09 20 2a 20 54 68 65 20 67 61 69 6e 20 6f ... * The gain o
6ab40 66 20 74 68 65 20 66 69 6c 74 65 72 2e 0a 09 09 f the filter....
6ab50 09 20 2a 20 40 74 79 70 65 20 7b 4e 75 6d 62 65 . * @type {Numbe
6ab60 72 7d 0a 09 09 09 20 2a 20 40 73 69 67 6e 61 6c r}.... * @signal
6ab70 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
6ab80 20 74 68 69 73 2e 67 61 69 6e 20 3d 20 74 68 69 this.gain = thi
6ab90 73 2e 5f 70 65 61 6b 69 6e 67 2e 67 61 69 6e 3b s._peaking.gain;
6aba0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
6abb0 09 20 2a 20 54 68 65 20 71 75 61 6c 69 74 79 20 . * The quality
6abc0 6f 66 20 74 68 65 20 66 69 6c 74 65 72 2e 0a 09 of the filter...
6abd0 09 09 20 2a 20 40 74 79 70 65 20 7b 50 6f 73 69 .. * @type {Posi
6abe0 74 69 76 65 7d 0a 09 09 09 20 2a 20 40 73 69 67 tive}.... * @sig
6abf0 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 nal.... */..
6ac00 20 20 20 20 74 68 69 73 2e 51 20 3d 20 74 68 69 this.Q = thi
6ac10 73 2e 5f 62 61 6e 64 70 61 73 73 2e 51 3b 0a 09 s._bandpass.Q;..
6ac20 20 20 20 20 20 20 20 20 2f 2f 74 68 65 20 63 6f //the co
6ac30 6e 74 72 6f 6c 20 73 69 67 6e 61 6c 20 70 61 74 ntrol signal pat
6ac40 68 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e h.. this.
6ac50 65 66 66 65 63 74 53 65 6e 64 2e 63 68 61 69 6e effectSend.chain
6ac60 28 74 68 69 73 2e 5f 69 6e 70 75 74 42 6f 6f 73 (this._inputBoos
6ac70 74 2c 20 74 68 69 73 2e 66 6f 6c 6c 6f 77 65 72 t, this.follower
6ac80 2c 20 74 68 69 73 2e 5f 73 77 65 65 70 52 61 6e , this._sweepRan
6ac90 67 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ge);.. th
6aca0 69 73 2e 5f 73 77 65 65 70 52 61 6e 67 65 2e 63 is._sweepRange.c
6acb0 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 62 61 6e onnect(this._ban
6acc0 64 70 61 73 73 2e 66 72 65 71 75 65 6e 63 79 29 dpass.frequency)
6acd0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
6ace0 5f 73 77 65 65 70 52 61 6e 67 65 2e 63 6f 6e 6e _sweepRange.conn
6acf0 65 63 74 28 74 68 69 73 2e 5f 70 65 61 6b 69 6e ect(this._peakin
6ad00 67 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a 09 20 g.frequency);..
6ad10 20 20 20 20 20 20 20 2f 2f 74 68 65 20 66 69 6c //the fil
6ad20 74 65 72 65 64 20 70 61 74 68 0a 09 20 20 20 20 tered path..
6ad30 20 20 20 20 74 68 69 73 2e 65 66 66 65 63 74 53 this.effectS
6ad40 65 6e 64 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f end.chain(this._
6ad50 62 61 6e 64 70 61 73 73 2c 20 74 68 69 73 2e 5f bandpass, this._
6ad60 70 65 61 6b 69 6e 67 2c 20 74 68 69 73 2e 65 66 peaking, this.ef
6ad70 66 65 63 74 52 65 74 75 72 6e 29 3b 0a 09 20 20 fectReturn);..
6ad80 20 20 20 20 20 20 2f 2f 73 65 74 20 74 68 65 20 //set the
6ad90 69 6e 69 74 69 61 6c 20 76 61 6c 75 65 0a 09 20 initial value..
6ada0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 65 74 this._set
6adb0 53 77 65 65 70 52 61 6e 67 65 28 29 3b 0a 09 20 SweepRange();..
6adc0 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 6e 73 this.sens
6add0 69 74 69 76 69 74 79 20 3d 20 6f 70 74 69 6f 6e itivity = option
6ade0 73 2e 73 65 6e 73 69 74 69 76 69 74 79 3b 0a 09 s.sensitivity;..
6adf0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 this._re
6ae00 61 64 4f 6e 6c 79 28 5b 0a 09 20 20 20 20 20 20 adOnly([..
6ae10 20 20 20 20 20 20 27 67 61 69 6e 27 2c 0a 09 20 'gain',..
6ae20 20 20 20 20 20 20 20 20 20 20 20 27 51 27 0a 09 'Q'..
6ae30 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 ]);..
6ae40 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 };.. Tone.ex
6ae50 74 65 6e 64 28 54 6f 6e 65 2e 41 75 74 6f 57 61 tend(Tone.AutoWa
6ae60 68 2c 20 54 6f 6e 65 2e 45 66 66 65 63 74 29 3b h, Tone.Effect);
6ae70 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
6ae80 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 74 @static... * @t
6ae90 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 ype {Object}...
6aea0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 41 75 74 */.. Tone.Aut
6aeb0 6f 57 61 68 2e 64 65 66 61 75 6c 74 73 20 3d 20 oWah.defaults =
6aec0 7b 0a 09 20 20 20 20 20 20 20 20 27 62 61 73 65 {.. 'base
6aed0 46 72 65 71 75 65 6e 63 79 27 3a 20 31 30 30 2c Frequency': 100,
6aee0 0a 09 20 20 20 20 20 20 20 20 27 6f 63 74 61 76 .. 'octav
6aef0 65 73 27 3a 20 36 2c 0a 09 20 20 20 20 20 20 20 es': 6,..
6af00 20 27 73 65 6e 73 69 74 69 76 69 74 79 27 3a 20 'sensitivity':
6af10 30 2c 0a 09 20 20 20 20 20 20 20 20 27 51 27 3a 0,.. 'Q':
6af20 20 32 2c 0a 09 20 20 20 20 20 20 20 20 27 67 61 2,.. 'ga
6af30 69 6e 27 3a 20 32 2c 0a 09 20 20 20 20 20 20 20 in': 2,..
6af40 20 27 66 6f 6c 6c 6f 77 65 72 27 3a 20 7b 0a 09 'follower': {..
6af50 20 20 20 20 20 20 20 20 20 20 20 20 27 61 74 74 'att
6af60 61 63 6b 27 3a 20 30 2e 33 2c 0a 09 20 20 20 20 ack': 0.3,..
6af70 20 20 20 20 20 20 20 20 27 72 65 6c 65 61 73 65 'release
6af80 27 3a 20 30 2e 35 0a 09 20 20 20 20 20 20 20 20 ': 0.5..
6af90 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f }.. };.. /
6afa0 2a 2a 0a 09 09 20 2a 20 54 68 65 20 6e 75 6d 62 **... * The numb
6afb0 65 72 20 6f 66 20 6f 63 74 61 76 65 73 20 74 68 er of octaves th
6afc0 61 74 20 74 68 65 20 66 69 6c 74 65 72 20 77 69 at the filter wi
6afd0 6c 6c 20 73 77 65 65 70 20 61 62 6f 76 65 20 74 ll sweep above t
6afe0 68 65 20 0a 09 09 20 2a 20 62 61 73 65 46 72 65 he ... * baseFre
6aff0 71 75 65 6e 63 79 2e 20 0a 09 09 20 2a 20 40 6d quency. ... * @m
6b000 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 41 75 74 emberOf Tone.Aut
6b010 6f 57 61 68 23 0a 09 09 20 2a 20 40 74 79 70 65 oWah#... * @type
6b020 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 40 {Number}... * @
6b030 6e 61 6d 65 20 6f 63 74 61 76 65 73 0a 09 09 20 name octaves...
6b040 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 */.. Object.d
6b050 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f efineProperty(To
6b060 6e 65 2e 41 75 74 6f 57 61 68 2e 70 72 6f 74 6f ne.AutoWah.proto
6b070 74 79 70 65 2c 20 27 6f 63 74 61 76 65 73 27 2c type, 'octaves',
6b080 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
6b090 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
6b0a0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
6b0b0 72 6e 20 74 68 69 73 2e 5f 6f 63 74 61 76 65 73 rn this._octaves
6b0c0 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 ;.. },..
6b0d0 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 set: func
6b0e0 74 69 6f 6e 20 28 6f 63 74 61 76 65 73 29 20 7b tion (octaves) {
6b0f0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
6b100 69 73 2e 5f 6f 63 74 61 76 65 73 20 3d 20 6f 63 is._octaves = oc
6b110 74 61 76 65 73 3b 0a 09 20 20 20 20 20 20 20 20 taves;..
6b120 20 20 20 20 74 68 69 73 2e 5f 73 65 74 53 77 65 this._setSwe
6b130 65 70 52 61 6e 67 65 28 29 3b 0a 09 20 20 20 20 epRange();..
6b140 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
6b150 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 /**... * The
6b160 20 62 61 73 65 20 66 72 65 71 75 65 6e 63 79 20 base frequency
6b170 66 72 6f 6d 20 77 68 69 63 68 20 74 68 65 20 73 from which the s
6b180 77 65 65 70 20 77 69 6c 6c 20 73 74 61 72 74 20 weep will start
6b190 66 72 6f 6d 2e 0a 09 09 20 2a 20 40 6d 65 6d 62 from.... * @memb
6b1a0 65 72 4f 66 20 54 6f 6e 65 2e 41 75 74 6f 57 61 erOf Tone.AutoWa
6b1b0 68 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 46 h#... * @type {F
6b1c0 72 65 71 75 65 6e 63 79 7d 0a 09 09 20 2a 20 40 requency}... * @
6b1d0 6e 61 6d 65 20 62 61 73 65 46 72 65 71 75 65 6e name baseFrequen
6b1e0 63 79 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 cy... */.. Ob
6b1f0 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
6b200 72 74 79 28 54 6f 6e 65 2e 41 75 74 6f 57 61 68 rty(Tone.AutoWah
6b210 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 62 61 73 .prototype, 'bas
6b220 65 46 72 65 71 75 65 6e 63 79 27 2c 20 7b 0a 09 eFrequency', {..
6b230 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e get: fun
6b240 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
6b250 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
6b260 68 69 73 2e 5f 62 61 73 65 46 72 65 71 75 65 6e his._baseFrequen
6b270 63 79 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a cy;.. },.
6b280 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
6b290 6e 63 74 69 6f 6e 20 28 62 61 73 65 46 72 65 71 nction (baseFreq
6b2a0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
6b2b0 20 74 68 69 73 2e 5f 62 61 73 65 46 72 65 71 75 this._baseFrequ
6b2c0 65 6e 63 79 20 3d 20 62 61 73 65 46 72 65 71 3b ency = baseFreq;
6b2d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
6b2e0 69 73 2e 5f 73 65 74 53 77 65 65 70 52 61 6e 67 is._setSweepRang
6b2f0 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a e();.. }.
6b300 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a . });.. /*
6b310 2a 0a 09 09 20 2a 20 54 68 65 20 73 65 6e 73 69 *... * The sensi
6b320 74 69 76 69 74 79 20 74 6f 20 63 6f 6e 74 72 6f tivity to contro
6b330 6c 20 68 6f 77 20 72 65 73 70 6f 6e 73 69 76 65 l how responsive
6b340 20 74 6f 20 74 68 65 20 69 6e 70 75 74 20 73 69 to the input si
6b350 67 6e 61 6c 20 74 68 65 20 66 69 6c 74 65 72 20 gnal the filter
6b360 69 73 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 is. ... * @membe
6b370 72 4f 66 20 54 6f 6e 65 2e 41 75 74 6f 57 61 68 rOf Tone.AutoWah
6b380 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 44 65 #... * @type {De
6b390 63 69 62 65 6c 73 7d 0a 09 09 20 2a 20 40 6e 61 cibels}... * @na
6b3a0 6d 65 20 73 65 6e 73 69 74 69 76 69 74 79 0a 09 me sensitivity..
6b3b0 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
6b3c0 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
6b3d0 54 6f 6e 65 2e 41 75 74 6f 57 61 68 2e 70 72 6f Tone.AutoWah.pro
6b3e0 74 6f 74 79 70 65 2c 20 27 73 65 6e 73 69 74 69 totype, 'sensiti
6b3f0 76 69 74 79 27 2c 20 7b 0a 09 20 20 20 20 20 20 vity', {..
6b400 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
6b410 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
6b420 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 67 61 return this.ga
6b430 69 6e 54 6f 44 62 28 31 20 2f 20 74 68 69 73 2e inToDb(1 / this.
6b440 5f 69 6e 70 75 74 42 6f 6f 73 74 2e 67 61 69 6e _inputBoost.gain
6b450 2e 76 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 .value);..
6b460 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
6b470 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 73 65 6e t: function (sen
6b480 73 69 74 69 76 79 29 20 7b 0a 09 20 20 20 20 20 sitivy) {..
6b490 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69 6e 70 this._inp
6b4a0 75 74 42 6f 6f 73 74 2e 67 61 69 6e 2e 76 61 6c utBoost.gain.val
6b4b0 75 65 20 3d 20 31 20 2f 20 74 68 69 73 2e 64 62 ue = 1 / this.db
6b4c0 54 6f 47 61 69 6e 28 73 65 6e 73 69 74 69 76 79 ToGain(sensitivy
6b4d0 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
6b4e0 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
6b4f0 09 09 20 2a 20 20 73 65 74 73 20 74 68 65 20 73 .. * sets the s
6b500 77 65 65 70 20 72 61 6e 67 65 20 6f 66 20 74 68 weep range of th
6b510 65 20 73 63 61 6c 65 72 0a 09 09 20 2a 20 20 40 e scaler... * @
6b520 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 private... */..
6b530 20 20 20 54 6f 6e 65 2e 41 75 74 6f 57 61 68 2e Tone.AutoWah.
6b540 70 72 6f 74 6f 74 79 70 65 2e 5f 73 65 74 53 77 prototype._setSw
6b550 65 65 70 52 61 6e 67 65 20 3d 20 66 75 6e 63 74 eepRange = funct
6b560 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
6b570 20 20 74 68 69 73 2e 5f 73 77 65 65 70 52 61 6e this._sweepRan
6b580 67 65 2e 6d 69 6e 20 3d 20 74 68 69 73 2e 5f 62 ge.min = this._b
6b590 61 73 65 46 72 65 71 75 65 6e 63 79 3b 0a 09 20 aseFrequency;..
6b5a0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 77 65 this._swe
6b5b0 65 70 52 61 6e 67 65 2e 6d 61 78 20 3d 20 4d 61 epRange.max = Ma
6b5c0 74 68 2e 6d 69 6e 28 74 68 69 73 2e 5f 62 61 73 th.min(this._bas
6b5d0 65 46 72 65 71 75 65 6e 63 79 20 2a 20 4d 61 74 eFrequency * Mat
6b5e0 68 2e 70 6f 77 28 32 2c 20 74 68 69 73 2e 5f 6f h.pow(2, this._o
6b5f0 63 74 61 76 65 73 29 2c 20 74 68 69 73 2e 63 6f ctaves), this.co
6b600 6e 74 65 78 74 2e 73 61 6d 70 6c 65 52 61 74 65 ntext.sampleRate
6b610 20 2f 20 32 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 / 2);.. };..
6b620 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c /**... * Cl
6b630 65 61 6e 20 75 70 2e 0a 09 09 20 2a 20 20 40 72 ean up.... * @r
6b640 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 41 75 74 eturns {Tone.Aut
6b650 6f 57 61 68 7d 20 74 68 69 73 0a 09 09 20 2a 2f oWah} this... */
6b660 0a 09 20 20 20 20 54 6f 6e 65 2e 41 75 74 6f 57 .. Tone.AutoW
6b670 61 68 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 ah.prototype.dis
6b680 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 pose = function
6b690 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f () {.. To
6b6a0 6e 65 2e 45 66 66 65 63 74 2e 70 72 6f 74 6f 74 ne.Effect.protot
6b6b0 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c ype.dispose.call
6b6c0 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 (this);..
6b6d0 20 74 68 69 73 2e 66 6f 6c 6c 6f 77 65 72 2e 64 this.follower.d
6b6e0 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
6b6f0 20 20 20 74 68 69 73 2e 66 6f 6c 6c 6f 77 65 72 this.follower
6b700 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
6b710 20 20 74 68 69 73 2e 5f 73 77 65 65 70 52 61 6e this._sweepRan
6b720 67 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 ge.dispose();..
6b730 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 77 65 this._swe
6b740 65 70 52 61 6e 67 65 20 3d 20 6e 75 6c 6c 3b 0a epRange = null;.
6b750 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 62 . this._b
6b760 61 6e 64 70 61 73 73 2e 64 69 73 70 6f 73 65 28 andpass.dispose(
6b770 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
6b780 2e 5f 62 61 6e 64 70 61 73 73 20 3d 20 6e 75 6c ._bandpass = nul
6b790 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
6b7a0 2e 5f 70 65 61 6b 69 6e 67 2e 64 69 73 70 6f 73 ._peaking.dispos
6b7b0 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
6b7c0 69 73 2e 5f 70 65 61 6b 69 6e 67 20 3d 20 6e 75 is._peaking = nu
6b7d0 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
6b7e0 73 2e 5f 69 6e 70 75 74 42 6f 6f 73 74 2e 64 69 s._inputBoost.di
6b7f0 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
6b800 20 20 74 68 69 73 2e 5f 69 6e 70 75 74 42 6f 6f this._inputBoo
6b810 73 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 st = null;..
6b820 20 20 20 20 74 68 69 73 2e 5f 77 72 69 74 61 62 this._writab
6b830 6c 65 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 le([..
6b840 20 20 27 67 61 69 6e 27 2c 0a 09 20 20 20 20 20 'gain',..
6b850 20 20 20 20 20 20 20 27 51 27 0a 09 20 20 20 20 'Q'..
6b860 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 ]);..
6b870 20 74 68 69 73 2e 67 61 69 6e 20 3d 20 6e 75 6c this.gain = nul
6b880 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
6b890 2e 51 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 .Q = null;..
6b8a0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
6b8b0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 .. };.. re
6b8c0 74 75 72 6e 20 54 6f 6e 65 2e 41 75 74 6f 57 61 turn Tone.AutoWa
6b8d0 68 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 h;..});..Module(
6b8e0 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 function (Tone)
6b8f0 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a {.. .. /**
6b900 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 54 6f ... * @class To
6b910 6e 65 2e 42 69 74 63 72 75 73 68 65 72 20 64 6f ne.Bitcrusher do
6b920 77 6e 73 61 6d 70 6c 65 73 20 74 68 65 20 69 6e wnsamples the in
6b930 63 6f 6d 69 6e 67 20 73 69 67 6e 61 6c 20 74 6f coming signal to
6b940 20 61 20 64 69 66 66 65 72 65 6e 74 20 62 69 74 a different bit
6b950 64 65 70 74 68 2e 20 0a 09 09 20 2a 20 20 20 20 depth. ... *
6b960 20 20 20 20 20 4c 6f 77 65 72 69 6e 67 20 74 68 Lowering th
6b970 65 20 62 69 74 64 65 70 74 68 20 6f 66 20 74 68 e bitdepth of th
6b980 65 20 73 69 67 6e 61 6c 20 63 72 65 61 74 65 73 e signal creates
6b990 20 64 69 73 74 6f 72 74 69 6f 6e 2e 20 52 65 61 distortion. Rea
6b9a0 64 20 6d 6f 72 65 20 61 62 6f 75 74 20 42 69 74 d more about Bit
6b9b0 63 72 75 73 68 69 6e 67 0a 09 09 20 2a 20 20 20 crushing... *
6b9c0 20 20 20 20 20 20 6f 6e 20 5b 57 69 6b 69 70 65 on [Wikipe
6b9d0 64 69 61 5d 28 68 74 74 70 73 3a 2f 2f 65 6e 2e dia](https://en.
6b9e0 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 wikipedia.org/wi
6b9f0 6b 69 2f 42 69 74 63 72 75 73 68 65 72 29 2e 0a ki/Bitcrusher)..
6ba00 09 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 .. *... * @cons
6ba10 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 tructor... * @e
6ba20 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 45 66 66 xtends {Tone.Eff
6ba30 65 63 74 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 ect}... * @para
6ba40 6d 20 7b 4e 75 6d 62 65 72 7d 20 62 69 74 73 20 m {Number} bits
6ba50 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 69 The number of bi
6ba60 74 73 20 74 6f 20 64 6f 77 6e 73 61 6d 70 6c 65 ts to downsample
6ba70 20 74 68 65 20 73 69 67 6e 61 6c 2e 20 4e 6f 6d the signal. Nom
6ba80 69 6e 61 6c 20 72 61 6e 67 65 0a 09 09 20 2a 20 inal range... *
6ba90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6baa0 20 20 20 20 20 20 6f 66 20 31 20 74 6f 20 38 2e of 1 to 8.
6bab0 20 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 ... * @example
6bac0 0a 09 09 20 2a 20 2f 2f 69 6e 69 74 69 61 6c 69 ... * //initiali
6bad0 7a 65 20 63 72 75 73 68 65 72 20 61 6e 64 20 72 ze crusher and r
6bae0 6f 75 74 65 20 61 20 73 79 6e 74 68 20 74 68 72 oute a synth thr
6baf0 6f 75 67 68 20 69 74 0a 09 09 20 2a 20 76 61 72 ough it... * var
6bb00 20 63 72 75 73 68 65 72 20 3d 20 6e 65 77 20 54 crusher = new T
6bb10 6f 6e 65 2e 42 69 74 43 72 75 73 68 65 72 28 34 one.BitCrusher(4
6bb20 29 2e 74 6f 4d 61 73 74 65 72 28 29 3b 0a 09 09 ).toMaster();...
6bb30 20 2a 20 76 61 72 20 73 79 6e 74 68 20 3d 20 6e * var synth = n
6bb40 65 77 20 54 6f 6e 65 2e 4d 6f 6e 6f 53 79 6e 74 ew Tone.MonoSynt
6bb50 68 28 29 2e 63 6f 6e 6e 65 63 74 28 63 72 75 73 h().connect(crus
6bb60 68 65 72 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 her);... */..
6bb70 20 54 6f 6e 65 2e 42 69 74 43 72 75 73 68 65 72 Tone.BitCrusher
6bb80 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
6bb90 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 .. var op
6bba0 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 tions = this.opt
6bbb0 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d ionsObject(argum
6bbc0 65 6e 74 73 2c 20 5b 27 62 69 74 73 27 5d 2c 20 ents, ['bits'],
6bbd0 54 6f 6e 65 2e 42 69 74 43 72 75 73 68 65 72 2e Tone.BitCrusher.
6bbe0 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 defaults);..
6bbf0 20 20 20 20 54 6f 6e 65 2e 45 66 66 65 63 74 2e Tone.Effect.
6bc00 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 6f call(this, optio
6bc10 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 76 61 ns);.. va
6bc20 72 20 69 6e 76 53 74 65 70 53 69 7a 65 20 3d 20 r invStepSize =
6bc30 31 20 2f 20 4d 61 74 68 2e 70 6f 77 28 32 2c 20 1 / Math.pow(2,
6bc40 6f 70 74 69 6f 6e 73 2e 62 69 74 73 20 2d 20 31 options.bits - 1
6bc50 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
6bc60 09 09 09 20 2a 20 20 53 75 62 74 72 61 63 74 20 ... * Subtract
6bc70 74 68 65 20 69 6e 70 75 74 20 73 69 67 6e 61 6c the input signal
6bc80 20 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c 75 73 and the modulus
6bc90 20 6f 66 20 74 68 65 20 69 6e 70 75 74 20 73 69 of the input si
6bca0 67 6e 61 6c 0a 09 09 09 20 2a 20 20 40 74 79 70 gnal.... * @typ
6bcb0 65 20 7b 54 6f 6e 65 2e 53 75 62 74 72 61 63 74 e {Tone.Subtract
6bcc0 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
6bcd0 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
6bce0 20 20 74 68 69 73 2e 5f 73 75 62 74 72 61 63 74 this._subtract
6bcf0 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 75 62 74 = new Tone.Subt
6bd00 72 61 63 74 28 29 3b 0a 09 20 20 20 20 20 20 20 ract();..
6bd10 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
6bd20 6d 6f 64 20 66 75 6e 63 74 69 6f 6e 0a 09 09 09 mod function....
6bd30 20 2a 20 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 * @type {Tone
6bd40 2e 4d 6f 64 75 6c 6f 7d 0a 09 09 09 20 2a 20 20 .Modulo}.... *
6bd50 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
6bd60 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d . this._m
6bd70 6f 64 75 6c 6f 20 3d 20 6e 65 77 20 54 6f 6e 65 odulo = new Tone
6bd80 2e 4d 6f 64 75 6c 6f 28 69 6e 76 53 74 65 70 53 .Modulo(invStepS
6bd90 69 7a 65 29 3b 0a 09 20 20 20 20 20 20 20 20 2f ize);.. /
6bda0 2a 2a 0a 09 09 09 20 2a 20 20 6b 65 65 70 73 20 **.... * keeps
6bdb0 74 72 61 63 6b 20 6f 66 20 74 68 65 20 62 69 74 track of the bit
6bdc0 73 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b s.... * @type {
6bdd0 6e 75 6d 62 65 72 7d 0a 09 09 09 20 2a 20 20 40 number}.... * @
6bde0 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
6bdf0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 62 69 this._bi
6be00 74 73 20 3d 20 6f 70 74 69 6f 6e 73 2e 62 69 74 ts = options.bit
6be10 73 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 6f s;.. //co
6be20 6e 6e 65 63 74 20 69 74 20 75 70 0a 09 20 20 20 nnect it up..
6be30 20 20 20 20 20 74 68 69 73 2e 65 66 66 65 63 74 this.effect
6be40 53 65 6e 64 2e 66 61 6e 28 74 68 69 73 2e 5f 73 Send.fan(this._s
6be50 75 62 74 72 61 63 74 2c 20 74 68 69 73 2e 5f 6d ubtract, this._m
6be60 6f 64 75 6c 6f 29 3b 0a 09 20 20 20 20 20 20 20 odulo);..
6be70 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 6f 2e 63 6f this._modulo.co
6be80 6e 6e 65 63 74 28 74 68 69 73 2e 5f 73 75 62 74 nnect(this._subt
6be90 72 61 63 74 2c 20 30 2c 20 31 29 3b 0a 09 20 20 ract, 0, 1);..
6bea0 20 20 20 20 20 20 74 68 69 73 2e 5f 73 75 62 74 this._subt
6beb0 72 61 63 74 2e 63 6f 6e 6e 65 63 74 28 74 68 69 ract.connect(thi
6bec0 73 2e 65 66 66 65 63 74 52 65 74 75 72 6e 29 3b s.effectReturn);
6bed0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f .. };.. To
6bee0 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 42 ne.extend(Tone.B
6bef0 69 74 43 72 75 73 68 65 72 2c 20 54 6f 6e 65 2e itCrusher, Tone.
6bf00 45 66 66 65 63 74 29 3b 0a 09 20 20 20 20 2f 2a Effect);.. /*
6bf10 2a 0a 09 09 20 2a 20 20 74 68 65 20 64 65 66 61 *... * the defa
6bf20 75 6c 74 20 76 61 6c 75 65 73 0a 09 09 20 2a 20 ult values... *
6bf30 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 @static... * @
6bf40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 type {Object}...
6bf50 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 42 69 */.. Tone.Bi
6bf60 74 43 72 75 73 68 65 72 2e 64 65 66 61 75 6c 74 tCrusher.default
6bf70 73 20 3d 20 7b 20 27 62 69 74 73 27 3a 20 34 20 s = { 'bits': 4
6bf80 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
6bf90 20 54 68 65 20 62 69 74 20 64 65 70 74 68 20 6f The bit depth o
6bfa0 66 20 74 68 65 20 65 66 66 65 63 74 2e 20 4e 6f f the effect. No
6bfb0 6d 69 6e 61 6c 20 72 61 6e 67 65 20 6f 66 20 31 minal range of 1
6bfc0 2d 38 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 -8. ... * @membe
6bfd0 72 4f 66 20 54 6f 6e 65 2e 42 69 74 43 72 75 73 rOf Tone.BitCrus
6bfe0 68 65 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 her#... * @type
6bff0 7b 6e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 40 6e {number}... * @n
6c000 61 6d 65 20 62 69 74 73 0a 09 09 20 2a 2f 0a 09 ame bits... */..
6c010 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
6c020 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 42 eProperty(Tone.B
6c030 69 74 43 72 75 73 68 65 72 2e 70 72 6f 74 6f 74 itCrusher.protot
6c040 79 70 65 2c 20 27 62 69 74 73 27 2c 20 7b 0a 09 ype, 'bits', {..
6c050 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e get: fun
6c060 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
6c070 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
6c080 68 69 73 2e 5f 62 69 74 73 3b 0a 09 20 20 20 20 his._bits;..
6c090 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
6c0a0 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 62 set: function (b
6c0b0 69 74 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 its) {..
6c0c0 20 20 20 20 74 68 69 73 2e 5f 62 69 74 73 20 3d this._bits =
6c0d0 20 62 69 74 73 3b 0a 09 20 20 20 20 20 20 20 20 bits;..
6c0e0 20 20 20 20 76 61 72 20 69 6e 76 53 74 65 70 53 var invStepS
6c0f0 69 7a 65 20 3d 20 31 20 2f 20 4d 61 74 68 2e 70 ize = 1 / Math.p
6c100 6f 77 28 32 2c 20 62 69 74 73 20 2d 20 31 29 3b ow(2, bits - 1);
6c110 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
6c120 69 73 2e 5f 6d 6f 64 75 6c 6f 2e 76 61 6c 75 65 is._modulo.value
6c130 20 3d 20 69 6e 76 53 74 65 70 53 69 7a 65 3b 0a = invStepSize;.
6c140 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
6c150 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 });.. /**...
6c160 2a 20 20 43 6c 65 61 6e 20 75 70 2e 20 0a 09 09 * Clean up. ...
6c170 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f * @returns {To
6c180 6e 65 2e 42 69 74 43 72 75 73 68 65 72 7d 20 74 ne.BitCrusher} t
6c190 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
6c1a0 6f 6e 65 2e 42 69 74 43 72 75 73 68 65 72 2e 70 one.BitCrusher.p
6c1b0 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 rototype.dispose
6c1c0 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
6c1d0 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 45 .. Tone.E
6c1e0 66 66 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e ffect.prototype.
6c1f0 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 dispose.call(thi
6c200 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 s);.. thi
6c210 73 2e 5f 73 75 62 74 72 61 63 74 2e 64 69 73 70 s._subtract.disp
6c220 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
6c230 74 68 69 73 2e 5f 73 75 62 74 72 61 63 74 20 3d this._subtract =
6c240 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
6c250 74 68 69 73 2e 5f 6d 6f 64 75 6c 6f 2e 64 69 73 this._modulo.dis
6c260 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
6c270 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 6f 20 3d 20 this._modulo =
6c280 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 null;.. r
6c290 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 eturn this;..
6c2a0 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 };.. return
6c2b0 54 6f 6e 65 2e 42 69 74 43 72 75 73 68 65 72 3b Tone.BitCrusher;
6c2c0 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 ..});..Module(fu
6c2d0 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a nction (Tone) {.
6c2e0 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 . .. /**..
6c2f0 09 20 2a 20 20 40 63 6c 61 73 73 20 54 6f 6e 65 . * @class Tone
6c300 2e 43 68 65 62 79 53 68 65 76 20 69 73 20 61 20 .ChebyShev is a
6c310 43 68 65 62 79 73 68 65 76 20 77 61 76 65 73 68 Chebyshev wavesh
6c320 61 70 65 72 2c 20 61 6e 20 65 66 66 65 63 74 20 aper, an effect
6c330 77 68 69 63 68 20 69 73 20 67 6f 6f 64 20 0a 09 which is good ..
6c340 09 20 2a 20 20 20 20 20 20 20 20 20 66 6f 72 20 . * for
6c350 6d 61 6b 69 6e 67 20 64 69 66 66 65 72 65 6e 74 making different
6c360 20 74 79 70 65 73 20 6f 66 20 64 69 73 74 6f 72 types of distor
6c370 74 69 6f 6e 20 73 6f 75 6e 64 73 2e 0a 09 09 20 tion sounds....
6c380 2a 20 20 20 20 20 20 20 20 20 4e 6f 74 65 20 74 * Note t
6c390 68 61 74 20 6f 64 64 20 6f 72 64 65 72 73 20 73 hat odd orders s
6c3a0 6f 75 6e 64 20 76 65 72 79 20 64 69 66 66 65 72 ound very differ
6c3b0 65 6e 74 20 66 72 6f 6d 20 65 76 65 6e 20 6f 6e ent from even on
6c3c0 65 73 2c 20 0a 09 09 20 2a 20 20 20 20 20 20 20 es, ... *
6c3d0 20 20 61 6e 64 20 6f 72 64 65 72 20 3d 20 31 20 and order = 1
6c3e0 69 73 20 6e 6f 20 63 68 61 6e 67 65 2e 20 0a 09 is no change. ..
6c3f0 09 20 2a 20 20 20 20 20 20 20 20 20 52 65 61 64 . * Read
6c400 20 6d 6f 72 65 20 61 74 20 5b 6d 75 73 69 63 2e more at [music.
6c410 63 6f 6c 75 6d 62 69 61 2e 65 64 75 5d 28 68 74 columbia.edu](ht
6c420 74 70 3a 2f 2f 6d 75 73 69 63 2e 63 6f 6c 75 6d tp://music.colum
6c430 62 69 61 2e 65 64 75 2f 63 6d 63 2f 6d 75 73 69 bia.edu/cmc/musi
6c440 63 61 6e 64 63 6f 6d 70 75 74 65 72 73 2f 63 68 candcomputers/ch
6c450 61 70 74 65 72 34 2f 30 34 5f 30 36 2e 70 68 70 apter4/04_06.php
6c460 29 2e 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 65 ).... *... * @e
6c470 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 45 66 66 xtends {Tone.Eff
6c480 65 63 74 7d 0a 09 09 20 2a 20 20 40 63 6f 6e 73 ect}... * @cons
6c490 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 70 tructor... * @p
6c4a0 61 72 61 6d 20 7b 50 6f 73 69 74 69 76 65 7c 4f aram {Positive|O
6c4b0 62 6a 65 63 74 7d 20 5b 6f 72 64 65 72 5d 20 54 bject} [order] T
6c4c0 68 65 20 6f 72 64 65 72 20 6f 66 20 74 68 65 20 he order of the
6c4d0 63 68 65 62 79 73 68 65 76 20 70 6f 6c 79 6e 6f chebyshev polyno
6c4e0 6d 69 61 6c 2e 20 4e 6f 72 6d 61 6c 20 72 61 6e mial. Normal ran
6c4f0 67 65 20 62 65 74 77 65 65 6e 20 31 2d 31 30 30 ge between 1-100
6c500 2e 20 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c . ... * @exampl
6c510 65 0a 09 09 20 2a 20 2f 2f 63 72 65 61 74 65 20 e... * //create
6c520 61 20 6e 65 77 20 63 68 65 62 79 0a 09 09 20 2a a new cheby... *
6c530 20 76 61 72 20 63 68 65 62 79 20 3d 20 6e 65 77 var cheby = new
6c540 20 54 6f 6e 65 2e 43 68 65 62 79 73 68 65 76 28 Tone.Chebyshev(
6c550 35 30 29 3b 0a 09 09 20 2a 20 2f 2f 63 72 65 61 50);... * //crea
6c560 74 65 20 61 20 6d 6f 6e 6f 73 79 6e 74 68 20 63 te a monosynth c
6c570 6f 6e 6e 65 63 74 65 64 20 74 6f 20 6f 75 72 20 onnected to our
6c580 63 68 65 62 79 0a 09 09 20 2a 20 73 79 6e 74 68 cheby... * synth
6c590 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 6f 6e 6f = new Tone.Mono
6c5a0 53 79 6e 74 68 28 29 2e 63 6f 6e 6e 65 63 74 28 Synth().connect(
6c5b0 63 68 65 62 79 29 3b 0a 09 09 20 2a 2f 0a 09 20 cheby);... */..
6c5c0 20 20 20 54 6f 6e 65 2e 43 68 65 62 79 73 68 65 Tone.Chebyshe
6c5d0 76 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 v = function ()
6c5e0 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 6f {.. var o
6c5f0 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 ptions = this.op
6c600 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 tionsObject(argu
6c610 6d 65 6e 74 73 2c 20 5b 27 6f 72 64 65 72 27 5d ments, ['order']
6c620 2c 20 54 6f 6e 65 2e 43 68 65 62 79 73 68 65 76 , Tone.Chebyshev
6c630 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 .defaults);..
6c640 20 20 20 20 20 54 6f 6e 65 2e 45 66 66 65 63 74 Tone.Effect
6c650 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 .call(this, opti
6c660 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f ons);.. /
6c670 2a 2a 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 **.... * @type
6c680 7b 57 61 76 65 53 68 61 70 65 72 4e 6f 64 65 7d {WaveShaperNode}
6c690 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
6c6a0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
6c6b0 20 74 68 69 73 2e 5f 73 68 61 70 65 72 20 3d 20 this._shaper =
6c6c0 6e 65 77 20 54 6f 6e 65 2e 57 61 76 65 53 68 61 new Tone.WaveSha
6c6d0 70 65 72 28 34 30 39 36 29 3b 0a 09 20 20 20 20 per(4096);..
6c6e0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 68 6f /**.... * ho
6c6f0 6c 64 73 20 6f 6e 74 6f 20 74 68 65 20 6f 72 64 lds onto the ord
6c700 65 72 20 6f 66 20 74 68 65 20 66 69 6c 74 65 72 er of the filter
6c710 0a 09 09 09 20 2a 20 40 74 79 70 65 20 7b 6e 75 .... * @type {nu
6c720 6d 62 65 72 7d 0a 09 09 09 20 2a 20 40 70 72 69 mber}.... * @pri
6c730 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
6c740 20 20 20 20 20 74 68 69 73 2e 5f 6f 72 64 65 72 this._order
6c750 20 3d 20 6f 70 74 69 6f 6e 73 2e 6f 72 64 65 72 = options.order
6c760 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
6c770 63 6f 6e 6e 65 63 74 45 66 66 65 63 74 28 74 68 connectEffect(th
6c780 69 73 2e 5f 73 68 61 70 65 72 29 3b 0a 09 20 20 is._shaper);..
6c790 20 20 20 20 20 20 74 68 69 73 2e 6f 72 64 65 72 this.order
6c7a0 20 3d 20 6f 70 74 69 6f 6e 73 2e 6f 72 64 65 72 = options.order
6c7b0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
6c7c0 6f 76 65 72 73 61 6d 70 6c 65 20 3d 20 6f 70 74 oversample = opt
6c7d0 69 6f 6e 73 2e 6f 76 65 72 73 61 6d 70 6c 65 3b ions.oversample;
6c7e0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f .. };.. To
6c7f0 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 43 ne.extend(Tone.C
6c800 68 65 62 79 73 68 65 76 2c 20 54 6f 6e 65 2e 45 hebyshev, Tone.E
6c810 66 66 65 63 74 29 3b 0a 09 20 20 20 20 2f 2a 2a ffect);.. /**
6c820 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 ... * @static..
6c830 09 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a . * @const... *
6c840 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d @type {Object}
6c850 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
6c860 2e 43 68 65 62 79 73 68 65 76 2e 64 65 66 61 75 .Chebyshev.defau
6c870 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 lts = {..
6c880 20 27 6f 72 64 65 72 27 3a 20 31 2c 0a 09 20 20 'order': 1,..
6c890 20 20 20 20 20 20 27 6f 76 65 72 73 61 6d 70 6c 'oversampl
6c8a0 65 27 3a 20 27 6e 6f 6e 65 27 0a 09 20 20 20 20 e': 'none'..
6c8b0 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
6c8c0 20 20 67 65 74 20 74 68 65 20 63 6f 65 66 66 69 get the coeffi
6c8d0 63 69 65 6e 74 20 66 6f 72 20 74 68 61 74 20 64 cient for that d
6c8e0 65 67 72 65 65 0a 09 09 20 2a 20 20 40 70 61 72 egree... * @par
6c8f0 61 6d 20 7b 6e 75 6d 62 65 72 7d 20 78 20 74 68 am {number} x th
6c900 65 20 78 20 76 61 6c 75 65 0a 09 09 20 2a 20 20 e x value... *
6c910 40 70 61 72 61 6d 20 20 20 7b 6e 75 6d 62 65 72 @param {number
6c920 7d 20 64 65 67 72 65 65 20 0a 09 09 20 2a 20 20 } degree ... *
6c930 40 70 61 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20 @param {Object}
6c940 6d 65 6d 6f 20 6d 65 6d 6f 69 7a 65 20 74 68 65 memo memoize the
6c950 20 63 6f 6d 70 75 74 65 64 20 76 61 6c 75 65 2e computed value.
6c960 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 ... *
6c970 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
6c980 73 20 73 70 65 65 64 73 20 75 70 20 63 6f 6d 70 s speeds up comp
6c990 75 74 61 74 69 6f 6e 20 67 72 65 61 74 6c 79 2e utation greatly.
6c9a0 20 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 ... * @return
6c9b0 20 7b 6e 75 6d 62 65 72 7d 20 20 20 20 20 20 20 {number}
6c9c0 74 68 65 20 63 6f 65 66 66 69 63 69 65 6e 74 20 the coefficient
6c9d0 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
6c9e0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
6c9f0 43 68 65 62 79 73 68 65 76 2e 70 72 6f 74 6f 74 Chebyshev.protot
6ca00 79 70 65 2e 5f 67 65 74 43 6f 65 66 66 69 63 69 ype._getCoeffici
6ca10 65 6e 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ent = function (
6ca20 78 2c 20 64 65 67 72 65 65 2c 20 6d 65 6d 6f 29 x, degree, memo)
6ca30 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
6ca40 6d 65 6d 6f 2e 68 61 73 4f 77 6e 50 72 6f 70 65 memo.hasOwnPrope
6ca50 72 74 79 28 64 65 67 72 65 65 29 29 20 7b 0a 09 rty(degree)) {..
6ca60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
6ca70 72 6e 20 6d 65 6d 6f 5b 64 65 67 72 65 65 5d 3b rn memo[degree];
6ca80 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
6ca90 20 69 66 20 28 64 65 67 72 65 65 20 3d 3d 3d 20 if (degree ===
6caa0 30 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 0) {..
6cab0 20 20 6d 65 6d 6f 5b 64 65 67 72 65 65 5d 20 3d memo[degree] =
6cac0 20 30 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 0;.. } e
6cad0 6c 73 65 20 69 66 20 28 64 65 67 72 65 65 20 3d lse if (degree =
6cae0 3d 3d 20 31 29 20 7b 0a 09 20 20 20 20 20 20 20 == 1) {..
6caf0 20 20 20 20 20 6d 65 6d 6f 5b 64 65 67 72 65 65 memo[degree
6cb00 5d 20 3d 20 78 3b 0a 09 20 20 20 20 20 20 20 20 ] = x;..
6cb10 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 } else {..
6cb20 20 20 20 20 20 20 6d 65 6d 6f 5b 64 65 67 72 65 memo[degre
6cb30 65 5d 20 3d 20 32 20 2a 20 78 20 2a 20 74 68 69 e] = 2 * x * thi
6cb40 73 2e 5f 67 65 74 43 6f 65 66 66 69 63 69 65 6e s._getCoefficien
6cb50 74 28 78 2c 20 64 65 67 72 65 65 20 2d 20 31 2c t(x, degree - 1,
6cb60 20 6d 65 6d 6f 29 20 2d 20 74 68 69 73 2e 5f 67 memo) - this._g
6cb70 65 74 43 6f 65 66 66 69 63 69 65 6e 74 28 78 2c etCoefficient(x,
6cb80 20 64 65 67 72 65 65 20 2d 20 32 2c 20 6d 65 6d degree - 2, mem
6cb90 6f 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 o);.. }..
6cba0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d return m
6cbb0 65 6d 6f 5b 64 65 67 72 65 65 5d 3b 0a 09 20 20 emo[degree];..
6cbc0 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
6cbd0 20 2a 20 54 68 65 20 6f 72 64 65 72 20 6f 66 20 * The order of
6cbe0 74 68 65 20 43 68 65 62 79 73 68 65 76 20 70 6f the Chebyshev po
6cbf0 6c 79 6e 6f 6d 69 61 6c 20 77 68 69 63 68 20 63 lynomial which c
6cc00 72 65 61 74 65 73 0a 09 09 20 2a 20 74 68 65 20 reates... * the
6cc10 65 71 75 61 74 69 6f 6e 20 77 68 69 63 68 20 69 equation which i
6cc20 73 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 s applied to the
6cc30 20 69 6e 63 6f 6d 69 6e 67 20 0a 09 09 20 2a 20 incoming ... *
6cc40 73 69 67 6e 61 6c 20 74 68 72 6f 75 67 68 20 61 signal through a
6cc50 20 54 6f 6e 65 2e 57 61 76 65 53 68 61 70 65 72 Tone.WaveShaper
6cc60 2e 20 54 68 65 20 65 71 75 61 74 69 6f 6e 73 0a . The equations.
6cc70 09 09 20 2a 20 61 72 65 20 69 6e 20 74 68 65 20 .. * are in the
6cc80 66 6f 72 6d 3a 3c 62 72 3e 0a 09 09 20 2a 20 6f form:<br>... * o
6cc90 72 64 65 72 20 32 3a 20 32 78 5e 32 20 2b 20 31 rder 2: 2x^2 + 1
6cca0 3c 62 72 3e 0a 09 09 20 2a 20 6f 72 64 65 72 20 <br>... * order
6ccb0 33 3a 20 34 78 5e 33 20 2b 20 33 78 20 3c 62 72 3: 4x^3 + 3x <br
6ccc0 3e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 >... * @memberOf
6ccd0 20 54 6f 6e 65 2e 43 68 65 62 79 73 68 65 76 23 Tone.Chebyshev#
6cce0 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 50 6f 73 ... * @type {Pos
6ccf0 69 74 69 76 65 7d 0a 09 09 20 2a 20 40 6e 61 6d itive}... * @nam
6cd00 65 20 6f 72 64 65 72 0a 09 09 20 2a 2f 0a 09 20 e order... */..
6cd10 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
6cd20 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 43 68 Property(Tone.Ch
6cd30 65 62 79 73 68 65 76 2e 70 72 6f 74 6f 74 79 70 ebyshev.prototyp
6cd40 65 2c 20 27 6f 72 64 65 72 27 2c 20 7b 0a 09 20 e, 'order', {..
6cd50 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
6cd60 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
6cd70 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
6cd80 69 73 2e 5f 6f 72 64 65 72 3b 0a 09 20 20 20 20 is._order;..
6cd90 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
6cda0 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6f set: function (o
6cdb0 72 64 65 72 29 20 7b 0a 09 20 20 20 20 20 20 20 rder) {..
6cdc0 20 20 20 20 20 74 68 69 73 2e 5f 6f 72 64 65 72 this._order
6cdd0 20 3d 20 6f 72 64 65 72 3b 0a 09 20 20 20 20 20 = order;..
6cde0 20 20 20 20 20 20 20 76 61 72 20 63 75 72 76 65 var curve
6cdf0 20 3d 20 6e 65 77 20 41 72 72 61 79 28 34 30 39 = new Array(409
6ce00 36 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 6);..
6ce10 20 76 61 72 20 6c 65 6e 20 3d 20 63 75 72 76 65 var len = curve
6ce20 2e 6c 65 6e 67 74 68 3b 0a 09 20 20 20 20 20 20 .length;..
6ce30 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 for (var i
6ce40 20 3d 20 30 3b 20 69 20 3c 20 6c 65 6e 3b 20 2b = 0; i < len; +
6ce50 2b 69 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 +i) {..
6ce60 20 20 20 20 20 20 20 76 61 72 20 78 20 3d 20 69 var x = i
6ce70 20 2a 20 32 20 2f 20 6c 65 6e 20 2d 20 31 3b 0a * 2 / len - 1;.
6ce80 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
6ce90 20 69 66 20 28 78 20 3d 3d 3d 20 30 29 20 7b 0a if (x === 0) {.
6cea0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
6ceb0 20 20 20 20 20 2f 2f 73 68 6f 75 6c 64 20 6f 75 //should ou
6cec0 74 70 75 74 20 30 20 77 68 65 6e 20 69 6e 70 75 tput 0 when inpu
6ced0 74 20 69 73 20 30 0a 09 20 20 20 20 20 20 20 20 t is 0..
6cee0 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 76 curv
6cef0 65 5b 69 5d 20 3d 20 30 3b 0a 09 20 20 20 20 20 e[i] = 0;..
6cf00 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
6cf10 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
6cf20 20 20 20 20 20 20 20 20 20 63 75 72 76 65 5b 69 curve[i
6cf30 5d 20 3d 20 74 68 69 73 2e 5f 67 65 74 43 6f 65 ] = this._getCoe
6cf40 66 66 69 63 69 65 6e 74 28 78 2c 20 6f 72 64 65 fficient(x, orde
6cf50 72 2c 20 7b 7d 29 3b 0a 09 20 20 20 20 20 20 20 r, {});..
6cf60 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
6cf70 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
6cf80 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 68 61 this._sha
6cf90 70 65 72 2e 63 75 72 76 65 20 3d 20 63 75 72 76 per.curve = curv
6cfa0 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 e;.. }..
6cfb0 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
6cfc0 09 09 20 2a 20 54 68 65 20 6f 76 65 72 73 61 6d .. * The oversam
6cfd0 70 6c 69 6e 67 20 6f 66 20 74 68 65 20 65 66 66 pling of the eff
6cfe0 65 63 74 2e 20 43 61 6e 20 65 69 74 68 65 72 20 ect. Can either
6cff0 62 65 20 22 6e 6f 6e 65 22 2c 20 22 32 78 22 20 be "none", "2x"
6d000 6f 72 20 22 34 78 22 2e 0a 09 09 20 2a 20 40 6d or "4x".... * @m
6d010 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 43 68 65 emberOf Tone.Che
6d020 62 79 73 68 65 76 23 0a 09 09 20 2a 20 40 74 79 byshev#... * @ty
6d030 70 65 20 7b 73 74 72 69 6e 67 7d 0a 09 09 20 2a pe {string}... *
6d040 20 40 6e 61 6d 65 20 6f 76 65 72 73 61 6d 70 6c @name oversampl
6d050 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a e... */.. Obj
6d060 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
6d070 74 79 28 54 6f 6e 65 2e 43 68 65 62 79 73 68 65 ty(Tone.Chebyshe
6d080 76 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 6f 76 v.prototype, 'ov
6d090 65 72 73 61 6d 70 6c 65 27 2c 20 7b 0a 09 20 20 ersample', {..
6d0a0 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
6d0b0 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
6d0c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
6d0d0 73 2e 5f 73 68 61 70 65 72 2e 6f 76 65 72 73 61 s._shaper.oversa
6d0e0 6d 70 6c 65 3b 0a 09 20 20 20 20 20 20 20 20 7d mple;.. }
6d0f0 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 ,.. set:
6d100 66 75 6e 63 74 69 6f 6e 20 28 6f 76 65 72 73 61 function (oversa
6d110 6d 70 6c 69 6e 67 29 20 7b 0a 09 20 20 20 20 20 mpling) {..
6d120 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 68 61 this._sha
6d130 70 65 72 2e 6f 76 65 72 73 61 6d 70 6c 65 20 3d per.oversample =
6d140 20 6f 76 65 72 73 61 6d 70 6c 69 6e 67 3b 0a 09 oversampling;..
6d150 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
6d160 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
6d170 20 20 43 6c 65 61 6e 20 75 70 2e 20 0a 09 09 20 Clean up. ...
6d180 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
6d190 65 2e 43 68 65 62 79 73 68 65 76 7d 20 74 68 69 e.Chebyshev} thi
6d1a0 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
6d1b0 65 2e 43 68 65 62 79 73 68 65 76 2e 70 72 6f 74 e.Chebyshev.prot
6d1c0 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 otype.dispose =
6d1d0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
6d1e0 20 20 20 20 20 20 20 54 6f 6e 65 2e 45 66 66 65 Tone.Effe
6d1f0 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 ct.prototype.dis
6d200 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b pose.call(this);
6d210 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
6d220 73 68 61 70 65 72 2e 64 69 73 70 6f 73 65 28 29 shaper.dispose()
6d230 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
6d240 5f 73 68 61 70 65 72 20 3d 20 6e 75 6c 6c 3b 0a _shaper = null;.
6d250 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
6d260 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
6d270 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 43 return Tone.C
6d280 68 65 62 79 73 68 65 76 3b 0a 09 7d 29 3b 0a 09 hebyshev;..});..
6d290 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 Module(function
6d2a0 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 (Tone) {.. ..
6d2b0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 /**... * @c
6d2c0 6c 61 73 73 20 42 61 73 65 20 63 6c 61 73 73 20 lass Base class
6d2d0 66 6f 72 20 53 74 65 72 65 6f 20 65 66 66 65 63 for Stereo effec
6d2e0 74 73 2e 20 50 72 6f 76 69 64 65 73 20 65 66 66 ts. Provides eff
6d2f0 65 63 74 53 65 6e 64 4c 2f 52 20 61 6e 64 20 65 ectSendL/R and e
6d300 66 66 65 63 74 52 65 74 75 72 6e 4c 2f 52 2e 20 ffectReturnL/R.
6d310 0a 09 09 20 2a 0a 09 09 20 2a 09 40 63 6f 6e 73 ... *... *.@cons
6d320 74 72 75 63 74 6f 72 0a 09 09 20 2a 09 40 65 78 tructor... *.@ex
6d330 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 45 66 66 65 tends {Tone.Effe
6d340 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ct}... */.. T
6d350 6f 6e 65 2e 53 74 65 72 65 6f 45 66 66 65 63 74 one.StereoEffect
6d360 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
6d370 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 .. this.c
6d380 72 65 61 74 65 49 6e 73 4f 75 74 73 28 31 2c 20 reateInsOuts(1,
6d390 31 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 67 1);.. //g
6d3a0 65 74 20 74 68 65 20 64 65 66 61 75 6c 74 73 0a et the defaults.
6d3b0 09 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 . var opt
6d3c0 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 ions = this.opti
6d3d0 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 onsObject(argume
6d3e0 6e 74 73 2c 20 5b 27 77 65 74 27 5d 2c 20 54 6f nts, ['wet'], To
6d3f0 6e 65 2e 45 66 66 65 63 74 2e 64 65 66 61 75 6c ne.Effect.defaul
6d400 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a ts);.. /*
6d410 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 64 72 79 *.... * the dry
6d420 77 65 74 20 6b 6e 6f 62 20 74 6f 20 63 6f 6e 74 wet knob to cont
6d430 72 6f 6c 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f rol the amount o
6d440 66 20 65 66 66 65 63 74 0a 09 09 09 20 2a 20 20 f effect.... *
6d450 40 74 79 70 65 20 7b 54 6f 6e 65 2e 43 72 6f 73 @type {Tone.Cros
6d460 73 46 61 64 65 7d 0a 09 09 09 20 2a 20 20 40 70 sFade}.... * @p
6d470 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
6d480 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 72 79 this._dry
6d490 57 65 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 Wet = new Tone.C
6d4a0 72 6f 73 73 46 61 64 65 28 6f 70 74 69 6f 6e 73 rossFade(options
6d4b0 2e 77 65 74 29 3b 0a 09 20 20 20 20 20 20 20 20 .wet);..
6d4c0 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 77 /**.... * The w
6d4d0 65 74 20 63 6f 6e 74 72 6f 6c 2c 20 69 2e 65 2e et control, i.e.
6d4e0 20 68 6f 77 20 6d 75 63 68 20 6f 66 20 74 68 65 how much of the
6d4f0 20 65 66 66 65 63 74 65 64 0a 09 09 09 20 2a 20 effected.... *
6d500 20 77 69 6c 6c 20 70 61 73 73 20 74 68 72 6f 75 will pass throu
6d510 67 68 20 74 6f 20 74 68 65 20 6f 75 74 70 75 74 gh to the output
6d520 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 . .... * @type
6d530 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 {NormalRange}...
6d540 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 . * @signal....
6d550 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
6d560 73 2e 77 65 74 20 3d 20 74 68 69 73 2e 5f 64 72 s.wet = this._dr
6d570 79 57 65 74 2e 66 61 64 65 3b 0a 09 20 20 20 20 yWet.fade;..
6d580 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 /**.... * t
6d590 68 65 6e 20 73 70 6c 69 74 20 69 74 0a 09 09 09 hen split it....
6d5a0 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e * @type {Tone.
6d5b0 53 70 6c 69 74 7d 0a 09 09 09 20 2a 20 20 40 70 Split}.... * @p
6d5c0 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
6d5d0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 70 6c this._spl
6d5e0 69 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 70 it = new Tone.Sp
6d5f0 6c 69 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 lit();..
6d600 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 65 /**.... * the e
6d610 66 66 65 63 74 73 20 73 65 6e 64 20 4c 45 46 54 ffects send LEFT
6d620 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 47 .... * @type {G
6d630 61 69 6e 4e 6f 64 65 7d 0a 09 09 09 20 2a 20 20 ainNode}.... *
6d640 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
6d650 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 66 . this.ef
6d660 66 65 63 74 53 65 6e 64 4c 20 3d 20 74 68 69 73 fectSendL = this
6d670 2e 5f 73 70 6c 69 74 2e 6c 65 66 74 3b 0a 09 20 ._split.left;..
6d680 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
6d690 20 20 74 68 65 20 65 66 66 65 63 74 73 20 73 65 the effects se
6d6a0 6e 64 20 52 49 47 48 54 0a 09 09 09 20 2a 20 20 nd RIGHT.... *
6d6b0 40 74 79 70 65 20 7b 47 61 69 6e 4e 6f 64 65 7d @type {GainNode}
6d6c0 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
6d6d0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
6d6e0 20 74 68 69 73 2e 65 66 66 65 63 74 53 65 6e 64 this.effectSend
6d6f0 52 20 3d 20 74 68 69 73 2e 5f 73 70 6c 69 74 2e R = this._split.
6d700 72 69 67 68 74 3b 0a 09 20 20 20 20 20 20 20 20 right;..
6d710 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 73 /**.... * the s
6d720 74 65 72 65 6f 20 65 66 66 65 63 74 20 6d 65 72 tereo effect mer
6d730 67 65 72 0a 09 09 09 20 2a 20 20 40 74 79 70 65 ger.... * @type
6d740 20 7b 54 6f 6e 65 2e 4d 65 72 67 65 7d 0a 09 09 {Tone.Merge}...
6d750 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
6d760 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
6d770 69 73 2e 5f 6d 65 72 67 65 20 3d 20 6e 65 77 20 is._merge = new
6d780 54 6f 6e 65 2e 4d 65 72 67 65 28 29 3b 0a 09 20 Tone.Merge();..
6d790 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
6d7a0 20 20 74 68 65 20 65 66 66 65 63 74 20 72 65 74 the effect ret
6d7b0 75 72 6e 20 4c 45 46 54 0a 09 09 09 20 2a 20 20 urn LEFT.... *
6d7c0 40 74 79 70 65 20 7b 47 61 69 6e 4e 6f 64 65 7d @type {GainNode}
6d7d0 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
6d7e0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
6d7f0 20 74 68 69 73 2e 65 66 66 65 63 74 52 65 74 75 this.effectRetu
6d800 72 6e 4c 20 3d 20 74 68 69 73 2e 5f 6d 65 72 67 rnL = this._merg
6d810 65 2e 6c 65 66 74 3b 0a 09 20 20 20 20 20 20 20 e.left;..
6d820 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 /**.... * the
6d830 65 66 66 65 63 74 20 72 65 74 75 72 6e 20 52 49 effect return RI
6d840 47 48 54 0a 09 09 09 20 2a 20 20 40 74 79 70 65 GHT.... * @type
6d850 20 7b 47 61 69 6e 4e 6f 64 65 7d 0a 09 09 09 20 {GainNode}....
6d860 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
6d870 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
6d880 2e 65 66 66 65 63 74 52 65 74 75 72 6e 52 20 3d .effectReturnR =
6d890 20 74 68 69 73 2e 5f 6d 65 72 67 65 2e 72 69 67 this._merge.rig
6d8a0 68 74 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 ht;.. //c
6d8b0 6f 6e 6e 65 63 74 69 6f 6e 73 0a 09 20 20 20 20 onnections..
6d8c0 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74 2e 63 this.input.c
6d8d0 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 73 70 6c onnect(this._spl
6d8e0 69 74 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f it);.. //
6d8f0 64 72 79 20 77 65 74 20 63 6f 6e 6e 65 63 74 69 dry wet connecti
6d900 6f 6e 73 0a 09 20 20 20 20 20 20 20 20 74 68 69 ons.. thi
6d910 73 2e 69 6e 70 75 74 2e 63 6f 6e 6e 65 63 74 28 s.input.connect(
6d920 74 68 69 73 2e 5f 64 72 79 57 65 74 2c 20 30 2c this._dryWet, 0,
6d930 20 30 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 0);.. th
6d940 69 73 2e 5f 6d 65 72 67 65 2e 63 6f 6e 6e 65 63 is._merge.connec
6d950 74 28 74 68 69 73 2e 5f 64 72 79 57 65 74 2c 20 t(this._dryWet,
6d960 30 2c 20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 0, 1);..
6d970 74 68 69 73 2e 5f 64 72 79 57 65 74 2e 63 6f 6e this._dryWet.con
6d980 6e 65 63 74 28 74 68 69 73 2e 6f 75 74 70 75 74 nect(this.output
6d990 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
6d9a0 2e 5f 72 65 61 64 4f 6e 6c 79 28 5b 27 77 65 74 ._readOnly(['wet
6d9b0 27 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ']);.. };..
6d9c0 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
6d9d0 6e 65 2e 53 74 65 72 65 6f 45 66 66 65 63 74 2c ne.StereoEffect,
6d9e0 20 54 6f 6e 65 2e 45 66 66 65 63 74 29 3b 0a 09 Tone.Effect);..
6d9f0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c /**... * Cl
6da00 65 61 6e 20 75 70 2e 20 0a 09 09 20 2a 20 20 40 ean up. ... * @
6da10 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 74 returns {Tone.St
6da20 65 72 65 6f 45 66 66 65 63 74 7d 20 74 68 69 73 ereoEffect} this
6da30 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
6da40 2e 53 74 65 72 65 6f 45 66 66 65 63 74 2e 70 72 .StereoEffect.pr
6da50 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 ototype.dispose
6da60 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
6da70 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 . Tone.pr
6da80 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e ototype.dispose.
6da90 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 call(this);..
6daa0 20 20 20 20 20 74 68 69 73 2e 5f 64 72 79 57 65 this._dryWe
6dab0 74 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 t.dispose();..
6dac0 20 20 20 20 20 20 74 68 69 73 2e 5f 64 72 79 57 this._dryW
6dad0 65 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 et = null;..
6dae0 20 20 20 20 74 68 69 73 2e 5f 73 70 6c 69 74 2e this._split.
6daf0 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
6db00 20 20 20 20 74 68 69 73 2e 5f 73 70 6c 69 74 20 this._split
6db10 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
6db20 20 74 68 69 73 2e 5f 6d 65 72 67 65 2e 64 69 73 this._merge.dis
6db30 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
6db40 20 74 68 69 73 2e 5f 6d 65 72 67 65 20 3d 20 6e this._merge = n
6db50 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
6db60 69 73 2e 65 66 66 65 63 74 53 65 6e 64 4c 20 3d is.effectSendL =
6db70 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
6db80 74 68 69 73 2e 65 66 66 65 63 74 53 65 6e 64 52 this.effectSendR
6db90 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
6dba0 20 20 74 68 69 73 2e 65 66 66 65 63 74 52 65 74 this.effectRet
6dbb0 75 72 6e 4c 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 urnL = null;..
6dbc0 20 20 20 20 20 20 74 68 69 73 2e 65 66 66 65 63 this.effec
6dbd0 74 52 65 74 75 72 6e 52 20 3d 20 6e 75 6c 6c 3b tReturnR = null;
6dbe0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
6dbf0 77 72 69 74 61 62 6c 65 28 5b 27 77 65 74 27 5d writable(['wet']
6dc00 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
6dc10 2e 77 65 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 .wet = null;..
6dc20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
6dc30 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
6dc40 72 65 74 75 72 6e 20 54 6f 6e 65 2e 53 74 65 72 return Tone.Ster
6dc50 65 6f 45 66 66 65 63 74 3b 0a 09 7d 29 3b 0a 09 eoEffect;..});..
6dc60 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 Module(function
6dc70 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 (Tone) {.. ..
6dc80 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 09 40 63 /**... * .@c
6dc90 6c 61 73 73 20 20 54 6f 6e 65 2e 46 65 65 64 62 lass Tone.Feedb
6dca0 61 63 6b 45 66 66 65 63 74 20 70 72 6f 76 69 64 ackEffect provid
6dcb0 65 73 20 61 20 6c 6f 6f 70 20 62 65 74 77 65 65 es a loop betwee
6dcc0 6e 20 61 6e 20 0a 09 09 20 2a 20 09 20 20 20 20 n an ... * .
6dcd0 20 20 20 20 61 75 64 69 6f 20 73 6f 75 72 63 65 audio source
6dce0 20 61 6e 64 20 69 74 73 20 6f 77 6e 20 6f 75 74 and its own out
6dcf0 70 75 74 2e 20 54 68 69 73 20 69 73 20 61 20 62 put. This is a b
6dd00 61 73 65 2d 63 6c 61 73 73 0a 09 09 20 2a 20 09 ase-class... * .
6dd10 20 20 20 20 20 20 20 20 66 6f 72 20 66 65 65 64 for feed
6dd20 62 61 63 6b 20 65 66 66 65 63 74 73 2e 20 0a 09 back effects. ..
6dd30 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 . *... * @const
6dd40 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 ructor... * @ex
6dd50 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 45 66 66 65 tends {Tone.Effe
6dd60 63 74 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ct}... * @param
6dd70 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7c 4f 62 {NormalRange|Ob
6dd80 6a 65 63 74 7d 20 5b 66 65 65 64 62 61 63 6b 5d ject} [feedback]
6dd90 20 54 68 65 20 69 6e 69 74 69 61 6c 20 66 65 65 The initial fee
6dda0 64 62 61 63 6b 20 76 61 6c 75 65 2e 0a 09 09 20 dback value....
6ddb0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 65 65 */.. Tone.Fee
6ddc0 64 62 61 63 6b 45 66 66 65 63 74 20 3d 20 66 75 dbackEffect = fu
6ddd0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
6dde0 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 var options
6ddf0 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f = this.optionsO
6de00 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c bject(arguments,
6de10 20 5b 27 66 65 65 64 62 61 63 6b 27 5d 29 3b 0a ['feedback']);.
6de20 09 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 . options
6de30 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 = this.defaultA
6de40 72 67 28 6f 70 74 69 6f 6e 73 2c 20 54 6f 6e 65 rg(options, Tone
6de50 2e 46 65 65 64 62 61 63 6b 45 66 66 65 63 74 2e .FeedbackEffect.
6de60 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 defaults);..
6de70 20 20 20 20 54 6f 6e 65 2e 45 66 66 65 63 74 2e Tone.Effect.
6de80 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 6f call(this, optio
6de90 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a ns);.. /*
6dea0 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 67 61 69 *.... * the gai
6deb0 6e 20 77 68 69 63 68 20 63 6f 6e 74 72 6f 6c 73 n which controls
6dec0 20 74 68 65 20 66 65 65 64 62 61 63 6b 0a 09 09 the feedback...
6ded0 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 . * @type {Tone
6dee0 2e 47 61 69 6e 7d 0a 09 09 09 20 2a 20 20 40 70 .Gain}.... * @p
6def0 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
6df00 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 65 65 this._fee
6df10 64 62 61 63 6b 47 61 69 6e 20 3d 20 6e 65 77 20 dbackGain = new
6df20 54 6f 6e 65 2e 47 61 69 6e 28 6f 70 74 69 6f 6e Tone.Gain(option
6df30 73 2e 66 65 65 64 62 61 63 6b 2c 20 54 6f 6e 65 s.feedback, Tone
6df40 2e 54 79 70 65 2e 4e 6f 72 6d 61 6c 52 61 6e 67 .Type.NormalRang
6df50 65 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a e);.. /**
6df60 0a 09 09 09 20 2a 20 20 54 68 65 20 61 6d 6f 75 .... * The amou
6df70 6e 74 20 6f 66 20 73 69 67 6e 61 6c 20 77 68 69 nt of signal whi
6df80 63 68 20 69 73 20 66 65 64 20 62 61 63 6b 20 69 ch is fed back i
6df90 6e 74 6f 20 74 68 65 20 65 66 66 65 63 74 20 69 nto the effect i
6dfa0 6e 70 75 74 2e 20 0a 09 09 09 20 2a 20 20 40 74 nput. .... * @t
6dfb0 79 70 65 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 ype {NormalRange
6dfc0 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c }.... * @signal
6dfd0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
6dfe0 20 74 68 69 73 2e 66 65 65 64 62 61 63 6b 20 3d this.feedback =
6dff0 20 74 68 69 73 2e 5f 66 65 65 64 62 61 63 6b 47 this._feedbackG
6e000 61 69 6e 2e 67 61 69 6e 3b 0a 09 20 20 20 20 20 ain.gain;..
6e010 20 20 20 2f 2f 74 68 65 20 66 65 65 64 62 61 63 //the feedbac
6e020 6b 20 6c 6f 6f 70 0a 09 20 20 20 20 20 20 20 20 k loop..
6e030 74 68 69 73 2e 65 66 66 65 63 74 52 65 74 75 72 this.effectRetur
6e040 6e 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f 66 65 n.chain(this._fe
6e050 65 64 62 61 63 6b 47 61 69 6e 2c 20 74 68 69 73 edbackGain, this
6e060 2e 65 66 66 65 63 74 53 65 6e 64 29 3b 0a 09 20 .effectSend);..
6e070 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 this._rea
6e080 64 4f 6e 6c 79 28 5b 27 66 65 65 64 62 61 63 6b dOnly(['feedback
6e090 27 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ']);.. };..
6e0a0 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
6e0b0 6e 65 2e 46 65 65 64 62 61 63 6b 45 66 66 65 63 ne.FeedbackEffec
6e0c0 74 2c 20 54 6f 6e 65 2e 45 66 66 65 63 74 29 3b t, Tone.Effect);
6e0d0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
6e0e0 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 74 @static... * @t
6e0f0 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 ype {Object}...
6e100 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 65 65 */.. Tone.Fee
6e110 64 62 61 63 6b 45 66 66 65 63 74 2e 64 65 66 61 dbackEffect.defa
6e120 75 6c 74 73 20 3d 20 7b 20 27 66 65 65 64 62 61 ults = { 'feedba
6e130 63 6b 27 3a 20 30 2e 31 32 35 20 7d 3b 0a 09 20 ck': 0.125 };..
6e140 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 /**... * Cle
6e150 61 6e 20 75 70 2e 20 0a 09 09 20 2a 20 20 40 72 an up. ... * @r
6e160 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 46 65 65 eturns {Tone.Fee
6e170 64 62 61 63 6b 45 66 66 65 63 74 7d 20 74 68 69 dbackEffect} thi
6e180 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
6e190 65 2e 46 65 65 64 62 61 63 6b 45 66 66 65 63 74 e.FeedbackEffect
6e1a0 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
6e1b0 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 se = function ()
6e1c0 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 {.. Tone
6e1d0 2e 45 66 66 65 63 74 2e 70 72 6f 74 6f 74 79 70 .Effect.prototyp
6e1e0 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 e.dispose.call(t
6e1f0 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 his);.. t
6e200 68 69 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b 27 his._writable(['
6e210 66 65 65 64 62 61 63 6b 27 5d 29 3b 0a 09 20 20 feedback']);..
6e220 20 20 20 20 20 20 74 68 69 73 2e 5f 66 65 65 64 this._feed
6e230 62 61 63 6b 47 61 69 6e 2e 64 69 73 70 6f 73 65 backGain.dispose
6e240 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
6e250 73 2e 5f 66 65 65 64 62 61 63 6b 47 61 69 6e 20 s._feedbackGain
6e260 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
6e270 20 74 68 69 73 2e 66 65 65 64 62 61 63 6b 20 3d this.feedback =
6e280 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
6e290 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 return this;..
6e2a0 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 6e };.. return
6e2b0 20 54 6f 6e 65 2e 46 65 65 64 62 61 63 6b 45 66 Tone.FeedbackEf
6e2c0 66 65 63 74 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 fect;..});..Modu
6e2d0 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e le(function (Ton
6e2e0 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 e) {.. ..
6e2f0 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 /**... * @class
6e300 20 4a 75 73 74 20 6c 69 6b 65 20 61 20 73 74 65 Just like a ste
6e310 72 65 6f 20 66 65 65 64 62 61 63 6b 20 65 66 66 reo feedback eff
6e320 65 63 74 2c 20 62 75 74 20 74 68 65 20 66 65 65 ect, but the fee
6e330 64 62 61 63 6b 20 69 73 20 72 6f 75 74 65 64 20 dback is routed
6e340 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 from left to rig
6e350 68 74 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 ht... *
6e360 61 6e 64 20 72 69 67 68 74 20 74 6f 20 6c 65 66 and right to lef
6e370 74 20 69 6e 73 74 65 61 64 20 6f 66 20 6f 6e 20 t instead of on
6e380 74 68 65 20 73 61 6d 65 20 63 68 61 6e 6e 65 6c the same channel
6e390 2e 0a 09 09 20 2a 0a 09 09 20 2a 09 40 63 6f 6e .... *... *.@con
6e3a0 73 74 72 75 63 74 6f 72 0a 09 09 20 2a 09 40 65 structor... *.@e
6e3b0 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 46 65 65 xtends {Tone.Fee
6e3c0 64 62 61 63 6b 45 66 66 65 63 74 7d 0a 09 09 20 dbackEffect}...
6e3d0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 74 65 */.. Tone.Ste
6e3e0 72 65 6f 58 46 65 65 64 62 61 63 6b 45 66 66 65 reoXFeedbackEffe
6e3f0 63 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 ct = function ()
6e400 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
6e410 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f options = this.o
6e420 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 ptionsObject(arg
6e430 75 6d 65 6e 74 73 2c 20 5b 27 66 65 65 64 62 61 uments, ['feedba
6e440 63 6b 27 5d 2c 20 54 6f 6e 65 2e 46 65 65 64 62 ck'], Tone.Feedb
6e450 61 63 6b 45 66 66 65 63 74 2e 64 65 66 61 75 6c ackEffect.defaul
6e460 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 54 6f ts);.. To
6e470 6e 65 2e 53 74 65 72 65 6f 45 66 66 65 63 74 2e ne.StereoEffect.
6e480 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 6f call(this, optio
6e490 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a ns);.. /*
6e4a0 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 61 6d 6f *.... * The amo
6e4b0 75 6e 74 20 6f 66 20 66 65 65 64 62 61 63 6b 20 unt of feedback
6e4c0 66 72 6f 6d 20 74 68 65 20 6f 75 74 70 75 74 0a from the output.
6e4d0 09 09 09 20 2a 20 20 62 61 63 6b 20 69 6e 74 6f ... * back into
6e4e0 20 74 68 65 20 69 6e 70 75 74 20 6f 66 20 74 68 the input of th
6e4f0 65 20 65 66 66 65 63 74 20 28 72 6f 75 74 65 64 e effect (routed
6e500 0a 09 09 09 20 2a 20 20 61 63 72 6f 73 73 20 6c .... * across l
6e510 65 66 74 20 61 6e 64 20 72 69 67 68 74 20 63 68 eft and right ch
6e520 61 6e 6e 65 6c 73 29 2e 0a 09 09 09 20 2a 20 20 annels)..... *
6e530 40 74 79 70 65 20 7b 4e 6f 72 6d 61 6c 52 61 6e @type {NormalRan
6e540 67 65 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e ge}.... * @sign
6e550 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 al.... */..
6e560 20 20 20 74 68 69 73 2e 66 65 65 64 62 61 63 6b this.feedback
6e570 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e = new Tone.Sign
6e580 61 6c 28 6f 70 74 69 6f 6e 73 2e 66 65 65 64 62 al(options.feedb
6e590 61 63 6b 2c 20 54 6f 6e 65 2e 54 79 70 65 2e 4e ack, Tone.Type.N
6e5a0 6f 72 6d 61 6c 52 61 6e 67 65 29 3b 0a 09 20 20 ormalRange);..
6e5b0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
6e5c0 20 74 68 65 20 6c 65 66 74 20 73 69 64 65 20 66 the left side f
6e5d0 65 65 62 61 63 6b 0a 09 09 09 20 2a 20 20 40 74 eeback.... * @t
6e5e0 79 70 65 20 7b 54 6f 6e 65 2e 47 61 69 6e 7d 0a ype {Tone.Gain}.
6e5f0 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
6e600 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
6e610 74 68 69 73 2e 5f 66 65 65 64 62 61 63 6b 4c 52 this._feedbackLR
6e620 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e = new Tone.Gain
6e630 28 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a ();.. /**
6e640 0a 09 09 09 20 2a 20 20 74 68 65 20 72 69 67 68 .... * the righ
6e650 74 20 73 69 64 65 20 66 65 65 62 61 63 6b 0a 09 t side feeback..
6e660 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e .. * @type {Ton
6e670 65 2e 47 61 69 6e 7d 0a 09 09 09 20 2a 20 20 40 e.Gain}.... * @
6e680 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
6e690 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 65 this._fe
6e6a0 65 64 62 61 63 6b 52 4c 20 3d 20 6e 65 77 20 54 edbackRL = new T
6e6b0 6f 6e 65 2e 47 61 69 6e 28 29 3b 0a 09 20 20 20 one.Gain();..
6e6c0 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 63 74 20 69 //connect i
6e6d0 74 20 75 70 0a 09 20 20 20 20 20 20 20 20 74 68 t up.. th
6e6e0 69 73 2e 65 66 66 65 63 74 52 65 74 75 72 6e 4c is.effectReturnL
6e6f0 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f 66 65 65 .chain(this._fee
6e700 64 62 61 63 6b 4c 52 2c 20 74 68 69 73 2e 65 66 dbackLR, this.ef
6e710 66 65 63 74 53 65 6e 64 52 29 3b 0a 09 20 20 20 fectSendR);..
6e720 20 20 20 20 20 74 68 69 73 2e 65 66 66 65 63 74 this.effect
6e730 52 65 74 75 72 6e 52 2e 63 68 61 69 6e 28 74 68 ReturnR.chain(th
6e740 69 73 2e 5f 66 65 65 64 62 61 63 6b 52 4c 2c 20 is._feedbackRL,
6e750 74 68 69 73 2e 65 66 66 65 63 74 53 65 6e 64 4c this.effectSendL
6e760 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
6e770 2e 66 65 65 64 62 61 63 6b 2e 66 61 6e 28 74 68 .feedback.fan(th
6e780 69 73 2e 5f 66 65 65 64 62 61 63 6b 4c 52 2e 67 is._feedbackLR.g
6e790 61 69 6e 2c 20 74 68 69 73 2e 5f 66 65 65 64 62 ain, this._feedb
6e7a0 61 63 6b 52 4c 2e 67 61 69 6e 29 3b 0a 09 20 20 ackRL.gain);..
6e7b0 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 64 this._read
6e7c0 4f 6e 6c 79 28 5b 27 66 65 65 64 62 61 63 6b 27 Only(['feedback'
6e7d0 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 ]);.. };..
6e7e0 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e Tone.extend(Ton
6e7f0 65 2e 53 74 65 72 65 6f 58 46 65 65 64 62 61 63 e.StereoXFeedbac
6e800 6b 45 66 66 65 63 74 2c 20 54 6f 6e 65 2e 46 65 kEffect, Tone.Fe
6e810 65 64 62 61 63 6b 45 66 66 65 63 74 29 3b 0a 09 edbackEffect);..
6e820 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 63 6c /**... * cl
6e830 65 61 6e 20 75 70 0a 09 09 20 2a 20 20 40 72 65 ean up... * @re
6e840 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 74 65 72 turns {Tone.Ster
6e850 65 6f 58 46 65 65 64 62 61 63 6b 45 66 66 65 63 eoXFeedbackEffec
6e860 74 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 t} this... */..
6e870 20 20 20 54 6f 6e 65 2e 53 74 65 72 65 6f 58 46 Tone.StereoXF
6e880 65 65 64 62 61 63 6b 45 66 66 65 63 74 2e 70 72 eedbackEffect.pr
6e890 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 ototype.dispose
6e8a0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
6e8b0 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 53 74 . Tone.St
6e8c0 65 72 65 6f 45 66 66 65 63 74 2e 70 72 6f 74 6f ereoEffect.proto
6e8d0 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c type.dispose.cal
6e8e0 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 l(this);..
6e8f0 20 20 74 68 69 73 2e 5f 77 72 69 74 61 62 6c 65 this._writable
6e900 28 5b 27 66 65 65 64 62 61 63 6b 27 5d 29 3b 0a (['feedback']);.
6e910 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 65 . this.fe
6e920 65 64 62 61 63 6b 2e 64 69 73 70 6f 73 65 28 29 edback.dispose()
6e930 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
6e940 66 65 65 64 62 61 63 6b 20 3d 20 6e 75 6c 6c 3b feedback = null;
6e950 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
6e960 66 65 65 64 62 61 63 6b 4c 52 2e 64 69 73 70 6f feedbackLR.dispo
6e970 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
6e980 68 69 73 2e 5f 66 65 65 64 62 61 63 6b 4c 52 20 his._feedbackLR
6e990 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
6e9a0 20 74 68 69 73 2e 5f 66 65 65 64 62 61 63 6b 52 this._feedbackR
6e9b0 4c 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 L.dispose();..
6e9c0 20 20 20 20 20 20 74 68 69 73 2e 5f 66 65 65 64 this._feed
6e9d0 62 61 63 6b 52 4c 20 3d 20 6e 75 6c 6c 3b 0a 09 backRL = null;..
6e9e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
6e9f0 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
6ea00 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 53 74 return Tone.St
6ea10 65 72 65 6f 58 46 65 65 64 62 61 63 6b 45 66 66 ereoXFeedbackEff
6ea20 65 63 74 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c ect;..});..Modul
6ea30 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 e(function (Tone
6ea40 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f ) {.. .. /
6ea50 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 **... * @class
6ea60 54 6f 6e 65 2e 43 68 6f 72 75 73 20 69 73 20 61 Tone.Chorus is a
6ea70 20 73 74 65 72 65 6f 20 63 68 6f 72 75 73 20 65 stereo chorus e
6ea80 66 66 65 63 74 20 77 69 74 68 20 66 65 65 64 62 ffect with feedb
6ea90 61 63 6b 20 63 6f 6d 70 6f 73 65 64 20 6f 66 20 ack composed of
6eaa0 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 61 20 ... * a
6eab0 6c 65 66 74 20 61 6e 64 20 72 69 67 68 74 20 64 left and right d
6eac0 65 6c 61 79 20 77 69 74 68 20 61 20 54 6f 6e 65 elay with a Tone
6ead0 2e 4c 46 4f 20 61 70 70 6c 69 65 64 20 74 6f 20 .LFO applied to
6eae0 74 68 65 20 64 65 6c 61 79 54 69 6d 65 20 6f 66 the delayTime of
6eaf0 20 65 61 63 68 20 63 68 61 6e 6e 65 6c 2e 20 0a each channel. .
6eb00 09 09 20 2a 20 20 20 20 20 20 20 20 20 49 6e 73 .. * Ins
6eb10 70 69 72 61 74 69 6f 6e 20 66 72 6f 6d 20 5b 54 piration from [T
6eb20 75 6e 61 2e 6a 73 5d 28 68 74 74 70 73 3a 2f 2f una.js](https://
6eb30 67 69 74 68 75 62 2e 63 6f 6d 2f 44 69 6e 61 68 github.com/Dinah
6eb40 6d 6f 65 2f 74 75 6e 61 2f 62 6c 6f 62 2f 6d 61 moe/tuna/blob/ma
6eb50 73 74 65 72 2f 74 75 6e 61 2e 6a 73 29 2e 0a 09 ster/tuna.js)...
6eb60 09 20 2a 20 20 20 20 20 20 20 20 20 52 65 61 64 . * Read
6eb70 20 6d 6f 72 65 20 6f 6e 20 74 68 65 20 63 68 6f more on the cho
6eb80 72 75 73 20 65 66 66 65 63 74 20 6f 6e 20 5b 53 rus effect on [S
6eb90 6f 75 6e 64 4f 6e 53 6f 75 6e 64 5d 28 68 74 74 oundOnSound](htt
6eba0 70 3a 2f 2f 77 77 77 2e 73 6f 75 6e 64 6f 6e 73 p://www.soundons
6ebb0 6f 75 6e 64 2e 63 6f 6d 2f 73 6f 73 2f 6a 75 6e ound.com/sos/jun
6ebc0 30 34 2f 61 72 74 69 63 6c 65 73 2f 73 79 6e 74 04/articles/synt
6ebd0 68 73 65 63 72 65 74 73 2e 68 74 6d 29 2e 0a 09 hsecrets.htm)...
6ebe0 09 20 2a 0a 09 09 20 2a 09 40 63 6f 6e 73 74 72 . *... *.@constr
6ebf0 75 63 74 6f 72 0a 09 09 20 2a 09 40 65 78 74 65 uctor... *.@exte
6ec00 6e 64 73 20 7b 54 6f 6e 65 2e 53 74 65 72 65 6f nds {Tone.Stereo
6ec10 58 46 65 65 64 62 61 63 6b 45 66 66 65 63 74 7d XFeedbackEffect}
6ec20 0a 09 09 20 2a 09 40 70 61 72 61 6d 20 7b 46 72 ... *.@param {Fr
6ec30 65 71 75 65 6e 63 79 7c 4f 62 6a 65 63 74 7d 20 equency|Object}
6ec40 5b 66 72 65 71 75 65 6e 63 79 5d 20 54 68 65 20 [frequency] The
6ec50 66 72 65 71 75 65 6e 63 79 20 6f 66 20 74 68 65 frequency of the
6ec60 20 4c 46 4f 2e 0a 09 09 20 2a 09 40 70 61 72 61 LFO.... *.@para
6ec70 6d 20 7b 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 7d m {Milliseconds}
6ec80 20 5b 64 65 6c 61 79 54 69 6d 65 5d 20 54 68 65 [delayTime] The
6ec90 20 64 65 6c 61 79 20 6f 66 20 74 68 65 20 63 68 delay of the ch
6eca0 6f 72 75 73 20 65 66 66 65 63 74 20 69 6e 20 6d orus effect in m
6ecb0 73 2e 20 0a 09 09 20 2a 09 40 70 61 72 61 6d 20 s. ... *.@param
6ecc0 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d 20 5b 64 {NormalRange} [d
6ecd0 65 70 74 68 5d 20 54 68 65 20 64 65 70 74 68 20 epth] The depth
6ece0 6f 66 20 74 68 65 20 63 68 6f 72 75 73 2e 0a 09 of the chorus...
6ecf0 09 20 2a 09 40 65 78 61 6d 70 6c 65 0a 09 09 20 . *.@example...
6ed00 2a 20 76 61 72 20 63 68 6f 72 75 73 20 3d 20 6e * var chorus = n
6ed10 65 77 20 54 6f 6e 65 2e 43 68 6f 72 75 73 28 34 ew Tone.Chorus(4
6ed20 2c 20 32 2e 35 2c 20 30 2e 35 29 3b 0a 09 09 20 , 2.5, 0.5);...
6ed30 2a 20 76 61 72 20 73 79 6e 74 68 20 3d 20 6e 65 * var synth = ne
6ed40 77 20 54 6f 6e 65 2e 50 6f 6c 79 53 79 6e 74 68 w Tone.PolySynth
6ed50 28 34 2c 20 54 6f 6e 65 2e 4d 6f 6e 6f 53 79 6e (4, Tone.MonoSyn
6ed60 74 68 29 2e 63 6f 6e 6e 65 63 74 28 63 68 6f 72 th).connect(chor
6ed70 75 73 29 3b 0a 09 09 20 2a 20 73 79 6e 74 68 2e us);... * synth.
6ed80 74 72 69 67 67 65 72 41 74 74 61 63 6b 52 65 6c triggerAttackRel
6ed90 65 61 73 65 28 5b 22 43 33 22 2c 22 45 33 22 2c ease(["C3","E3",
6eda0 22 47 33 22 5d 2c 20 22 38 6e 22 29 3b 0a 09 09 "G3"], "8n");...
6edb0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 43 68 */.. Tone.Ch
6edc0 6f 72 75 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 orus = function
6edd0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 () {.. va
6ede0 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 r options = this
6edf0 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 .optionsObject(a
6ee00 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 rguments, [..
6ee10 20 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 'freque
6ee20 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 ncy',..
6ee30 20 20 20 27 64 65 6c 61 79 54 69 6d 65 27 2c 0a 'delayTime',.
6ee40 09 20 20 20 20 20 20 20 20 20 20 20 20 27 64 65 . 'de
6ee50 70 74 68 27 0a 09 20 20 20 20 20 20 20 20 5d 2c pth'.. ],
6ee60 20 54 6f 6e 65 2e 43 68 6f 72 75 73 2e 64 65 66 Tone.Chorus.def
6ee70 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 aults);..
6ee80 20 54 6f 6e 65 2e 53 74 65 72 65 6f 58 46 65 65 Tone.StereoXFee
6ee90 64 62 61 63 6b 45 66 66 65 63 74 2e 63 61 6c 6c dbackEffect.call
6eea0 28 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 29 3b (this, options);
6eeb0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
6eec0 09 20 2a 20 20 74 68 65 20 64 65 70 74 68 20 6f . * the depth o
6eed0 66 20 74 68 65 20 63 68 6f 72 75 73 0a 09 09 09 f the chorus....
6eee0 20 2a 20 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 * @type {numbe
6eef0 72 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 r}.... * @priva
6ef00 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
6ef10 20 20 20 74 68 69 73 2e 5f 64 65 70 74 68 20 3d this._depth =
6ef20 20 6f 70 74 69 6f 6e 73 2e 64 65 70 74 68 3b 0a options.depth;.
6ef30 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
6ef40 20 2a 20 20 74 68 65 20 64 65 6c 61 79 54 69 6d * the delayTim
6ef50 65 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b e.... * @type {
6ef60 6e 75 6d 62 65 72 7d 0a 09 09 09 20 2a 20 20 40 number}.... * @
6ef70 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
6ef80 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 65 this._de
6ef90 6c 61 79 54 69 6d 65 20 3d 20 6f 70 74 69 6f 6e layTime = option
6efa0 73 2e 64 65 6c 61 79 54 69 6d 65 20 2f 20 31 30 s.delayTime / 10
6efb0 30 30 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 00;.. /**
6efc0 0a 09 09 09 20 2a 20 20 74 68 65 20 6c 66 6f 20 .... * the lfo
6efd0 77 68 69 63 68 20 63 6f 6e 74 72 6f 6c 73 20 74 which controls t
6efe0 68 65 20 64 65 6c 61 79 54 69 6d 65 0a 09 09 09 he delayTime....
6eff0 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e * @type {Tone.
6f000 4c 46 4f 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 LFO}.... * @pri
6f010 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
6f020 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 4c 20 this._lfoL
6f030 3d 20 6e 65 77 20 54 6f 6e 65 2e 4c 46 4f 28 7b = new Tone.LFO({
6f040 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 66 .. 'f
6f050 72 65 71 75 65 6e 63 79 27 3a 20 6f 70 74 69 6f requency': optio
6f060 6e 73 2e 66 72 65 71 75 65 6e 63 79 2c 0a 09 20 ns.frequency,..
6f070 20 20 20 20 20 20 20 20 20 20 20 27 6d 69 6e 27 'min'
6f080 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 20 20 : 0,..
6f090 20 20 27 6d 61 78 27 3a 20 31 0a 09 20 20 20 20 'max': 1..
6f0a0 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 });..
6f0b0 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 61 6e 6f 74 /**.... * anot
6f0c0 68 65 72 20 4c 46 4f 20 66 6f 72 20 74 68 65 20 her LFO for the
6f0d0 72 69 67 68 74 20 73 69 64 65 20 77 69 74 68 20 right side with
6f0e0 61 20 31 38 30 20 64 65 67 72 65 65 20 70 68 61 a 180 degree pha
6f0f0 73 65 20 64 69 66 66 0a 09 09 09 20 2a 20 20 40 se diff.... * @
6f100 74 79 70 65 20 7b 54 6f 6e 65 2e 4c 46 4f 7d 0a type {Tone.LFO}.
6f110 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
6f120 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
6f130 74 68 69 73 2e 5f 6c 66 6f 52 20 3d 20 6e 65 77 this._lfoR = new
6f140 20 54 6f 6e 65 2e 4c 46 4f 28 7b 0a 09 20 20 20 Tone.LFO({..
6f150 20 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 'freque
6f160 6e 63 79 27 3a 20 6f 70 74 69 6f 6e 73 2e 66 72 ncy': options.fr
6f170 65 71 75 65 6e 63 79 2c 0a 09 20 20 20 20 20 20 equency,..
6f180 20 20 20 20 20 20 27 6d 69 6e 27 3a 20 30 2c 0a 'min': 0,.
6f190 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 61 . 'ma
6f1a0 78 27 3a 20 31 2c 0a 09 20 20 20 20 20 20 20 20 x': 1,..
6f1b0 20 20 20 20 27 70 68 61 73 65 27 3a 20 31 38 30 'phase': 180
6f1c0 0a 09 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 .. });..
6f1d0 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
6f1e0 20 20 64 65 6c 61 79 20 66 6f 72 20 6c 65 66 74 delay for left
6f1f0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 .... * @type {T
6f200 6f 6e 65 2e 44 65 6c 61 79 7d 0a 09 09 09 20 2a one.Delay}.... *
6f210 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
6f220 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
6f230 5f 64 65 6c 61 79 4e 6f 64 65 4c 20 3d 20 6e 65 _delayNodeL = ne
6f240 77 20 54 6f 6e 65 2e 44 65 6c 61 79 28 29 3b 0a w Tone.Delay();.
6f250 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
6f260 20 2a 20 20 64 65 6c 61 79 20 66 6f 72 20 72 69 * delay for ri
6f270 67 68 74 0a 09 09 09 20 2a 20 20 40 74 79 70 65 ght.... * @type
6f280 20 7b 54 6f 6e 65 2e 44 65 6c 61 79 7d 0a 09 09 {Tone.Delay}...
6f290 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
6f2a0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
6f2b0 69 73 2e 5f 64 65 6c 61 79 4e 6f 64 65 52 20 3d is._delayNodeR =
6f2c0 20 6e 65 77 20 54 6f 6e 65 2e 44 65 6c 61 79 28 new Tone.Delay(
6f2d0 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
6f2e0 09 09 09 20 2a 20 54 68 65 20 66 72 65 71 75 65 ... * The freque
6f2f0 6e 63 79 20 6f 66 20 74 68 65 20 4c 46 4f 20 77 ncy of the LFO w
6f300 68 69 63 68 20 6d 6f 64 75 6c 61 74 65 73 20 74 hich modulates t
6f310 68 65 20 64 65 6c 61 79 54 69 6d 65 2e 20 0a 09 he delayTime. ..
6f320 09 09 20 2a 20 40 74 79 70 65 20 7b 46 72 65 71 .. * @type {Freq
6f330 75 65 6e 63 79 7d 0a 09 09 09 20 2a 20 40 73 69 uency}.... * @si
6f340 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 gnal.... */..
6f350 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 this.freque
6f360 6e 63 79 20 3d 20 74 68 69 73 2e 5f 6c 66 6f 4c ncy = this._lfoL
6f370 2e 66 72 65 71 75 65 6e 63 79 3b 0a 09 20 20 20 .frequency;..
6f380 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 63 74 69 6f //connectio
6f390 6e 73 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 ns.. this
6f3a0 2e 65 66 66 65 63 74 53 65 6e 64 4c 2e 63 68 61 .effectSendL.cha
6f3b0 69 6e 28 74 68 69 73 2e 5f 64 65 6c 61 79 4e 6f in(this._delayNo
6f3c0 64 65 4c 2c 20 74 68 69 73 2e 65 66 66 65 63 74 deL, this.effect
6f3d0 52 65 74 75 72 6e 4c 29 3b 0a 09 20 20 20 20 20 ReturnL);..
6f3e0 20 20 20 74 68 69 73 2e 65 66 66 65 63 74 53 65 this.effectSe
6f3f0 6e 64 52 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f ndR.chain(this._
6f400 64 65 6c 61 79 4e 6f 64 65 52 2c 20 74 68 69 73 delayNodeR, this
6f410 2e 65 66 66 65 63 74 52 65 74 75 72 6e 52 29 3b .effectReturnR);
6f420 0a 09 20 20 20 20 20 20 20 20 2f 2f 61 6e 64 20 .. //and
6f430 70 61 73 73 20 74 68 72 6f 75 67 68 20 74 6f 20 pass through to
6f440 6d 61 6b 65 20 74 68 65 20 64 65 74 75 6e 65 20 make the detune
6f450 61 70 70 61 72 65 6e 74 0a 09 20 20 20 20 20 20 apparent..
6f460 20 20 74 68 69 73 2e 65 66 66 65 63 74 53 65 6e this.effectSen
6f470 64 4c 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e dL.connect(this.
6f480 65 66 66 65 63 74 52 65 74 75 72 6e 4c 29 3b 0a effectReturnL);.
6f490 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 66 . this.ef
6f4a0 66 65 63 74 53 65 6e 64 52 2e 63 6f 6e 6e 65 63 fectSendR.connec
6f4b0 74 28 74 68 69 73 2e 65 66 66 65 63 74 52 65 74 t(this.effectRet
6f4c0 75 72 6e 52 29 3b 0a 09 20 20 20 20 20 20 20 20 urnR);..
6f4d0 2f 2f 6c 66 6f 20 73 65 74 75 70 0a 09 20 20 20 //lfo setup..
6f4e0 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 4c 2e this._lfoL.
6f4f0 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 64 65 connect(this._de
6f500 6c 61 79 4e 6f 64 65 4c 2e 64 65 6c 61 79 54 69 layNodeL.delayTi
6f510 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 me);.. th
6f520 69 73 2e 5f 6c 66 6f 52 2e 63 6f 6e 6e 65 63 74 is._lfoR.connect
6f530 28 74 68 69 73 2e 5f 64 65 6c 61 79 4e 6f 64 65 (this._delayNode
6f540 52 2e 64 65 6c 61 79 54 69 6d 65 29 3b 0a 09 20 R.delayTime);..
6f550 20 20 20 20 20 20 20 2f 2f 73 74 61 72 74 20 74 //start t
6f560 68 65 20 6c 66 6f 0a 09 20 20 20 20 20 20 20 20 he lfo..
6f570 74 68 69 73 2e 5f 6c 66 6f 4c 2e 73 74 61 72 74 this._lfoL.start
6f580 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
6f590 73 2e 5f 6c 66 6f 52 2e 73 74 61 72 74 28 29 3b s._lfoR.start();
6f5a0 0a 09 20 20 20 20 20 20 20 20 2f 2f 68 61 76 65 .. //have
6f5b0 20 6f 6e 65 20 4c 46 4f 20 66 72 65 71 75 65 6e one LFO frequen
6f5c0 63 79 20 63 6f 6e 74 72 6f 6c 20 74 68 65 20 6f cy control the o
6f5d0 74 68 65 72 0a 09 20 20 20 20 20 20 20 20 74 68 ther.. th
6f5e0 69 73 2e 5f 6c 66 6f 4c 2e 66 72 65 71 75 65 6e is._lfoL.frequen
6f5f0 63 79 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e cy.connect(this.
6f600 5f 6c 66 6f 52 2e 66 72 65 71 75 65 6e 63 79 29 _lfoR.frequency)
6f610 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 73 65 74 ;.. //set
6f620 20 74 68 65 20 69 6e 69 74 69 61 6c 20 76 61 6c the initial val
6f630 75 65 73 0a 09 20 20 20 20 20 20 20 20 74 68 69 ues.. thi
6f640 73 2e 64 65 70 74 68 20 3d 20 74 68 69 73 2e 5f s.depth = this._
6f650 64 65 70 74 68 3b 0a 09 20 20 20 20 20 20 20 20 depth;..
6f660 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 2e 76 this.frequency.v
6f670 61 6c 75 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 66 alue = options.f
6f680 72 65 71 75 65 6e 63 79 3b 0a 09 20 20 20 20 20 requency;..
6f690 20 20 20 74 68 69 73 2e 74 79 70 65 20 3d 20 6f this.type = o
6f6a0 70 74 69 6f 6e 73 2e 74 79 70 65 3b 0a 09 20 20 ptions.type;..
6f6b0 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 64 this._read
6f6c0 4f 6e 6c 79 28 5b 27 66 72 65 71 75 65 6e 63 79 Only(['frequency
6f6d0 27 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ']);.. th
6f6e0 69 73 2e 73 70 72 65 61 64 20 3d 20 6f 70 74 69 is.spread = opti
6f6f0 6f 6e 73 2e 73 70 72 65 61 64 3b 0a 09 20 20 20 ons.spread;..
6f700 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 };.. Tone.ex
6f710 74 65 6e 64 28 54 6f 6e 65 2e 43 68 6f 72 75 73 tend(Tone.Chorus
6f720 2c 20 54 6f 6e 65 2e 53 74 65 72 65 6f 58 46 65 , Tone.StereoXFe
6f730 65 64 62 61 63 6b 45 66 66 65 63 74 29 3b 0a 09 edbackEffect);..
6f740 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 73 /**... * @s
6f750 74 61 74 69 63 0a 09 09 20 2a 20 20 40 74 79 70 tatic... * @typ
6f760 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f e {Object}... */
6f770 0a 09 20 20 20 20 54 6f 6e 65 2e 43 68 6f 72 75 .. Tone.Choru
6f780 73 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 s.defaults = {..
6f790 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 'frequen
6f7a0 63 79 27 3a 20 31 2e 35 2c 0a 09 20 20 20 20 20 cy': 1.5,..
6f7b0 20 20 20 27 64 65 6c 61 79 54 69 6d 65 27 3a 20 'delayTime':
6f7c0 33 2e 35 2c 0a 09 20 20 20 20 20 20 20 20 27 64 3.5,.. 'd
6f7d0 65 70 74 68 27 3a 20 30 2e 37 2c 0a 09 20 20 20 epth': 0.7,..
6f7e0 20 20 20 20 20 27 66 65 65 64 62 61 63 6b 27 3a 'feedback':
6f7f0 20 30 2e 31 2c 0a 09 20 20 20 20 20 20 20 20 27 0.1,.. '
6f800 74 79 70 65 27 3a 20 27 73 69 6e 65 27 2c 0a 09 type': 'sine',..
6f810 20 20 20 20 20 20 20 20 27 73 70 72 65 61 64 27 'spread'
6f820 3a 20 31 38 30 0a 09 20 20 20 20 7d 3b 0a 09 20 : 180.. };..
6f830 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 /**... * The
6f840 64 65 70 74 68 20 6f 66 20 74 68 65 20 65 66 66 depth of the eff
6f850 65 63 74 2e 20 41 20 64 65 70 74 68 20 6f 66 20 ect. A depth of
6f860 31 20 6d 61 6b 65 73 20 74 68 65 20 64 65 6c 61 1 makes the dela
6f870 79 54 69 6d 65 0a 09 09 20 2a 20 6d 6f 64 75 6c yTime... * modul
6f880 61 74 65 20 62 65 74 77 65 65 6e 20 30 20 61 6e ate between 0 an
6f890 64 20 32 2a 64 65 6c 61 79 54 69 6d 65 20 28 63 d 2*delayTime (c
6f8a0 65 6e 74 65 72 65 64 20 61 72 6f 75 6e 64 20 74 entered around t
6f8b0 68 65 20 64 65 6c 61 79 54 69 6d 65 29 2e 20 0a he delayTime). .
6f8c0 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 .. * @memberOf T
6f8d0 6f 6e 65 2e 43 68 6f 72 75 73 23 0a 09 09 20 2a one.Chorus#... *
6f8e0 20 40 74 79 70 65 20 7b 4e 6f 72 6d 61 6c 52 61 @type {NormalRa
6f8f0 6e 67 65 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 nge}... * @name
6f900 64 65 70 74 68 0a 09 09 20 2a 2f 0a 09 20 20 20 depth... */..
6f910 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
6f920 6f 70 65 72 74 79 28 54 6f 6e 65 2e 43 68 6f 72 operty(Tone.Chor
6f930 75 73 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 64 us.prototype, 'd
6f940 65 70 74 68 27 2c 20 7b 0a 09 20 20 20 20 20 20 epth', {..
6f950 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
6f960 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
6f970 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 64 return this._d
6f980 65 70 74 68 3b 0a 09 20 20 20 20 20 20 20 20 7d epth;.. }
6f990 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 ,.. set:
6f9a0 66 75 6e 63 74 69 6f 6e 20 28 64 65 70 74 68 29 function (depth)
6f9b0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
6f9c0 74 68 69 73 2e 5f 64 65 70 74 68 20 3d 20 64 65 this._depth = de
6f9d0 70 74 68 3b 0a 09 20 20 20 20 20 20 20 20 20 20 pth;..
6f9e0 20 20 76 61 72 20 64 65 76 69 61 74 69 6f 6e 20 var deviation
6f9f0 3d 20 74 68 69 73 2e 5f 64 65 6c 61 79 54 69 6d = this._delayTim
6fa00 65 20 2a 20 64 65 70 74 68 3b 0a 09 20 20 20 20 e * depth;..
6fa10 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 this._lf
6fa20 6f 4c 2e 6d 69 6e 20 3d 20 4d 61 74 68 2e 6d 61 oL.min = Math.ma
6fa30 78 28 74 68 69 73 2e 5f 64 65 6c 61 79 54 69 6d x(this._delayTim
6fa40 65 20 2d 20 64 65 76 69 61 74 69 6f 6e 2c 20 30 e - deviation, 0
6fa50 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
6fa60 74 68 69 73 2e 5f 6c 66 6f 4c 2e 6d 61 78 20 3d this._lfoL.max =
6fa70 20 74 68 69 73 2e 5f 64 65 6c 61 79 54 69 6d 65 this._delayTime
6fa80 20 2b 20 64 65 76 69 61 74 69 6f 6e 3b 0a 09 20 + deviation;..
6fa90 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
6faa0 5f 6c 66 6f 52 2e 6d 69 6e 20 3d 20 4d 61 74 68 _lfoR.min = Math
6fab0 2e 6d 61 78 28 74 68 69 73 2e 5f 64 65 6c 61 79 .max(this._delay
6fac0 54 69 6d 65 20 2d 20 64 65 76 69 61 74 69 6f 6e Time - deviation
6fad0 2c 20 30 29 3b 0a 09 20 20 20 20 20 20 20 20 20 , 0);..
6fae0 20 20 20 74 68 69 73 2e 5f 6c 66 6f 52 2e 6d 61 this._lfoR.ma
6faf0 78 20 3d 20 74 68 69 73 2e 5f 64 65 6c 61 79 54 x = this._delayT
6fb00 69 6d 65 20 2b 20 64 65 76 69 61 74 69 6f 6e 3b ime + deviation;
6fb10 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
6fb20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
6fb30 20 2a 20 54 68 65 20 64 65 6c 61 79 54 69 6d 65 * The delayTime
6fb40 20 69 6e 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 in milliseconds
6fb50 20 6f 66 20 74 68 65 20 63 68 6f 72 75 73 2e 20 of the chorus.
6fb60 41 20 6c 61 72 67 65 72 20 64 65 6c 61 79 54 69 A larger delayTi
6fb70 6d 65 0a 09 09 20 2a 20 77 69 6c 6c 20 67 69 76 me... * will giv
6fb80 65 20 61 20 6d 6f 72 65 20 70 72 6f 6e 6f 75 6e e a more pronoun
6fb90 63 65 64 20 65 66 66 65 63 74 2e 20 4e 6f 6d 69 ced effect. Nomi
6fba0 6e 61 6c 20 72 61 6e 67 65 20 61 20 64 65 6c 61 nal range a dela
6fbb0 79 54 69 6d 65 0a 09 09 20 2a 20 69 73 20 62 65 yTime... * is be
6fbc0 74 77 65 65 6e 20 32 20 61 6e 64 20 32 30 6d 73 tween 2 and 20ms
6fbd0 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f . ... * @memberO
6fbe0 66 20 54 6f 6e 65 2e 43 68 6f 72 75 73 23 0a 09 f Tone.Chorus#..
6fbf0 09 20 2a 20 40 74 79 70 65 20 7b 4d 69 6c 6c 69 . * @type {Milli
6fc00 73 65 63 6f 6e 64 73 7d 0a 09 09 20 2a 20 40 6e seconds}... * @n
6fc10 61 6d 65 20 64 65 6c 61 79 54 69 6d 65 0a 09 09 ame delayTime...
6fc20 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
6fc30 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
6fc40 6f 6e 65 2e 43 68 6f 72 75 73 2e 70 72 6f 74 6f one.Chorus.proto
6fc50 74 79 70 65 2c 20 27 64 65 6c 61 79 54 69 6d 65 type, 'delayTime
6fc60 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 ', {.. ge
6fc70 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b t: function () {
6fc80 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
6fc90 74 75 72 6e 20 74 68 69 73 2e 5f 64 65 6c 61 79 turn this._delay
6fca0 54 69 6d 65 20 2a 20 31 30 30 30 3b 0a 09 20 20 Time * 1000;..
6fcb0 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 },..
6fcc0 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 set: function
6fcd0 28 64 65 6c 61 79 54 69 6d 65 29 20 7b 0a 09 20 (delayTime) {..
6fce0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
6fcf0 5f 64 65 6c 61 79 54 69 6d 65 20 3d 20 64 65 6c _delayTime = del
6fd00 61 79 54 69 6d 65 20 2f 20 31 30 30 30 3b 0a 09 ayTime / 1000;..
6fd10 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
6fd20 2e 64 65 70 74 68 20 3d 20 74 68 69 73 2e 5f 64 .depth = this._d
6fd30 65 70 74 68 3b 0a 09 20 20 20 20 20 20 20 20 7d epth;.. }
6fd40 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f .. });.. /
6fd50 2a 2a 0a 09 09 20 2a 20 54 68 65 20 6f 73 63 69 **... * The osci
6fd60 6c 6c 61 74 6f 72 20 74 79 70 65 20 6f 66 20 74 llator type of t
6fd70 68 65 20 4c 46 4f 2e 20 0a 09 09 20 2a 20 40 6d he LFO. ... * @m
6fd80 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 43 68 6f emberOf Tone.Cho
6fd90 72 75 73 23 0a 09 09 20 2a 20 40 74 79 70 65 20 rus#... * @type
6fda0 7b 73 74 72 69 6e 67 7d 0a 09 09 20 2a 20 40 6e {string}... * @n
6fdb0 61 6d 65 20 74 79 70 65 0a 09 09 20 2a 2f 0a 09 ame type... */..
6fdc0 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
6fdd0 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 43 eProperty(Tone.C
6fde0 68 6f 72 75 73 2e 70 72 6f 74 6f 74 79 70 65 2c horus.prototype,
6fdf0 20 27 74 79 70 65 27 2c 20 7b 0a 09 20 20 20 20 'type', {..
6fe00 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
6fe10 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
6fe20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
6fe30 5f 6c 66 6f 4c 2e 74 79 70 65 3b 0a 09 20 20 20 _lfoL.type;..
6fe40 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
6fe50 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 set: function (
6fe60 74 79 70 65 29 20 7b 0a 09 20 20 20 20 20 20 20 type) {..
6fe70 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 4c 2e this._lfoL.
6fe80 74 79 70 65 20 3d 20 74 79 70 65 3b 0a 09 20 20 type = type;..
6fe90 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
6fea0 6c 66 6f 52 2e 74 79 70 65 20 3d 20 74 79 70 65 lfoR.type = type
6feb0 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
6fec0 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 20 0a });.. /** .
6fed0 09 09 20 2a 20 41 6d 6f 75 6e 74 20 6f 66 20 73 .. * Amount of s
6fee0 74 65 72 65 6f 20 73 70 72 65 61 64 2e 20 57 68 tereo spread. Wh
6fef0 65 6e 20 73 65 74 20 74 6f 20 30 2c 20 62 6f 74 en set to 0, bot
6ff00 68 20 4c 46 4f 27 73 20 77 69 6c 6c 20 62 65 20 h LFO's will be
6ff10 70 61 6e 6e 65 64 20 63 65 6e 74 72 61 6c 6c 79 panned centrally
6ff20 2e 0a 09 09 20 2a 20 57 68 65 6e 20 73 65 74 20 .... * When set
6ff30 74 6f 20 31 38 30 2c 20 4c 46 4f 27 73 20 77 69 to 180, LFO's wi
6ff40 6c 6c 20 62 65 20 70 61 6e 6e 65 64 20 68 61 72 ll be panned har
6ff50 64 20 6c 65 66 74 20 61 6e 64 20 72 69 67 68 74 d left and right
6ff60 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 09 respectively...
6ff70 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f . * @memberOf To
6ff80 6e 65 2e 43 68 6f 72 75 73 23 0a 09 09 20 2a 20 ne.Chorus#... *
6ff90 40 74 79 70 65 20 7b 44 65 67 72 65 65 73 7d 0a @type {Degrees}.
6ffa0 09 09 20 2a 20 40 6e 61 6d 65 20 73 70 72 65 61 .. * @name sprea
6ffb0 64 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a d... */.. Obj
6ffc0 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
6ffd0 74 79 28 54 6f 6e 65 2e 43 68 6f 72 75 73 2e 70 ty(Tone.Chorus.p
6ffe0 72 6f 74 6f 74 79 70 65 2c 20 27 73 70 72 65 61 rototype, 'sprea
6fff0 64 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 d', {.. g
70000 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
70010 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
70020 65 74 75 72 6e 20 74 68 69 73 2e 5f 6c 66 6f 52 eturn this._lfoR
70030 2e 70 68 61 73 65 20 2d 20 74 68 69 73 2e 5f 6c .phase - this._l
70040 66 6f 4c 2e 70 68 61 73 65 3b 20 20 20 20 2f 2f foL.phase; //
70050 31 38 30 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 180.. },.
70060 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
70070 6e 63 74 69 6f 6e 20 28 73 70 72 65 61 64 29 20 nction (spread)
70080 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
70090 68 69 73 2e 5f 6c 66 6f 4c 2e 70 68 61 73 65 20 his._lfoL.phase
700a0 3d 20 39 30 20 2d 20 73 70 72 65 61 64 20 2f 20 = 90 - spread /
700b0 32 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2;..
700c0 74 68 69 73 2e 5f 6c 66 6f 52 2e 70 68 61 73 65 this._lfoR.phase
700d0 20 3d 20 73 70 72 65 61 64 20 2f 20 32 20 2b 20 = spread / 2 +
700e0 39 30 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 90;.. }..
700f0 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
70100 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e ... * Clean up.
70110 20 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 ... * @returns
70120 20 7b 54 6f 6e 65 2e 43 68 6f 72 75 73 7d 20 74 {Tone.Chorus} t
70130 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
70140 6f 6e 65 2e 43 68 6f 72 75 73 2e 70 72 6f 74 6f one.Chorus.proto
70150 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 type.dispose = f
70160 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
70170 20 20 20 20 20 20 54 6f 6e 65 2e 53 74 65 72 65 Tone.Stere
70180 6f 58 46 65 65 64 62 61 63 6b 45 66 66 65 63 74 oXFeedbackEffect
70190 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
701a0 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 se.call(this);..
701b0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 this._lf
701c0 6f 4c 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 oL.dispose();..
701d0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f this._lfo
701e0 4c 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 L = null;..
701f0 20 20 20 74 68 69 73 2e 5f 6c 66 6f 52 2e 64 69 this._lfoR.di
70200 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
70210 20 20 74 68 69 73 2e 5f 6c 66 6f 52 20 3d 20 6e this._lfoR = n
70220 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
70230 69 73 2e 5f 64 65 6c 61 79 4e 6f 64 65 4c 2e 64 is._delayNodeL.d
70240 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
70250 20 20 20 74 68 69 73 2e 5f 64 65 6c 61 79 4e 6f this._delayNo
70260 64 65 4c 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 deL = null;..
70270 20 20 20 20 20 74 68 69 73 2e 5f 64 65 6c 61 79 this._delay
70280 4e 6f 64 65 52 2e 64 69 73 70 6f 73 65 28 29 3b NodeR.dispose();
70290 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
702a0 64 65 6c 61 79 4e 6f 64 65 52 20 3d 20 6e 75 6c delayNodeR = nul
702b0 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
702c0 2e 5f 77 72 69 74 61 62 6c 65 28 27 66 72 65 71 ._writable('freq
702d0 75 65 6e 63 79 27 29 3b 0a 09 20 20 20 20 20 20 uency');..
702e0 20 20 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 this.frequency
702f0 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
70300 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
70310 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 };.. retu
70320 72 6e 20 54 6f 6e 65 2e 43 68 6f 72 75 73 3b 0a rn Tone.Chorus;.
70330 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e .});..Module(fun
70340 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 ction (Tone) {..
70350 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
70360 20 2a 20 20 40 63 6c 61 73 73 20 20 54 6f 6e 65 * @class Tone
70370 2e 43 6f 6e 76 6f 6c 76 65 72 20 69 73 20 61 20 .Convolver is a
70380 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 wrapper around t
70390 68 65 20 4e 61 74 69 76 65 20 57 65 62 20 41 75 he Native Web Au
703a0 64 69 6f 20 0a 09 09 20 2a 20 20 20 20 20 20 20 dio ... *
703b0 20 20 20 5b 43 6f 6e 76 6f 6c 76 65 72 4e 6f 64 [ConvolverNod
703c0 65 5d 28 68 74 74 70 3a 2f 2f 77 65 62 61 75 64 e](http://webaud
703d0 69 6f 2e 67 69 74 68 75 62 2e 69 6f 2f 77 65 62 io.github.io/web
703e0 2d 61 75 64 69 6f 2d 61 70 69 2f 23 74 68 65 2d -audio-api/#the-
703f0 63 6f 6e 76 6f 6c 76 65 72 6e 6f 64 65 2d 69 6e convolvernode-in
70400 74 65 72 66 61 63 65 29 2e 0a 09 09 20 2a 20 20 terface).... *
70410 20 20 20 20 20 20 20 20 43 6f 6e 76 6f 6c 75 74 Convolut
70420 69 6f 6e 20 69 73 20 75 73 65 66 75 6c 20 66 6f ion is useful fo
70430 72 20 72 65 76 65 72 62 20 61 6e 64 20 66 69 6c r reverb and fil
70440 74 65 72 20 65 6d 75 6c 61 74 69 6f 6e 2e 20 52 ter emulation. R
70450 65 61 64 20 6d 6f 72 65 20 61 62 6f 75 74 20 63 ead more about c
70460 6f 6e 76 6f 6c 75 74 69 6f 6e 20 72 65 76 65 72 onvolution rever
70470 62 20 6f 6e 0a 09 09 20 2a 20 20 20 20 20 20 20 b on... *
70480 20 20 20 5b 57 69 6b 69 70 65 64 69 61 5d 28 68 [Wikipedia](h
70490 74 74 70 73 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 ttps://en.wikipe
704a0 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 43 6f 6e dia.org/wiki/Con
704b0 76 6f 6c 75 74 69 6f 6e 5f 72 65 76 65 72 62 29 volution_reverb)
704c0 2e 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 .... * ... * @
704d0 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a constructor... *
704e0 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
704f0 2e 45 66 66 65 63 74 7d 0a 09 09 20 2a 20 20 40 .Effect}... * @
70500 70 61 72 61 6d 20 7b 73 74 72 69 6e 67 7c 54 6f param {string|To
70510 6e 65 2e 42 75 66 66 65 72 7c 4f 62 6a 65 63 74 ne.Buffer|Object
70520 7d 20 5b 75 72 6c 5d 20 54 68 65 20 55 52 4c 20 } [url] The URL
70530 6f 66 20 74 68 65 20 69 6d 70 75 6c 73 65 20 72 of the impulse r
70540 65 73 70 6f 6e 73 65 20 6f 72 20 74 68 65 20 54 esponse or the T
70550 6f 6e 65 2e 42 75 66 66 65 72 0a 09 09 20 2a 20 one.Buffer... *
70560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
70570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
70580 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 61 contia
70590 6e 69 6e 67 20 74 68 65 20 69 6d 70 75 6c 73 65 ning the impulse
705a0 20 72 65 73 70 6f 6e 73 65 2e 20 0a 09 09 20 2a response. ... *
705b0 20 20 40 70 61 72 61 6d 20 7b 46 75 6e 63 74 69 @param {Functi
705c0 6f 6e 7d 20 6f 6e 6c 6f 61 64 20 54 68 65 20 63 on} onload The c
705d0 61 6c 6c 62 61 63 6b 20 74 6f 20 69 6e 76 6f 6b allback to invok
705e0 65 20 77 68 65 6e 20 74 68 65 20 75 72 6c 20 69 e when the url i
705f0 73 20 6c 6f 61 64 65 64 2e 0a 09 09 20 2a 20 20 s loaded.... *
70600 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f @example... * //
70610 69 6e 69 74 69 61 6c 69 7a 69 6e 67 20 74 68 65 initializing the
70620 20 63 6f 6e 76 6f 6c 76 65 72 20 77 69 74 68 20 convolver with
70630 61 6e 20 69 6d 70 75 6c 73 65 20 72 65 73 70 6f an impulse respo
70640 6e 73 65 0a 09 09 20 2a 20 76 61 72 20 63 6f 6e nse... * var con
70650 76 6f 6c 76 65 72 20 3d 20 6e 65 77 20 54 6f 6e volver = new Ton
70660 65 2e 43 6f 6e 76 6f 6c 76 65 72 28 22 2e 2f 70 e.Convolver("./p
70670 61 74 68 2f 74 6f 2f 69 72 2e 77 61 76 22 29 2e ath/to/ir.wav").
70680 74 6f 4d 61 73 74 65 72 28 29 3b 0a 09 09 20 2a toMaster();... *
70690 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 43 6f 6e 76 /.. Tone.Conv
706a0 6f 6c 76 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e olver = function
706b0 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 () {.. v
706c0 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 ar options = thi
706d0 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 s.optionsObject(
706e0 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 arguments, [..
706f0 20 20 20 20 20 20 20 20 20 20 27 75 72 6c 27 2c 'url',
70700 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6f .. 'o
70710 6e 6c 6f 61 64 27 0a 09 20 20 20 20 20 20 20 20 nload'..
70720 5d 2c 20 54 6f 6e 65 2e 43 6f 6e 76 6f 6c 76 65 ], Tone.Convolve
70730 72 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 r.defaults);..
70740 20 20 20 20 20 20 54 6f 6e 65 2e 45 66 66 65 63 Tone.Effec
70750 74 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 74 t.call(this, opt
70760 69 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 ions);..
70770 2f 2a 2a 0a 09 09 09 20 2a 20 20 63 6f 6e 76 6f /**.... * convo
70780 6c 76 65 72 20 6e 6f 64 65 0a 09 09 09 20 2a 20 lver node.... *
70790 20 40 74 79 70 65 20 7b 43 6f 6e 76 6f 6c 76 65 @type {Convolve
707a0 72 4e 6f 64 65 7d 0a 09 09 09 20 2a 20 20 40 70 rNode}.... * @p
707b0 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
707c0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 6f 6e this._con
707d0 76 6f 6c 76 65 72 20 3d 20 74 68 69 73 2e 63 6f volver = this.co
707e0 6e 74 65 78 74 2e 63 72 65 61 74 65 43 6f 6e 76 ntext.createConv
707f0 6f 6c 76 65 72 28 29 3b 0a 09 20 20 20 20 20 20 olver();..
70800 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 /**.... * the
70810 20 63 6f 6e 76 6f 6c 75 74 69 6f 6e 20 62 75 66 convolution buf
70820 66 65 72 0a 09 09 09 20 2a 20 20 40 74 79 70 65 fer.... * @type
70830 20 7b 54 6f 6e 65 2e 42 75 66 66 65 72 7d 0a 09 {Tone.Buffer}..
70840 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
70850 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
70860 68 69 73 2e 5f 62 75 66 66 65 72 20 3d 20 6e 65 his._buffer = ne
70870 77 20 54 6f 6e 65 2e 42 75 66 66 65 72 28 29 3b w Tone.Buffer();
70880 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
70890 69 73 2e 69 73 53 74 72 69 6e 67 28 6f 70 74 69 is.isString(opti
708a0 6f 6e 73 2e 75 72 6c 29 29 20 7b 0a 09 20 20 20 ons.url)) {..
708b0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 62 this._b
708c0 75 66 66 65 72 2e 6c 6f 61 64 28 6f 70 74 69 6f uffer.load(optio
708d0 6e 73 2e 75 72 6c 2c 20 66 75 6e 63 74 69 6f 6e ns.url, function
708e0 20 28 62 75 66 66 65 72 29 20 7b 0a 09 20 20 20 (buffer) {..
708f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
70900 73 2e 62 75 66 66 65 72 20 3d 20 62 75 66 66 65 s.buffer = buffe
70910 72 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 r;..
70920 20 20 20 20 6f 70 74 69 6f 6e 73 2e 6f 6e 6c 6f options.onlo
70930 61 64 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 ad();..
70940 20 20 20 7d 2e 62 69 6e 64 28 74 68 69 73 29 29 }.bind(this))
70950 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 ;.. } els
70960 65 20 69 66 20 28 6f 70 74 69 6f 6e 73 2e 75 72 e if (options.ur
70970 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 l) {..
70980 20 20 74 68 69 73 2e 62 75 66 66 65 72 20 3d 20 this.buffer =
70990 6f 70 74 69 6f 6e 73 2e 75 72 6c 3b 0a 09 20 20 options.url;..
709a0 20 20 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e option
709b0 73 2e 6f 6e 6c 6f 61 64 28 29 3b 0a 09 20 20 20 s.onload();..
709c0 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
709d0 74 68 69 73 2e 63 6f 6e 6e 65 63 74 45 66 66 65 this.connectEffe
709e0 63 74 28 74 68 69 73 2e 5f 63 6f 6e 76 6f 6c 76 ct(this._convolv
709f0 65 72 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 er);.. };..
70a00 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
70a10 6e 65 2e 43 6f 6e 76 6f 6c 76 65 72 2c 20 54 6f ne.Convolver, To
70a20 6e 65 2e 45 66 66 65 63 74 29 3b 0a 09 20 20 20 ne.Effect);..
70a30 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 73 74 61 74 /**... * @stat
70a40 69 63 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 0a ic... * @const.
70a50 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 4f 62 .. * @type {Ob
70a60 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 ject}... */..
70a70 20 54 6f 6e 65 2e 43 6f 6e 76 6f 6c 76 65 72 2e Tone.Convolver.
70a80 64 65 66 61 75 6c 74 73 20 3d 20 7b 20 27 6f 6e defaults = { 'on
70a90 6c 6f 61 64 27 3a 20 54 6f 6e 65 2e 6e 6f 4f 70 load': Tone.noOp
70aa0 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
70ab0 2a 20 20 54 68 65 20 63 6f 6e 76 6f 6c 76 65 72 * The convolver
70ac0 27 73 20 62 75 66 66 65 72 0a 09 09 20 2a 20 20 's buffer... *
70ad0 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 43 @memberOf Tone.C
70ae0 6f 6e 76 6f 6c 76 65 72 23 0a 09 09 20 2a 20 20 onvolver#... *
70af0 40 74 79 70 65 20 7b 41 75 64 69 6f 42 75 66 66 @type {AudioBuff
70b00 65 72 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 er}... * @name
70b10 62 75 66 66 65 72 0a 09 09 20 2a 2f 0a 09 20 20 buffer... */..
70b20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
70b30 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 43 6f 6e roperty(Tone.Con
70b40 76 6f 6c 76 65 72 2e 70 72 6f 74 6f 74 79 70 65 volver.prototype
70b50 2c 20 27 62 75 66 66 65 72 27 2c 20 7b 0a 09 20 , 'buffer', {..
70b60 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
70b70 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
70b80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
70b90 69 73 2e 5f 62 75 66 66 65 72 2e 67 65 74 28 29 is._buffer.get()
70ba0 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 ;.. },..
70bb0 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 set: func
70bc0 74 69 6f 6e 20 28 62 75 66 66 65 72 29 20 7b 0a tion (buffer) {.
70bd0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
70be0 73 2e 5f 62 75 66 66 65 72 2e 73 65 74 28 62 75 s._buffer.set(bu
70bf0 66 66 65 72 29 3b 0a 09 20 20 20 20 20 20 20 20 ffer);..
70c00 20 20 20 20 74 68 69 73 2e 5f 63 6f 6e 76 6f 6c this._convol
70c10 76 65 72 2e 62 75 66 66 65 72 20 3d 20 74 68 69 ver.buffer = thi
70c20 73 2e 5f 62 75 66 66 65 72 2e 67 65 74 28 29 3b s._buffer.get();
70c30 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
70c40 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
70c50 20 2a 20 20 4c 6f 61 64 20 61 6e 20 69 6d 70 75 * Load an impu
70c60 6c 73 65 20 72 65 73 70 6f 6e 73 65 20 75 72 6c lse response url
70c70 20 61 73 20 61 6e 20 61 75 64 69 6f 20 62 75 66 as an audio buf
70c80 66 65 72 2e 0a 09 09 20 2a 20 20 44 65 63 6f 64 fer.... * Decod
70c90 65 73 20 74 68 65 20 61 75 64 69 6f 20 61 73 79 es the audio asy
70ca0 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 61 6e 64 20 nchronously and
70cb0 69 6e 76 6f 6b 65 73 0a 09 09 20 2a 20 20 74 68 invokes... * th
70cc0 65 20 63 61 6c 6c 62 61 63 6b 20 6f 6e 63 65 20 e callback once
70cd0 74 68 65 20 61 75 64 69 6f 20 62 75 66 66 65 72 the audio buffer
70ce0 20 6c 6f 61 64 73 2e 0a 09 09 20 2a 20 20 40 70 loads.... * @p
70cf0 61 72 61 6d 20 7b 73 74 72 69 6e 67 7d 20 75 72 aram {string} ur
70d00 6c 20 54 68 65 20 75 72 6c 20 6f 66 20 74 68 65 l The url of the
70d10 20 62 75 66 66 65 72 20 74 6f 20 6c 6f 61 64 2e buffer to load.
70d20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 ... *
70d30 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 74 filet
70d40 79 70 65 20 73 75 70 70 6f 72 74 20 64 65 70 65 ype support depe
70d50 6e 64 73 20 6f 6e 20 74 68 65 0a 09 09 20 2a 20 nds on the... *
70d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
70d70 20 20 20 20 20 62 72 6f 77 73 65 72 2e 0a 09 09 browser....
70d80 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 66 75 6e * @param {fun
70d90 63 74 69 6f 6e 3d 7d 20 63 61 6c 6c 62 61 63 6b ction=} callback
70da0 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
70db0 7b 50 72 6f 6d 69 73 65 7d 0a 09 09 20 2a 2f 0a {Promise}... */.
70dc0 09 20 20 20 20 54 6f 6e 65 2e 43 6f 6e 76 6f 6c . Tone.Convol
70dd0 76 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6c 6f ver.prototype.lo
70de0 61 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 75 ad = function (u
70df0 72 6c 2c 20 63 61 6c 6c 62 61 63 6b 29 20 7b 0a rl, callback) {.
70e00 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
70e10 74 68 69 73 2e 5f 62 75 66 66 65 72 2e 6c 6f 61 this._buffer.loa
70e20 64 28 75 72 6c 2c 20 66 75 6e 63 74 69 6f 6e 20 d(url, function
70e30 28 62 75 66 66 29 20 7b 0a 09 20 20 20 20 20 20 (buff) {..
70e40 20 20 20 20 20 20 74 68 69 73 2e 62 75 66 66 65 this.buffe
70e50 72 20 3d 20 62 75 66 66 3b 0a 09 20 20 20 20 20 r = buff;..
70e60 20 20 20 20 20 20 20 69 66 20 28 63 61 6c 6c 62 if (callb
70e70 61 63 6b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ack) {..
70e80 20 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b callback
70e90 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ();..
70ea0 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 2e 62 69 }.. }.bi
70eb0 6e 64 28 74 68 69 73 29 29 3b 0a 09 20 20 20 20 nd(this));..
70ec0 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
70ed0 20 20 43 6c 65 61 6e 20 75 70 2e 20 0a 09 09 20 Clean up. ...
70ee0 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
70ef0 65 2e 43 6f 6e 76 6f 6c 76 65 72 7d 20 74 68 69 e.Convolver} thi
70f00 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
70f10 65 2e 43 6f 6e 76 6f 6c 76 65 72 2e 70 72 6f 74 e.Convolver.prot
70f20 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 otype.dispose =
70f30 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
70f40 20 20 20 20 20 20 20 54 6f 6e 65 2e 45 66 66 65 Tone.Effe
70f50 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 ct.prototype.dis
70f60 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b pose.call(this);
70f70 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
70f80 63 6f 6e 76 6f 6c 76 65 72 2e 64 69 73 63 6f 6e convolver.discon
70f90 6e 65 63 74 28 29 3b 0a 09 20 20 20 20 20 20 20 nect();..
70fa0 20 74 68 69 73 2e 5f 63 6f 6e 76 6f 6c 76 65 72 this._convolver
70fb0 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
70fc0 20 20 74 68 69 73 2e 5f 62 75 66 66 65 72 2e 64 this._buffer.d
70fd0 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
70fe0 20 20 20 74 68 69 73 2e 5f 62 75 66 66 65 72 20 this._buffer
70ff0 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
71000 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
71010 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
71020 6e 20 54 6f 6e 65 2e 43 6f 6e 76 6f 6c 76 65 72 n Tone.Convolver
71030 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 ;..});..Module(f
71040 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b unction (Tone) {
71050 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a .. .. /**.
71060 09 09 20 2a 20 20 40 63 6c 61 73 73 20 54 6f 6e .. * @class Ton
71070 65 2e 44 69 73 74 6f 72 74 69 6f 6e 20 69 73 20 e.Distortion is
71080 61 20 73 69 6d 70 6c 65 20 64 69 73 74 6f 72 74 a simple distort
71090 69 6f 6e 20 65 66 66 65 63 74 20 75 73 69 6e 67 ion effect using
710a0 20 54 6f 6e 65 2e 57 61 76 65 53 68 61 70 65 72 Tone.WaveShaper
710b0 2e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 41 .... * A
710c0 6c 67 6f 72 69 74 68 6d 20 66 72 6f 6d 20 5b 61 lgorithm from [a
710d0 20 73 74 61 63 6b 6f 76 65 72 66 6c 6f 77 20 61 stackoverflow a
710e0 6e 73 77 65 72 5d 28 68 74 74 70 3a 2f 2f 73 74 nswer](http://st
710f0 61 63 6b 6f 76 65 72 66 6c 6f 77 2e 63 6f 6d 2f ackoverflow.com/
71100 61 2f 32 32 33 31 33 34 30 38 29 2e 0a 09 09 20 a/22313408)....
71110 2a 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 *... * @extends
71120 20 7b 54 6f 6e 65 2e 45 66 66 65 63 74 7d 0a 09 {Tone.Effect}..
71130 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f . * @constructo
71140 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b r... * @param {
71150 4e 75 6d 62 65 72 7c 4f 62 6a 65 63 74 7d 20 5b Number|Object} [
71160 64 69 73 74 6f 72 74 69 6f 6e 5d 20 54 68 65 20 distortion] The
71170 61 6d 6f 75 6e 74 20 6f 66 20 64 69 73 74 6f 72 amount of distor
71180 74 69 6f 6e 20 28 6e 6f 6d 69 6e 61 6c 20 72 61 tion (nominal ra
71190 6e 67 65 20 6f 66 20 30 2d 31 29 0a 09 09 20 2a nge of 0-1)... *
711a0 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 @example... *
711b0 76 61 72 20 64 69 73 74 20 3d 20 6e 65 77 20 54 var dist = new T
711c0 6f 6e 65 2e 44 69 73 74 6f 72 74 69 6f 6e 28 30 one.Distortion(0
711d0 2e 38 29 2e 74 6f 4d 61 73 74 65 72 28 29 3b 0a .8).toMaster();.
711e0 09 09 20 2a 20 76 61 72 20 66 6d 20 3d 20 6e 65 .. * var fm = ne
711f0 77 20 54 6f 6e 65 2e 53 69 6d 70 6c 65 46 4d 28 w Tone.SimpleFM(
71200 29 2e 63 6f 6e 6e 65 63 74 28 64 69 73 74 29 3b ).connect(dist);
71210 0a 09 09 20 2a 20 2f 2f 74 68 69 73 20 73 6f 75 ... * //this sou
71220 6e 64 73 20 67 6f 6f 64 20 6f 6e 20 62 61 73 73 nds good on bass
71230 20 6e 6f 74 65 73 0a 09 09 20 2a 20 66 6d 2e 74 notes... * fm.t
71240 72 69 67 67 65 72 41 74 74 61 63 6b 52 65 6c 65 riggerAttackRele
71250 61 73 65 28 22 41 31 22 2c 20 22 38 6e 22 29 3b ase("A1", "8n");
71260 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
71270 2e 44 69 73 74 6f 72 74 69 6f 6e 20 3d 20 66 75 .Distortion = fu
71280 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
71290 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 var options
712a0 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f = this.optionsO
712b0 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c bject(arguments,
712c0 20 5b 27 64 69 73 74 6f 72 74 69 6f 6e 27 5d 2c ['distortion'],
712d0 20 54 6f 6e 65 2e 44 69 73 74 6f 72 74 69 6f 6e Tone.Distortion
712e0 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 .defaults);..
712f0 20 20 20 20 20 54 6f 6e 65 2e 45 66 66 65 63 74 Tone.Effect
71300 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 .call(this, opti
71310 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f ons);.. /
71320 2a 2a 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 **.... * @type
71330 7b 54 6f 6e 65 2e 57 61 76 65 53 68 61 70 65 72 {Tone.WaveShaper
71340 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
71350 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
71360 20 20 74 68 69 73 2e 5f 73 68 61 70 65 72 20 3d this._shaper =
71370 20 6e 65 77 20 54 6f 6e 65 2e 57 61 76 65 53 68 new Tone.WaveSh
71380 61 70 65 72 28 34 30 39 36 29 3b 0a 09 20 20 20 aper(4096);..
71390 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 68 /**.... * h
713a0 6f 6c 64 73 20 74 68 65 20 64 69 73 74 6f 72 74 olds the distort
713b0 69 6f 6e 20 61 6d 6f 75 6e 74 0a 09 09 09 20 2a ion amount.... *
713c0 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 7d 0a @type {number}.
713d0 09 09 09 20 2a 20 40 70 72 69 76 61 74 65 0a 09 ... * @private..
713e0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
713f0 68 69 73 2e 5f 64 69 73 74 6f 72 74 69 6f 6e 20 his._distortion
71400 3d 20 6f 70 74 69 6f 6e 73 2e 64 69 73 74 6f 72 = options.distor
71410 74 69 6f 6e 3b 0a 09 20 20 20 20 20 20 20 20 74 tion;.. t
71420 68 69 73 2e 63 6f 6e 6e 65 63 74 45 66 66 65 63 his.connectEffec
71430 74 28 74 68 69 73 2e 5f 73 68 61 70 65 72 29 3b t(this._shaper);
71440 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 .. this.d
71450 69 73 74 6f 72 74 69 6f 6e 20 3d 20 6f 70 74 69 istortion = opti
71460 6f 6e 73 2e 64 69 73 74 6f 72 74 69 6f 6e 3b 0a ons.distortion;.
71470 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 76 . this.ov
71480 65 72 73 61 6d 70 6c 65 20 3d 20 6f 70 74 69 6f ersample = optio
71490 6e 73 2e 6f 76 65 72 73 61 6d 70 6c 65 3b 0a 09 ns.oversample;..
714a0 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 };.. Tone
714b0 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 44 69 73 .extend(Tone.Dis
714c0 74 6f 72 74 69 6f 6e 2c 20 54 6f 6e 65 2e 45 66 tortion, Tone.Ef
714d0 66 65 63 74 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a fect);.. /**.
714e0 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 .. * @static...
714f0 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a 20 * @const... *
71500 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a @type {Object}.
71510 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
71520 44 69 73 74 6f 72 74 69 6f 6e 2e 64 65 66 61 75 Distortion.defau
71530 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 lts = {..
71540 20 27 64 69 73 74 6f 72 74 69 6f 6e 27 3a 20 30 'distortion': 0
71550 2e 34 2c 0a 09 20 20 20 20 20 20 20 20 27 6f 76 .4,.. 'ov
71560 65 72 73 61 6d 70 6c 65 27 3a 20 27 6e 6f 6e 65 ersample': 'none
71570 27 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f '.. };.. /
71580 2a 2a 0a 09 09 20 2a 20 54 68 65 20 61 6d 6f 75 **... * The amou
71590 6e 74 20 6f 66 20 64 69 73 74 6f 72 74 69 6f 6e nt of distortion
715a0 2e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 .... * @memberOf
715b0 20 54 6f 6e 65 2e 44 69 73 74 6f 72 74 69 6f 6e Tone.Distortion
715c0 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 4e 6f #... * @type {No
715d0 72 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 20 2a 20 rmalRange}... *
715e0 40 6e 61 6d 65 20 64 69 73 74 6f 72 74 69 6f 6e @name distortion
715f0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 ... */.. Obje
71600 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
71610 79 28 54 6f 6e 65 2e 44 69 73 74 6f 72 74 69 6f y(Tone.Distortio
71620 6e 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 64 69 n.prototype, 'di
71630 73 74 6f 72 74 69 6f 6e 27 2c 20 7b 0a 09 20 20 stortion', {..
71640 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
71650 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
71660 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
71670 73 2e 5f 64 69 73 74 6f 72 74 69 6f 6e 3b 0a 09 s._distortion;..
71680 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 },..
71690 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f set: functio
716a0 6e 20 28 61 6d 6f 75 6e 74 29 20 7b 0a 09 20 20 n (amount) {..
716b0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
716c0 64 69 73 74 6f 72 74 69 6f 6e 20 3d 20 61 6d 6f distortion = amo
716d0 75 6e 74 3b 0a 09 20 20 20 20 20 20 20 20 20 20 unt;..
716e0 20 20 76 61 72 20 6b 20 3d 20 61 6d 6f 75 6e 74 var k = amount
716f0 20 2a 20 31 30 30 3b 0a 09 20 20 20 20 20 20 20 * 100;..
71700 20 20 20 20 20 76 61 72 20 64 65 67 20 3d 20 4d var deg = M
71710 61 74 68 2e 50 49 20 2f 20 31 38 30 3b 0a 09 20 ath.PI / 180;..
71720 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
71730 5f 73 68 61 70 65 72 2e 73 65 74 4d 61 70 28 66 _shaper.setMap(f
71740 75 6e 63 74 69 6f 6e 20 28 78 29 20 7b 0a 09 20 unction (x) {..
71750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
71760 66 20 28 4d 61 74 68 2e 61 62 73 28 78 29 20 3c f (Math.abs(x) <
71770 20 30 2e 30 30 31 29 20 7b 0a 09 20 20 20 20 20 0.001) {..
71780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
71790 2f 73 68 6f 75 6c 64 20 6f 75 74 70 75 74 20 30 /should output 0
717a0 20 77 68 65 6e 20 69 6e 70 75 74 20 69 73 20 30 when input is 0
717b0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
717c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a return 0;.
717d0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
717e0 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
717f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
71800 65 74 75 72 6e 20 28 33 20 2b 20 6b 29 20 2a 20 eturn (3 + k) *
71810 78 20 2a 20 32 30 20 2a 20 64 65 67 20 2f 20 28 x * 20 * deg / (
71820 4d 61 74 68 2e 50 49 20 2b 20 6b 20 2a 20 4d 61 Math.PI + k * Ma
71830 74 68 2e 61 62 73 28 78 29 29 3b 0a 09 20 20 20 th.abs(x));..
71840 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 }..
71850 20 20 20 20 20 20 20 20 20 20 20 20 7d 29 3b 0a });.
71860 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
71870 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 });.. /**...
71880 2a 20 54 68 65 20 6f 76 65 72 73 61 6d 70 6c 69 * The oversampli
71890 6e 67 20 6f 66 20 74 68 65 20 65 66 66 65 63 74 ng of the effect
718a0 2e 20 43 61 6e 20 65 69 74 68 65 72 20 62 65 20 . Can either be
718b0 22 6e 6f 6e 65 22 2c 20 22 32 78 22 20 6f 72 20 "none", "2x" or
718c0 22 34 78 22 2e 0a 09 09 20 2a 20 40 6d 65 6d 62 "4x".... * @memb
718d0 65 72 4f 66 20 54 6f 6e 65 2e 44 69 73 74 6f 72 erOf Tone.Distor
718e0 74 69 6f 6e 23 0a 09 09 20 2a 20 40 74 79 70 65 tion#... * @type
718f0 20 7b 73 74 72 69 6e 67 7d 0a 09 09 20 2a 20 40 {string}... * @
71900 6e 61 6d 65 20 6f 76 65 72 73 61 6d 70 6c 65 0a name oversample.
71910 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 .. */.. Objec
71920 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 t.defineProperty
71930 28 54 6f 6e 65 2e 44 69 73 74 6f 72 74 69 6f 6e (Tone.Distortion
71940 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 6f 76 65 .prototype, 'ove
71950 72 73 61 6d 70 6c 65 27 2c 20 7b 0a 09 20 20 20 rsample', {..
71960 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
71970 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
71980 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
71990 2e 5f 73 68 61 70 65 72 2e 6f 76 65 72 73 61 6d ._shaper.oversam
719a0 70 6c 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c ple;.. },
719b0 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 .. set: f
719c0 75 6e 63 74 69 6f 6e 20 28 6f 76 65 72 73 61 6d unction (oversam
719d0 70 6c 69 6e 67 29 20 7b 0a 09 20 20 20 20 20 20 pling) {..
719e0 20 20 20 20 20 20 74 68 69 73 2e 5f 73 68 61 70 this._shap
719f0 65 72 2e 6f 76 65 72 73 61 6d 70 6c 65 20 3d 20 er.oversample =
71a00 6f 76 65 72 73 61 6d 70 6c 69 6e 67 3b 0a 09 20 oversampling;..
71a10 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 }.. })
71a20 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
71a30 20 43 6c 65 61 6e 20 75 70 2e 20 0a 09 09 20 2a Clean up. ... *
71a40 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
71a50 2e 44 69 73 74 6f 72 74 69 6f 6e 7d 20 74 68 69 .Distortion} thi
71a60 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
71a70 65 2e 44 69 73 74 6f 72 74 69 6f 6e 2e 70 72 6f e.Distortion.pro
71a80 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d totype.dispose =
71a90 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
71aa0 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 45 66 66 Tone.Eff
71ab0 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 ect.prototype.di
71ac0 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 spose.call(this)
71ad0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
71ae0 5f 73 68 61 70 65 72 2e 64 69 73 70 6f 73 65 28 _shaper.dispose(
71af0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
71b00 2e 5f 73 68 61 70 65 72 20 3d 20 6e 75 6c 6c 3b ._shaper = null;
71b10 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
71b20 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
71b30 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e return Tone.
71b40 44 69 73 74 6f 72 74 69 6f 6e 3b 0a 09 7d 29 3b Distortion;..});
71b50 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f ..Module(functio
71b60 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 n (Tone) {..
71b70 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
71b80 40 63 6c 61 73 73 20 20 54 6f 6e 65 2e 46 65 65 @class Tone.Fee
71b90 64 62 61 63 6b 44 65 6c 61 79 20 69 73 20 61 20 dbackDelay is a
71ba0 44 65 6c 61 79 4e 6f 64 65 20 69 6e 20 77 68 69 DelayNode in whi
71bb0 63 68 20 70 61 72 74 20 6f 66 20 6f 75 74 70 75 ch part of outpu
71bc0 74 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 t... *
71bd0 73 69 67 6e 61 6c 20 69 73 20 66 65 64 20 62 61 signal is fed ba
71be0 63 6b 20 69 6e 74 6f 20 74 68 65 20 64 65 6c 61 ck into the dela
71bf0 79 2e 20 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 y. ... *... * @
71c00 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a constructor... *
71c10 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
71c20 2e 46 65 65 64 62 61 63 6b 45 66 66 65 63 74 7d .FeedbackEffect}
71c30 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 ... * @param {T
71c40 69 6d 65 7c 4f 62 6a 65 63 74 7d 20 5b 64 65 6c ime|Object} [del
71c50 61 79 54 69 6d 65 5d 20 54 68 65 20 64 65 6c 61 ayTime] The dela
71c60 79 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 y applied to the
71c70 20 69 6e 63 6f 6d 69 6e 67 20 73 69 67 6e 61 6c incoming signal
71c80 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 . ... * @param
71c90 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 3d 7d 20 66 {NormalRange=} f
71ca0 65 65 64 62 61 63 6b 20 54 68 65 20 61 6d 6f 75 eedback The amou
71cb0 6e 74 20 6f 66 20 74 68 65 20 65 66 66 65 63 74 nt of the effect
71cc0 65 64 20 73 69 67 6e 61 6c 20 77 68 69 63 68 20 ed signal which
71cd0 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 ... *
71ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
71cf0 20 69 73 20 66 65 64 20 62 61 63 6b 20 74 68 72 is fed back thr
71d00 6f 75 67 68 20 74 68 65 20 64 65 6c 61 79 2e 0a ough the delay..
71d10 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
71d20 09 20 2a 20 76 61 72 20 66 65 65 64 62 61 63 6b . * var feedback
71d30 44 65 6c 61 79 20 3d 20 6e 65 77 20 54 6f 6e 65 Delay = new Tone
71d40 2e 46 65 65 64 62 61 63 6b 44 65 6c 61 79 28 22 .FeedbackDelay("
71d50 38 6e 22 2c 20 30 2e 35 29 2e 74 6f 4d 61 73 74 8n", 0.5).toMast
71d60 65 72 28 29 3b 0a 09 09 20 2a 20 76 61 72 20 74 er();... * var t
71d70 6f 6d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 44 72 om = new Tone.Dr
71d80 75 6d 53 79 6e 74 68 28 7b 0a 09 09 20 2a 20 09 umSynth({... * .
71d90 22 6f 63 74 61 76 65 73 22 20 3a 20 34 2c 0a 09 "octaves" : 4,..
71da0 09 20 2a 20 09 22 70 69 74 63 68 44 65 63 61 79 . * ."pitchDecay
71db0 22 20 3a 20 30 2e 31 0a 09 09 20 2a 20 7d 29 2e " : 0.1... * }).
71dc0 63 6f 6e 6e 65 63 74 28 66 65 65 64 62 61 63 6b connect(feedback
71dd0 44 65 6c 61 79 29 3b 0a 09 09 20 2a 20 74 6f 6d Delay);... * tom
71de0 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b 52 65 .triggerAttackRe
71df0 6c 65 61 73 65 28 22 41 32 22 2c 22 33 32 6e 22 lease("A2","32n"
71e00 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f );... */.. To
71e10 6e 65 2e 46 65 65 64 62 61 63 6b 44 65 6c 61 79 ne.FeedbackDelay
71e20 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
71e30 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 .. var op
71e40 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 tions = this.opt
71e50 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d ionsObject(argum
71e60 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 ents, [..
71e70 20 20 20 20 20 27 64 65 6c 61 79 54 69 6d 65 27 'delayTime'
71e80 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
71e90 66 65 65 64 62 61 63 6b 27 0a 09 20 20 20 20 20 feedback'..
71ea0 20 20 20 5d 2c 20 54 6f 6e 65 2e 46 65 65 64 62 ], Tone.Feedb
71eb0 61 63 6b 44 65 6c 61 79 2e 64 65 66 61 75 6c 74 ackDelay.default
71ec0 73 29 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e s);.. Ton
71ed0 65 2e 46 65 65 64 62 61 63 6b 45 66 66 65 63 74 e.FeedbackEffect
71ee0 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 .call(this, opti
71ef0 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f ons);.. /
71f00 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 64 65 **.... * the de
71f10 6c 61 79 20 6e 6f 64 65 0a 09 09 09 20 2a 20 20 lay node.... *
71f20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 44 65 6c 61 @type {Tone.Dela
71f30 79 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 y}.... * @priva
71f40 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
71f50 20 20 20 74 68 69 73 2e 5f 64 65 6c 61 79 4e 6f this._delayNo
71f60 64 65 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 44 65 de = new Tone.De
71f70 6c 61 79 28 6f 70 74 69 6f 6e 73 2e 64 65 6c 61 lay(options.dela
71f80 79 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 yTime);..
71f90 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
71fa0 64 65 6c 61 79 54 69 6d 65 20 6f 66 20 74 68 65 delayTime of the
71fb0 20 44 65 6c 61 79 4e 6f 64 65 2e 20 0a 09 09 09 DelayNode. ....
71fc0 20 2a 20 20 40 74 79 70 65 20 7b 54 69 6d 65 7d * @type {Time}
71fd0 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a .... * @signal.
71fe0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
71ff0 74 68 69 73 2e 64 65 6c 61 79 54 69 6d 65 20 3d this.delayTime =
72000 20 74 68 69 73 2e 5f 64 65 6c 61 79 4e 6f 64 65 this._delayNode
72010 2e 64 65 6c 61 79 54 69 6d 65 3b 0a 09 20 20 20 .delayTime;..
72020 20 20 20 20 20 2f 2f 20 63 6f 6e 6e 65 63 74 20 // connect
72030 69 74 20 75 70 0a 09 20 20 20 20 20 20 20 20 74 it up.. t
72040 68 69 73 2e 63 6f 6e 6e 65 63 74 45 66 66 65 63 his.connectEffec
72050 74 28 74 68 69 73 2e 5f 64 65 6c 61 79 4e 6f 64 t(this._delayNod
72060 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 e);.. thi
72070 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 5b 27 64 65 s._readOnly(['de
72080 6c 61 79 54 69 6d 65 27 5d 29 3b 0a 09 20 20 20 layTime']);..
72090 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 };.. Tone.ex
720a0 74 65 6e 64 28 54 6f 6e 65 2e 46 65 65 64 62 61 tend(Tone.Feedba
720b0 63 6b 44 65 6c 61 79 2c 20 54 6f 6e 65 2e 46 65 ckDelay, Tone.Fe
720c0 65 64 62 61 63 6b 45 66 66 65 63 74 29 3b 0a 09 edbackEffect);..
720d0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 /**... * Th
720e0 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 73 e default values
720f0 2e 20 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 0a . ... * @const.
72100 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 .. * @static...
72110 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 * @type {Objec
72120 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f t}... */.. To
72130 6e 65 2e 46 65 65 64 62 61 63 6b 44 65 6c 61 79 ne.FeedbackDelay
72140 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 20 27 64 .defaults = { 'd
72150 65 6c 61 79 54 69 6d 65 27 3a 20 30 2e 32 35 20 elayTime': 0.25
72160 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
72170 20 20 63 6c 65 61 6e 20 75 70 0a 09 09 20 2a 20 clean up... *
72180 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e @returns {Tone.
72190 46 65 65 64 62 61 63 6b 44 65 6c 61 79 7d 20 74 FeedbackDelay} t
721a0 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
721b0 6f 6e 65 2e 46 65 65 64 62 61 63 6b 44 65 6c 61 one.FeedbackDela
721c0 79 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 y.prototype.disp
721d0 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ose = function (
721e0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e ) {.. Ton
721f0 65 2e 46 65 65 64 62 61 63 6b 45 66 66 65 63 74 e.FeedbackEffect
72200 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
72210 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 se.call(this);..
72220 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 65 this._de
72230 6c 61 79 4e 6f 64 65 2e 64 69 73 70 6f 73 65 28 layNode.dispose(
72240 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
72250 2e 5f 64 65 6c 61 79 4e 6f 64 65 20 3d 20 6e 75 ._delayNode = nu
72260 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
72270 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b 27 64 65 s._writable(['de
72280 6c 61 79 54 69 6d 65 27 5d 29 3b 0a 09 20 20 20 layTime']);..
72290 20 20 20 20 20 74 68 69 73 2e 64 65 6c 61 79 54 this.delayT
722a0 69 6d 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ime = null;..
722b0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
722c0 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 ;.. };.. r
722d0 65 74 75 72 6e 20 54 6f 6e 65 2e 46 65 65 64 62 eturn Tone.Feedb
722e0 61 63 6b 44 65 6c 61 79 3b 0a 09 7d 29 3b 0a 09 ackDelay;..});..
722f0 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 Module(function
72300 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 (Tone) {.. ..
72310 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 61 6e /**... * an
72320 20 61 72 72 61 79 20 6f 66 20 63 6f 6d 62 20 66 array of comb f
72330 69 6c 74 65 72 20 64 65 6c 61 79 20 76 61 6c 75 ilter delay valu
72340 65 73 20 66 72 6f 6d 20 46 72 65 65 76 65 72 62 es from Freeverb
72350 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a implementation.
72360 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 .. * @static...
72370 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 * @private...
72380 2a 20 20 40 74 79 70 65 20 7b 41 72 72 61 79 7d * @type {Array}
72390 0a 09 09 20 2a 2f 0a 09 20 20 20 20 76 61 72 20 ... */.. var
723a0 63 6f 6d 62 46 69 6c 74 65 72 54 75 6e 69 6e 67 combFilterTuning
723b0 73 20 3d 20 5b 0a 09 20 20 20 20 20 20 20 20 31 s = [.. 1
723c0 35 35 37 20 2f 20 34 34 31 30 30 2c 0a 09 20 20 557 / 44100,..
723d0 20 20 20 20 20 20 31 36 31 37 20 2f 20 34 34 31 1617 / 441
723e0 30 30 2c 0a 09 20 20 20 20 20 20 20 20 31 34 39 00,.. 149
723f0 31 20 2f 20 34 34 31 30 30 2c 0a 09 20 20 20 20 1 / 44100,..
72400 20 20 20 20 31 34 32 32 20 2f 20 34 34 31 30 30 1422 / 44100
72410 2c 0a 09 20 20 20 20 20 20 20 20 31 32 37 37 20 ,.. 1277
72420 2f 20 34 34 31 30 30 2c 0a 09 20 20 20 20 20 20 / 44100,..
72430 20 20 31 33 35 36 20 2f 20 34 34 31 30 30 2c 0a 1356 / 44100,.
72440 09 20 20 20 20 20 20 20 20 31 31 38 38 20 2f 20 . 1188 /
72450 34 34 31 30 30 2c 0a 09 20 20 20 20 20 20 20 20 44100,..
72460 31 31 31 36 20 2f 20 34 34 31 30 30 0a 09 20 20 1116 / 44100..
72470 20 20 5d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 ];.. /**...
72480 20 2a 20 20 61 6e 20 61 72 72 61 79 20 6f 66 20 * an array of
72490 61 6c 6c 70 61 73 73 20 66 69 6c 74 65 72 20 66 allpass filter f
724a0 72 65 71 75 65 6e 63 79 20 76 61 6c 75 65 73 20 requency values
724b0 66 72 6f 6d 20 46 72 65 65 76 65 72 62 20 69 6d from Freeverb im
724c0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 09 09 20 plementation...
724d0 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a * @private... *
724e0 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 @static... *
724f0 40 74 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 @type {Array}...
72500 20 2a 2f 0a 09 20 20 20 20 76 61 72 20 61 6c 6c */.. var all
72510 70 61 73 73 46 69 6c 74 65 72 46 72 65 71 75 65 passFilterFreque
72520 6e 63 69 65 73 20 3d 20 5b 0a 09 20 20 20 20 20 ncies = [..
72530 20 20 20 32 32 35 2c 0a 09 20 20 20 20 20 20 20 225,..
72540 20 35 35 36 2c 0a 09 20 20 20 20 20 20 20 20 34 556,.. 4
72550 34 31 2c 0a 09 20 20 20 20 20 20 20 20 33 34 31 41,.. 341
72560 0a 09 20 20 20 20 5d 3b 0a 09 20 20 20 20 2f 2a .. ];.. /*
72570 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 54 *... * @class T
72580 6f 6e 65 2e 46 72 65 65 76 65 72 62 20 69 73 20 one.Freeverb is
72590 61 20 72 65 76 65 72 62 20 62 61 73 65 64 20 6f a reverb based o
725a0 6e 20 5b 46 72 65 65 76 65 72 62 5d 28 68 74 74 n [Freeverb](htt
725b0 70 73 3a 2f 2f 63 63 72 6d 61 2e 73 74 61 6e 66 ps://ccrma.stanf
725c0 6f 72 64 2e 65 64 75 2f 7e 6a 6f 73 2f 70 61 73 ord.edu/~jos/pas
725d0 70 2f 46 72 65 65 76 65 72 62 2e 68 74 6d 6c 29 p/Freeverb.html)
725e0 2e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 52 .... * R
725f0 65 61 64 20 6d 6f 72 65 20 6f 6e 20 72 65 76 65 ead more on reve
72600 72 62 20 6f 6e 20 5b 53 6f 75 6e 64 4f 6e 53 6f rb on [SoundOnSo
72610 75 6e 64 5d 28 68 74 74 70 3a 2f 2f 77 77 77 2e und](http://www.
72620 73 6f 75 6e 64 6f 6e 73 6f 75 6e 64 2e 63 6f 6d soundonsound.com
72630 2f 73 6f 73 2f 6d 61 79 30 30 2f 61 72 74 69 63 /sos/may00/artic
72640 6c 65 73 2f 72 65 76 65 72 62 2e 68 74 6d 29 2e les/reverb.htm).
72650 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 65 78 74 ... *... * @ext
72660 65 6e 64 73 20 7b 54 6f 6e 65 2e 45 66 66 65 63 ends {Tone.Effec
72670 74 7d 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 t}... * @constr
72680 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 uctor... * @par
72690 61 6d 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7c am {NormalRange|
726a0 4f 62 6a 65 63 74 7d 20 5b 72 6f 6f 6d 53 69 7a Object} [roomSiz
726b0 65 5d 20 43 6f 72 72 65 6c 61 74 65 64 20 74 6f e] Correlated to
726c0 20 74 68 65 20 64 65 63 61 79 20 74 69 6d 65 2e the decay time.
726d0 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b ... * @param {
726e0 46 72 65 71 75 65 6e 63 79 7d 20 5b 64 61 6d 70 Frequency} [damp
726f0 65 6e 69 6e 67 5d 20 54 68 65 20 63 75 74 6f 66 ening] The cutof
72700 66 20 66 72 65 71 75 65 6e 63 79 20 6f 66 20 61 f frequency of a
72710 20 6c 6f 77 70 61 73 73 20 66 69 6c 74 65 72 20 lowpass filter
72720 61 73 20 70 61 72 74 20 0a 09 09 20 2a 20 20 20 as part ... *
72730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
72740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 of
72750 20 74 68 65 20 72 65 76 65 72 62 2e 20 0a 09 09 the reverb. ...
72760 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 * @example...
72770 2a 20 76 61 72 20 66 72 65 65 76 65 72 62 20 3d * var freeverb =
72780 20 6e 65 77 20 54 6f 6e 65 2e 46 72 65 65 76 65 new Tone.Freeve
72790 72 62 28 29 2e 74 6f 4d 61 73 74 65 72 28 29 3b rb().toMaster();
727a0 0a 09 09 20 2a 20 66 72 65 65 76 65 72 62 2e 64 ... * freeverb.d
727b0 61 6d 70 65 6e 69 6e 67 2e 76 61 6c 75 65 20 3d ampening.value =
727c0 20 31 30 30 30 3b 0a 09 09 20 2a 20 2f 2f 72 6f 1000;... * //ro
727d0 75 74 69 6e 67 20 73 79 6e 74 68 20 74 68 72 6f uting synth thro
727e0 75 67 68 20 74 68 65 20 72 65 76 65 72 62 0a 09 ugh the reverb..
727f0 09 20 2a 20 76 61 72 20 73 79 6e 74 68 20 3d 20 . * var synth =
72800 6e 65 77 20 54 6f 6e 65 2e 41 4d 53 79 6e 74 68 new Tone.AMSynth
72810 28 29 2e 63 6f 6e 6e 65 63 74 28 66 72 65 65 76 ().connect(freev
72820 65 72 62 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 erb);... */..
72830 20 54 6f 6e 65 2e 46 72 65 65 76 65 72 62 20 3d Tone.Freeverb =
72840 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
72850 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 var opti
72860 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f ons = this.optio
72870 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e nsObject(argumen
72880 74 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 ts, [..
72890 20 20 20 27 72 6f 6f 6d 53 69 7a 65 27 2c 0a 09 'roomSize',..
728a0 20 20 20 20 20 20 20 20 20 20 20 20 27 64 61 6d 'dam
728b0 70 65 6e 69 6e 67 27 0a 09 20 20 20 20 20 20 20 pening'..
728c0 20 5d 2c 20 54 6f 6e 65 2e 46 72 65 65 76 65 72 ], Tone.Freever
728d0 62 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 b.defaults);..
728e0 20 20 20 20 20 20 54 6f 6e 65 2e 53 74 65 72 65 Tone.Stere
728f0 6f 45 66 66 65 63 74 2e 63 61 6c 6c 28 74 68 69 oEffect.call(thi
72900 73 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a 09 20 20 s, options);..
72910 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
72920 20 54 68 65 20 72 6f 6f 6d 53 69 7a 65 20 76 61 The roomSize va
72930 6c 75 65 20 62 65 74 77 65 65 6e 2e 20 41 20 6c lue between. A l
72940 61 72 67 65 72 20 72 6f 6f 6d 53 69 7a 65 0a 09 arger roomSize..
72950 09 09 20 2a 20 20 77 69 6c 6c 20 72 65 73 75 6c .. * will resul
72960 74 20 69 6e 20 61 20 6c 6f 6e 67 65 72 20 64 65 t in a longer de
72970 63 61 79 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 cay. .... * @ty
72980 70 65 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d pe {NormalRange}
72990 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a .... * @signal.
729a0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
729b0 74 68 69 73 2e 72 6f 6f 6d 53 69 7a 65 20 3d 20 this.roomSize =
729c0 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 new Tone.Signal(
729d0 6f 70 74 69 6f 6e 73 2e 72 6f 6f 6d 53 69 7a 65 options.roomSize
729e0 2c 20 54 6f 6e 65 2e 54 79 70 65 2e 4e 6f 72 6d , Tone.Type.Norm
729f0 61 6c 52 61 6e 67 65 29 3b 0a 09 20 20 20 20 20 alRange);..
72a00 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 /**.... * Th
72a10 65 20 61 6d 6f 75 6e 74 20 6f 66 20 64 61 6d 70 e amount of damp
72a20 65 6e 69 6e 67 20 6f 66 20 74 68 65 20 72 65 76 ening of the rev
72a30 65 72 62 65 72 61 6e 74 20 73 69 67 6e 61 6c 2e erberant signal.
72a40 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b .... * @type {
72a50 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 09 20 2a Frequency}.... *
72a60 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f @signal.... */
72a70 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 .. this.d
72a80 61 6d 70 65 6e 69 6e 67 20 3d 20 6e 65 77 20 54 ampening = new T
72a90 6f 6e 65 2e 53 69 67 6e 61 6c 28 6f 70 74 69 6f one.Signal(optio
72aa0 6e 73 2e 64 61 6d 70 65 6e 69 6e 67 2c 20 54 6f ns.dampening, To
72ab0 6e 65 2e 54 79 70 65 2e 46 72 65 71 75 65 6e 63 ne.Type.Frequenc
72ac0 79 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a y);.. /**
72ad0 0a 09 09 09 20 2a 20 20 74 68 65 20 63 6f 6d 62 .... * the comb
72ae0 20 66 69 6c 74 65 72 73 0a 09 09 09 20 2a 20 20 filters.... *
72af0 40 74 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 @type {Array}...
72b00 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
72b10 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
72b20 69 73 2e 5f 63 6f 6d 62 46 69 6c 74 65 72 73 20 is._combFilters
72b30 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 20 20 20 2f = [];.. /
72b40 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 61 6c **.... * the al
72b50 6c 70 61 73 73 20 66 69 6c 74 65 72 73 20 6f 6e lpass filters on
72b60 20 74 68 65 20 6c 65 66 74 0a 09 09 09 20 2a 20 the left.... *
72b70 20 40 74 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 @type {Array}..
72b80 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
72b90 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
72ba0 68 69 73 2e 5f 61 6c 6c 70 61 73 73 46 69 6c 74 his._allpassFilt
72bb0 65 72 73 4c 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 ersL = [];..
72bc0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 /**.... * t
72bd0 68 65 20 61 6c 6c 70 61 73 73 20 66 69 6c 74 65 he allpass filte
72be0 72 73 20 6f 6e 20 74 68 65 20 72 69 67 68 74 0a rs on the right.
72bf0 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 41 72 ... * @type {Ar
72c00 72 61 79 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 ray}.... * @pri
72c10 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
72c20 20 20 20 20 20 74 68 69 73 2e 5f 61 6c 6c 70 61 this._allpa
72c30 73 73 46 69 6c 74 65 72 73 52 20 3d 20 5b 5d 3b ssFiltersR = [];
72c40 0a 09 20 20 20 20 20 20 20 20 2f 2f 6d 61 6b 65 .. //make
72c50 20 74 68 65 20 61 6c 6c 70 61 73 73 20 66 69 6c the allpass fil
72c60 74 65 72 73 20 6f 6e 20 74 65 68 20 72 69 67 68 ters on teh righ
72c70 74 0a 09 20 20 20 20 20 20 20 20 66 6f 72 20 28 t.. for (
72c80 76 61 72 20 6c 20 3d 20 30 3b 20 6c 20 3c 20 61 var l = 0; l < a
72c90 6c 6c 70 61 73 73 46 69 6c 74 65 72 46 72 65 71 llpassFilterFreq
72ca0 75 65 6e 63 69 65 73 2e 6c 65 6e 67 74 68 3b 20 uencies.length;
72cb0 6c 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 l++) {..
72cc0 20 20 20 20 76 61 72 20 61 6c 6c 70 61 73 73 4c var allpassL
72cd0 20 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e = this.context.
72ce0 63 72 65 61 74 65 42 69 71 75 61 64 46 69 6c 74 createBiquadFilt
72cf0 65 72 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 er();..
72d00 20 20 20 61 6c 6c 70 61 73 73 4c 2e 74 79 70 65 allpassL.type
72d10 20 3d 20 27 61 6c 6c 70 61 73 73 27 3b 0a 09 20 = 'allpass';..
72d20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c 70 61 allpa
72d30 73 73 4c 2e 66 72 65 71 75 65 6e 63 79 2e 76 61 ssL.frequency.va
72d40 6c 75 65 20 3d 20 61 6c 6c 70 61 73 73 46 69 6c lue = allpassFil
72d50 74 65 72 46 72 65 71 75 65 6e 63 69 65 73 5b 6c terFrequencies[l
72d60 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ];..
72d70 74 68 69 73 2e 5f 61 6c 6c 70 61 73 73 46 69 6c this._allpassFil
72d80 74 65 72 73 4c 2e 70 75 73 68 28 61 6c 6c 70 61 tersL.push(allpa
72d90 73 73 4c 29 3b 0a 09 20 20 20 20 20 20 20 20 7d ssL);.. }
72da0 0a 09 20 20 20 20 20 20 20 20 2f 2f 6d 61 6b 65 .. //make
72db0 20 74 68 65 20 61 6c 6c 70 61 73 73 20 66 69 6c the allpass fil
72dc0 74 65 72 73 20 6f 6e 20 74 68 65 20 6c 65 66 74 ters on the left
72dd0 0a 09 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 .. for (v
72de0 61 72 20 72 20 3d 20 30 3b 20 72 20 3c 20 61 6c ar r = 0; r < al
72df0 6c 70 61 73 73 46 69 6c 74 65 72 46 72 65 71 75 lpassFilterFrequ
72e00 65 6e 63 69 65 73 2e 6c 65 6e 67 74 68 3b 20 72 encies.length; r
72e10 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ++) {..
72e20 20 20 20 76 61 72 20 61 6c 6c 70 61 73 73 52 20 var allpassR
72e30 3d 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 63 = this.context.c
72e40 72 65 61 74 65 42 69 71 75 61 64 46 69 6c 74 65 reateBiquadFilte
72e50 72 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 r();..
72e60 20 20 61 6c 6c 70 61 73 73 52 2e 74 79 70 65 20 allpassR.type
72e70 3d 20 27 61 6c 6c 70 61 73 73 27 3b 0a 09 20 20 = 'allpass';..
72e80 20 20 20 20 20 20 20 20 20 20 61 6c 6c 70 61 73 allpas
72e90 73 52 2e 66 72 65 71 75 65 6e 63 79 2e 76 61 6c sR.frequency.val
72ea0 75 65 20 3d 20 61 6c 6c 70 61 73 73 46 69 6c 74 ue = allpassFilt
72eb0 65 72 46 72 65 71 75 65 6e 63 69 65 73 5b 72 5d erFrequencies[r]
72ec0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 ;.. t
72ed0 68 69 73 2e 5f 61 6c 6c 70 61 73 73 46 69 6c 74 his._allpassFilt
72ee0 65 72 73 52 2e 70 75 73 68 28 61 6c 6c 70 61 73 ersR.push(allpas
72ef0 73 52 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a sR);.. }.
72f00 09 20 20 20 20 20 20 20 20 2f 2f 6d 61 6b 65 20 . //make
72f10 74 68 65 20 63 6f 6d 62 20 66 69 6c 74 65 72 73 the comb filters
72f20 0a 09 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 .. for (v
72f30 61 72 20 63 20 3d 20 30 3b 20 63 20 3c 20 63 6f ar c = 0; c < co
72f40 6d 62 46 69 6c 74 65 72 54 75 6e 69 6e 67 73 2e mbFilterTunings.
72f50 6c 65 6e 67 74 68 3b 20 63 2b 2b 29 20 7b 0a 09 length; c++) {..
72f60 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
72f70 6c 66 70 66 20 3d 20 6e 65 77 20 54 6f 6e 65 2e lfpf = new Tone.
72f80 4c 6f 77 70 61 73 73 43 6f 6d 62 46 69 6c 74 65 LowpassCombFilte
72f90 72 28 63 6f 6d 62 46 69 6c 74 65 72 54 75 6e 69 r(combFilterTuni
72fa0 6e 67 73 5b 63 5d 29 3b 0a 09 20 20 20 20 20 20 ngs[c]);..
72fb0 20 20 20 20 20 20 69 66 20 28 63 20 3c 20 63 6f if (c < co
72fc0 6d 62 46 69 6c 74 65 72 54 75 6e 69 6e 67 73 2e mbFilterTunings.
72fd0 6c 65 6e 67 74 68 20 2f 20 32 29 20 7b 0a 09 20 length / 2) {..
72fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
72ff0 68 69 73 2e 65 66 66 65 63 74 53 65 6e 64 4c 2e his.effectSendL.
73000 63 68 61 69 6e 28 6c 66 70 66 2c 20 74 68 69 73 chain(lfpf, this
73010 2e 5f 61 6c 6c 70 61 73 73 46 69 6c 74 65 72 73 ._allpassFilters
73020 4c 5b 30 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 L[0]);..
73030 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 } else {..
73040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
73050 69 73 2e 65 66 66 65 63 74 53 65 6e 64 52 2e 63 is.effectSendR.c
73060 68 61 69 6e 28 6c 66 70 66 2c 20 74 68 69 73 2e hain(lfpf, this.
73070 5f 61 6c 6c 70 61 73 73 46 69 6c 74 65 72 73 52 _allpassFiltersR
73080 5b 30 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 20 [0]);..
73090 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 }..
730a0 20 20 74 68 69 73 2e 72 6f 6f 6d 53 69 7a 65 2e this.roomSize.
730b0 63 6f 6e 6e 65 63 74 28 6c 66 70 66 2e 72 65 73 connect(lfpf.res
730c0 6f 6e 61 6e 63 65 29 3b 0a 09 20 20 20 20 20 20 onance);..
730d0 20 20 20 20 20 20 74 68 69 73 2e 64 61 6d 70 65 this.dampe
730e0 6e 69 6e 67 2e 63 6f 6e 6e 65 63 74 28 6c 66 70 ning.connect(lfp
730f0 66 2e 64 61 6d 70 65 6e 69 6e 67 29 3b 0a 09 20 f.dampening);..
73100 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
73110 5f 63 6f 6d 62 46 69 6c 74 65 72 73 2e 70 75 73 _combFilters.pus
73120 68 28 6c 66 70 66 29 3b 0a 09 20 20 20 20 20 20 h(lfpf);..
73130 20 20 7d 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 }.. //c
73140 68 61 69 6e 20 74 68 65 20 61 6c 6c 70 61 73 73 hain the allpass
73150 20 66 69 6c 74 65 72 73 20 74 6f 67 65 74 65 68 filters togeteh
73160 72 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e r.. this.
73170 63 6f 6e 6e 65 63 74 53 65 72 69 65 73 2e 61 70 connectSeries.ap
73180 70 6c 79 28 74 68 69 73 2c 20 74 68 69 73 2e 5f ply(this, this._
73190 61 6c 6c 70 61 73 73 46 69 6c 74 65 72 73 4c 29 allpassFiltersL)
731a0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
731b0 63 6f 6e 6e 65 63 74 53 65 72 69 65 73 2e 61 70 connectSeries.ap
731c0 70 6c 79 28 74 68 69 73 2c 20 74 68 69 73 2e 5f ply(this, this._
731d0 61 6c 6c 70 61 73 73 46 69 6c 74 65 72 73 52 29 allpassFiltersR)
731e0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
731f0 5f 61 6c 6c 70 61 73 73 46 69 6c 74 65 72 73 4c _allpassFiltersL
73200 5b 74 68 69 73 2e 5f 61 6c 6c 70 61 73 73 46 69 [this._allpassFi
73210 6c 74 65 72 73 4c 2e 6c 65 6e 67 74 68 20 2d 20 ltersL.length -
73220 31 5d 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 1].connect(this.
73230 65 66 66 65 63 74 52 65 74 75 72 6e 4c 29 3b 0a effectReturnL);.
73240 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 61 . this._a
73250 6c 6c 70 61 73 73 46 69 6c 74 65 72 73 52 5b 74 llpassFiltersR[t
73260 68 69 73 2e 5f 61 6c 6c 70 61 73 73 46 69 6c 74 his._allpassFilt
73270 65 72 73 52 2e 6c 65 6e 67 74 68 20 2d 20 31 5d ersR.length - 1]
73280 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 65 66 .connect(this.ef
73290 66 65 63 74 52 65 74 75 72 6e 52 29 3b 0a 09 20 fectReturnR);..
732a0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 this._rea
732b0 64 4f 6e 6c 79 28 5b 0a 09 20 20 20 20 20 20 20 dOnly([..
732c0 20 20 20 20 20 27 72 6f 6f 6d 53 69 7a 65 27 2c 'roomSize',
732d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 64 .. 'd
732e0 61 6d 70 65 6e 69 6e 67 27 0a 09 20 20 20 20 20 ampening'..
732f0 20 20 20 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 ]);.. };..
73300 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 Tone.extend(
73310 54 6f 6e 65 2e 46 72 65 65 76 65 72 62 2c 20 54 Tone.Freeverb, T
73320 6f 6e 65 2e 53 74 65 72 65 6f 45 66 66 65 63 74 one.StereoEffect
73330 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
73340 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 @static... *
73350 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 @type {Object}..
73360 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 . */.. Tone.F
73370 72 65 65 76 65 72 62 2e 64 65 66 61 75 6c 74 73 reeverb.defaults
73380 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 27 72 = {.. 'r
73390 6f 6f 6d 53 69 7a 65 27 3a 20 30 2e 37 2c 0a 09 oomSize': 0.7,..
733a0 20 20 20 20 20 20 20 20 27 64 61 6d 70 65 6e 69 'dampeni
733b0 6e 67 27 3a 20 33 30 30 30 0a 09 20 20 20 20 7d ng': 3000.. }
733c0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
733d0 20 43 6c 65 61 6e 20 75 70 2e 20 0a 09 09 20 2a Clean up. ... *
733e0 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
733f0 2e 46 72 65 65 76 65 72 62 7d 20 74 68 69 73 0a .Freeverb} this.
73400 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
73410 46 72 65 65 76 65 72 62 2e 70 72 6f 74 6f 74 79 Freeverb.prototy
73420 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e pe.dispose = fun
73430 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
73440 20 20 20 20 54 6f 6e 65 2e 53 74 65 72 65 6f 45 Tone.StereoE
73450 66 66 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e ffect.prototype.
73460 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 dispose.call(thi
73470 73 29 3b 0a 09 20 20 20 20 20 20 20 20 66 6f 72 s);.. for
73480 20 28 76 61 72 20 61 6c 20 3d 20 30 3b 20 61 6c (var al = 0; al
73490 20 3c 20 74 68 69 73 2e 5f 61 6c 6c 70 61 73 73 < this._allpass
734a0 46 69 6c 74 65 72 73 4c 2e 6c 65 6e 67 74 68 3b FiltersL.length;
734b0 20 61 6c 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 al++) {..
734c0 20 20 20 20 20 20 74 68 69 73 2e 5f 61 6c 6c 70 this._allp
734d0 61 73 73 46 69 6c 74 65 72 73 4c 5b 61 6c 5d 2e assFiltersL[al].
734e0 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 20 disconnect();..
734f0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
73500 5f 61 6c 6c 70 61 73 73 46 69 6c 74 65 72 73 4c _allpassFiltersL
73510 5b 61 6c 5d 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 [al] = null;..
73520 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
73530 20 74 68 69 73 2e 5f 61 6c 6c 70 61 73 73 46 69 this._allpassFi
73540 6c 74 65 72 73 4c 20 3d 20 6e 75 6c 6c 3b 0a 09 ltersL = null;..
73550 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 for (var
73560 20 61 72 20 3d 20 30 3b 20 61 72 20 3c 20 74 68 ar = 0; ar < th
73570 69 73 2e 5f 61 6c 6c 70 61 73 73 46 69 6c 74 65 is._allpassFilte
73580 72 73 52 2e 6c 65 6e 67 74 68 3b 20 61 72 2b 2b rsR.length; ar++
73590 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
735a0 20 74 68 69 73 2e 5f 61 6c 6c 70 61 73 73 46 69 this._allpassFi
735b0 6c 74 65 72 73 52 5b 61 72 5d 2e 64 69 73 63 6f ltersR[ar].disco
735c0 6e 6e 65 63 74 28 29 3b 0a 09 20 20 20 20 20 20 nnect();..
735d0 20 20 20 20 20 20 74 68 69 73 2e 5f 61 6c 6c 70 this._allp
735e0 61 73 73 46 69 6c 74 65 72 73 52 5b 61 72 5d 20 assFiltersR[ar]
735f0 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
73600 20 7d 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 }.. this
73610 2e 5f 61 6c 6c 70 61 73 73 46 69 6c 74 65 72 73 ._allpassFilters
73620 52 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 R = null;..
73630 20 20 20 66 6f 72 20 28 76 61 72 20 63 66 20 3d for (var cf =
73640 20 30 3b 20 63 66 20 3c 20 74 68 69 73 2e 5f 63 0; cf < this._c
73650 6f 6d 62 46 69 6c 74 65 72 73 2e 6c 65 6e 67 74 ombFilters.lengt
73660 68 3b 20 63 66 2b 2b 29 20 7b 0a 09 20 20 20 20 h; cf++) {..
73670 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 6f this._co
73680 6d 62 46 69 6c 74 65 72 73 5b 63 66 5d 2e 64 69 mbFilters[cf].di
73690 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
736a0 20 20 20 20 20 20 74 68 69 73 2e 5f 63 6f 6d 62 this._comb
736b0 46 69 6c 74 65 72 73 5b 63 66 5d 20 3d 20 6e 75 Filters[cf] = nu
736c0 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 ll;.. }..
736d0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 6f this._co
736e0 6d 62 46 69 6c 74 65 72 73 20 3d 20 6e 75 6c 6c mbFilters = null
736f0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
73700 5f 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 _writable([..
73710 20 20 20 20 20 20 20 20 20 27 72 6f 6f 6d 53 69 'roomSi
73720 7a 65 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 ze',..
73730 20 20 27 64 61 6d 70 65 6e 69 6e 67 27 0a 09 20 'dampening'..
73740 20 20 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 ]);..
73750 20 20 20 20 74 68 69 73 2e 72 6f 6f 6d 53 69 7a this.roomSiz
73760 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 e.dispose();..
73770 20 20 20 20 20 20 74 68 69 73 2e 72 6f 6f 6d 53 this.roomS
73780 69 7a 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ize = null;..
73790 20 20 20 20 20 74 68 69 73 2e 64 61 6d 70 65 6e this.dampen
737a0 69 6e 67 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 ing.dispose();..
737b0 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 61 6d this.dam
737c0 70 65 6e 69 6e 67 20 3d 20 6e 75 6c 6c 3b 0a 09 pening = null;..
737d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
737e0 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
737f0 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 46 72 return Tone.Fr
73800 65 65 76 65 72 62 3b 0a 09 7d 29 3b 0a 09 4d 6f eeverb;..});..Mo
73810 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 dule(function (T
73820 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 one) {.. ..
73830 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 61 6e 20 61 /**... * an a
73840 72 72 61 79 20 6f 66 20 74 68 65 20 63 6f 6d 62 rray of the comb
73850 20 66 69 6c 74 65 72 20 64 65 6c 61 79 20 74 69 filter delay ti
73860 6d 65 20 76 61 6c 75 65 73 0a 09 09 20 2a 20 20 me values... *
73870 40 70 72 69 76 61 74 65 0a 09 09 20 2a 20 20 40 @private... * @
73880 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 74 79 static... * @ty
73890 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 20 2a 2f pe {Array}... */
738a0 0a 09 20 20 20 20 76 61 72 20 63 6f 6d 62 46 69 .. var combFi
738b0 6c 74 65 72 44 65 6c 61 79 54 69 6d 65 73 20 3d lterDelayTimes =
738c0 20 5b 0a 09 20 20 20 20 20 20 20 20 31 36 38 37 [.. 1687
738d0 20 2f 20 32 35 30 30 30 2c 0a 09 20 20 20 20 20 / 25000,..
738e0 20 20 20 31 36 30 31 20 2f 20 32 35 30 30 30 2c 1601 / 25000,
738f0 0a 09 20 20 20 20 20 20 20 20 32 30 35 33 20 2f .. 2053 /
73900 20 32 35 30 30 30 2c 0a 09 20 20 20 20 20 20 20 25000,..
73910 20 32 32 35 31 20 2f 20 32 35 30 30 30 0a 09 20 2251 / 25000..
73920 20 20 20 5d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 ];.. /**..
73930 09 20 2a 20 20 74 68 65 20 72 65 73 6f 6e 61 6e . * the resonan
73940 63 65 73 20 6f 66 20 65 61 63 68 20 6f 66 20 74 ces of each of t
73950 68 65 20 63 6f 6d 62 20 66 69 6c 74 65 72 73 0a he comb filters.
73960 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
73970 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 . * @static...
73980 2a 20 20 40 74 79 70 65 20 7b 41 72 72 61 79 7d * @type {Array}
73990 0a 09 09 20 2a 2f 0a 09 20 20 20 20 76 61 72 20 ... */.. var
739a0 63 6f 6d 62 46 69 6c 74 65 72 52 65 73 6f 6e 61 combFilterResona
739b0 6e 63 65 73 20 3d 20 5b 0a 09 20 20 20 20 20 20 nces = [..
739c0 20 20 30 2e 37 37 33 2c 0a 09 20 20 20 20 20 20 0.773,..
739d0 20 20 30 2e 38 30 32 2c 0a 09 20 20 20 20 20 20 0.802,..
739e0 20 20 30 2e 37 35 33 2c 0a 09 20 20 20 20 20 20 0.753,..
739f0 20 20 30 2e 37 33 33 0a 09 20 20 20 20 5d 3b 0a 0.733.. ];.
73a00 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 . /**... * t
73a10 68 65 20 61 6c 6c 70 61 73 73 20 66 69 6c 74 65 he allpass filte
73a20 72 20 66 72 65 71 75 65 6e 63 69 65 73 0a 09 09 r frequencies...
73a30 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 * @private...
73a40 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 * @static... *
73a50 20 40 74 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 @type {Array}..
73a60 09 20 2a 2f 0a 09 20 20 20 20 76 61 72 20 61 6c . */.. var al
73a70 6c 70 61 73 73 46 69 6c 74 65 72 46 72 65 71 73 lpassFilterFreqs
73a80 20 3d 20 5b 0a 09 20 20 20 20 20 20 20 20 33 34 = [.. 34
73a90 37 2c 0a 09 20 20 20 20 20 20 20 20 31 31 33 2c 7,.. 113,
73aa0 0a 09 20 20 20 20 20 20 20 20 33 37 0a 09 20 20 .. 37..
73ab0 20 20 5d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 ];.. /**...
73ac0 20 2a 20 20 40 63 6c 61 73 73 20 54 6f 6e 65 2e * @class Tone.
73ad0 4a 43 52 65 76 65 72 62 20 69 73 20 61 20 73 69 JCReverb is a si
73ae0 6d 70 6c 65 20 5b 53 63 68 72 6f 65 64 65 72 20 mple [Schroeder
73af0 52 65 76 65 72 62 65 72 61 74 6f 72 5d 28 68 74 Reverberator](ht
73b00 74 70 73 3a 2f 2f 63 63 72 6d 61 2e 73 74 61 6e tps://ccrma.stan
73b10 66 6f 72 64 2e 65 64 75 2f 7e 6a 6f 73 2f 70 61 ford.edu/~jos/pa
73b20 73 70 2f 53 63 68 72 6f 65 64 65 72 5f 52 65 76 sp/Schroeder_Rev
73b30 65 72 62 65 72 61 74 6f 72 73 2e 68 74 6d 6c 29 erberators.html)
73b40 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 74 75 ... * tu
73b50 6e 65 64 20 62 79 20 4a 6f 68 6e 20 43 68 6f 77 ned by John Chow
73b60 6e 69 6e 67 20 69 6e 20 31 39 37 30 2e 0a 09 09 ning in 1970....
73b70 20 2a 20 20 20 20 20 20 20 20 20 49 74 20 69 73 * It is
73b80 20 6d 61 64 65 20 75 70 20 6f 66 20 74 68 72 65 made up of thre
73b90 65 20 61 6c 6c 70 61 73 73 20 66 69 6c 74 65 72 e allpass filter
73ba0 73 20 61 6e 64 20 66 6f 75 72 20 54 6f 6e 65 2e s and four Tone.
73bb0 46 65 65 64 62 61 63 6b 43 6f 6d 62 46 69 6c 74 FeedbackCombFilt
73bc0 65 72 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 20 er. ... *
73bd0 20 20 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 65 ... *... * @e
73be0 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 45 66 66 xtends {Tone.Eff
73bf0 65 63 74 7d 0a 09 09 20 2a 20 20 40 63 6f 6e 73 ect}... * @cons
73c00 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 70 tructor... * @p
73c10 61 72 61 6d 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 aram {NormalRang
73c20 65 7c 4f 62 6a 65 63 74 7d 20 5b 72 6f 6f 6d 53 e|Object} [roomS
73c30 69 7a 65 5d 20 43 6f 6f 72 65 6c 61 74 65 73 20 ize] Coorelates
73c40 74 6f 20 74 68 65 20 64 65 63 61 79 20 74 69 6d to the decay tim
73c50 65 2e 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c e.... * @exampl
73c60 65 0a 09 09 20 2a 20 76 61 72 20 72 65 76 65 72 e... * var rever
73c70 62 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4a 43 52 b = new Tone.JCR
73c80 65 76 65 72 62 28 30 2e 34 29 2e 63 6f 6e 6e 65 everb(0.4).conne
73c90 63 74 28 54 6f 6e 65 2e 4d 61 73 74 65 72 29 3b ct(Tone.Master);
73ca0 0a 09 09 20 2a 20 76 61 72 20 64 65 6c 61 79 20 ... * var delay
73cb0 3d 20 6e 65 77 20 54 6f 6e 65 2e 46 65 65 64 62 = new Tone.Feedb
73cc0 61 63 6b 44 65 6c 61 79 28 30 2e 35 29 3b 20 0a ackDelay(0.5); .
73cd0 09 09 20 2a 20 2f 2f 63 6f 6e 6e 65 63 74 69 6e .. * //connectin
73ce0 67 20 74 68 65 20 73 79 6e 74 68 20 74 6f 20 72 g the synth to r
73cf0 65 76 65 72 62 20 74 68 72 6f 75 67 68 20 64 65 everb through de
73d00 6c 61 79 0a 09 09 20 2a 20 76 61 72 20 73 79 6e lay... * var syn
73d10 74 68 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 44 75 th = new Tone.Du
73d20 6f 53 79 6e 74 68 28 29 2e 63 68 61 69 6e 28 64 oSynth().chain(d
73d30 65 6c 61 79 2c 20 72 65 76 65 72 62 29 3b 0a 09 elay, reverb);..
73d40 09 20 2a 20 73 79 6e 74 68 2e 74 72 69 67 67 65 . * synth.trigge
73d50 72 41 74 74 61 63 6b 52 65 6c 65 61 73 65 28 22 rAttackRelease("
73d60 41 34 22 2c 22 38 6e 22 29 3b 0a 09 09 20 2a 2f A4","8n");... */
73d70 0a 09 20 20 20 20 54 6f 6e 65 2e 4a 43 52 65 76 .. Tone.JCRev
73d80 65 72 62 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 erb = function (
73d90 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 ) {.. var
73da0 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e options = this.
73db0 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 optionsObject(ar
73dc0 67 75 6d 65 6e 74 73 2c 20 5b 27 72 6f 6f 6d 53 guments, ['roomS
73dd0 69 7a 65 27 5d 2c 20 54 6f 6e 65 2e 4a 43 52 65 ize'], Tone.JCRe
73de0 76 65 72 62 2e 64 65 66 61 75 6c 74 73 29 3b 0a verb.defaults);.
73df0 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 53 74 . Tone.St
73e00 65 72 65 6f 45 66 66 65 63 74 2e 63 61 6c 6c 28 ereoEffect.call(
73e10 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a this, options);.
73e20 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
73e30 20 2a 20 20 72 6f 6f 6d 20 73 69 7a 65 20 63 6f * room size co
73e40 6e 74 72 6f 6c 20 76 61 6c 75 65 73 20 62 65 74 ntrol values bet
73e50 77 65 65 6e 20 5b 30 2c 31 5d 0a 09 09 09 20 2a ween [0,1].... *
73e60 20 20 40 74 79 70 65 20 7b 4e 6f 72 6d 61 6c 52 @type {NormalR
73e70 61 6e 67 65 7d 0a 09 09 09 20 2a 20 20 40 73 69 ange}.... * @si
73e80 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 gnal.... */..
73e90 20 20 20 20 20 74 68 69 73 2e 72 6f 6f 6d 53 69 this.roomSi
73ea0 7a 65 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 ze = new Tone.Si
73eb0 67 6e 61 6c 28 6f 70 74 69 6f 6e 73 2e 72 6f 6f gnal(options.roo
73ec0 6d 53 69 7a 65 2c 20 54 6f 6e 65 2e 54 79 70 65 mSize, Tone.Type
73ed0 2e 4e 6f 72 6d 61 6c 52 61 6e 67 65 29 3b 0a 09 .NormalRange);..
73ee0 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
73ef0 2a 20 20 73 63 61 6c 65 20 74 68 65 20 72 6f 6f * scale the roo
73f00 6d 20 73 69 7a 65 0a 09 09 09 20 2a 20 20 40 74 m size.... * @t
73f10 79 70 65 20 7b 54 6f 6e 65 2e 53 63 61 6c 65 7d ype {Tone.Scale}
73f20 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
73f30 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
73f40 20 74 68 69 73 2e 5f 73 63 61 6c 65 52 6f 6f 6d this._scaleRoom
73f50 53 69 7a 65 20 3d 20 6e 65 77 20 54 6f 6e 65 2e Size = new Tone.
73f60 53 63 61 6c 65 28 2d 30 2e 37 33 33 2c 20 30 2e Scale(-0.733, 0.
73f70 31 39 37 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 197);.. /
73f80 2a 2a 0a 09 09 09 20 2a 20 20 61 20 73 65 72 69 **.... * a seri
73f90 65 73 20 6f 66 20 61 6c 6c 70 61 73 73 20 66 69 es of allpass fi
73fa0 6c 74 65 72 73 0a 09 09 09 20 2a 20 20 40 74 79 lters.... * @ty
73fb0 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 09 20 2a pe {Array}.... *
73fc0 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
73fd0 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
73fe0 5f 61 6c 6c 70 61 73 73 46 69 6c 74 65 72 73 20 _allpassFilters
73ff0 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 20 20 20 2f = [];.. /
74000 2a 2a 0a 09 09 09 20 2a 20 20 70 61 72 61 6c 6c **.... * parall
74010 65 6c 20 66 65 65 64 62 61 63 6b 20 63 6f 6d 62 el feedback comb
74020 20 66 69 6c 74 65 72 73 0a 09 09 09 20 2a 20 20 filters.... *
74030 40 74 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 @type {Array}...
74040 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
74050 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
74060 69 73 2e 5f 66 65 65 64 62 61 63 6b 43 6f 6d 62 is._feedbackComb
74070 46 69 6c 74 65 72 73 20 3d 20 5b 5d 3b 0a 09 20 Filters = [];..
74080 20 20 20 20 20 20 20 2f 2f 6d 61 6b 65 20 74 68 //make th
74090 65 20 61 6c 6c 70 61 73 73 20 66 69 6c 74 65 72 e allpass filter
740a0 73 0a 09 20 20 20 20 20 20 20 20 66 6f 72 20 28 s.. for (
740b0 76 61 72 20 61 66 20 3d 20 30 3b 20 61 66 20 3c var af = 0; af <
740c0 20 61 6c 6c 70 61 73 73 46 69 6c 74 65 72 46 72 allpassFilterFr
740d0 65 71 73 2e 6c 65 6e 67 74 68 3b 20 61 66 2b 2b eqs.length; af++
740e0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
740f0 20 76 61 72 20 61 6c 6c 70 61 73 73 20 3d 20 74 var allpass = t
74100 68 69 73 2e 63 6f 6e 74 65 78 74 2e 63 72 65 61 his.context.crea
74110 74 65 42 69 71 75 61 64 46 69 6c 74 65 72 28 29 teBiquadFilter()
74120 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 61 ;.. a
74130 6c 6c 70 61 73 73 2e 74 79 70 65 20 3d 20 27 61 llpass.type = 'a
74140 6c 6c 70 61 73 73 27 3b 0a 09 20 20 20 20 20 20 llpass';..
74150 20 20 20 20 20 20 61 6c 6c 70 61 73 73 2e 66 72 allpass.fr
74160 65 71 75 65 6e 63 79 2e 76 61 6c 75 65 20 3d 20 equency.value =
74170 61 6c 6c 70 61 73 73 46 69 6c 74 65 72 46 72 65 allpassFilterFre
74180 71 73 5b 61 66 5d 3b 0a 09 20 20 20 20 20 20 20 qs[af];..
74190 20 20 20 20 20 74 68 69 73 2e 5f 61 6c 6c 70 61 this._allpa
741a0 73 73 46 69 6c 74 65 72 73 2e 70 75 73 68 28 61 ssFilters.push(a
741b0 6c 6c 70 61 73 73 29 3b 0a 09 20 20 20 20 20 20 llpass);..
741c0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 2f 2f 61 }.. //a
741d0 6e 64 20 74 68 65 20 63 6f 6d 62 20 66 69 6c 74 nd the comb filt
741e0 65 72 73 0a 09 20 20 20 20 20 20 20 20 66 6f 72 ers.. for
741f0 20 28 76 61 72 20 63 66 20 3d 20 30 3b 20 63 66 (var cf = 0; cf
74200 20 3c 20 63 6f 6d 62 46 69 6c 74 65 72 44 65 6c < combFilterDel
74210 61 79 54 69 6d 65 73 2e 6c 65 6e 67 74 68 3b 20 ayTimes.length;
74220 63 66 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 cf++) {..
74230 20 20 20 20 20 76 61 72 20 66 62 63 66 20 3d 20 var fbcf =
74240 6e 65 77 20 54 6f 6e 65 2e 46 65 65 64 62 61 63 new Tone.Feedbac
74250 6b 43 6f 6d 62 46 69 6c 74 65 72 28 63 6f 6d 62 kCombFilter(comb
74260 46 69 6c 74 65 72 44 65 6c 61 79 54 69 6d 65 73 FilterDelayTimes
74270 5b 63 66 5d 2c 20 30 2e 31 29 3b 0a 09 20 20 20 [cf], 0.1);..
74280 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 this._s
74290 63 61 6c 65 52 6f 6f 6d 53 69 7a 65 2e 63 6f 6e caleRoomSize.con
742a0 6e 65 63 74 28 66 62 63 66 2e 72 65 73 6f 6e 61 nect(fbcf.resona
742b0 6e 63 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 nce);..
742c0 20 20 20 66 62 63 66 2e 72 65 73 6f 6e 61 6e 63 fbcf.resonanc
742d0 65 2e 76 61 6c 75 65 20 3d 20 63 6f 6d 62 46 69 e.value = combFi
742e0 6c 74 65 72 52 65 73 6f 6e 61 6e 63 65 73 5b 63 lterResonances[c
742f0 66 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 f];..
74300 20 74 68 69 73 2e 5f 61 6c 6c 70 61 73 73 46 69 this._allpassFi
74310 6c 74 65 72 73 5b 74 68 69 73 2e 5f 61 6c 6c 70 lters[this._allp
74320 61 73 73 46 69 6c 74 65 72 73 2e 6c 65 6e 67 74 assFilters.lengt
74330 68 20 2d 20 31 5d 2e 63 6f 6e 6e 65 63 74 28 66 h - 1].connect(f
74340 62 63 66 29 3b 0a 09 20 20 20 20 20 20 20 20 20 bcf);..
74350 20 20 20 69 66 20 28 63 66 20 3c 20 63 6f 6d 62 if (cf < comb
74360 46 69 6c 74 65 72 44 65 6c 61 79 54 69 6d 65 73 FilterDelayTimes
74370 2e 6c 65 6e 67 74 68 20 2f 20 32 29 20 7b 0a 09 .length / 2) {..
74380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
74390 66 62 63 66 2e 63 6f 6e 6e 65 63 74 28 74 68 69 fbcf.connect(thi
743a0 73 2e 65 66 66 65 63 74 52 65 74 75 72 6e 4c 29 s.effectReturnL)
743b0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
743c0 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
743d0 20 20 20 20 20 20 20 20 20 66 62 63 66 2e 63 6f fbcf.co
743e0 6e 6e 65 63 74 28 74 68 69 73 2e 65 66 66 65 63 nnect(this.effec
743f0 74 52 65 74 75 72 6e 52 29 3b 0a 09 20 20 20 20 tReturnR);..
74400 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
74410 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 65 65 this._fee
74420 64 62 61 63 6b 43 6f 6d 62 46 69 6c 74 65 72 73 dbackCombFilters
74430 2e 70 75 73 68 28 66 62 63 66 29 3b 0a 09 20 20 .push(fbcf);..
74440 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
74450 20 2f 2f 63 68 61 69 6e 20 74 68 65 20 61 6c 6c //chain the all
74460 70 61 73 73 20 66 69 6c 74 65 72 73 20 74 6f 67 pass filters tog
74470 65 74 68 65 72 0a 09 20 20 20 20 20 20 20 20 74 ether.. t
74480 68 69 73 2e 72 6f 6f 6d 53 69 7a 65 2e 63 6f 6e his.roomSize.con
74490 6e 65 63 74 28 74 68 69 73 2e 5f 73 63 61 6c 65 nect(this._scale
744a0 52 6f 6f 6d 53 69 7a 65 29 3b 0a 09 20 20 20 20 RoomSize);..
744b0 20 20 20 20 74 68 69 73 2e 63 6f 6e 6e 65 63 74 this.connect
744c0 53 65 72 69 65 73 2e 61 70 70 6c 79 28 74 68 69 Series.apply(thi
744d0 73 2c 20 74 68 69 73 2e 5f 61 6c 6c 70 61 73 73 s, this._allpass
744e0 46 69 6c 74 65 72 73 29 3b 0a 09 20 20 20 20 20 Filters);..
744f0 20 20 20 74 68 69 73 2e 65 66 66 65 63 74 53 65 this.effectSe
74500 6e 64 4c 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 ndL.connect(this
74510 2e 5f 61 6c 6c 70 61 73 73 46 69 6c 74 65 72 73 ._allpassFilters
74520 5b 30 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 [0]);.. t
74530 68 69 73 2e 65 66 66 65 63 74 53 65 6e 64 52 2e his.effectSendR.
74540 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 61 6c connect(this._al
74550 6c 70 61 73 73 46 69 6c 74 65 72 73 5b 30 5d 29 lpassFilters[0])
74560 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
74570 5f 72 65 61 64 4f 6e 6c 79 28 5b 27 72 6f 6f 6d _readOnly(['room
74580 53 69 7a 65 27 5d 29 3b 0a 09 20 20 20 20 7d 3b Size']);.. };
74590 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e .. Tone.exten
745a0 64 28 54 6f 6e 65 2e 4a 43 52 65 76 65 72 62 2c d(Tone.JCReverb,
745b0 20 54 6f 6e 65 2e 53 74 65 72 65 6f 45 66 66 65 Tone.StereoEffe
745c0 63 74 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 ct);.. /**...
745d0 20 2a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 * the default
745e0 76 61 6c 75 65 73 0a 09 09 20 2a 20 20 40 73 74 values... * @st
745f0 61 74 69 63 0a 09 09 20 2a 20 20 40 63 6f 6e 73 atic... * @cons
74600 74 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4f t... * @type {O
74610 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 bject}... */..
74620 20 20 54 6f 6e 65 2e 4a 43 52 65 76 65 72 62 2e Tone.JCReverb.
74630 64 65 66 61 75 6c 74 73 20 3d 20 7b 20 27 72 6f defaults = { 'ro
74640 6f 6d 53 69 7a 65 27 3a 20 30 2e 35 20 7d 3b 0a omSize': 0.5 };.
74650 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 . /**... * C
74660 6c 65 61 6e 20 75 70 2e 20 0a 09 09 20 2a 20 20 lean up. ... *
74670 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 4a @returns {Tone.J
74680 43 52 65 76 65 72 62 7d 20 74 68 69 73 0a 09 09 CReverb} this...
74690 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4a 43 */.. Tone.JC
746a0 52 65 76 65 72 62 2e 70 72 6f 74 6f 74 79 70 65 Reverb.prototype
746b0 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 .dispose = funct
746c0 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
746d0 20 20 54 6f 6e 65 2e 53 74 65 72 65 6f 45 66 66 Tone.StereoEff
746e0 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 ect.prototype.di
746f0 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 spose.call(this)
74700 3b 0a 09 20 20 20 20 20 20 20 20 66 6f 72 20 28 ;.. for (
74710 76 61 72 20 61 70 66 20 3d 20 30 3b 20 61 70 66 var apf = 0; apf
74720 20 3c 20 74 68 69 73 2e 5f 61 6c 6c 70 61 73 73 < this._allpass
74730 46 69 6c 74 65 72 73 2e 6c 65 6e 67 74 68 3b 20 Filters.length;
74740 61 70 66 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 apf++) {..
74750 20 20 20 20 20 20 74 68 69 73 2e 5f 61 6c 6c 70 this._allp
74760 61 73 73 46 69 6c 74 65 72 73 5b 61 70 66 5d 2e assFilters[apf].
74770 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 20 disconnect();..
74780 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
74790 5f 61 6c 6c 70 61 73 73 46 69 6c 74 65 72 73 5b _allpassFilters[
747a0 61 70 66 5d 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 apf] = null;..
747b0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
747c0 20 74 68 69 73 2e 5f 61 6c 6c 70 61 73 73 46 69 this._allpassFi
747d0 6c 74 65 72 73 20 3d 20 6e 75 6c 6c 3b 0a 09 20 lters = null;..
747e0 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 for (var
747f0 66 62 63 66 20 3d 20 30 3b 20 66 62 63 66 20 3c fbcf = 0; fbcf <
74800 20 74 68 69 73 2e 5f 66 65 65 64 62 61 63 6b 43 this._feedbackC
74810 6f 6d 62 46 69 6c 74 65 72 73 2e 6c 65 6e 67 74 ombFilters.lengt
74820 68 3b 20 66 62 63 66 2b 2b 29 20 7b 0a 09 20 20 h; fbcf++) {..
74830 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
74840 66 65 65 64 62 61 63 6b 43 6f 6d 62 46 69 6c 74 feedbackCombFilt
74850 65 72 73 5b 66 62 63 66 5d 2e 64 69 73 70 6f 73 ers[fbcf].dispos
74860 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 e();..
74870 20 20 74 68 69 73 2e 5f 66 65 65 64 62 61 63 6b this._feedback
74880 43 6f 6d 62 46 69 6c 74 65 72 73 5b 66 62 63 66 CombFilters[fbcf
74890 5d 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 ] = null;..
748a0 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 74 68 }.. th
748b0 69 73 2e 5f 66 65 65 64 62 61 63 6b 43 6f 6d 62 is._feedbackComb
748c0 46 69 6c 74 65 72 73 20 3d 20 6e 75 6c 6c 3b 0a Filters = null;.
748d0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 77 . this._w
748e0 72 69 74 61 62 6c 65 28 5b 27 72 6f 6f 6d 53 69 ritable(['roomSi
748f0 7a 65 27 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 ze']);..
74900 74 68 69 73 2e 72 6f 6f 6d 53 69 7a 65 2e 64 69 this.roomSize.di
74910 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
74920 20 20 74 68 69 73 2e 72 6f 6f 6d 53 69 7a 65 20 this.roomSize
74930 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
74940 20 74 68 69 73 2e 5f 73 63 61 6c 65 52 6f 6f 6d this._scaleRoom
74950 53 69 7a 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a Size.dispose();.
74960 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 . this._s
74970 63 61 6c 65 52 6f 6f 6d 53 69 7a 65 20 3d 20 6e caleRoomSize = n
74980 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 ull;.. re
74990 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 turn this;..
749a0 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 };.. return T
749b0 6f 6e 65 2e 4a 43 52 65 76 65 72 62 3b 0a 09 7d one.JCReverb;..}
749c0 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
749d0 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
749e0 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a .. /**... *
749f0 20 20 40 63 6c 61 73 73 20 4d 69 64 2f 53 69 64 @class Mid/Sid
74a00 65 20 70 72 6f 63 65 73 73 69 6e 67 20 73 65 70 e processing sep
74a10 61 72 61 74 65 73 20 74 68 65 20 74 68 65 20 27 arates the the '
74a20 6d 69 64 27 20 73 69 67 6e 61 6c 20 0a 09 09 20 mid' signal ...
74a30 2a 20 20 20 20 20 20 20 20 20 28 77 68 69 63 68 * (which
74a40 20 63 6f 6d 65 73 20 6f 75 74 20 6f 66 20 62 6f comes out of bo
74a50 74 68 20 74 68 65 20 6c 65 66 74 20 61 6e 64 20 th the left and
74a60 74 68 65 20 72 69 67 68 74 20 63 68 61 6e 6e 65 the right channe
74a70 6c 29 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 l) ... *
74a80 20 61 6e 64 20 74 68 65 20 27 73 69 64 65 27 20 and the 'side'
74a90 28 77 68 69 63 68 20 6f 6e 6c 79 20 63 6f 6d 65 (which only come
74aa0 73 20 6f 75 74 20 6f 66 20 74 68 65 20 74 68 65 s out of the the
74ab0 20 73 69 64 65 20 63 68 61 6e 6e 65 6c 73 29 20 side channels)
74ac0 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 61 6e ... * an
74ad0 64 20 65 66 66 65 63 74 73 20 74 68 65 6d 20 73 d effects them s
74ae0 65 70 61 72 61 74 65 6c 79 20 62 65 66 6f 72 65 eparately before
74af0 20 62 65 69 6e 67 20 72 65 63 6f 6d 62 69 6e 65 being recombine
74b00 64 2e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 d.... *
74b10 41 70 70 6c 69 65 73 20 61 20 4d 69 64 2f 53 69 Applies a Mid/Si
74b20 64 65 20 73 65 70 65 72 61 74 69 6f 6e 20 61 6e de seperation an
74b30 64 20 72 65 63 6f 6d 62 69 6e 61 74 69 6f 6e 2e d recombination.
74b40 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 41 6c ... * Al
74b50 67 6f 72 69 74 68 6d 20 66 6f 75 6e 64 20 69 6e gorithm found in
74b60 20 5b 6b 76 72 61 75 64 69 6f 20 66 6f 72 75 6d [kvraudio forum
74b70 73 5d 28 68 74 74 70 3a 2f 2f 77 77 77 2e 6b 76 s](http://www.kv
74b80 72 61 75 64 69 6f 2e 63 6f 6d 2f 66 6f 72 75 6d raudio.com/forum
74b90 2f 76 69 65 77 74 6f 70 69 63 2e 70 68 70 3f 74 /viewtopic.php?t
74ba0 3d 32 31 32 35 38 37 29 2e 0a 09 09 20 2a 20 20 =212587).... *
74bb0 20 20 20 20 20 20 20 3c 62 72 3e 3c 62 72 3e 0a <br><br>.
74bc0 09 09 20 2a 20 20 20 20 20 20 20 20 20 54 68 69 .. * Thi
74bd0 73 20 69 73 20 61 20 62 61 73 65 2d 63 6c 61 73 s is a base-clas
74be0 73 20 66 6f 72 20 4d 69 64 2f 53 69 64 65 20 45 s for Mid/Side E
74bf0 66 66 65 63 74 73 2e 20 0a 09 09 20 2a 0a 09 09 ffects. ... *...
74c00 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f * @extends {To
74c10 6e 65 2e 45 66 66 65 63 74 7d 0a 09 09 20 2a 20 ne.Effect}... *
74c20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 @constructor...
74c30 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 69 */.. Tone.Mi
74c40 64 53 69 64 65 45 66 66 65 63 74 20 3d 20 66 75 dSideEffect = fu
74c50 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
74c60 20 20 20 20 20 54 6f 6e 65 2e 45 66 66 65 63 74 Tone.Effect
74c70 2e 61 70 70 6c 79 28 74 68 69 73 2c 20 61 72 67 .apply(this, arg
74c80 75 6d 65 6e 74 73 29 3b 0a 09 20 20 20 20 20 20 uments);..
74c90 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
74ca0 20 6d 69 64 2f 73 69 64 65 20 73 70 6c 69 74 0a mid/side split.
74cb0 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 54 ... * @type {T
74cc0 6f 6e 65 2e 4d 69 64 53 69 64 65 53 70 6c 69 74 one.MidSideSplit
74cd0 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
74ce0 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
74cf0 20 20 74 68 69 73 2e 5f 6d 69 64 53 69 64 65 53 this._midSideS
74d00 70 6c 69 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e plit = new Tone.
74d10 4d 69 64 53 69 64 65 53 70 6c 69 74 28 29 3b 0a MidSideSplit();.
74d20 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
74d30 20 2a 20 20 54 68 65 20 6d 69 64 2f 73 69 64 65 * The mid/side
74d40 20 6d 65 72 67 65 0a 09 09 09 20 2a 20 20 40 74 merge.... * @t
74d50 79 70 65 20 20 7b 54 6f 6e 65 2e 4d 69 64 53 69 ype {Tone.MidSi
74d60 64 65 4d 65 72 67 65 7d 0a 09 09 09 20 2a 20 20 deMerge}.... *
74d70 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
74d80 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d . this._m
74d90 69 64 53 69 64 65 4d 65 72 67 65 20 3d 20 6e 65 idSideMerge = ne
74da0 77 20 54 6f 6e 65 2e 4d 69 64 53 69 64 65 4d 65 w Tone.MidSideMe
74db0 72 67 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 rge();..
74dc0 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 6d /**.... * The m
74dd0 69 64 20 73 65 6e 64 2e 20 43 6f 6e 6e 65 63 74 id send. Connect
74de0 20 74 6f 20 6d 69 64 20 70 72 6f 63 65 73 73 69 to mid processi
74df0 6e 67 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 ng.... * @type
74e00 7b 54 6f 6e 65 2e 45 78 70 72 7d 0a 09 09 09 20 {Tone.Expr}....
74e10 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
74e20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
74e30 2e 6d 69 64 53 65 6e 64 20 3d 20 74 68 69 73 2e .midSend = this.
74e40 5f 6d 69 64 53 69 64 65 53 70 6c 69 74 2e 6d 69 _midSideSplit.mi
74e50 64 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a d;.. /**.
74e60 09 09 09 20 2a 20 20 54 68 65 20 73 69 64 65 20 ... * The side
74e70 73 65 6e 64 2e 20 43 6f 6e 6e 65 63 74 20 74 6f send. Connect to
74e80 20 73 69 64 65 20 70 72 6f 63 65 73 73 69 6e 67 side processing
74e90 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 .... * @type {T
74ea0 6f 6e 65 2e 45 78 70 72 7d 0a 09 09 09 20 2a 20 one.Expr}.... *
74eb0 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
74ec0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 .. this.s
74ed0 69 64 65 53 65 6e 64 20 3d 20 74 68 69 73 2e 5f ideSend = this._
74ee0 6d 69 64 53 69 64 65 53 70 6c 69 74 2e 73 69 64 midSideSplit.sid
74ef0 65 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a e;.. /**.
74f00 09 09 09 20 2a 20 20 54 68 65 20 6d 69 64 20 72 ... * The mid r
74f10 65 74 75 72 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e eturn connection
74f20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 47 .... * @type {G
74f30 61 69 6e 4e 6f 64 65 7d 0a 09 09 09 20 2a 20 20 ainNode}.... *
74f40 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
74f50 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d 69 . this.mi
74f60 64 52 65 74 75 72 6e 20 3d 20 74 68 69 73 2e 5f dReturn = this._
74f70 6d 69 64 53 69 64 65 4d 65 72 67 65 2e 6d 69 64 midSideMerge.mid
74f80 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
74f90 09 09 20 2a 20 20 54 68 65 20 73 69 64 65 20 72 .. * The side r
74fa0 65 74 75 72 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e eturn connection
74fb0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 47 .... * @type {G
74fc0 61 69 6e 4e 6f 64 65 7d 0a 09 09 09 20 2a 20 20 ainNode}.... *
74fd0 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
74fe0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 69 . this.si
74ff0 64 65 52 65 74 75 72 6e 20 3d 20 74 68 69 73 2e deReturn = this.
75000 5f 6d 69 64 53 69 64 65 4d 65 72 67 65 2e 73 69 _midSideMerge.si
75010 64 65 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 74 de;.. //t
75020 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 09 he connections..
75030 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 66 66 this.eff
75040 65 63 74 53 65 6e 64 2e 63 6f 6e 6e 65 63 74 28 ectSend.connect(
75050 74 68 69 73 2e 5f 6d 69 64 53 69 64 65 53 70 6c this._midSideSpl
75060 69 74 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 it);.. th
75070 69 73 2e 5f 6d 69 64 53 69 64 65 4d 65 72 67 65 is._midSideMerge
75080 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 65 66 .connect(this.ef
75090 66 65 63 74 52 65 74 75 72 6e 29 3b 0a 09 20 20 fectReturn);..
750a0 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 };.. Tone.e
750b0 78 74 65 6e 64 28 54 6f 6e 65 2e 4d 69 64 53 69 xtend(Tone.MidSi
750c0 64 65 45 66 66 65 63 74 2c 20 54 6f 6e 65 2e 45 deEffect, Tone.E
750d0 66 66 65 63 74 29 3b 0a 09 20 20 20 20 2f 2a 2a ffect);.. /**
750e0 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e ... * Clean up.
750f0 20 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 ... * @returns
75100 20 7b 54 6f 6e 65 2e 4d 69 64 53 69 64 65 45 66 {Tone.MidSideEf
75110 66 65 63 74 7d 20 74 68 69 73 0a 09 09 20 2a 2f fect} this... */
75120 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 69 64 53 69 .. Tone.MidSi
75130 64 65 45 66 66 65 63 74 2e 70 72 6f 74 6f 74 79 deEffect.prototy
75140 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e pe.dispose = fun
75150 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
75160 20 20 20 20 54 6f 6e 65 2e 45 66 66 65 63 74 2e Tone.Effect.
75170 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
75180 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 e.call(this);..
75190 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 69 64 this._mid
751a0 53 69 64 65 53 70 6c 69 74 2e 64 69 73 70 6f 73 SideSplit.dispos
751b0 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
751c0 69 73 2e 5f 6d 69 64 53 69 64 65 53 70 6c 69 74 is._midSideSplit
751d0 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
751e0 20 20 74 68 69 73 2e 5f 6d 69 64 53 69 64 65 4d this._midSideM
751f0 65 72 67 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a erge.dispose();.
75200 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d . this._m
75210 69 64 53 69 64 65 4d 65 72 67 65 20 3d 20 6e 75 idSideMerge = nu
75220 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
75230 73 2e 6d 69 64 53 65 6e 64 20 3d 20 6e 75 6c 6c s.midSend = null
75240 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
75250 73 69 64 65 53 65 6e 64 20 3d 20 6e 75 6c 6c 3b sideSend = null;
75260 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d .. this.m
75270 69 64 52 65 74 75 72 6e 20 3d 20 6e 75 6c 6c 3b idReturn = null;
75280 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 .. this.s
75290 69 64 65 52 65 74 75 72 6e 20 3d 20 6e 75 6c 6c ideReturn = null
752a0 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
752b0 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
752c0 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 . return Tone
752d0 2e 4d 69 64 53 69 64 65 45 66 66 65 63 74 3b 0a .MidSideEffect;.
752e0 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e .});..Module(fun
752f0 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 ction (Tone) {..
75300 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
75310 20 2a 20 20 40 63 6c 61 73 73 20 54 6f 6e 65 2e * @class Tone.
75320 50 68 61 73 65 72 20 69 73 20 61 20 70 68 61 73 Phaser is a phas
75330 65 72 20 65 66 66 65 63 74 2e 20 50 68 61 73 65 er effect. Phase
75340 72 73 20 77 6f 72 6b 20 62 79 20 63 68 61 6e 67 rs work by chang
75350 69 6e 67 20 74 68 65 20 70 68 61 73 65 0a 09 09 ing the phase...
75360 20 2a 20 20 20 20 20 20 20 20 20 6f 66 20 64 69 * of di
75370 66 66 65 72 65 6e 74 20 66 72 65 71 75 65 6e 63 fferent frequenc
75380 79 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 y components of
75390 61 6e 20 69 6e 63 6f 6d 69 6e 67 20 73 69 67 6e an incoming sign
753a0 61 6c 2e 20 52 65 61 64 20 6d 6f 72 65 20 6f 6e al. Read more on
753b0 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 5b ... * [
753c0 57 69 6b 69 70 65 64 69 61 5d 28 68 74 74 70 73 Wikipedia](https
753d0 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e ://en.wikipedia.
753e0 6f 72 67 2f 77 69 6b 69 2f 50 68 61 73 65 72 5f org/wiki/Phaser_
753f0 28 65 66 66 65 63 74 29 29 2e 20 0a 09 09 20 2a (effect)). ... *
75400 20 20 20 20 20 20 20 20 20 49 6e 73 70 69 72 61 Inspira
75410 74 69 6f 6e 20 66 6f 72 20 74 68 69 73 20 70 68 tion for this ph
75420 61 73 65 72 20 63 6f 6d 65 73 20 66 72 6f 6d 20 aser comes from
75430 5b 54 75 6e 61 2e 6a 73 5d 28 68 74 74 70 73 3a [Tuna.js](https:
75440 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 44 69 6e //github.com/Din
75450 61 68 6d 6f 65 2f 74 75 6e 61 2f 29 2e 0a 09 09 ahmoe/tuna/)....
75460 20 2a 0a 09 09 20 2a 09 40 65 78 74 65 6e 64 73 *... *.@extends
75470 20 7b 54 6f 6e 65 2e 53 74 65 72 65 6f 45 66 66 {Tone.StereoEff
75480 65 63 74 7d 0a 09 09 20 2a 09 40 63 6f 6e 73 74 ect}... *.@const
75490 72 75 63 74 6f 72 0a 09 09 20 2a 09 40 70 61 72 ructor... *.@par
754a0 61 6d 20 7b 46 72 65 71 75 65 6e 63 79 7c 4f 62 am {Frequency|Ob
754b0 6a 65 63 74 7d 20 5b 66 72 65 71 75 65 6e 63 79 ject} [frequency
754c0 5d 20 54 68 65 20 73 70 65 65 64 20 6f 66 20 74 ] The speed of t
754d0 68 65 20 70 68 61 73 69 6e 67 2e 20 0a 09 09 20 he phasing. ...
754e0 2a 09 40 70 61 72 61 6d 20 7b 6e 75 6d 62 65 72 *.@param {number
754f0 7d 20 5b 6f 63 74 61 76 65 73 5d 20 54 68 65 20 } [octaves] The
75500 6f 63 74 61 76 65 73 20 6f 66 20 74 68 65 20 65 octaves of the e
75510 66 66 65 63 74 2e 20 0a 09 09 20 2a 09 40 70 61 ffect. ... *.@pa
75520 72 61 6d 20 7b 46 72 65 71 75 65 6e 63 79 7d 20 ram {Frequency}
75530 5b 62 61 73 65 46 72 65 71 75 65 6e 63 79 5d 20 [baseFrequency]
75540 54 68 65 20 62 61 73 65 20 66 72 65 71 75 65 6e The base frequen
75550 63 79 20 6f 66 20 74 68 65 20 66 69 6c 74 65 72 cy of the filter
75560 73 2e 20 0a 09 09 20 2a 09 40 65 78 61 6d 70 6c s. ... *.@exampl
75570 65 0a 09 09 20 2a 20 76 61 72 20 70 68 61 73 65 e... * var phase
75580 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 50 68 61 r = new Tone.Pha
75590 73 65 72 28 7b 0a 09 09 20 2a 20 09 22 66 72 65 ser({... * ."fre
755a0 71 75 65 6e 63 79 22 20 3a 20 31 35 2c 20 0a 09 quency" : 15, ..
755b0 09 20 2a 20 09 22 6f 63 74 61 76 65 73 22 20 3a . * ."octaves" :
755c0 20 35 2c 20 0a 09 09 20 2a 20 09 22 62 61 73 65 5, ... * ."base
755d0 46 72 65 71 75 65 6e 63 79 22 20 3a 20 31 30 30 Frequency" : 100
755e0 30 0a 09 09 20 2a 20 7d 29 2e 74 6f 4d 61 73 74 0... * }).toMast
755f0 65 72 28 29 3b 0a 09 09 20 2a 20 76 61 72 20 73 er();... * var s
75600 79 6e 74 68 20 3d 20 6e 65 77 20 54 6f 6e 65 2e ynth = new Tone.
75610 46 4d 53 79 6e 74 68 28 29 2e 63 6f 6e 6e 65 63 FMSynth().connec
75620 74 28 70 68 61 73 65 72 29 3b 0a 09 09 20 2a 20 t(phaser);... *
75630 73 79 6e 74 68 2e 74 72 69 67 67 65 72 41 74 74 synth.triggerAtt
75640 61 63 6b 52 65 6c 65 61 73 65 28 22 45 33 22 2c ackRelease("E3",
75650 20 22 32 6e 22 29 3b 0a 09 09 20 2a 2f 0a 09 20 "2n");... */..
75660 20 20 20 54 6f 6e 65 2e 50 68 61 73 65 72 20 3d Tone.Phaser =
75670 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
75680 20 20 20 20 20 20 20 20 2f 2f 73 65 74 20 74 68 //set th
75690 65 20 64 65 66 61 75 6c 74 73 0a 09 20 20 20 20 e defaults..
756a0 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 var options
756b0 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 = this.optionsOb
756c0 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 ject(arguments,
756d0 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 [.. '
756e0 66 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 frequency',..
756f0 20 20 20 20 20 20 20 20 20 27 6f 63 74 61 76 65 'octave
75700 73 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 s',..
75710 20 27 62 61 73 65 46 72 65 71 75 65 6e 63 79 27 'baseFrequency'
75720 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e .. ], Ton
75730 65 2e 50 68 61 73 65 72 2e 64 65 66 61 75 6c 74 e.Phaser.default
75740 73 29 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e s);.. Ton
75750 65 2e 53 74 65 72 65 6f 45 66 66 65 63 74 2e 63 e.StereoEffect.c
75760 61 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 6f 6e all(this, option
75770 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a s);.. /**
75780 0a 09 09 09 20 2a 20 20 74 68 65 20 6c 66 6f 20 .... * the lfo
75790 77 68 69 63 68 20 63 6f 6e 74 72 6f 6c 73 20 74 which controls t
757a0 68 65 20 66 72 65 71 75 65 6e 63 79 20 6f 6e 20 he frequency on
757b0 74 68 65 20 6c 65 66 74 20 73 69 64 65 0a 09 09 the left side...
757c0 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 . * @type {Tone
757d0 2e 4c 46 4f 7d 0a 09 09 09 20 2a 20 20 40 70 72 .LFO}.... * @pr
757e0 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 ivate.... */..
757f0 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 4c this._lfoL
75800 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4c 46 4f 28 = new Tone.LFO(
75810 6f 70 74 69 6f 6e 73 2e 66 72 65 71 75 65 6e 63 options.frequenc
75820 79 2c 20 30 2c 20 31 29 3b 0a 09 20 20 20 20 20 y, 0, 1);..
75830 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 /**.... * th
75840 65 20 6c 66 6f 20 77 68 69 63 68 20 63 6f 6e 74 e lfo which cont
75850 72 6f 6c 73 20 74 68 65 20 66 72 65 71 75 65 6e rols the frequen
75860 63 79 20 6f 6e 20 74 68 65 20 72 69 67 68 74 20 cy on the right
75870 73 69 64 65 0a 09 09 09 20 2a 20 20 40 74 79 70 side.... * @typ
75880 65 20 7b 54 6f 6e 65 2e 4c 46 4f 7d 0a 09 09 09 e {Tone.LFO}....
75890 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
758a0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
758b0 73 2e 5f 6c 66 6f 52 20 3d 20 6e 65 77 20 54 6f s._lfoR = new To
758c0 6e 65 2e 4c 46 4f 28 6f 70 74 69 6f 6e 73 2e 66 ne.LFO(options.f
758d0 72 65 71 75 65 6e 63 79 2c 20 30 2c 20 31 29 3b requency, 0, 1);
758e0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
758f0 6c 66 6f 52 2e 70 68 61 73 65 20 3d 20 31 38 30 lfoR.phase = 180
75900 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
75910 09 09 20 2a 20 20 74 68 65 20 62 61 73 65 20 6d .. * the base m
75920 6f 64 75 6c 61 74 69 6f 6e 20 66 72 65 71 75 65 odulation freque
75930 6e 63 79 0a 09 09 09 20 2a 20 20 40 74 79 70 65 ncy.... * @type
75940 20 7b 6e 75 6d 62 65 72 7d 0a 09 09 09 20 2a 20 {number}.... *
75950 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
75960 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
75970 62 61 73 65 46 72 65 71 75 65 6e 63 79 20 3d 20 baseFrequency =
75980 6f 70 74 69 6f 6e 73 2e 62 61 73 65 46 72 65 71 options.baseFreq
75990 75 65 6e 63 79 3b 0a 09 20 20 20 20 20 20 20 20 uency;..
759a0 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 6f /**.... * the o
759b0 63 74 61 76 65 73 20 6f 66 20 74 68 65 20 70 68 ctaves of the ph
759c0 61 73 69 6e 67 0a 09 09 09 20 2a 20 20 40 74 79 asing.... * @ty
759d0 70 65 20 7b 6e 75 6d 62 65 72 7d 0a 09 09 09 20 pe {number}....
759e0 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
759f0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
75a00 2e 5f 6f 63 74 61 76 65 73 20 3d 20 6f 70 74 69 ._octaves = opti
75a10 6f 6e 73 2e 6f 63 74 61 76 65 73 3b 0a 09 20 20 ons.octaves;..
75a20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
75a30 20 54 68 65 20 71 75 61 6c 69 74 79 20 66 61 63 The quality fac
75a40 74 6f 72 20 6f 66 20 74 68 65 20 66 69 6c 74 65 tor of the filte
75a50 72 73 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 rs.... * @type
75a60 7b 50 6f 73 69 74 69 76 65 7d 0a 09 09 09 20 2a {Positive}.... *
75a70 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f @signal.... */
75a80 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 51 .. this.Q
75a90 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e = new Tone.Sign
75aa0 61 6c 28 6f 70 74 69 6f 6e 73 2e 51 2c 20 54 6f al(options.Q, To
75ab0 6e 65 2e 54 79 70 65 2e 50 6f 73 69 74 69 76 65 ne.Type.Positive
75ac0 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
75ad0 09 09 09 20 2a 20 20 74 68 65 20 61 72 72 61 79 ... * the array
75ae0 20 6f 66 20 66 69 6c 74 65 72 73 20 66 6f 72 20 of filters for
75af0 74 68 65 20 6c 65 66 74 20 73 69 64 65 0a 09 09 the left side...
75b00 09 20 2a 20 20 40 74 79 70 65 20 7b 41 72 72 61 . * @type {Arra
75b10 79 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 y}.... * @priva
75b20 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
75b30 20 20 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 73 this._filters
75b40 4c 20 3d 20 74 68 69 73 2e 5f 6d 61 6b 65 46 69 L = this._makeFi
75b50 6c 74 65 72 73 28 6f 70 74 69 6f 6e 73 2e 73 74 lters(options.st
75b60 61 67 65 73 2c 20 74 68 69 73 2e 5f 6c 66 6f 4c ages, this._lfoL
75b70 2c 20 74 68 69 73 2e 51 29 3b 0a 09 20 20 20 20 , this.Q);..
75b80 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 /**.... * t
75b90 68 65 20 61 72 72 61 79 20 6f 66 20 66 69 6c 74 he array of filt
75ba0 65 72 73 20 66 6f 72 20 74 68 65 20 6c 65 66 74 ers for the left
75bb0 20 73 69 64 65 0a 09 09 09 20 2a 20 20 40 74 79 side.... * @ty
75bc0 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 09 20 2a pe {Array}.... *
75bd0 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
75be0 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
75bf0 5f 66 69 6c 74 65 72 73 52 20 3d 20 74 68 69 73 _filtersR = this
75c00 2e 5f 6d 61 6b 65 46 69 6c 74 65 72 73 28 6f 70 ._makeFilters(op
75c10 74 69 6f 6e 73 2e 73 74 61 67 65 73 2c 20 74 68 tions.stages, th
75c20 69 73 2e 5f 6c 66 6f 52 2c 20 74 68 69 73 2e 51 is._lfoR, this.Q
75c30 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
75c40 09 09 09 20 2a 20 74 68 65 20 66 72 65 71 75 65 ... * the freque
75c50 6e 63 79 20 6f 66 20 74 68 65 20 65 66 66 65 63 ncy of the effec
75c60 74 0a 09 09 09 20 2a 20 40 74 79 70 65 20 7b 54 t.... * @type {T
75c70 6f 6e 65 2e 53 69 67 6e 61 6c 7d 0a 09 09 09 20 one.Signal}....
75c80 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
75c90 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 74 68 69 .frequency = thi
75ca0 73 2e 5f 6c 66 6f 4c 2e 66 72 65 71 75 65 6e 63 s._lfoL.frequenc
75cb0 79 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 y;.. this
75cc0 2e 66 72 65 71 75 65 6e 63 79 2e 76 61 6c 75 65 .frequency.value
75cd0 20 3d 20 6f 70 74 69 6f 6e 73 2e 66 72 65 71 75 = options.frequ
75ce0 65 6e 63 79 3b 0a 09 20 20 20 20 20 20 20 20 2f ency;.. /
75cf0 2f 63 6f 6e 6e 65 63 74 20 74 68 65 6d 20 75 70 /connect them up
75d00 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 .. this.e
75d10 66 66 65 63 74 53 65 6e 64 4c 2e 63 6f 6e 6e 65 ffectSendL.conne
75d20 63 74 28 74 68 69 73 2e 5f 66 69 6c 74 65 72 73 ct(this._filters
75d30 4c 5b 30 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 L[0]);..
75d40 74 68 69 73 2e 65 66 66 65 63 74 53 65 6e 64 52 this.effectSendR
75d50 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 66 .connect(this._f
75d60 69 6c 74 65 72 73 52 5b 30 5d 29 3b 0a 09 20 20 iltersR[0]);..
75d70 20 20 20 20 20 20 74 68 69 73 2e 5f 66 69 6c 74 this._filt
75d80 65 72 73 4c 5b 6f 70 74 69 6f 6e 73 2e 73 74 61 ersL[options.sta
75d90 67 65 73 20 2d 20 31 5d 2e 63 6f 6e 6e 65 63 74 ges - 1].connect
75da0 28 74 68 69 73 2e 65 66 66 65 63 74 52 65 74 75 (this.effectRetu
75db0 72 6e 4c 29 3b 0a 09 20 20 20 20 20 20 20 20 74 rnL);.. t
75dc0 68 69 73 2e 5f 66 69 6c 74 65 72 73 52 5b 6f 70 his._filtersR[op
75dd0 74 69 6f 6e 73 2e 73 74 61 67 65 73 20 2d 20 31 tions.stages - 1
75de0 5d 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 65 ].connect(this.e
75df0 66 66 65 63 74 52 65 74 75 72 6e 52 29 3b 0a 09 ffectReturnR);..
75e00 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 74 72 6f //contro
75e10 6c 20 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 l the frequency
75e20 77 69 74 68 20 6f 6e 65 20 4c 46 4f 0a 09 20 20 with one LFO..
75e30 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 4c this._lfoL
75e40 2e 66 72 65 71 75 65 6e 63 79 2e 63 6f 6e 6e 65 .frequency.conne
75e50 63 74 28 74 68 69 73 2e 5f 6c 66 6f 52 2e 66 72 ct(this._lfoR.fr
75e60 65 71 75 65 6e 63 79 29 3b 0a 09 20 20 20 20 20 equency);..
75e70 20 20 20 2f 2f 73 65 74 20 74 68 65 20 6f 70 74 //set the opt
75e80 69 6f 6e 73 0a 09 20 20 20 20 20 20 20 20 74 68 ions.. th
75e90 69 73 2e 62 61 73 65 46 72 65 71 75 65 6e 63 79 is.baseFrequency
75ea0 20 3d 20 6f 70 74 69 6f 6e 73 2e 62 61 73 65 46 = options.baseF
75eb0 72 65 71 75 65 6e 63 79 3b 0a 09 20 20 20 20 20 requency;..
75ec0 20 20 20 74 68 69 73 2e 6f 63 74 61 76 65 73 20 this.octaves
75ed0 3d 20 6f 70 74 69 6f 6e 73 2e 6f 63 74 61 76 65 = options.octave
75ee0 73 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 73 74 s;.. //st
75ef0 61 72 74 20 74 68 65 20 6c 66 6f 0a 09 20 20 20 art the lfo..
75f00 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 4c 2e this._lfoL.
75f10 73 74 61 72 74 28 29 3b 0a 09 20 20 20 20 20 20 start();..
75f20 20 20 74 68 69 73 2e 5f 6c 66 6f 52 2e 73 74 61 this._lfoR.sta
75f30 72 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 rt();.. t
75f40 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 5b 0a his._readOnly([.
75f50 09 20 20 20 20 20 20 20 20 20 20 20 20 27 66 72 . 'fr
75f60 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 equency',..
75f70 20 20 20 20 20 20 20 27 51 27 0a 09 20 20 20 20 'Q'..
75f80 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a ]);.. };.
75f90 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 . Tone.extend
75fa0 28 54 6f 6e 65 2e 50 68 61 73 65 72 2c 20 54 6f (Tone.Phaser, To
75fb0 6e 65 2e 53 74 65 72 65 6f 45 66 66 65 63 74 29 ne.StereoEffect)
75fc0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
75fd0 20 64 65 66 61 75 6c 74 73 0a 09 09 20 2a 20 20 defaults... *
75fe0 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 74 @static... * @t
75ff0 79 70 65 20 7b 6f 62 6a 65 63 74 7d 0a 09 09 20 ype {object}...
76000 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 68 61 */.. Tone.Pha
76010 73 65 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b ser.defaults = {
76020 0a 09 20 20 20 20 20 20 20 20 27 66 72 65 71 75 .. 'frequ
76030 65 6e 63 79 27 3a 20 30 2e 35 2c 0a 09 20 20 20 ency': 0.5,..
76040 20 20 20 20 20 27 6f 63 74 61 76 65 73 27 3a 20 'octaves':
76050 33 2c 0a 09 20 20 20 20 20 20 20 20 27 73 74 61 3,.. 'sta
76060 67 65 73 27 3a 20 31 30 2c 0a 09 20 20 20 20 20 ges': 10,..
76070 20 20 20 27 51 27 3a 20 31 30 2c 0a 09 20 20 20 'Q': 10,..
76080 20 20 20 20 20 27 62 61 73 65 46 72 65 71 75 65 'baseFreque
76090 6e 63 79 27 3a 20 33 35 30 0a 09 20 20 20 20 7d ncy': 350.. }
760a0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
760b0 20 40 70 61 72 61 6d 20 7b 6e 75 6d 62 65 72 7d @param {number}
760c0 20 73 74 61 67 65 73 0a 09 09 20 2a 20 20 40 72 stages... * @r
760d0 65 74 75 72 6e 73 20 7b 41 72 72 61 79 7d 20 74 eturns {Array} t
760e0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 66 69 6c he number of fil
760f0 74 65 72 73 20 61 6c 6c 20 63 6f 6e 6e 65 63 74 ters all connect
76100 65 64 20 74 6f 67 65 74 68 65 72 0a 09 09 20 2a ed together... *
76110 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f @private... */
76120 0a 09 20 20 20 20 54 6f 6e 65 2e 50 68 61 73 65 .. Tone.Phase
76130 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 6d 61 6b r.prototype._mak
76140 65 46 69 6c 74 65 72 73 20 3d 20 66 75 6e 63 74 eFilters = funct
76150 69 6f 6e 20 28 73 74 61 67 65 73 2c 20 63 6f 6e ion (stages, con
76160 6e 65 63 74 54 6f 46 72 65 71 2c 20 51 29 20 7b nectToFreq, Q) {
76170 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 66 69 .. var fi
76180 6c 74 65 72 73 20 3d 20 6e 65 77 20 41 72 72 61 lters = new Arra
76190 79 28 73 74 61 67 65 73 29 3b 0a 09 20 20 20 20 y(stages);..
761a0 20 20 20 20 2f 2f 6d 61 6b 65 20 61 6c 6c 20 74 //make all t
761b0 68 65 20 66 69 6c 74 65 72 73 0a 09 20 20 20 20 he filters..
761c0 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d for (var i =
761d0 20 30 3b 20 69 20 3c 20 73 74 61 67 65 73 3b 20 0; i < stages;
761e0 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 i++) {..
761f0 20 20 20 20 76 61 72 20 66 69 6c 74 65 72 20 3d var filter =
76200 20 74 68 69 73 2e 63 6f 6e 74 65 78 74 2e 63 72 this.context.cr
76210 65 61 74 65 42 69 71 75 61 64 46 69 6c 74 65 72 eateBiquadFilter
76220 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ();..
76230 20 66 69 6c 74 65 72 2e 74 79 70 65 20 3d 20 27 filter.type = '
76240 61 6c 6c 70 61 73 73 27 3b 0a 09 20 20 20 20 20 allpass';..
76250 20 20 20 20 20 20 20 51 2e 63 6f 6e 6e 65 63 74 Q.connect
76260 28 66 69 6c 74 65 72 2e 51 29 3b 0a 09 20 20 20 (filter.Q);..
76270 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 connect
76280 54 6f 46 72 65 71 2e 63 6f 6e 6e 65 63 74 28 66 ToFreq.connect(f
76290 69 6c 74 65 72 2e 66 72 65 71 75 65 6e 63 79 29 ilter.frequency)
762a0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 66 ;.. f
762b0 69 6c 74 65 72 73 5b 69 5d 20 3d 20 66 69 6c 74 ilters[i] = filt
762c0 65 72 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 er;.. }..
762d0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e this.con
762e0 6e 65 63 74 53 65 72 69 65 73 2e 61 70 70 6c 79 nectSeries.apply
762f0 28 74 68 69 73 2c 20 66 69 6c 74 65 72 73 29 3b (this, filters);
76300 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
76310 20 66 69 6c 74 65 72 73 3b 0a 09 20 20 20 20 7d filters;.. }
76320 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
76330 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6f 63 The number of oc
76340 74 61 76 65 73 20 74 68 65 20 70 68 61 73 65 20 taves the phase
76350 67 6f 65 73 20 61 62 6f 76 65 0a 09 09 20 2a 20 goes above... *
76360 74 68 65 20 62 61 73 65 46 72 65 71 75 65 6e 63 the baseFrequenc
76370 79 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 y... * @memberOf
76380 20 54 6f 6e 65 2e 50 68 61 73 65 72 23 0a 09 09 Tone.Phaser#...
76390 20 2a 20 40 74 79 70 65 20 7b 50 6f 73 69 74 69 * @type {Positi
763a0 76 65 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6f ve}... * @name o
763b0 63 74 61 76 65 73 0a 09 09 20 2a 2f 0a 09 20 20 ctaves... */..
763c0 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
763d0 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 68 61 roperty(Tone.Pha
763e0 73 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 ser.prototype, '
763f0 6f 63 74 61 76 65 73 27 2c 20 7b 0a 09 20 20 20 octaves', {..
76400 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
76410 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
76420 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
76430 2e 5f 6f 63 74 61 76 65 73 3b 0a 09 20 20 20 20 ._octaves;..
76440 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
76450 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6f set: function (o
76460 63 74 61 76 65 73 29 20 7b 0a 09 20 20 20 20 20 ctaves) {..
76470 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 63 74 this._oct
76480 61 76 65 73 20 3d 20 6f 63 74 61 76 65 73 3b 0a aves = octaves;.
76490 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
764a0 20 6d 61 78 20 3d 20 74 68 69 73 2e 5f 62 61 73 max = this._bas
764b0 65 46 72 65 71 75 65 6e 63 79 20 2a 20 4d 61 74 eFrequency * Mat
764c0 68 2e 70 6f 77 28 32 2c 20 6f 63 74 61 76 65 73 h.pow(2, octaves
764d0 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
764e0 74 68 69 73 2e 5f 6c 66 6f 4c 2e 6d 61 78 20 3d this._lfoL.max =
764f0 20 6d 61 78 3b 0a 09 20 20 20 20 20 20 20 20 20 max;..
76500 20 20 20 74 68 69 73 2e 5f 6c 66 6f 52 2e 6d 61 this._lfoR.ma
76510 78 20 3d 20 6d 61 78 3b 0a 09 20 20 20 20 20 20 x = max;..
76520 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 }.. });..
76530 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 74 /**... * The t
76540 68 65 20 62 61 73 65 20 66 72 65 71 75 65 6e 63 he base frequenc
76550 79 20 6f 66 20 74 68 65 20 66 69 6c 74 65 72 73 y of the filters
76560 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f . ... * @memberO
76570 66 20 54 6f 6e 65 2e 50 68 61 73 65 72 23 0a 09 f Tone.Phaser#..
76580 09 20 2a 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 . * @type {numbe
76590 72 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 62 61 r}... * @name ba
765a0 73 65 46 72 65 71 75 65 6e 63 79 0a 09 09 20 2a seFrequency... *
765b0 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
765c0 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
765d0 65 2e 50 68 61 73 65 72 2e 70 72 6f 74 6f 74 79 e.Phaser.prototy
765e0 70 65 2c 20 27 62 61 73 65 46 72 65 71 75 65 6e pe, 'baseFrequen
765f0 63 79 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 cy', {..
76600 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 get: function ()
76610 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
76620 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 62 61 73 return this._bas
76630 65 46 72 65 71 75 65 6e 63 79 3b 0a 09 20 20 20 eFrequency;..
76640 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
76650 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 set: function (
76660 66 72 65 71 29 20 7b 0a 09 20 20 20 20 20 20 20 freq) {..
76670 20 20 20 20 20 74 68 69 73 2e 5f 62 61 73 65 46 this._baseF
76680 72 65 71 75 65 6e 63 79 20 3d 20 66 72 65 71 3b requency = freq;
76690 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
766a0 69 73 2e 5f 6c 66 6f 4c 2e 6d 69 6e 20 3d 20 66 is._lfoL.min = f
766b0 72 65 71 3b 0a 09 20 20 20 20 20 20 20 20 20 20 req;..
766c0 20 20 74 68 69 73 2e 5f 6c 66 6f 52 2e 6d 69 6e this._lfoR.min
766d0 20 3d 20 66 72 65 71 3b 0a 09 20 20 20 20 20 20 = freq;..
766e0 20 20 20 20 20 20 74 68 69 73 2e 6f 63 74 61 76 this.octav
766f0 65 73 20 3d 20 74 68 69 73 2e 5f 6f 63 74 61 76 es = this._octav
76700 65 73 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 es;.. }..
76710 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
76720 0a 09 09 20 2a 20 20 63 6c 65 61 6e 20 75 70 0a ... * clean up.
76730 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
76740 54 6f 6e 65 2e 50 68 61 73 65 72 7d 20 74 68 69 Tone.Phaser} thi
76750 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
76760 65 2e 50 68 61 73 65 72 2e 70 72 6f 74 6f 74 79 e.Phaser.prototy
76770 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e pe.dispose = fun
76780 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
76790 20 20 20 20 54 6f 6e 65 2e 53 74 65 72 65 6f 45 Tone.StereoE
767a0 66 66 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e ffect.prototype.
767b0 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 dispose.call(thi
767c0 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 s);.. thi
767d0 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 s._writable([..
767e0 20 20 20 20 20 20 20 20 20 20 20 27 66 72 65 71 'freq
767f0 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 uency',..
76800 20 20 20 20 20 27 51 27 0a 09 20 20 20 20 20 20 'Q'..
76810 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 ]);.. t
76820 68 69 73 2e 51 2e 64 69 73 70 6f 73 65 28 29 3b his.Q.dispose();
76830 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 51 .. this.Q
76840 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
76850 20 20 74 68 69 73 2e 5f 6c 66 6f 4c 2e 64 69 73 this._lfoL.dis
76860 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
76870 20 74 68 69 73 2e 5f 6c 66 6f 4c 20 3d 20 6e 75 this._lfoL = nu
76880 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
76890 73 2e 5f 6c 66 6f 52 2e 64 69 73 70 6f 73 65 28 s._lfoR.dispose(
768a0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
768b0 2e 5f 6c 66 6f 52 20 3d 20 6e 75 6c 6c 3b 0a 09 ._lfoR = null;..
768c0 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 for (var
768d0 20 69 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73 i = 0; i < this
768e0 2e 5f 66 69 6c 74 65 72 73 4c 2e 6c 65 6e 67 74 ._filtersL.lengt
768f0 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 h; i++) {..
76900 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 69 6c this._fil
76910 74 65 72 73 4c 5b 69 5d 2e 64 69 73 63 6f 6e 6e tersL[i].disconn
76920 65 63 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ect();..
76930 20 20 20 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 this._filter
76940 73 4c 5b 69 5d 20 3d 20 6e 75 6c 6c 3b 0a 09 20 sL[i] = null;..
76950 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
76960 20 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 73 4c this._filtersL
76970 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
76980 20 20 66 6f 72 20 28 76 61 72 20 6a 20 3d 20 30 for (var j = 0
76990 3b 20 6a 20 3c 20 74 68 69 73 2e 5f 66 69 6c 74 ; j < this._filt
769a0 65 72 73 52 2e 6c 65 6e 67 74 68 3b 20 6a 2b 2b ersR.length; j++
769b0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
769c0 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 73 52 5b this._filtersR[
769d0 6a 5d 2e 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b j].disconnect();
769e0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
769f0 69 73 2e 5f 66 69 6c 74 65 72 73 52 5b 6a 5d 20 is._filtersR[j]
76a00 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
76a10 20 7d 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 }.. this
76a20 2e 5f 66 69 6c 74 65 72 73 52 20 3d 20 6e 75 6c ._filtersR = nul
76a30 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
76a40 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 6e 75 6c .frequency = nul
76a50 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 l;.. retu
76a60 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
76a70 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e .. return Ton
76a80 65 2e 50 68 61 73 65 72 3b 0a 09 7d 29 3b 0a 09 e.Phaser;..});..
76a90 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 Module(function
76aa0 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 (Tone) {.. ..
76ab0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 /**... * @c
76ac0 6c 61 73 73 20 20 54 6f 6e 65 2e 50 69 6e 67 50 lass Tone.PingP
76ad0 6f 6e 67 44 65 6c 61 79 20 69 73 20 61 20 66 65 ongDelay is a fe
76ae0 65 64 62 61 63 6b 20 64 65 6c 61 79 20 65 66 66 edback delay eff
76af0 65 63 74 20 77 68 65 72 65 20 74 68 65 20 65 63 ect where the ec
76b00 68 6f 20 69 73 20 68 65 61 72 64 0a 09 09 20 2a ho is heard... *
76b10 20 20 20 20 20 20 20 20 20 20 66 69 72 73 74 20 first
76b20 69 6e 20 6f 6e 65 20 63 68 61 6e 6e 65 6c 20 61 in one channel a
76b30 6e 64 20 6e 65 78 74 20 69 6e 20 74 68 65 20 6f nd next in the o
76b40 70 70 6f 73 69 74 65 20 63 68 61 6e 6e 65 6c 2e pposite channel.
76b50 20 49 6e 20 61 20 73 74 65 72 65 6f 0a 09 09 20 In a stereo...
76b60 2a 20 20 20 20 20 20 20 20 20 20 73 79 73 74 65 * syste
76b70 6d 20 74 68 65 73 65 20 61 72 65 20 74 68 65 20 m these are the
76b80 72 69 67 68 74 20 61 6e 64 20 6c 65 66 74 20 63 right and left c
76b90 68 61 6e 6e 65 6c 73 2e 0a 09 09 20 2a 20 20 20 hannels.... *
76ba0 20 20 20 20 20 20 20 50 69 6e 67 50 6f 6e 67 44 PingPongD
76bb0 65 6c 61 79 20 69 6e 20 6d 6f 72 65 20 73 69 6d elay in more sim
76bc0 70 6c 69 66 69 65 64 20 74 65 72 6d 73 20 69 73 plified terms is
76bd0 20 74 77 6f 20 54 6f 6e 65 2e 46 65 65 64 62 61 two Tone.Feedba
76be0 63 6b 44 65 6c 61 79 73 20 0a 09 09 20 2a 20 20 ckDelays ... *
76bf0 20 20 20 20 20 20 20 20 77 69 74 68 20 69 6e 64 with ind
76c00 65 70 65 6e 64 65 6e 74 20 64 65 6c 61 79 20 76 ependent delay v
76c10 61 6c 75 65 73 2e 20 45 61 63 68 20 64 65 6c 61 alues. Each dela
76c20 79 20 69 73 20 72 6f 75 74 65 64 20 74 6f 20 6f y is routed to o
76c30 6e 65 20 63 68 61 6e 6e 65 6c 0a 09 09 20 2a 20 ne channel... *
76c40 20 20 20 20 20 20 20 20 20 28 6c 65 66 74 20 6f (left o
76c50 72 20 72 69 67 68 74 29 2c 20 61 6e 64 20 74 68 r right), and th
76c60 65 20 63 68 61 6e 6e 65 6c 20 74 72 69 67 67 65 e channel trigge
76c70 72 65 64 20 73 65 63 6f 6e 64 20 77 69 6c 6c 20 red second will
76c80 61 6c 77 61 79 73 20 0a 09 09 20 2a 20 20 20 20 always ... *
76c90 20 20 20 20 20 20 74 72 69 67 67 65 72 20 61 74 trigger at
76ca0 20 74 68 65 20 73 61 6d 65 20 69 6e 74 65 72 76 the same interv
76cb0 61 6c 20 61 66 74 65 72 20 74 68 65 20 66 69 72 al after the fir
76cc0 73 74 2e 0a 09 09 20 2a 0a 09 09 20 2a 20 09 40 st.... *... * .@
76cd0 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a constructor... *
76ce0 20 09 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 .@extends {Tone
76cf0 2e 53 74 65 72 65 6f 58 46 65 65 64 62 61 63 6b .StereoXFeedback
76d00 45 66 66 65 63 74 7d 0a 09 09 20 2a 20 20 40 70 Effect}... * @p
76d10 61 72 61 6d 20 7b 54 69 6d 65 7c 4f 62 6a 65 63 aram {Time|Objec
76d20 74 7d 20 5b 64 65 6c 61 79 54 69 6d 65 5d 20 54 t} [delayTime] T
76d30 68 65 20 64 65 6c 61 79 54 69 6d 65 20 62 65 74 he delayTime bet
76d40 77 65 65 6e 20 63 6f 6e 73 65 63 75 74 69 76 65 ween consecutive
76d50 20 65 63 68 6f 73 2e 0a 09 09 20 2a 20 20 40 70 echos.... * @p
76d60 61 72 61 6d 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 aram {NormalRang
76d70 65 3d 7d 20 66 65 65 64 62 61 63 6b 20 54 68 65 e=} feedback The
76d80 20 61 6d 6f 75 6e 74 20 6f 66 20 74 68 65 20 65 amount of the e
76d90 66 66 65 63 74 65 64 20 73 69 67 6e 61 6c 20 77 ffected signal w
76da0 68 69 63 68 20 0a 09 09 20 2a 20 20 20 20 20 20 hich ... *
76db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
76dc0 20 20 20 20 20 20 20 20 20 20 20 69 73 20 66 65 is fe
76dd0 64 20 62 61 63 6b 20 74 68 72 6f 75 67 68 20 74 d back through t
76de0 68 65 20 64 65 6c 61 79 2e 0a 09 09 20 2a 20 20 he delay.... *
76df0 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 76 61 @example... * va
76e00 72 20 70 69 6e 67 50 6f 6e 67 20 3d 20 6e 65 77 r pingPong = new
76e10 20 54 6f 6e 65 2e 50 69 6e 67 50 6f 6e 67 44 65 Tone.PingPongDe
76e20 6c 61 79 28 22 34 6e 22 2c 20 30 2e 32 29 2e 74 lay("4n", 0.2).t
76e30 6f 4d 61 73 74 65 72 28 29 3b 0a 09 09 20 2a 20 oMaster();... *
76e40 76 61 72 20 64 72 75 6d 20 3d 20 6e 65 77 20 54 var drum = new T
76e50 6f 6e 65 2e 44 72 75 6d 53 79 6e 74 68 28 29 2e one.DrumSynth().
76e60 63 6f 6e 6e 65 63 74 28 70 69 6e 67 50 6f 6e 67 connect(pingPong
76e70 29 3b 0a 09 09 20 2a 20 64 72 75 6d 2e 74 72 69 );... * drum.tri
76e80 67 67 65 72 41 74 74 61 63 6b 52 65 6c 65 61 73 ggerAttackReleas
76e90 65 28 22 43 34 22 2c 20 22 33 32 6e 22 29 3b 0a e("C4", "32n");.
76ea0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
76eb0 50 69 6e 67 50 6f 6e 67 44 65 6c 61 79 20 3d 20 PingPongDelay =
76ec0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
76ed0 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f var optio
76ee0 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e ns = this.option
76ef0 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 sObject(argument
76f00 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 s, [..
76f10 20 20 27 64 65 6c 61 79 54 69 6d 65 27 2c 0a 09 'delayTime',..
76f20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 65 65 'fee
76f30 64 62 61 63 6b 27 0a 09 20 20 20 20 20 20 20 20 dback'..
76f40 5d 2c 20 54 6f 6e 65 2e 50 69 6e 67 50 6f 6e 67 ], Tone.PingPong
76f50 44 65 6c 61 79 2e 64 65 66 61 75 6c 74 73 29 3b Delay.defaults);
76f60 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 53 .. Tone.S
76f70 74 65 72 65 6f 58 46 65 65 64 62 61 63 6b 45 66 tereoXFeedbackEf
76f80 66 65 63 74 2e 63 61 6c 6c 28 74 68 69 73 2c 20 fect.call(this,
76f90 6f 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 20 options);..
76fa0 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 /**.... * th
76fb0 65 20 64 65 6c 61 79 20 6e 6f 64 65 20 6f 6e 20 e delay node on
76fc0 74 68 65 20 6c 65 66 74 20 73 69 64 65 0a 09 09 the left side...
76fd0 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 . * @type {Tone
76fe0 2e 44 65 6c 61 79 7d 0a 09 09 09 20 2a 20 20 40 .Delay}.... * @
76ff0 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
77000 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 65 this._le
77010 66 74 44 65 6c 61 79 20 3d 20 6e 65 77 20 54 6f ftDelay = new To
77020 6e 65 2e 44 65 6c 61 79 28 30 2c 20 6f 70 74 69 ne.Delay(0, opti
77030 6f 6e 73 2e 6d 61 78 44 65 6c 61 79 54 69 6d 65 ons.maxDelayTime
77040 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
77050 09 09 09 20 2a 20 20 74 68 65 20 64 65 6c 61 79 ... * the delay
77060 20 6e 6f 64 65 20 6f 6e 20 74 68 65 20 72 69 67 node on the rig
77070 68 74 20 73 69 64 65 0a 09 09 09 20 2a 20 20 40 ht side.... * @
77080 74 79 70 65 20 7b 54 6f 6e 65 2e 44 65 6c 61 79 type {Tone.Delay
77090 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
770a0 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
770b0 20 20 74 68 69 73 2e 5f 72 69 67 68 74 44 65 6c this._rightDel
770c0 61 79 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 44 65 ay = new Tone.De
770d0 6c 61 79 28 30 2c 20 6f 70 74 69 6f 6e 73 2e 6d lay(0, options.m
770e0 61 78 44 65 6c 61 79 54 69 6d 65 29 3b 0a 09 20 axDelayTime);..
770f0 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
77100 20 20 74 68 65 20 70 72 65 64 65 6c 61 79 20 6f the predelay o
77110 6e 20 74 68 65 20 72 69 67 68 74 20 73 69 64 65 n the right side
77120 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 .... * @type {T
77130 6f 6e 65 2e 44 65 6c 61 79 7d 0a 09 09 09 20 2a one.Delay}.... *
77140 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
77150 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
77160 5f 72 69 67 68 74 50 72 65 44 65 6c 61 79 20 3d _rightPreDelay =
77170 20 6e 65 77 20 54 6f 6e 65 2e 44 65 6c 61 79 28 new Tone.Delay(
77180 30 2c 20 6f 70 74 69 6f 6e 73 2e 6d 61 78 44 65 0, options.maxDe
77190 6c 61 79 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 layTime);..
771a0 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 /**.... * th
771b0 65 20 64 65 6c 61 79 20 74 69 6d 65 20 73 69 67 e delay time sig
771c0 6e 61 6c 0a 09 09 09 20 2a 20 20 40 74 79 70 65 nal.... * @type
771d0 20 7b 54 69 6d 65 7d 0a 09 09 09 20 2a 20 20 40 {Time}.... * @
771e0 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 signal.... */..
771f0 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 6c 61 this.dela
77200 79 54 69 6d 65 20 3d 20 6e 65 77 20 54 6f 6e 65 yTime = new Tone
77210 2e 53 69 67 6e 61 6c 28 6f 70 74 69 6f 6e 73 2e .Signal(options.
77220 64 65 6c 61 79 54 69 6d 65 2c 20 54 6f 6e 65 2e delayTime, Tone.
77230 54 79 70 65 2e 54 69 6d 65 29 3b 0a 09 20 20 20 Type.Time);..
77240 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 63 74 20 69 //connect i
77250 74 20 75 70 0a 09 20 20 20 20 20 20 20 20 74 68 t up.. th
77260 69 73 2e 65 66 66 65 63 74 53 65 6e 64 4c 2e 63 is.effectSendL.c
77270 68 61 69 6e 28 74 68 69 73 2e 5f 6c 65 66 74 44 hain(this._leftD
77280 65 6c 61 79 2c 20 74 68 69 73 2e 65 66 66 65 63 elay, this.effec
77290 74 52 65 74 75 72 6e 4c 29 3b 0a 09 20 20 20 20 tReturnL);..
772a0 20 20 20 20 74 68 69 73 2e 65 66 66 65 63 74 53 this.effectS
772b0 65 6e 64 52 2e 63 68 61 69 6e 28 74 68 69 73 2e endR.chain(this.
772c0 5f 72 69 67 68 74 50 72 65 44 65 6c 61 79 2c 20 _rightPreDelay,
772d0 74 68 69 73 2e 5f 72 69 67 68 74 44 65 6c 61 79 this._rightDelay
772e0 2c 20 74 68 69 73 2e 65 66 66 65 63 74 52 65 74 , this.effectRet
772f0 75 72 6e 52 29 3b 0a 09 20 20 20 20 20 20 20 20 urnR);..
77300 74 68 69 73 2e 64 65 6c 61 79 54 69 6d 65 2e 66 this.delayTime.f
77310 61 6e 28 74 68 69 73 2e 5f 6c 65 66 74 44 65 6c an(this._leftDel
77320 61 79 2e 64 65 6c 61 79 54 69 6d 65 2c 20 74 68 ay.delayTime, th
77330 69 73 2e 5f 72 69 67 68 74 44 65 6c 61 79 2e 64 is._rightDelay.d
77340 65 6c 61 79 54 69 6d 65 2c 20 74 68 69 73 2e 5f elayTime, this._
77350 72 69 67 68 74 50 72 65 44 65 6c 61 79 2e 64 65 rightPreDelay.de
77360 6c 61 79 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 layTime);..
77370 20 20 20 2f 2f 72 65 61 72 72 61 6e 67 65 64 20 //rearranged
77380 74 68 65 20 66 65 65 64 62 61 63 6b 20 74 6f 20 the feedback to
77390 62 65 20 61 66 74 65 72 20 74 68 65 20 72 69 67 be after the rig
773a0 68 74 50 72 65 44 65 6c 61 79 0a 09 20 20 20 20 htPreDelay..
773b0 20 20 20 20 74 68 69 73 2e 5f 66 65 65 64 62 61 this._feedba
773c0 63 6b 4c 52 2e 64 69 73 63 6f 6e 6e 65 63 74 28 ckLR.disconnect(
773d0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
773e0 2e 5f 66 65 65 64 62 61 63 6b 4c 52 2e 63 6f 6e ._feedbackLR.con
773f0 6e 65 63 74 28 74 68 69 73 2e 5f 72 69 67 68 74 nect(this._right
77400 44 65 6c 61 79 29 3b 0a 09 20 20 20 20 20 20 20 Delay);..
77410 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 this._readOnly(
77420 5b 27 64 65 6c 61 79 54 69 6d 65 27 5d 29 3b 0a ['delayTime']);.
77430 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e . };.. Ton
77440 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 50 69 e.extend(Tone.Pi
77450 6e 67 50 6f 6e 67 44 65 6c 61 79 2c 20 54 6f 6e ngPongDelay, Ton
77460 65 2e 53 74 65 72 65 6f 58 46 65 65 64 62 61 63 e.StereoXFeedbac
77470 6b 45 66 66 65 63 74 29 3b 0a 09 20 20 20 20 2f kEffect);.. /
77480 2a 2a 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 **... * @static
77490 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 ... * @type {Ob
774a0 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 ject}... */..
774b0 20 54 6f 6e 65 2e 50 69 6e 67 50 6f 6e 67 44 65 Tone.PingPongDe
774c0 6c 61 79 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b lay.defaults = {
774d0 0a 09 20 20 20 20 20 20 20 20 27 64 65 6c 61 79 .. 'delay
774e0 54 69 6d 65 27 3a 20 30 2e 32 35 2c 0a 09 20 20 Time': 0.25,..
774f0 20 20 20 20 20 20 27 6d 61 78 44 65 6c 61 79 54 'maxDelayT
77500 69 6d 65 27 3a 20 31 0a 09 20 20 20 20 7d 3b 0a ime': 1.. };.
77510 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 . /**... * C
77520 6c 65 61 6e 20 75 70 2e 20 0a 09 09 20 2a 20 20 lean up. ... *
77530 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 50 @returns {Tone.P
77540 69 6e 67 50 6f 6e 67 44 65 6c 61 79 7d 20 74 68 ingPongDelay} th
77550 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
77560 6e 65 2e 50 69 6e 67 50 6f 6e 67 44 65 6c 61 79 ne.PingPongDelay
77570 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
77580 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 se = function ()
77590 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 {.. Tone
775a0 2e 53 74 65 72 65 6f 58 46 65 65 64 62 61 63 6b .StereoXFeedback
775b0 45 66 66 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 Effect.prototype
775c0 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 .dispose.call(th
775d0 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 is);.. th
775e0 69 73 2e 5f 6c 65 66 74 44 65 6c 61 79 2e 64 69 is._leftDelay.di
775f0 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
77600 20 20 74 68 69 73 2e 5f 6c 65 66 74 44 65 6c 61 this._leftDela
77610 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 y = null;..
77620 20 20 20 74 68 69 73 2e 5f 72 69 67 68 74 44 65 this._rightDe
77630 6c 61 79 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 lay.dispose();..
77640 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 69 this._ri
77650 67 68 74 44 65 6c 61 79 20 3d 20 6e 75 6c 6c 3b ghtDelay = null;
77660 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
77670 72 69 67 68 74 50 72 65 44 65 6c 61 79 2e 64 69 rightPreDelay.di
77680 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
77690 20 20 74 68 69 73 2e 5f 72 69 67 68 74 50 72 65 this._rightPre
776a0 44 65 6c 61 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 Delay = null;..
776b0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 77 72 69 this._wri
776c0 74 61 62 6c 65 28 5b 27 64 65 6c 61 79 54 69 6d table(['delayTim
776d0 65 27 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 e']);.. t
776e0 68 69 73 2e 64 65 6c 61 79 54 69 6d 65 2e 64 69 his.delayTime.di
776f0 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
77700 20 20 74 68 69 73 2e 64 65 6c 61 79 54 69 6d 65 this.delayTime
77710 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
77720 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
77730 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 };.. retu
77740 72 6e 20 54 6f 6e 65 2e 50 69 6e 67 50 6f 6e 67 rn Tone.PingPong
77750 44 65 6c 61 79 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 Delay;..});..Mod
77760 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f ule(function (To
77770 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 ne) {.. ..
77780 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 /**... * @clas
77790 73 20 54 6f 6e 65 2e 50 69 74 63 68 53 68 69 66 s Tone.PitchShif
777a0 74 20 64 6f 65 73 20 6e 65 61 72 2d 72 65 61 6c t does near-real
777b0 74 69 6d 65 20 70 69 74 63 68 20 73 68 69 66 74 time pitch shift
777c0 69 6e 67 20 74 6f 20 74 68 65 20 69 6e 63 6f 6d ing to the incom
777d0 69 6e 67 20 73 69 67 6e 61 6c 2e 20 0a 09 09 20 ing signal. ...
777e0 2a 20 20 20 20 20 20 20 20 20 54 68 65 20 65 66 * The ef
777f0 66 65 63 74 20 69 73 20 61 63 68 69 65 76 65 64 fect is achieved
77800 20 62 79 20 73 70 65 65 64 69 6e 67 20 75 70 20 by speeding up
77810 6f 72 20 73 6c 6f 77 69 6e 67 20 64 6f 77 6e 20 or slowing down
77820 74 68 65 20 64 65 6c 61 79 54 69 6d 65 0a 09 09 the delayTime...
77830 20 2a 20 20 20 20 20 20 20 20 20 6f 66 20 61 20 * of a
77840 44 65 6c 61 79 4e 6f 64 65 20 75 73 69 6e 67 20 DelayNode using
77850 61 20 73 61 77 74 6f 6f 74 68 20 77 61 76 65 2e a sawtooth wave.
77860 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 41 ... * A
77870 6c 67 6f 72 69 74 68 6d 20 66 6f 75 6e 64 20 69 lgorithm found i
77880 6e 20 5b 74 68 69 73 20 70 64 66 5d 28 68 74 74 n [this pdf](htt
77890 70 3a 2f 2f 64 73 70 2d 62 6f 6f 6b 2e 6e 61 72 p://dsp-book.nar
778a0 6f 64 2e 72 75 2f 73 6f 75 6e 64 70 72 6f 63 2e od.ru/soundproc.
778b0 70 64 66 29 2e 0a 09 09 20 2a 20 20 20 20 20 20 pdf).... *
778c0 20 20 20 41 64 64 69 74 69 6f 6e 61 6c 20 72 65 Additional re
778d0 66 65 72 65 6e 63 65 20 62 79 20 5b 4d 69 6c 6c ference by [Mill
778e0 65 72 20 50 75 63 6b 65 74 5d 28 68 74 74 70 3a er Pucket](http:
778f0 2f 2f 6d 73 70 2e 75 63 73 64 2e 65 64 75 2f 74 //msp.ucsd.edu/t
77900 65 63 68 6e 69 71 75 65 73 2f 76 30 2e 31 31 2f echniques/v0.11/
77910 62 6f 6f 6b 2d 68 74 6d 6c 2f 6e 6f 64 65 31 31 book-html/node11
77920 35 2e 68 74 6d 6c 29 2e 0a 09 09 20 2a 20 20 20 5.html).... *
77930 20 20 20 20 20 20 0a 09 09 20 2a 20 20 40 65 78 ... * @ex
77940 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 46 65 65 64 tends {Tone.Feed
77950 62 61 63 6b 45 66 66 65 63 74 7d 0a 09 09 20 2a backEffect}... *
77960 20 20 40 70 61 72 61 6d 20 7b 49 6e 74 65 72 76 @param {Interv
77970 61 6c 3d 7d 20 70 69 74 63 68 20 54 68 65 20 69 al=} pitch The i
77980 6e 74 65 72 76 61 6c 20 74 6f 20 74 72 61 6e 73 nterval to trans
77990 70 6f 73 65 20 74 68 65 20 69 6e 63 6f 6d 69 6e pose the incomin
779a0 67 20 73 69 67 6e 61 6c 20 62 79 2e 20 0a 09 09 g signal by. ...
779b0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 69 */.. Tone.Pi
779c0 74 63 68 53 68 69 66 74 20 3d 20 66 75 6e 63 74 tchShift = funct
779d0 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
779e0 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 var options =
779f0 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 this.optionsObje
77a00 63 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 27 ct(arguments, ['
77a10 70 69 74 63 68 27 5d 2c 20 54 6f 6e 65 2e 50 69 pitch'], Tone.Pi
77a20 74 63 68 53 68 69 66 74 2e 64 65 66 61 75 6c 74 tchShift.default
77a30 73 29 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e s);.. Ton
77a40 65 2e 46 65 65 64 62 61 63 6b 45 66 66 65 63 74 e.FeedbackEffect
77a50 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 .call(this, opti
77a60 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f ons);.. /
77a70 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 70 69 **.... * The pi
77a80 74 63 68 20 73 69 67 6e 61 6c 0a 09 09 09 20 2a tch signal.... *
77a90 20 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 2e 53 @type {Tone.S
77aa0 69 67 6e 61 6c 7d 0a 09 09 09 20 2a 20 20 40 70 ignal}.... * @p
77ab0 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
77ac0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 72 65 this._fre
77ad0 71 75 65 6e 63 79 20 3d 20 6e 65 77 20 54 6f 6e quency = new Ton
77ae0 65 2e 53 69 67 6e 61 6c 28 30 29 3b 0a 09 20 20 e.Signal(0);..
77af0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
77b00 20 55 73 65 73 20 74 77 6f 20 44 65 6c 61 79 4e Uses two DelayN
77b10 6f 64 65 73 20 74 6f 20 63 6f 76 65 72 20 75 70 odes to cover up
77b20 20 74 68 65 20 6a 75 6d 70 20 69 6e 0a 09 09 09 the jump in....
77b30 20 2a 20 20 74 68 65 20 73 61 77 74 6f 6f 74 68 * the sawtooth
77b40 20 77 61 76 65 2e 20 0a 09 09 09 20 2a 20 20 40 wave. .... * @
77b50 74 79 70 65 20 20 7b 44 65 6c 61 79 4e 6f 64 65 type {DelayNode
77b60 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
77b70 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
77b80 20 20 74 68 69 73 2e 5f 64 65 6c 61 79 41 20 3d this._delayA =
77b90 20 6e 65 77 20 54 6f 6e 65 2e 44 65 6c 61 79 28 new Tone.Delay(
77ba0 30 2c 20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 0, 1);..
77bb0 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 66 /**.... * The f
77bc0 69 72 73 74 20 4c 46 4f 2e 0a 09 09 09 20 2a 20 irst LFO..... *
77bd0 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 2e 4c 46 @type {Tone.LF
77be0 4f 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 O}.... * @priva
77bf0 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
77c00 20 20 20 74 68 69 73 2e 5f 6c 66 6f 41 20 3d 20 this._lfoA =
77c10 6e 65 77 20 54 6f 6e 65 2e 4c 46 4f 28 7b 0a 09 new Tone.LFO({..
77c20 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 69 6e 'min
77c30 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 20 ': 0,..
77c40 20 20 20 27 6d 61 78 27 3a 20 30 2e 31 2c 0a 09 'max': 0.1,..
77c50 20 20 20 20 20 20 20 20 20 20 20 20 27 74 79 70 'typ
77c60 65 27 3a 20 27 73 61 77 74 6f 6f 74 68 27 0a 09 e': 'sawtooth'..
77c70 20 20 20 20 20 20 20 20 7d 29 2e 63 6f 6e 6e 65 }).conne
77c80 63 74 28 74 68 69 73 2e 5f 64 65 6c 61 79 41 2e ct(this._delayA.
77c90 64 65 6c 61 79 54 69 6d 65 29 3b 0a 09 20 20 20 delayTime);..
77ca0 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
77cb0 54 68 65 20 73 65 63 6f 6e 64 20 44 65 6c 61 79 The second Delay
77cc0 4e 6f 64 65 0a 09 09 09 20 2a 20 20 40 74 79 70 Node.... * @typ
77cd0 65 20 20 7b 44 65 6c 61 79 4e 6f 64 65 7d 0a 09 e {DelayNode}..
77ce0 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
77cf0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
77d00 68 69 73 2e 5f 64 65 6c 61 79 42 20 3d 20 6e 65 his._delayB = ne
77d10 77 20 54 6f 6e 65 2e 44 65 6c 61 79 28 30 2c 20 w Tone.Delay(0,
77d20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 1);.. /**
77d30 0a 09 09 09 20 2a 20 20 54 68 65 20 66 69 72 73 .... * The firs
77d40 74 20 4c 46 4f 2e 0a 09 09 09 20 2a 20 20 40 74 t LFO..... * @t
77d50 79 70 65 20 20 7b 54 6f 6e 65 2e 4c 46 4f 7d 0a ype {Tone.LFO}.
77d60 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
77d70 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
77d80 74 68 69 73 2e 5f 6c 66 6f 42 20 3d 20 6e 65 77 this._lfoB = new
77d90 20 54 6f 6e 65 2e 4c 46 4f 28 7b 0a 09 20 20 20 Tone.LFO({..
77da0 20 20 20 20 20 20 20 20 20 27 6d 69 6e 27 3a 20 'min':
77db0 30 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 0,..
77dc0 27 6d 61 78 27 3a 20 30 2e 31 2c 0a 09 20 20 20 'max': 0.1,..
77dd0 20 20 20 20 20 20 20 20 20 27 74 79 70 65 27 3a 'type':
77de0 20 27 73 61 77 74 6f 6f 74 68 27 2c 0a 09 20 20 'sawtooth',..
77df0 20 20 20 20 20 20 20 20 20 20 27 70 68 61 73 65 'phase
77e00 27 3a 20 31 38 30 0a 09 20 20 20 20 20 20 20 20 ': 180..
77e10 7d 29 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e }).connect(this.
77e20 5f 64 65 6c 61 79 42 2e 64 65 6c 61 79 54 69 6d _delayB.delayTim
77e30 65 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a e);.. /**
77e40 0a 09 09 09 20 2a 20 20 43 72 6f 73 73 66 61 64 .... * Crossfad
77e50 65 20 71 75 69 63 6b 6c 79 20 62 65 74 77 65 65 e quickly betwee
77e60 6e 20 74 68 65 20 74 77 6f 20 64 65 6c 61 79 20 n the two delay
77e70 6c 69 6e 65 73 0a 09 09 09 20 2a 20 20 74 6f 20 lines.... * to
77e80 63 6f 76 65 72 20 75 70 20 74 68 65 20 6a 75 6d cover up the jum
77e90 70 20 69 6e 20 74 68 65 20 73 61 77 74 6f 6f 74 p in the sawtoot
77ea0 68 20 77 61 76 65 0a 09 09 09 20 2a 20 20 40 74 h wave.... * @t
77eb0 79 70 65 20 20 7b 54 6f 6e 65 2e 43 72 6f 73 73 ype {Tone.Cross
77ec0 46 61 64 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 Fade}.... * @pr
77ed0 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 ivate.... */..
77ee0 20 20 20 20 20 20 74 68 69 73 2e 5f 63 72 6f 73 this._cros
77ef0 73 46 61 64 65 20 3d 20 6e 65 77 20 54 6f 6e 65 sFade = new Tone
77f00 2e 43 72 6f 73 73 46 61 64 65 28 29 3b 0a 09 20 .CrossFade();..
77f10 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
77f20 20 20 4c 46 4f 20 77 68 69 63 68 20 61 6c 74 65 LFO which alte
77f30 72 6e 61 74 65 73 20 62 65 74 77 65 65 6e 20 74 rnates between t
77f40 68 65 20 74 77 6f 0a 09 09 09 20 2a 20 20 64 65 he two.... * de
77f50 6c 61 79 20 6c 69 6e 65 73 20 74 6f 20 63 6f 76 lay lines to cov
77f60 65 72 20 75 70 20 74 68 65 20 64 69 73 70 61 72 er up the dispar
77f70 69 74 79 20 69 6e 20 74 68 65 0a 09 09 09 20 2a ity in the.... *
77f80 20 20 73 61 77 74 6f 6f 74 68 20 77 61 76 65 2e sawtooth wave.
77f90 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 .... * @type
77fa0 7b 54 6f 6e 65 2e 4c 46 4f 7d 0a 09 09 09 20 2a {Tone.LFO}.... *
77fb0 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
77fc0 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
77fd0 5f 63 72 6f 73 73 46 61 64 65 4c 46 4f 20 3d 20 _crossFadeLFO =
77fe0 6e 65 77 20 54 6f 6e 65 2e 4c 46 4f 28 7b 0a 09 new Tone.LFO({..
77ff0 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 69 6e 'min
78000 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 20 ': 0,..
78010 20 20 20 27 6d 61 78 27 3a 20 31 2c 0a 09 20 20 'max': 1,..
78020 20 20 20 20 20 20 20 20 20 20 27 74 79 70 65 27 'type'
78030 3a 20 27 74 72 69 61 6e 67 6c 65 27 2c 0a 09 20 : 'triangle',..
78040 20 20 20 20 20 20 20 20 20 20 20 27 70 68 61 73 'phas
78050 65 27 3a 20 39 30 0a 09 20 20 20 20 20 20 20 20 e': 90..
78060 7d 29 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e }).connect(this.
78070 5f 63 72 6f 73 73 46 61 64 65 2e 66 61 64 65 29 _crossFade.fade)
78080 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
78090 09 09 20 2a 20 20 54 68 65 20 64 65 6c 61 79 20 .. * The delay
780a0 6e 6f 64 65 0a 09 09 09 20 2a 20 20 40 74 79 70 node.... * @typ
780b0 65 20 7b 54 6f 6e 65 2e 44 65 6c 61 79 7d 0a 09 e {Tone.Delay}..
780c0 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
780d0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
780e0 68 69 73 2e 5f 66 65 65 64 62 61 63 6b 44 65 6c his._feedbackDel
780f0 61 79 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 44 65 ay = new Tone.De
78100 6c 61 79 28 6f 70 74 69 6f 6e 73 2e 64 65 6c 61 lay(options.dela
78110 79 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 yTime);..
78120 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
78130 61 6d 6f 75 6e 74 20 6f 66 20 64 65 6c 61 79 20 amount of delay
78140 6f 6e 20 74 68 65 20 69 6e 70 75 74 20 73 69 67 on the input sig
78150 6e 61 6c 0a 09 09 09 20 2a 20 20 40 74 79 70 65 nal.... * @type
78160 20 7b 54 69 6d 65 7d 0a 09 09 09 20 2a 20 20 40 {Time}.... * @
78170 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 signal.... */..
78180 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 6c 61 this.dela
78190 79 54 69 6d 65 20 3d 20 74 68 69 73 2e 5f 66 65 yTime = this._fe
781a0 65 64 62 61 63 6b 44 65 6c 61 79 2e 64 65 6c 61 edbackDelay.dela
781b0 79 54 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 yTime;..
781c0 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 27 this._readOnly('
781d0 64 65 6c 61 79 54 69 6d 65 27 29 3b 0a 09 20 20 delayTime');..
781e0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
781f0 20 48 6f 6c 64 20 74 68 65 20 63 75 72 72 65 6e Hold the curren
78200 74 20 70 69 74 63 68 0a 09 09 09 20 2a 20 20 40 t pitch.... * @
78210 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 type {Number}...
78220 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
78230 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
78240 69 73 2e 5f 70 69 74 63 68 20 3d 20 6f 70 74 69 is._pitch = opti
78250 6f 6e 73 2e 70 69 74 63 68 3b 0a 09 20 20 20 20 ons.pitch;..
78260 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 48 /**.... * H
78270 6f 6c 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 old the current
78280 77 69 6e 64 6f 77 53 69 7a 65 0a 09 09 09 20 2a windowSize.... *
78290 20 20 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d @type {Number}
782a0 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
782b0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
782c0 20 74 68 69 73 2e 5f 77 69 6e 64 6f 77 53 69 7a this._windowSiz
782d0 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 77 69 6e 64 e = options.wind
782e0 6f 77 53 69 7a 65 3b 0a 09 20 20 20 20 20 20 20 owSize;..
782f0 20 2f 2f 63 6f 6e 6e 65 63 74 20 74 68 65 20 74 //connect the t
78300 77 6f 20 64 65 6c 61 79 20 6c 69 6e 65 73 20 75 wo delay lines u
78310 70 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e p.. this.
78320 5f 64 65 6c 61 79 41 2e 63 6f 6e 6e 65 63 74 28 _delayA.connect(
78330 74 68 69 73 2e 5f 63 72 6f 73 73 46 61 64 65 2e this._crossFade.
78340 61 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 a);.. thi
78350 73 2e 5f 64 65 6c 61 79 42 2e 63 6f 6e 6e 65 63 s._delayB.connec
78360 74 28 74 68 69 73 2e 5f 63 72 6f 73 73 46 61 64 t(this._crossFad
78370 65 2e 62 29 3b 0a 09 20 20 20 20 20 20 20 20 2f e.b);.. /
78380 2f 63 6f 6e 6e 65 63 74 20 74 68 65 20 66 72 65 /connect the fre
78390 71 75 65 6e 63 79 0a 09 20 20 20 20 20 20 20 20 quency..
783a0 74 68 69 73 2e 5f 66 72 65 71 75 65 6e 63 79 2e this._frequency.
783b0 66 61 6e 28 74 68 69 73 2e 5f 6c 66 6f 41 2e 66 fan(this._lfoA.f
783c0 72 65 71 75 65 6e 63 79 2c 20 74 68 69 73 2e 5f requency, this._
783d0 6c 66 6f 42 2e 66 72 65 71 75 65 6e 63 79 2c 20 lfoB.frequency,
783e0 74 68 69 73 2e 5f 63 72 6f 73 73 46 61 64 65 4c this._crossFadeL
783f0 46 4f 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a 09 FO.frequency);..
78400 20 20 20 20 20 20 20 20 2f 2f 72 6f 75 74 65 20 //route
78410 74 68 65 20 69 6e 70 75 74 0a 09 20 20 20 20 20 the input..
78420 20 20 20 74 68 69 73 2e 65 66 66 65 63 74 53 65 this.effectSe
78430 6e 64 2e 66 61 6e 28 74 68 69 73 2e 5f 64 65 6c nd.fan(this._del
78440 61 79 41 2c 20 74 68 69 73 2e 5f 64 65 6c 61 79 ayA, this._delay
78450 42 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 B);.. thi
78460 73 2e 5f 63 72 6f 73 73 46 61 64 65 2e 63 68 61 s._crossFade.cha
78470 69 6e 28 74 68 69 73 2e 5f 66 65 65 64 62 61 63 in(this._feedbac
78480 6b 44 65 6c 61 79 2c 20 74 68 69 73 2e 65 66 66 kDelay, this.eff
78490 65 63 74 52 65 74 75 72 6e 29 3b 0a 09 20 20 20 ectReturn);..
784a0 20 20 20 20 20 2f 2f 73 74 61 72 74 20 74 68 65 //start the
784b0 20 4c 46 4f 73 20 61 74 20 74 68 65 20 73 61 6d LFOs at the sam
784c0 65 20 74 69 6d 65 0a 09 20 20 20 20 20 20 20 20 e time..
784d0 76 61 72 20 6e 6f 77 20 3d 20 74 68 69 73 2e 6e var now = this.n
784e0 6f 77 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 ow();.. t
784f0 68 69 73 2e 5f 6c 66 6f 41 2e 73 74 61 72 74 28 his._lfoA.start(
78500 6e 6f 77 29 3b 0a 09 20 20 20 20 20 20 20 20 74 now);.. t
78510 68 69 73 2e 5f 6c 66 6f 42 2e 73 74 61 72 74 28 his._lfoB.start(
78520 6e 6f 77 29 3b 0a 09 20 20 20 20 20 20 20 20 74 now);.. t
78530 68 69 73 2e 5f 63 72 6f 73 73 46 61 64 65 4c 46 his._crossFadeLF
78540 4f 2e 73 74 61 72 74 28 6e 6f 77 29 3b 0a 09 20 O.start(now);..
78550 20 20 20 20 20 20 20 2f 2f 73 65 74 20 74 68 65 //set the
78560 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 65 0a 09 initial value..
78570 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 69 6e this.win
78580 64 6f 77 53 69 7a 65 20 3d 20 74 68 69 73 2e 5f dowSize = this._
78590 77 69 6e 64 6f 77 53 69 7a 65 3b 0a 09 20 20 20 windowSize;..
785a0 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 };.. Tone.ex
785b0 74 65 6e 64 28 54 6f 6e 65 2e 50 69 74 63 68 53 tend(Tone.PitchS
785c0 68 69 66 74 2c 20 54 6f 6e 65 2e 46 65 65 64 62 hift, Tone.Feedb
785d0 61 63 6b 45 66 66 65 63 74 29 3b 0a 09 20 20 20 ackEffect);..
785e0 20 2f 2a 2a 0a 09 09 20 2a 20 20 64 65 66 61 75 /**... * defau
785f0 6c 74 20 76 61 6c 75 65 73 0a 09 09 20 2a 20 20 lt values... *
78600 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 74 @static... * @t
78610 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 ype {Object}...
78620 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a 2f 0a * @const... */.
78630 09 20 20 20 20 54 6f 6e 65 2e 50 69 74 63 68 53 . Tone.PitchS
78640 68 69 66 74 2e 64 65 66 61 75 6c 74 73 20 3d 20 hift.defaults =
78650 7b 0a 09 20 20 20 20 20 20 20 20 27 70 69 74 63 {.. 'pitc
78660 68 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 h': 0,..
78670 27 77 69 6e 64 6f 77 53 69 7a 65 27 3a 20 30 2e 'windowSize': 0.
78680 31 2c 0a 09 20 20 20 20 20 20 20 20 27 64 65 6c 1,.. 'del
78690 61 79 54 69 6d 65 27 3a 20 30 2c 0a 09 20 20 20 ayTime': 0,..
786a0 20 20 20 20 20 27 66 65 65 64 62 61 63 6b 27 3a 'feedback':
786b0 20 30 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 0.. };..
786c0 2f 2a 2a 0a 09 09 20 2a 20 52 65 70 69 74 63 68 /**... * Repitch
786d0 20 74 68 65 20 69 6e 63 6f 6d 69 6e 67 20 73 69 the incoming si
786e0 67 6e 61 6c 20 62 79 20 73 6f 6d 65 20 69 6e 74 gnal by some int
786f0 65 72 76 61 6c 20 28 6d 65 61 73 75 72 65 64 0a erval (measured.
78700 09 09 20 2a 20 69 6e 20 73 65 6d 69 2d 74 6f 6e .. * in semi-ton
78710 65 73 29 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 es). ... * @memb
78720 65 72 4f 66 20 54 6f 6e 65 2e 50 69 74 63 68 53 erOf Tone.PitchS
78730 68 69 66 74 23 0a 09 09 20 2a 20 40 74 79 70 65 hift#... * @type
78740 20 7b 49 6e 74 65 72 76 61 6c 7d 0a 09 09 20 2a {Interval}... *
78750 20 40 6e 61 6d 65 20 70 69 74 63 68 0a 09 09 20 @name pitch...
78760 2a 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 * @example... *
78770 70 69 74 63 68 53 68 69 66 74 2e 70 69 74 63 68 pitchShift.pitch
78780 20 3d 20 2d 31 32 3b 20 2f 2f 64 6f 77 6e 20 6f = -12; //down o
78790 6e 65 20 6f 63 74 61 76 65 0a 09 09 20 2a 20 70 ne octave... * p
787a0 69 74 63 68 53 68 69 66 74 2e 70 69 74 63 68 20 itchShift.pitch
787b0 3d 20 37 3b 20 2f 2f 75 70 20 61 20 66 69 66 74 = 7; //up a fift
787c0 68 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a h... */.. Obj
787d0 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
787e0 74 79 28 54 6f 6e 65 2e 50 69 74 63 68 53 68 69 ty(Tone.PitchShi
787f0 66 74 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 70 ft.prototype, 'p
78800 69 74 63 68 27 2c 20 7b 0a 09 20 20 20 20 20 20 itch', {..
78810 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
78820 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
78830 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 70 return this._p
78840 69 74 63 68 3b 0a 09 20 20 20 20 20 20 20 20 7d itch;.. }
78850 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 ,.. set:
78860 66 75 6e 63 74 69 6f 6e 20 28 69 6e 74 65 72 76 function (interv
78870 61 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 al) {..
78880 20 20 20 74 68 69 73 2e 5f 70 69 74 63 68 20 3d this._pitch =
78890 20 69 6e 74 65 72 76 61 6c 3b 0a 09 20 20 20 20 interval;..
788a0 20 20 20 20 20 20 20 20 76 61 72 20 66 61 63 74 var fact
788b0 6f 72 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 or = 0;..
788c0 20 20 20 20 20 69 66 20 28 69 6e 74 65 72 76 61 if (interva
788d0 6c 20 3c 20 30 29 20 7b 0a 09 20 20 20 20 20 20 l < 0) {..
788e0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
788f0 6c 66 6f 41 2e 6d 69 6e 20 3d 20 30 3b 0a 09 20 lfoA.min = 0;..
78900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
78910 68 69 73 2e 5f 6c 66 6f 41 2e 6d 61 78 20 3d 20 his._lfoA.max =
78920 74 68 69 73 2e 5f 77 69 6e 64 6f 77 53 69 7a 65 this._windowSize
78930 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
78940 20 20 20 74 68 69 73 2e 5f 6c 66 6f 42 2e 6d 69 this._lfoB.mi
78950 6e 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 20 n = 0;..
78960 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 this._lf
78970 6f 42 2e 6d 61 78 20 3d 20 74 68 69 73 2e 5f 77 oB.max = this._w
78980 69 6e 64 6f 77 53 69 7a 65 3b 0a 09 20 20 20 20 indowSize;..
78990 20 20 20 20 20 20 20 20 20 20 20 20 66 61 63 74 fact
789a0 6f 72 20 3d 20 74 68 69 73 2e 69 6e 74 65 72 76 or = this.interv
789b0 61 6c 54 6f 46 72 65 71 75 65 6e 63 79 52 61 74 alToFrequencyRat
789c0 69 6f 28 69 6e 74 65 72 76 61 6c 20 2d 20 31 29 io(interval - 1)
789d0 20 2b 20 31 3b 0a 09 20 20 20 20 20 20 20 20 20 + 1;..
789e0 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
789f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
78a00 73 2e 5f 6c 66 6f 41 2e 6d 69 6e 20 3d 20 74 68 s._lfoA.min = th
78a10 69 73 2e 5f 77 69 6e 64 6f 77 53 69 7a 65 3b 0a is._windowSize;.
78a20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
78a30 20 74 68 69 73 2e 5f 6c 66 6f 41 2e 6d 61 78 20 this._lfoA.max
78a40 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 = 0;..
78a50 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 42 this._lfoB
78a60 2e 6d 69 6e 20 3d 20 74 68 69 73 2e 5f 77 69 6e .min = this._win
78a70 64 6f 77 53 69 7a 65 3b 0a 09 20 20 20 20 20 20 dowSize;..
78a80 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
78a90 6c 66 6f 42 2e 6d 61 78 20 3d 20 30 3b 0a 09 20 lfoB.max = 0;..
78aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 f
78ab0 61 63 74 6f 72 20 3d 20 74 68 69 73 2e 69 6e 74 actor = this.int
78ac0 65 72 76 61 6c 54 6f 46 72 65 71 75 65 6e 63 79 ervalToFrequency
78ad0 52 61 74 69 6f 28 69 6e 74 65 72 76 61 6c 29 20 Ratio(interval)
78ae0 2d 20 31 3b 0a 09 20 20 20 20 20 20 20 20 20 20 - 1;..
78af0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
78b00 20 74 68 69 73 2e 5f 66 72 65 71 75 65 6e 63 79 this._frequency
78b10 2e 76 61 6c 75 65 20 3d 20 66 61 63 74 6f 72 20 .value = factor
78b20 2a 20 28 31 2e 32 20 2f 20 74 68 69 73 2e 5f 77 * (1.2 / this._w
78b30 69 6e 64 6f 77 53 69 7a 65 29 3b 0a 09 20 20 20 indowSize);..
78b40 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
78b50 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 . /**... * Th
78b60 65 20 77 69 6e 64 6f 77 20 73 69 7a 65 20 63 6f e window size co
78b70 72 72 65 73 70 6f 6e 64 73 20 72 6f 75 67 68 6c rresponds roughl
78b80 79 20 74 6f 20 74 68 65 20 73 61 6d 70 6c 65 20 y to the sample
78b90 6c 65 6e 67 74 68 20 69 6e 20 61 20 6c 6f 6f 70 length in a loop
78ba0 69 6e 67 20 73 61 6d 70 6c 65 72 2e 20 0a 09 09 ing sampler. ...
78bb0 20 2a 20 53 6d 61 6c 6c 65 72 20 76 61 6c 75 65 * Smaller value
78bc0 73 20 61 72 65 20 64 65 73 69 72 61 62 6c 65 20 s are desirable
78bd0 66 6f 72 20 61 20 6c 65 73 73 20 6e 6f 74 69 63 for a less notic
78be0 65 61 62 6c 65 20 64 65 6c 61 79 20 74 69 6d 65 eable delay time
78bf0 20 6f 66 20 74 68 65 20 70 69 74 63 68 20 73 68 of the pitch sh
78c00 69 66 74 65 64 0a 09 09 20 2a 20 73 69 67 6e 61 ifted... * signa
78c10 6c 2c 20 62 75 74 20 6c 61 72 67 65 72 20 76 61 l, but larger va
78c20 6c 75 65 73 20 77 69 6c 6c 20 72 65 73 75 6c 74 lues will result
78c30 20 69 6e 20 73 6d 6f 6f 74 68 65 72 20 70 69 74 in smoother pit
78c40 63 68 20 73 68 69 66 74 69 6e 67 20 66 6f 72 20 ch shifting for
78c50 6c 61 72 67 65 72 20 69 6e 74 65 72 76 61 6c 73 larger intervals
78c60 2e 20 0a 09 09 20 2a 20 41 20 6e 6f 6d 69 6e 61 . ... * A nomina
78c70 6c 20 72 61 6e 67 65 20 6f 66 20 30 2e 30 33 20 l range of 0.03
78c80 74 6f 20 30 2e 31 20 69 73 20 72 65 63 6f 6d 6d to 0.1 is recomm
78c90 65 6e 64 65 64 2e 20 0a 09 09 20 2a 20 40 6d 65 ended. ... * @me
78ca0 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 50 69 74 63 mberOf Tone.Pitc
78cb0 68 53 68 69 66 74 23 0a 09 09 20 2a 20 40 74 79 hShift#... * @ty
78cc0 70 65 20 7b 54 69 6d 65 7d 0a 09 09 20 2a 20 40 pe {Time}... * @
78cd0 6e 61 6d 65 20 77 69 6e 64 6f 77 53 69 7a 65 0a name windowSize.
78ce0 09 09 20 2a 20 40 65 78 61 6d 70 6c 65 0a 09 09 .. * @example...
78cf0 20 2a 20 70 69 74 63 68 53 68 69 66 74 2e 77 69 * pitchShift.wi
78d00 6e 64 6f 77 53 69 7a 65 20 3d 20 30 2e 31 3b 0a ndowSize = 0.1;.
78d10 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 .. */.. Objec
78d20 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 t.defineProperty
78d30 28 54 6f 6e 65 2e 50 69 74 63 68 53 68 69 66 74 (Tone.PitchShift
78d40 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 77 69 6e .prototype, 'win
78d50 64 6f 77 53 69 7a 65 27 2c 20 7b 0a 09 20 20 20 dowSize', {..
78d60 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
78d70 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
78d80 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
78d90 2e 5f 77 69 6e 64 6f 77 53 69 7a 65 3b 0a 09 20 ._windowSize;..
78da0 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 },..
78db0 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e set: function
78dc0 20 28 73 69 7a 65 29 20 7b 0a 09 20 20 20 20 20 (size) {..
78dd0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 77 69 6e this._win
78de0 64 6f 77 53 69 7a 65 20 3d 20 74 68 69 73 2e 74 dowSize = this.t
78df0 6f 53 65 63 6f 6e 64 73 28 73 69 7a 65 29 3b 0a oSeconds(size);.
78e00 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
78e10 73 2e 70 69 74 63 68 20 3d 20 74 68 69 73 2e 5f s.pitch = this._
78e20 70 69 74 63 68 3b 0a 09 20 20 20 20 20 20 20 20 pitch;..
78e30 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
78e40 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 /**... * Clean
78e50 75 70 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 up.... * @retur
78e60 6e 20 20 7b 54 6f 6e 65 2e 50 69 74 63 68 53 68 n {Tone.PitchSh
78e70 69 66 74 7d 20 20 74 68 69 73 0a 09 09 20 2a 2f ift} this... */
78e80 0a 09 20 20 20 20 54 6f 6e 65 2e 50 69 74 63 68 .. Tone.Pitch
78e90 53 68 69 66 74 2e 70 72 6f 74 6f 74 79 70 65 2e Shift.prototype.
78ea0 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 dispose = functi
78eb0 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
78ec0 20 54 6f 6e 65 2e 46 65 65 64 62 61 63 6b 45 66 Tone.FeedbackEf
78ed0 66 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e 64 fect.prototype.d
78ee0 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 ispose.call(this
78ef0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
78f00 2e 5f 66 72 65 71 75 65 6e 63 79 2e 64 69 73 70 ._frequency.disp
78f10 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
78f20 74 68 69 73 2e 5f 66 72 65 71 75 65 6e 63 79 20 this._frequency
78f30 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
78f40 20 74 68 69 73 2e 5f 64 65 6c 61 79 41 2e 64 69 this._delayA.di
78f50 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 20 20 20 sconnect();..
78f60 20 20 20 20 20 74 68 69 73 2e 5f 64 65 6c 61 79 this._delay
78f70 41 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 A = null;..
78f80 20 20 20 74 68 69 73 2e 5f 64 65 6c 61 79 42 2e this._delayB.
78f90 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 20 disconnect();..
78fa0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 65 6c this._del
78fb0 61 79 42 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ayB = null;..
78fc0 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 41 2e this._lfoA.
78fd0 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
78fe0 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 41 20 3d this._lfoA =
78ff0 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
79000 74 68 69 73 2e 5f 6c 66 6f 42 2e 64 69 73 70 6f this._lfoB.dispo
79010 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
79020 68 69 73 2e 5f 6c 66 6f 42 20 3d 20 6e 75 6c 6c his._lfoB = null
79030 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
79040 5f 63 72 6f 73 73 46 61 64 65 2e 64 69 73 70 6f _crossFade.dispo
79050 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
79060 68 69 73 2e 5f 63 72 6f 73 73 46 61 64 65 20 3d his._crossFade =
79070 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
79080 74 68 69 73 2e 5f 63 72 6f 73 73 46 61 64 65 4c this._crossFadeL
79090 46 4f 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 FO.dispose();..
790a0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 72 6f this._cro
790b0 73 73 46 61 64 65 4c 46 4f 20 3d 20 6e 75 6c 6c ssFadeLFO = null
790c0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
790d0 5f 77 72 69 74 61 62 6c 65 28 27 64 65 6c 61 79 _writable('delay
790e0 54 69 6d 65 27 29 3b 0a 09 20 20 20 20 20 20 20 Time');..
790f0 20 74 68 69 73 2e 5f 66 65 65 64 62 61 63 6b 44 this._feedbackD
79100 65 6c 61 79 2e 64 69 73 70 6f 73 65 28 29 3b 0a elay.dispose();.
79110 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 . this._f
79120 65 65 64 62 61 63 6b 44 65 6c 61 79 20 3d 20 6e eedbackDelay = n
79130 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
79140 69 73 2e 64 65 6c 61 79 54 69 6d 65 20 3d 20 6e is.delayTime = n
79150 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 ull;.. re
79160 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 turn this;..
79170 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 };.. return T
79180 6f 6e 65 2e 50 69 74 63 68 53 68 69 66 74 3b 0a one.PitchShift;.
79190 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e .});..Module(fun
791a0 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 ction (Tone) {..
791b0 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
791c0 20 2a 20 20 40 63 6c 61 73 73 20 42 61 73 65 20 * @class Base
791d0 63 6c 61 73 73 20 66 6f 72 20 73 74 65 72 65 6f class for stereo
791e0 20 66 65 65 64 62 61 63 6b 20 65 66 66 65 63 74 feedback effect
791f0 73 20 77 68 65 72 65 20 74 68 65 20 65 66 66 65 s where the effe
79200 63 74 52 65 74 75 72 6e 0a 09 09 20 2a 20 20 20 ctReturn... *
79210 20 20 20 20 20 20 69 73 20 66 65 64 20 62 61 63 is fed bac
79220 6b 20 69 6e 74 6f 20 74 68 65 20 73 61 6d 65 20 k into the same
79230 63 68 61 6e 6e 65 6c 2e 20 0a 09 09 20 2a 0a 09 channel. ... *..
79240 09 20 2a 09 40 63 6f 6e 73 74 72 75 63 74 6f 72 . *.@constructor
79250 0a 09 09 20 2a 09 40 65 78 74 65 6e 64 73 20 7b ... *.@extends {
79260 54 6f 6e 65 2e 46 65 65 64 62 61 63 6b 45 66 66 Tone.FeedbackEff
79270 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ect}... */..
79280 54 6f 6e 65 2e 53 74 65 72 65 6f 46 65 65 64 62 Tone.StereoFeedb
79290 61 63 6b 45 66 66 65 63 74 20 3d 20 66 75 6e 63 ackEffect = func
792a0 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
792b0 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d var options =
792c0 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a this.optionsObj
792d0 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b ect(arguments, [
792e0 27 66 65 65 64 62 61 63 6b 27 5d 2c 20 54 6f 6e 'feedback'], Ton
792f0 65 2e 46 65 65 64 62 61 63 6b 45 66 66 65 63 74 e.FeedbackEffect
79300 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 .defaults);..
79310 20 20 20 20 20 54 6f 6e 65 2e 53 74 65 72 65 6f Tone.Stereo
79320 45 66 66 65 63 74 2e 63 61 6c 6c 28 74 68 69 73 Effect.call(this
79330 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 , options);..
79340 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
79350 63 6f 6e 74 72 6f 6c 73 20 74 68 65 20 61 6d 6f controls the amo
79360 75 6e 74 20 6f 66 20 66 65 65 64 62 61 63 6b 0a unt of feedback.
79370 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e 6f ... * @type {No
79380 72 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 09 20 2a rmalRange}.... *
79390 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f @signal.... */
793a0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 .. this.f
793b0 65 65 64 62 61 63 6b 20 3d 20 6e 65 77 20 54 6f eedback = new To
793c0 6e 65 2e 53 69 67 6e 61 6c 28 6f 70 74 69 6f 6e ne.Signal(option
793d0 73 2e 66 65 65 64 62 61 63 6b 2c 20 54 6f 6e 65 s.feedback, Tone
793e0 2e 54 79 70 65 2e 4e 6f 72 6d 61 6c 52 61 6e 67 .Type.NormalRang
793f0 65 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a e);.. /**
79400 0a 09 09 09 20 2a 20 20 74 68 65 20 6c 65 66 74 .... * the left
79410 20 73 69 64 65 20 66 65 65 62 61 63 6b 0a 09 09 side feeback...
79420 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 . * @type {Tone
79430 2e 47 61 69 6e 7d 0a 09 09 09 20 2a 20 20 40 70 .Gain}.... * @p
79440 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
79450 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 65 65 this._fee
79460 64 62 61 63 6b 4c 20 3d 20 6e 65 77 20 54 6f 6e dbackL = new Ton
79470 65 2e 47 61 69 6e 28 29 3b 0a 09 20 20 20 20 20 e.Gain();..
79480 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 /**.... * th
79490 65 20 72 69 67 68 74 20 73 69 64 65 20 66 65 65 e right side fee
794a0 62 61 63 6b 0a 09 09 09 20 2a 20 20 40 74 79 70 back.... * @typ
794b0 65 20 7b 54 6f 6e 65 2e 47 61 69 6e 7d 0a 09 09 e {Tone.Gain}...
794c0 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
794d0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
794e0 69 73 2e 5f 66 65 65 64 62 61 63 6b 52 20 3d 20 is._feedbackR =
794f0 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 29 3b new Tone.Gain();
79500 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 6e .. //conn
79510 65 63 74 20 69 74 20 75 70 0a 09 20 20 20 20 20 ect it up..
79520 20 20 20 74 68 69 73 2e 65 66 66 65 63 74 52 65 this.effectRe
79530 74 75 72 6e 4c 2e 63 68 61 69 6e 28 74 68 69 73 turnL.chain(this
79540 2e 5f 66 65 65 64 62 61 63 6b 4c 2c 20 74 68 69 ._feedbackL, thi
79550 73 2e 65 66 66 65 63 74 53 65 6e 64 4c 29 3b 0a s.effectSendL);.
79560 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 66 . this.ef
79570 66 65 63 74 52 65 74 75 72 6e 52 2e 63 68 61 69 fectReturnR.chai
79580 6e 28 74 68 69 73 2e 5f 66 65 65 64 62 61 63 6b n(this._feedback
79590 52 2c 20 74 68 69 73 2e 65 66 66 65 63 74 53 65 R, this.effectSe
795a0 6e 64 52 29 3b 0a 09 20 20 20 20 20 20 20 20 74 ndR);.. t
795b0 68 69 73 2e 66 65 65 64 62 61 63 6b 2e 66 61 6e his.feedback.fan
795c0 28 74 68 69 73 2e 5f 66 65 65 64 62 61 63 6b 4c (this._feedbackL
795d0 2e 67 61 69 6e 2c 20 74 68 69 73 2e 5f 66 65 65 .gain, this._fee
795e0 64 62 61 63 6b 52 2e 67 61 69 6e 29 3b 0a 09 20 dbackR.gain);..
795f0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 this._rea
79600 64 4f 6e 6c 79 28 5b 27 66 65 65 64 62 61 63 6b dOnly(['feedback
79610 27 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ']);.. };..
79620 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
79630 6e 65 2e 53 74 65 72 65 6f 46 65 65 64 62 61 63 ne.StereoFeedbac
79640 6b 45 66 66 65 63 74 2c 20 54 6f 6e 65 2e 46 65 kEffect, Tone.Fe
79650 65 64 62 61 63 6b 45 66 66 65 63 74 29 3b 0a 09 edbackEffect);..
79660 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 63 6c /**... * cl
79670 65 61 6e 20 75 70 0a 09 09 20 2a 20 20 40 72 65 ean up... * @re
79680 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 74 65 72 turns {Tone.Ster
79690 65 6f 46 65 65 64 62 61 63 6b 45 66 66 65 63 74 eoFeedbackEffect
796a0 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 } this... */..
796b0 20 20 54 6f 6e 65 2e 53 74 65 72 65 6f 46 65 65 Tone.StereoFee
796c0 64 62 61 63 6b 45 66 66 65 63 74 2e 70 72 6f 74 dbackEffect.prot
796d0 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 otype.dispose =
796e0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
796f0 20 20 20 20 20 20 20 54 6f 6e 65 2e 53 74 65 72 Tone.Ster
79700 65 6f 45 66 66 65 63 74 2e 70 72 6f 74 6f 74 79 eoEffect.prototy
79710 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 pe.dispose.call(
79720 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 this);..
79730 74 68 69 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b this._writable([
79740 27 66 65 65 64 62 61 63 6b 27 5d 29 3b 0a 09 20 'feedback']);..
79750 20 20 20 20 20 20 20 74 68 69 73 2e 66 65 65 64 this.feed
79760 62 61 63 6b 2e 64 69 73 70 6f 73 65 28 29 3b 0a back.dispose();.
79770 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 65 . this.fe
79780 65 64 62 61 63 6b 20 3d 20 6e 75 6c 6c 3b 0a 09 edback = null;..
79790 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 65 this._fe
797a0 65 64 62 61 63 6b 4c 2e 64 69 73 70 6f 73 65 28 edbackL.dispose(
797b0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
797c0 2e 5f 66 65 65 64 62 61 63 6b 4c 20 3d 20 6e 75 ._feedbackL = nu
797d0 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
797e0 73 2e 5f 66 65 65 64 62 61 63 6b 52 2e 64 69 73 s._feedbackR.dis
797f0 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
79800 20 74 68 69 73 2e 5f 66 65 65 64 62 61 63 6b 52 this._feedbackR
79810 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
79820 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
79830 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 };.. retu
79840 72 6e 20 54 6f 6e 65 2e 53 74 65 72 65 6f 46 65 rn Tone.StereoFe
79850 65 64 62 61 63 6b 45 66 66 65 63 74 3b 0a 09 7d edbackEffect;..}
79860 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
79870 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
79880 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a .. /**... *
79890 20 20 40 63 6c 61 73 73 20 41 70 70 6c 69 65 73 @class Applies
798a0 20 61 20 77 69 64 74 68 20 66 61 63 74 6f 72 20 a width factor
798b0 74 6f 20 74 68 65 20 6d 69 64 2f 73 69 64 65 20 to the mid/side
798c0 73 65 70 65 72 61 74 69 6f 6e 2e 20 0a 09 09 20 seperation. ...
798d0 2a 20 20 20 20 20 20 20 20 20 30 20 69 73 20 61 * 0 is a
798e0 6c 6c 20 6d 69 64 20 61 6e 64 20 31 20 69 73 20 ll mid and 1 is
798f0 61 6c 6c 20 73 69 64 65 2e 0a 09 09 20 2a 20 20 all side.... *
79900 20 20 20 20 20 20 20 41 6c 67 6f 72 69 74 68 6d Algorithm
79910 20 66 6f 75 6e 64 20 69 6e 20 5b 6b 76 72 61 75 found in [kvrau
79920 64 69 6f 20 66 6f 72 75 6d 73 5d 28 68 74 74 70 dio forums](http
79930 3a 2f 2f 77 77 77 2e 6b 76 72 61 75 64 69 6f 2e ://www.kvraudio.
79940 63 6f 6d 2f 66 6f 72 75 6d 2f 76 69 65 77 74 6f com/forum/viewto
79950 70 69 63 2e 70 68 70 3f 74 3d 32 31 32 35 38 37 pic.php?t=212587
79960 29 2e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 ).... *
79970 3c 62 72 3e 3c 62 72 3e 0a 09 09 20 2a 20 20 20 <br><br>... *
79980 20 20 20 20 20 20 3c 63 6f 64 65 3e 0a 09 09 20 <code>...
79990 2a 20 20 20 20 20 20 20 20 20 4d 69 64 20 2a 3d * Mid *=
799a0 20 32 2a 28 31 2d 77 69 64 74 68 29 3c 62 72 3e 2*(1-width)<br>
799b0 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 53 69 ... * Si
799c0 64 65 20 2a 3d 20 32 2a 77 69 64 74 68 0a 09 09 de *= 2*width...
799d0 20 2a 20 20 20 20 20 20 20 20 20 3c 2f 63 6f 64 * </cod
799e0 65 3e 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 65 e>... *... * @e
799f0 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 4d 69 64 xtends {Tone.Mid
79a00 53 69 64 65 45 66 66 65 63 74 7d 0a 09 09 20 2a SideEffect}... *
79a10 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 @constructor..
79a20 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 4e 6f 72 . * @param {Nor
79a30 6d 61 6c 52 61 6e 67 65 7c 4f 62 6a 65 63 74 7d malRange|Object}
79a40 20 5b 77 69 64 74 68 5d 20 54 68 65 20 73 74 65 [width] The ste
79a50 72 65 6f 20 77 69 64 74 68 2e 20 41 20 77 69 64 reo width. A wid
79a60 74 68 20 6f 66 20 30 20 69 73 20 6d 6f 6e 6f 20 th of 0 is mono
79a70 61 6e 64 20 31 20 69 73 20 73 74 65 72 65 6f 2e and 1 is stereo.
79a80 20 30 2e 35 20 69 73 20 6e 6f 20 63 68 61 6e 67 0.5 is no chang
79a90 65 2e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f e.... */.. To
79aa0 6e 65 2e 53 74 65 72 65 6f 57 69 64 65 6e 65 72 ne.StereoWidener
79ab0 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
79ac0 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 .. var op
79ad0 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 tions = this.opt
79ae0 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d ionsObject(argum
79af0 65 6e 74 73 2c 20 5b 27 77 69 64 74 68 27 5d 2c ents, ['width'],
79b00 20 54 6f 6e 65 2e 53 74 65 72 65 6f 57 69 64 65 Tone.StereoWide
79b10 6e 65 72 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 ner.defaults);..
79b20 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 4d 69 64 Tone.Mid
79b30 53 69 64 65 45 66 66 65 63 74 2e 63 61 6c 6c 28 SideEffect.call(
79b40 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a this, options);.
79b50 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
79b60 20 2a 20 20 54 68 65 20 77 69 64 74 68 20 63 6f * The width co
79b70 6e 74 72 6f 6c 2e 20 30 20 3d 20 31 30 30 25 20 ntrol. 0 = 100%
79b80 6d 69 64 2e 20 31 20 3d 20 31 30 30 25 20 73 69 mid. 1 = 100% si
79b90 64 65 2e 20 30 2e 35 20 3d 20 6e 6f 20 63 68 61 de. 0.5 = no cha
79ba0 6e 67 65 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 nge. .... * @ty
79bb0 70 65 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d pe {NormalRange}
79bc0 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a .... * @signal.
79bd0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
79be0 74 68 69 73 2e 77 69 64 74 68 20 3d 20 6e 65 77 this.width = new
79bf0 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 6f 70 74 Tone.Signal(opt
79c00 69 6f 6e 73 2e 77 69 64 74 68 2c 20 54 6f 6e 65 ions.width, Tone
79c10 2e 54 79 70 65 2e 4e 6f 72 6d 61 6c 52 61 6e 67 .Type.NormalRang
79c20 65 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a e);.. /**
79c30 0a 09 09 09 20 2a 20 20 4d 69 64 20 6d 75 6c 74 .... * Mid mult
79c40 69 70 6c 69 65 72 0a 09 09 09 20 2a 20 20 40 74 iplier.... * @t
79c50 79 70 65 20 7b 54 6f 6e 65 2e 45 78 70 72 7d 0a ype {Tone.Expr}.
79c60 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
79c70 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
79c80 74 68 69 73 2e 5f 6d 69 64 4d 75 6c 74 20 3d 20 this._midMult =
79c90 6e 65 77 20 54 6f 6e 65 2e 45 78 70 72 28 27 24 new Tone.Expr('$
79ca0 30 20 2a 20 28 24 31 20 2a 20 28 31 20 2d 20 24 0 * ($1 * (1 - $
79cb0 32 29 29 27 29 3b 0a 09 20 20 20 20 20 20 20 20 2))');..
79cc0 2f 2a 2a 0a 09 09 09 20 2a 20 20 53 69 64 65 20 /**.... * Side
79cd0 6d 75 6c 74 69 70 6c 69 65 72 0a 09 09 09 20 2a multiplier.... *
79ce0 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 45 78 @type {Tone.Ex
79cf0 70 72 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 pr}.... * @priv
79d00 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
79d10 20 20 20 20 74 68 69 73 2e 5f 73 69 64 65 4d 75 this._sideMu
79d20 6c 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 45 78 lt = new Tone.Ex
79d30 70 72 28 27 24 30 20 2a 20 28 24 31 20 2a 20 24 pr('$0 * ($1 * $
79d40 32 29 27 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2)');.. /
79d50 2a 2a 0a 09 09 09 20 2a 20 20 63 6f 6e 73 74 61 **.... * consta
79d60 6e 74 20 6f 75 74 70 75 74 20 6f 66 20 32 0a 09 nt output of 2..
79d70 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e .. * @type {Ton
79d80 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 e}.... * @priva
79d90 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
79da0 20 20 20 74 68 69 73 2e 5f 74 77 6f 20 3d 20 6e this._two = n
79db0 65 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 32 ew Tone.Signal(2
79dc0 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 74 68 );.. //th
79dd0 65 20 6d 69 64 20 63 68 61 69 6e 0a 09 20 20 20 e mid chain..
79de0 20 20 20 20 20 74 68 69 73 2e 5f 74 77 6f 2e 63 this._two.c
79df0 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 6d 69 64 onnect(this._mid
79e00 4d 75 6c 74 2c 20 30 2c 20 31 29 3b 0a 09 20 20 Mult, 0, 1);..
79e10 20 20 20 20 20 20 74 68 69 73 2e 77 69 64 74 68 this.width
79e20 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 6d .connect(this._m
79e30 69 64 4d 75 6c 74 2c 20 30 2c 20 32 29 3b 0a 09 idMult, 0, 2);..
79e40 20 20 20 20 20 20 20 20 2f 2f 74 68 65 20 73 69 //the si
79e50 64 65 20 63 68 61 69 6e 0a 09 20 20 20 20 20 20 de chain..
79e60 20 20 74 68 69 73 2e 5f 74 77 6f 2e 63 6f 6e 6e this._two.conn
79e70 65 63 74 28 74 68 69 73 2e 5f 73 69 64 65 4d 75 ect(this._sideMu
79e80 6c 74 2c 20 30 2c 20 31 29 3b 0a 09 20 20 20 20 lt, 0, 1);..
79e90 20 20 20 20 74 68 69 73 2e 77 69 64 74 68 2e 63 this.width.c
79ea0 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 73 69 64 onnect(this._sid
79eb0 65 4d 75 6c 74 2c 20 30 2c 20 32 29 3b 0a 09 20 eMult, 0, 2);..
79ec0 20 20 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 63 74 //connect
79ed0 20 69 74 20 74 6f 20 74 68 65 20 65 66 66 65 63 it to the effec
79ee0 74 20 73 65 6e 64 2f 72 65 74 75 72 6e 0a 09 20 t send/return..
79ef0 20 20 20 20 20 20 20 74 68 69 73 2e 6d 69 64 53 this.midS
79f00 65 6e 64 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f end.chain(this._
79f10 6d 69 64 4d 75 6c 74 2c 20 74 68 69 73 2e 6d 69 midMult, this.mi
79f20 64 52 65 74 75 72 6e 29 3b 0a 09 20 20 20 20 20 dReturn);..
79f30 20 20 20 74 68 69 73 2e 73 69 64 65 53 65 6e 64 this.sideSend
79f40 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f 73 69 64 .chain(this._sid
79f50 65 4d 75 6c 74 2c 20 74 68 69 73 2e 73 69 64 65 eMult, this.side
79f60 52 65 74 75 72 6e 29 3b 0a 09 20 20 20 20 20 20 Return);..
79f70 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 this._readOnly
79f80 28 5b 27 77 69 64 74 68 27 5d 29 3b 0a 09 20 20 (['width']);..
79f90 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 };.. Tone.e
79fa0 78 74 65 6e 64 28 54 6f 6e 65 2e 53 74 65 72 65 xtend(Tone.Stere
79fb0 6f 57 69 64 65 6e 65 72 2c 20 54 6f 6e 65 2e 4d oWidener, Tone.M
79fc0 69 64 53 69 64 65 45 66 66 65 63 74 29 3b 0a 09 idSideEffect);..
79fd0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 /**... * th
79fe0 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 73 e default values
79ff0 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 ... * @static..
7a000 09 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 . * @type {Obje
7a010 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ct}... */.. T
7a020 6f 6e 65 2e 53 74 65 72 65 6f 57 69 64 65 6e 65 one.StereoWidene
7a030 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 20 27 r.defaults = { '
7a040 77 69 64 74 68 27 3a 20 30 2e 35 20 7d 3b 0a 09 width': 0.5 };..
7a050 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c /**... * Cl
7a060 65 61 6e 20 75 70 2e 20 0a 09 09 20 2a 20 20 40 ean up. ... * @
7a070 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 74 returns {Tone.St
7a080 65 72 65 6f 57 69 64 65 6e 65 72 7d 20 74 68 69 ereoWidener} thi
7a090 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
7a0a0 65 2e 53 74 65 72 65 6f 57 69 64 65 6e 65 72 2e e.StereoWidener.
7a0b0 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
7a0c0 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 e = function ()
7a0d0 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e {.. Tone.
7a0e0 4d 69 64 53 69 64 65 45 66 66 65 63 74 2e 70 72 MidSideEffect.pr
7a0f0 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e ototype.dispose.
7a100 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 call(this);..
7a110 20 20 20 20 20 74 68 69 73 2e 5f 77 72 69 74 61 this._writa
7a120 62 6c 65 28 5b 27 77 69 64 74 68 27 5d 29 3b 0a ble(['width']);.
7a130 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 69 . this.wi
7a140 64 74 68 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 dth.dispose();..
7a150 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 69 64 this.wid
7a160 74 68 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 th = null;..
7a170 20 20 20 20 74 68 69 73 2e 5f 6d 69 64 4d 75 6c this._midMul
7a180 74 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 t.dispose();..
7a190 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 69 64 4d this._midM
7a1a0 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ult = null;..
7a1b0 20 20 20 20 20 74 68 69 73 2e 5f 73 69 64 65 4d this._sideM
7a1c0 75 6c 74 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 ult.dispose();..
7a1d0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 69 this._si
7a1e0 64 65 4d 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0a 09 deMult = null;..
7a1f0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 74 77 this._tw
7a200 6f 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 o.dispose();..
7a210 20 20 20 20 20 20 74 68 69 73 2e 5f 74 77 6f 20 this._two
7a220 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
7a230 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
7a240 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
7a250 6e 20 54 6f 6e 65 2e 53 74 65 72 65 6f 57 69 64 n Tone.StereoWid
7a260 65 6e 65 72 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 ener;..});..Modu
7a270 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e le(function (Ton
7a280 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 e) {.. ..
7a290 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 /**... * @class
7a2a0 20 54 6f 6e 65 2e 54 72 65 6d 6f 6c 6f 20 6d 6f Tone.Tremolo mo
7a2b0 64 75 6c 61 74 65 73 20 74 68 65 20 61 6d 70 6c dulates the ampl
7a2c0 69 74 75 64 65 20 6f 66 20 61 6e 20 69 6e 63 6f itude of an inco
7a2d0 6d 69 6e 67 20 73 69 67 6e 61 6c 20 75 73 69 6e ming signal usin
7a2e0 67 20 61 20 54 6f 6e 65 2e 4c 46 4f 2e 0a 09 09 g a Tone.LFO....
7a2f0 20 2a 20 20 20 20 20 20 20 20 20 54 68 65 20 74 * The t
7a300 79 70 65 2c 20 66 72 65 71 75 65 6e 63 79 2c 20 ype, frequency,
7a310 61 6e 64 20 64 65 70 74 68 20 6f 66 20 74 68 65 and depth of the
7a320 20 4c 46 4f 20 69 73 20 63 6f 6e 74 72 6f 6c 6c LFO is controll
7a330 61 62 6c 65 2e 0a 09 09 20 2a 0a 09 09 20 2a 20 able.... *... *
7a340 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e @extends {Tone.
7a350 53 74 65 72 65 6f 45 66 66 65 63 74 7d 0a 09 09 StereoEffect}...
7a360 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 * @constructor
7a370 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 46 ... * @param {F
7a380 72 65 71 75 65 6e 63 79 7d 20 5b 66 72 65 71 75 requency} [frequ
7a390 65 6e 63 79 5d 20 54 68 65 20 72 61 74 65 20 6f ency] The rate o
7a3a0 66 20 74 68 65 20 65 66 66 65 63 74 2e 0a 09 09 f the effect....
7a3b0 20 2a 20 20 40 70 61 72 61 6d 20 7b 4e 6f 72 6d * @param {Norm
7a3c0 61 6c 52 61 6e 67 65 7d 20 5b 64 65 70 74 68 5d alRange} [depth]
7a3d0 20 54 68 65 20 64 65 70 74 68 20 6f 66 20 74 68 The depth of th
7a3e0 65 20 65 66 66 65 63 74 2e 0a 09 09 20 2a 20 20 e effect.... *
7a3f0 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f @example... * //
7a400 63 72 65 61 74 65 20 61 20 74 72 65 6d 6f 6c 6f create a tremolo
7a410 20 61 6e 64 20 73 74 61 72 74 20 69 74 27 73 20 and start it's
7a420 4c 46 4f 0a 09 09 20 2a 20 76 61 72 20 74 72 65 LFO... * var tre
7a430 6d 6f 6c 6f 20 3d 20 6e 65 77 20 54 6f 6e 65 2e molo = new Tone.
7a440 54 72 65 6d 6f 6c 6f 28 39 2c 20 30 2e 37 35 29 Tremolo(9, 0.75)
7a450 2e 74 6f 4d 61 73 74 65 72 28 29 2e 73 74 61 72 .toMaster().star
7a460 74 28 29 3b 0a 09 09 20 2a 20 2f 2f 72 6f 75 74 t();... * //rout
7a470 65 20 61 6e 20 6f 73 63 69 6c 6c 61 74 6f 72 20 e an oscillator
7a480 74 68 72 6f 75 67 68 20 74 68 65 20 74 72 65 6d through the trem
7a490 6f 6c 6f 20 61 6e 64 20 73 74 61 72 74 20 69 74 olo and start it
7a4a0 0a 09 09 20 2a 20 76 61 72 20 6f 73 63 69 6c 6c ... * var oscill
7a4b0 61 74 6f 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e ator = new Tone.
7a4c0 4f 73 63 69 6c 6c 61 74 6f 72 28 29 2e 63 6f 6e Oscillator().con
7a4d0 6e 65 63 74 28 74 72 65 6d 6f 6c 6f 29 2e 73 74 nect(tremolo).st
7a4e0 61 72 74 28 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 art();... */..
7a4f0 20 20 54 6f 6e 65 2e 54 72 65 6d 6f 6c 6f 20 3d Tone.Tremolo =
7a500 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
7a510 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 var opti
7a520 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f ons = this.optio
7a530 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e nsObject(argumen
7a540 74 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 ts, [..
7a550 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 2c 0a 'frequency',.
7a560 09 20 20 20 20 20 20 20 20 20 20 20 20 27 64 65 . 'de
7a570 70 74 68 27 0a 09 20 20 20 20 20 20 20 20 5d 2c pth'.. ],
7a580 20 54 6f 6e 65 2e 54 72 65 6d 6f 6c 6f 2e 64 65 Tone.Tremolo.de
7a590 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 faults);..
7a5a0 20 20 54 6f 6e 65 2e 53 74 65 72 65 6f 45 66 66 Tone.StereoEff
7a5b0 65 63 74 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f ect.call(this, o
7a5c0 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 ptions);..
7a5d0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
7a5e0 20 74 72 65 6d 65 6c 6f 20 4c 46 4f 20 69 6e 20 tremelo LFO in
7a5f0 74 68 65 20 6c 65 66 74 20 63 68 61 6e 6e 65 6c the left channel
7a600 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b .... * @type {
7a610 54 6f 6e 65 2e 4c 46 4f 7d 0a 09 09 09 20 2a 20 Tone.LFO}.... *
7a620 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
7a630 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
7a640 6c 66 6f 4c 20 3d 20 6e 65 77 20 54 6f 6e 65 2e lfoL = new Tone.
7a650 4c 46 4f 28 7b 0a 09 20 20 20 20 20 20 20 20 20 LFO({..
7a660 20 20 20 27 70 68 61 73 65 27 3a 20 6f 70 74 69 'phase': opti
7a670 6f 6e 73 2e 73 70 72 65 61 64 2c 0a 09 20 20 20 ons.spread,..
7a680 20 20 20 20 20 20 20 20 20 27 6d 69 6e 27 3a 20 'min':
7a690 31 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 1,..
7a6a0 27 6d 61 78 27 3a 20 30 0a 09 20 20 20 20 20 20 'max': 0..
7a6b0 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 2f });.. /
7a6c0 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 74 72 **.... * The tr
7a6d0 65 6d 65 6c 6f 20 4c 46 4f 20 69 6e 20 74 68 65 emelo LFO in the
7a6e0 20 6c 65 66 74 20 63 68 61 6e 6e 65 6c 0a 09 09 left channel...
7a6f0 09 20 2a 20 20 40 74 79 70 65 20 20 7b 54 6f 6e . * @type {Ton
7a700 65 2e 4c 46 4f 7d 0a 09 09 09 20 2a 20 20 40 70 e.LFO}.... * @p
7a710 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
7a720 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f this._lfo
7a730 52 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4c 46 4f R = new Tone.LFO
7a740 28 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ({..
7a750 27 70 68 61 73 65 27 3a 20 6f 70 74 69 6f 6e 73 'phase': options
7a760 2e 73 70 72 65 61 64 2c 0a 09 20 20 20 20 20 20 .spread,..
7a770 20 20 20 20 20 20 27 6d 69 6e 27 3a 20 31 2c 0a 'min': 1,.
7a780 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 61 . 'ma
7a790 78 27 3a 20 30 0a 09 20 20 20 20 20 20 20 20 7d x': 0.. }
7a7a0 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
7a7b0 09 09 09 20 2a 20 20 57 68 65 72 65 20 74 68 65 ... * Where the
7a7c0 20 67 61 69 6e 20 69 73 20 6d 75 6c 74 69 70 6c gain is multipl
7a7d0 69 65 64 0a 09 09 09 20 2a 20 20 40 74 79 70 65 ied.... * @type
7a7e0 20 20 7b 54 6f 6e 65 2e 47 61 69 6e 7d 0a 09 09 {Tone.Gain}...
7a7f0 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
7a800 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
7a810 69 73 2e 5f 61 6d 70 6c 69 74 75 64 65 4c 20 3d is._amplitudeL =
7a820 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 29 new Tone.Gain()
7a830 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
7a840 09 09 20 2a 20 20 57 68 65 72 65 20 74 68 65 20 .. * Where the
7a850 67 61 69 6e 20 69 73 20 6d 75 6c 74 69 70 6c 69 gain is multipli
7a860 65 64 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 ed.... * @type
7a870 20 7b 54 6f 6e 65 2e 47 61 69 6e 7d 0a 09 09 09 {Tone.Gain}....
7a880 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
7a890 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
7a8a0 73 2e 5f 61 6d 70 6c 69 74 75 64 65 52 20 3d 20 s._amplitudeR =
7a8b0 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 29 3b new Tone.Gain();
7a8c0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
7a8d0 09 20 2a 20 20 54 68 65 20 66 72 65 71 75 65 6e . * The frequen
7a8e0 63 79 20 6f 66 20 74 68 65 20 74 72 65 6d 6f 6c cy of the tremol
7a8f0 6f 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 o..... * @type
7a900 20 7b 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 09 {Frequency}....
7a910 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 * @signal....
7a920 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
7a930 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 6e 65 77 .frequency = new
7a940 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 6f 70 74 Tone.Signal(opt
7a950 69 6f 6e 73 2e 66 72 65 71 75 65 6e 63 79 2c 20 ions.frequency,
7a960 54 6f 6e 65 2e 54 79 70 65 2e 46 72 65 71 75 65 Tone.Type.Freque
7a970 6e 63 79 29 3b 0a 09 20 20 20 20 20 20 20 20 2f ncy);.. /
7a980 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 64 65 **.... * The de
7a990 70 74 68 20 6f 66 20 74 68 65 20 65 66 66 65 63 pth of the effec
7a9a0 74 2e 20 41 20 64 65 70 74 68 20 6f 66 20 30 2c t. A depth of 0,
7a9b0 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 0a 09 has no effect..
7a9c0 09 09 20 2a 20 20 6f 6e 20 74 68 65 20 61 6d 70 .. * on the amp
7a9d0 6c 69 74 75 64 65 2c 20 61 6e 64 20 61 20 64 65 litude, and a de
7a9e0 70 74 68 20 6f 66 20 31 20 6d 61 6b 65 73 20 74 pth of 1 makes t
7a9f0 68 65 20 61 6d 70 6c 69 74 75 64 65 0a 09 09 09 he amplitude....
7aa00 20 2a 20 20 6d 6f 64 75 6c 61 74 65 20 66 75 6c * modulate ful
7aa10 6c 79 20 62 65 74 77 65 65 6e 20 30 20 61 6e 64 ly between 0 and
7aa20 20 31 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 1..... * @type
7aa30 20 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d 0a {NormalRange}.
7aa40 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 ... * @signal..
7aa50 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
7aa60 68 69 73 2e 64 65 70 74 68 20 3d 20 6e 65 77 20 his.depth = new
7aa70 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 6f 70 74 69 Tone.Signal(opti
7aa80 6f 6e 73 2e 64 65 70 74 68 2c 20 54 6f 6e 65 2e ons.depth, Tone.
7aa90 54 79 70 65 2e 4e 6f 72 6d 61 6c 52 61 6e 67 65 Type.NormalRange
7aaa0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
7aab0 2e 5f 72 65 61 64 4f 6e 6c 79 28 5b 0a 09 20 20 ._readOnly([..
7aac0 20 20 20 20 20 20 20 20 20 20 27 66 72 65 71 75 'frequ
7aad0 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 20 ency',..
7aae0 20 20 20 20 27 64 65 70 74 68 27 0a 09 20 20 20 'depth'..
7aaf0 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 ]);..
7ab00 20 20 74 68 69 73 2e 65 66 66 65 63 74 53 65 6e this.effectSen
7ab10 64 4c 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f 61 dL.chain(this._a
7ab20 6d 70 6c 69 74 75 64 65 4c 2c 20 74 68 69 73 2e mplitudeL, this.
7ab30 65 66 66 65 63 74 52 65 74 75 72 6e 4c 29 3b 0a effectReturnL);.
7ab40 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 66 . this.ef
7ab50 66 65 63 74 53 65 6e 64 52 2e 63 68 61 69 6e 28 fectSendR.chain(
7ab60 74 68 69 73 2e 5f 61 6d 70 6c 69 74 75 64 65 52 this._amplitudeR
7ab70 2c 20 74 68 69 73 2e 65 66 66 65 63 74 52 65 74 , this.effectRet
7ab80 75 72 6e 52 29 3b 0a 09 20 20 20 20 20 20 20 20 urnR);..
7ab90 74 68 69 73 2e 5f 6c 66 6f 4c 2e 63 6f 6e 6e 65 this._lfoL.conne
7aba0 63 74 28 74 68 69 73 2e 5f 61 6d 70 6c 69 74 75 ct(this._amplitu
7abb0 64 65 4c 2e 67 61 69 6e 29 3b 0a 09 20 20 20 20 deL.gain);..
7abc0 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 52 2e 63 this._lfoR.c
7abd0 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 61 6d 70 onnect(this._amp
7abe0 6c 69 74 75 64 65 52 2e 67 61 69 6e 29 3b 0a 09 litudeR.gain);..
7abf0 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 this.fre
7ac00 71 75 65 6e 63 79 2e 66 61 6e 28 74 68 69 73 2e quency.fan(this.
7ac10 5f 6c 66 6f 4c 2e 66 72 65 71 75 65 6e 63 79 2c _lfoL.frequency,
7ac20 20 74 68 69 73 2e 5f 6c 66 6f 52 2e 66 72 65 71 this._lfoR.freq
7ac30 75 65 6e 63 79 29 3b 0a 09 20 20 20 20 20 20 20 uency);..
7ac40 20 74 68 69 73 2e 64 65 70 74 68 2e 66 61 6e 28 this.depth.fan(
7ac50 74 68 69 73 2e 5f 6c 66 6f 52 2e 61 6d 70 6c 69 this._lfoR.ampli
7ac60 74 75 64 65 2c 20 74 68 69 73 2e 5f 6c 66 6f 4c tude, this._lfoL
7ac70 2e 61 6d 70 6c 69 74 75 64 65 29 3b 0a 09 20 20 .amplitude);..
7ac80 20 20 20 20 20 20 74 68 69 73 2e 74 79 70 65 20 this.type
7ac90 3d 20 6f 70 74 69 6f 6e 73 2e 74 79 70 65 3b 0a = options.type;.
7aca0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 70 . this.sp
7acb0 72 65 61 64 20 3d 20 6f 70 74 69 6f 6e 73 2e 73 read = options.s
7acc0 70 72 65 61 64 3b 0a 09 20 20 20 20 7d 3b 0a 09 pread;.. };..
7acd0 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 Tone.extend(
7ace0 54 6f 6e 65 2e 54 72 65 6d 6f 6c 6f 2c 20 54 6f Tone.Tremolo, To
7acf0 6e 65 2e 53 74 65 72 65 6f 45 66 66 65 63 74 29 ne.StereoEffect)
7ad00 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
7ad10 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 @static... * @
7ad20 63 6f 6e 73 74 0a 09 09 20 2a 20 20 40 74 79 70 const... * @typ
7ad30 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f e {Object}... */
7ad40 0a 09 20 20 20 20 54 6f 6e 65 2e 54 72 65 6d 6f .. Tone.Tremo
7ad50 6c 6f 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a lo.defaults = {.
7ad60 09 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 . 'freque
7ad70 6e 63 79 27 3a 20 31 30 2c 0a 09 20 20 20 20 20 ncy': 10,..
7ad80 20 20 20 27 74 79 70 65 27 3a 20 27 73 69 6e 65 'type': 'sine
7ad90 27 2c 0a 09 20 20 20 20 20 20 20 20 27 64 65 70 ',.. 'dep
7ada0 74 68 27 3a 20 30 2e 35 2c 0a 09 20 20 20 20 20 th': 0.5,..
7adb0 20 20 20 27 73 70 72 65 61 64 27 3a 20 31 38 30 'spread': 180
7adc0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
7add0 2a 0a 09 09 20 2a 20 53 74 61 72 74 20 74 68 65 *... * Start the
7ade0 20 74 72 65 6d 6f 6c 6f 2e 0a 09 09 20 2a 20 40 tremolo.... * @
7adf0 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 5b 74 69 param {Time} [ti
7ae00 6d 65 3d 6e 6f 77 5d 20 57 68 65 6e 20 74 68 65 me=now] When the
7ae10 20 74 72 65 6d 6f 6c 6f 20 62 65 67 69 6e 73 2e tremolo begins.
7ae20 0a 09 09 20 2a 20 40 72 65 74 75 72 6e 73 20 7b ... * @returns {
7ae30 54 6f 6e 65 2e 54 72 65 6d 6f 6c 6f 7d 20 74 68 Tone.Tremolo} th
7ae40 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
7ae50 6e 65 2e 54 72 65 6d 6f 6c 6f 2e 70 72 6f 74 6f ne.Tremolo.proto
7ae60 74 79 70 65 2e 73 74 61 72 74 20 3d 20 66 75 6e type.start = fun
7ae70 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 ction (time) {..
7ae80 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 this._lf
7ae90 6f 4c 2e 73 74 61 72 74 28 74 69 6d 65 29 3b 0a oL.start(time);.
7aea0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c . this._l
7aeb0 66 6f 52 2e 73 74 61 72 74 28 74 69 6d 65 29 3b foR.start(time);
7aec0 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
7aed0 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
7aee0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 53 74 6f /**... * Sto
7aef0 70 20 74 68 65 20 74 72 65 6d 6f 6c 6f 2e 0a 09 p the tremolo...
7af00 09 20 2a 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 . * @param {Time
7af10 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 57 68 65 } [time=now] Whe
7af20 6e 20 74 68 65 20 74 72 65 6d 6f 6c 6f 20 73 74 n the tremolo st
7af30 6f 70 73 2e 0a 09 09 20 2a 20 40 72 65 74 75 72 ops.... * @retur
7af40 6e 73 20 7b 54 6f 6e 65 2e 54 72 65 6d 6f 6c 6f ns {Tone.Tremolo
7af50 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 } this... */..
7af60 20 20 54 6f 6e 65 2e 54 72 65 6d 6f 6c 6f 2e 70 Tone.Tremolo.p
7af70 72 6f 74 6f 74 79 70 65 2e 73 74 6f 70 20 3d 20 rototype.stop =
7af80 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 function (time)
7af90 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e {.. this.
7afa0 5f 6c 66 6f 4c 2e 73 74 6f 70 28 74 69 6d 65 29 _lfoL.stop(time)
7afb0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
7afc0 5f 6c 66 6f 52 2e 73 74 6f 70 28 74 69 6d 65 29 _lfoR.stop(time)
7afd0 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
7afe0 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
7aff0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 53 79 . /**... * Sy
7b000 6e 63 20 74 68 65 20 65 66 66 65 63 74 20 74 6f nc the effect to
7b010 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 2e 0a the transport..
7b020 09 09 20 2a 20 40 70 61 72 61 6d 20 7b 54 69 6d .. * @param {Tim
7b030 65 7d 20 5b 64 65 6c 61 79 3d 30 5d 20 44 65 6c e} [delay=0] Del
7b040 61 79 20 74 69 6d 65 20 62 65 66 6f 72 65 20 73 ay time before s
7b050 74 61 72 74 69 6e 67 20 74 68 65 20 65 66 66 65 tarting the effe
7b060 63 74 20 61 66 74 65 72 20 74 68 65 0a 09 09 20 ct after the...
7b070 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
7b080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 T
7b090 72 61 6e 73 70 6f 72 74 20 68 61 73 20 73 74 61 ransport has sta
7b0a0 72 74 65 64 2e 0a 09 09 20 2a 20 40 72 65 74 75 rted.... * @retu
7b0b0 72 6e 73 20 7b 54 6f 6e 65 2e 41 75 74 6f 46 69 rns {Tone.AutoFi
7b0c0 6c 74 65 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f lter} this... */
7b0d0 0a 09 20 20 20 20 54 6f 6e 65 2e 54 72 65 6d 6f .. Tone.Tremo
7b0e0 6c 6f 2e 70 72 6f 74 6f 74 79 70 65 2e 73 79 6e lo.prototype.syn
7b0f0 63 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 64 65 c = function (de
7b100 6c 61 79 29 20 7b 0a 09 20 20 20 20 20 20 20 20 lay) {..
7b110 74 68 69 73 2e 5f 6c 66 6f 4c 2e 73 79 6e 63 28 this._lfoL.sync(
7b120 64 65 6c 61 79 29 3b 0a 09 20 20 20 20 20 20 20 delay);..
7b130 20 74 68 69 73 2e 5f 6c 66 6f 52 2e 73 79 6e 63 this._lfoR.sync
7b140 28 64 65 6c 61 79 29 3b 0a 09 20 20 20 20 20 20 (delay);..
7b150 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
7b160 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
7b170 09 09 20 2a 20 55 6e 73 79 6e 63 20 74 68 65 20 .. * Unsync the
7b180 66 69 6c 74 65 72 20 66 72 6f 6d 20 74 68 65 20 filter from the
7b190 74 72 61 6e 73 70 6f 72 74 0a 09 09 20 2a 20 40 transport... * @
7b1a0 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 54 72 returns {Tone.Tr
7b1b0 65 6d 6f 6c 6f 7d 20 74 68 69 73 0a 09 09 20 2a emolo} this... *
7b1c0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 54 72 65 6d /.. Tone.Trem
7b1d0 6f 6c 6f 2e 70 72 6f 74 6f 74 79 70 65 2e 75 6e olo.prototype.un
7b1e0 73 79 6e 63 20 3d 20 66 75 6e 63 74 69 6f 6e 20 sync = function
7b1f0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 () {.. th
7b200 69 73 2e 5f 6c 66 6f 4c 2e 75 6e 73 79 6e 63 28 is._lfoL.unsync(
7b210 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
7b220 2e 5f 6c 66 6f 52 2e 75 6e 73 79 6e 63 28 29 3b ._lfoR.unsync();
7b230 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
7b240 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
7b250 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 /**... * The
7b260 20 54 72 65 6d 6f 6c 6f 27 73 20 6f 73 63 69 6c Tremolo's oscil
7b270 6c 61 74 6f 72 20 74 79 70 65 2e 0a 09 09 20 2a lator type.... *
7b280 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e @memberOf Tone.
7b290 54 72 65 6d 6f 6c 6f 23 0a 09 09 20 2a 20 40 74 Tremolo#... * @t
7b2a0 79 70 65 20 7b 73 74 72 69 6e 67 7d 0a 09 09 20 ype {string}...
7b2b0 2a 20 40 6e 61 6d 65 20 74 79 70 65 0a 09 09 20 * @name type...
7b2c0 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 */.. Object.d
7b2d0 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f efineProperty(To
7b2e0 6e 65 2e 54 72 65 6d 6f 6c 6f 2e 70 72 6f 74 6f ne.Tremolo.proto
7b2f0 74 79 70 65 2c 20 27 74 79 70 65 27 2c 20 7b 0a type, 'type', {.
7b300 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
7b310 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
7b320 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
7b330 74 68 69 73 2e 5f 6c 66 6f 4c 2e 74 79 70 65 3b this._lfoL.type;
7b340 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
7b350 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
7b360 69 6f 6e 20 28 74 79 70 65 29 20 7b 0a 09 20 20 ion (type) {..
7b370 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
7b380 6c 66 6f 4c 2e 74 79 70 65 20 3d 20 74 79 70 65 lfoL.type = type
7b390 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 ;.. t
7b3a0 68 69 73 2e 5f 6c 66 6f 52 2e 74 79 70 65 20 3d his._lfoR.type =
7b3b0 20 74 79 70 65 3b 0a 09 20 20 20 20 20 20 20 20 type;..
7b3c0 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
7b3d0 2f 2a 2a 20 0a 09 09 20 2a 20 41 6d 6f 75 6e 74 /** ... * Amount
7b3e0 20 6f 66 20 73 74 65 72 65 6f 20 73 70 72 65 61 of stereo sprea
7b3f0 64 2e 20 57 68 65 6e 20 73 65 74 20 74 6f 20 30 d. When set to 0
7b400 2c 20 62 6f 74 68 20 4c 46 4f 27 73 20 77 69 6c , both LFO's wil
7b410 6c 20 62 65 20 70 61 6e 6e 65 64 20 63 65 6e 74 l be panned cent
7b420 72 61 6c 6c 79 2e 0a 09 09 20 2a 20 57 68 65 6e rally.... * When
7b430 20 73 65 74 20 74 6f 20 31 38 30 2c 20 4c 46 4f set to 180, LFO
7b440 27 73 20 77 69 6c 6c 20 62 65 20 70 61 6e 6e 65 's will be panne
7b450 64 20 68 61 72 64 20 6c 65 66 74 20 61 6e 64 20 d hard left and
7b460 72 69 67 68 74 20 72 65 73 70 65 63 74 69 76 65 right respective
7b470 6c 79 2e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 ly.... * @member
7b480 4f 66 20 54 6f 6e 65 2e 54 72 65 6d 6f 6c 6f 23 Of Tone.Tremolo#
7b490 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 44 65 67 ... * @type {Deg
7b4a0 72 65 65 73 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 rees}... * @name
7b4b0 20 73 70 72 65 61 64 0a 09 09 20 2a 2f 0a 09 20 spread... */..
7b4c0 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
7b4d0 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 54 72 Property(Tone.Tr
7b4e0 65 6d 6f 6c 6f 2e 70 72 6f 74 6f 74 79 70 65 2c emolo.prototype,
7b4f0 20 27 73 70 72 65 61 64 27 2c 20 7b 0a 09 20 20 'spread', {..
7b500 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
7b510 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
7b520 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
7b530 73 2e 5f 6c 66 6f 52 2e 70 68 61 73 65 20 2d 20 s._lfoR.phase -
7b540 74 68 69 73 2e 5f 6c 66 6f 4c 2e 70 68 61 73 65 this._lfoL.phase
7b550 3b 20 20 20 20 2f 2f 31 38 30 0a 09 20 20 20 20 ; //180..
7b560 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
7b570 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 73 set: function (s
7b580 70 72 65 61 64 29 20 7b 0a 09 20 20 20 20 20 20 pread) {..
7b590 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 4c this._lfoL
7b5a0 2e 70 68 61 73 65 20 3d 20 39 30 20 2d 20 73 70 .phase = 90 - sp
7b5b0 72 65 61 64 20 2f 20 32 3b 0a 09 20 20 20 20 20 read / 2;..
7b5c0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f this._lfo
7b5d0 52 2e 70 68 61 73 65 20 3d 20 73 70 72 65 61 64 R.phase = spread
7b5e0 20 2f 20 32 20 2b 20 39 30 3b 0a 09 20 20 20 20 / 2 + 90;..
7b5f0 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
7b600 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 63 6c /**... * cl
7b610 65 61 6e 20 75 70 0a 09 09 20 2a 20 20 40 72 65 ean up... * @re
7b620 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 54 72 65 6d turns {Tone.Trem
7b630 6f 6c 6f 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a olo} this... */.
7b640 09 20 20 20 20 54 6f 6e 65 2e 54 72 65 6d 6f 6c . Tone.Tremol
7b650 6f 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 o.prototype.disp
7b660 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ose = function (
7b670 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e ) {.. Ton
7b680 65 2e 53 74 65 72 65 6f 45 66 66 65 63 74 2e 70 e.StereoEffect.p
7b690 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 rototype.dispose
7b6a0 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 .call(this);..
7b6b0 20 20 20 20 20 20 74 68 69 73 2e 5f 77 72 69 74 this._writ
7b6c0 61 62 6c 65 28 5b 0a 09 20 20 20 20 20 20 20 20 able([..
7b6d0 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 2c 'frequency',
7b6e0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 64 .. 'd
7b6f0 65 70 74 68 27 0a 09 20 20 20 20 20 20 20 20 5d epth'.. ]
7b700 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
7b710 2e 5f 6c 66 6f 4c 2e 64 69 73 70 6f 73 65 28 29 ._lfoL.dispose()
7b720 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
7b730 5f 6c 66 6f 4c 20 3d 20 6e 75 6c 6c 3b 0a 09 20 _lfoL = null;..
7b740 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f this._lfo
7b750 52 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 R.dispose();..
7b760 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 6f 52 this._lfoR
7b770 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
7b780 20 20 74 68 69 73 2e 5f 61 6d 70 6c 69 74 75 64 this._amplitud
7b790 65 4c 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 eL.dispose();..
7b7a0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 61 6d 70 this._amp
7b7b0 6c 69 74 75 64 65 4c 20 3d 20 6e 75 6c 6c 3b 0a litudeL = null;.
7b7c0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 61 . this._a
7b7d0 6d 70 6c 69 74 75 64 65 52 2e 64 69 73 70 6f 73 mplitudeR.dispos
7b7e0 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
7b7f0 69 73 2e 5f 61 6d 70 6c 69 74 75 64 65 52 20 3d is._amplitudeR =
7b800 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
7b810 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 20 3d this.frequency =
7b820 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
7b830 74 68 69 73 2e 64 65 70 74 68 20 3d 20 6e 75 6c this.depth = nul
7b840 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 l;.. retu
7b850 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
7b860 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e .. return Ton
7b870 65 2e 54 72 65 6d 6f 6c 6f 3b 0a 09 7d 29 3b 0a e.Tremolo;..});.
7b880 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e .Module(function
7b890 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a (Tone) {.. .
7b8a0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 . /**... * @
7b8b0 63 6c 61 73 73 20 41 20 56 69 62 72 61 74 6f 20 class A Vibrato
7b8c0 65 66 66 65 63 74 20 63 6f 6d 70 6f 73 65 64 20 effect composed
7b8d0 6f 66 20 61 20 54 6f 6e 65 2e 44 65 6c 61 79 20 of a Tone.Delay
7b8e0 61 6e 64 20 61 20 54 6f 6e 65 2e 4c 46 4f 2e 20 and a Tone.LFO.
7b8f0 54 68 65 20 4c 46 4f 0a 09 09 20 2a 20 20 20 20 The LFO... *
7b900 20 20 20 20 20 6d 6f 64 75 6c 61 74 65 73 20 74 modulates t
7b910 68 65 20 64 65 6c 61 79 54 69 6d 65 20 6f 66 20 he delayTime of
7b920 74 68 65 20 64 65 6c 61 79 2c 20 63 61 75 73 69 the delay, causi
7b930 6e 67 20 74 68 65 20 70 69 74 63 68 20 74 6f 20 ng the pitch to
7b940 72 69 73 65 0a 09 09 20 2a 20 20 20 20 20 20 20 rise... *
7b950 20 20 61 6e 64 20 66 61 6c 6c 2e 20 0a 09 09 20 and fall. ...
7b960 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e * @extends {Ton
7b970 65 2e 45 66 66 65 63 74 7d 0a 09 09 20 2a 20 20 e.Effect}... *
7b980 40 70 61 72 61 6d 20 7b 46 72 65 71 75 65 6e 63 @param {Frequenc
7b990 79 7d 20 66 72 65 71 75 65 6e 63 79 20 54 68 65 y} frequency The
7b9a0 20 66 72 65 71 75 65 6e 63 79 20 6f 66 20 74 68 frequency of th
7b9b0 65 20 76 69 62 72 61 74 6f 2e 0a 09 09 20 2a 20 e vibrato.... *
7b9c0 20 40 70 61 72 61 6d 20 7b 4e 6f 72 6d 61 6c 52 @param {NormalR
7b9d0 61 6e 67 65 7d 20 64 65 70 74 68 20 54 68 65 20 ange} depth The
7b9e0 61 6d 6f 75 6e 74 20 74 68 65 20 70 69 74 63 68 amount the pitch
7b9f0 20 69 73 20 6d 6f 64 75 6c 61 74 65 64 2e 0a 09 is modulated...
7ba00 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 56 . */.. Tone.V
7ba10 69 62 72 61 74 6f 20 3d 20 66 75 6e 63 74 69 6f ibrato = functio
7ba20 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
7ba30 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 var options = th
7ba40 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 is.optionsObject
7ba50 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 (arguments, [..
7ba60 20 20 20 20 20 20 20 20 20 20 20 27 66 72 65 71 'freq
7ba70 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 uency',..
7ba80 20 20 20 20 20 27 64 65 70 74 68 27 0a 09 20 20 'depth'..
7ba90 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 56 69 ], Tone.Vi
7baa0 62 72 61 74 6f 2e 64 65 66 61 75 6c 74 73 29 3b brato.defaults);
7bab0 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 45 .. Tone.E
7bac0 66 66 65 63 74 2e 63 61 6c 6c 28 74 68 69 73 2c ffect.call(this,
7bad0 20 6f 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 options);..
7bae0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
7baf0 68 65 20 64 65 6c 61 79 20 6e 6f 64 65 20 75 73 he delay node us
7bb00 65 64 20 66 6f 72 20 74 68 65 20 76 69 62 72 61 ed for the vibra
7bb10 74 6f 20 65 66 66 65 63 74 0a 09 09 09 20 2a 20 to effect.... *
7bb20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 44 65 6c @type {Tone.Del
7bb30 61 79 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 ay}.... * @priv
7bb40 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
7bb50 20 20 20 20 74 68 69 73 2e 5f 64 65 6c 61 79 4e this._delayN
7bb60 6f 64 65 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 44 ode = new Tone.D
7bb70 65 6c 61 79 28 30 2c 20 6f 70 74 69 6f 6e 73 2e elay(0, options.
7bb80 6d 61 78 44 65 6c 61 79 29 3b 0a 09 20 20 20 20 maxDelay);..
7bb90 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
7bba0 68 65 20 4c 46 4f 20 75 73 65 64 20 74 6f 20 63 he LFO used to c
7bbb0 6f 6e 74 72 6f 6c 20 74 68 65 20 76 69 62 72 61 ontrol the vibra
7bbc0 74 6f 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 to.... * @type
7bbd0 7b 54 6f 6e 65 2e 4c 46 4f 7d 0a 09 09 09 20 2a {Tone.LFO}.... *
7bbe0 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
7bbf0 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
7bc00 5f 6c 66 6f 20 3d 20 6e 65 77 20 54 6f 6e 65 2e _lfo = new Tone.
7bc10 4c 46 4f 28 7b 0a 09 20 20 20 20 20 20 20 20 20 LFO({..
7bc20 20 20 20 27 74 79 70 65 27 3a 20 6f 70 74 69 6f 'type': optio
7bc30 6e 73 2e 74 79 70 65 2c 0a 09 20 20 20 20 20 20 ns.type,..
7bc40 20 20 20 20 20 20 27 6d 69 6e 27 3a 20 30 2c 0a 'min': 0,.
7bc50 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 61 . 'ma
7bc60 78 27 3a 20 6f 70 74 69 6f 6e 73 2e 6d 61 78 44 x': options.maxD
7bc70 65 6c 61 79 2c 0a 09 20 20 20 20 20 20 20 20 20 elay,..
7bc80 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 3a 20 'frequency':
7bc90 6f 70 74 69 6f 6e 73 2e 66 72 65 71 75 65 6e 63 options.frequenc
7bca0 79 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 y,..
7bcb0 27 70 68 61 73 65 27 3a 20 2d 39 30 20 20 20 20 'phase': -90
7bcc0 2f 2f 6f 66 66 73 65 20 74 68 65 20 70 68 61 73 //offse the phas
7bcd0 65 20 73 6f 20 74 68 65 20 72 65 73 74 69 6e 67 e so the resting
7bce0 20 70 6f 73 69 74 69 6f 6e 20 69 73 20 69 6e 20 position is in
7bcf0 74 68 65 20 63 65 6e 74 65 72 0a 09 20 20 20 20 the center..
7bd00 20 20 20 20 7d 29 2e 73 74 61 72 74 28 29 2e 63 }).start().c
7bd10 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 64 65 6c onnect(this._del
7bd20 61 79 4e 6f 64 65 2e 64 65 6c 61 79 54 69 6d 65 ayNode.delayTime
7bd30 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
7bd40 09 09 09 20 2a 20 20 54 68 65 20 66 72 65 71 75 ... * The frequ
7bd50 65 6e 63 79 20 6f 66 20 74 68 65 20 76 69 62 72 ency of the vibr
7bd60 61 74 6f 0a 09 09 09 20 2a 20 20 40 74 79 70 65 ato.... * @type
7bd70 20 7b 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 09 {Frequency}....
7bd80 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 * @signal....
7bd90 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
7bda0 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 74 68 69 .frequency = thi
7bdb0 73 2e 5f 6c 66 6f 2e 66 72 65 71 75 65 6e 63 79 s._lfo.frequency
7bdc0 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
7bdd0 09 09 20 2a 20 20 54 68 65 20 64 65 70 74 68 20 .. * The depth
7bde0 6f 66 20 74 68 65 20 76 69 62 72 61 74 6f 2e 20 of the vibrato.
7bdf0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e .... * @type {N
7be00 6f 72 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 09 20 ormalRange}....
7be10 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a * @signal.... *
7be20 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
7be30 64 65 70 74 68 20 3d 20 74 68 69 73 2e 5f 6c 66 depth = this._lf
7be40 6f 2e 61 6d 70 6c 69 74 75 64 65 3b 0a 09 20 20 o.amplitude;..
7be50 20 20 20 20 20 20 74 68 69 73 2e 64 65 70 74 68 this.depth
7be60 2e 76 61 6c 75 65 20 3d 20 6f 70 74 69 6f 6e 73 .value = options
7be70 2e 64 65 70 74 68 3b 0a 09 20 20 20 20 20 20 20 .depth;..
7be80 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 this._readOnly(
7be90 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 [.. '
7bea0 66 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 frequency',..
7beb0 20 20 20 20 20 20 20 20 20 27 64 65 70 74 68 27 'depth'
7bec0 0a 09 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 20 .. ]);..
7bed0 20 20 20 20 20 20 20 74 68 69 73 2e 65 66 66 65 this.effe
7bee0 63 74 53 65 6e 64 2e 63 68 61 69 6e 28 74 68 69 ctSend.chain(thi
7bef0 73 2e 5f 64 65 6c 61 79 4e 6f 64 65 2c 20 74 68 s._delayNode, th
7bf00 69 73 2e 65 66 66 65 63 74 52 65 74 75 72 6e 29 is.effectReturn)
7bf10 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 ;.. };.. T
7bf20 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e one.extend(Tone.
7bf30 56 69 62 72 61 74 6f 2c 20 54 6f 6e 65 2e 45 66 Vibrato, Tone.Ef
7bf40 66 65 63 74 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a fect);.. /**.
7bf50 09 09 20 2a 20 20 54 68 65 20 64 65 66 61 75 6c .. * The defaul
7bf60 74 73 0a 09 09 20 2a 20 20 40 74 79 70 65 20 20 ts... * @type
7bf70 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 20 20 40 {Object}... * @
7bf80 63 6f 6e 73 74 0a 09 09 20 2a 2f 0a 09 20 20 20 const... */..
7bf90 20 54 6f 6e 65 2e 56 69 62 72 61 74 6f 2e 64 65 Tone.Vibrato.de
7bfa0 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 faults = {..
7bfb0 20 20 20 20 27 6d 61 78 44 65 6c 61 79 27 3a 20 'maxDelay':
7bfc0 30 2e 30 30 35 2c 0a 09 20 20 20 20 20 20 20 20 0.005,..
7bfd0 27 66 72 65 71 75 65 6e 63 79 27 3a 20 35 2c 0a 'frequency': 5,.
7bfe0 09 20 20 20 20 20 20 20 20 27 64 65 70 74 68 27 . 'depth'
7bff0 3a 20 30 2e 31 2c 0a 09 20 20 20 20 20 20 20 20 : 0.1,..
7c000 27 74 79 70 65 27 3a 20 27 73 69 6e 65 27 0a 09 'type': 'sine'..
7c010 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
7c020 09 09 20 2a 20 54 79 70 65 20 6f 66 20 6f 73 63 .. * Type of osc
7c030 69 6c 6c 61 74 6f 72 20 61 74 74 61 63 68 65 64 illator attached
7c040 20 74 6f 20 74 68 65 20 56 69 62 72 61 74 6f 2e to the Vibrato.
7c050 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 ... * @memberOf
7c060 54 6f 6e 65 2e 56 69 62 72 61 74 6f 23 0a 09 09 Tone.Vibrato#...
7c070 20 2a 20 40 74 79 70 65 20 7b 73 74 72 69 6e 67 * @type {string
7c080 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 74 79 70 }... * @name typ
7c090 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a e... */.. Obj
7c0a0 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
7c0b0 74 79 28 54 6f 6e 65 2e 56 69 62 72 61 74 6f 2e ty(Tone.Vibrato.
7c0c0 70 72 6f 74 6f 74 79 70 65 2c 20 27 74 79 70 65 prototype, 'type
7c0d0 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 ', {.. ge
7c0e0 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b t: function () {
7c0f0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
7c100 74 75 72 6e 20 74 68 69 73 2e 5f 6c 66 6f 2e 74 turn this._lfo.t
7c110 79 70 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c ype;.. },
7c120 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 .. set: f
7c130 75 6e 63 74 69 6f 6e 20 28 74 79 70 65 29 20 7b unction (type) {
7c140 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
7c150 69 73 2e 5f 6c 66 6f 2e 74 79 70 65 20 3d 20 74 is._lfo.type = t
7c160 79 70 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a ype;.. }.
7c170 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a . });.. /*
7c180 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 *... * Clean up
7c190 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 .... * @returns
7c1a0 20 7b 54 6f 6e 65 2e 56 69 62 72 61 74 6f 7d 20 {Tone.Vibrato}
7c1b0 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
7c1c0 54 6f 6e 65 2e 56 69 62 72 61 74 6f 2e 70 72 6f Tone.Vibrato.pro
7c1d0 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d totype.dispose =
7c1e0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
7c1f0 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 45 66 66 Tone.Eff
7c200 65 63 74 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 ect.prototype.di
7c210 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 spose.call(this)
7c220 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
7c230 5f 64 65 6c 61 79 4e 6f 64 65 2e 64 69 73 70 6f _delayNode.dispo
7c240 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
7c250 68 69 73 2e 5f 64 65 6c 61 79 4e 6f 64 65 20 3d his._delayNode =
7c260 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
7c270 74 68 69 73 2e 5f 6c 66 6f 2e 64 69 73 70 6f 73 this._lfo.dispos
7c280 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
7c290 69 73 2e 5f 6c 66 6f 20 3d 20 6e 75 6c 6c 3b 0a is._lfo = null;.
7c2a0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 77 . this._w
7c2b0 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 20 20 ritable([..
7c2c0 20 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 'frequenc
7c2d0 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 y',..
7c2e0 20 27 64 65 70 74 68 27 0a 09 20 20 20 20 20 20 'depth'..
7c2f0 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 ]);.. t
7c300 68 69 73 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 his.frequency =
7c310 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 null;.. t
7c320 68 69 73 2e 64 65 70 74 68 20 3d 20 6e 75 6c 6c his.depth = null
7c330 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 ;.. };.. r
7c340 65 74 75 72 6e 20 54 6f 6e 65 2e 56 69 62 72 61 eturn Tone.Vibra
7c350 74 6f 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 to;..});..Module
7c360 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 (function (Tone)
7c370 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a {.. .. /*
7c380 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 20 *... * @class
7c390 54 6f 6e 65 2e 45 76 65 6e 74 20 61 62 73 74 72 Tone.Event abstr
7c3a0 61 63 74 73 20 61 77 61 79 20 54 6f 6e 65 2e 54 acts away Tone.T
7c3b0 72 61 6e 73 70 6f 72 74 2e 73 63 68 65 64 75 6c ransport.schedul
7c3c0 65 20 61 6e 64 20 70 72 6f 76 69 64 65 73 20 61 e and provides a
7c3d0 20 73 63 68 65 64 75 6c 61 62 6c 65 0a 09 09 20 schedulable...
7c3e0 2a 20 20 20 20 20 20 20 20 20 20 63 61 6c 6c 62 * callb
7c3f0 61 63 6b 20 66 6f 72 20 61 20 73 69 6e 67 6c 65 ack for a single
7c400 20 6f 72 20 72 65 70 65 61 74 61 62 6c 65 20 65 or repeatable e
7c410 76 65 6e 74 73 20 61 6c 6f 6e 67 20 74 68 65 20 vents along the
7c420 74 69 6d 65 6c 69 6e 65 2e 20 0a 09 09 20 2a 0a timeline. ... *.
7c430 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b .. * @extends {
7c440 54 6f 6e 65 7d 0a 09 09 20 2a 20 20 40 70 61 72 Tone}... * @par
7c450 61 6d 20 7b 66 75 6e 63 74 69 6f 6e 7d 20 63 61 am {function} ca
7c460 6c 6c 62 61 63 6b 20 54 68 65 20 63 61 6c 6c 62 llback The callb
7c470 61 63 6b 20 74 6f 20 69 6e 76 6f 6b 65 20 61 74 ack to invoke at
7c480 20 74 68 65 20 74 69 6d 65 2e 20 0a 09 09 20 2a the time. ... *
7c490 20 20 40 70 61 72 61 6d 20 7b 2a 7d 20 76 61 6c @param {*} val
7c4a0 75 65 20 54 68 65 20 76 61 6c 75 65 20 6f 72 20 ue The value or
7c4b0 76 61 6c 75 65 73 20 77 68 69 63 68 20 73 68 6f values which sho
7c4c0 75 6c 64 20 62 65 20 70 61 73 73 65 64 20 74 6f uld be passed to
7c4d0 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 ... *
7c4e0 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 63 the c
7c4f0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e allback function
7c500 20 6f 6e 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 20 on invocation.
7c510 20 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 ... * @example
7c520 0a 09 09 20 2a 20 76 61 72 20 63 68 6f 72 64 20 ... * var chord
7c530 3d 20 6e 65 77 20 54 6f 6e 65 2e 45 76 65 6e 74 = new Tone.Event
7c540 28 66 75 6e 63 74 69 6f 6e 28 74 69 6d 65 2c 20 (function(time,
7c550 63 68 6f 72 64 29 7b 0a 09 09 20 2a 20 09 2f 2f chord){... * .//
7c560 74 68 65 20 63 68 6f 72 64 20 61 73 20 77 65 6c the chord as wel
7c570 6c 20 61 73 20 74 68 65 20 65 78 61 63 74 20 74 l as the exact t
7c580 69 6d 65 20 6f 66 20 74 68 65 20 65 76 65 6e 74 ime of the event
7c590 0a 09 09 20 2a 20 09 2f 2f 61 72 65 20 70 61 73 ... * .//are pas
7c5a0 73 65 64 20 69 6e 20 61 73 20 61 72 67 75 6d 65 sed in as argume
7c5b0 6e 74 73 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 nts to the callb
7c5c0 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 09 09 20 ack function...
7c5d0 2a 20 7d 2c 20 5b 22 44 34 22 2c 20 22 45 34 22 * }, ["D4", "E4"
7c5e0 2c 20 22 46 34 22 5d 29 3b 0a 09 09 20 2a 20 2f , "F4"]);... * /
7c5f0 2f 73 74 61 72 74 20 74 68 65 20 63 68 6f 72 64 /start the chord
7c600 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e at the beginnin
7c610 67 20 6f 66 20 74 68 65 20 74 72 61 6e 73 70 6f g of the transpo
7c620 72 74 20 74 69 6d 65 6c 69 6e 65 0a 09 09 20 2a rt timeline... *
7c630 20 63 68 6f 72 64 2e 73 74 61 72 74 28 29 3b 0a chord.start();.
7c640 09 09 20 2a 20 2f 2f 6c 6f 6f 70 20 69 74 20 65 .. * //loop it e
7c650 76 65 72 79 20 6d 65 61 73 75 72 65 20 66 6f 72 very measure for
7c660 20 38 20 6d 65 61 73 75 72 65 73 0a 09 09 20 2a 8 measures... *
7c670 20 63 68 6f 72 64 2e 6c 6f 6f 70 20 3d 20 38 3b chord.loop = 8;
7c680 0a 09 09 20 2a 20 63 68 6f 72 64 2e 6c 6f 6f 70 ... * chord.loop
7c690 45 6e 64 20 3d 20 22 31 6d 22 3b 0a 09 09 20 2a End = "1m";... *
7c6a0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 76 65 6e /.. Tone.Even
7c6b0 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 t = function ()
7c6c0 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 6f {.. var o
7c6d0 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 ptions = this.op
7c6e0 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 tionsObject(argu
7c6f0 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 20 ments, [..
7c700 20 20 20 20 20 20 27 63 61 6c 6c 62 61 63 6b 27 'callback'
7c710 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
7c720 76 61 6c 75 65 27 0a 09 20 20 20 20 20 20 20 20 value'..
7c730 5d 2c 20 54 6f 6e 65 2e 45 76 65 6e 74 2e 64 65 ], Tone.Event.de
7c740 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 faults);..
7c750 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 4c 6f 6f /**.... * Loo
7c760 70 20 76 61 6c 75 65 0a 09 09 09 20 2a 20 20 40 p value.... * @
7c770 74 79 70 65 20 20 7b 42 6f 6f 6c 65 61 6e 7c 50 type {Boolean|P
7c780 6f 73 69 74 69 76 65 7d 0a 09 09 09 20 2a 20 20 ositive}.... *
7c790 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
7c7a0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c . this._l
7c7b0 6f 6f 70 20 3d 20 6f 70 74 69 6f 6e 73 2e 6c 6f oop = options.lo
7c7c0 6f 70 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a op;.. /**
7c7d0 0a 09 09 09 20 2a 20 20 54 68 65 20 63 61 6c 6c .... * The call
7c7e0 62 61 63 6b 20 74 6f 20 69 6e 76 6f 6b 65 2e 20 back to invoke.
7c7f0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b .... * @type {
7c800 46 75 6e 63 74 69 6f 6e 7d 0a 09 09 09 20 2a 2f Function}.... */
7c810 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 .. this.c
7c820 61 6c 6c 62 61 63 6b 20 3d 20 6f 70 74 69 6f 6e allback = option
7c830 73 2e 63 61 6c 6c 62 61 63 6b 3b 0a 09 20 20 20 s.callback;..
7c840 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
7c850 54 68 65 20 76 61 6c 75 65 20 77 68 69 63 68 20 The value which
7c860 69 73 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 is passed to the
7c870 0a 09 09 09 20 2a 20 20 63 61 6c 6c 62 61 63 6b .... * callback
7c880 20 66 75 6e 63 74 69 6f 6e 2e 0a 09 09 09 20 2a function..... *
7c890 20 20 40 74 79 70 65 20 20 7b 2a 7d 0a 09 09 09 @type {*}....
7c8a0 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
7c8b0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
7c8c0 73 2e 76 61 6c 75 65 20 3d 20 6f 70 74 69 6f 6e s.value = option
7c8d0 73 2e 76 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 s.value;..
7c8e0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 57 68 65 /**.... * Whe
7c8f0 6e 20 74 68 65 20 6e 6f 74 65 20 69 73 20 73 63 n the note is sc
7c900 68 65 64 75 6c 65 64 20 74 6f 20 73 74 61 72 74 heduled to start
7c910 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 ..... * @type
7c920 7b 4e 75 6d 62 65 72 7d 0a 09 09 09 20 2a 20 20 {Number}.... *
7c930 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
7c940 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c . this._l
7c950 6f 6f 70 53 74 61 72 74 20 3d 20 74 68 69 73 2e oopStart = this.
7c960 74 6f 54 69 63 6b 73 28 6f 70 74 69 6f 6e 73 2e toTicks(options.
7c970 6c 6f 6f 70 53 74 61 72 74 29 3b 0a 09 20 20 20 loopStart);..
7c980 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
7c990 57 68 65 6e 20 74 68 65 20 6e 6f 74 65 20 69 73 When the note is
7c9a0 20 73 63 68 65 64 75 6c 65 64 20 74 6f 20 73 74 scheduled to st
7c9b0 61 72 74 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 art..... * @typ
7c9c0 65 20 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 09 20 e {Number}....
7c9d0 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
7c9e0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
7c9f0 2e 5f 6c 6f 6f 70 45 6e 64 20 3d 20 74 68 69 73 ._loopEnd = this
7ca00 2e 74 6f 54 69 63 6b 73 28 6f 70 74 69 6f 6e 73 .toTicks(options
7ca10 2e 6c 6f 6f 70 45 6e 64 29 3b 0a 09 20 20 20 20 .loopEnd);..
7ca20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
7ca30 72 61 63 6b 73 20 74 68 65 20 73 63 68 65 64 75 racks the schedu
7ca40 6c 65 64 20 65 76 65 6e 74 73 0a 09 09 09 20 2a led events.... *
7ca50 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 54 69 @type {Tone.Ti
7ca60 6d 65 6c 69 6e 65 53 74 61 74 65 7d 0a 09 09 09 melineState}....
7ca70 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
7ca80 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
7ca90 73 2e 5f 73 74 61 74 65 20 3d 20 6e 65 77 20 54 s._state = new T
7caa0 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 74 61 74 one.TimelineStat
7cab0 65 28 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 6f e(Tone.State.Sto
7cac0 70 70 65 64 29 3b 0a 09 20 20 20 20 20 20 20 20 pped);..
7cad0 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 70 /**.... * The p
7cae0 6c 61 79 62 61 63 6b 20 73 70 65 65 64 20 6f 66 layback speed of
7caf0 20 74 68 65 20 6e 6f 74 65 2e 20 41 20 73 70 65 the note. A spe
7cb00 65 64 20 6f 66 20 31 0a 09 09 09 20 2a 20 20 69 ed of 1.... * i
7cb10 73 20 6e 6f 20 63 68 61 6e 67 65 2e 20 0a 09 09 s no change. ...
7cb20 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
7cb30 09 20 2a 20 20 40 74 79 70 65 20 7b 50 6f 73 69 . * @type {Posi
7cb40 74 69 76 65 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 tive}.... */..
7cb50 20 20 20 20 20 20 74 68 69 73 2e 5f 70 6c 61 79 this._play
7cb60 62 61 63 6b 52 61 74 65 20 3d 20 31 3b 0a 09 20 backRate = 1;..
7cb70 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
7cb80 20 20 41 20 64 65 6c 61 79 20 74 69 6d 65 20 66 A delay time f
7cb90 72 6f 6d 20 77 68 65 6e 20 74 68 65 20 65 76 65 rom when the eve
7cba0 6e 74 20 69 73 20 73 63 68 65 64 75 6c 65 64 20 nt is scheduled
7cbb0 74 6f 20 73 74 61 72 74 0a 09 09 09 20 2a 20 20 to start.... *
7cbc0 40 74 79 70 65 20 7b 54 69 63 6b 73 7d 0a 09 09 @type {Ticks}...
7cbd0 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
7cbe0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
7cbf0 69 73 2e 5f 73 74 61 72 74 4f 66 66 73 65 74 20 is._startOffset
7cc00 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a = 0;.. /*
7cc10 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 70 72 6f *.... * The pro
7cc20 62 61 62 69 6c 69 74 79 20 74 68 61 74 20 74 68 bability that th
7cc30 65 20 63 61 6c 6c 62 61 63 6b 20 77 69 6c 6c 20 e callback will
7cc40 62 65 20 69 6e 76 6f 6b 65 64 0a 09 09 09 20 2a be invoked.... *
7cc50 20 20 61 74 20 74 68 65 20 73 63 68 65 64 75 6c at the schedul
7cc60 65 64 20 74 69 6d 65 2e 20 0a 09 09 09 20 2a 20 ed time. .... *
7cc70 20 40 74 79 70 65 20 7b 4e 6f 72 6d 61 6c 52 61 @type {NormalRa
7cc80 6e 67 65 7d 0a 09 09 09 20 2a 20 20 40 65 78 61 nge}.... * @exa
7cc90 6d 70 6c 65 0a 09 09 09 20 2a 20 2f 2f 74 68 65 mple.... * //the
7cca0 20 63 61 6c 6c 62 61 63 6b 20 77 69 6c 6c 20 62 callback will b
7ccb0 65 20 69 6e 76 6f 6b 65 64 20 35 30 25 20 6f 66 e invoked 50% of
7ccc0 20 74 68 65 20 74 69 6d 65 0a 09 09 09 20 2a 20 the time.... *
7ccd0 65 76 65 6e 74 2e 70 72 6f 62 61 62 69 6c 69 74 event.probabilit
7cce0 79 20 3d 20 30 2e 35 3b 0a 09 09 09 20 2a 2f 0a y = 0.5;.... */.
7ccf0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 72 . this.pr
7cd00 6f 62 61 62 69 6c 69 74 79 20 3d 20 6f 70 74 69 obability = opti
7cd10 6f 6e 73 2e 70 72 6f 62 61 62 69 6c 69 74 79 3b ons.probability;
7cd20 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
7cd30 09 20 2a 20 20 49 66 20 73 65 74 20 74 6f 20 74 . * If set to t
7cd40 72 75 65 2c 20 77 69 6c 6c 20 61 70 70 6c 79 20 rue, will apply
7cd50 73 6d 61 6c 6c 20 28 2b 2f 2d 30 2e 30 32 20 73 small (+/-0.02 s
7cd60 65 63 6f 6e 64 73 29 20 72 61 6e 64 6f 6d 20 76 econds) random v
7cd70 61 72 69 61 74 69 6f 6e 0a 09 09 09 20 2a 20 20 ariation.... *
7cd80 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 to the callback
7cd90 74 69 6d 65 2e 20 49 66 20 74 68 65 20 76 61 6c time. If the val
7cda0 75 65 20 69 73 20 67 69 76 65 6e 20 61 73 20 61 ue is given as a
7cdb0 20 74 69 6d 65 2c 20 69 74 20 77 69 6c 6c 20 72 time, it will r
7cdc0 61 6e 64 6f 6d 69 7a 65 0a 09 09 09 20 2a 20 20 andomize.... *
7cdd0 62 79 20 74 68 61 74 20 61 6d 6f 75 6e 74 2e 0a by that amount..
7cde0 09 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
7cdf0 09 09 09 20 2a 20 65 76 65 6e 74 2e 68 75 6d 61 ... * event.huma
7ce00 6e 69 7a 65 20 3d 20 74 72 75 65 3b 0a 09 09 09 nize = true;....
7ce10 20 2a 20 20 40 74 79 70 65 20 7b 42 6f 6f 6c 65 * @type {Boole
7ce20 61 6e 7c 54 69 6d 65 7d 0a 09 09 09 20 2a 2f 0a an|Time}.... */.
7ce30 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 68 75 . this.hu
7ce40 6d 61 6e 69 7a 65 20 3d 20 6f 70 74 69 6f 6e 73 manize = options
7ce50 2e 68 75 6d 61 6e 69 7a 65 3b 0a 09 20 20 20 20 .humanize;..
7ce60 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 49 /**.... * I
7ce70 66 20 6d 75 74 65 20 69 73 20 74 72 75 65 2c 20 f mute is true,
7ce80 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 77 6f 6e the callback won
7ce90 27 74 20 62 65 0a 09 09 09 20 2a 20 20 69 6e 76 't be.... * inv
7cea0 6f 6b 65 64 2e 0a 09 09 09 20 2a 20 20 40 74 79 oked..... * @ty
7ceb0 70 65 20 7b 42 6f 6f 6c 65 61 6e 7d 0a 09 09 09 pe {Boolean}....
7cec0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
7ced0 73 2e 6d 75 74 65 20 3d 20 6f 70 74 69 6f 6e 73 s.mute = options
7cee0 2e 6d 75 74 65 3b 0a 09 20 20 20 20 20 20 20 20 .mute;..
7cef0 2f 2f 73 65 74 20 74 68 65 20 69 6e 69 74 69 61 //set the initia
7cf00 6c 20 76 61 6c 75 65 73 0a 09 20 20 20 20 20 20 l values..
7cf10 20 20 74 68 69 73 2e 70 6c 61 79 62 61 63 6b 52 this.playbackR
7cf20 61 74 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 70 6c ate = options.pl
7cf30 61 79 62 61 63 6b 52 61 74 65 3b 0a 09 20 20 20 aybackRate;..
7cf40 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 };.. Tone.ex
7cf50 74 65 6e 64 28 54 6f 6e 65 2e 45 76 65 6e 74 29 tend(Tone.Event)
7cf60 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
7cf70 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c The default val
7cf80 75 65 73 0a 09 09 20 2a 20 20 40 74 79 70 65 20 ues... * @type
7cf90 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 20 20 {Object}... *
7cfa0 40 63 6f 6e 73 74 0a 09 09 20 2a 2f 0a 09 20 20 @const... */..
7cfb0 20 20 54 6f 6e 65 2e 45 76 65 6e 74 2e 64 65 66 Tone.Event.def
7cfc0 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 aults = {..
7cfd0 20 20 20 27 63 61 6c 6c 62 61 63 6b 27 3a 20 54 'callback': T
7cfe0 6f 6e 65 2e 6e 6f 4f 70 2c 0a 09 20 20 20 20 20 one.noOp,..
7cff0 20 20 20 27 6c 6f 6f 70 27 3a 20 66 61 6c 73 65 'loop': false
7d000 2c 0a 09 20 20 20 20 20 20 20 20 27 6c 6f 6f 70 ,.. 'loop
7d010 45 6e 64 27 3a 20 27 31 6d 27 2c 0a 09 20 20 20 End': '1m',..
7d020 20 20 20 20 20 27 6c 6f 6f 70 53 74 61 72 74 27 'loopStart'
7d030 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 70 : 0,.. 'p
7d040 6c 61 79 62 61 63 6b 52 61 74 65 27 3a 20 31 2c laybackRate': 1,
7d050 0a 09 20 20 20 20 20 20 20 20 27 76 61 6c 75 65 .. 'value
7d060 27 3a 20 6e 75 6c 6c 2c 0a 09 20 20 20 20 20 20 ': null,..
7d070 20 20 27 70 72 6f 62 61 62 69 6c 69 74 79 27 3a 'probability':
7d080 20 31 2c 0a 09 20 20 20 20 20 20 20 20 27 6d 75 1,.. 'mu
7d090 74 65 27 3a 20 66 61 6c 73 65 2c 0a 09 20 20 20 te': false,..
7d0a0 20 20 20 20 20 27 68 75 6d 61 6e 69 7a 65 27 3a 'humanize':
7d0b0 20 66 61 6c 73 65 0a 09 20 20 20 20 7d 3b 0a 09 false.. };..
7d0c0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 /**... * Re
7d0d0 73 63 68 65 64 75 6c 65 20 61 6c 6c 20 6f 66 20 schedule all of
7d0e0 74 68 65 20 65 76 65 6e 74 73 20 61 6c 6f 6e 67 the events along
7d0f0 20 74 68 65 20 74 69 6d 65 6c 69 6e 65 0a 09 09 the timeline...
7d100 20 2a 20 20 77 69 74 68 20 74 68 65 20 75 70 64 * with the upd
7d110 61 74 65 64 20 76 61 6c 75 65 73 2e 0a 09 09 20 ated values....
7d120 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d * @param {Time}
7d130 20 61 66 74 65 72 20 4f 6e 6c 79 20 72 65 73 63 after Only resc
7d140 68 65 64 75 6c 65 73 20 65 76 65 6e 74 73 20 61 hedules events a
7d150 66 74 65 72 20 74 68 65 20 67 69 76 65 6e 20 74 fter the given t
7d160 69 6d 65 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 ime.... * @retu
7d170 72 6e 20 20 7b 54 6f 6e 65 2e 45 76 65 6e 74 7d rn {Tone.Event}
7d180 20 20 74 68 69 73 0a 09 09 20 2a 20 20 40 70 72 this... * @pr
7d190 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 ivate... */..
7d1a0 20 54 6f 6e 65 2e 45 76 65 6e 74 2e 70 72 6f 74 Tone.Event.prot
7d1b0 6f 74 79 70 65 2e 5f 72 65 73 63 68 65 64 75 6c otype._reschedul
7d1c0 65 45 76 65 6e 74 73 20 3d 20 66 75 6e 63 74 69 eEvents = functi
7d1d0 6f 6e 20 28 61 66 74 65 72 29 20 7b 0a 09 20 20 on (after) {..
7d1e0 20 20 20 20 20 20 2f 2f 69 66 20 6e 6f 20 61 72 //if no ar
7d1f0 67 75 6d 65 6e 74 20 69 73 20 67 69 76 65 6e 2c gument is given,
7d200 20 73 63 68 65 64 75 6c 65 73 20 61 6c 6c 20 6f schedules all o
7d210 66 20 74 68 65 20 65 76 65 6e 74 73 0a 09 20 20 f the events..
7d220 20 20 20 20 20 20 61 66 74 65 72 20 3d 20 74 68 after = th
7d230 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 61 66 is.defaultArg(af
7d240 74 65 72 2c 20 2d 31 29 3b 0a 09 20 20 20 20 20 ter, -1);..
7d250 20 20 20 74 68 69 73 2e 5f 73 74 61 74 65 2e 66 this._state.f
7d260 6f 72 45 61 63 68 46 72 6f 6d 28 61 66 74 65 72 orEachFrom(after
7d270 2c 20 66 75 6e 63 74 69 6f 6e 20 28 65 76 65 6e , function (even
7d280 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 t) {..
7d290 20 20 76 61 72 20 64 75 72 61 74 69 6f 6e 3b 0a var duration;.
7d2a0 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
7d2b0 28 65 76 65 6e 74 2e 73 74 61 74 65 20 3d 3d 3d (event.state ===
7d2c0 20 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 61 72 Tone.State.Star
7d2d0 74 65 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ted) {..
7d2e0 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69 if (!thi
7d2f0 73 2e 69 73 55 6e 64 65 66 28 65 76 65 6e 74 2e s.isUndef(event.
7d300 69 64 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 id)) {..
7d310 20 20 20 20 20 20 20 20 20 20 20 20 54 6f 6e 65 Tone
7d320 2e 54 72 61 6e 73 70 6f 72 74 2e 63 6c 65 61 72 .Transport.clear
7d330 28 65 76 65 6e 74 2e 69 64 29 3b 0a 09 20 20 20 (event.id);..
7d340 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 }..
7d350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7d360 76 61 72 20 73 74 61 72 74 54 69 63 6b 20 3d 20 var startTick =
7d370 65 76 65 6e 74 2e 74 69 6d 65 20 2b 20 4d 61 74 event.time + Mat
7d380 68 2e 72 6f 75 6e 64 28 74 68 69 73 2e 73 74 61 h.round(this.sta
7d390 72 74 4f 66 66 73 65 74 20 2f 20 74 68 69 73 2e rtOffset / this.
7d3a0 5f 70 6c 61 79 62 61 63 6b 52 61 74 65 29 3b 0a _playbackRate);.
7d3b0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
7d3c0 20 69 66 20 28 74 68 69 73 2e 5f 6c 6f 6f 70 29 if (this._loop)
7d3d0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
7d3e0 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e duration
7d3f0 20 3d 20 49 6e 66 69 6e 69 74 79 3b 0a 09 20 20 = Infinity;..
7d400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7d410 20 20 69 66 20 28 74 68 69 73 2e 69 73 4e 75 6d if (this.isNum
7d420 62 65 72 28 74 68 69 73 2e 5f 6c 6f 6f 70 29 29 ber(this._loop))
7d430 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
7d440 20 20 20 20 20 20 20 20 20 20 20 20 64 75 72 61 dura
7d450 74 69 6f 6e 20 3d 20 74 68 69 73 2e 5f 6c 6f 6f tion = this._loo
7d460 70 20 2a 20 74 68 69 73 2e 5f 67 65 74 4c 6f 6f p * this._getLoo
7d470 70 44 75 72 61 74 69 6f 6e 28 29 3b 0a 09 20 20 pDuration();..
7d480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7d490 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
7d4a0 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 65 78 var nex
7d4b0 74 45 76 65 6e 74 20 3d 20 74 68 69 73 2e 5f 73 tEvent = this._s
7d4c0 74 61 74 65 2e 67 65 74 41 66 74 65 72 28 73 74 tate.getAfter(st
7d4d0 61 72 74 54 69 63 6b 29 3b 0a 09 20 20 20 20 20 artTick);..
7d4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
7d4f0 66 20 28 6e 65 78 74 45 76 65 6e 74 20 21 3d 3d f (nextEvent !==
7d500 20 6e 75 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 null) {..
7d510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7d520 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 4d 61 74 duration = Mat
7d530 68 2e 6d 69 6e 28 64 75 72 61 74 69 6f 6e 2c 20 h.min(duration,
7d540 6e 65 78 74 45 76 65 6e 74 2e 74 69 6d 65 20 2d nextEvent.time -
7d550 20 73 74 61 72 74 54 69 63 6b 29 3b 0a 09 20 20 startTick);..
7d560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7d570 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
7d580 20 20 20 20 20 20 20 20 20 69 66 20 28 64 75 72 if (dur
7d590 61 74 69 6f 6e 20 21 3d 3d 20 49 6e 66 69 6e 69 ation !== Infini
7d5a0 74 79 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ty) {..
7d5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
7d5c0 2f 73 63 68 65 64 75 6c 65 20 61 20 73 74 6f 70 /schedule a stop
7d5d0 20 73 69 6e 63 65 20 69 74 27 73 20 66 69 6e 69 since it's fini
7d5e0 74 65 20 64 75 72 61 74 69 6f 6e 0a 09 20 20 20 te duration..
7d5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7d600 20 20 20 20 20 74 68 69 73 2e 5f 73 74 61 74 65 this._state
7d610 2e 73 65 74 53 74 61 74 65 41 74 54 69 6d 65 28 .setStateAtTime(
7d620 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 6f 70 70 Tone.State.Stopp
7d630 65 64 2c 20 73 74 61 72 74 54 69 63 6b 20 2b 20 ed, startTick +
7d640 64 75 72 61 74 69 6f 6e 20 2b 20 31 29 3b 0a 09 duration + 1);..
7d650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7d660 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e duration
7d670 20 3d 20 54 6f 6e 65 2e 54 69 6d 65 28 64 75 72 = Tone.Time(dur
7d680 61 74 69 6f 6e 2c 20 27 69 27 29 3b 0a 09 20 20 ation, 'i');..
7d690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7d6a0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
7d6b0 20 20 20 20 20 20 20 20 20 76 61 72 20 69 6e 74 var int
7d6c0 65 72 76 61 6c 20 3d 20 54 6f 6e 65 2e 54 69 6d erval = Tone.Tim
7d6d0 65 28 74 68 69 73 2e 5f 67 65 74 4c 6f 6f 70 44 e(this._getLoopD
7d6e0 75 72 61 74 69 6f 6e 28 29 2c 20 27 69 27 29 3b uration(), 'i');
7d6f0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
7d700 20 20 20 20 20 20 65 76 65 6e 74 2e 69 64 20 3d event.id =
7d710 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e Tone.Transport.
7d720 73 63 68 65 64 75 6c 65 52 65 70 65 61 74 28 74 scheduleRepeat(t
7d730 68 69 73 2e 5f 74 69 63 6b 2e 62 69 6e 64 28 74 his._tick.bind(t
7d740 68 69 73 29 2c 20 69 6e 74 65 72 76 61 6c 2c 20 his), interval,
7d750 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 54 69 Tone.TransportTi
7d760 6d 65 28 73 74 61 72 74 54 69 63 6b 2c 20 27 69 me(startTick, 'i
7d770 27 29 2c 20 64 75 72 61 74 69 6f 6e 29 3b 0a 09 '), duration);..
7d780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7d790 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 } else {..
7d7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 76 ev
7d7b0 65 6e 74 2e 69 64 20 3d 20 54 6f 6e 65 2e 54 72 ent.id = Tone.Tr
7d7c0 61 6e 73 70 6f 72 74 2e 73 63 68 65 64 75 6c 65 ansport.schedule
7d7d0 28 74 68 69 73 2e 5f 74 69 63 6b 2e 62 69 6e 64 (this._tick.bind
7d7e0 28 74 68 69 73 29 2c 20 73 74 61 72 74 54 69 63 (this), startTic
7d7f0 6b 20 2b 20 27 69 27 29 3b 0a 09 20 20 20 20 20 k + 'i');..
7d800 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
7d810 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
7d820 20 20 20 20 20 7d 2e 62 69 6e 64 28 74 68 69 73 }.bind(this
7d830 29 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ));.. ret
7d840 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
7d850 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
7d860 20 52 65 74 75 72 6e 73 20 74 68 65 20 70 6c 61 Returns the pla
7d870 79 62 61 63 6b 20 73 74 61 74 65 20 6f 66 20 74 yback state of t
7d880 68 65 20 6e 6f 74 65 2c 20 65 69 74 68 65 72 20 he note, either
7d890 22 73 74 61 72 74 65 64 22 20 6f 72 20 22 73 74 "started" or "st
7d8a0 6f 70 70 65 64 22 2e 0a 09 09 20 2a 20 20 40 74 opped".... * @t
7d8b0 79 70 65 20 7b 53 74 72 69 6e 67 7d 0a 09 09 20 ype {String}...
7d8c0 2a 20 20 40 72 65 61 64 4f 6e 6c 79 0a 09 09 20 * @readOnly...
7d8d0 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
7d8e0 65 2e 45 76 65 6e 74 23 0a 09 09 20 2a 20 20 40 e.Event#... * @
7d8f0 6e 61 6d 65 20 73 74 61 74 65 0a 09 09 20 2a 2f name state... */
7d900 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 .. Object.def
7d910 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 ineProperty(Tone
7d920 2e 45 76 65 6e 74 2e 70 72 6f 74 6f 74 79 70 65 .Event.prototype
7d930 2c 20 27 73 74 61 74 65 27 2c 20 7b 0a 09 20 20 , 'state', {..
7d940 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
7d950 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
7d960 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
7d970 73 2e 5f 73 74 61 74 65 2e 67 65 74 56 61 6c 75 s._state.getValu
7d980 65 41 74 54 69 6d 65 28 54 6f 6e 65 2e 54 72 61 eAtTime(Tone.Tra
7d990 6e 73 70 6f 72 74 2e 74 69 63 6b 73 29 3b 0a 09 nsport.ticks);..
7d9a0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
7d9b0 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
7d9c0 20 20 54 68 65 20 73 74 61 72 74 20 66 72 6f 6d The start from
7d9d0 20 74 68 65 20 73 63 68 65 64 75 6c 65 64 20 73 the scheduled s
7d9e0 74 61 72 74 20 74 69 6d 65 0a 09 09 20 2a 20 20 tart time... *
7d9f0 40 74 79 70 65 20 7b 54 69 63 6b 73 7d 0a 09 09 @type {Ticks}...
7da00 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
7da10 6e 65 2e 45 76 65 6e 74 23 0a 09 09 20 2a 20 20 ne.Event#... *
7da20 40 6e 61 6d 65 20 73 74 61 72 74 4f 66 66 73 65 @name startOffse
7da30 74 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 t... * @private
7da40 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 ... */.. Obje
7da50 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
7da60 79 28 54 6f 6e 65 2e 45 76 65 6e 74 2e 70 72 6f y(Tone.Event.pro
7da70 74 6f 74 79 70 65 2c 20 27 73 74 61 72 74 4f 66 totype, 'startOf
7da80 66 73 65 74 27 2c 20 7b 0a 09 20 20 20 20 20 20 fset', {..
7da90 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
7daa0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
7dab0 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 73 return this._s
7dac0 74 61 72 74 4f 66 66 73 65 74 3b 0a 09 20 20 20 tartOffset;..
7dad0 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
7dae0 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 set: function (
7daf0 6f 66 66 73 65 74 29 20 7b 0a 09 20 20 20 20 20 offset) {..
7db00 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 74 61 this._sta
7db10 72 74 4f 66 66 73 65 74 20 3d 20 6f 66 66 73 65 rtOffset = offse
7db20 74 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 t;.. }..
7db30 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
7db40 09 09 20 2a 20 20 53 74 61 72 74 20 74 68 65 20 .. * Start the
7db50 6e 6f 74 65 20 61 74 20 74 68 65 20 67 69 76 65 note at the give
7db60 6e 20 74 69 6d 65 2e 20 0a 09 09 20 2a 20 20 40 n time. ... * @
7db70 70 61 72 61 6d 20 20 7b 54 69 6d 65 6c 69 6e 65 param {Timeline
7db80 50 6f 73 69 74 69 6f 6e 7d 20 20 74 69 6d 65 20 Position} time
7db90 20 57 68 65 6e 20 74 68 65 20 6e 6f 74 65 20 73 When the note s
7dba0 68 6f 75 6c 64 20 73 74 61 72 74 2e 0a 09 09 20 hould start....
7dbb0 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e * @return {Ton
7dbc0 65 2e 45 76 65 6e 74 7d 20 20 74 68 69 73 0a 09 e.Event} this..
7dbd0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 . */.. Tone.E
7dbe0 76 65 6e 74 2e 70 72 6f 74 6f 74 79 70 65 2e 73 vent.prototype.s
7dbf0 74 61 72 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 tart = function
7dc00 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 (time) {..
7dc10 20 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f time = this.to
7dc20 54 69 63 6b 73 28 74 69 6d 65 29 3b 0a 09 20 20 Ticks(time);..
7dc30 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f if (this._
7dc40 73 74 61 74 65 2e 67 65 74 56 61 6c 75 65 41 74 state.getValueAt
7dc50 54 69 6d 65 28 74 69 6d 65 29 20 3d 3d 3d 20 54 Time(time) === T
7dc60 6f 6e 65 2e 53 74 61 74 65 2e 53 74 6f 70 70 65 one.State.Stoppe
7dc70 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 d) {..
7dc80 20 20 74 68 69 73 2e 5f 73 74 61 74 65 2e 61 64 this._state.ad
7dc90 64 28 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 d({..
7dca0 20 20 20 20 20 27 73 74 61 74 65 27 3a 20 54 6f 'state': To
7dcb0 6e 65 2e 53 74 61 74 65 2e 53 74 61 72 74 65 64 ne.State.Started
7dcc0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
7dcd0 20 20 20 27 74 69 6d 65 27 3a 20 74 69 6d 65 2c 'time': time,
7dce0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
7dcf0 20 20 27 69 64 27 3a 20 75 6e 64 65 66 69 6e 65 'id': undefine
7dd00 64 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d d.. }
7dd10 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
7dd20 74 68 69 73 2e 5f 72 65 73 63 68 65 64 75 6c 65 this._reschedule
7dd30 45 76 65 6e 74 73 28 74 69 6d 65 29 3b 0a 09 20 Events(time);..
7dd40 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
7dd50 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
7dd60 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
7dd70 09 09 20 2a 20 20 53 74 6f 70 20 74 68 65 20 45 .. * Stop the E
7dd80 76 65 6e 74 20 61 74 20 74 68 65 20 67 69 76 65 vent at the give
7dd90 6e 20 74 69 6d 65 2e 0a 09 09 20 2a 20 20 40 70 n time.... * @p
7dda0 61 72 61 6d 20 20 7b 54 69 6d 65 6c 69 6e 65 50 aram {TimelineP
7ddb0 6f 73 69 74 69 6f 6e 7d 20 20 74 69 6d 65 20 20 osition} time
7ddc0 57 68 65 6e 20 74 68 65 20 6e 6f 74 65 20 73 68 When the note sh
7ddd0 6f 75 6c 64 20 73 74 6f 70 2e 0a 09 09 20 2a 20 ould stop.... *
7dde0 20 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e @return {Tone.
7ddf0 45 76 65 6e 74 7d 20 20 74 68 69 73 0a 09 09 20 Event} this...
7de00 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 76 65 */.. Tone.Eve
7de10 6e 74 2e 70 72 6f 74 6f 74 79 70 65 2e 73 74 6f nt.prototype.sto
7de20 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 p = function (ti
7de30 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 me) {.. t
7de40 68 69 73 2e 63 61 6e 63 65 6c 28 74 69 6d 65 29 his.cancel(time)
7de50 3b 0a 09 20 20 20 20 20 20 20 20 74 69 6d 65 20 ;.. time
7de60 3d 20 74 68 69 73 2e 74 6f 54 69 63 6b 73 28 74 = this.toTicks(t
7de70 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 69 ime);.. i
7de80 66 20 28 74 68 69 73 2e 5f 73 74 61 74 65 2e 67 f (this._state.g
7de90 65 74 56 61 6c 75 65 41 74 54 69 6d 65 28 74 69 etValueAtTime(ti
7dea0 6d 65 29 20 3d 3d 3d 20 54 6f 6e 65 2e 53 74 61 me) === Tone.Sta
7deb0 74 65 2e 53 74 61 72 74 65 64 29 20 7b 0a 09 20 te.Started) {..
7dec0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
7ded0 5f 73 74 61 74 65 2e 73 65 74 53 74 61 74 65 41 _state.setStateA
7dee0 74 54 69 6d 65 28 54 6f 6e 65 2e 53 74 61 74 65 tTime(Tone.State
7def0 2e 53 74 6f 70 70 65 64 2c 20 74 69 6d 65 29 3b .Stopped, time);
7df00 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
7df10 72 20 70 72 65 76 69 6f 75 73 45 76 65 6e 74 20 r previousEvent
7df20 3d 20 74 68 69 73 2e 5f 73 74 61 74 65 2e 67 65 = this._state.ge
7df30 74 42 65 66 6f 72 65 28 74 69 6d 65 29 3b 0a 09 tBefore(time);..
7df40 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
7df50 72 65 73 63 68 65 64 75 6c 54 69 6d 65 20 3d 20 reschedulTime =
7df60 74 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 20 time;..
7df70 20 20 20 69 66 20 28 70 72 65 76 69 6f 75 73 45 if (previousE
7df80 76 65 6e 74 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b vent !== null) {
7df90 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
7dfa0 20 20 72 65 73 63 68 65 64 75 6c 54 69 6d 65 20 reschedulTime
7dfb0 3d 20 70 72 65 76 69 6f 75 73 45 76 65 6e 74 2e = previousEvent.
7dfc0 74 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 20 time;..
7dfd0 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 }..
7dfe0 20 20 74 68 69 73 2e 5f 72 65 73 63 68 65 64 75 this._reschedu
7dff0 6c 65 45 76 65 6e 74 73 28 72 65 73 63 68 65 64 leEvents(resched
7e000 75 6c 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 ulTime);..
7e010 20 20 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 }.. ret
7e020 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
7e030 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
7e040 20 43 61 6e 63 65 6c 20 61 6c 6c 20 73 63 68 65 Cancel all sche
7e050 64 75 6c 65 64 20 65 76 65 6e 74 73 20 67 72 65 duled events gre
7e060 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65 71 75 ater than or equ
7e070 61 6c 20 74 6f 20 74 68 65 20 67 69 76 65 6e 20 al to the given
7e080 74 69 6d 65 0a 09 09 20 2a 20 20 40 70 61 72 61 time... * @para
7e090 6d 20 20 7b 54 69 6d 65 6c 69 6e 65 50 6f 73 69 m {TimelinePosi
7e0a0 74 69 6f 6e 7d 20 20 5b 74 69 6d 65 3d 30 5d 20 tion} [time=0]
7e0b0 20 54 68 65 20 74 69 6d 65 20 61 66 74 65 72 20 The time after
7e0c0 77 68 69 63 68 20 65 76 65 6e 74 73 20 77 69 6c which events wil
7e0d0 6c 20 62 65 20 63 61 6e 63 65 6c 2e 0a 09 09 20 l be cancel....
7e0e0 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e * @return {Ton
7e0f0 65 2e 45 76 65 6e 74 7d 20 20 74 68 69 73 0a 09 e.Event} this..
7e100 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 45 . */.. Tone.E
7e110 76 65 6e 74 2e 70 72 6f 74 6f 74 79 70 65 2e 63 vent.prototype.c
7e120 61 6e 63 65 6c 20 3d 20 66 75 6e 63 74 69 6f 6e ancel = function
7e130 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 (time) {..
7e140 20 20 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 64 time = this.d
7e150 65 66 61 75 6c 74 41 72 67 28 74 69 6d 65 2c 20 efaultArg(time,
7e160 2d 49 6e 66 69 6e 69 74 79 29 3b 0a 09 20 20 20 -Infinity);..
7e170 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 73 time = this
7e180 2e 74 6f 54 69 63 6b 73 28 74 69 6d 65 29 3b 0a .toTicks(time);.
7e190 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 . this._s
7e1a0 74 61 74 65 2e 66 6f 72 45 61 63 68 46 72 6f 6d tate.forEachFrom
7e1b0 28 74 69 6d 65 2c 20 66 75 6e 63 74 69 6f 6e 20 (time, function
7e1c0 28 65 76 65 6e 74 29 20 7b 0a 09 20 20 20 20 20 (event) {..
7e1d0 20 20 20 20 20 20 20 54 6f 6e 65 2e 54 72 61 6e Tone.Tran
7e1e0 73 70 6f 72 74 2e 63 6c 65 61 72 28 65 76 65 6e sport.clear(even
7e1f0 74 2e 69 64 29 3b 0a 09 20 20 20 20 20 20 20 20 t.id);..
7e200 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 });.. thi
7e210 73 2e 5f 73 74 61 74 65 2e 63 61 6e 63 65 6c 28 s._state.cancel(
7e220 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 time);..
7e230 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 return this;..
7e240 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
7e250 20 2a 20 20 54 68 65 20 63 61 6c 6c 62 61 63 6b * The callback
7e260 20 66 75 6e 63 74 69 6f 6e 20 69 6e 76 6f 6b 65 function invoke
7e270 72 2e 20 41 6c 73 6f 20 0a 09 09 20 2a 20 20 63 r. Also ... * c
7e280 68 65 63 6b 73 20 69 66 20 74 68 65 20 45 76 65 hecks if the Eve
7e290 6e 74 20 69 73 20 64 6f 6e 65 20 70 6c 61 79 69 nt is done playi
7e2a0 6e 67 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 ng... * @param
7e2b0 20 7b 4e 75 6d 62 65 72 7d 20 20 74 69 6d 65 20 {Number} time
7e2c0 20 54 68 65 20 74 69 6d 65 20 6f 66 20 74 68 65 The time of the
7e2d0 20 65 76 65 6e 74 20 69 6e 20 73 65 63 6f 6e 64 event in second
7e2e0 73 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 s... * @private
7e2f0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
7e300 2e 45 76 65 6e 74 2e 70 72 6f 74 6f 74 79 70 65 .Event.prototype
7e310 2e 5f 74 69 63 6b 20 3d 20 66 75 6e 63 74 69 6f ._tick = functio
7e320 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 n (time) {..
7e330 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 6d 75 if (!this.mu
7e340 74 65 20 26 26 20 74 68 69 73 2e 5f 73 74 61 74 te && this._stat
7e350 65 2e 67 65 74 56 61 6c 75 65 41 74 54 69 6d 65 e.getValueAtTime
7e360 28 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 2e (Tone.Transport.
7e370 74 69 63 6b 73 29 20 3d 3d 3d 20 54 6f 6e 65 2e ticks) === Tone.
7e380 53 74 61 74 65 2e 53 74 61 72 74 65 64 29 20 7b State.Started) {
7e390 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
7e3a0 20 28 74 68 69 73 2e 70 72 6f 62 61 62 69 6c 69 (this.probabili
7e3b0 74 79 20 3c 20 31 20 26 26 20 4d 61 74 68 2e 72 ty < 1 && Math.r
7e3c0 61 6e 64 6f 6d 28 29 20 3e 20 74 68 69 73 2e 70 andom() > this.p
7e3d0 72 6f 62 61 62 69 6c 69 74 79 29 20 7b 0a 09 20 robability) {..
7e3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
7e3f0 65 74 75 72 6e 3b 0a 09 20 20 20 20 20 20 20 20 eturn;..
7e400 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
7e410 20 20 20 69 66 20 28 74 68 69 73 2e 68 75 6d 61 if (this.huma
7e420 6e 69 7a 65 29 20 7b 0a 09 20 20 20 20 20 20 20 nize) {..
7e430 20 20 20 20 20 20 20 20 20 76 61 72 20 76 61 72 var var
7e440 69 61 74 69 6f 6e 20 3d 20 30 2e 30 32 3b 0a 09 iation = 0.02;..
7e450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
7e460 69 66 20 28 21 74 68 69 73 2e 69 73 42 6f 6f 6c if (!this.isBool
7e470 65 61 6e 28 74 68 69 73 2e 68 75 6d 61 6e 69 7a ean(this.humaniz
7e480 65 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 e)) {..
7e490 20 20 20 20 20 20 20 20 20 20 20 76 61 72 69 61 varia
7e4a0 74 69 6f 6e 20 3d 20 74 68 69 73 2e 74 6f 53 65 tion = this.toSe
7e4b0 63 6f 6e 64 73 28 74 68 69 73 2e 68 75 6d 61 6e conds(this.human
7e4c0 69 7a 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 ize);..
7e4d0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
7e4e0 20 20 20 20 20 20 20 20 20 20 74 69 6d 65 20 2b time +
7e4f0 3d 20 28 4d 61 74 68 2e 72 61 6e 64 6f 6d 28 29 = (Math.random()
7e500 20 2a 20 32 20 2d 20 31 29 20 2a 20 76 61 72 69 * 2 - 1) * vari
7e510 61 74 69 6f 6e 3b 0a 09 20 20 20 20 20 20 20 20 ation;..
7e520 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
7e530 20 20 20 74 68 69 73 2e 63 61 6c 6c 62 61 63 6b this.callback
7e540 28 74 69 6d 65 2c 20 74 68 69 73 2e 76 61 6c 75 (time, this.valu
7e550 65 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 e);.. }..
7e560 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
7e570 09 09 20 2a 20 20 47 65 74 20 74 68 65 20 64 75 .. * Get the du
7e580 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6c 6f ration of the lo
7e590 6f 70 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 op.... * @retur
7e5a0 6e 20 20 7b 54 69 63 6b 73 7d 0a 09 09 20 2a 20 n {Ticks}... *
7e5b0 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a @private... */.
7e5c0 09 20 20 20 20 54 6f 6e 65 2e 45 76 65 6e 74 2e . Tone.Event.
7e5d0 70 72 6f 74 6f 74 79 70 65 2e 5f 67 65 74 4c 6f prototype._getLo
7e5e0 6f 70 44 75 72 61 74 69 6f 6e 20 3d 20 66 75 6e opDuration = fun
7e5f0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
7e600 20 20 20 20 72 65 74 75 72 6e 20 4d 61 74 68 2e return Math.
7e610 72 6f 75 6e 64 28 28 74 68 69 73 2e 5f 6c 6f 6f round((this._loo
7e620 70 45 6e 64 20 2d 20 74 68 69 73 2e 5f 6c 6f 6f pEnd - this._loo
7e630 70 53 74 61 72 74 29 20 2f 20 74 68 69 73 2e 5f pStart) / this._
7e640 70 6c 61 79 62 61 63 6b 52 61 74 65 29 3b 0a 09 playbackRate);..
7e650 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
7e660 09 09 20 2a 20 20 49 66 20 74 68 65 20 6e 6f 74 .. * If the not
7e670 65 20 73 68 6f 75 6c 64 20 6c 6f 6f 70 20 6f 72 e should loop or
7e680 20 6e 6f 74 0a 09 09 20 2a 20 20 62 65 74 77 65 not... * betwe
7e690 65 6e 20 54 6f 6e 65 2e 45 76 65 6e 74 2e 6c 6f en Tone.Event.lo
7e6a0 6f 70 53 74 61 72 74 20 61 6e 64 20 0a 09 09 20 opStart and ...
7e6b0 2a 20 20 54 6f 6e 65 2e 45 76 65 6e 74 2e 6c 6f * Tone.Event.lo
7e6c0 6f 70 45 6e 64 2e 20 41 6e 20 69 6e 74 65 67 65 opEnd. An intege
7e6d0 72 0a 09 09 20 2a 20 20 76 61 6c 75 65 20 63 6f r... * value co
7e6e0 72 72 65 73 70 6f 6e 64 73 20 74 6f 20 74 68 65 rresponds to the
7e6f0 20 6e 75 6d 62 65 72 20 6f 66 0a 09 09 20 2a 20 number of... *
7e700 20 6c 6f 6f 70 73 20 74 68 65 20 45 76 65 6e 74 loops the Event
7e710 20 64 6f 65 73 20 61 66 74 65 72 20 69 74 20 73 does after it s
7e720 74 61 72 74 73 2e 0a 09 09 20 2a 20 20 40 6d 65 tarts.... * @me
7e730 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 45 76 65 6e mberOf Tone.Even
7e740 74 23 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b t#... * @type {
7e750 42 6f 6f 6c 65 61 6e 7c 50 6f 73 69 74 69 76 65 Boolean|Positive
7e760 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 6c 6f }... * @name lo
7e770 6f 70 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 op... */.. Ob
7e780 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
7e790 72 74 79 28 54 6f 6e 65 2e 45 76 65 6e 74 2e 70 rty(Tone.Event.p
7e7a0 72 6f 74 6f 74 79 70 65 2c 20 27 6c 6f 6f 70 27 rototype, 'loop'
7e7b0 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
7e7c0 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
7e7d0 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
7e7e0 75 72 6e 20 74 68 69 73 2e 5f 6c 6f 6f 70 3b 0a urn this._loop;.
7e7f0 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 . },..
7e800 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 set: functi
7e810 6f 6e 20 28 6c 6f 6f 70 29 20 7b 0a 09 20 20 20 on (loop) {..
7e820 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c this._l
7e830 6f 6f 70 20 3d 20 6c 6f 6f 70 3b 0a 09 20 20 20 oop = loop;..
7e840 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 this._r
7e850 65 73 63 68 65 64 75 6c 65 45 76 65 6e 74 73 28 escheduleEvents(
7e860 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
7e870 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
7e880 09 09 20 2a 20 09 54 68 65 20 70 6c 61 79 62 61 .. * .The playba
7e890 63 6b 20 72 61 74 65 20 6f 66 20 74 68 65 20 6e ck rate of the n
7e8a0 6f 74 65 2e 20 44 65 66 61 75 6c 74 73 20 74 6f ote. Defaults to
7e8b0 20 31 2e 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 1.... * @membe
7e8c0 72 4f 66 20 54 6f 6e 65 2e 45 76 65 6e 74 23 0a rOf Tone.Event#.
7e8d0 09 09 20 2a 20 20 40 74 79 70 65 20 7b 50 6f 73 .. * @type {Pos
7e8e0 69 74 69 76 65 7d 0a 09 09 20 2a 20 20 40 6e 61 itive}... * @na
7e8f0 6d 65 20 70 6c 61 79 62 61 63 6b 52 61 74 65 0a me playbackRate.
7e900 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
7e910 09 20 2a 20 6e 6f 74 65 2e 6c 6f 6f 70 20 3d 20 . * note.loop =
7e920 74 72 75 65 3b 0a 09 09 20 2a 20 2f 2f 72 65 70 true;... * //rep
7e930 65 61 74 20 74 68 65 20 6e 6f 74 65 20 74 77 69 eat the note twi
7e940 63 65 20 61 73 20 66 61 73 74 0a 09 09 20 2a 20 ce as fast... *
7e950 6e 6f 74 65 2e 70 6c 61 79 62 61 63 6b 52 61 74 note.playbackRat
7e960 65 20 3d 20 32 3b 0a 09 09 20 2a 2f 0a 09 20 20 e = 2;... */..
7e970 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
7e980 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 45 76 65 roperty(Tone.Eve
7e990 6e 74 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 70 nt.prototype, 'p
7e9a0 6c 61 79 62 61 63 6b 52 61 74 65 27 2c 20 7b 0a laybackRate', {.
7e9b0 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
7e9c0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
7e9d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
7e9e0 74 68 69 73 2e 5f 70 6c 61 79 62 61 63 6b 52 61 this._playbackRa
7e9f0 74 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a te;.. },.
7ea00 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
7ea10 6e 63 74 69 6f 6e 20 28 72 61 74 65 29 20 7b 0a nction (rate) {.
7ea20 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
7ea30 73 2e 5f 70 6c 61 79 62 61 63 6b 52 61 74 65 20 s._playbackRate
7ea40 3d 20 72 61 74 65 3b 0a 09 20 20 20 20 20 20 20 = rate;..
7ea50 20 20 20 20 20 74 68 69 73 2e 5f 72 65 73 63 68 this._resch
7ea60 65 64 75 6c 65 45 76 65 6e 74 73 28 29 3b 0a 09 eduleEvents();..
7ea70 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
7ea80 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
7ea90 20 20 54 68 65 20 6c 6f 6f 70 45 6e 64 20 70 6f The loopEnd po
7eaa0 69 6e 74 20 69 73 20 74 68 65 20 74 69 6d 65 20 int is the time
7eab0 74 68 65 20 65 76 65 6e 74 20 77 69 6c 6c 20 6c the event will l
7eac0 6f 6f 70 0a 09 09 20 2a 20 20 69 66 20 54 6f 6e oop... * if Ton
7ead0 65 2e 45 76 65 6e 74 2e 6c 6f 6f 70 20 69 73 20 e.Event.loop is
7eae0 74 72 75 65 2e 0a 09 09 20 2a 20 20 40 6d 65 6d true.... * @mem
7eaf0 62 65 72 4f 66 20 54 6f 6e 65 2e 45 76 65 6e 74 berOf Tone.Event
7eb00 23 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 #... * @type {T
7eb10 72 61 6e 73 70 6f 72 74 54 69 6d 65 7d 0a 09 09 ransportTime}...
7eb20 20 2a 20 20 40 6e 61 6d 65 20 6c 6f 6f 70 45 6e * @name loopEn
7eb30 64 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a d... */.. Obj
7eb40 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
7eb50 74 79 28 54 6f 6e 65 2e 45 76 65 6e 74 2e 70 72 ty(Tone.Event.pr
7eb60 6f 74 6f 74 79 70 65 2c 20 27 6c 6f 6f 70 45 6e ototype, 'loopEn
7eb70 64 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 d', {.. g
7eb80 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
7eb90 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
7eba0 65 74 75 72 6e 20 54 6f 6e 65 2e 54 72 61 6e 73 eturn Tone.Trans
7ebb0 70 6f 72 74 54 69 6d 65 28 74 68 69 73 2e 5f 6c portTime(this._l
7ebc0 6f 6f 70 45 6e 64 2c 20 27 69 27 29 2e 74 6f 4e oopEnd, 'i').toN
7ebd0 6f 74 61 74 69 6f 6e 28 29 3b 0a 09 20 20 20 20 otation();..
7ebe0 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
7ebf0 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6c set: function (l
7ec00 6f 6f 70 45 6e 64 29 20 7b 0a 09 20 20 20 20 20 oopEnd) {..
7ec10 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f 6f this._loo
7ec20 70 45 6e 64 20 3d 20 74 68 69 73 2e 74 6f 54 69 pEnd = this.toTi
7ec30 63 6b 73 28 6c 6f 6f 70 45 6e 64 29 3b 0a 09 20 cks(loopEnd);..
7ec40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 if (t
7ec50 68 69 73 2e 5f 6c 6f 6f 70 29 20 7b 0a 09 20 20 his._loop) {..
7ec60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
7ec70 69 73 2e 5f 72 65 73 63 68 65 64 75 6c 65 45 76 is._rescheduleEv
7ec80 65 6e 74 73 28 29 3b 0a 09 20 20 20 20 20 20 20 ents();..
7ec90 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
7eca0 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
7ecb0 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 74 69 /**... * The ti
7ecc0 6d 65 20 77 68 65 6e 20 74 68 65 20 6c 6f 6f 70 me when the loop
7ecd0 20 73 68 6f 75 6c 64 20 73 74 61 72 74 2e 20 0a should start. .
7ece0 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 .. * @memberOf
7ecf0 54 6f 6e 65 2e 45 76 65 6e 74 23 0a 09 09 20 2a Tone.Event#... *
7ed00 20 20 40 74 79 70 65 20 7b 54 72 61 6e 73 70 6f @type {Transpo
7ed10 72 74 54 69 6d 65 7d 0a 09 09 20 2a 20 20 40 6e rtTime}... * @n
7ed20 61 6d 65 20 6c 6f 6f 70 53 74 61 72 74 0a 09 09 ame loopStart...
7ed30 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
7ed40 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
7ed50 6f 6e 65 2e 45 76 65 6e 74 2e 70 72 6f 74 6f 74 one.Event.protot
7ed60 79 70 65 2c 20 27 6c 6f 6f 70 53 74 61 72 74 27 ype, 'loopStart'
7ed70 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
7ed80 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
7ed90 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
7eda0 75 72 6e 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f urn Tone.Transpo
7edb0 72 74 54 69 6d 65 28 74 68 69 73 2e 5f 6c 6f 6f rtTime(this._loo
7edc0 70 53 74 61 72 74 2c 20 27 69 27 29 2e 74 6f 4e pStart, 'i').toN
7edd0 6f 74 61 74 69 6f 6e 28 29 3b 0a 09 20 20 20 20 otation();..
7ede0 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
7edf0 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6c set: function (l
7ee00 6f 6f 70 53 74 61 72 74 29 20 7b 0a 09 20 20 20 oopStart) {..
7ee10 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c this._l
7ee20 6f 6f 70 53 74 61 72 74 20 3d 20 74 68 69 73 2e oopStart = this.
7ee30 74 6f 54 69 63 6b 73 28 6c 6f 6f 70 53 74 61 72 toTicks(loopStar
7ee40 74 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 t);..
7ee50 20 69 66 20 28 74 68 69 73 2e 5f 6c 6f 6f 70 29 if (this._loop)
7ee60 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
7ee70 20 20 20 20 74 68 69 73 2e 5f 72 65 73 63 68 65 this._resche
7ee80 64 75 6c 65 45 76 65 6e 74 73 28 29 3b 0a 09 20 duleEvents();..
7ee90 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
7eea0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b }.. });
7eeb0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
7eec0 54 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 67 The current prog
7eed0 72 65 73 73 20 6f 66 20 74 68 65 20 6c 6f 6f 70 ress of the loop
7eee0 20 69 6e 74 65 72 76 61 6c 2e 0a 09 09 20 2a 20 interval.... *
7eef0 20 52 65 74 75 72 6e 73 20 30 20 69 66 20 74 68 Returns 0 if th
7ef00 65 20 65 76 65 6e 74 20 69 73 20 6e 6f 74 20 73 e event is not s
7ef10 74 61 72 74 65 64 20 79 65 74 20 6f 72 0a 09 09 tarted yet or...
7ef20 20 2a 20 20 69 74 20 69 73 20 6e 6f 74 20 73 65 * it is not se
7ef30 74 20 74 6f 20 6c 6f 6f 70 2e 0a 09 09 20 2a 20 t to loop.... *
7ef40 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e @memberOf Tone.
7ef50 45 76 65 6e 74 23 0a 09 09 20 2a 20 20 40 74 79 Event#... * @ty
7ef60 70 65 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d pe {NormalRange}
7ef70 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 70 72 6f ... * @name pro
7ef80 67 72 65 73 73 0a 09 09 20 2a 20 20 40 72 65 61 gress... * @rea
7ef90 64 4f 6e 6c 79 0a 09 09 20 2a 2f 0a 09 20 20 20 dOnly... */..
7efa0 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
7efb0 6f 70 65 72 74 79 28 54 6f 6e 65 2e 45 76 65 6e operty(Tone.Even
7efc0 74 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 70 72 t.prototype, 'pr
7efd0 6f 67 72 65 73 73 27 2c 20 7b 0a 09 20 20 20 20 ogress', {..
7efe0 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
7eff0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
7f000 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 6c 6f if (this._lo
7f010 6f 70 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 op) {..
7f020 20 20 20 20 20 20 20 76 61 72 20 74 69 63 6b 73 var ticks
7f030 20 3d 20 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 = Tone.Transpor
7f040 74 2e 74 69 63 6b 73 3b 0a 09 20 20 20 20 20 20 t.ticks;..
7f050 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6c 61 var la
7f060 73 74 45 76 65 6e 74 20 3d 20 74 68 69 73 2e 5f stEvent = this._
7f070 73 74 61 74 65 2e 67 65 74 28 74 69 63 6b 73 29 state.get(ticks)
7f080 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
7f090 20 20 20 69 66 20 28 6c 61 73 74 45 76 65 6e 74 if (lastEvent
7f0a0 20 21 3d 3d 20 6e 75 6c 6c 20 26 26 20 6c 61 73 !== null && las
7f0b0 74 45 76 65 6e 74 2e 73 74 61 74 65 20 3d 3d 3d tEvent.state ===
7f0c0 20 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 61 72 Tone.State.Star
7f0d0 74 65 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ted) {..
7f0e0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var
7f0f0 6c 6f 6f 70 44 75 72 61 74 69 6f 6e 20 3d 20 74 loopDuration = t
7f100 68 69 73 2e 5f 67 65 74 4c 6f 6f 70 44 75 72 61 his._getLoopDura
7f110 74 69 6f 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 tion();..
7f120 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var
7f130 20 70 72 6f 67 72 65 73 73 20 3d 20 28 74 69 63 progress = (tic
7f140 6b 73 20 2d 20 6c 61 73 74 45 76 65 6e 74 2e 74 ks - lastEvent.t
7f150 69 6d 65 29 20 25 20 6c 6f 6f 70 44 75 72 61 74 ime) % loopDurat
7f160 69 6f 6e 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ion;..
7f170 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
7f180 20 70 72 6f 67 72 65 73 73 20 2f 20 6c 6f 6f 70 progress / loop
7f190 44 75 72 61 74 69 6f 6e 3b 0a 09 20 20 20 20 20 Duration;..
7f1a0 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
7f1b0 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
7f1c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
7f1d0 30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 0;..
7f1e0 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
7f1f0 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
7f200 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
7f210 75 72 6e 20 30 3b 0a 09 20 20 20 20 20 20 20 20 urn 0;..
7f220 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d }.. }
7f230 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f .. });.. /
7f240 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 **... * Clean u
7f250 70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 p... * @return
7f260 20 7b 54 6f 6e 65 2e 45 76 65 6e 74 7d 20 20 74 {Tone.Event} t
7f270 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
7f280 6f 6e 65 2e 45 76 65 6e 74 2e 70 72 6f 74 6f 74 one.Event.protot
7f290 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 ype.dispose = fu
7f2a0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
7f2b0 20 20 20 20 20 74 68 69 73 2e 63 61 6e 63 65 6c this.cancel
7f2c0 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
7f2d0 73 2e 5f 73 74 61 74 65 2e 64 69 73 70 6f 73 65 s._state.dispose
7f2e0 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
7f2f0 73 2e 5f 73 74 61 74 65 20 3d 20 6e 75 6c 6c 3b s._state = null;
7f300 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 .. this.c
7f310 61 6c 6c 62 61 63 6b 20 3d 20 6e 75 6c 6c 3b 0a allback = null;.
7f320 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 61 . this.va
7f330 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 lue = null;..
7f340 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 };.. return
7f350 54 6f 6e 65 2e 45 76 65 6e 74 3b 0a 09 7d 29 3b Tone.Event;..});
7f360 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f ..Module(functio
7f370 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 n (Tone) {..
7f380 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 /**... * @class
7f390 20 54 6f 6e 65 2e 4c 6f 6f 70 20 63 72 65 61 74 Tone.Loop creat
7f3a0 65 73 20 61 20 6c 6f 6f 70 65 64 20 63 61 6c 6c es a looped call
7f3b0 62 61 63 6b 20 61 74 20 74 68 65 20 0a 09 09 20 back at the ...
7f3c0 2a 20 20 20 20 20 20 20 20 20 73 70 65 63 69 66 * specif
7f3d0 69 65 64 20 69 6e 74 65 72 76 61 6c 2e 20 54 68 ied interval. Th
7f3e0 65 20 63 61 6c 6c 62 61 63 6b 20 63 61 6e 20 62 e callback can b
7f3f0 65 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 e ... *
7f400 73 74 61 72 74 65 64 2c 20 73 74 6f 70 70 65 64 started, stopped
7f410 20 61 6e 64 20 73 63 68 65 64 75 6c 65 64 20 61 and scheduled a
7f420 6c 6f 6e 67 0a 09 09 20 2a 20 20 20 20 20 20 20 long... *
7f430 20 20 74 68 65 20 54 72 61 6e 73 70 6f 72 74 27 the Transport'
7f440 73 20 74 69 6d 65 6c 69 6e 65 2e 20 0a 09 09 20 s timeline. ...
7f450 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
7f460 20 76 61 72 20 6c 6f 6f 70 20 3d 20 6e 65 77 20 var loop = new
7f470 54 6f 6e 65 2e 4c 6f 6f 70 28 66 75 6e 63 74 69 Tone.Loop(functi
7f480 6f 6e 28 74 69 6d 65 29 7b 0a 09 09 20 2a 20 09 on(time){... * .
7f490 2f 2f 74 72 69 67 67 65 72 65 64 20 65 76 65 72 //triggered ever
7f4a0 79 20 65 69 67 68 74 68 20 6e 6f 74 65 2e 20 0a y eighth note. .
7f4b0 09 09 20 2a 20 09 63 6f 6e 73 6f 6c 65 2e 6c 6f .. * .console.lo
7f4c0 67 28 74 69 6d 65 29 3b 0a 09 09 20 2a 20 7d 2c g(time);... * },
7f4d0 20 22 38 6e 22 29 2e 73 74 61 72 74 28 30 29 3b "8n").start(0);
7f4e0 0a 09 09 20 2a 20 54 6f 6e 65 2e 54 72 61 6e 73 ... * Tone.Trans
7f4f0 70 6f 72 74 2e 73 74 61 72 74 28 29 3b 0a 09 09 port.start();...
7f500 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f * @extends {To
7f510 6e 65 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ne}... * @param
7f520 20 7b 46 75 6e 63 74 69 6f 6e 7d 20 63 61 6c 6c {Function} call
7f530 62 61 63 6b 20 54 68 65 20 63 61 6c 6c 62 61 63 back The callbac
7f540 6b 20 74 6f 20 69 6e 76 6f 6b 65 20 77 69 74 68 k to invoke with
7f550 20 74 68 65 20 65 76 65 6e 74 2e 0a 09 09 20 2a the event.... *
7f560 20 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 @param {Time}
7f570 69 6e 74 65 72 76 61 6c 20 54 68 65 20 74 69 6d interval The tim
7f580 65 20 62 65 74 77 65 65 6e 20 73 75 63 63 65 73 e between succes
7f590 73 69 76 65 20 63 61 6c 6c 62 61 63 6b 20 63 61 sive callback ca
7f5a0 6c 6c 73 2e 20 0a 09 09 20 2a 2f 0a 09 20 20 20 lls. ... */..
7f5b0 20 54 6f 6e 65 2e 4c 6f 6f 70 20 3d 20 66 75 6e Tone.Loop = fun
7f5c0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
7f5d0 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 var options
7f5e0 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 = this.optionsOb
7f5f0 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 ject(arguments,
7f600 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 [.. '
7f610 63 61 6c 6c 62 61 63 6b 27 2c 0a 09 20 20 20 20 callback',..
7f620 20 20 20 20 20 20 20 20 27 69 6e 74 65 72 76 61 'interva
7f630 6c 27 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 54 l'.. ], T
7f640 6f 6e 65 2e 4c 6f 6f 70 2e 64 65 66 61 75 6c 74 one.Loop.default
7f650 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a s);.. /**
7f660 0a 09 09 09 20 2a 20 20 54 68 65 20 65 76 65 6e .... * The even
7f670 74 20 77 68 69 63 68 20 70 72 6f 64 75 63 65 73 t which produces
7f680 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 73 0a 09 the callbacks..
7f690 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
7f6a0 68 69 73 2e 5f 65 76 65 6e 74 20 3d 20 6e 65 77 his._event = new
7f6b0 20 54 6f 6e 65 2e 45 76 65 6e 74 28 7b 0a 09 20 Tone.Event({..
7f6c0 20 20 20 20 20 20 20 20 20 20 20 27 63 61 6c 6c 'call
7f6d0 62 61 63 6b 27 3a 20 74 68 69 73 2e 5f 74 69 63 back': this._tic
7f6e0 6b 2e 62 69 6e 64 28 74 68 69 73 29 2c 0a 09 20 k.bind(this),..
7f6f0 20 20 20 20 20 20 20 20 20 20 20 27 6c 6f 6f 70 'loop
7f700 27 3a 20 74 72 75 65 2c 0a 09 20 20 20 20 20 20 ': true,..
7f710 20 20 20 20 20 20 27 6c 6f 6f 70 45 6e 64 27 3a 'loopEnd':
7f720 20 6f 70 74 69 6f 6e 73 2e 69 6e 74 65 72 76 61 options.interva
7f730 6c 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 l,..
7f740 27 70 6c 61 79 62 61 63 6b 52 61 74 65 27 3a 20 'playbackRate':
7f750 6f 70 74 69 6f 6e 73 2e 70 6c 61 79 62 61 63 6b options.playback
7f760 52 61 74 65 2c 0a 09 20 20 20 20 20 20 20 20 20 Rate,..
7f770 20 20 20 27 70 72 6f 62 61 62 69 6c 69 74 79 27 'probability'
7f780 3a 20 6f 70 74 69 6f 6e 73 2e 70 72 6f 62 61 62 : options.probab
7f790 69 6c 69 74 79 0a 09 20 20 20 20 20 20 20 20 7d ility.. }
7f7a0 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
7f7b0 09 09 09 20 2a 20 20 54 68 65 20 63 61 6c 6c 62 ... * The callb
7f7c0 61 63 6b 20 74 6f 20 69 6e 76 6f 6b 65 20 77 69 ack to invoke wi
7f7d0 74 68 20 74 68 65 20 6e 65 78 74 20 65 76 65 6e th the next even
7f7e0 74 20 69 6e 20 74 68 65 20 70 61 74 74 65 72 6e t in the pattern
7f7f0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 46 .... * @type {F
7f800 75 6e 63 74 69 6f 6e 7d 0a 09 09 09 20 2a 2f 0a unction}.... */.
7f810 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 61 . this.ca
7f820 6c 6c 62 61 63 6b 20 3d 20 6f 70 74 69 6f 6e 73 llback = options
7f830 2e 63 61 6c 6c 62 61 63 6b 3b 0a 09 20 20 20 20 .callback;..
7f840 20 20 20 20 2f 2f 73 65 74 20 74 68 65 20 69 74 //set the it
7f850 65 72 61 74 69 6f 6e 73 0a 09 20 20 20 20 20 20 erations..
7f860 20 20 74 68 69 73 2e 69 74 65 72 61 74 69 6f 6e this.iteration
7f870 73 20 3d 20 6f 70 74 69 6f 6e 73 2e 69 74 65 72 s = options.iter
7f880 61 74 69 6f 6e 73 3b 0a 09 20 20 20 20 7d 3b 0a ations;.. };.
7f890 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 . Tone.extend
7f8a0 28 54 6f 6e 65 2e 4c 6f 6f 70 29 3b 0a 09 20 20 (Tone.Loop);..
7f8b0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 /**... * The
7f8c0 64 65 66 61 75 6c 74 73 0a 09 09 20 2a 20 20 40 defaults... * @
7f8d0 63 6f 6e 73 74 0a 09 09 20 2a 20 20 40 74 79 70 const... * @typ
7f8e0 65 20 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a e {Object}... *
7f8f0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4c 6f 6f 70 /.. Tone.Loop
7f900 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 .defaults = {..
7f910 20 20 20 20 20 20 20 27 69 6e 74 65 72 76 61 6c 'interval
7f920 27 3a 20 27 34 6e 27 2c 0a 09 20 20 20 20 20 20 ': '4n',..
7f930 20 20 27 63 61 6c 6c 62 61 63 6b 27 3a 20 54 6f 'callback': To
7f940 6e 65 2e 6e 6f 4f 70 2c 0a 09 20 20 20 20 20 20 ne.noOp,..
7f950 20 20 27 70 6c 61 79 62 61 63 6b 52 61 74 65 27 'playbackRate'
7f960 3a 20 31 2c 0a 09 20 20 20 20 20 20 20 20 27 69 : 1,.. 'i
7f970 74 65 72 61 74 69 6f 6e 73 27 3a 20 49 6e 66 69 terations': Infi
7f980 6e 69 74 79 2c 0a 09 20 20 20 20 20 20 20 20 27 nity,.. '
7f990 70 72 6f 62 61 62 69 6c 69 74 79 27 3a 20 74 72 probability': tr
7f9a0 75 65 2c 0a 09 20 20 20 20 20 20 20 20 27 6d 75 ue,.. 'mu
7f9b0 74 65 27 3a 20 66 61 6c 73 65 0a 09 20 20 20 20 te': false..
7f9c0 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
7f9d0 20 20 53 74 61 72 74 20 74 68 65 20 6c 6f 6f 70 Start the loop
7f9e0 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65 at the specifie
7f9f0 64 20 74 69 6d 65 20 61 6c 6f 6e 67 20 74 68 65 d time along the
7fa00 20 54 72 61 6e 73 70 6f 72 74 27 73 0a 09 09 20 Transport's...
7fa10 2a 20 20 74 69 6d 65 6c 69 6e 65 2e 0a 09 09 20 * timeline....
7fa20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 * @param {Time
7fa30 6c 69 6e 65 50 6f 73 69 74 69 6f 6e 3d 7d 20 20 linePosition=}
7fa40 74 69 6d 65 20 20 57 68 65 6e 20 74 6f 20 73 74 time When to st
7fa50 61 72 74 20 74 68 65 20 4c 6f 6f 70 2e 0a 09 09 art the Loop....
7fa60 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 6f * @return {To
7fa70 6e 65 2e 4c 6f 6f 70 7d 20 20 74 68 69 73 0a 09 ne.Loop} this..
7fa80 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4c . */.. Tone.L
7fa90 6f 6f 70 2e 70 72 6f 74 6f 74 79 70 65 2e 73 74 oop.prototype.st
7faa0 61 72 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 art = function (
7fab0 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 time) {..
7fac0 20 74 68 69 73 2e 5f 65 76 65 6e 74 2e 73 74 61 this._event.sta
7fad0 72 74 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 rt(time);..
7fae0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
7faf0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
7fb00 0a 09 09 20 2a 20 20 53 74 6f 70 20 74 68 65 20 ... * Stop the
7fb10 6c 6f 6f 70 20 61 74 20 74 68 65 20 67 69 76 65 loop at the give
7fb20 6e 20 74 69 6d 65 2e 0a 09 09 20 2a 20 20 40 70 n time.... * @p
7fb30 61 72 61 6d 20 20 7b 54 69 6d 65 6c 69 6e 65 50 aram {TimelineP
7fb40 6f 73 69 74 69 6f 6e 3d 7d 20 20 74 69 6d 65 20 osition=} time
7fb50 20 57 68 65 6e 20 74 6f 20 73 74 6f 70 20 74 68 When to stop th
7fb60 65 20 41 72 70 65 67 67 69 6f 0a 09 09 20 2a 20 e Arpeggio... *
7fb70 20 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e @return {Tone.
7fb80 4c 6f 6f 70 7d 20 20 74 68 69 73 0a 09 09 20 2a Loop} this... *
7fb90 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4c 6f 6f 70 /.. Tone.Loop
7fba0 2e 70 72 6f 74 6f 74 79 70 65 2e 73 74 6f 70 20 .prototype.stop
7fbb0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 = function (time
7fbc0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ) {.. thi
7fbd0 73 2e 5f 65 76 65 6e 74 2e 73 74 6f 70 28 74 69 s._event.stop(ti
7fbe0 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 me);.. re
7fbf0 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 turn this;..
7fc00 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
7fc10 20 20 43 61 6e 63 65 6c 20 61 6c 6c 20 73 63 68 Cancel all sch
7fc20 65 64 75 6c 65 64 20 65 76 65 6e 74 73 20 67 72 eduled events gr
7fc30 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65 71 eater than or eq
7fc40 75 61 6c 20 74 6f 20 74 68 65 20 67 69 76 65 6e ual to the given
7fc50 20 74 69 6d 65 0a 09 09 20 2a 20 20 40 70 61 72 time... * @par
7fc60 61 6d 20 20 7b 54 69 6d 65 6c 69 6e 65 50 6f 73 am {TimelinePos
7fc70 69 74 69 6f 6e 7d 20 20 5b 74 69 6d 65 3d 30 5d ition} [time=0]
7fc80 20 20 54 68 65 20 74 69 6d 65 20 61 66 74 65 72 The time after
7fc90 20 77 68 69 63 68 20 65 76 65 6e 74 73 20 77 69 which events wi
7fca0 6c 6c 20 62 65 20 63 61 6e 63 65 6c 2e 0a 09 09 ll be cancel....
7fcb0 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 6f * @return {To
7fcc0 6e 65 2e 4c 6f 6f 70 7d 20 20 74 68 69 73 0a 09 ne.Loop} this..
7fcd0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4c . */.. Tone.L
7fce0 6f 6f 70 2e 70 72 6f 74 6f 74 79 70 65 2e 63 61 oop.prototype.ca
7fcf0 6e 63 65 6c 20 3d 20 66 75 6e 63 74 69 6f 6e 20 ncel = function
7fd00 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 (time) {..
7fd10 20 20 74 68 69 73 2e 5f 65 76 65 6e 74 2e 63 61 this._event.ca
7fd20 6e 63 65 6c 28 74 69 6d 65 29 3b 0a 09 20 20 20 ncel(time);..
7fd30 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
7fd40 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
7fd50 2a 2a 0a 09 09 20 2a 20 20 49 6e 74 65 72 6e 61 **... * Interna
7fd60 6c 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 65 l function calle
7fd70 64 20 77 68 65 6e 20 74 68 65 20 6e 6f 74 65 73 d when the notes
7fd80 20 73 68 6f 75 6c 64 20 62 65 20 63 61 6c 6c 65 should be calle
7fd90 64 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 d... * @param
7fda0 7b 4e 75 6d 62 65 72 7d 20 20 74 69 6d 65 20 20 {Number} time
7fdb0 54 68 65 20 74 69 6d 65 20 74 68 65 20 65 76 65 The time the eve
7fdc0 6e 74 20 6f 63 63 75 72 73 0a 09 09 20 2a 20 20 nt occurs... *
7fdd0 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 @private... */..
7fde0 20 20 20 20 54 6f 6e 65 2e 4c 6f 6f 70 2e 70 72 Tone.Loop.pr
7fdf0 6f 74 6f 74 79 70 65 2e 5f 74 69 63 6b 20 3d 20 ototype._tick =
7fe00 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 function (time)
7fe10 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e {.. this.
7fe20 63 61 6c 6c 62 61 63 6b 28 74 69 6d 65 29 3b 0a callback(time);.
7fe30 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
7fe40 0a 09 09 20 2a 20 20 54 68 65 20 73 74 61 74 65 ... * The state
7fe50 20 6f 66 20 74 68 65 20 4c 6f 6f 70 2c 20 65 69 of the Loop, ei
7fe60 74 68 65 72 20 73 74 61 72 74 65 64 20 6f 72 20 ther started or
7fe70 73 74 6f 70 70 65 64 2e 0a 09 09 20 2a 20 20 40 stopped.... * @
7fe80 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 4c 6f memberOf Tone.Lo
7fe90 6f 70 23 0a 09 09 20 2a 20 20 40 74 79 70 65 20 op#... * @type
7fea0 7b 53 74 72 69 6e 67 7d 0a 09 09 20 2a 20 20 40 {String}... * @
7feb0 6e 61 6d 65 20 73 74 61 74 65 0a 09 09 20 2a 20 name state... *
7fec0 20 40 72 65 61 64 4f 6e 6c 79 0a 09 09 20 2a 2f @readOnly... */
7fed0 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 .. Object.def
7fee0 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 ineProperty(Tone
7fef0 2e 4c 6f 6f 70 2e 70 72 6f 74 6f 74 79 70 65 2c .Loop.prototype,
7ff00 20 27 73 74 61 74 65 27 2c 20 7b 0a 09 20 20 20 'state', {..
7ff10 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
7ff20 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
7ff30 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
7ff40 2e 5f 65 76 65 6e 74 2e 73 74 61 74 65 3b 0a 09 ._event.state;..
7ff50 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
7ff60 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
7ff70 20 20 54 68 65 20 70 72 6f 67 72 65 73 73 20 6f The progress o
7ff80 66 20 74 68 65 20 6c 6f 6f 70 20 61 73 20 61 20 f the loop as a
7ff90 76 61 6c 75 65 20 62 65 74 77 65 65 6e 20 30 2d value between 0-
7ffa0 31 2e 20 30 2c 20 77 68 65 6e 0a 09 09 20 2a 20 1. 0, when... *
7ffb0 20 74 68 65 20 6c 6f 6f 70 20 69 73 20 73 74 6f the loop is sto
7ffc0 70 70 65 64 20 6f 72 20 64 6f 6e 65 20 69 74 65 pped or done ite
7ffd0 72 61 74 69 6e 67 2e 20 0a 09 09 20 2a 20 20 40 rating. ... * @
7ffe0 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 4c 6f memberOf Tone.Lo
7fff0 6f 70 23 0a 09 09 20 2a 20 20 40 74 79 70 65 20 op#... * @type
80000 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 {NormalRange}...
80010 20 2a 20 20 40 6e 61 6d 65 20 70 72 6f 67 72 65 * @name progre
80020 73 73 0a 09 09 20 2a 20 20 40 72 65 61 64 4f 6e ss... * @readOn
80030 6c 79 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 ly... */.. Ob
80040 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
80050 72 74 79 28 54 6f 6e 65 2e 4c 6f 6f 70 2e 70 72 rty(Tone.Loop.pr
80060 6f 74 6f 74 79 70 65 2c 20 27 70 72 6f 67 72 65 ototype, 'progre
80070 73 73 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 ss', {..
80080 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 get: function ()
80090 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
800a0 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 65 76 65 return this._eve
800b0 6e 74 2e 70 72 6f 67 72 65 73 73 3b 0a 09 20 20 nt.progress;..
800c0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b }.. });
800d0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
800e0 54 68 65 20 74 69 6d 65 20 62 65 74 77 65 65 6e The time between
800f0 20 73 75 63 63 65 73 73 69 76 65 20 63 61 6c 6c successive call
80100 62 61 63 6b 73 2e 20 0a 09 09 20 2a 20 20 40 65 backs. ... * @e
80110 78 61 6d 70 6c 65 0a 09 09 20 2a 20 6c 6f 6f 70 xample... * loop
80120 2e 69 6e 74 65 72 76 61 6c 20 3d 20 22 38 6e 22 .interval = "8n"
80130 3b 20 2f 2f 6c 6f 6f 70 20 65 76 65 72 79 20 38 ; //loop every 8
80140 6e 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f n... * @memberO
80150 66 20 54 6f 6e 65 2e 4c 6f 6f 70 23 0a 09 09 20 f Tone.Loop#...
80160 2a 20 20 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a * @type {Time}.
80170 09 09 20 2a 20 20 40 6e 61 6d 65 20 69 6e 74 65 .. * @name inte
80180 72 76 61 6c 0a 09 09 20 2a 2f 0a 09 20 20 20 20 rval... */..
80190 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
801a0 70 65 72 74 79 28 54 6f 6e 65 2e 4c 6f 6f 70 2e perty(Tone.Loop.
801b0 70 72 6f 74 6f 74 79 70 65 2c 20 27 69 6e 74 65 prototype, 'inte
801c0 72 76 61 6c 27 2c 20 7b 0a 09 20 20 20 20 20 20 rval', {..
801d0 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
801e0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
801f0 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 65 return this._e
80200 76 65 6e 74 2e 6c 6f 6f 70 45 6e 64 3b 0a 09 20 vent.loopEnd;..
80210 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 },..
80220 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e set: function
80230 20 28 69 6e 74 65 72 76 61 6c 29 20 7b 0a 09 20 (interval) {..
80240 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
80250 5f 65 76 65 6e 74 2e 6c 6f 6f 70 45 6e 64 20 3d _event.loopEnd =
80260 20 69 6e 74 65 72 76 61 6c 3b 0a 09 20 20 20 20 interval;..
80270 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
80280 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 /**... * Th
80290 65 20 70 6c 61 79 62 61 63 6b 20 72 61 74 65 20 e playback rate
802a0 6f 66 20 74 68 65 20 6c 6f 6f 70 2e 20 54 68 65 of the loop. The
802b0 20 6e 6f 72 6d 61 6c 20 70 6c 61 79 62 61 63 6b normal playback
802c0 20 72 61 74 65 20 69 73 20 31 20 28 6e 6f 20 63 rate is 1 (no c
802d0 68 61 6e 67 65 29 2e 20 0a 09 09 20 2a 20 20 41 hange). ... * A
802e0 20 60 70 6c 61 79 62 61 63 6b 52 61 74 65 60 20 `playbackRate`
802f0 6f 66 20 32 20 77 6f 75 6c 64 20 62 65 20 74 77 of 2 would be tw
80300 69 63 65 20 61 73 20 66 61 73 74 2e 20 0a 09 09 ice as fast. ...
80310 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
80320 6e 65 2e 4c 6f 6f 70 23 0a 09 09 20 2a 20 20 40 ne.Loop#... * @
80330 74 79 70 65 20 7b 54 69 6d 65 7d 0a 09 09 20 2a type {Time}... *
80340 20 20 40 6e 61 6d 65 20 70 6c 61 79 62 61 63 6b @name playback
80350 52 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 Rate... */..
80360 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
80370 70 65 72 74 79 28 54 6f 6e 65 2e 4c 6f 6f 70 2e perty(Tone.Loop.
80380 70 72 6f 74 6f 74 79 70 65 2c 20 27 70 6c 61 79 prototype, 'play
80390 62 61 63 6b 52 61 74 65 27 2c 20 7b 0a 09 20 20 backRate', {..
803a0 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
803b0 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
803c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
803d0 73 2e 5f 65 76 65 6e 74 2e 70 6c 61 79 62 61 63 s._event.playbac
803e0 6b 52 61 74 65 3b 0a 09 20 20 20 20 20 20 20 20 kRate;..
803f0 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a },.. set:
80400 20 66 75 6e 63 74 69 6f 6e 20 28 72 61 74 65 29 function (rate)
80410 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
80420 74 68 69 73 2e 5f 65 76 65 6e 74 2e 70 6c 61 79 this._event.play
80430 62 61 63 6b 52 61 74 65 20 3d 20 72 61 74 65 3b backRate = rate;
80440 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
80450 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
80460 20 2a 20 20 52 61 6e 64 6f 6d 20 76 61 72 69 61 * Random varia
80470 74 69 6f 6e 20 2b 2f 2d 30 2e 30 31 73 20 74 6f tion +/-0.01s to
80480 20 74 68 65 20 73 63 68 65 64 75 6c 65 64 20 74 the scheduled t
80490 69 6d 65 2e 20 0a 09 09 20 2a 20 20 4f 72 20 67 ime. ... * Or g
804a0 69 76 65 20 69 74 20 61 20 74 69 6d 65 20 76 61 ive it a time va
804b0 6c 75 65 20 77 68 69 63 68 20 69 74 20 77 69 6c lue which it wil
804c0 6c 20 72 61 6e 64 6f 6d 69 7a 65 20 62 79 2e 0a l randomize by..
804d0 09 09 20 2a 20 20 40 74 79 70 65 20 7b 42 6f 6f .. * @type {Boo
804e0 6c 65 61 6e 7c 54 69 6d 65 7d 0a 09 09 20 2a 20 lean|Time}... *
804f0 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e @memberOf Tone.
80500 4c 6f 6f 70 23 0a 09 09 20 2a 20 20 40 6e 61 6d Loop#... * @nam
80510 65 20 68 75 6d 61 6e 69 7a 65 0a 09 09 20 2a 2f e humanize... */
80520 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 .. Object.def
80530 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 ineProperty(Tone
80540 2e 4c 6f 6f 70 2e 70 72 6f 74 6f 74 79 70 65 2c .Loop.prototype,
80550 20 27 68 75 6d 61 6e 69 7a 65 27 2c 20 7b 0a 09 'humanize', {..
80560 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e get: fun
80570 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
80580 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
80590 68 69 73 2e 5f 65 76 65 6e 74 2e 68 75 6d 61 6e his._event.human
805a0 69 7a 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c ize;.. },
805b0 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 .. set: f
805c0 75 6e 63 74 69 6f 6e 20 28 76 61 72 69 61 74 69 unction (variati
805d0 6f 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 on) {..
805e0 20 20 20 74 68 69 73 2e 5f 65 76 65 6e 74 2e 68 this._event.h
805f0 75 6d 61 6e 69 7a 65 20 3d 20 76 61 72 69 61 74 umanize = variat
80600 69 6f 6e 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a ion;.. }.
80610 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a . });.. /*
80620 2a 0a 09 09 20 2a 20 20 54 68 65 20 70 72 6f 62 *... * The prob
80630 61 62 6c 79 20 6f 66 20 74 68 65 20 63 61 6c 6c ably of the call
80640 62 61 63 6b 20 62 65 69 6e 67 20 69 6e 76 6f 6b back being invok
80650 65 64 2e 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 ed.... * @membe
80660 72 4f 66 20 54 6f 6e 65 2e 4c 6f 6f 70 23 0a 09 rOf Tone.Loop#..
80670 09 20 2a 20 20 40 74 79 70 65 20 7b 4e 6f 72 6d . * @type {Norm
80680 61 6c 52 61 6e 67 65 7d 0a 09 09 20 2a 20 20 40 alRange}... * @
80690 6e 61 6d 65 20 70 72 6f 62 61 62 69 6c 69 74 79 name probability
806a0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 ... */.. Obje
806b0 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
806c0 79 28 54 6f 6e 65 2e 4c 6f 6f 70 2e 70 72 6f 74 y(Tone.Loop.prot
806d0 6f 74 79 70 65 2c 20 27 70 72 6f 62 61 62 69 6c otype, 'probabil
806e0 69 74 79 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 ity', {..
806f0 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
80700 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
80710 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 65 76 return this._ev
80720 65 6e 74 2e 70 72 6f 62 61 62 69 6c 69 74 79 3b ent.probability;
80730 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
80740 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
80750 69 6f 6e 20 28 70 72 6f 62 29 20 7b 0a 09 20 20 ion (prob) {..
80760 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
80770 65 76 65 6e 74 2e 70 72 6f 62 61 62 69 6c 69 74 event.probabilit
80780 79 20 3d 20 70 72 6f 62 3b 0a 09 20 20 20 20 20 y = prob;..
80790 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
807a0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 4d 75 74 /**... * Mut
807b0 69 6e 67 20 74 68 65 20 4c 6f 6f 70 20 6d 65 61 ing the Loop mea
807c0 6e 73 20 74 68 61 74 20 6e 6f 20 63 61 6c 6c 62 ns that no callb
807d0 61 63 6b 73 20 61 72 65 20 69 6e 76 6f 6b 65 64 acks are invoked
807e0 2e 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f .... * @memberO
807f0 66 20 54 6f 6e 65 2e 4c 6f 6f 70 23 0a 09 09 20 f Tone.Loop#...
80800 2a 20 20 40 74 79 70 65 20 7b 42 6f 6f 6c 65 61 * @type {Boolea
80810 6e 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 6d n}... * @name m
80820 75 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f ute... */.. O
80830 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 bject.defineProp
80840 65 72 74 79 28 54 6f 6e 65 2e 4c 6f 6f 70 2e 70 erty(Tone.Loop.p
80850 72 6f 74 6f 74 79 70 65 2c 20 27 6d 75 74 65 27 rototype, 'mute'
80860 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
80870 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
80880 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
80890 75 72 6e 20 74 68 69 73 2e 5f 65 76 65 6e 74 2e urn this._event.
808a0 6d 75 74 65 3b 0a 09 20 20 20 20 20 20 20 20 7d mute;.. }
808b0 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 ,.. set:
808c0 66 75 6e 63 74 69 6f 6e 20 28 6d 75 74 65 29 20 function (mute)
808d0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
808e0 68 69 73 2e 5f 65 76 65 6e 74 2e 6d 75 74 65 20 his._event.mute
808f0 3d 20 6d 75 74 65 3b 0a 09 20 20 20 20 20 20 20 = mute;..
80900 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
80910 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 6e /**... * The n
80920 75 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 69 umber of iterati
80930 6f 6e 73 20 6f 66 20 74 68 65 20 6c 6f 6f 70 2e ons of the loop.
80940 20 54 68 65 20 64 65 66 61 75 6c 74 0a 09 09 20 The default...
80950 2a 20 20 76 61 6c 75 65 20 69 73 20 49 6e 66 69 * value is Infi
80960 6e 69 74 79 20 28 6c 6f 6f 70 20 66 6f 72 65 76 nity (loop forev
80970 65 72 29 2e 0a 09 09 20 2a 20 20 40 6d 65 6d 62 er).... * @memb
80980 65 72 4f 66 20 54 6f 6e 65 2e 4c 6f 6f 70 23 0a erOf Tone.Loop#.
80990 09 09 20 2a 20 20 40 74 79 70 65 20 7b 50 6f 73 .. * @type {Pos
809a0 69 74 69 76 65 7d 0a 09 09 20 2a 20 20 40 6e 61 itive}... * @na
809b0 6d 65 20 69 74 65 72 61 74 69 6f 6e 73 0a 09 09 me iterations...
809c0 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
809d0 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
809e0 6f 6e 65 2e 4c 6f 6f 70 2e 70 72 6f 74 6f 74 79 one.Loop.prototy
809f0 70 65 2c 20 27 69 74 65 72 61 74 69 6f 6e 73 27 pe, 'iterations'
80a00 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
80a10 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
80a20 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
80a30 28 74 68 69 73 2e 5f 65 76 65 6e 74 2e 6c 6f 6f (this._event.loo
80a40 70 20 3d 3d 3d 20 74 72 75 65 29 20 7b 0a 09 20 p === true) {..
80a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
80a60 65 74 75 72 6e 20 49 6e 66 69 6e 69 74 79 3b 0a eturn Infinity;.
80a70 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
80a80 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
80a90 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
80aa0 69 73 2e 5f 65 76 65 6e 74 2e 6c 6f 6f 70 3b 0a is._event.loop;.
80ab0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
80ac0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
80ad0 72 6e 20 74 68 69 73 2e 5f 70 61 74 74 65 72 6e rn this._pattern
80ae0 2e 69 6e 64 65 78 3b 0a 09 20 20 20 20 20 20 20 .index;..
80af0 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 },.. set
80b00 3a 20 66 75 6e 63 74 69 6f 6e 20 28 69 74 65 72 : function (iter
80b10 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 s) {..
80b20 20 20 69 66 20 28 69 74 65 72 73 20 3d 3d 3d 20 if (iters ===
80b30 49 6e 66 69 6e 69 74 79 29 20 7b 0a 09 20 20 20 Infinity) {..
80b40 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
80b50 73 2e 5f 65 76 65 6e 74 2e 6c 6f 6f 70 20 3d 20 s._event.loop =
80b60 74 72 75 65 3b 0a 09 20 20 20 20 20 20 20 20 20 true;..
80b70 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
80b80 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
80b90 73 2e 5f 65 76 65 6e 74 2e 6c 6f 6f 70 20 3d 20 s._event.loop =
80ba0 69 74 65 72 73 3b 0a 09 20 20 20 20 20 20 20 20 iters;..
80bb0 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d }.. }
80bc0 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f .. });.. /
80bd0 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 **... * Clean u
80be0 70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 p... * @return
80bf0 20 7b 54 6f 6e 65 2e 4c 6f 6f 70 7d 20 20 74 68 {Tone.Loop} th
80c00 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
80c10 6e 65 2e 4c 6f 6f 70 2e 70 72 6f 74 6f 74 79 70 ne.Loop.prototyp
80c20 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 e.dispose = func
80c30 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
80c40 20 20 20 74 68 69 73 2e 5f 65 76 65 6e 74 2e 64 this._event.d
80c50 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
80c60 20 20 20 74 68 69 73 2e 5f 65 76 65 6e 74 20 3d this._event =
80c70 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
80c80 74 68 69 73 2e 63 61 6c 6c 62 61 63 6b 20 3d 20 this.callback =
80c90 6e 75 6c 6c 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 null;.. };..
80ca0 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 4c return Tone.L
80cb0 6f 6f 70 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c oop;..});..Modul
80cc0 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 e(function (Tone
80cd0 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f ) {.. .. /
80ce0 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 **... * @class
80cf0 54 6f 6e 65 2e 50 61 72 74 20 69 73 20 61 20 63 Tone.Part is a c
80d00 6f 6c 6c 65 63 74 69 6f 6e 20 54 6f 6e 65 2e 45 ollection Tone.E
80d10 76 65 6e 74 73 20 77 68 69 63 68 20 63 61 6e 20 vents which can
80d20 62 65 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 be... *
80d30 73 74 61 72 74 65 64 2f 73 74 6f 70 65 64 20 61 started/stoped a
80d40 6e 64 20 6c 6f 6f 70 65 64 20 61 73 20 61 20 73 nd looped as a s
80d50 69 6e 67 6c 65 20 75 6e 69 74 2e 0a 09 09 20 2a ingle unit.... *
80d60 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 ... * @extends
80d70 7b 54 6f 6e 65 2e 45 76 65 6e 74 7d 0a 09 09 20 {Tone.Event}...
80d80 2a 20 20 40 70 61 72 61 6d 20 7b 46 75 6e 63 74 * @param {Funct
80d90 69 6f 6e 7d 20 63 61 6c 6c 62 61 63 6b 20 54 68 ion} callback Th
80da0 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 69 6e e callback to in
80db0 76 6f 6b 65 20 6f 6e 20 65 61 63 68 20 65 76 65 voke on each eve
80dc0 6e 74 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 nt... * @param
80dd0 7b 41 72 72 61 79 7d 20 65 76 65 6e 74 73 20 74 {Array} events t
80de0 68 65 20 61 72 72 61 79 20 6f 66 20 65 76 65 6e he array of even
80df0 74 73 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c ts... * @exampl
80e00 65 0a 09 09 20 2a 20 76 61 72 20 70 61 72 74 20 e... * var part
80e10 3d 20 6e 65 77 20 54 6f 6e 65 2e 50 61 72 74 28 = new Tone.Part(
80e20 66 75 6e 63 74 69 6f 6e 28 74 69 6d 65 2c 20 6e function(time, n
80e30 6f 74 65 29 7b 0a 09 09 20 2a 20 09 2f 2f 74 68 ote){... * .//th
80e40 65 20 6e 6f 74 65 73 20 67 69 76 65 6e 20 61 73 e notes given as
80e50 20 74 68 65 20 73 65 63 6f 6e 64 20 65 6c 65 6d the second elem
80e60 65 6e 74 20 69 6e 20 74 68 65 20 61 72 72 61 79 ent in the array
80e70 0a 09 09 20 2a 20 09 2f 2f 77 69 6c 6c 20 62 65 ... * .//will be
80e80 20 70 61 73 73 65 64 20 69 6e 20 61 73 20 74 68 passed in as th
80e90 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e e second argumen
80ea0 74 0a 09 09 20 2a 20 09 73 79 6e 74 68 2e 74 72 t... * .synth.tr
80eb0 69 67 67 65 72 41 74 74 61 63 6b 52 65 6c 65 61 iggerAttackRelea
80ec0 73 65 28 6e 6f 74 65 2c 20 22 38 6e 22 2c 20 74 se(note, "8n", t
80ed0 69 6d 65 29 3b 0a 09 09 20 2a 20 7d 2c 20 5b 5b ime);... * }, [[
80ee0 30 2c 20 22 43 32 22 5d 2c 20 5b 22 30 3a 32 22 0, "C2"], ["0:2"
80ef0 2c 20 22 43 33 22 5d 2c 20 5b 22 30 3a 33 3a 32 , "C3"], ["0:3:2
80f00 22 2c 20 22 47 32 22 5d 5d 29 3b 0a 09 09 20 2a ", "G2"]]);... *
80f10 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 @example... *
80f20 2f 2f 75 73 65 20 61 6e 20 61 72 72 61 79 20 6f //use an array o
80f30 66 20 6f 62 6a 65 63 74 73 20 61 73 20 6c 6f 6e f objects as lon
80f40 67 20 61 73 20 74 68 65 20 6f 62 6a 65 63 74 20 g as the object
80f50 68 61 73 20 61 20 22 74 69 6d 65 22 20 61 74 74 has a "time" att
80f60 72 69 62 75 74 65 0a 09 09 20 2a 20 76 61 72 20 ribute... * var
80f70 70 61 72 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e part = new Tone.
80f80 50 61 72 74 28 66 75 6e 63 74 69 6f 6e 28 74 69 Part(function(ti
80f90 6d 65 2c 20 76 61 6c 75 65 29 7b 0a 09 09 20 2a me, value){... *
80fa0 20 09 2f 2f 74 68 65 20 76 61 6c 75 65 20 69 73 .//the value is
80fb0 20 61 6e 20 6f 62 6a 65 63 74 20 77 68 69 63 68 an object which
80fc0 20 63 6f 6e 74 61 69 6e 73 20 62 6f 74 68 20 74 contains both t
80fd0 68 65 20 6e 6f 74 65 20 61 6e 64 20 74 68 65 20 he note and the
80fe0 76 65 6c 6f 63 69 74 79 0a 09 09 20 2a 20 09 73 velocity... * .s
80ff0 79 6e 74 68 2e 74 72 69 67 67 65 72 41 74 74 61 ynth.triggerAtta
81000 63 6b 52 65 6c 65 61 73 65 28 76 61 6c 75 65 2e ckRelease(value.
81010 6e 6f 74 65 2c 20 22 38 6e 22 2c 20 74 69 6d 65 note, "8n", time
81020 2c 20 76 61 6c 75 65 2e 76 65 6c 6f 63 69 74 79 , value.velocity
81030 29 3b 0a 09 09 20 2a 20 7d 2c 20 5b 7b 22 74 69 );... * }, [{"ti
81040 6d 65 22 20 3a 20 30 2c 20 22 6e 6f 74 65 22 20 me" : 0, "note"
81050 3a 20 22 43 33 22 2c 20 22 76 65 6c 6f 63 69 74 : "C3", "velocit
81060 79 22 3a 20 30 2e 39 7d 2c 20 0a 09 09 20 2a 20 y": 0.9}, ... *
81070 09 20 20 20 7b 22 74 69 6d 65 22 20 3a 20 22 30 . {"time" : "0
81080 3a 32 22 2c 20 22 6e 6f 74 65 22 20 3a 20 22 43 :2", "note" : "C
81090 34 22 2c 20 22 76 65 6c 6f 63 69 74 79 22 3a 20 4", "velocity":
810a0 30 2e 35 7d 0a 09 09 20 2a 20 5d 29 2e 73 74 61 0.5}... * ]).sta
810b0 72 74 28 30 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 rt(0);... */..
810c0 20 20 54 6f 6e 65 2e 50 61 72 74 20 3d 20 66 75 Tone.Part = fu
810d0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
810e0 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 var options
810f0 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f = this.optionsO
81100 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c bject(arguments,
81110 20 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 [..
81120 27 63 61 6c 6c 62 61 63 6b 27 2c 0a 09 20 20 20 'callback',..
81130 20 20 20 20 20 20 20 20 20 27 65 76 65 6e 74 73 'events
81140 27 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 54 6f '.. ], To
81150 6e 65 2e 50 61 72 74 2e 64 65 66 61 75 6c 74 73 ne.Part.defaults
81160 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
81170 09 09 09 20 2a 20 20 49 66 20 74 68 65 20 70 61 ... * If the pa
81180 72 74 20 69 73 20 6c 6f 6f 70 69 6e 67 20 6f 72 rt is looping or
81190 20 6e 6f 74 0a 09 09 09 20 2a 20 20 40 74 79 70 not.... * @typ
811a0 65 20 20 7b 42 6f 6f 6c 65 61 6e 7c 50 6f 73 69 e {Boolean|Posi
811b0 74 69 76 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 tive}.... * @pr
811c0 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 ivate.... */..
811d0 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f 6f 70 this._loop
811e0 20 3d 20 6f 70 74 69 6f 6e 73 2e 6c 6f 6f 70 3b = options.loop;
811f0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
81200 09 20 2a 20 20 57 68 65 6e 20 74 68 65 20 6e 6f . * When the no
81210 74 65 20 69 73 20 73 63 68 65 64 75 6c 65 64 20 te is scheduled
81220 74 6f 20 73 74 61 72 74 2e 0a 09 09 09 20 2a 20 to start..... *
81230 20 40 74 79 70 65 20 20 7b 54 69 63 6b 73 7d 0a @type {Ticks}.
81240 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
81250 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
81260 74 68 69 73 2e 5f 6c 6f 6f 70 53 74 61 72 74 20 this._loopStart
81270 3d 20 74 68 69 73 2e 74 6f 54 69 63 6b 73 28 6f = this.toTicks(o
81280 70 74 69 6f 6e 73 2e 6c 6f 6f 70 53 74 61 72 74 ptions.loopStart
81290 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
812a0 09 09 09 20 2a 20 20 57 68 65 6e 20 74 68 65 20 ... * When the
812b0 6e 6f 74 65 20 69 73 20 73 63 68 65 64 75 6c 65 note is schedule
812c0 64 20 74 6f 20 73 74 61 72 74 2e 0a 09 09 09 20 d to start.....
812d0 2a 20 20 40 74 79 70 65 20 20 7b 54 69 63 6b 73 * @type {Ticks
812e0 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
812f0 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
81300 20 20 74 68 69 73 2e 5f 6c 6f 6f 70 45 6e 64 20 this._loopEnd
81310 3d 20 74 68 69 73 2e 74 6f 54 69 63 6b 73 28 6f = this.toTicks(o
81320 70 74 69 6f 6e 73 2e 6c 6f 6f 70 45 6e 64 29 3b ptions.loopEnd);
81330 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
81340 09 20 2a 20 20 54 68 65 20 70 6c 61 79 62 61 63 . * The playbac
81350 6b 20 72 61 74 65 20 6f 66 20 74 68 65 20 70 61 k rate of the pa
81360 72 74 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 rt.... * @type
81370 20 7b 50 6f 73 69 74 69 76 65 7d 0a 09 09 09 20 {Positive}....
81380 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
81390 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
813a0 2e 5f 70 6c 61 79 62 61 63 6b 52 61 74 65 20 3d ._playbackRate =
813b0 20 6f 70 74 69 6f 6e 73 2e 70 6c 61 79 62 61 63 options.playbac
813c0 6b 52 61 74 65 3b 0a 09 20 20 20 20 20 20 20 20 kRate;..
813d0 2f 2a 2a 0a 09 09 09 20 2a 20 20 70 72 69 76 61 /**.... * priva
813e0 74 65 20 68 6f 6c 64 65 72 20 6f 66 20 70 72 6f te holder of pro
813f0 62 61 62 69 6c 69 74 79 20 76 61 6c 75 65 0a 09 bability value..
81400 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e 6f 72 .. * @type {Nor
81410 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 09 20 2a 20 malRange}.... *
81420 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
81430 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
81440 70 72 6f 62 61 62 69 6c 69 74 79 20 3d 20 6f 70 probability = op
81450 74 69 6f 6e 73 2e 70 72 6f 62 61 62 69 6c 69 74 tions.probabilit
81460 79 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a y;.. /**.
81470 09 09 09 20 2a 20 20 74 68 65 20 61 6d 6f 75 6e ... * the amoun
81480 74 20 6f 66 20 76 61 72 69 61 74 69 6f 6e 20 66 t of variation f
81490 72 6f 6d 20 74 68 65 0a 09 09 09 20 2a 20 20 67 rom the.... * g
814a0 69 76 65 6e 20 74 69 6d 65 2e 20 0a 09 09 09 20 iven time. ....
814b0 2a 20 20 40 74 79 70 65 20 7b 42 6f 6f 6c 65 61 * @type {Boolea
814c0 6e 7c 54 69 6d 65 7d 0a 09 09 09 20 2a 20 20 40 n|Time}.... * @
814d0 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
814e0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 68 75 this._hu
814f0 6d 61 6e 69 7a 65 20 3d 20 6f 70 74 69 6f 6e 73 manize = options
81500 2e 68 75 6d 61 6e 69 7a 65 3b 0a 09 20 20 20 20 .humanize;..
81510 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
81520 68 65 20 73 74 61 72 74 20 6f 66 66 73 65 74 0a he start offset.
81530 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 69 ... * @type {Ti
81540 63 6b 73 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 cks}.... * @pri
81550 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
81560 20 20 20 20 20 74 68 69 73 2e 5f 73 74 61 72 74 this._start
81570 4f 66 66 73 65 74 20 3d 20 30 3b 0a 09 20 20 20 Offset = 0;..
81580 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
81590 4b 65 65 70 73 20 74 72 61 63 6b 20 6f 66 20 74 Keeps track of t
815a0 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 he current state
815b0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 .... * @type {T
815c0 6f 6e 65 2e 54 69 6d 65 6c 69 6e 65 53 74 61 74 one.TimelineStat
815d0 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 e}.... * @priva
815e0 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
815f0 20 20 20 74 68 69 73 2e 5f 73 74 61 74 65 20 3d this._state =
81600 20 6e 65 77 20 54 6f 6e 65 2e 54 69 6d 65 6c 69 new Tone.Timeli
81610 6e 65 53 74 61 74 65 28 54 6f 6e 65 2e 53 74 61 neState(Tone.Sta
81620 74 65 2e 53 74 6f 70 70 65 64 29 3b 0a 09 20 20 te.Stopped);..
81630 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
81640 20 41 6e 20 61 72 72 61 79 20 6f 66 20 4f 62 6a An array of Obj
81650 65 63 74 73 2e 20 0a 09 09 09 20 2a 20 20 40 74 ects. .... * @t
81660 79 70 65 20 20 7b 41 72 72 61 79 7d 0a 09 09 09 ype {Array}....
81670 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
81680 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
81690 73 2e 5f 65 76 65 6e 74 73 20 3d 20 5b 5d 3b 0a s._events = [];.
816a0 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
816b0 20 2a 20 20 54 68 65 20 63 61 6c 6c 62 61 63 6b * The callback
816c0 20 74 6f 20 69 6e 76 6f 6b 65 20 61 74 20 61 6c to invoke at al
816d0 6c 20 74 68 65 20 73 63 68 65 64 75 6c 65 64 20 l the scheduled
816e0 65 76 65 6e 74 73 2e 0a 09 09 09 20 2a 20 20 40 events..... * @
816f0 74 79 70 65 20 7b 46 75 6e 63 74 69 6f 6e 7d 0a type {Function}.
81700 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
81710 74 68 69 73 2e 63 61 6c 6c 62 61 63 6b 20 3d 20 this.callback =
81720 6f 70 74 69 6f 6e 73 2e 63 61 6c 6c 62 61 63 6b options.callback
81730 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
81740 09 09 20 2a 20 20 49 66 20 6d 75 74 65 20 69 73 .. * If mute is
81750 20 74 72 75 65 2c 20 74 68 65 20 63 61 6c 6c 62 true, the callb
81760 61 63 6b 20 77 6f 6e 27 74 20 62 65 0a 09 09 09 ack won't be....
81770 20 2a 20 20 69 6e 76 6f 6b 65 64 2e 0a 09 09 09 * invoked.....
81780 20 2a 20 20 40 74 79 70 65 20 7b 42 6f 6f 6c 65 * @type {Boole
81790 61 6e 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 an}.... */..
817a0 20 20 20 20 74 68 69 73 2e 6d 75 74 65 20 3d 20 this.mute =
817b0 6f 70 74 69 6f 6e 73 2e 6d 75 74 65 3b 0a 09 20 options.mute;..
817c0 20 20 20 20 20 20 20 2f 2f 61 64 64 20 74 68 65 //add the
817d0 20 65 76 65 6e 74 73 0a 09 20 20 20 20 20 20 20 events..
817e0 20 76 61 72 20 65 76 65 6e 74 73 20 3d 20 74 68 var events = th
817f0 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 6f 70 is.defaultArg(op
81800 74 69 6f 6e 73 2e 65 76 65 6e 74 73 2c 20 5b 5d tions.events, []
81810 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 );.. if (
81820 21 74 68 69 73 2e 69 73 55 6e 64 65 66 28 6f 70 !this.isUndef(op
81830 74 69 6f 6e 73 2e 65 76 65 6e 74 73 29 29 20 7b tions.events)) {
81840 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 66 6f .. fo
81850 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 r (var i = 0; i
81860 3c 20 65 76 65 6e 74 73 2e 6c 65 6e 67 74 68 3b < events.length;
81870 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 i++) {..
81880 20 20 20 20 20 20 20 20 20 69 66 20 28 41 72 72 if (Arr
81890 61 79 2e 69 73 41 72 72 61 79 28 65 76 65 6e 74 ay.isArray(event
818a0 73 5b 69 5d 29 29 20 7b 0a 09 20 20 20 20 20 20 s[i])) {..
818b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
818c0 69 73 2e 61 64 64 28 65 76 65 6e 74 73 5b 69 5d is.add(events[i]
818d0 5b 30 5d 2c 20 65 76 65 6e 74 73 5b 69 5d 5b 31 [0], events[i][1
818e0 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ]);..
818f0 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
81900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
81910 20 20 20 74 68 69 73 2e 61 64 64 28 65 76 65 6e this.add(even
81920 74 73 5b 69 5d 29 3b 0a 09 20 20 20 20 20 20 20 ts[i]);..
81930 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
81940 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
81950 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 }.. };..
81960 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
81970 6e 65 2e 50 61 72 74 2c 20 54 6f 6e 65 2e 45 76 ne.Part, Tone.Ev
81980 65 6e 74 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 ent);.. /**..
81990 09 20 2a 20 20 54 68 65 20 64 65 66 61 75 6c 74 . * The default
819a0 20 76 61 6c 75 65 73 0a 09 09 20 2a 20 20 40 74 values... * @t
819b0 79 70 65 20 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 ype {Object}...
819c0 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a 2f * @const... */
819d0 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 72 74 2e .. Tone.Part.
819e0 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 defaults = {..
819f0 20 20 20 20 20 20 27 63 61 6c 6c 62 61 63 6b 27 'callback'
81a00 3a 20 54 6f 6e 65 2e 6e 6f 4f 70 2c 0a 09 20 20 : Tone.noOp,..
81a10 20 20 20 20 20 20 27 6c 6f 6f 70 27 3a 20 66 61 'loop': fa
81a20 6c 73 65 2c 0a 09 20 20 20 20 20 20 20 20 27 6c lse,.. 'l
81a30 6f 6f 70 45 6e 64 27 3a 20 27 31 6d 27 2c 0a 09 oopEnd': '1m',..
81a40 20 20 20 20 20 20 20 20 27 6c 6f 6f 70 53 74 61 'loopSta
81a50 72 74 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 rt': 0,..
81a60 20 27 70 6c 61 79 62 61 63 6b 52 61 74 65 27 3a 'playbackRate':
81a70 20 31 2c 0a 09 20 20 20 20 20 20 20 20 27 70 72 1,.. 'pr
81a80 6f 62 61 62 69 6c 69 74 79 27 3a 20 31 2c 0a 09 obability': 1,..
81a90 20 20 20 20 20 20 20 20 27 68 75 6d 61 6e 69 7a 'humaniz
81aa0 65 27 3a 20 66 61 6c 73 65 2c 0a 09 20 20 20 20 e': false,..
81ab0 20 20 20 20 27 6d 75 74 65 27 3a 20 66 61 6c 73 'mute': fals
81ac0 65 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f e.. };.. /
81ad0 2a 2a 0a 09 09 20 2a 20 20 53 74 61 72 74 20 74 **... * Start t
81ae0 68 65 20 70 61 72 74 20 61 74 20 74 68 65 20 67 he part at the g
81af0 69 76 65 6e 20 74 69 6d 65 2e 20 0a 09 09 20 2a iven time. ... *
81b00 20 20 40 70 61 72 61 6d 20 20 7b 54 72 61 6e 73 @param {Trans
81b10 70 6f 72 74 54 69 6d 65 7d 20 20 74 69 6d 65 20 portTime} time
81b20 20 20 20 57 68 65 6e 20 74 6f 20 73 74 61 72 74 When to start
81b30 20 74 68 65 20 70 61 72 74 2e 0a 09 09 20 2a 20 the part.... *
81b40 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 3d 7d @param {Time=}
81b50 20 20 6f 66 66 73 65 74 20 20 54 68 65 20 6f 66 offset The of
81b60 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 73 74 fset from the st
81b70 61 72 74 20 6f 66 20 74 68 65 20 70 61 72 74 0a art of the part.
81b80 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 .. *
81b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
81ba0 6f 20 62 65 67 69 6e 20 70 6c 61 79 69 6e 67 20 o begin playing
81bb0 61 74 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 at.... * @retur
81bc0 6e 20 20 7b 54 6f 6e 65 2e 50 61 72 74 7d 20 20 n {Tone.Part}
81bd0 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
81be0 54 6f 6e 65 2e 50 61 72 74 2e 70 72 6f 74 6f 74 Tone.Part.protot
81bf0 79 70 65 2e 73 74 61 72 74 20 3d 20 66 75 6e 63 ype.start = func
81c00 74 69 6f 6e 20 28 74 69 6d 65 2c 20 6f 66 66 73 tion (time, offs
81c10 65 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 et) {.. v
81c20 61 72 20 74 69 63 6b 73 20 3d 20 74 68 69 73 2e ar ticks = this.
81c30 74 6f 54 69 63 6b 73 28 74 69 6d 65 29 3b 0a 09 toTicks(time);..
81c40 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
81c50 2e 5f 73 74 61 74 65 2e 67 65 74 56 61 6c 75 65 ._state.getValue
81c60 41 74 54 69 6d 65 28 74 69 63 6b 73 29 20 21 3d AtTime(ticks) !=
81c70 3d 20 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 61 = Tone.State.Sta
81c80 72 74 65 64 29 20 7b 0a 09 20 20 20 20 20 20 20 rted) {..
81c90 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 6c if (this._l
81ca0 6f 6f 70 29 20 7b 0a 09 20 20 20 20 20 20 20 20 oop) {..
81cb0 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d offset =
81cc0 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 67 this.defaultArg
81cd0 28 6f 66 66 73 65 74 2c 20 74 68 69 73 2e 5f 6c (offset, this._l
81ce0 6f 6f 70 53 74 61 72 74 29 3b 0a 09 20 20 20 20 oopStart);..
81cf0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
81d00 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
81d10 20 20 6f 66 66 73 65 74 20 3d 20 74 68 69 73 2e offset = this.
81d20 64 65 66 61 75 6c 74 41 72 67 28 6f 66 66 73 65 defaultArg(offse
81d30 74 2c 20 30 29 3b 0a 09 20 20 20 20 20 20 20 20 t, 0);..
81d40 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
81d50 20 20 20 6f 66 66 73 65 74 20 3d 20 74 68 69 73 offset = this
81d60 2e 74 6f 54 69 63 6b 73 28 6f 66 66 73 65 74 29 .toTicks(offset)
81d70 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 ;.. t
81d80 68 69 73 2e 5f 73 74 61 74 65 2e 61 64 64 28 7b his._state.add({
81d90 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
81da0 20 20 27 73 74 61 74 65 27 3a 20 54 6f 6e 65 2e 'state': Tone.
81db0 53 74 61 74 65 2e 53 74 61 72 74 65 64 2c 0a 09 State.Started,..
81dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
81dd0 27 74 69 6d 65 27 3a 20 74 69 63 6b 73 2c 0a 09 'time': ticks,..
81de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
81df0 27 6f 66 66 73 65 74 27 3a 20 6f 66 66 73 65 74 'offset': offset
81e00 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 29 .. })
81e10 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 ;.. t
81e20 68 69 73 2e 5f 66 6f 72 45 61 63 68 28 66 75 6e his._forEach(fun
81e30 63 74 69 6f 6e 20 28 65 76 65 6e 74 29 20 7b 0a ction (event) {.
81e40 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
81e50 20 74 68 69 73 2e 5f 73 74 61 72 74 4e 6f 74 65 this._startNote
81e60 28 65 76 65 6e 74 2c 20 74 69 63 6b 73 2c 20 6f (event, ticks, o
81e70 66 66 73 65 74 29 3b 0a 09 20 20 20 20 20 20 20 ffset);..
81e80 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 });..
81e90 20 20 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 }.. ret
81ea0 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
81eb0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
81ec0 20 53 74 61 72 74 20 74 68 65 20 65 76 65 6e 74 Start the event
81ed0 20 69 6e 20 74 68 65 20 67 69 76 65 6e 20 65 76 in the given ev
81ee0 65 6e 74 20 61 74 20 74 68 65 20 63 6f 72 72 65 ent at the corre
81ef0 63 74 20 74 69 6d 65 20 67 69 76 65 6e 0a 09 09 ct time given...
81f00 20 2a 20 20 74 68 65 20 74 69 63 6b 73 20 61 6e * the ticks an
81f10 64 20 6f 66 66 73 65 74 20 61 6e 64 20 6c 6f 6f d offset and loo
81f20 70 69 6e 67 2e 0a 09 09 20 2a 20 20 40 70 61 72 ping.... * @par
81f30 61 6d 20 20 7b 54 6f 6e 65 2e 45 76 65 6e 74 7d am {Tone.Event}
81f40 20 20 65 76 65 6e 74 20 0a 09 09 20 2a 20 20 40 event ... * @
81f50 70 61 72 61 6d 20 20 7b 54 69 63 6b 73 7d 20 20 param {Ticks}
81f60 74 69 63 6b 73 0a 09 09 20 2a 20 20 40 70 61 72 ticks... * @par
81f70 61 6d 20 20 7b 54 69 63 6b 73 7d 20 20 6f 66 66 am {Ticks} off
81f80 73 65 74 0a 09 09 20 2a 20 20 40 70 72 69 76 61 set... * @priva
81f90 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f te... */.. To
81fa0 6e 65 2e 50 61 72 74 2e 70 72 6f 74 6f 74 79 70 ne.Part.prototyp
81fb0 65 2e 5f 73 74 61 72 74 4e 6f 74 65 20 3d 20 66 e._startNote = f
81fc0 75 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 2c 20 unction (event,
81fd0 74 69 63 6b 73 2c 20 6f 66 66 73 65 74 29 20 7b ticks, offset) {
81fe0 0a 09 20 20 20 20 20 20 20 20 74 69 63 6b 73 20 .. ticks
81ff0 2d 3d 20 6f 66 66 73 65 74 3b 0a 09 20 20 20 20 -= offset;..
82000 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 6c 6f if (this._lo
82010 6f 70 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 op) {..
82020 20 20 20 69 66 20 28 65 76 65 6e 74 2e 73 74 61 if (event.sta
82030 72 74 4f 66 66 73 65 74 20 3e 3d 20 74 68 69 73 rtOffset >= this
82040 2e 5f 6c 6f 6f 70 53 74 61 72 74 20 26 26 20 65 ._loopStart && e
82050 76 65 6e 74 2e 73 74 61 72 74 4f 66 66 73 65 74 vent.startOffset
82060 20 3c 20 74 68 69 73 2e 5f 6c 6f 6f 70 45 6e 64 < this._loopEnd
82070 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
82080 20 20 20 20 20 69 66 20 28 65 76 65 6e 74 2e 73 if (event.s
82090 74 61 72 74 4f 66 66 73 65 74 20 3c 20 6f 66 66 tartOffset < off
820a0 73 65 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 set) {..
820b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 73 74 //st
820c0 61 72 74 20 69 74 20 6f 6e 20 74 68 65 20 6e 65 art it on the ne
820d0 78 74 20 6c 6f 6f 70 0a 09 20 20 20 20 20 20 20 xt loop..
820e0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 69 63 tic
820f0 6b 73 20 2b 3d 20 74 68 69 73 2e 5f 67 65 74 4c ks += this._getL
82100 6f 6f 70 44 75 72 61 74 69 6f 6e 28 29 3b 0a 09 oopDuration();..
82110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
82120 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
82130 20 20 20 65 76 65 6e 74 2e 73 74 61 72 74 28 54 event.start(T
82140 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 54 69 6d one.TransportTim
82150 65 28 74 69 63 6b 73 2c 20 27 69 27 29 29 3b 0a e(ticks, 'i'));.
82160 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
82170 6c 73 65 20 69 66 20 28 65 76 65 6e 74 2e 73 74 lse if (event.st
82180 61 72 74 4f 66 66 73 65 74 20 3c 20 74 68 69 73 artOffset < this
82190 2e 5f 6c 6f 6f 70 53 74 61 72 74 20 26 26 20 65 ._loopStart && e
821a0 76 65 6e 74 2e 73 74 61 72 74 4f 66 66 73 65 74 vent.startOffset
821b0 20 3e 3d 20 6f 66 66 73 65 74 29 20 7b 0a 09 20 >= offset) {..
821c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 e
821d0 76 65 6e 74 2e 6c 6f 6f 70 20 3d 20 66 61 6c 73 vent.loop = fals
821e0 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 e;..
821f0 20 20 20 20 65 76 65 6e 74 2e 73 74 61 72 74 28 event.start(
82200 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 54 69 Tone.TransportTi
82210 6d 65 28 74 69 63 6b 73 2c 20 27 69 27 29 29 3b me(ticks, 'i'));
82220 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
82230 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 . } else
82240 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 {.. i
82250 66 20 28 65 76 65 6e 74 2e 73 74 61 72 74 4f 66 f (event.startOf
82260 66 73 65 74 20 3e 3d 20 6f 66 66 73 65 74 29 20 fset >= offset)
82270 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
82280 20 20 20 65 76 65 6e 74 2e 73 74 61 72 74 28 54 event.start(T
82290 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 54 69 6d one.TransportTim
822a0 65 28 74 69 63 6b 73 2c 20 27 69 27 29 29 3b 0a e(ticks, 'i'));.
822b0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
822c0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
822d0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
822e0 20 54 68 65 20 73 74 61 72 74 20 66 72 6f 6d 20 The start from
822f0 74 68 65 20 73 63 68 65 64 75 6c 65 64 20 73 74 the scheduled st
82300 61 72 74 20 74 69 6d 65 0a 09 09 20 2a 20 20 40 art time... * @
82310 74 79 70 65 20 7b 54 69 63 6b 73 7d 0a 09 09 20 type {Ticks}...
82320 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
82330 65 2e 50 61 72 74 23 0a 09 09 20 2a 20 20 40 6e e.Part#... * @n
82340 61 6d 65 20 73 74 61 72 74 4f 66 66 73 65 74 0a ame startOffset.
82350 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
82360 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
82370 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
82380 54 6f 6e 65 2e 50 61 72 74 2e 70 72 6f 74 6f 74 Tone.Part.protot
82390 79 70 65 2c 20 27 73 74 61 72 74 4f 66 66 73 65 ype, 'startOffse
823a0 74 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 t', {.. g
823b0 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
823c0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
823d0 65 74 75 72 6e 20 74 68 69 73 2e 5f 73 74 61 72 eturn this._star
823e0 74 4f 66 66 73 65 74 3b 0a 09 20 20 20 20 20 20 tOffset;..
823f0 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
82400 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6f 66 66 t: function (off
82410 73 65 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 set) {..
82420 20 20 20 20 74 68 69 73 2e 5f 73 74 61 72 74 4f this._startO
82430 66 66 73 65 74 20 3d 20 6f 66 66 73 65 74 3b 0a ffset = offset;.
82440 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
82450 73 2e 5f 66 6f 72 45 61 63 68 28 66 75 6e 63 74 s._forEach(funct
82460 69 6f 6e 20 28 65 76 65 6e 74 29 20 7b 0a 09 20 ion (event) {..
82470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 e
82480 76 65 6e 74 2e 73 74 61 72 74 4f 66 66 73 65 74 vent.startOffset
82490 20 2b 3d 20 74 68 69 73 2e 5f 73 74 61 72 74 4f += this._startO
824a0 66 66 73 65 74 3b 0a 09 20 20 20 20 20 20 20 20 ffset;..
824b0 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 });..
824c0 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
824d0 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 74 6f 70 20 /**... * Stop
824e0 74 68 65 20 70 61 72 74 20 61 74 20 74 68 65 20 the part at the
824f0 67 69 76 65 6e 20 74 69 6d 65 2e 0a 09 09 20 2a given time.... *
82500 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 6c @param {Timel
82510 69 6e 65 50 6f 73 69 74 69 6f 6e 7d 20 20 74 69 inePosition} ti
82520 6d 65 20 20 57 68 65 6e 20 74 6f 20 73 74 6f 70 me When to stop
82530 20 74 68 65 20 70 61 72 74 2e 0a 09 09 20 2a 20 the part.... *
82540 20 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e @return {Tone.
82550 50 61 72 74 7d 20 20 74 68 69 73 0a 09 09 20 2a Part} this... *
82560 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 72 74 /.. Tone.Part
82570 2e 70 72 6f 74 6f 74 79 70 65 2e 73 74 6f 70 20 .prototype.stop
82580 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 = function (time
82590 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 72 ) {.. var
825a0 20 74 69 63 6b 73 20 3d 20 74 68 69 73 2e 74 6f ticks = this.to
825b0 54 69 63 6b 73 28 74 69 6d 65 29 3b 0a 09 20 20 Ticks(time);..
825c0 20 20 20 20 20 20 74 68 69 73 2e 5f 73 74 61 74 this._stat
825d0 65 2e 63 61 6e 63 65 6c 28 74 69 63 6b 73 29 3b e.cancel(ticks);
825e0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
825f0 73 74 61 74 65 2e 73 65 74 53 74 61 74 65 41 74 state.setStateAt
82600 54 69 6d 65 28 54 6f 6e 65 2e 53 74 61 74 65 2e Time(Tone.State.
82610 53 74 6f 70 70 65 64 2c 20 74 69 63 6b 73 29 3b Stopped, ticks);
82620 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
82630 66 6f 72 45 61 63 68 28 66 75 6e 63 74 69 6f 6e forEach(function
82640 20 28 65 76 65 6e 74 29 20 7b 0a 09 20 20 20 20 (event) {..
82650 20 20 20 20 20 20 20 20 65 76 65 6e 74 2e 73 74 event.st
82660 6f 70 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 op(time);..
82670 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 });..
82680 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 return this;..
82690 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
826a0 20 2a 20 20 47 65 74 2f 53 65 74 20 61 6e 20 45 * Get/Set an E
826b0 76 65 6e 74 27 73 20 76 61 6c 75 65 20 61 74 20 vent's value at
826c0 74 68 65 20 67 69 76 65 6e 20 74 69 6d 65 2e 20 the given time.
826d0 0a 09 09 20 2a 20 20 49 66 20 61 20 76 61 6c 75 ... * If a valu
826e0 65 20 69 73 20 70 61 73 73 65 64 20 69 6e 20 61 e is passed in a
826f0 6e 64 20 6e 6f 20 65 76 65 6e 74 20 65 78 69 73 nd no event exis
82700 74 73 20 61 74 0a 09 09 20 2a 20 20 74 68 65 20 ts at... * the
82710 67 69 76 65 6e 20 74 69 6d 65 2c 20 6f 6e 65 20 given time, one
82720 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 20 will be created
82730 77 69 74 68 20 74 68 61 74 20 76 61 6c 75 65 2e with that value.
82740 20 0a 09 09 20 2a 20 20 49 66 20 74 77 6f 20 65 ... * If two e
82750 76 65 6e 74 73 20 61 72 65 20 61 74 20 74 68 65 vents are at the
82760 20 73 61 6d 65 20 74 69 6d 65 2c 20 74 68 65 20 same time, the
82770 66 69 72 73 74 20 6f 6e 65 20 77 69 6c 6c 0a 09 first one will..
82780 09 20 2a 20 20 62 65 20 72 65 74 75 72 6e 65 64 . * be returned
82790 2e 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 .... * @example
827a0 0a 09 09 20 2a 20 70 61 72 74 2e 61 74 28 22 31 ... * part.at("1
827b0 6d 22 29 3b 20 2f 2f 72 65 74 75 72 6e 73 20 74 m"); //returns t
827c0 68 65 20 70 61 72 74 20 61 74 20 74 68 65 20 66 he part at the f
827d0 69 72 73 74 20 6d 65 61 73 75 72 65 0a 09 09 20 irst measure...
827e0 2a 0a 09 09 20 2a 20 70 61 72 74 2e 61 74 28 22 *... * part.at("
827f0 32 6d 22 2c 20 22 43 32 22 29 3b 20 2f 2f 73 65 2m", "C2"); //se
82800 74 20 74 68 65 20 76 61 6c 75 65 20 61 74 20 22 t the value at "
82810 32 6d 22 20 74 6f 20 43 32 2e 20 0a 09 09 20 2a 2m" to C2. ... *
82820 20 2f 2f 69 66 20 61 6e 20 65 76 65 6e 74 20 64 //if an event d
82830 69 64 6e 27 74 20 65 78 69 73 74 20 61 74 20 74 idn't exist at t
82840 68 61 74 20 74 69 6d 65 2c 20 69 74 20 77 69 6c hat time, it wil
82850 6c 20 62 65 20 63 72 65 61 74 65 64 2e 0a 09 09 l be created....
82860 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 72 61 6e * @param {Tran
82870 73 70 6f 72 74 54 69 6d 65 7d 20 74 69 6d 65 20 sportTime} time
82880 54 68 65 20 74 69 6d 65 20 6f 66 20 74 68 65 20 The time of the
82890 65 76 65 6e 74 20 74 6f 20 67 65 74 20 6f 72 20 event to get or
828a0 73 65 74 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 set.... * @para
828b0 6d 20 7b 2a 3d 7d 20 76 61 6c 75 65 20 49 66 20 m {*=} value If
828c0 61 20 76 61 6c 75 65 20 69 73 20 70 61 73 73 65 a value is passe
828d0 64 20 69 6e 2c 20 74 68 65 20 76 61 6c 75 65 20 d in, the value
828e0 6f 66 20 74 68 65 0a 09 09 20 2a 20 20 20 20 20 of the... *
828f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 e
82900 76 65 6e 74 20 61 74 20 74 68 65 20 67 69 76 65 vent at the give
82910 6e 20 74 69 6d 65 20 77 69 6c 6c 20 62 65 20 73 n time will be s
82920 65 74 20 74 6f 20 69 74 2e 0a 09 09 20 2a 20 20 et to it.... *
82930 40 72 65 74 75 72 6e 20 7b 54 6f 6e 65 2e 45 76 @return {Tone.Ev
82940 65 6e 74 7d 20 74 68 65 20 65 76 65 6e 74 20 61 ent} the event a
82950 74 20 74 68 65 20 74 69 6d 65 0a 09 09 20 2a 2f t the time... */
82960 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 72 74 2e .. Tone.Part.
82970 70 72 6f 74 6f 74 79 70 65 2e 61 74 20 3d 20 66 prototype.at = f
82980 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 2c 20 76 unction (time, v
82990 61 6c 75 65 29 20 7b 0a 09 20 20 20 20 20 20 20 alue) {..
829a0 20 74 69 6d 65 20 3d 20 54 6f 6e 65 2e 54 72 61 time = Tone.Tra
829b0 6e 73 70 6f 72 74 54 69 6d 65 28 74 69 6d 65 29 nsportTime(time)
829c0 3b 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 74 ;.. var t
829d0 69 63 6b 54 69 6d 65 20 3d 20 54 6f 6e 65 2e 54 ickTime = Tone.T
829e0 69 6d 65 28 31 2c 20 27 69 27 29 2e 74 6f 53 65 ime(1, 'i').toSe
829f0 63 6f 6e 64 73 28 29 3b 0a 09 20 20 20 20 20 20 conds();..
82a00 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 for (var i = 0
82a10 3b 20 69 20 3c 20 74 68 69 73 2e 5f 65 76 65 6e ; i < this._even
82a20 74 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 ts.length; i++)
82a30 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 {.. v
82a40 61 72 20 65 76 65 6e 74 20 3d 20 74 68 69 73 2e ar event = this.
82a50 5f 65 76 65 6e 74 73 5b 69 5d 3b 0a 09 20 20 20 _events[i];..
82a60 20 20 20 20 20 20 20 20 20 69 66 20 28 4d 61 74 if (Mat
82a70 68 2e 61 62 73 28 74 69 6d 65 2e 74 6f 54 69 63 h.abs(time.toTic
82a80 6b 73 28 29 20 2d 20 65 76 65 6e 74 2e 73 74 61 ks() - event.sta
82a90 72 74 4f 66 66 73 65 74 29 20 3c 20 74 69 63 6b rtOffset) < tick
82aa0 54 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 Time) {..
82ab0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68 if (!th
82ac0 69 73 2e 69 73 55 6e 64 65 66 28 76 61 6c 75 65 is.isUndef(value
82ad0 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 )) {..
82ae0 20 20 20 20 20 20 20 20 20 20 65 76 65 6e 74 2e event.
82af0 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 3b 0a 09 value = value;..
82b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
82b10 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
82b20 20 20 20 72 65 74 75 72 6e 20 65 76 65 6e 74 3b return event;
82b30 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
82b40 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
82b50 20 20 20 20 2f 2f 69 66 20 74 68 65 72 65 20 77 //if there w
82b60 61 73 20 6e 6f 20 65 76 65 6e 74 20 61 74 20 74 as no event at t
82b70 68 61 74 20 74 69 6d 65 2c 20 63 72 65 61 74 65 hat time, create
82b80 20 6f 6e 65 0a 09 20 20 20 20 20 20 20 20 69 66 one.. if
82b90 20 28 21 74 68 69 73 2e 69 73 55 6e 64 65 66 28 (!this.isUndef(
82ba0 76 61 6c 75 65 29 29 20 7b 0a 09 20 20 20 20 20 value)) {..
82bb0 20 20 20 20 20 20 20 74 68 69 73 2e 61 64 64 28 this.add(
82bc0 74 69 6d 65 2c 20 76 61 6c 75 65 29 3b 0a 09 20 time, value);..
82bd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 72 65 74 //ret
82be0 75 72 6e 20 74 68 65 20 6e 65 77 20 65 76 65 6e urn the new even
82bf0 74 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 t.. r
82c00 65 74 75 72 6e 20 74 68 69 73 2e 5f 65 76 65 6e eturn this._even
82c10 74 73 5b 74 68 69 73 2e 5f 65 76 65 6e 74 73 2e ts[this._events.
82c20 6c 65 6e 67 74 68 20 2d 20 31 5d 3b 0a 09 20 20 length - 1];..
82c30 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 } else {..
82c40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
82c50 72 6e 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 rn null;..
82c60 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 }.. };..
82c70 20 2f 2a 2a 0a 09 09 20 2a 20 20 41 64 64 20 61 /**... * Add a
82c80 20 61 6e 20 65 76 65 6e 74 20 74 6f 20 74 68 65 an event to the
82c90 20 70 61 72 74 2e 20 0a 09 09 20 2a 20 20 40 70 part. ... * @p
82ca0 61 72 61 6d 20 7b 54 69 6d 65 7d 20 74 69 6d 65 aram {Time} time
82cb0 20 54 68 65 20 74 69 6d 65 20 74 68 65 20 6e 6f The time the no
82cc0 74 65 20 73 68 6f 75 6c 64 20 73 74 61 72 74 2e te should start.
82cd0 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 ... *
82ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
82cf0 20 49 66 20 61 6e 20 6f 62 6a 65 63 74 20 69 73 If an object is
82d00 20 70 61 73 73 65 64 20 69 6e 2c 20 69 74 20 73 passed in, it s
82d10 68 6f 75 6c 64 0a 09 09 20 2a 20 20 20 20 20 20 hould... *
82d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
82d30 20 20 20 20 20 20 68 61 76 65 20 61 20 27 74 69 have a 'ti
82d40 6d 65 27 20 61 74 74 72 69 62 75 74 65 20 61 6e me' attribute an
82d50 64 20 74 68 65 20 72 65 73 74 0a 09 09 20 2a 20 d the rest... *
82d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
82d70 20 20 20 20 20 20 20 20 20 20 20 6f 66 20 74 68 of th
82d80 65 20 6f 62 6a 65 63 74 20 77 69 6c 6c 20 62 65 e object will be
82d90 20 75 73 65 64 20 61 73 20 74 68 65 20 27 76 61 used as the 'va
82da0 6c 75 65 27 2e 0a 09 09 20 2a 20 20 40 70 61 72 lue'.... * @par
82db0 61 6d 20 20 7b 54 6f 6e 65 2e 45 76 65 6e 74 7c am {Tone.Event|
82dc0 2a 7d 20 20 76 61 6c 75 65 20 0a 09 09 20 2a 20 *} value ... *
82dd0 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e @returns {Tone.
82de0 50 61 72 74 7d 20 74 68 69 73 0a 09 09 20 2a 20 Part} this... *
82df0 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 70 @example... * p
82e00 61 72 74 2e 61 64 64 28 22 31 6d 22 2c 20 22 43 art.add("1m", "C
82e10 23 2b 31 31 22 29 3b 0a 09 09 20 2a 2f 0a 09 20 #+11");... */..
82e20 20 20 20 54 6f 6e 65 2e 50 61 72 74 2e 70 72 6f Tone.Part.pro
82e30 74 6f 74 79 70 65 2e 61 64 64 20 3d 20 66 75 6e totype.add = fun
82e40 63 74 69 6f 6e 20 28 74 69 6d 65 2c 20 76 61 6c ction (time, val
82e50 75 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f ue) {.. /
82e60 2f 65 78 74 72 61 63 74 20 74 68 65 20 70 61 72 /extract the par
82e70 61 6d 65 74 65 72 73 0a 09 20 20 20 20 20 20 20 ameters..
82e80 20 69 66 20 28 74 69 6d 65 2e 68 61 73 4f 77 6e if (time.hasOwn
82e90 50 72 6f 70 65 72 74 79 28 27 74 69 6d 65 27 29 Property('time')
82ea0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
82eb0 20 76 61 6c 75 65 20 3d 20 74 69 6d 65 3b 0a 09 value = time;..
82ec0 20 20 20 20 20 20 20 20 20 20 20 20 74 69 6d 65 time
82ed0 20 3d 20 76 61 6c 75 65 2e 74 69 6d 65 3b 0a 09 = value.time;..
82ee0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
82ef0 20 20 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 time = this.t
82f00 6f 54 69 63 6b 73 28 74 69 6d 65 29 3b 0a 09 20 oTicks(time);..
82f10 20 20 20 20 20 20 20 76 61 72 20 65 76 65 6e 74 var event
82f20 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 76 ;.. if (v
82f30 61 6c 75 65 20 69 6e 73 74 61 6e 63 65 6f 66 20 alue instanceof
82f40 54 6f 6e 65 2e 45 76 65 6e 74 29 20 7b 0a 09 20 Tone.Event) {..
82f50 20 20 20 20 20 20 20 20 20 20 20 65 76 65 6e 74 event
82f60 20 3d 20 76 61 6c 75 65 3b 0a 09 20 20 20 20 20 = value;..
82f70 20 20 20 20 20 20 20 65 76 65 6e 74 2e 63 61 6c event.cal
82f80 6c 62 61 63 6b 20 3d 20 74 68 69 73 2e 5f 74 69 lback = this._ti
82f90 63 6b 2e 62 69 6e 64 28 74 68 69 73 29 3b 0a 09 ck.bind(this);..
82fa0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
82fb0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 65 76 .. ev
82fc0 65 6e 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 45 ent = new Tone.E
82fd0 76 65 6e 74 28 7b 0a 09 20 20 20 20 20 20 20 20 vent({..
82fe0 20 20 20 20 20 20 20 20 27 63 61 6c 6c 62 61 63 'callbac
82ff0 6b 27 3a 20 74 68 69 73 2e 5f 74 69 63 6b 2e 62 k': this._tick.b
83000 69 6e 64 28 74 68 69 73 29 2c 0a 09 20 20 20 20 ind(this),..
83010 20 20 20 20 20 20 20 20 20 20 20 20 27 76 61 6c 'val
83020 75 65 27 3a 20 76 61 6c 75 65 0a 09 20 20 20 20 ue': value..
83030 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 });..
83040 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
83050 2f 2f 74 68 65 20 73 74 61 72 74 20 6f 66 66 73 //the start offs
83060 65 74 0a 09 20 20 20 20 20 20 20 20 65 76 65 6e et.. even
83070 74 2e 73 74 61 72 74 4f 66 66 73 65 74 20 3d 20 t.startOffset =
83080 74 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 2f time;.. /
83090 2f 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 /initialize the
830a0 76 61 6c 75 65 73 0a 09 20 20 20 20 20 20 20 20 values..
830b0 65 76 65 6e 74 2e 73 65 74 28 7b 0a 09 20 20 20 event.set({..
830c0 20 20 20 20 20 20 20 20 20 27 6c 6f 6f 70 45 6e 'loopEn
830d0 64 27 3a 20 74 68 69 73 2e 6c 6f 6f 70 45 6e 64 d': this.loopEnd
830e0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
830f0 6c 6f 6f 70 53 74 61 72 74 27 3a 20 74 68 69 73 loopStart': this
83100 2e 6c 6f 6f 70 53 74 61 72 74 2c 0a 09 20 20 20 .loopStart,..
83110 20 20 20 20 20 20 20 20 20 27 6c 6f 6f 70 27 3a 'loop':
83120 20 74 68 69 73 2e 6c 6f 6f 70 2c 0a 09 20 20 20 this.loop,..
83130 20 20 20 20 20 20 20 20 20 27 68 75 6d 61 6e 69 'humani
83140 7a 65 27 3a 20 74 68 69 73 2e 68 75 6d 61 6e 69 ze': this.humani
83150 7a 65 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 ze,..
83160 20 27 70 6c 61 79 62 61 63 6b 52 61 74 65 27 3a 'playbackRate':
83170 20 74 68 69 73 2e 70 6c 61 79 62 61 63 6b 52 61 this.playbackRa
83180 74 65 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 te,..
83190 20 27 70 72 6f 62 61 62 69 6c 69 74 79 27 3a 20 'probability':
831a0 74 68 69 73 2e 70 72 6f 62 61 62 69 6c 69 74 79 this.probability
831b0 0a 09 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 .. });..
831c0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 65 76 65 this._eve
831d0 6e 74 73 2e 70 75 73 68 28 65 76 65 6e 74 29 3b nts.push(event);
831e0 0a 09 20 20 20 20 20 20 20 20 2f 2f 73 74 61 72 .. //star
831f0 74 20 74 68 65 20 6e 6f 74 65 20 69 66 20 69 74 t the note if it
83200 20 73 68 6f 75 6c 64 20 62 65 20 70 6c 61 79 65 should be playe
83210 64 20 72 69 67 68 74 20 6e 6f 77 0a 09 20 20 20 d right now..
83220 20 20 20 20 20 74 68 69 73 2e 5f 72 65 73 74 61 this._resta
83230 72 74 45 76 65 6e 74 28 65 76 65 6e 74 29 3b 0a rtEvent(event);.
83240 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
83250 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
83260 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 73 /**... * Res
83270 74 61 72 74 20 74 68 65 20 67 69 76 65 6e 20 65 tart the given e
83280 76 65 6e 74 0a 09 09 20 2a 20 20 40 70 61 72 61 vent... * @para
83290 6d 20 20 7b 54 6f 6e 65 2e 45 76 65 6e 74 7d 20 m {Tone.Event}
832a0 20 65 76 65 6e 74 20 0a 09 09 20 2a 20 20 40 70 event ... * @p
832b0 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 rivate... */..
832c0 20 20 54 6f 6e 65 2e 50 61 72 74 2e 70 72 6f 74 Tone.Part.prot
832d0 6f 74 79 70 65 2e 5f 72 65 73 74 61 72 74 45 76 otype._restartEv
832e0 65 6e 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ent = function (
832f0 65 76 65 6e 74 29 20 7b 0a 09 20 20 20 20 20 20 event) {..
83300 20 20 74 68 69 73 2e 5f 73 74 61 74 65 2e 66 6f this._state.fo
83310 72 45 61 63 68 28 66 75 6e 63 74 69 6f 6e 20 28 rEach(function (
83320 73 74 61 74 65 45 76 65 6e 74 29 20 7b 0a 09 20 stateEvent) {..
83330 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 if (s
83340 74 61 74 65 45 76 65 6e 74 2e 73 74 61 74 65 20 tateEvent.state
83350 3d 3d 3d 20 54 6f 6e 65 2e 53 74 61 74 65 2e 53 === Tone.State.S
83360 74 61 72 74 65 64 29 20 7b 0a 09 20 20 20 20 20 tarted) {..
83370 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
83380 5f 73 74 61 72 74 4e 6f 74 65 28 65 76 65 6e 74 _startNote(event
83390 2c 20 73 74 61 74 65 45 76 65 6e 74 2e 74 69 6d , stateEvent.tim
833a0 65 2c 20 73 74 61 74 65 45 76 65 6e 74 2e 6f 66 e, stateEvent.of
833b0 66 73 65 74 29 3b 0a 09 20 20 20 20 20 20 20 20 fset);..
833c0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 } else {..
833d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
833e0 73 74 6f 70 20 74 68 65 20 6e 6f 74 65 0a 09 20 stop the note..
833f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 e
83400 76 65 6e 74 2e 73 74 6f 70 28 54 6f 6e 65 2e 54 vent.stop(Tone.T
83410 72 61 6e 73 70 6f 72 74 54 69 6d 65 28 73 74 61 ransportTime(sta
83420 74 65 45 76 65 6e 74 2e 74 69 6d 65 2c 20 27 69 teEvent.time, 'i
83430 27 29 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 '));..
83440 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 2e 62 }.. }.b
83450 69 6e 64 28 74 68 69 73 29 29 3b 0a 09 20 20 20 ind(this));..
83460 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
83470 2a 20 20 52 65 6d 6f 76 65 20 61 6e 20 65 76 65 * Remove an eve
83480 6e 74 20 66 72 6f 6d 20 74 68 65 20 70 61 72 74 nt from the part
83490 2e 20 57 69 6c 6c 20 72 65 63 75 72 73 69 76 65 . Will recursive
834a0 6c 79 20 69 74 65 72 61 74 65 0a 09 09 20 2a 20 ly iterate... *
834b0 20 69 6e 74 6f 20 6e 65 73 74 65 64 20 70 61 72 into nested par
834c0 74 73 20 74 6f 20 66 69 6e 64 20 74 68 65 20 65 ts to find the e
834d0 76 65 6e 74 2e 0a 09 09 20 2a 20 20 40 70 61 72 vent.... * @par
834e0 61 6d 20 7b 54 69 6d 65 7d 20 74 69 6d 65 20 54 am {Time} time T
834f0 68 65 20 74 69 6d 65 20 6f 66 20 74 68 65 20 65 he time of the e
83500 76 65 6e 74 0a 09 09 20 2a 20 20 40 70 61 72 61 vent... * @para
83510 6d 20 7b 2a 7d 20 76 61 6c 75 65 20 4f 70 74 69 m {*} value Opti
83520 6f 6e 61 6c 6c 79 20 73 65 6c 65 63 74 20 6f 6e onally select on
83530 6c 79 20 61 20 73 70 65 63 69 66 69 63 20 65 76 ly a specific ev
83540 65 6e 74 20 76 61 6c 75 65 0a 09 09 20 2a 20 20 ent value... *
83550 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 50 @return {Tone.P
83560 61 72 74 7d 20 20 74 68 69 73 0a 09 09 20 2a 2f art} this... */
83570 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 72 74 2e .. Tone.Part.
83580 70 72 6f 74 6f 74 79 70 65 2e 72 65 6d 6f 76 65 prototype.remove
83590 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d = function (tim
835a0 65 2c 20 76 61 6c 75 65 29 20 7b 0a 09 20 20 20 e, value) {..
835b0 20 20 20 20 20 2f 2f 65 78 74 72 61 63 74 20 74 //extract t
835c0 68 65 20 70 61 72 61 6d 65 74 65 72 73 0a 09 20 he parameters..
835d0 20 20 20 20 20 20 20 69 66 20 28 74 69 6d 65 2e if (time.
835e0 68 61 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 27 hasOwnProperty('
835f0 74 69 6d 65 27 29 29 20 7b 0a 09 20 20 20 20 20 time')) {..
83600 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 74 value = t
83610 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ime;..
83620 20 20 74 69 6d 65 20 3d 20 76 61 6c 75 65 2e 74 time = value.t
83630 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a ime;.. }.
83640 09 20 20 20 20 20 20 20 20 74 69 6d 65 20 3d 20 . time =
83650 74 68 69 73 2e 74 6f 54 69 63 6b 73 28 74 69 6d this.toTicks(tim
83660 65 29 3b 0a 09 20 20 20 20 20 20 20 20 66 6f 72 e);.. for
83670 20 28 76 61 72 20 69 20 3d 20 74 68 69 73 2e 5f (var i = this._
83680 65 76 65 6e 74 73 2e 6c 65 6e 67 74 68 20 2d 20 events.length -
83690 31 3b 20 69 20 3e 3d 20 30 3b 20 69 2d 2d 29 20 1; i >= 0; i--)
836a0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 {.. v
836b0 61 72 20 65 76 65 6e 74 20 3d 20 74 68 69 73 2e ar event = this.
836c0 5f 65 76 65 6e 74 73 5b 69 5d 3b 0a 09 20 20 20 _events[i];..
836d0 20 20 20 20 20 20 20 20 20 69 66 20 28 65 76 65 if (eve
836e0 6e 74 20 69 6e 73 74 61 6e 63 65 6f 66 20 54 6f nt instanceof To
836f0 6e 65 2e 50 61 72 74 29 20 7b 0a 09 20 20 20 20 ne.Part) {..
83700 20 20 20 20 20 20 20 20 20 20 20 20 65 76 65 6e even
83710 74 2e 72 65 6d 6f 76 65 28 74 69 6d 65 2c 20 76 t.remove(time, v
83720 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 20 20 alue);..
83730 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 } else {..
83740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
83750 20 28 65 76 65 6e 74 2e 73 74 61 72 74 4f 66 66 (event.startOff
83760 73 65 74 20 3d 3d 3d 20 74 69 6d 65 29 20 7b 0a set === time) {.
83770 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
83780 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 if (this.is
83790 55 6e 64 65 66 28 76 61 6c 75 65 29 20 7c 7c 20 Undef(value) ||
837a0 21 74 68 69 73 2e 69 73 55 6e 64 65 66 28 76 61 !this.isUndef(va
837b0 6c 75 65 29 20 26 26 20 65 76 65 6e 74 2e 76 61 lue) && event.va
837c0 6c 75 65 20 3d 3d 3d 20 76 61 6c 75 65 29 20 7b lue === value) {
837d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
837e0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
837f0 65 76 65 6e 74 73 2e 73 70 6c 69 63 65 28 69 2c events.splice(i,
83800 20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 1);..
83810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 76 ev
83820 65 6e 74 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 ent.dispose();..
83830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
83840 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
83850 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
83860 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
83870 20 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 }.. retu
83880 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
83890 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
838a0 52 65 6d 6f 76 65 20 61 6c 6c 20 6f 66 20 74 68 Remove all of th
838b0 65 20 6e 6f 74 65 73 20 66 72 6f 6d 20 74 68 65 e notes from the
838c0 20 67 72 6f 75 70 2e 20 0a 09 09 20 2a 20 20 40 group. ... * @
838d0 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 50 61 return {Tone.Pa
838e0 72 74 7d 20 20 74 68 69 73 0a 09 09 20 2a 2f 0a rt} this... */.
838f0 09 20 20 20 20 54 6f 6e 65 2e 50 61 72 74 2e 70 . Tone.Part.p
83900 72 6f 74 6f 74 79 70 65 2e 72 65 6d 6f 76 65 41 rototype.removeA
83910 6c 6c 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 ll = function ()
83920 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 {.. this
83930 2e 5f 66 6f 72 45 61 63 68 28 66 75 6e 63 74 69 ._forEach(functi
83940 6f 6e 20 28 65 76 65 6e 74 29 20 7b 0a 09 20 20 on (event) {..
83950 20 20 20 20 20 20 20 20 20 20 65 76 65 6e 74 2e event.
83960 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
83970 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 });..
83980 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 20 3d 20 this._events =
83990 5b 5d 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 [];.. ret
839a0 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
839b0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
839c0 20 43 61 6e 63 65 6c 20 73 63 68 65 64 75 6c 65 Cancel schedule
839d0 64 20 73 74 61 74 65 20 63 68 61 6e 67 65 20 65 d state change e
839e0 76 65 6e 74 73 3a 20 69 2e 65 2e 20 22 73 74 61 vents: i.e. "sta
839f0 72 74 22 20 61 6e 64 20 22 73 74 6f 70 22 2e 0a rt" and "stop"..
83a00 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 .. * @param {Ti
83a10 6d 65 6c 69 6e 65 50 6f 73 69 74 69 6f 6e 7d 20 melinePosition}
83a20 61 66 74 65 72 20 54 68 65 20 74 69 6d 65 20 61 after The time a
83a30 66 74 65 72 20 77 68 69 63 68 20 74 6f 20 63 61 fter which to ca
83a40 6e 63 65 6c 20 74 68 65 20 73 63 68 65 64 75 6c ncel the schedul
83a50 65 64 20 65 76 65 6e 74 73 2e 0a 09 09 20 2a 20 ed events.... *
83a60 20 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e @return {Tone.
83a70 50 61 72 74 7d 20 20 74 68 69 73 0a 09 09 20 2a Part} this... *
83a80 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 72 74 /.. Tone.Part
83a90 2e 70 72 6f 74 6f 74 79 70 65 2e 63 61 6e 63 65 .prototype.cance
83aa0 6c 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 61 66 l = function (af
83ab0 74 65 72 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ter) {..
83ac0 61 66 74 65 72 20 3d 20 74 68 69 73 2e 74 6f 54 after = this.toT
83ad0 69 63 6b 73 28 61 66 74 65 72 29 3b 0a 09 20 20 icks(after);..
83ae0 20 20 20 20 20 20 74 68 69 73 2e 5f 66 6f 72 45 this._forE
83af0 61 63 68 28 66 75 6e 63 74 69 6f 6e 20 28 65 76 ach(function (ev
83b00 65 6e 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ent) {..
83b10 20 20 20 20 65 76 65 6e 74 2e 63 61 6e 63 65 6c event.cancel
83b20 28 61 66 74 65 72 29 3b 0a 09 20 20 20 20 20 20 (after);..
83b30 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 });.. t
83b40 68 69 73 2e 5f 73 74 61 74 65 2e 63 61 6e 63 65 his._state.cance
83b50 6c 28 61 66 74 65 72 29 3b 0a 09 20 20 20 20 20 l(after);..
83b60 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
83b70 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
83b80 0a 09 09 20 2a 20 20 49 74 65 72 61 74 65 20 6f ... * Iterate o
83b90 76 65 72 20 61 6c 6c 20 6f 66 20 74 68 65 20 65 ver all of the e
83ba0 76 65 6e 74 73 0a 09 09 20 2a 20 20 40 70 61 72 vents... * @par
83bb0 61 6d 20 7b 46 75 6e 63 74 69 6f 6e 7d 20 63 61 am {Function} ca
83bc0 6c 6c 62 61 63 6b 0a 09 09 20 2a 20 20 40 70 61 llback... * @pa
83bd0 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20 63 74 78 ram {Object} ctx
83be0 20 54 68 65 20 63 6f 6e 74 65 78 74 0a 09 09 20 The context...
83bf0 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a * @private... *
83c00 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 61 72 74 /.. Tone.Part
83c10 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 66 6f 72 45 .prototype._forE
83c20 61 63 68 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ach = function (
83c30 63 61 6c 6c 62 61 63 6b 2c 20 63 74 78 29 20 7b callback, ctx) {
83c40 0a 09 20 20 20 20 20 20 20 20 63 74 78 20 3d 20 .. ctx =
83c50 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 this.defaultArg(
83c60 63 74 78 2c 20 74 68 69 73 29 3b 0a 09 20 20 20 ctx, this);..
83c70 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 for (var i
83c80 3d 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 2e 6c = this._events.l
83c90 65 6e 67 74 68 20 2d 20 31 3b 20 69 20 3e 3d 20 ength - 1; i >=
83ca0 30 3b 20 69 2d 2d 29 20 7b 0a 09 20 20 20 20 20 0; i--) {..
83cb0 20 20 20 20 20 20 20 76 61 72 20 65 20 3d 20 74 var e = t
83cc0 68 69 73 2e 5f 65 76 65 6e 74 73 5b 69 5d 3b 0a his._events[i];.
83cd0 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
83ce0 28 65 20 69 6e 73 74 61 6e 63 65 6f 66 20 54 6f (e instanceof To
83cf0 6e 65 2e 50 61 72 74 29 20 7b 0a 09 20 20 20 20 ne.Part) {..
83d00 20 20 20 20 20 20 20 20 20 20 20 20 65 2e 5f 66 e._f
83d10 6f 72 45 61 63 68 28 63 61 6c 6c 62 61 63 6b 2c orEach(callback,
83d20 20 63 74 78 29 3b 0a 09 20 20 20 20 20 20 20 20 ctx);..
83d30 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 } else {..
83d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca
83d50 6c 6c 62 61 63 6b 2e 63 61 6c 6c 28 63 74 78 2c llback.call(ctx,
83d60 20 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 e);..
83d70 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 }.. }..
83d80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
83d90 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
83da0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 65 74 20 /**... * Set
83db0 74 68 65 20 61 74 74 72 69 62 75 74 65 20 6f 66 the attribute of
83dc0 20 61 6c 6c 20 6f 66 20 74 68 65 20 65 76 65 6e all of the even
83dd0 74 73 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 ts... * @param
83de0 20 7b 53 74 72 69 6e 67 7d 20 20 61 74 74 72 20 {String} attr
83df0 20 74 68 65 20 61 74 74 72 69 62 75 74 65 20 74 the attribute t
83e00 6f 20 73 65 74 0a 09 09 20 2a 20 20 40 70 61 72 o set... * @par
83e10 61 6d 20 20 7b 2a 7d 20 20 76 61 6c 75 65 20 20 am {*} value
83e20 20 20 20 20 54 68 65 20 76 61 6c 75 65 20 74 6f The value to
83e30 20 73 65 74 20 69 74 20 74 6f 0a 09 09 20 2a 20 set it to... *
83e40 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a @private... */.
83e50 09 20 20 20 20 54 6f 6e 65 2e 50 61 72 74 2e 70 . Tone.Part.p
83e60 72 6f 74 6f 74 79 70 65 2e 5f 73 65 74 41 6c 6c rototype._setAll
83e70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 61 74 74 = function (att
83e80 72 2c 20 76 61 6c 75 65 29 20 7b 0a 09 20 20 20 r, value) {..
83e90 20 20 20 20 20 74 68 69 73 2e 5f 66 6f 72 45 61 this._forEa
83ea0 63 68 28 66 75 6e 63 74 69 6f 6e 20 28 65 76 65 ch(function (eve
83eb0 6e 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 nt) {..
83ec0 20 20 20 65 76 65 6e 74 5b 61 74 74 72 5d 20 3d event[attr] =
83ed0 20 76 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 20 value;..
83ee0 20 7d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 });.. };..
83ef0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 49 6e 74 65 /**... * Inte
83f00 72 6e 61 6c 20 74 69 63 6b 20 6d 65 74 68 6f 64 rnal tick method
83f10 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
83f20 4e 75 6d 62 65 72 7d 20 20 74 69 6d 65 20 20 54 Number} time T
83f30 68 65 20 74 69 6d 65 20 6f 66 20 74 68 65 20 65 he time of the e
83f40 76 65 6e 74 20 69 6e 20 73 65 63 6f 6e 64 73 0a vent in seconds.
83f50 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
83f60 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 . */.. Tone.P
83f70 61 72 74 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 74 art.prototype._t
83f80 69 63 6b 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ick = function (
83f90 74 69 6d 65 2c 20 76 61 6c 75 65 29 20 7b 0a 09 time, value) {..
83fa0 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69 if (!thi
83fb0 73 2e 6d 75 74 65 29 20 7b 0a 09 20 20 20 20 20 s.mute) {..
83fc0 20 20 20 20 20 20 20 74 68 69 73 2e 63 61 6c 6c this.call
83fd0 62 61 63 6b 28 74 69 6d 65 2c 20 76 61 6c 75 65 back(time, value
83fe0 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
83ff0 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
84000 09 20 2a 20 20 44 65 74 65 72 6d 69 6e 65 20 69 . * Determine i
84010 66 20 74 68 65 20 65 76 65 6e 74 20 73 68 6f 75 f the event shou
84020 6c 64 20 62 65 20 63 75 72 72 65 6e 74 6c 79 20 ld be currently
84030 6c 6f 6f 70 69 6e 67 0a 09 09 20 2a 20 20 67 69 looping... * gi
84040 76 65 6e 20 74 68 65 20 6c 6f 6f 70 20 62 6f 75 ven the loop bou
84050 6e 64 72 69 65 73 20 6f 66 20 74 68 69 73 20 50 ndries of this P
84060 61 72 74 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 art.... * @para
84070 6d 20 20 7b 54 6f 6e 65 2e 45 76 65 6e 74 7d 20 m {Tone.Event}
84080 20 65 76 65 6e 74 20 20 54 68 65 20 65 76 65 6e event The even
84090 74 20 74 6f 20 74 65 73 74 0a 09 09 20 2a 20 20 t to test... *
840a0 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 @private... */..
840b0 20 20 20 20 54 6f 6e 65 2e 50 61 72 74 2e 70 72 Tone.Part.pr
840c0 6f 74 6f 74 79 70 65 2e 5f 74 65 73 74 4c 6f 6f ototype._testLoo
840d0 70 42 6f 75 6e 64 72 69 65 73 20 3d 20 66 75 6e pBoundries = fun
840e0 63 74 69 6f 6e 20 28 65 76 65 6e 74 29 20 7b 0a ction (event) {.
840f0 09 20 20 20 20 20 20 20 20 69 66 20 28 65 76 65 . if (eve
84100 6e 74 2e 73 74 61 72 74 4f 66 66 73 65 74 20 3c nt.startOffset <
84110 20 74 68 69 73 2e 5f 6c 6f 6f 70 53 74 61 72 74 this._loopStart
84120 20 7c 7c 20 65 76 65 6e 74 2e 73 74 61 72 74 4f || event.startO
84130 66 66 73 65 74 20 3e 3d 20 74 68 69 73 2e 5f 6c ffset >= this._l
84140 6f 6f 70 45 6e 64 29 20 7b 0a 09 20 20 20 20 20 oopEnd) {..
84150 20 20 20 20 20 20 20 65 76 65 6e 74 2e 63 61 6e event.can
84160 63 65 6c 28 30 29 3b 0a 09 20 20 20 20 20 20 20 cel(0);..
84170 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 } else {..
84180 20 20 20 20 20 20 20 2f 2f 72 65 73 63 68 65 64 //resched
84190 75 6c 65 20 69 74 20 69 66 20 69 74 27 73 20 73 ule it if it's s
841a0 74 6f 70 70 65 64 0a 09 20 20 20 20 20 20 20 20 topped..
841b0 20 20 20 20 69 66 20 28 65 76 65 6e 74 2e 73 74 if (event.st
841c0 61 74 65 20 3d 3d 3d 20 54 6f 6e 65 2e 53 74 61 ate === Tone.Sta
841d0 74 65 2e 53 74 6f 70 70 65 64 29 20 7b 0a 09 20 te.Stopped) {..
841e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
841f0 68 69 73 2e 5f 72 65 73 74 61 72 74 45 76 65 6e his._restartEven
84200 74 28 65 76 65 6e 74 29 3b 0a 09 20 20 20 20 20 t(event);..
84210 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
84220 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 }.. };..
84230 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 70 /**... * The p
84240 72 6f 62 61 62 69 6c 69 74 79 20 6f 66 20 74 68 robability of th
84250 65 20 6e 6f 74 65 73 20 62 65 69 6e 67 20 74 72 e notes being tr
84260 69 67 67 65 72 65 64 2e 0a 09 09 20 2a 20 20 40 iggered.... * @
84270 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 50 61 memberOf Tone.Pa
84280 72 74 23 0a 09 09 20 2a 20 20 40 74 79 70 65 20 rt#... * @type
84290 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 {NormalRange}...
842a0 20 2a 20 20 40 6e 61 6d 65 20 70 72 6f 62 61 62 * @name probab
842b0 69 6c 69 74 79 0a 09 09 20 2a 2f 0a 09 20 20 20 ility... */..
842c0 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
842d0 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 61 72 74 operty(Tone.Part
842e0 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 70 72 6f .prototype, 'pro
842f0 62 61 62 69 6c 69 74 79 27 2c 20 7b 0a 09 20 20 bability', {..
84300 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
84310 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
84320 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
84330 73 2e 5f 70 72 6f 62 61 62 69 6c 69 74 79 3b 0a s._probability;.
84340 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 . },..
84350 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 set: functi
84360 6f 6e 20 28 70 72 6f 62 29 20 7b 0a 09 20 20 20 on (prob) {..
84370 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 this._p
84380 72 6f 62 61 62 69 6c 69 74 79 20 3d 20 70 72 6f robability = pro
84390 62 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 b;..
843a0 74 68 69 73 2e 5f 73 65 74 41 6c 6c 28 27 70 72 this._setAll('pr
843b0 6f 62 61 62 69 6c 69 74 79 27 2c 20 70 72 6f 62 obability', prob
843c0 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
843d0 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
843e0 09 09 20 2a 20 20 49 66 20 73 65 74 20 74 6f 20 .. * If set to
843f0 74 72 75 65 2c 20 77 69 6c 6c 20 61 70 70 6c 79 true, will apply
84400 20 73 6d 61 6c 6c 20 72 61 6e 64 6f 6d 20 76 61 small random va
84410 72 69 61 74 69 6f 6e 0a 09 09 20 2a 20 20 74 6f riation... * to
84420 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 69 the callback ti
84430 6d 65 2e 20 49 66 20 74 68 65 20 76 61 6c 75 65 me. If the value
84440 20 69 73 20 67 69 76 65 6e 20 61 73 20 61 20 74 is given as a t
84450 69 6d 65 2c 20 69 74 20 77 69 6c 6c 20 72 61 6e ime, it will ran
84460 64 6f 6d 69 7a 65 0a 09 09 20 2a 20 20 62 79 20 domize... * by
84470 74 68 61 74 20 61 6d 6f 75 6e 74 2e 0a 09 09 20 that amount....
84480 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
84490 20 65 76 65 6e 74 2e 68 75 6d 61 6e 69 7a 65 20 event.humanize
844a0 3d 20 74 72 75 65 3b 0a 09 09 20 2a 20 20 40 74 = true;... * @t
844b0 79 70 65 20 7b 42 6f 6f 6c 65 61 6e 7c 54 69 6d ype {Boolean|Tim
844c0 65 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 68 e}... * @name h
844d0 75 6d 61 6e 69 7a 65 0a 09 09 20 2a 2f 0a 09 20 umanize... */..
844e0 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
844f0 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 61 Property(Tone.Pa
84500 72 74 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 68 rt.prototype, 'h
84510 75 6d 61 6e 69 7a 65 27 2c 20 7b 0a 09 20 20 20 umanize', {..
84520 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
84530 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
84540 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
84550 2e 5f 68 75 6d 61 6e 69 7a 65 3b 0a 09 20 20 20 ._humanize;..
84560 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
84570 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 set: function (
84580 76 61 72 69 61 74 69 6f 6e 29 20 7b 0a 09 20 20 variation) {..
84590 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
845a0 68 75 6d 61 6e 69 7a 65 20 3d 20 76 61 72 69 61 humanize = varia
845b0 74 69 6f 6e 3b 0a 09 20 20 20 20 20 20 20 20 20 tion;..
845c0 20 20 20 74 68 69 73 2e 5f 73 65 74 41 6c 6c 28 this._setAll(
845d0 27 68 75 6d 61 6e 69 7a 65 27 2c 20 76 61 72 69 'humanize', vari
845e0 61 74 69 6f 6e 29 3b 0a 09 20 20 20 20 20 20 20 ation);..
845f0 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
84600 20 2f 2a 2a 0a 09 09 20 2a 20 20 49 66 20 74 68 /**... * If th
84610 65 20 70 61 72 74 20 73 68 6f 75 6c 64 20 6c 6f e part should lo
84620 6f 70 20 6f 72 20 6e 6f 74 0a 09 09 20 2a 20 20 op or not... *
84630 62 65 74 77 65 65 6e 20 54 6f 6e 65 2e 50 61 72 between Tone.Par
84640 74 2e 6c 6f 6f 70 53 74 61 72 74 20 61 6e 64 20 t.loopStart and
84650 0a 09 09 20 2a 20 20 54 6f 6e 65 2e 50 61 72 74 ... * Tone.Part
84660 2e 6c 6f 6f 70 45 6e 64 2e 20 41 6e 20 69 6e 74 .loopEnd. An int
84670 65 67 65 72 0a 09 09 20 2a 20 20 76 61 6c 75 65 eger... * value
84680 20 63 6f 72 72 65 73 70 6f 6e 64 73 20 74 6f 20 corresponds to
84690 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 09 09 the number of...
846a0 20 2a 20 20 6c 6f 6f 70 73 20 74 68 65 20 50 61 * loops the Pa
846b0 72 74 20 64 6f 65 73 20 61 66 74 65 72 20 69 74 rt does after it
846c0 20 73 74 61 72 74 73 2e 0a 09 09 20 2a 20 20 40 starts.... * @
846d0 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 50 61 memberOf Tone.Pa
846e0 72 74 23 0a 09 09 20 2a 20 20 40 74 79 70 65 20 rt#... * @type
846f0 7b 42 6f 6f 6c 65 61 6e 7c 50 6f 73 69 74 69 76 {Boolean|Positiv
84700 65 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 6c e}... * @name l
84710 6f 6f 70 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 oop... * @examp
84720 6c 65 0a 09 09 20 2a 20 2f 2f 6c 6f 6f 70 20 74 le... * //loop t
84730 68 65 20 70 61 72 74 20 38 20 74 69 6d 65 73 0a he part 8 times.
84740 09 09 20 2a 20 70 61 72 74 2e 6c 6f 6f 70 20 3d .. * part.loop =
84750 20 38 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 8;... */.. O
84760 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 bject.defineProp
84770 65 72 74 79 28 54 6f 6e 65 2e 50 61 72 74 2e 70 erty(Tone.Part.p
84780 72 6f 74 6f 74 79 70 65 2c 20 27 6c 6f 6f 70 27 rototype, 'loop'
84790 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
847a0 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
847b0 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
847c0 75 72 6e 20 74 68 69 73 2e 5f 6c 6f 6f 70 3b 0a urn this._loop;.
847d0 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 . },..
847e0 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 set: functi
847f0 6f 6e 20 28 6c 6f 6f 70 29 20 7b 0a 09 20 20 20 on (loop) {..
84800 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c this._l
84810 6f 6f 70 20 3d 20 6c 6f 6f 70 3b 0a 09 20 20 20 oop = loop;..
84820 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 this._f
84830 6f 72 45 61 63 68 28 66 75 6e 63 74 69 6f 6e 20 orEach(function
84840 28 65 76 65 6e 74 29 20 7b 0a 09 20 20 20 20 20 (event) {..
84850 20 20 20 20 20 20 20 20 20 20 20 65 76 65 6e 74 event
84860 2e 5f 6c 6f 6f 70 53 74 61 72 74 20 3d 20 74 68 ._loopStart = th
84870 69 73 2e 5f 6c 6f 6f 70 53 74 61 72 74 3b 0a 09 is._loopStart;..
84880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
84890 65 76 65 6e 74 2e 5f 6c 6f 6f 70 45 6e 64 20 3d event._loopEnd =
848a0 20 74 68 69 73 2e 5f 6c 6f 6f 70 45 6e 64 3b 0a this._loopEnd;.
848b0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
848c0 20 65 76 65 6e 74 2e 6c 6f 6f 70 20 3d 20 6c 6f event.loop = lo
848d0 6f 70 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 op;..
848e0 20 20 20 20 20 74 68 69 73 2e 5f 74 65 73 74 4c this._testL
848f0 6f 6f 70 42 6f 75 6e 64 72 69 65 73 28 65 76 65 oopBoundries(eve
84900 6e 74 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 nt);..
84910 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 7d });.. }
84920 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f .. });.. /
84930 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 6c 6f 6f **... * The loo
84940 70 45 6e 64 20 70 6f 69 6e 74 20 64 65 74 65 72 pEnd point deter
84950 6d 69 6e 65 73 20 77 68 65 6e 20 69 74 20 77 69 mines when it wi
84960 6c 6c 20 0a 09 09 20 2a 20 20 6c 6f 6f 70 20 69 ll ... * loop i
84970 66 20 54 6f 6e 65 2e 50 61 72 74 2e 6c 6f 6f 70 f Tone.Part.loop
84980 20 69 73 20 74 72 75 65 2e 0a 09 09 20 2a 20 20 is true.... *
84990 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 50 @memberOf Tone.P
849a0 61 72 74 23 0a 09 09 20 2a 20 20 40 74 79 70 65 art#... * @type
849b0 20 7b 54 72 61 6e 73 70 6f 72 74 54 69 6d 65 7d {TransportTime}
849c0 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 6c 6f 6f ... * @name loo
849d0 70 45 6e 64 0a 09 09 20 2a 2f 0a 09 20 20 20 20 pEnd... */..
849e0 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
849f0 70 65 72 74 79 28 54 6f 6e 65 2e 50 61 72 74 2e perty(Tone.Part.
84a00 70 72 6f 74 6f 74 79 70 65 2c 20 27 6c 6f 6f 70 prototype, 'loop
84a10 45 6e 64 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 End', {..
84a20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
84a30 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
84a40 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 54 72 61 return Tone.Tra
84a50 6e 73 70 6f 72 74 54 69 6d 65 28 74 68 69 73 2e nsportTime(this.
84a60 5f 6c 6f 6f 70 45 6e 64 2c 20 27 69 27 29 2e 74 _loopEnd, 'i').t
84a70 6f 4e 6f 74 61 74 69 6f 6e 28 29 3b 0a 09 20 20 oNotation();..
84a80 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 },..
84a90 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 set: function
84aa0 28 6c 6f 6f 70 45 6e 64 29 20 7b 0a 09 20 20 20 (loopEnd) {..
84ab0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c this._l
84ac0 6f 6f 70 45 6e 64 20 3d 20 74 68 69 73 2e 74 6f oopEnd = this.to
84ad0 54 69 63 6b 73 28 6c 6f 6f 70 45 6e 64 29 3b 0a Ticks(loopEnd);.
84ae0 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
84af0 28 74 68 69 73 2e 5f 6c 6f 6f 70 29 20 7b 0a 09 (this._loop) {..
84b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
84b10 74 68 69 73 2e 5f 66 6f 72 45 61 63 68 28 66 75 this._forEach(fu
84b20 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 29 20 7b nction (event) {
84b30 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
84b40 20 20 20 20 20 20 65 76 65 6e 74 2e 6c 6f 6f 70 event.loop
84b50 45 6e 64 20 3d 20 6c 6f 6f 70 45 6e 64 3b 0a 09 End = loopEnd;..
84b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
84b70 20 20 20 20 74 68 69 73 2e 5f 74 65 73 74 4c 6f this._testLo
84b80 6f 70 42 6f 75 6e 64 72 69 65 73 28 65 76 65 6e opBoundries(even
84b90 74 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 t);..
84ba0 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 });..
84bb0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
84bc0 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
84bd0 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 6c /**... * The l
84be0 6f 6f 70 53 74 61 72 74 20 70 6f 69 6e 74 20 64 oopStart point d
84bf0 65 74 65 72 6d 69 6e 65 73 20 77 68 65 6e 20 69 etermines when i
84c00 74 20 77 69 6c 6c 20 0a 09 09 20 2a 20 20 6c 6f t will ... * lo
84c10 6f 70 20 69 66 20 54 6f 6e 65 2e 50 61 72 74 2e op if Tone.Part.
84c20 6c 6f 6f 70 20 69 73 20 74 72 75 65 2e 0a 09 09 loop is true....
84c30 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
84c40 6e 65 2e 50 61 72 74 23 0a 09 09 20 2a 20 20 40 ne.Part#... * @
84c50 74 79 70 65 20 7b 54 72 61 6e 73 70 6f 72 74 54 type {TransportT
84c60 69 6d 65 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 ime}... * @name
84c70 20 6c 6f 6f 70 53 74 61 72 74 0a 09 09 20 2a 2f loopStart... */
84c80 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 .. Object.def
84c90 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 ineProperty(Tone
84ca0 2e 50 61 72 74 2e 70 72 6f 74 6f 74 79 70 65 2c .Part.prototype,
84cb0 20 27 6c 6f 6f 70 53 74 61 72 74 27 2c 20 7b 0a 'loopStart', {.
84cc0 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
84cd0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
84ce0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
84cf0 54 6f 6e 65 2e 54 72 61 6e 73 70 6f 72 74 54 69 Tone.TransportTi
84d00 6d 65 28 74 68 69 73 2e 5f 6c 6f 6f 70 53 74 61 me(this._loopSta
84d10 72 74 2c 20 27 69 27 29 2e 74 6f 4e 6f 74 61 74 rt, 'i').toNotat
84d20 69 6f 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ion();..
84d30 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a },.. set:
84d40 20 66 75 6e 63 74 69 6f 6e 20 28 6c 6f 6f 70 53 function (loopS
84d50 74 61 72 74 29 20 7b 0a 09 20 20 20 20 20 20 20 tart) {..
84d60 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f 6f 70 53 this._loopS
84d70 74 61 72 74 20 3d 20 74 68 69 73 2e 74 6f 54 69 tart = this.toTi
84d80 63 6b 73 28 6c 6f 6f 70 53 74 61 72 74 29 3b 0a cks(loopStart);.
84d90 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
84da0 28 74 68 69 73 2e 5f 6c 6f 6f 70 29 20 7b 0a 09 (this._loop) {..
84db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
84dc0 74 68 69 73 2e 5f 66 6f 72 45 61 63 68 28 66 75 this._forEach(fu
84dd0 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 29 20 7b nction (event) {
84de0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
84df0 20 20 20 20 20 20 65 76 65 6e 74 2e 6c 6f 6f 70 event.loop
84e00 53 74 61 72 74 20 3d 20 74 68 69 73 2e 6c 6f 6f Start = this.loo
84e10 70 53 74 61 72 74 3b 0a 09 20 20 20 20 20 20 20 pStart;..
84e20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
84e30 73 2e 5f 74 65 73 74 4c 6f 6f 70 42 6f 75 6e 64 s._testLoopBound
84e40 72 69 65 73 28 65 76 65 6e 74 29 3b 0a 09 20 20 ries(event);..
84e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 29 })
84e60 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
84e70 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
84e80 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
84e90 20 2a 20 09 54 68 65 20 70 6c 61 79 62 61 63 6b * .The playback
84ea0 20 72 61 74 65 20 6f 66 20 74 68 65 20 70 61 72 rate of the par
84eb0 74 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f t... * @memberO
84ec0 66 20 54 6f 6e 65 2e 50 61 72 74 23 0a 09 09 20 f Tone.Part#...
84ed0 2a 20 20 40 74 79 70 65 20 7b 50 6f 73 69 74 69 * @type {Positi
84ee0 76 65 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 ve}... * @name
84ef0 70 6c 61 79 62 61 63 6b 52 61 74 65 0a 09 09 20 playbackRate...
84f00 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 */.. Object.d
84f10 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f efineProperty(To
84f20 6e 65 2e 50 61 72 74 2e 70 72 6f 74 6f 74 79 70 ne.Part.prototyp
84f30 65 2c 20 27 70 6c 61 79 62 61 63 6b 52 61 74 65 e, 'playbackRate
84f40 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 ', {.. ge
84f50 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b t: function () {
84f60 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
84f70 74 75 72 6e 20 74 68 69 73 2e 5f 70 6c 61 79 62 turn this._playb
84f80 61 63 6b 52 61 74 65 3b 0a 09 20 20 20 20 20 20 ackRate;..
84f90 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
84fa0 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 72 61 74 t: function (rat
84fb0 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
84fc0 20 20 74 68 69 73 2e 5f 70 6c 61 79 62 61 63 6b this._playback
84fd0 52 61 74 65 20 3d 20 72 61 74 65 3b 0a 09 20 20 Rate = rate;..
84fe0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
84ff0 73 65 74 41 6c 6c 28 27 70 6c 61 79 62 61 63 6b setAll('playback
85000 52 61 74 65 27 2c 20 72 61 74 65 29 3b 0a 09 20 Rate', rate);..
85010 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 }.. })
85020 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
85030 09 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 .The number of s
85040 63 68 65 64 75 6c 65 64 20 6e 6f 74 65 73 20 69 cheduled notes i
85050 6e 20 74 68 65 20 70 61 72 74 2e 20 0a 09 09 20 n the part. ...
85060 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
85070 65 2e 50 61 72 74 23 0a 09 09 20 2a 20 20 40 74 e.Part#... * @t
85080 79 70 65 20 7b 50 6f 73 69 74 69 76 65 7d 0a 09 ype {Positive}..
85090 09 20 2a 20 20 40 6e 61 6d 65 20 6c 65 6e 67 74 . * @name lengt
850a0 68 0a 09 09 20 2a 20 20 40 72 65 61 64 4f 6e 6c h... * @readOnl
850b0 79 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a y... */.. Obj
850c0 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
850d0 74 79 28 54 6f 6e 65 2e 50 61 72 74 2e 70 72 6f ty(Tone.Part.pro
850e0 74 6f 74 79 70 65 2c 20 27 6c 65 6e 67 74 68 27 totype, 'length'
850f0 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
85100 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
85110 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
85120 75 72 6e 20 74 68 69 73 2e 5f 65 76 65 6e 74 73 urn this._events
85130 2e 6c 65 6e 67 74 68 3b 0a 09 20 20 20 20 20 20 .length;..
85140 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 }.. });..
85150 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 /**... * Clea
85160 6e 20 75 70 0a 09 09 20 2a 20 20 40 72 65 74 75 n up... * @retu
85170 72 6e 20 20 7b 54 6f 6e 65 2e 50 61 72 74 7d 20 rn {Tone.Part}
85180 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
85190 20 54 6f 6e 65 2e 50 61 72 74 2e 70 72 6f 74 6f Tone.Part.proto
851a0 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 type.dispose = f
851b0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
851c0 20 20 20 20 20 20 74 68 69 73 2e 72 65 6d 6f 76 this.remov
851d0 65 41 6c 6c 28 29 3b 0a 09 20 20 20 20 20 20 20 eAll();..
851e0 20 74 68 69 73 2e 5f 73 74 61 74 65 2e 64 69 73 this._state.dis
851f0 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
85200 20 74 68 69 73 2e 5f 73 74 61 74 65 20 3d 20 6e this._state = n
85210 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
85220 69 73 2e 63 61 6c 6c 62 61 63 6b 20 3d 20 6e 75 is.callback = nu
85230 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
85240 73 2e 5f 65 76 65 6e 74 73 20 3d 20 6e 75 6c 6c s._events = null
85250 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
85260 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
85270 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 . return Tone
85280 2e 50 61 72 74 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 .Part;..});..Mod
85290 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f ule(function (To
852a0 6e 65 29 20 7b 0a 09 20 20 20 20 2f 2a 2a 0a 09 ne) {.. /**..
852b0 09 20 2a 20 20 40 63 6c 61 73 73 20 54 6f 6e 65 . * @class Tone
852c0 2e 50 61 74 74 65 72 6e 20 61 72 70 65 67 67 69 .Pattern arpeggi
852d0 61 74 65 73 20 62 65 74 77 65 65 6e 20 74 68 65 ates between the
852e0 20 67 69 76 65 6e 20 6e 6f 74 65 73 0a 09 09 20 given notes...
852f0 2a 20 20 20 20 20 20 20 20 20 69 6e 20 61 20 6e * in a n
85300 75 6d 62 65 72 20 6f 66 20 70 61 74 74 65 72 6e umber of pattern
85310 73 2e 20 53 65 65 20 54 6f 6e 65 2e 43 74 72 6c s. See Tone.Ctrl
85320 50 61 74 74 65 72 6e 20 66 6f 72 0a 09 09 20 2a Pattern for... *
85330 20 20 20 20 20 20 20 20 20 61 20 66 75 6c 6c 20 a full
85340 6c 69 73 74 20 6f 66 20 70 61 74 74 65 72 6e 73 list of patterns
85350 2e 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 .... * @example
85360 0a 09 09 20 2a 20 76 61 72 20 70 61 74 74 65 72 ... * var patter
85370 6e 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 50 61 74 n = new Tone.Pat
85380 74 65 72 6e 28 66 75 6e 63 74 69 6f 6e 28 74 69 tern(function(ti
85390 6d 65 2c 20 6e 6f 74 65 29 7b 0a 09 09 20 2a 20 me, note){... *
853a0 20 20 2f 2f 74 68 65 20 6f 72 64 65 72 20 6f 66 //the order of
853b0 20 74 68 65 20 6e 6f 74 65 73 20 70 61 73 73 65 the notes passe
853c0 64 20 69 6e 20 64 65 70 65 6e 64 73 20 6f 6e 20 d in depends on
853d0 74 68 65 20 70 61 74 74 65 72 6e 0a 09 09 20 2a the pattern... *
853e0 20 7d 2c 20 5b 22 43 32 22 2c 20 22 44 34 22 2c }, ["C2", "D4",
853f0 20 22 45 35 22 2c 20 22 41 36 22 5d 2c 20 22 75 "E5", "A6"], "u
85400 70 44 6f 77 6e 22 29 3b 0a 09 09 20 2a 20 20 40 pDown");... * @
85410 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 4c 6f extends {Tone.Lo
85420 6f 70 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d op}... * @param
85430 20 7b 46 75 6e 63 74 69 6f 6e 7d 20 63 61 6c 6c {Function} call
85440 62 61 63 6b 20 54 68 65 20 63 61 6c 6c 62 61 63 back The callbac
85450 6b 20 74 6f 20 69 6e 76 6f 6b 65 20 77 69 74 68 k to invoke with
85460 20 74 68 65 0a 09 09 20 2a 20 20 20 20 20 20 20 the... *
85470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
85480 20 20 20 20 20 20 65 76 65 6e 74 2e 0a 09 09 20 event....
85490 2a 20 20 40 70 61 72 61 6d 20 7b 41 72 72 61 79 * @param {Array
854a0 7d 20 76 61 6c 75 65 73 20 54 68 65 20 76 61 6c } values The val
854b0 75 65 73 20 74 6f 20 61 72 70 65 67 67 69 61 74 ues to arpeggiat
854c0 65 20 6f 76 65 72 2e 0a 09 09 20 2a 2f 0a 09 20 e over.... */..
854d0 20 20 20 54 6f 6e 65 2e 50 61 74 74 65 72 6e 20 Tone.Pattern
854e0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
854f0 09 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 . var opt
85500 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 ions = this.opti
85510 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 onsObject(argume
85520 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 nts, [..
85530 20 20 20 20 27 63 61 6c 6c 62 61 63 6b 27 2c 0a 'callback',.
85540 09 20 20 20 20 20 20 20 20 20 20 20 20 27 76 61 . 'va
85550 6c 75 65 73 27 2c 0a 09 20 20 20 20 20 20 20 20 lues',..
85560 20 20 20 20 27 70 61 74 74 65 72 6e 27 0a 09 20 'pattern'..
85570 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 50 ], Tone.P
85580 61 74 74 65 72 6e 2e 64 65 66 61 75 6c 74 73 29 attern.defaults)
85590 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e ;.. Tone.
855a0 4c 6f 6f 70 2e 63 61 6c 6c 28 74 68 69 73 2c 20 Loop.call(this,
855b0 6f 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 20 options);..
855c0 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 /**.... * Th
855d0 65 20 70 61 74 74 65 72 6e 20 6d 61 6e 61 67 65 e pattern manage
855e0 72 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b r.... * @type {
855f0 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 72 6e Tone.CtrlPattern
85600 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
85610 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
85620 20 20 74 68 69 73 2e 5f 70 61 74 74 65 72 6e 20 this._pattern
85630 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 74 72 6c 50 = new Tone.CtrlP
85640 61 74 74 65 72 6e 28 7b 0a 09 20 20 20 20 20 20 attern({..
85650 20 20 20 20 20 20 27 76 61 6c 75 65 73 27 3a 20 'values':
85660 6f 70 74 69 6f 6e 73 2e 76 61 6c 75 65 73 2c 0a options.values,.
85670 09 20 20 20 20 20 20 20 20 20 20 20 20 27 74 79 . 'ty
85680 70 65 27 3a 20 6f 70 74 69 6f 6e 73 2e 70 61 74 pe': options.pat
85690 74 65 72 6e 2c 0a 09 20 20 20 20 20 20 20 20 20 tern,..
856a0 20 20 20 27 69 6e 64 65 78 27 3a 20 6f 70 74 69 'index': opti
856b0 6f 6e 73 2e 69 6e 64 65 78 0a 09 20 20 20 20 20 ons.index..
856c0 20 20 20 7d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 });.. };..
856d0 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 Tone.extend(
856e0 54 6f 6e 65 2e 50 61 74 74 65 72 6e 2c 20 54 6f Tone.Pattern, To
856f0 6e 65 2e 4c 6f 6f 70 29 3b 0a 09 20 20 20 20 2f ne.Loop);.. /
85700 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 64 65 66 **... * The def
85710 61 75 6c 74 73 0a 09 09 20 2a 20 20 40 63 6f 6e aults... * @con
85720 73 74 0a 09 09 20 2a 20 20 40 74 79 70 65 20 20 st... * @type
85730 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 {Object}... */..
85740 20 20 20 20 54 6f 6e 65 2e 50 61 74 74 65 72 6e Tone.Pattern
85750 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 .defaults = {..
85760 20 20 20 20 20 20 20 27 70 61 74 74 65 72 6e 27 'pattern'
85770 3a 20 54 6f 6e 65 2e 43 74 72 6c 50 61 74 74 65 : Tone.CtrlPatte
85780 72 6e 2e 54 79 70 65 2e 55 70 2c 0a 09 20 20 20 rn.Type.Up,..
85790 20 20 20 20 20 27 76 61 6c 75 65 73 27 3a 20 5b 'values': [
857a0 5d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ].. };.. /
857b0 2a 2a 0a 09 09 20 2a 20 20 49 6e 74 65 72 6e 61 **... * Interna
857c0 6c 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 65 l function calle
857d0 64 20 77 68 65 6e 20 74 68 65 20 6e 6f 74 65 73 d when the notes
857e0 20 73 68 6f 75 6c 64 20 62 65 20 63 61 6c 6c 65 should be calle
857f0 64 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 d... * @param
85800 7b 4e 75 6d 62 65 72 7d 20 20 74 69 6d 65 20 20 {Number} time
85810 54 68 65 20 74 69 6d 65 20 74 68 65 20 65 76 65 The time the eve
85820 6e 74 20 6f 63 63 75 72 73 0a 09 09 20 2a 20 20 nt occurs... *
85830 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 @private... */..
85840 20 20 20 20 54 6f 6e 65 2e 50 61 74 74 65 72 6e Tone.Pattern
85850 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 74 69 63 6b .prototype._tick
85860 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d = function (tim
85870 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 e) {.. th
85880 69 73 2e 63 61 6c 6c 62 61 63 6b 28 74 69 6d 65 is.callback(time
85890 2c 20 74 68 69 73 2e 5f 70 61 74 74 65 72 6e 2e , this._pattern.
858a0 76 61 6c 75 65 29 3b 0a 09 20 20 20 20 20 20 20 value);..
858b0 20 74 68 69 73 2e 5f 70 61 74 74 65 72 6e 2e 6e this._pattern.n
858c0 65 78 74 28 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 ext();.. };..
858d0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 /**... * Th
858e0 65 20 63 75 72 72 65 6e 74 20 69 6e 64 65 78 20 e current index
858f0 69 6e 20 74 68 65 20 76 61 6c 75 65 73 20 61 72 in the values ar
85900 72 61 79 2e 0a 09 09 20 2a 20 20 40 6d 65 6d 62 ray.... * @memb
85910 65 72 4f 66 20 54 6f 6e 65 2e 50 61 74 74 65 72 erOf Tone.Patter
85920 6e 23 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b n#... * @type {
85930 50 6f 73 69 74 69 76 65 7d 0a 09 09 20 2a 20 20 Positive}... *
85940 40 6e 61 6d 65 20 69 6e 64 65 78 0a 09 09 20 2a @name index... *
85950 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
85960 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
85970 65 2e 50 61 74 74 65 72 6e 2e 70 72 6f 74 6f 74 e.Pattern.protot
85980 79 70 65 2c 20 27 69 6e 64 65 78 27 2c 20 7b 0a ype, 'index', {.
85990 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
859a0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
859b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
859c0 74 68 69 73 2e 5f 70 61 74 74 65 72 6e 2e 69 6e this._pattern.in
859d0 64 65 78 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c dex;.. },
859e0 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 .. set: f
859f0 75 6e 63 74 69 6f 6e 20 28 69 29 20 7b 0a 09 20 unction (i) {..
85a00 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
85a10 5f 70 61 74 74 65 72 6e 2e 69 6e 64 65 78 20 3d _pattern.index =
85a20 20 69 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 i;.. }..
85a30 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
85a40 0a 09 09 20 2a 20 20 54 68 65 20 61 72 72 61 79 ... * The array
85a50 20 6f 66 20 65 76 65 6e 74 73 2e 0a 09 09 20 2a of events.... *
85a60 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 @memberOf Tone
85a70 2e 50 61 74 74 65 72 6e 23 0a 09 09 20 2a 20 20 .Pattern#... *
85a80 40 74 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 @type {Array}...
85a90 20 2a 20 20 40 6e 61 6d 65 20 76 61 6c 75 65 73 * @name values
85aa0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 ... */.. Obje
85ab0 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
85ac0 79 28 54 6f 6e 65 2e 50 61 74 74 65 72 6e 2e 70 y(Tone.Pattern.p
85ad0 72 6f 74 6f 74 79 70 65 2c 20 27 76 61 6c 75 65 rototype, 'value
85ae0 73 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 s', {.. g
85af0 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
85b00 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
85b10 65 74 75 72 6e 20 74 68 69 73 2e 5f 70 61 74 74 eturn this._patt
85b20 65 72 6e 2e 76 61 6c 75 65 73 3b 0a 09 20 20 20 ern.values;..
85b30 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
85b40 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 set: function (
85b50 76 61 6c 73 29 20 7b 0a 09 20 20 20 20 20 20 20 vals) {..
85b60 20 20 20 20 20 74 68 69 73 2e 5f 70 61 74 74 65 this._patte
85b70 72 6e 2e 76 61 6c 75 65 73 20 3d 20 76 61 6c 73 rn.values = vals
85b80 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
85b90 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 });.. /**..
85ba0 09 20 2a 20 20 54 68 65 20 63 75 72 72 65 6e 74 . * The current
85bb0 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 70 61 value of the pa
85bc0 74 74 65 72 6e 2e 0a 09 09 20 2a 20 20 40 6d 65 ttern.... * @me
85bd0 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 50 61 74 74 mberOf Tone.Patt
85be0 65 72 6e 23 0a 09 09 20 2a 20 20 40 74 79 70 65 ern#... * @type
85bf0 20 7b 2a 7d 0a 09 09 20 2a 20 20 40 6e 61 6d 65 {*}... * @name
85c00 20 76 61 6c 75 65 0a 09 09 20 2a 20 20 40 72 65 value... * @re
85c10 61 64 4f 6e 6c 79 0a 09 09 20 2a 2f 0a 09 20 20 adOnly... */..
85c20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
85c30 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 61 74 roperty(Tone.Pat
85c40 74 65 72 6e 2e 70 72 6f 74 6f 74 79 70 65 2c 20 tern.prototype,
85c50 27 76 61 6c 75 65 27 2c 20 7b 0a 09 20 20 20 20 'value', {..
85c60 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
85c70 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
85c80 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
85c90 5f 70 61 74 74 65 72 6e 2e 76 61 6c 75 65 3b 0a _pattern.value;.
85ca0 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
85cb0 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 });.. /**...
85cc0 2a 20 20 54 68 65 20 70 61 74 74 65 72 6e 20 74 * The pattern t
85cd0 79 70 65 2e 20 53 65 65 20 54 6f 6e 65 2e 43 74 ype. See Tone.Ct
85ce0 72 6c 50 61 74 74 65 72 6e 20 66 6f 72 20 74 68 rlPattern for th
85cf0 65 20 66 75 6c 6c 20 6c 69 73 74 20 6f 66 20 70 e full list of p
85d00 61 74 74 65 72 6e 73 2e 0a 09 09 20 2a 20 20 40 atterns.... * @
85d10 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 50 61 memberOf Tone.Pa
85d20 74 74 65 72 6e 23 0a 09 09 20 2a 20 20 40 74 79 ttern#... * @ty
85d30 70 65 20 7b 53 74 72 69 6e 67 7d 0a 09 09 20 2a pe {String}... *
85d40 20 20 40 6e 61 6d 65 20 70 61 74 74 65 72 6e 0a @name pattern.
85d50 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 .. */.. Objec
85d60 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 t.defineProperty
85d70 28 54 6f 6e 65 2e 50 61 74 74 65 72 6e 2e 70 72 (Tone.Pattern.pr
85d80 6f 74 6f 74 79 70 65 2c 20 27 70 61 74 74 65 72 ototype, 'patter
85d90 6e 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 n', {.. g
85da0 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
85db0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
85dc0 65 74 75 72 6e 20 74 68 69 73 2e 5f 70 61 74 74 eturn this._patt
85dd0 65 72 6e 2e 74 79 70 65 3b 0a 09 20 20 20 20 20 ern.type;..
85de0 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 },.. s
85df0 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 70 61 et: function (pa
85e00 74 74 65 72 6e 29 20 7b 0a 09 20 20 20 20 20 20 ttern) {..
85e10 20 20 20 20 20 20 74 68 69 73 2e 5f 70 61 74 74 this._patt
85e20 65 72 6e 2e 74 79 70 65 20 3d 20 70 61 74 74 65 ern.type = patte
85e30 72 6e 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 rn;.. }..
85e40 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
85e50 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 0a ... * Clean up.
85e60 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b .. * @return {
85e70 54 6f 6e 65 2e 50 61 74 74 65 72 6e 7d 20 20 74 Tone.Pattern} t
85e80 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
85e90 6f 6e 65 2e 50 61 74 74 65 72 6e 2e 70 72 6f 74 one.Pattern.prot
85ea0 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 otype.dispose =
85eb0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
85ec0 20 20 20 20 20 20 20 54 6f 6e 65 2e 4c 6f 6f 70 Tone.Loop
85ed0 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
85ee0 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 se.call(this);..
85ef0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 61 this._pa
85f00 74 74 65 72 6e 2e 64 69 73 70 6f 73 65 28 29 3b ttern.dispose();
85f10 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
85f20 70 61 74 74 65 72 6e 20 3d 20 6e 75 6c 6c 3b 0a pattern = null;.
85f30 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 . };.. ret
85f40 75 72 6e 20 54 6f 6e 65 2e 50 61 74 74 65 72 6e urn Tone.Pattern
85f50 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 ;..});..Module(f
85f60 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b unction (Tone) {
85f70 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a .. .. /**.
85f80 09 09 20 2a 20 20 40 63 6c 61 73 73 20 41 20 73 .. * @class A s
85f90 65 71 75 65 6e 63 65 20 69 73 20 61 6e 20 61 6c equence is an al
85fa0 74 65 72 6e 61 74 65 20 6e 6f 74 61 74 69 6f 6e ternate notation
85fb0 20 6f 66 20 61 20 70 61 72 74 2e 20 49 6e 73 74 of a part. Inst
85fc0 65 61 64 0a 09 09 20 2a 20 20 20 20 20 20 20 20 ead... *
85fd0 20 6f 66 20 70 61 73 73 69 6e 67 20 69 6e 20 61 of passing in a
85fe0 6e 20 61 72 72 61 79 20 6f 66 20 5b 74 69 6d 65 n array of [time
85ff0 2c 20 65 76 65 6e 74 5d 20 70 61 69 72 73 2c 20 , event] pairs,
86000 70 61 73 73 0a 09 09 20 2a 20 20 20 20 20 20 20 pass... *
86010 20 20 69 6e 20 61 6e 20 61 72 72 61 79 20 6f 66 in an array of
86020 20 65 76 65 6e 74 73 20 77 68 69 63 68 20 77 69 events which wi
86030 6c 6c 20 62 65 20 73 70 61 63 65 64 20 61 74 20 ll be spaced at
86040 74 68 65 0a 09 09 20 2a 20 20 20 20 20 20 20 20 the... *
86050 20 67 69 76 65 6e 20 73 75 62 64 69 76 69 73 69 given subdivisi
86060 6f 6e 2e 20 53 75 62 2d 61 72 72 61 79 73 20 77 on. Sub-arrays w
86070 69 6c 6c 20 73 75 62 64 69 76 69 64 65 20 74 68 ill subdivide th
86080 61 74 20 62 65 61 74 0a 09 09 20 2a 20 20 20 20 at beat... *
86090 20 20 20 20 20 62 79 20 74 68 65 20 6e 75 6d 62 by the numb
860a0 65 72 20 6f 66 20 69 74 65 6d 73 20 61 72 65 20 er of items are
860b0 69 6e 20 74 68 65 20 61 72 72 61 79 2e 20 0a 09 in the array. ..
860c0 09 20 2a 20 20 20 20 20 20 20 20 20 53 65 71 75 . * Sequ
860d0 65 6e 63 65 20 6e 6f 74 61 74 69 6f 6e 20 69 6e ence notation in
860e0 73 70 69 72 61 74 69 6f 6e 20 66 72 6f 6d 20 5b spiration from [
860f0 54 69 64 61 6c 5d 28 68 74 74 70 3a 2f 2f 79 61 Tidal](http://ya
86100 78 75 2e 6f 72 67 2f 74 69 64 61 6c 2f 29 0a 09 xu.org/tidal/)..
86110 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 46 75 . * @param {Fu
86120 6e 63 74 69 6f 6e 7d 20 20 63 61 6c 6c 62 61 63 nction} callbac
86130 6b 20 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 k The callback
86140 74 6f 20 69 6e 76 6f 6b 65 20 77 69 74 68 20 65 to invoke with e
86150 76 65 72 79 20 6e 6f 74 65 0a 09 09 20 2a 20 20 very note... *
86160 40 70 61 72 61 6d 20 20 7b 41 72 72 61 79 7d 20 @param {Array}
86170 20 20 20 65 76 65 6e 74 73 20 20 54 68 65 20 73 events The s
86180 65 71 75 65 6e 63 65 0a 09 09 20 2a 20 20 40 70 equence... * @p
86190 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 73 75 62 aram {Time} sub
861a0 64 69 76 69 73 69 6f 6e 20 20 54 68 65 20 73 75 division The su
861b0 62 64 69 76 69 73 69 6f 6e 20 62 65 74 77 65 65 bdivision betwee
861c0 6e 20 77 68 69 63 68 20 65 76 65 6e 74 73 20 61 n which events a
861d0 72 65 20 70 6c 61 63 65 64 2e 20 0a 09 09 20 2a re placed. ... *
861e0 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
861f0 2e 50 61 72 74 7d 0a 09 09 20 2a 20 20 40 65 78 .Part}... * @ex
86200 61 6d 70 6c 65 0a 09 09 20 2a 20 76 61 72 20 73 ample... * var s
86210 65 71 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 65 eq = new Tone.Se
86220 71 75 65 6e 63 65 28 66 75 6e 63 74 69 6f 6e 28 quence(function(
86230 74 69 6d 65 2c 20 6e 6f 74 65 29 7b 0a 09 09 20 time, note){...
86240 2a 20 09 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 6e * .console.log(n
86250 6f 74 65 29 3b 0a 09 09 20 2a 20 2f 2f 73 74 72 ote);... * //str
86260 61 69 67 68 74 20 71 75 61 74 65 72 20 6e 6f 74 aight quater not
86270 65 73 0a 09 09 20 2a 20 7d 2c 20 5b 22 43 34 22 es... * }, ["C4"
86280 2c 20 22 45 34 22 2c 20 22 47 34 22 2c 20 22 41 , "E4", "G4", "A
86290 34 22 5d 2c 20 22 34 6e 22 29 3b 0a 09 09 20 2a 4"], "4n");... *
862a0 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 @example... *
862b0 76 61 72 20 73 65 71 20 3d 20 6e 65 77 20 54 6f var seq = new To
862c0 6e 65 2e 53 65 71 75 65 6e 63 65 28 66 75 6e 63 ne.Sequence(func
862d0 74 69 6f 6e 28 74 69 6d 65 2c 20 6e 6f 74 65 29 tion(time, note)
862e0 7b 0a 09 09 20 2a 20 09 63 6f 6e 73 6f 6c 65 2e {... * .console.
862f0 6c 6f 67 28 6e 6f 74 65 29 3b 0a 09 09 20 2a 20 log(note);... *
86300 2f 2f 73 75 62 64 69 76 69 73 69 6f 6e 73 20 61 //subdivisions a
86310 72 65 20 67 69 76 65 6e 20 61 73 20 73 75 62 61 re given as suba
86320 72 72 61 79 73 0a 09 09 20 2a 20 7d 2c 20 5b 22 rrays... * }, ["
86330 43 34 22 2c 20 5b 22 45 34 22 2c 20 22 44 34 22 C4", ["E4", "D4"
86340 2c 20 22 45 34 22 5d 2c 20 22 47 34 22 2c 20 5b , "E4"], "G4", [
86350 22 41 34 22 2c 20 22 47 34 22 5d 5d 29 3b 0a 09 "A4", "G4"]]);..
86360 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 . */.. Tone.S
86370 65 71 75 65 6e 63 65 20 3d 20 66 75 6e 63 74 69 equence = functi
86380 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
86390 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 var options = t
863a0 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 his.optionsObjec
863b0 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 t(arguments, [..
863c0 20 20 20 20 20 20 20 20 20 20 20 20 27 63 61 6c 'cal
863d0 6c 62 61 63 6b 27 2c 0a 09 20 20 20 20 20 20 20 lback',..
863e0 20 20 20 20 20 27 65 76 65 6e 74 73 27 2c 0a 09 'events',..
863f0 20 20 20 20 20 20 20 20 20 20 20 20 27 73 75 62 'sub
86400 64 69 76 69 73 69 6f 6e 27 0a 09 20 20 20 20 20 division'..
86410 20 20 20 5d 2c 20 54 6f 6e 65 2e 53 65 71 75 65 ], Tone.Seque
86420 6e 63 65 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 nce.defaults);..
86430 20 20 20 20 20 20 20 20 2f 2f 72 65 6d 6f 76 65 //remove
86440 20 74 68 65 20 65 76 65 6e 74 73 0a 09 20 20 20 the events..
86450 20 20 20 20 20 76 61 72 20 65 76 65 6e 74 73 20 var events
86460 3d 20 6f 70 74 69 6f 6e 73 2e 65 76 65 6e 74 73 = options.events
86470 3b 0a 09 20 20 20 20 20 20 20 20 64 65 6c 65 74 ;.. delet
86480 65 20 6f 70 74 69 6f 6e 73 2e 65 76 65 6e 74 73 e options.events
86490 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e ;.. Tone.
864a0 50 61 72 74 2e 63 61 6c 6c 28 74 68 69 73 2c 20 Part.call(this,
864b0 6f 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 20 options);..
864c0 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 /**.... * Th
864d0 65 20 73 75 62 64 69 76 69 73 6f 6e 20 6f 66 20 e subdivison of
864e0 65 61 63 68 20 6e 6f 74 65 0a 09 09 09 20 2a 20 each note.... *
864f0 20 40 74 79 70 65 20 20 7b 54 69 63 6b 73 7d 0a @type {Ticks}.
86500 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
86510 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
86520 74 68 69 73 2e 5f 73 75 62 64 69 76 69 73 69 6f this._subdivisio
86530 6e 20 3d 20 74 68 69 73 2e 74 6f 54 69 63 6b 73 n = this.toTicks
86540 28 6f 70 74 69 6f 6e 73 2e 73 75 62 64 69 76 69 (options.subdivi
86550 73 69 6f 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 sion);..
86560 2f 2f 69 66 20 6e 6f 20 74 69 6d 65 20 77 61 73 //if no time was
86570 20 70 61 73 73 65 64 20 69 6e 2c 20 74 68 65 20 passed in, the
86580 6c 6f 6f 70 20 65 6e 64 20 69 73 20 74 68 65 20 loop end is the
86590 65 6e 64 20 6f 66 20 74 68 65 20 63 79 63 6c 65 end of the cycle
865a0 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
865b0 69 73 2e 69 73 55 6e 64 65 66 28 6f 70 74 69 6f is.isUndef(optio
865c0 6e 73 2e 6c 6f 6f 70 45 6e 64 29 20 26 26 20 21 ns.loopEnd) && !
865d0 74 68 69 73 2e 69 73 55 6e 64 65 66 28 65 76 65 this.isUndef(eve
865e0 6e 74 73 29 29 20 7b 0a 09 20 20 20 20 20 20 20 nts)) {..
865f0 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f 6f 70 45 this._loopE
86600 6e 64 20 3d 20 65 76 65 6e 74 73 2e 6c 65 6e 67 nd = events.leng
86610 74 68 20 2a 20 74 68 69 73 2e 5f 73 75 62 64 69 th * this._subdi
86620 76 69 73 69 6f 6e 3b 0a 09 20 20 20 20 20 20 20 vision;..
86630 20 7d 0a 09 20 20 20 20 20 20 20 20 2f 2f 64 65 }.. //de
86640 66 61 75 6c 74 73 20 74 6f 20 6c 6f 6f 70 69 6e faults to loopin
86650 67 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e g.. this.
86660 5f 6c 6f 6f 70 20 3d 20 74 72 75 65 3b 0a 09 20 _loop = true;..
86670 20 20 20 20 20 20 20 2f 2f 61 64 64 20 61 6c 6c //add all
86680 20 6f 66 20 74 68 65 20 65 76 65 6e 74 73 0a 09 of the events..
86690 20 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69 if (!thi
866a0 73 2e 69 73 55 6e 64 65 66 28 65 76 65 6e 74 73 s.isUndef(events
866b0 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 )) {..
866c0 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 for (var i = 0
866d0 3b 20 69 20 3c 20 65 76 65 6e 74 73 2e 6c 65 6e ; i < events.len
866e0 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 gth; i++) {..
866f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
86700 73 2e 61 64 64 28 69 2c 20 65 76 65 6e 74 73 5b s.add(i, events[
86710 69 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 i]);..
86720 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 }.. }..
86730 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 };.. Tone
86740 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 53 65 71 .extend(Tone.Seq
86750 75 65 6e 63 65 2c 20 54 6f 6e 65 2e 50 61 72 74 uence, Tone.Part
86760 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
86770 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 The default va
86780 6c 75 65 73 2e 0a 09 09 20 2a 20 20 40 74 79 70 lues.... * @typ
86790 65 20 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a e {Object}... *
867a0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 65 71 75 /.. Tone.Sequ
867b0 65 6e 63 65 2e 64 65 66 61 75 6c 74 73 20 3d 20 ence.defaults =
867c0 7b 20 27 73 75 62 64 69 76 69 73 69 6f 6e 27 3a { 'subdivision':
867d0 20 27 34 6e 27 20 7d 3b 0a 09 20 20 20 20 2f 2a '4n' };.. /*
867e0 2a 0a 09 09 20 2a 20 20 54 68 65 20 73 75 62 64 *... * The subd
867f0 69 76 69 73 69 6f 6e 20 6f 66 20 74 68 65 20 73 ivision of the s
86800 65 71 75 65 6e 63 65 2e 20 54 68 69 73 20 63 61 equence. This ca
86810 6e 20 6f 6e 6c 79 20 62 65 20 0a 09 09 20 2a 20 n only be ... *
86820 20 73 65 74 20 69 6e 20 74 68 65 20 63 6f 6e 73 set in the cons
86830 74 72 75 63 74 6f 72 2e 20 54 68 65 20 73 75 62 tructor. The sub
86840 64 69 76 69 73 69 6f 6e 20 69 73 20 74 68 65 20 division is the
86850 0a 09 09 20 2a 20 20 69 6e 74 65 72 76 61 6c 20 ... * interval
86860 62 65 74 77 65 65 6e 20 73 75 63 63 65 73 73 69 between successi
86870 76 65 20 73 74 65 70 73 2e 20 0a 09 09 20 2a 20 ve steps. ... *
86880 20 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a 09 09 @type {Time}...
86890 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
868a0 6e 65 2e 53 65 71 75 65 6e 63 65 23 0a 09 09 20 ne.Sequence#...
868b0 2a 20 20 40 6e 61 6d 65 20 73 75 62 64 69 76 69 * @name subdivi
868c0 73 69 6f 6e 0a 09 09 20 2a 20 20 40 72 65 61 64 sion... * @read
868d0 4f 6e 6c 79 0a 09 09 20 2a 2f 0a 09 20 20 20 20 Only... */..
868e0 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
868f0 70 65 72 74 79 28 54 6f 6e 65 2e 53 65 71 75 65 perty(Tone.Seque
86900 6e 63 65 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 nce.prototype, '
86910 73 75 62 64 69 76 69 73 69 6f 6e 27 2c 20 7b 0a subdivision', {.
86920 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
86930 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
86940 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
86950 54 6f 6e 65 2e 54 69 6d 65 28 74 68 69 73 2e 5f Tone.Time(this._
86960 73 75 62 64 69 76 69 73 69 6f 6e 2c 20 27 69 27 subdivision, 'i'
86970 29 2e 74 6f 4e 6f 74 61 74 69 6f 6e 28 29 3b 0a ).toNotation();.
86980 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
86990 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 });.. /**...
869a0 2a 20 20 47 65 74 2f 53 65 74 20 61 6e 20 69 6e * Get/Set an in
869b0 64 65 78 20 6f 66 20 74 68 65 20 73 65 71 75 65 dex of the seque
869c0 6e 63 65 2e 20 49 66 20 74 68 65 20 69 6e 64 65 nce. If the inde
869d0 78 20 63 6f 6e 74 61 69 6e 73 20 61 20 73 75 62 x contains a sub
869e0 61 72 72 61 79 2c 20 0a 09 09 20 2a 20 20 61 20 array, ... * a
869f0 54 6f 6e 65 2e 53 65 71 75 65 6e 63 65 20 72 65 Tone.Sequence re
86a00 70 72 65 73 65 6e 74 69 6e 67 20 74 68 61 74 20 presenting that
86a10 73 75 62 2d 61 72 72 61 79 20 77 69 6c 6c 20 62 sub-array will b
86a20 65 20 72 65 74 75 72 6e 65 64 2e 20 0a 09 09 20 e returned. ...
86a30 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
86a40 20 76 61 72 20 73 65 71 75 65 6e 63 65 20 3d 20 var sequence =
86a50 6e 65 77 20 54 6f 6e 65 2e 53 65 71 75 65 6e 63 new Tone.Sequenc
86a60 65 28 70 6c 61 79 4e 6f 74 65 2c 20 5b 22 45 34 e(playNote, ["E4
86a70 22 2c 20 22 43 34 22 2c 20 22 46 23 34 22 2c 20 ", "C4", "F#4",
86a80 5b 22 41 34 22 2c 20 22 42 62 33 22 5d 5d 29 0a ["A4", "Bb3"]]).
86a90 09 09 20 2a 20 73 65 71 75 65 6e 63 65 2e 61 74 .. * sequence.at
86aa0 28 30 29 2f 2f 20 3d 3e 20 72 65 74 75 72 6e 73 (0)// => returns
86ab0 20 22 45 34 22 0a 09 09 20 2a 20 2f 2f 73 65 74 "E4"... * //set
86ac0 20 61 20 76 61 6c 75 65 0a 09 09 20 2a 20 73 65 a value... * se
86ad0 71 75 65 6e 63 65 2e 61 74 28 30 2c 20 22 47 33 quence.at(0, "G3
86ae0 22 29 3b 0a 09 09 20 2a 20 2f 2f 67 65 74 20 61 ");... * //get a
86af0 20 6e 65 73 74 65 64 20 73 65 71 75 65 6e 63 65 nested sequence
86b00 0a 09 09 20 2a 20 73 65 71 75 65 6e 63 65 2e 61 ... * sequence.a
86b10 74 28 33 29 2e 61 74 28 31 29 2f 2f 20 3d 3e 20 t(3).at(1)// =>
86b20 72 65 74 75 72 6e 73 20 22 42 62 33 22 0a 09 09 returns "Bb3"...
86b30 20 2a 20 40 70 61 72 61 6d 20 7b 50 6f 73 69 74 * @param {Posit
86b40 69 76 65 7d 20 69 6e 64 65 78 20 54 68 65 20 69 ive} index The i
86b50 6e 64 65 78 20 74 6f 20 67 65 74 20 6f 72 20 73 ndex to get or s
86b60 65 74 0a 09 09 20 2a 20 40 70 61 72 61 6d 20 7b et... * @param {
86b70 2a 7d 20 76 61 6c 75 65 20 4f 70 74 69 6f 6e 61 *} value Optiona
86b80 6c 6c 79 20 70 61 73 73 20 69 6e 20 74 68 65 20 lly pass in the
86b90 76 61 6c 75 65 20 74 6f 20 73 65 74 20 61 74 20 value to set at
86ba0 74 68 65 20 67 69 76 65 6e 20 69 6e 64 65 78 2e the given index.
86bb0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
86bc0 2e 53 65 71 75 65 6e 63 65 2e 70 72 6f 74 6f 74 .Sequence.protot
86bd0 79 70 65 2e 61 74 20 3d 20 66 75 6e 63 74 69 6f ype.at = functio
86be0 6e 20 28 69 6e 64 65 78 2c 20 76 61 6c 75 65 29 n (index, value)
86bf0 20 7b 0a 09 20 20 20 20 20 20 20 20 2f 2f 69 66 {.. //if
86c00 20 74 68 65 20 76 61 6c 75 65 20 69 73 20 61 6e the value is an
86c10 20 61 72 72 61 79 2c 20 0a 09 20 20 20 20 20 20 array, ..
86c20 20 20 69 66 20 28 74 68 69 73 2e 69 73 41 72 72 if (this.isArr
86c30 61 79 28 76 61 6c 75 65 29 29 20 7b 0a 09 20 20 ay(value)) {..
86c40 20 20 20 20 20 20 20 20 20 20 2f 2f 72 65 6d 6f //remo
86c50 76 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 65 ve the current e
86c60 76 65 6e 74 20 61 74 20 74 68 61 74 20 69 6e 64 vent at that ind
86c70 65 78 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ex..
86c80 74 68 69 73 2e 72 65 6d 6f 76 65 28 69 6e 64 65 this.remove(inde
86c90 78 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 x);.. }..
86ca0 20 20 20 20 20 20 20 20 2f 2f 63 61 6c 6c 20 74 //call t
86cb0 68 65 20 70 61 72 65 6e 74 27 73 20 6d 65 74 68 he parent's meth
86cc0 6f 64 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 od.. retu
86cd0 72 6e 20 54 6f 6e 65 2e 50 61 72 74 2e 70 72 6f rn Tone.Part.pro
86ce0 74 6f 74 79 70 65 2e 61 74 2e 63 61 6c 6c 28 74 totype.at.call(t
86cf0 68 69 73 2c 20 74 68 69 73 2e 5f 69 6e 64 65 78 his, this._index
86d00 54 69 6d 65 28 69 6e 64 65 78 29 2c 20 76 61 6c Time(index), val
86d10 75 65 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ue);.. };..
86d20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 41 64 64 20 /**... * Add
86d30 61 6e 20 65 76 65 6e 74 20 61 74 20 61 6e 20 69 an event at an i
86d40 6e 64 65 78 2c 20 69 66 20 74 68 65 72 65 27 73 ndex, if there's
86d50 20 61 6c 72 65 61 64 79 20 73 6f 6d 65 74 68 69 already somethi
86d60 6e 67 0a 09 09 20 2a 20 20 61 74 20 74 68 61 74 ng... * at that
86d70 20 69 6e 64 65 78 2c 20 6f 76 65 72 77 72 69 74 index, overwrit
86d80 65 20 69 74 2e 20 49 66 20 60 76 61 6c 75 65 60 e it. If `value`
86d90 20 69 73 20 61 6e 20 61 72 72 61 79 2c 20 0a 09 is an array, ..
86da0 09 20 2a 20 20 69 74 20 77 69 6c 6c 20 62 65 20 . * it will be
86db0 70 61 72 73 65 64 20 61 73 20 61 20 73 75 62 73 parsed as a subs
86dc0 65 71 75 65 6e 63 65 2e 0a 09 09 20 2a 20 20 40 equence.... * @
86dd0 70 61 72 61 6d 20 7b 4e 75 6d 62 65 72 7d 20 69 param {Number} i
86de0 6e 64 65 78 20 54 68 65 20 69 6e 64 65 78 20 74 ndex The index t
86df0 6f 20 61 64 64 20 74 68 65 20 65 76 65 6e 74 20 o add the event
86e00 74 6f 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 to... * @param
86e10 7b 2a 7d 20 76 61 6c 75 65 20 54 68 65 20 76 61 {*} value The va
86e20 6c 75 65 20 74 6f 20 61 64 64 20 61 74 20 74 68 lue to add at th
86e30 61 74 20 69 6e 64 65 78 0a 09 09 20 2a 20 20 40 at index... * @
86e40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 65 returns {Tone.Se
86e50 71 75 65 6e 63 65 7d 20 74 68 69 73 0a 09 09 20 quence} this...
86e60 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 65 71 */.. Tone.Seq
86e70 75 65 6e 63 65 2e 70 72 6f 74 6f 74 79 70 65 2e uence.prototype.
86e80 61 64 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 add = function (
86e90 69 6e 64 65 78 2c 20 76 61 6c 75 65 29 20 7b 0a index, value) {.
86ea0 09 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c . if (val
86eb0 75 65 20 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 ue === null) {..
86ec0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
86ed0 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 20 20 rn this;..
86ee0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 69 66 20 }.. if
86ef0 28 74 68 69 73 2e 69 73 41 72 72 61 79 28 76 61 (this.isArray(va
86f00 6c 75 65 29 29 20 7b 0a 09 20 20 20 20 20 20 20 lue)) {..
86f10 20 20 20 20 20 2f 2f 6d 61 6b 65 20 61 20 73 75 //make a su
86f20 62 73 65 71 75 65 6e 63 65 20 61 6e 64 20 61 64 bsequence and ad
86f30 64 20 74 68 61 74 20 74 6f 20 74 68 65 20 73 65 d that to the se
86f40 71 75 65 6e 63 65 0a 09 20 20 20 20 20 20 20 20 quence..
86f50 20 20 20 20 76 61 72 20 73 75 62 53 75 62 64 69 var subSubdi
86f60 76 69 73 69 6f 6e 20 3d 20 4d 61 74 68 2e 72 6f vision = Math.ro
86f70 75 6e 64 28 74 68 69 73 2e 5f 73 75 62 64 69 76 und(this._subdiv
86f80 69 73 69 6f 6e 20 2f 20 76 61 6c 75 65 2e 6c 65 ision / value.le
86f90 6e 67 74 68 29 3b 0a 09 20 20 20 20 20 20 20 20 ngth);..
86fa0 20 20 20 20 76 61 6c 75 65 20 3d 20 6e 65 77 20 value = new
86fb0 54 6f 6e 65 2e 53 65 71 75 65 6e 63 65 28 74 68 Tone.Sequence(th
86fc0 69 73 2e 5f 74 69 63 6b 2e 62 69 6e 64 28 74 68 is._tick.bind(th
86fd0 69 73 29 2c 20 76 61 6c 75 65 2c 20 54 6f 6e 65 is), value, Tone
86fe0 2e 54 69 6d 65 28 73 75 62 53 75 62 64 69 76 69 .Time(subSubdivi
86ff0 73 69 6f 6e 2c 20 27 69 27 29 29 3b 0a 09 20 20 sion, 'i'));..
87000 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
87010 20 54 6f 6e 65 2e 50 61 72 74 2e 70 72 6f 74 6f Tone.Part.proto
87020 74 79 70 65 2e 61 64 64 2e 63 61 6c 6c 28 74 68 type.add.call(th
87030 69 73 2c 20 74 68 69 73 2e 5f 69 6e 64 65 78 54 is, this._indexT
87040 69 6d 65 28 69 6e 64 65 78 29 2c 20 76 61 6c 75 ime(index), valu
87050 65 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 e);.. ret
87060 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
87070 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
87080 20 52 65 6d 6f 76 65 20 61 20 76 61 6c 75 65 20 Remove a value
87090 66 72 6f 6d 20 74 68 65 20 73 65 71 75 65 6e 63 from the sequenc
870a0 65 20 62 79 20 69 6e 64 65 78 0a 09 09 20 2a 20 e by index... *
870b0 20 40 70 61 72 61 6d 20 7b 4e 75 6d 62 65 72 7d @param {Number}
870c0 20 69 6e 64 65 78 20 54 68 65 20 69 6e 64 65 78 index The index
870d0 20 6f 66 20 74 68 65 20 65 76 65 6e 74 20 74 6f of the event to
870e0 20 72 65 6d 6f 76 65 0a 09 09 20 2a 20 20 40 72 remove... * @r
870f0 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 65 71 eturns {Tone.Seq
87100 75 65 6e 63 65 7d 20 74 68 69 73 0a 09 09 20 2a uence} this... *
87110 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 53 65 71 75 /.. Tone.Sequ
87120 65 6e 63 65 2e 70 72 6f 74 6f 74 79 70 65 2e 72 ence.prototype.r
87130 65 6d 6f 76 65 20 3d 20 66 75 6e 63 74 69 6f 6e emove = function
87140 20 28 69 6e 64 65 78 2c 20 76 61 6c 75 65 29 20 (index, value)
87150 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e {.. Tone.
87160 50 61 72 74 2e 70 72 6f 74 6f 74 79 70 65 2e 72 Part.prototype.r
87170 65 6d 6f 76 65 2e 63 61 6c 6c 28 74 68 69 73 2c emove.call(this,
87180 20 74 68 69 73 2e 5f 69 6e 64 65 78 54 69 6d 65 this._indexTime
87190 28 69 6e 64 65 78 29 2c 20 76 61 6c 75 65 29 3b (index), value);
871a0 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
871b0 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
871c0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 47 65 /**... * Ge
871d0 74 20 74 68 65 20 74 69 6d 65 20 6f 66 20 74 68 t the time of th
871e0 65 20 69 6e 64 65 78 20 67 69 76 65 6e 20 74 68 e index given th
871f0 65 20 53 65 71 75 65 6e 63 65 27 73 20 73 75 62 e Sequence's sub
87200 64 69 76 69 73 69 6f 6e 0a 09 09 20 2a 20 20 40 division... * @
87210 70 61 72 61 6d 20 20 7b 4e 75 6d 62 65 72 7d 20 param {Number}
87220 20 69 6e 64 65 78 20 0a 09 09 20 2a 20 20 40 72 index ... * @r
87230 65 74 75 72 6e 20 20 7b 54 69 6d 65 7d 20 20 54 eturn {Time} T
87240 68 65 20 74 69 6d 65 20 6f 66 20 74 68 61 74 20 he time of that
87250 69 6e 64 65 78 0a 09 09 20 2a 20 20 40 70 72 69 index... * @pri
87260 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 vate... */..
87270 54 6f 6e 65 2e 53 65 71 75 65 6e 63 65 2e 70 72 Tone.Sequence.pr
87280 6f 74 6f 74 79 70 65 2e 5f 69 6e 64 65 78 54 69 ototype._indexTi
87290 6d 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 69 me = function (i
872a0 6e 64 65 78 29 20 7b 0a 09 20 20 20 20 20 20 20 ndex) {..
872b0 20 69 66 20 28 69 6e 64 65 78 20 69 6e 73 74 61 if (index insta
872c0 6e 63 65 6f 66 20 54 6f 6e 65 2e 54 72 61 6e 73 nceof Tone.Trans
872d0 70 6f 72 74 54 69 6d 65 29 20 7b 0a 09 20 20 20 portTime) {..
872e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
872f0 69 6e 64 65 78 3b 0a 09 20 20 20 20 20 20 20 20 index;..
87300 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 } else {..
87310 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e return Ton
87320 65 2e 54 72 61 6e 73 70 6f 72 74 54 69 6d 65 28 e.TransportTime(
87330 69 6e 64 65 78 20 2a 20 74 68 69 73 2e 5f 73 75 index * this._su
87340 62 64 69 76 69 73 69 6f 6e 20 2b 20 74 68 69 73 bdivision + this
87350 2e 73 74 61 72 74 4f 66 66 73 65 74 2c 20 27 69 .startOffset, 'i
87360 27 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 ');.. }..
87370 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
87380 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a .. * Clean up..
87390 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 54 .. * @return {T
873a0 6f 6e 65 2e 53 65 71 75 65 6e 63 65 7d 20 74 68 one.Sequence} th
873b0 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
873c0 6e 65 2e 53 65 71 75 65 6e 63 65 2e 70 72 6f 74 ne.Sequence.prot
873d0 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 otype.dispose =
873e0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
873f0 20 20 20 20 20 20 20 54 6f 6e 65 2e 50 61 72 74 Tone.Part
87400 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
87410 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 se.call(this);..
87420 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
87430 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
87440 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 53 65 return Tone.Se
87450 71 75 65 6e 63 65 3b 0a 09 7d 29 3b 0a 09 4d 6f quence;..});..Mo
87460 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 dule(function (T
87470 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 one) {.. ..
87480 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 /**... * @cla
87490 73 73 20 54 6f 6e 65 2e 50 75 6c 73 65 4f 73 63 ss Tone.PulseOsc
874a0 69 6c 6c 61 74 6f 72 20 69 73 20 61 20 70 75 6c illator is a pul
874b0 73 65 20 6f 73 63 69 6c 6c 61 74 6f 72 20 77 69 se oscillator wi
874c0 74 68 20 63 6f 6e 74 72 6f 6c 20 6f 76 65 72 20 th control over
874d0 70 75 6c 73 65 20 77 69 64 74 68 2c 0a 09 09 20 pulse width,...
874e0 2a 20 20 20 20 20 20 20 20 20 61 6c 73 6f 20 6b * also k
874f0 6e 6f 77 6e 20 61 73 20 74 68 65 20 64 75 74 79 nown as the duty
87500 20 63 79 63 6c 65 2e 20 41 74 20 35 30 25 20 64 cycle. At 50% d
87510 75 74 79 20 63 79 63 6c 65 20 28 77 69 64 74 68 uty cycle (width
87520 20 3d 20 30 2e 35 29 20 74 68 65 20 77 61 76 65 = 0.5) the wave
87530 20 69 73 20 0a 09 09 20 2a 20 20 20 20 20 20 20 is ... *
87540 20 20 61 20 73 71 75 61 72 65 20 61 6e 64 20 6f a square and o
87550 6e 6c 79 20 6f 64 64 2d 6e 75 6d 62 65 72 65 64 nly odd-numbered
87560 20 68 61 72 6d 6f 6e 69 63 73 20 61 72 65 20 70 harmonics are p
87570 72 65 73 65 6e 74 2e 20 41 74 20 61 6c 6c 20 6f resent. At all o
87580 74 68 65 72 20 77 69 64 74 68 73 20 0a 09 09 20 ther widths ...
87590 2a 20 20 20 20 20 20 20 20 20 65 76 65 6e 2d 6e * even-n
875a0 75 6d 62 65 72 65 64 20 68 61 72 6d 6f 6e 69 63 umbered harmonic
875b0 73 20 61 72 65 20 70 72 65 73 65 6e 74 2e 20 52 s are present. R
875c0 65 61 64 20 6d 6f 72 65 20 0a 09 09 20 2a 20 20 ead more ... *
875d0 20 20 20 20 20 20 20 5b 68 65 72 65 5d 28 68 74 [here](ht
875e0 74 70 73 3a 2f 2f 77 69 67 67 6c 65 77 61 76 65 tps://wigglewave
875f0 2e 77 6f 72 64 70 72 65 73 73 2e 63 6f 6d 2f 32 .wordpress.com/2
87600 30 31 34 2f 30 38 2f 31 36 2f 70 75 6c 73 65 2d 014/08/16/pulse-
87610 77 61 76 65 66 6f 72 6d 73 2d 61 6e 64 2d 68 61 waveforms-and-ha
87620 72 6d 6f 6e 69 63 73 2f 29 2e 0a 09 09 20 2a 0a rmonics/).... *.
87630 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 .. * @construct
87640 6f 72 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 or... * @extend
87650 73 20 7b 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 s {Tone.Oscillat
87660 6f 72 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d or}... * @param
87670 20 7b 46 72 65 71 75 65 6e 63 79 7d 20 5b 66 72 {Frequency} [fr
87680 65 71 75 65 6e 63 79 5d 20 54 68 65 20 66 72 65 equency] The fre
87690 71 75 65 6e 63 79 20 6f 66 20 74 68 65 20 6f 73 quency of the os
876a0 63 69 6c 6c 61 74 6f 72 0a 09 09 20 2a 20 20 40 cillator... * @
876b0 70 61 72 61 6d 20 7b 4e 6f 72 6d 61 6c 52 61 6e param {NormalRan
876c0 67 65 7d 20 5b 77 69 64 74 68 5d 20 54 68 65 20 ge} [width] The
876d0 77 69 64 74 68 20 6f 66 20 74 68 65 20 70 75 6c width of the pul
876e0 73 65 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c se... * @exampl
876f0 65 0a 09 09 20 2a 20 76 61 72 20 70 75 6c 73 65 e... * var pulse
87700 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 50 75 6c 73 = new Tone.Puls
87710 65 4f 73 63 69 6c 6c 61 74 6f 72 28 22 45 35 22 eOscillator("E5"
87720 2c 20 30 2e 34 29 2e 74 6f 4d 61 73 74 65 72 28 , 0.4).toMaster(
87730 29 2e 73 74 61 72 74 28 29 3b 0a 09 09 20 2a 2f ).start();... */
87740 0a 09 20 20 20 20 54 6f 6e 65 2e 50 75 6c 73 65 .. Tone.Pulse
87750 4f 73 63 69 6c 6c 61 74 6f 72 20 3d 20 66 75 6e Oscillator = fun
87760 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
87770 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 var options
87780 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 = this.optionsOb
87790 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 ject(arguments,
877a0 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 [.. '
877b0 66 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 frequency',..
877c0 20 20 20 20 20 20 20 20 20 27 77 69 64 74 68 27 'width'
877d0 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e .. ], Ton
877e0 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 2e 64 65 66 e.Oscillator.def
877f0 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 aults);..
87800 20 54 6f 6e 65 2e 53 6f 75 72 63 65 2e 63 61 6c Tone.Source.cal
87810 6c 28 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 29 l(this, options)
87820 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
87830 09 09 20 2a 20 20 54 68 65 20 77 69 64 74 68 20 .. * The width
87840 6f 66 20 74 68 65 20 70 75 6c 73 65 2e 20 0a 09 of the pulse. ..
87850 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e 6f 72 .. * @type {Nor
87860 6d 61 6c 52 61 6e 67 65 7d 0a 09 09 09 20 2a 20 malRange}.... *
87870 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a @signal.... */.
87880 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 69 . this.wi
87890 64 74 68 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 dth = new Tone.S
878a0 69 67 6e 61 6c 28 6f 70 74 69 6f 6e 73 2e 77 69 ignal(options.wi
878b0 64 74 68 2c 20 54 6f 6e 65 2e 54 79 70 65 2e 4e dth, Tone.Type.N
878c0 6f 72 6d 61 6c 52 61 6e 67 65 29 3b 0a 09 20 20 ormalRange);..
878d0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
878e0 20 67 61 74 65 20 74 68 65 20 77 69 64 74 68 20 gate the width
878f0 61 6d 6f 75 6e 74 0a 09 09 09 20 2a 20 20 40 74 amount.... * @t
87900 79 70 65 20 7b 54 6f 6e 65 2e 47 61 69 6e 7d 0a ype {Tone.Gain}.
87910 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
87920 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
87930 74 68 69 73 2e 5f 77 69 64 74 68 47 61 74 65 20 this._widthGate
87940 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 = new Tone.Gain(
87950 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
87960 09 09 09 20 2a 20 20 74 68 65 20 73 61 77 74 6f ... * the sawto
87970 6f 74 68 20 6f 73 63 69 6c 6c 61 74 6f 72 0a 09 oth oscillator..
87980 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e .. * @type {Ton
87990 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 7d 0a 09 09 e.Oscillator}...
879a0 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
879b0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
879c0 69 73 2e 5f 73 61 77 74 6f 6f 74 68 20 3d 20 6e is._sawtooth = n
879d0 65 77 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 ew Tone.Oscillat
879e0 6f 72 28 7b 0a 09 20 20 20 20 20 20 20 20 20 20 or({..
879f0 20 20 66 72 65 71 75 65 6e 63 79 3a 20 6f 70 74 frequency: opt
87a00 69 6f 6e 73 2e 66 72 65 71 75 65 6e 63 79 2c 0a ions.frequency,.
87a10 09 20 20 20 20 20 20 20 20 20 20 20 20 64 65 74 . det
87a20 75 6e 65 3a 20 6f 70 74 69 6f 6e 73 2e 64 65 74 une: options.det
87a30 75 6e 65 2c 0a 09 20 20 20 20 20 20 20 20 20 20 une,..
87a40 20 20 74 79 70 65 3a 20 27 73 61 77 74 6f 6f 74 type: 'sawtoot
87a50 68 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 h',..
87a60 20 70 68 61 73 65 3a 20 6f 70 74 69 6f 6e 73 2e phase: options.
87a70 70 68 61 73 65 0a 09 20 20 20 20 20 20 20 20 7d phase.. }
87a80 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
87a90 09 09 09 20 2a 20 20 54 68 65 20 66 72 65 71 75 ... * The frequ
87aa0 65 6e 63 79 20 63 6f 6e 74 72 6f 6c 2e 0a 09 09 ency control....
87ab0 09 20 2a 20 20 40 74 79 70 65 20 7b 46 72 65 71 . * @type {Freq
87ac0 75 65 6e 63 79 7d 0a 09 09 09 20 2a 20 20 40 73 uency}.... * @s
87ad0 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 ignal.... */..
87ae0 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 this.frequ
87af0 65 6e 63 79 20 3d 20 74 68 69 73 2e 5f 73 61 77 ency = this._saw
87b00 74 6f 6f 74 68 2e 66 72 65 71 75 65 6e 63 79 3b tooth.frequency;
87b10 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
87b20 09 20 2a 20 20 54 68 65 20 64 65 74 75 6e 65 20 . * The detune
87b30 69 6e 20 63 65 6e 74 73 2e 20 0a 09 09 09 20 2a in cents. .... *
87b40 20 20 40 74 79 70 65 20 7b 43 65 6e 74 73 7d 0a @type {Cents}.
87b50 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 ... * @signal..
87b60 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
87b70 68 69 73 2e 64 65 74 75 6e 65 20 3d 20 74 68 69 his.detune = thi
87b80 73 2e 5f 73 61 77 74 6f 6f 74 68 2e 64 65 74 75 s._sawtooth.detu
87b90 6e 65 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a ne;.. /**
87ba0 0a 09 09 09 20 2a 20 20 54 68 72 65 73 68 6f 6c .... * Threshol
87bb0 64 20 74 68 65 20 73 69 67 6e 61 6c 20 74 6f 20 d the signal to
87bc0 74 75 72 6e 20 69 74 20 69 6e 74 6f 20 61 20 73 turn it into a s
87bd0 71 75 61 72 65 0a 09 09 09 20 2a 20 20 40 74 79 quare.... * @ty
87be0 70 65 20 7b 54 6f 6e 65 2e 57 61 76 65 53 68 61 pe {Tone.WaveSha
87bf0 70 65 72 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 per}.... * @pri
87c00 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
87c10 20 20 20 20 20 74 68 69 73 2e 5f 74 68 72 65 73 this._thres
87c20 68 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 57 61 76 h = new Tone.Wav
87c30 65 53 68 61 70 65 72 28 66 75 6e 63 74 69 6f 6e eShaper(function
87c40 20 28 76 61 6c 29 20 7b 0a 09 20 20 20 20 20 20 (val) {..
87c50 20 20 20 20 20 20 69 66 20 28 76 61 6c 20 3c 20 if (val <
87c60 30 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 0) {..
87c70 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b return -1;
87c80 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 .. }
87c90 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 else {..
87ca0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 return 1
87cb0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
87cc0 0a 09 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 .. });..
87cd0 20 20 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 63 74 //connect
87ce0 69 6f 6e 73 0a 09 20 20 20 20 20 20 20 20 74 68 ions.. th
87cf0 69 73 2e 5f 73 61 77 74 6f 6f 74 68 2e 63 68 61 is._sawtooth.cha
87d00 69 6e 28 74 68 69 73 2e 5f 74 68 72 65 73 68 2c in(this._thresh,
87d10 20 74 68 69 73 2e 6f 75 74 70 75 74 29 3b 0a 09 this.output);..
87d20 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 69 64 this.wid
87d30 74 68 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f 77 th.chain(this._w
87d40 69 64 74 68 47 61 74 65 2c 20 74 68 69 73 2e 5f idthGate, this._
87d50 74 68 72 65 73 68 29 3b 0a 09 20 20 20 20 20 20 thresh);..
87d60 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 this._readOnly
87d70 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ([..
87d80 27 77 69 64 74 68 27 2c 0a 09 20 20 20 20 20 20 'width',..
87d90 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 'frequency
87da0 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
87db0 27 64 65 74 75 6e 65 27 0a 09 20 20 20 20 20 20 'detune'..
87dc0 20 20 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 ]);.. };..
87dd0 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 Tone.extend(T
87de0 6f 6e 65 2e 50 75 6c 73 65 4f 73 63 69 6c 6c 61 one.PulseOscilla
87df0 74 6f 72 2c 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c tor, Tone.Oscill
87e00 61 74 6f 72 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a ator);.. /**.
87e10 09 09 20 2a 20 20 54 68 65 20 64 65 66 61 75 6c .. * The defaul
87e20 74 20 70 61 72 61 6d 65 74 65 72 73 2e 0a 09 09 t parameters....
87e30 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a * @static... *
87e40 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a 20 20 40 @const... * @
87e50 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 type {Object}...
87e60 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 75 */.. Tone.Pu
87e70 6c 73 65 4f 73 63 69 6c 6c 61 74 6f 72 2e 64 65 lseOscillator.de
87e80 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 faults = {..
87e90 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 3a 'frequency':
87ea0 20 34 34 30 2c 0a 09 20 20 20 20 20 20 20 20 27 440,.. '
87eb0 64 65 74 75 6e 65 27 3a 20 30 2c 0a 09 20 20 20 detune': 0,..
87ec0 20 20 20 20 20 27 70 68 61 73 65 27 3a 20 30 2c 'phase': 0,
87ed0 0a 09 20 20 20 20 20 20 20 20 27 77 69 64 74 68 .. 'width
87ee0 27 3a 20 30 2e 32 0a 09 20 20 20 20 7d 3b 0a 09 ': 0.2.. };..
87ef0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 73 74 /**... * st
87f00 61 72 74 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 art the oscillat
87f10 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 or... * @param
87f20 20 7b 54 69 6d 65 7d 20 74 69 6d 65 20 0a 09 09 {Time} time ...
87f30 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 * @private...
87f40 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 75 6c */.. Tone.Pul
87f50 73 65 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f seOscillator.pro
87f60 74 6f 74 79 70 65 2e 5f 73 74 61 72 74 20 3d 20 totype._start =
87f70 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 function (time)
87f80 7b 0a 09 20 20 20 20 20 20 20 20 74 69 6d 65 20 {.. time
87f90 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 = this.toSeconds
87fa0 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 (time);..
87fb0 20 74 68 69 73 2e 5f 73 61 77 74 6f 6f 74 68 2e this._sawtooth.
87fc0 73 74 61 72 74 28 74 69 6d 65 29 3b 0a 09 20 20 start(time);..
87fd0 20 20 20 20 20 20 74 68 69 73 2e 5f 77 69 64 74 this._widt
87fe0 68 47 61 74 65 2e 67 61 69 6e 2e 73 65 74 56 61 hGate.gain.setVa
87ff0 6c 75 65 41 74 54 69 6d 65 28 31 2c 20 74 69 6d lueAtTime(1, tim
88000 65 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 e);.. };..
88010 20 2f 2a 2a 0a 09 09 20 2a 20 20 73 74 6f 70 20 /**... * stop
88020 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 0a 09 the oscillator..
88030 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 . * @param {Ti
88040 6d 65 7d 20 74 69 6d 65 20 0a 09 09 20 2a 20 20 me} time ... *
88050 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 @private... */..
88060 20 20 20 20 54 6f 6e 65 2e 50 75 6c 73 65 4f 73 Tone.PulseOs
88070 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 79 cillator.prototy
88080 70 65 2e 5f 73 74 6f 70 20 3d 20 66 75 6e 63 74 pe._stop = funct
88090 69 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 ion (time) {..
880a0 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 time = thi
880b0 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 s.toSeconds(time
880c0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
880d0 2e 5f 73 61 77 74 6f 6f 74 68 2e 73 74 6f 70 28 ._sawtooth.stop(
880e0 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 time);..
880f0 2f 2f 74 68 65 20 77 69 64 74 68 20 69 73 20 73 //the width is s
88100 74 69 6c 6c 20 63 6f 6e 6e 65 63 74 65 64 20 74 till connected t
88110 6f 20 74 68 65 20 6f 75 74 70 75 74 2e 20 0a 09 o the output. ..
88120 20 20 20 20 20 20 20 20 2f 2f 74 68 61 74 20 6e //that n
88130 65 65 64 73 20 74 6f 20 62 65 20 73 74 6f 70 70 eeds to be stopp
88140 65 64 20 61 6c 73 6f 0a 09 20 20 20 20 20 20 20 ed also..
88150 20 74 68 69 73 2e 5f 77 69 64 74 68 47 61 74 65 this._widthGate
88160 2e 67 61 69 6e 2e 73 65 74 56 61 6c 75 65 41 74 .gain.setValueAt
88170 54 69 6d 65 28 30 2c 20 74 69 6d 65 29 3b 0a 09 Time(0, time);..
88180 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
88190 09 09 20 2a 20 54 68 65 20 70 68 61 73 65 20 6f .. * The phase o
881a0 66 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 f the oscillator
881b0 20 69 6e 20 64 65 67 72 65 65 73 2e 0a 09 09 20 in degrees....
881c0 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 * @memberOf Tone
881d0 2e 50 75 6c 73 65 4f 73 63 69 6c 6c 61 74 6f 72 .PulseOscillator
881e0 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 44 65 #... * @type {De
881f0 67 72 65 65 73 7d 0a 09 09 20 2a 20 40 6e 61 6d grees}... * @nam
88200 65 20 70 68 61 73 65 0a 09 09 20 2a 2f 0a 09 20 e phase... */..
88210 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
88220 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 75 Property(Tone.Pu
88230 6c 73 65 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 lseOscillator.pr
88240 6f 74 6f 74 79 70 65 2c 20 27 70 68 61 73 65 27 ototype, 'phase'
88250 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
88260 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
88270 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
88280 75 72 6e 20 74 68 69 73 2e 5f 73 61 77 74 6f 6f urn this._sawtoo
88290 74 68 2e 70 68 61 73 65 3b 0a 09 20 20 20 20 20 th.phase;..
882a0 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 },.. s
882b0 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 70 68 et: function (ph
882c0 61 73 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ase) {..
882d0 20 20 20 20 74 68 69 73 2e 5f 73 61 77 74 6f 6f this._sawtoo
882e0 74 68 2e 70 68 61 73 65 20 3d 20 70 68 61 73 65 th.phase = phase
882f0 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
88300 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 });.. /**..
88310 09 20 2a 20 54 68 65 20 74 79 70 65 20 6f 66 20 . * The type of
88320 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 2e 20 the oscillator.
88330 41 6c 77 61 79 73 20 72 65 74 75 72 6e 73 20 22 Always returns "
88340 70 75 6c 73 65 22 2e 0a 09 09 20 2a 20 40 72 65 pulse".... * @re
88350 61 64 4f 6e 6c 79 0a 09 09 20 2a 20 40 6d 65 6d adOnly... * @mem
88360 62 65 72 4f 66 20 54 6f 6e 65 2e 50 75 6c 73 65 berOf Tone.Pulse
88370 4f 73 63 69 6c 6c 61 74 6f 72 23 0a 09 09 20 2a Oscillator#... *
88380 20 40 74 79 70 65 20 7b 73 74 72 69 6e 67 7d 0a @type {string}.
88390 09 09 20 2a 20 40 6e 61 6d 65 20 74 79 70 65 0a .. * @name type.
883a0 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 .. */.. Objec
883b0 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 t.defineProperty
883c0 28 54 6f 6e 65 2e 50 75 6c 73 65 4f 73 63 69 6c (Tone.PulseOscil
883d0 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2c lator.prototype,
883e0 20 27 74 79 70 65 27 2c 20 7b 0a 09 20 20 20 20 'type', {..
883f0 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
88400 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
88410 20 20 20 20 72 65 74 75 72 6e 20 27 70 75 6c 73 return 'puls
88420 65 27 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 e';.. }..
88430 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
88440 0a 09 09 20 2a 20 54 68 65 20 70 61 72 74 69 61 ... * The partia
88450 6c 73 20 6f 66 20 74 68 65 20 77 61 76 65 66 6f ls of the wavefo
88460 72 6d 2e 20 43 61 6e 6e 6f 74 20 73 65 74 20 70 rm. Cannot set p
88470 61 72 74 69 61 6c 73 20 66 6f 72 20 74 68 69 73 artials for this
88480 20 77 61 76 65 66 6f 72 6d 20 74 79 70 65 0a 09 waveform type..
88490 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f . * @memberOf To
884a0 6e 65 2e 50 75 6c 73 65 4f 73 63 69 6c 6c 61 74 ne.PulseOscillat
884b0 6f 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b or#... * @type {
884c0 41 72 72 61 79 7d 0a 09 09 20 2a 20 40 6e 61 6d Array}... * @nam
884d0 65 20 70 61 72 74 69 61 6c 73 0a 09 09 20 2a 20 e partials... *
884e0 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 @private... */..
884f0 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
88500 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 eProperty(Tone.P
88510 75 6c 73 65 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 ulseOscillator.p
88520 72 6f 74 6f 74 79 70 65 2c 20 27 70 61 72 74 69 rototype, 'parti
88530 61 6c 73 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 als', {..
88540 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
88550 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
88560 20 72 65 74 75 72 6e 20 5b 5d 3b 0a 09 20 20 20 return [];..
88570 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
88580 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 . /**... * C
88590 6c 65 61 6e 20 75 70 20 6d 65 74 68 6f 64 2e 0a lean up method..
885a0 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 54 .. * @return {T
885b0 6f 6e 65 2e 50 75 6c 73 65 4f 73 63 69 6c 6c 61 one.PulseOscilla
885c0 74 6f 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a tor} this... */.
885d0 09 20 20 20 20 54 6f 6e 65 2e 50 75 6c 73 65 4f . Tone.PulseO
885e0 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 scillator.protot
885f0 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 ype.dispose = fu
88600 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
88610 20 20 20 20 20 54 6f 6e 65 2e 53 6f 75 72 63 65 Tone.Source
88620 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
88630 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 se.call(this);..
88640 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 61 this._sa
88650 77 74 6f 6f 74 68 2e 64 69 73 70 6f 73 65 28 29 wtooth.dispose()
88660 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
88670 5f 73 61 77 74 6f 6f 74 68 20 3d 20 6e 75 6c 6c _sawtooth = null
88680 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
88690 5f 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 _writable([..
886a0 20 20 20 20 20 20 20 20 20 27 77 69 64 74 68 27 'width'
886b0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
886c0 66 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 frequency',..
886d0 20 20 20 20 20 20 20 20 20 27 64 65 74 75 6e 65 'detune
886e0 27 0a 09 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 '.. ]);..
886f0 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 69 64 this.wid
88700 74 68 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 th.dispose();..
88710 20 20 20 20 20 20 20 74 68 69 73 2e 77 69 64 74 this.widt
88720 68 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 h = null;..
88730 20 20 20 74 68 69 73 2e 5f 77 69 64 74 68 47 61 this._widthGa
88740 74 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 te.dispose();..
88750 20 20 20 20 20 20 20 74 68 69 73 2e 5f 77 69 64 this._wid
88760 74 68 47 61 74 65 20 3d 20 6e 75 6c 6c 3b 0a 09 thGate = null;..
88770 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 74 68 this._th
88780 72 65 73 68 2e 64 69 73 70 6f 73 65 28 29 3b 0a resh.dispose();.
88790 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 74 . this._t
887a0 68 72 65 73 68 20 3d 20 6e 75 6c 6c 3b 0a 09 20 hresh = null;..
887b0 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 this.freq
887c0 75 65 6e 63 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 uency = null;..
887d0 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 74 75 this.detu
887e0 6e 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 ne = null;..
887f0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
88800 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 .. };.. re
88810 74 75 72 6e 20 54 6f 6e 65 2e 50 75 6c 73 65 4f turn Tone.PulseO
88820 73 63 69 6c 6c 61 74 6f 72 3b 0a 09 7d 29 3b 0a scillator;..});.
88830 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e .Module(function
88840 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a (Tone) {.. .
88850 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 . /**... * @
88860 63 6c 61 73 73 20 54 6f 6e 65 2e 50 57 4d 4f 73 class Tone.PWMOs
88870 63 69 6c 6c 61 74 6f 72 20 6d 6f 64 75 6c 61 74 cillator modulat
88880 65 73 20 74 68 65 20 77 69 64 74 68 20 6f 66 20 es the width of
88890 61 20 54 6f 6e 65 2e 50 75 6c 73 65 4f 73 63 69 a Tone.PulseOsci
888a0 6c 6c 61 74 6f 72 20 0a 09 09 20 2a 20 20 20 20 llator ... *
888b0 20 20 20 20 20 61 74 20 74 68 65 20 6d 6f 64 75 at the modu
888c0 6c 61 74 69 6f 6e 46 72 65 71 75 65 6e 63 79 2e lationFrequency.
888d0 20 54 68 69 73 20 68 61 73 20 74 68 65 20 65 66 This has the ef
888e0 66 65 63 74 20 6f 66 20 63 6f 6e 74 69 6e 75 6f fect of continuo
888f0 75 73 6c 79 0a 09 09 20 2a 20 20 20 20 20 20 20 usly... *
88900 20 20 63 68 61 6e 67 69 6e 67 20 74 68 65 20 74 changing the t
88910 69 6d 62 72 65 20 6f 66 20 74 68 65 20 6f 73 63 imbre of the osc
88920 69 6c 6c 61 74 6f 72 20 62 79 20 61 6c 74 65 72 illator by alter
88930 69 6e 67 20 74 68 65 20 68 61 72 6d 6f 6e 69 63 ing the harmonic
88940 73 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 s ... *
88950 67 65 6e 65 72 61 74 65 64 2e 0a 09 09 20 2a 0a generated.... *.
88960 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b .. * @extends {
88970 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 7d Tone.Oscillator}
88980 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 ... * @construc
88990 74 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d tor... * @param
889a0 20 7b 46 72 65 71 75 65 6e 63 79 7d 20 66 72 65 {Frequency} fre
889b0 71 75 65 6e 63 79 20 54 68 65 20 73 74 61 72 74 quency The start
889c0 69 6e 67 20 66 72 65 71 75 65 6e 63 79 20 6f 66 ing frequency of
889d0 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 2e the oscillator.
889e0 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b ... * @param {
889f0 46 72 65 71 75 65 6e 63 79 7d 20 6d 6f 64 75 6c Frequency} modul
88a00 61 74 69 6f 6e 46 72 65 71 75 65 6e 63 79 20 54 ationFrequency T
88a10 68 65 20 6d 6f 64 75 6c 61 74 69 6f 6e 20 66 72 he modulation fr
88a20 65 71 75 65 6e 63 79 20 6f 66 20 74 68 65 20 77 equency of the w
88a30 69 64 74 68 20 6f 66 20 74 68 65 20 70 75 6c 73 idth of the puls
88a40 65 2e 20 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 e. ... * @examp
88a50 6c 65 0a 09 09 20 2a 20 20 76 61 72 20 70 77 6d le... * var pwm
88a60 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 50 57 4d 4f = new Tone.PWMO
88a70 73 63 69 6c 6c 61 74 6f 72 28 22 41 62 33 22 2c scillator("Ab3",
88a80 20 30 2e 33 29 2e 74 6f 4d 61 73 74 65 72 28 29 0.3).toMaster()
88a90 2e 73 74 61 72 74 28 29 3b 0a 09 09 20 2a 2f 0a .start();... */.
88aa0 09 20 20 20 20 54 6f 6e 65 2e 50 57 4d 4f 73 63 . Tone.PWMOsc
88ab0 69 6c 6c 61 74 6f 72 20 3d 20 66 75 6e 63 74 69 illator = functi
88ac0 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
88ad0 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 var options = t
88ae0 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 his.optionsObjec
88af0 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 t(arguments, [..
88b00 20 20 20 20 20 20 20 20 20 20 20 20 27 66 72 65 'fre
88b10 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 quency',..
88b20 20 20 20 20 20 20 27 6d 6f 64 75 6c 61 74 69 6f 'modulatio
88b30 6e 46 72 65 71 75 65 6e 63 79 27 0a 09 20 20 20 nFrequency'..
88b40 20 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 50 57 4d ], Tone.PWM
88b50 4f 73 63 69 6c 6c 61 74 6f 72 2e 64 65 66 61 75 Oscillator.defau
88b60 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 54 lts);.. T
88b70 6f 6e 65 2e 53 6f 75 72 63 65 2e 63 61 6c 6c 28 one.Source.call(
88b80 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a this, options);.
88b90 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
88ba0 20 2a 20 20 74 68 65 20 70 75 6c 73 65 20 6f 73 * the pulse os
88bb0 63 69 6c 6c 61 74 6f 72 0a 09 09 09 20 2a 20 20 cillator.... *
88bc0 40 74 79 70 65 20 7b 54 6f 6e 65 2e 50 75 6c 73 @type {Tone.Puls
88bd0 65 4f 73 63 69 6c 6c 61 74 6f 72 7d 0a 09 09 09 eOscillator}....
88be0 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
88bf0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
88c00 73 2e 5f 70 75 6c 73 65 20 3d 20 6e 65 77 20 54 s._pulse = new T
88c10 6f 6e 65 2e 50 75 6c 73 65 4f 73 63 69 6c 6c 61 one.PulseOscilla
88c20 74 6f 72 28 6f 70 74 69 6f 6e 73 2e 6d 6f 64 75 tor(options.modu
88c30 6c 61 74 69 6f 6e 46 72 65 71 75 65 6e 63 79 29 lationFrequency)
88c40 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 68 61 ;.. //cha
88c50 6e 67 65 20 74 68 65 20 70 75 6c 73 65 20 6f 73 nge the pulse os
88c60 63 69 6c 6c 61 74 6f 72 20 74 79 70 65 0a 09 20 cillator type..
88c70 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 75 6c this._pul
88c80 73 65 2e 5f 73 61 77 74 6f 6f 74 68 2e 74 79 70 se._sawtooth.typ
88c90 65 20 3d 20 27 73 69 6e 65 27 3b 0a 09 20 20 20 e = 'sine';..
88ca0 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
88cb0 74 68 65 20 6d 6f 64 75 6c 61 74 6f 72 0a 09 09 the modulator...
88cc0 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 . * @type {Tone
88cd0 2e 4f 73 63 69 6c 6c 61 74 6f 72 7d 0a 09 09 09 .Oscillator}....
88ce0 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
88cf0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
88d00 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 20 3d 20 6e s._modulator = n
88d10 65 77 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 ew Tone.Oscillat
88d20 6f 72 28 7b 0a 09 20 20 20 20 20 20 20 20 20 20 or({..
88d30 20 20 27 66 72 65 71 75 65 6e 63 79 27 3a 20 6f 'frequency': o
88d40 70 74 69 6f 6e 73 2e 66 72 65 71 75 65 6e 63 79 ptions.frequency
88d50 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
88d60 64 65 74 75 6e 65 27 3a 20 6f 70 74 69 6f 6e 73 detune': options
88d70 2e 64 65 74 75 6e 65 2c 0a 09 20 20 20 20 20 20 .detune,..
88d80 20 20 20 20 20 20 27 70 68 61 73 65 27 3a 20 6f 'phase': o
88d90 70 74 69 6f 6e 73 2e 70 68 61 73 65 0a 09 20 20 ptions.phase..
88da0 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 });..
88db0 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 53 63 /**.... * Sc
88dc0 61 6c 65 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 ale the oscillat
88dd0 6f 72 20 73 6f 20 69 74 20 64 6f 65 73 6e 27 74 or so it doesn't
88de0 20 67 6f 20 73 69 6c 65 6e 74 20 0a 09 09 09 20 go silent ....
88df0 2a 20 20 61 74 20 74 68 65 20 65 78 74 72 65 6d * at the extrem
88e00 65 20 76 61 6c 75 65 73 2e 0a 09 09 09 20 2a 20 e values..... *
88e10 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4d 75 6c @type {Tone.Mul
88e20 74 69 70 6c 79 7d 0a 09 09 09 20 2a 20 20 40 70 tiply}.... * @p
88e30 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
88e40 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 63 61 this._sca
88e50 6c 65 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 75 le = new Tone.Mu
88e60 6c 74 69 70 6c 79 28 32 29 3b 0a 09 20 20 20 20 ltiply(2);..
88e70 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
88e80 68 65 20 66 72 65 71 75 65 6e 63 79 20 63 6f 6e he frequency con
88e90 74 72 6f 6c 2e 0a 09 09 09 20 2a 20 20 40 74 79 trol..... * @ty
88ea0 70 65 20 7b 46 72 65 71 75 65 6e 63 79 7d 0a 09 pe {Frequency}..
88eb0 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 .. * @signal...
88ec0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
88ed0 69 73 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 74 is.frequency = t
88ee0 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e 66 his._modulator.f
88ef0 72 65 71 75 65 6e 63 79 3b 0a 09 20 20 20 20 20 requency;..
88f00 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 /**.... * Th
88f10 65 20 64 65 74 75 6e 65 20 6f 66 20 74 68 65 20 e detune of the
88f20 6f 73 63 69 6c 6c 61 74 6f 72 2e 0a 09 09 09 20 oscillator.....
88f30 2a 20 20 40 74 79 70 65 20 7b 43 65 6e 74 73 7d * @type {Cents}
88f40 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a .... * @signal.
88f50 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
88f60 74 68 69 73 2e 64 65 74 75 6e 65 20 3d 20 74 68 this.detune = th
88f70 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e 64 65 is._modulator.de
88f80 74 75 6e 65 3b 0a 09 20 20 20 20 20 20 20 20 2f tune;.. /
88f90 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 6d 6f **.... * The mo
88fa0 64 75 6c 61 74 69 6f 6e 20 72 61 74 65 20 6f 66 dulation rate of
88fb0 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 2e the oscillator.
88fc0 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b .... * @type {
88fd0 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 09 20 2a Frequency}.... *
88fe0 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f @signal.... */
88ff0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d .. this.m
89000 6f 64 75 6c 61 74 69 6f 6e 46 72 65 71 75 65 6e odulationFrequen
89010 63 79 20 3d 20 74 68 69 73 2e 5f 70 75 6c 73 65 cy = this._pulse
89020 2e 66 72 65 71 75 65 6e 63 79 3b 0a 09 20 20 20 .frequency;..
89030 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 63 74 69 6f //connectio
89040 6e 73 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 ns.. this
89050 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e 63 68 61 69 ._modulator.chai
89060 6e 28 74 68 69 73 2e 5f 73 63 61 6c 65 2c 20 74 n(this._scale, t
89070 68 69 73 2e 5f 70 75 6c 73 65 2e 77 69 64 74 68 his._pulse.width
89080 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
89090 2e 5f 70 75 6c 73 65 2e 63 6f 6e 6e 65 63 74 28 ._pulse.connect(
890a0 74 68 69 73 2e 6f 75 74 70 75 74 29 3b 0a 09 20 this.output);..
890b0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 this._rea
890c0 64 4f 6e 6c 79 28 5b 0a 09 20 20 20 20 20 20 20 dOnly([..
890d0 20 20 20 20 20 27 6d 6f 64 75 6c 61 74 69 6f 6e 'modulation
890e0 46 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 Frequency',..
890f0 20 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 'freque
89100 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 ncy',..
89110 20 20 20 27 64 65 74 75 6e 65 27 0a 09 20 20 20 'detune'..
89120 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 7d 3b ]);.. };
89130 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e .. Tone.exten
89140 64 28 54 6f 6e 65 2e 50 57 4d 4f 73 63 69 6c 6c d(Tone.PWMOscill
89150 61 74 6f 72 2c 20 54 6f 6e 65 2e 4f 73 63 69 6c ator, Tone.Oscil
89160 6c 61 74 6f 72 29 3b 0a 09 20 20 20 20 2f 2a 2a lator);.. /**
89170 0a 09 09 20 2a 20 20 64 65 66 61 75 6c 74 20 76 ... * default v
89180 61 6c 75 65 73 0a 09 09 20 2a 20 20 40 73 74 61 alues... * @sta
89190 74 69 63 0a 09 09 20 2a 20 20 40 74 79 70 65 20 tic... * @type
891a0 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 20 20 40 {Object}... * @
891b0 63 6f 6e 73 74 0a 09 09 20 2a 2f 0a 09 20 20 20 const... */..
891c0 20 54 6f 6e 65 2e 50 57 4d 4f 73 63 69 6c 6c 61 Tone.PWMOscilla
891d0 74 6f 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b tor.defaults = {
891e0 0a 09 20 20 20 20 20 20 20 20 27 66 72 65 71 75 .. 'frequ
891f0 65 6e 63 79 27 3a 20 34 34 30 2c 0a 09 20 20 20 ency': 440,..
89200 20 20 20 20 20 27 64 65 74 75 6e 65 27 3a 20 30 'detune': 0
89210 2c 0a 09 20 20 20 20 20 20 20 20 27 70 68 61 73 ,.. 'phas
89220 65 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 e': 0,..
89230 27 6d 6f 64 75 6c 61 74 69 6f 6e 46 72 65 71 75 'modulationFrequ
89240 65 6e 63 79 27 3a 20 30 2e 34 0a 09 20 20 20 20 ency': 0.4..
89250 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
89260 20 20 73 74 61 72 74 20 74 68 65 20 6f 73 63 69 start the osci
89270 6c 6c 61 74 6f 72 0a 09 09 20 2a 20 20 40 70 61 llator... * @pa
89280 72 61 6d 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d ram {Time} [tim
89290 65 3d 6e 6f 77 5d 0a 09 09 20 2a 20 20 40 70 72 e=now]... * @pr
892a0 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 ivate... */..
892b0 20 54 6f 6e 65 2e 50 57 4d 4f 73 63 69 6c 6c 61 Tone.PWMOscilla
892c0 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 73 tor.prototype._s
892d0 74 61 72 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 tart = function
892e0 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 (time) {..
892f0 20 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f time = this.to
89300 53 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 Seconds(time);..
89310 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f this._mo
89320 64 75 6c 61 74 6f 72 2e 73 74 61 72 74 28 74 69 dulator.start(ti
89330 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 me);.. th
89340 69 73 2e 5f 70 75 6c 73 65 2e 73 74 61 72 74 28 is._pulse.start(
89350 74 69 6d 65 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 time);.. };..
89360 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 73 74 /**... * st
89370 6f 70 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f op the oscillato
89380 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 r... * @param
89390 7b 54 69 6d 65 7d 20 74 69 6d 65 20 28 6f 70 74 {Time} time (opt
893a0 69 6f 6e 61 6c 29 20 74 69 6d 69 6e 67 20 70 61 ional) timing pa
893b0 72 61 6d 65 74 65 72 0a 09 09 20 2a 20 20 40 70 rameter... * @p
893c0 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 rivate... */..
893d0 20 20 54 6f 6e 65 2e 50 57 4d 4f 73 63 69 6c 6c Tone.PWMOscill
893e0 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f ator.prototype._
893f0 73 74 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 stop = function
89400 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 (time) {..
89410 20 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f time = this.to
89420 53 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 Seconds(time);..
89430 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f this._mo
89440 64 75 6c 61 74 6f 72 2e 73 74 6f 70 28 74 69 6d dulator.stop(tim
89450 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 e);.. thi
89460 73 2e 5f 70 75 6c 73 65 2e 73 74 6f 70 28 74 69 s._pulse.stop(ti
89470 6d 65 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 me);.. };..
89480 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 74 /**... * The t
89490 79 70 65 20 6f 66 20 74 68 65 20 6f 73 63 69 6c ype of the oscil
894a0 6c 61 74 6f 72 2e 20 41 6c 77 61 79 73 20 72 65 lator. Always re
894b0 74 75 72 6e 73 20 22 70 77 6d 22 2e 0a 09 09 20 turns "pwm"....
894c0 2a 20 40 72 65 61 64 4f 6e 6c 79 0a 09 09 20 2a * @readOnly... *
894d0 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e @memberOf Tone.
894e0 50 57 4d 4f 73 63 69 6c 6c 61 74 6f 72 23 0a 09 PWMOscillator#..
894f0 09 20 2a 20 40 74 79 70 65 20 7b 73 74 72 69 6e . * @type {strin
89500 67 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 74 79 g}... * @name ty
89510 70 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 pe... */.. Ob
89520 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
89530 72 74 79 28 54 6f 6e 65 2e 50 57 4d 4f 73 63 69 rty(Tone.PWMOsci
89540 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 llator.prototype
89550 2c 20 27 74 79 70 65 27 2c 20 7b 0a 09 20 20 20 , 'type', {..
89560 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
89570 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
89580 20 20 20 20 20 72 65 74 75 72 6e 20 27 70 77 6d return 'pwm
89590 27 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 ';.. }..
895a0 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
895b0 09 09 20 2a 20 54 68 65 20 70 61 72 74 69 61 6c .. * The partial
895c0 73 20 6f 66 20 74 68 65 20 77 61 76 65 66 6f 72 s of the wavefor
895d0 6d 2e 20 43 61 6e 6e 6f 74 20 73 65 74 20 70 61 m. Cannot set pa
895e0 72 74 69 61 6c 73 20 66 6f 72 20 74 68 69 73 20 rtials for this
895f0 77 61 76 65 66 6f 72 6d 20 74 79 70 65 0a 09 09 waveform type...
89600 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
89610 65 2e 50 57 4d 4f 73 63 69 6c 6c 61 74 6f 72 23 e.PWMOscillator#
89620 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 41 72 72 ... * @type {Arr
89630 61 79 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 70 ay}... * @name p
89640 61 72 74 69 61 6c 73 0a 09 09 20 2a 20 40 70 72 artials... * @pr
89650 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 ivate... */..
89660 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
89670 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 57 4d 4f operty(Tone.PWMO
89680 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 scillator.protot
89690 79 70 65 2c 20 27 70 61 72 74 69 61 6c 73 27 2c ype, 'partials',
896a0 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
896b0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
896c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
896d0 72 6e 20 5b 5d 3b 0a 09 20 20 20 20 20 20 20 20 rn [];..
896e0 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
896f0 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 70 68 61 /**... * The pha
89700 73 65 20 6f 66 20 74 68 65 20 6f 73 63 69 6c 6c se of the oscill
89710 61 74 6f 72 20 69 6e 20 64 65 67 72 65 65 73 2e ator in degrees.
89720 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 ... * @memberOf
89730 54 6f 6e 65 2e 50 57 4d 4f 73 63 69 6c 6c 61 74 Tone.PWMOscillat
89740 6f 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b or#... * @type {
89750 6e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 40 6e 61 number}... * @na
89760 6d 65 20 70 68 61 73 65 0a 09 09 20 2a 2f 0a 09 me phase... */..
89770 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
89780 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 eProperty(Tone.P
89790 57 4d 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f WMOscillator.pro
897a0 74 6f 74 79 70 65 2c 20 27 70 68 61 73 65 27 2c totype, 'phase',
897b0 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
897c0 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
897d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
897e0 72 6e 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 rn this._modulat
897f0 6f 72 2e 70 68 61 73 65 3b 0a 09 20 20 20 20 20 or.phase;..
89800 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 },.. s
89810 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 70 68 et: function (ph
89820 61 73 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ase) {..
89830 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 this._modula
89840 74 6f 72 2e 70 68 61 73 65 20 3d 20 70 68 61 73 tor.phase = phas
89850 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 e;.. }..
89860 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
89870 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a .. * Clean up..
89880 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 54 .. * @return {T
89890 6f 6e 65 2e 50 57 4d 4f 73 63 69 6c 6c 61 74 6f one.PWMOscillato
898a0 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 r} this... */..
898b0 20 20 20 54 6f 6e 65 2e 50 57 4d 4f 73 63 69 6c Tone.PWMOscil
898c0 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2e lator.prototype.
898d0 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 dispose = functi
898e0 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
898f0 20 54 6f 6e 65 2e 53 6f 75 72 63 65 2e 70 72 6f Tone.Source.pro
89900 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 totype.dispose.c
89910 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 all(this);..
89920 20 20 20 20 74 68 69 73 2e 5f 70 75 6c 73 65 2e this._pulse.
89930 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
89940 20 20 20 20 74 68 69 73 2e 5f 70 75 6c 73 65 20 this._pulse
89950 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
89960 20 74 68 69 73 2e 5f 73 63 61 6c 65 2e 64 69 73 this._scale.dis
89970 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
89980 20 74 68 69 73 2e 5f 73 63 61 6c 65 20 3d 20 6e this._scale = n
89990 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
899a0 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e 64 69 is._modulator.di
899b0 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
899c0 20 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f this._modulato
899d0 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 r = null;..
899e0 20 20 20 74 68 69 73 2e 5f 77 72 69 74 61 62 6c this._writabl
899f0 65 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e([..
89a00 20 27 6d 6f 64 75 6c 61 74 69 6f 6e 46 72 65 71 'modulationFreq
89a10 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 uency',..
89a20 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 'frequency'
89a30 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
89a40 64 65 74 75 6e 65 27 0a 09 20 20 20 20 20 20 20 detune'..
89a50 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ]);.. th
89a60 69 73 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 6e is.frequency = n
89a70 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
89a80 69 73 2e 64 65 74 75 6e 65 20 3d 20 6e 75 6c 6c is.detune = null
89a90 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
89aa0 6d 6f 64 75 6c 61 74 69 6f 6e 46 72 65 71 75 65 modulationFreque
89ab0 6e 63 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ncy = null;..
89ac0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
89ad0 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 ;.. };.. r
89ae0 65 74 75 72 6e 20 54 6f 6e 65 2e 50 57 4d 4f 73 eturn Tone.PWMOs
89af0 63 69 6c 6c 61 74 6f 72 3b 0a 09 7d 29 3b 0a 09 cillator;..});..
89b00 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 Module(function
89b10 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 (Tone) {.. ..
89b20 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 /**... * @c
89b30 6c 61 73 73 20 54 6f 6e 65 2e 46 4d 4f 73 63 69 lass Tone.FMOsci
89b40 6c 6c 61 74 6f 72 20 0a 09 09 20 2a 0a 09 09 20 llator ... *...
89b50 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e * @extends {Ton
89b60 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 7d 0a 09 09 e.Oscillator}...
89b70 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 * @constructor
89b80 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 46 ... * @param {F
89b90 72 65 71 75 65 6e 63 79 7d 20 66 72 65 71 75 65 requency} freque
89ba0 6e 63 79 20 54 68 65 20 73 74 61 72 74 69 6e 67 ncy The starting
89bb0 20 66 72 65 71 75 65 6e 63 79 20 6f 66 20 74 68 frequency of th
89bc0 65 20 6f 73 63 69 6c 6c 61 74 6f 72 2e 20 0a 09 e oscillator. ..
89bd0 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 53 74 72 . * @param {Str
89be0 69 6e 67 7d 20 74 79 70 65 20 54 68 65 20 74 79 ing} type The ty
89bf0 70 65 20 6f 66 20 74 68 65 20 63 61 72 72 69 65 pe of the carrie
89c00 72 20 6f 73 63 69 6c 6c 61 74 6f 72 2e 0a 09 09 r oscillator....
89c10 20 2a 20 20 40 70 61 72 61 6d 20 7b 53 74 72 69 * @param {Stri
89c20 6e 67 7d 20 6d 6f 64 75 6c 61 74 69 6f 6e 54 79 ng} modulationTy
89c30 70 65 20 54 68 65 20 74 79 70 65 20 6f 66 20 74 pe The type of t
89c40 68 65 20 6d 6f 64 75 6c 61 74 6f 72 20 6f 73 63 he modulator osc
89c50 69 6c 6c 61 74 6f 72 2e 0a 09 09 20 2a 20 20 40 illator.... * @
89c60 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f 61 example... * //a
89c70 20 73 69 6e 65 20 6f 73 63 69 6c 6c 61 74 6f 72 sine oscillator
89c80 20 66 72 65 71 75 65 6e 63 79 2d 6d 6f 64 75 6c frequency-modul
89c90 61 74 65 64 20 62 79 20 61 20 73 71 75 61 72 65 ated by a square
89ca0 20 77 61 76 65 0a 09 09 20 2a 20 76 61 72 20 66 wave... * var f
89cb0 6d 4f 73 63 20 3d 20 6e 65 77 20 54 6f 6e 65 2e mOsc = new Tone.
89cc0 46 4d 4f 73 63 69 6c 6c 61 74 6f 72 28 22 41 62 FMOscillator("Ab
89cd0 33 22 2c 20 22 73 69 6e 65 22 2c 20 22 73 71 75 3", "sine", "squ
89ce0 61 72 65 22 29 2e 74 6f 4d 61 73 74 65 72 28 29 are").toMaster()
89cf0 2e 73 74 61 72 74 28 29 3b 0a 09 09 20 2a 2f 0a .start();... */.
89d00 09 20 20 20 20 54 6f 6e 65 2e 46 4d 4f 73 63 69 . Tone.FMOsci
89d10 6c 6c 61 74 6f 72 20 3d 20 66 75 6e 63 74 69 6f llator = functio
89d20 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
89d30 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 var options = th
89d40 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 is.optionsObject
89d50 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 (arguments, [..
89d60 20 20 20 20 20 20 20 20 20 20 20 27 66 72 65 71 'freq
89d70 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 uency',..
89d80 20 20 20 20 20 27 74 79 70 65 27 2c 0a 09 20 20 'type',..
89d90 20 20 20 20 20 20 20 20 20 20 27 6d 6f 64 75 6c 'modul
89da0 61 74 69 6f 6e 54 79 70 65 27 0a 09 20 20 20 20 ationType'..
89db0 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 46 4d 4f 73 ], Tone.FMOs
89dc0 63 69 6c 6c 61 74 6f 72 2e 64 65 66 61 75 6c 74 cillator.default
89dd0 73 29 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e s);.. Ton
89de0 65 2e 53 6f 75 72 63 65 2e 63 61 6c 6c 28 74 68 e.Source.call(th
89df0 69 73 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a 09 20 is, options);..
89e00 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
89e10 20 20 54 68 65 20 63 61 72 72 69 65 72 20 6f 73 The carrier os
89e20 63 69 6c 6c 61 74 6f 72 0a 09 09 09 20 2a 20 20 cillator.... *
89e30 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4f 73 63 69 @type {Tone.Osci
89e40 6c 6c 61 74 6f 72 7d 0a 09 09 09 20 2a 20 20 40 llator}.... * @
89e50 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
89e60 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 61 this._ca
89e70 72 72 69 65 72 20 3d 20 6e 65 77 20 54 6f 6e 65 rrier = new Tone
89e80 2e 4f 73 63 69 6c 6c 61 74 6f 72 28 6f 70 74 69 .Oscillator(opti
89e90 6f 6e 73 2e 66 72 65 71 75 65 6e 63 79 2c 20 6f ons.frequency, o
89ea0 70 74 69 6f 6e 73 2e 74 79 70 65 29 3b 0a 09 20 ptions.type);..
89eb0 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
89ec0 20 20 54 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 The oscillator
89ed0 27 73 20 66 72 65 71 75 65 6e 63 79 0a 09 09 09 's frequency....
89ee0 20 2a 20 20 40 74 79 70 65 20 7b 46 72 65 71 75 * @type {Frequ
89ef0 65 6e 63 79 7d 0a 09 09 09 20 2a 20 20 40 73 69 ency}.... * @si
89f00 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 gnal.... */..
89f10 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 this.freque
89f20 6e 63 79 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 ncy = new Tone.S
89f30 69 67 6e 61 6c 28 6f 70 74 69 6f 6e 73 2e 66 72 ignal(options.fr
89f40 65 71 75 65 6e 63 79 2c 20 54 6f 6e 65 2e 54 79 equency, Tone.Ty
89f50 70 65 2e 46 72 65 71 75 65 6e 63 79 29 3b 0a 09 pe.Frequency);..
89f60 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
89f70 2a 20 20 54 68 65 20 64 65 74 75 6e 65 20 63 6f * The detune co
89f80 6e 74 72 6f 6c 20 73 69 67 6e 61 6c 2e 0a 09 09 ntrol signal....
89f90 09 20 2a 20 20 40 74 79 70 65 20 7b 43 65 6e 74 . * @type {Cent
89fa0 73 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 s}.... * @signa
89fb0 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 l.... */..
89fc0 20 20 74 68 69 73 2e 64 65 74 75 6e 65 20 3d 20 this.detune =
89fd0 74 68 69 73 2e 5f 63 61 72 72 69 65 72 2e 64 65 this._carrier.de
89fe0 74 75 6e 65 3b 0a 09 20 20 20 20 20 20 20 20 74 tune;.. t
89ff0 68 69 73 2e 64 65 74 75 6e 65 2e 76 61 6c 75 65 his.detune.value
8a000 20 3d 20 6f 70 74 69 6f 6e 73 2e 64 65 74 75 6e = options.detun
8a010 65 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a e;.. /**.
8a020 09 09 09 20 2a 20 20 54 68 65 20 6d 6f 64 75 6c ... * The modul
8a030 61 74 69 6f 6e 20 69 6e 64 65 78 20 77 68 69 63 ation index whic
8a040 68 20 69 73 20 69 6e 20 65 73 73 65 6e 63 65 20 h is in essence
8a050 74 68 65 20 64 65 70 74 68 20 6f 72 20 61 6d 6f the depth or amo
8a060 75 6e 74 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c unt of the modul
8a070 61 74 69 6f 6e 2e 20 49 6e 20 6f 74 68 65 72 20 ation. In other
8a080 74 65 72 6d 73 20 69 74 20 69 73 20 74 68 65 20 terms it is the
8a090 0a 09 09 09 20 2a 20 20 72 61 74 69 6f 20 6f 66 .... * ratio of
8a0a0 20 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 6f the frequency o
8a0b0 66 20 74 68 65 20 6d 6f 64 75 6c 61 74 69 6e 67 f the modulating
8a0c0 20 73 69 67 6e 61 6c 20 28 6d 66 29 20 74 6f 20 signal (mf) to
8a0d0 74 68 65 20 61 6d 70 6c 69 74 75 64 65 20 6f 66 the amplitude of
8a0e0 20 74 68 65 20 0a 09 09 09 20 2a 20 20 6d 6f 64 the .... * mod
8a0f0 75 6c 61 74 69 6e 67 20 73 69 67 6e 61 6c 20 28 ulating signal (
8a100 6d 61 29 20 2d 2d 20 61 73 20 69 6e 20 6d 61 2f ma) -- as in ma/
8a110 6d 66 2e 20 0a 09 09 09 20 2a 09 40 74 79 70 65 mf. .... *.@type
8a120 20 7b 50 6f 73 69 74 69 76 65 7d 0a 09 09 09 20 {Positive}....
8a130 2a 09 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f *.@signal.... */
8a140 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d .. this.m
8a150 6f 64 75 6c 61 74 69 6f 6e 49 6e 64 65 78 20 3d odulationIndex =
8a160 20 6e 65 77 20 54 6f 6e 65 2e 4d 75 6c 74 69 70 new Tone.Multip
8a170 6c 79 28 6f 70 74 69 6f 6e 73 2e 6d 6f 64 75 6c ly(options.modul
8a180 61 74 69 6f 6e 49 6e 64 65 78 29 3b 0a 09 20 20 ationIndex);..
8a190 20 20 20 20 20 20 74 68 69 73 2e 6d 6f 64 75 6c this.modul
8a1a0 61 74 69 6f 6e 49 6e 64 65 78 2e 75 6e 69 74 73 ationIndex.units
8a1b0 20 3d 20 54 6f 6e 65 2e 54 79 70 65 2e 50 6f 73 = Tone.Type.Pos
8a1c0 69 74 69 76 65 3b 0a 09 20 20 20 20 20 20 20 20 itive;..
8a1d0 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 6d /**.... * The m
8a1e0 6f 64 75 6c 61 74 69 6e 67 20 6f 73 63 69 6c 6c odulating oscill
8a1f0 61 74 6f 72 0a 09 09 09 20 2a 20 20 40 74 79 70 ator.... * @typ
8a200 65 20 20 7b 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 e {Tone.Oscilla
8a210 74 6f 72 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 tor}.... * @pri
8a220 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
8a230 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 6c this._modul
8a240 61 74 6f 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e ator = new Tone.
8a250 4f 73 63 69 6c 6c 61 74 6f 72 28 6f 70 74 69 6f Oscillator(optio
8a260 6e 73 2e 66 72 65 71 75 65 6e 63 79 2c 20 6f 70 ns.frequency, op
8a270 74 69 6f 6e 73 2e 6d 6f 64 75 6c 61 74 69 6f 6e tions.modulation
8a280 54 79 70 65 29 3b 0a 09 20 20 20 20 20 20 20 20 Type);..
8a290 2f 2a 2a 0a 09 09 09 20 2a 20 20 48 61 72 6d 6f /**.... * Harmo
8a2a0 6e 69 63 69 74 79 20 69 73 20 74 68 65 20 66 72 nicity is the fr
8a2b0 65 71 75 65 6e 63 79 20 72 61 74 69 6f 20 62 65 equency ratio be
8a2c0 74 77 65 65 6e 20 74 68 65 20 63 61 72 72 69 65 tween the carrie
8a2d0 72 20 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c 61 r and the modula
8a2e0 74 6f 72 20 6f 73 63 69 6c 6c 61 74 6f 72 73 2e tor oscillators.
8a2f0 20 0a 09 09 09 20 2a 20 20 41 20 68 61 72 6d 6f .... * A harmo
8a300 6e 69 63 69 74 79 20 6f 66 20 31 20 67 69 76 65 nicity of 1 give
8a310 73 20 62 6f 74 68 20 6f 73 63 69 6c 6c 61 74 6f s both oscillato
8a320 72 73 20 74 68 65 20 73 61 6d 65 20 66 72 65 71 rs the same freq
8a330 75 65 6e 63 79 2e 20 0a 09 09 09 20 2a 20 20 48 uency. .... * H
8a340 61 72 6d 6f 6e 69 63 69 74 79 20 3d 20 32 20 6d armonicity = 2 m
8a350 65 61 6e 73 20 61 20 63 68 61 6e 67 65 20 6f 66 eans a change of
8a360 20 61 6e 20 6f 63 74 61 76 65 2e 20 0a 09 09 09 an octave. ....
8a370 20 2a 20 20 40 74 79 70 65 20 7b 50 6f 73 69 74 * @type {Posit
8a380 69 76 65 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 ive}.... * @sig
8a390 6e 61 6c 0a 09 09 09 20 2a 20 20 40 65 78 61 6d nal.... * @exam
8a3a0 70 6c 65 0a 09 09 09 20 2a 20 2f 2f 70 69 74 63 ple.... * //pitc
8a3b0 68 20 74 68 65 20 6d 6f 64 75 6c 61 74 6f 72 20 h the modulator
8a3c0 61 6e 20 6f 63 74 61 76 65 20 62 65 6c 6f 77 20 an octave below
8a3d0 63 61 72 72 69 65 72 0a 09 09 09 20 2a 20 73 79 carrier.... * sy
8a3e0 6e 74 68 2e 68 61 72 6d 6f 6e 69 63 69 74 79 2e nth.harmonicity.
8a3f0 76 61 6c 75 65 20 3d 20 30 2e 35 3b 0a 09 09 09 value = 0.5;....
8a400 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
8a410 73 2e 68 61 72 6d 6f 6e 69 63 69 74 79 20 3d 20 s.harmonicity =
8a420 6e 65 77 20 54 6f 6e 65 2e 4d 75 6c 74 69 70 6c new Tone.Multipl
8a430 79 28 6f 70 74 69 6f 6e 73 2e 68 61 72 6d 6f 6e y(options.harmon
8a440 69 63 69 74 79 29 3b 0a 09 20 20 20 20 20 20 20 icity);..
8a450 20 74 68 69 73 2e 68 61 72 6d 6f 6e 69 63 69 74 this.harmonicit
8a460 79 2e 75 6e 69 74 73 20 3d 20 54 6f 6e 65 2e 54 y.units = Tone.T
8a470 79 70 65 2e 50 6f 73 69 74 69 76 65 3b 0a 09 20 ype.Positive;..
8a480 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
8a490 20 20 74 68 65 20 6e 6f 64 65 20 77 68 65 72 65 the node where
8a4a0 20 74 68 65 20 6d 6f 64 75 6c 61 74 69 6f 6e 20 the modulation
8a4b0 68 61 70 70 65 6e 73 0a 09 09 09 20 2a 20 20 40 happens.... * @
8a4c0 74 79 70 65 20 7b 54 6f 6e 65 2e 47 61 69 6e 7d type {Tone.Gain}
8a4d0 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
8a4e0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
8a4f0 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 69 6f this._modulatio
8a500 6e 4e 6f 64 65 20 3d 20 6e 65 77 20 54 6f 6e 65 nNode = new Tone
8a510 2e 47 61 69 6e 28 30 29 3b 0a 09 20 20 20 20 20 .Gain(0);..
8a520 20 20 20 2f 2f 63 6f 6e 6e 65 63 74 69 6f 6e 73 //connections
8a530 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 .. this.f
8a540 72 65 71 75 65 6e 63 79 2e 63 6f 6e 6e 65 63 74 requency.connect
8a550 28 74 68 69 73 2e 5f 63 61 72 72 69 65 72 2e 66 (this._carrier.f
8a560 72 65 71 75 65 6e 63 79 29 3b 0a 09 20 20 20 20 requency);..
8a570 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 6e this.frequen
8a580 63 79 2e 63 68 61 69 6e 28 74 68 69 73 2e 68 61 cy.chain(this.ha
8a590 72 6d 6f 6e 69 63 69 74 79 2c 20 74 68 69 73 2e rmonicity, this.
8a5a0 5f 6d 6f 64 75 6c 61 74 6f 72 2e 66 72 65 71 75 _modulator.frequ
8a5b0 65 6e 63 79 29 3b 0a 09 20 20 20 20 20 20 20 20 ency);..
8a5c0 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 2e 63 this.frequency.c
8a5d0 68 61 69 6e 28 74 68 69 73 2e 6d 6f 64 75 6c 61 hain(this.modula
8a5e0 74 69 6f 6e 49 6e 64 65 78 2c 20 74 68 69 73 2e tionIndex, this.
8a5f0 5f 6d 6f 64 75 6c 61 74 69 6f 6e 4e 6f 64 65 29 _modulationNode)
8a600 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
8a610 5f 6d 6f 64 75 6c 61 74 6f 72 2e 63 6f 6e 6e 65 _modulator.conne
8a620 63 74 28 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 ct(this._modulat
8a630 69 6f 6e 4e 6f 64 65 2e 67 61 69 6e 29 3b 0a 09 ionNode.gain);..
8a640 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f this._mo
8a650 64 75 6c 61 74 69 6f 6e 4e 6f 64 65 2e 63 6f 6e dulationNode.con
8a660 6e 65 63 74 28 74 68 69 73 2e 5f 63 61 72 72 69 nect(this._carri
8a670 65 72 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a 09 er.frequency);..
8a680 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 61 this._ca
8a690 72 72 69 65 72 2e 63 6f 6e 6e 65 63 74 28 74 68 rrier.connect(th
8a6a0 69 73 2e 6f 75 74 70 75 74 29 3b 0a 09 20 20 20 is.output);..
8a6b0 20 20 20 20 20 74 68 69 73 2e 64 65 74 75 6e 65 this.detune
8a6c0 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 6d .connect(this._m
8a6d0 6f 64 75 6c 61 74 6f 72 2e 64 65 74 75 6e 65 29 odulator.detune)
8a6e0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
8a6f0 70 68 61 73 65 20 3d 20 6f 70 74 69 6f 6e 73 2e phase = options.
8a700 70 68 61 73 65 3b 0a 09 20 20 20 20 20 20 20 20 phase;..
8a710 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 5b this._readOnly([
8a720 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6d .. 'm
8a730 6f 64 75 6c 61 74 69 6f 6e 49 6e 64 65 78 27 2c odulationIndex',
8a740 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 66 .. 'f
8a750 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 requency',..
8a760 20 20 20 20 20 20 20 20 27 64 65 74 75 6e 65 27 'detune'
8a770 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
8a780 68 61 72 6d 6f 6e 69 63 69 74 79 27 0a 09 20 20 harmonicity'..
8a790 20 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 7d ]);.. }
8a7a0 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 ;.. Tone.exte
8a7b0 6e 64 28 54 6f 6e 65 2e 46 4d 4f 73 63 69 6c 6c nd(Tone.FMOscill
8a7c0 61 74 6f 72 2c 20 54 6f 6e 65 2e 4f 73 63 69 6c ator, Tone.Oscil
8a7d0 6c 61 74 6f 72 29 3b 0a 09 20 20 20 20 2f 2a 2a lator);.. /**
8a7e0 0a 09 09 20 2a 20 20 64 65 66 61 75 6c 74 20 76 ... * default v
8a7f0 61 6c 75 65 73 0a 09 09 20 2a 20 20 40 73 74 61 alues... * @sta
8a800 74 69 63 0a 09 09 20 2a 20 20 40 74 79 70 65 20 tic... * @type
8a810 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 20 20 40 {Object}... * @
8a820 63 6f 6e 73 74 0a 09 09 20 2a 2f 0a 09 20 20 20 const... */..
8a830 20 54 6f 6e 65 2e 46 4d 4f 73 63 69 6c 6c 61 74 Tone.FMOscillat
8a840 6f 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a or.defaults = {.
8a850 09 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 . 'freque
8a860 6e 63 79 27 3a 20 34 34 30 2c 0a 09 20 20 20 20 ncy': 440,..
8a870 20 20 20 20 27 64 65 74 75 6e 65 27 3a 20 30 2c 'detune': 0,
8a880 0a 09 20 20 20 20 20 20 20 20 27 70 68 61 73 65 .. 'phase
8a890 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 ': 0,.. '
8a8a0 6d 6f 64 75 6c 61 74 69 6f 6e 49 6e 64 65 78 27 modulationIndex'
8a8b0 3a 20 32 2c 0a 09 20 20 20 20 20 20 20 20 27 6d : 2,.. 'm
8a8c0 6f 64 75 6c 61 74 69 6f 6e 54 79 70 65 27 3a 20 odulationType':
8a8d0 27 73 71 75 61 72 65 27 2c 0a 09 20 20 20 20 20 'square',..
8a8e0 20 20 20 27 68 61 72 6d 6f 6e 69 63 69 74 79 27 'harmonicity'
8a8f0 3a 20 31 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 : 1.. };..
8a900 20 2f 2a 2a 0a 09 09 20 2a 20 20 73 74 61 72 74 /**... * start
8a910 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 0a the oscillator.
8a920 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 .. * @param {T
8a930 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d 0a ime} [time=now].
8a940 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
8a950 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 . */.. Tone.F
8a960 4d 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 MOscillator.prot
8a970 6f 74 79 70 65 2e 5f 73 74 61 72 74 20 3d 20 66 otype._start = f
8a980 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 7b unction (time) {
8a990 0a 09 20 20 20 20 20 20 20 20 74 69 6d 65 20 3d .. time =
8a9a0 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 this.toSeconds(
8a9b0 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 time);..
8a9c0 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e this._modulator.
8a9d0 73 74 61 72 74 28 74 69 6d 65 29 3b 0a 09 20 20 start(time);..
8a9e0 20 20 20 20 20 20 74 68 69 73 2e 5f 63 61 72 72 this._carr
8a9f0 69 65 72 2e 73 74 61 72 74 28 74 69 6d 65 29 3b ier.start(time);
8aa00 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
8aa10 2a 0a 09 09 20 2a 20 20 73 74 6f 70 20 74 68 65 *... * stop the
8aa20 20 6f 73 63 69 6c 6c 61 74 6f 72 0a 09 09 20 2a oscillator... *
8aa30 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d @param {Time}
8aa40 20 74 69 6d 65 20 28 6f 70 74 69 6f 6e 61 6c 29 time (optional)
8aa50 20 74 69 6d 69 6e 67 20 70 61 72 61 6d 65 74 65 timing paramete
8aa60 72 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 r... * @private
8aa70 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
8aa80 2e 46 4d 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 .FMOscillator.pr
8aa90 6f 74 6f 74 79 70 65 2e 5f 73 74 6f 70 20 3d 20 ototype._stop =
8aaa0 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 function (time)
8aab0 7b 0a 09 20 20 20 20 20 20 20 20 74 69 6d 65 20 {.. time
8aac0 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 = this.toSeconds
8aad0 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 (time);..
8aae0 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 this._modulator
8aaf0 2e 73 74 6f 70 28 74 69 6d 65 29 3b 0a 09 20 20 .stop(time);..
8ab00 20 20 20 20 20 20 74 68 69 73 2e 5f 63 61 72 72 this._carr
8ab10 69 65 72 2e 73 74 6f 70 28 74 69 6d 65 29 3b 0a ier.stop(time);.
8ab20 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
8ab30 0a 09 09 20 2a 20 54 68 65 20 74 79 70 65 20 6f ... * The type o
8ab40 66 20 74 68 65 20 63 61 72 72 69 65 72 20 6f 73 f the carrier os
8ab50 63 69 6c 6c 61 74 6f 72 0a 09 09 20 2a 20 40 6d cillator... * @m
8ab60 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 46 4d 4f emberOf Tone.FMO
8ab70 73 63 69 6c 6c 61 74 6f 72 23 0a 09 09 20 2a 20 scillator#... *
8ab80 40 74 79 70 65 20 7b 73 74 72 69 6e 67 7d 0a 09 @type {string}..
8ab90 09 20 2a 20 40 6e 61 6d 65 20 74 79 70 65 0a 09 . * @name type..
8aba0 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
8abb0 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
8abc0 54 6f 6e 65 2e 46 4d 4f 73 63 69 6c 6c 61 74 6f Tone.FMOscillato
8abd0 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 74 79 r.prototype, 'ty
8abe0 70 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 pe', {..
8abf0 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 get: function ()
8ac00 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
8ac10 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 63 61 72 return this._car
8ac20 72 69 65 72 2e 74 79 70 65 3b 0a 09 20 20 20 20 rier.type;..
8ac30 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
8ac40 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 74 set: function (t
8ac50 79 70 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ype) {..
8ac60 20 20 20 20 74 68 69 73 2e 5f 63 61 72 72 69 65 this._carrie
8ac70 72 2e 74 79 70 65 20 3d 20 74 79 70 65 3b 0a 09 r.type = type;..
8ac80 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
8ac90 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
8aca0 20 54 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 The type of the
8acb0 20 6d 6f 64 75 6c 61 74 6f 72 20 6f 73 63 69 6c modulator oscil
8acc0 6c 61 74 6f 72 0a 09 09 20 2a 20 40 6d 65 6d 62 lator... * @memb
8acd0 65 72 4f 66 20 54 6f 6e 65 2e 46 4d 4f 73 63 69 erOf Tone.FMOsci
8ace0 6c 6c 61 74 6f 72 23 0a 09 09 20 2a 20 40 74 79 llator#... * @ty
8acf0 70 65 20 7b 53 74 72 69 6e 67 7d 0a 09 09 20 2a pe {String}... *
8ad00 20 40 6e 61 6d 65 20 6d 6f 64 75 6c 61 74 69 6f @name modulatio
8ad10 6e 54 79 70 65 0a 09 09 20 2a 2f 0a 09 20 20 20 nType... */..
8ad20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
8ad30 6f 70 65 72 74 79 28 54 6f 6e 65 2e 46 4d 4f 73 operty(Tone.FMOs
8ad40 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 79 cillator.prototy
8ad50 70 65 2c 20 27 6d 6f 64 75 6c 61 74 69 6f 6e 54 pe, 'modulationT
8ad60 79 70 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 ype', {..
8ad70 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
8ad80 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
8ad90 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6d 6f return this._mo
8ada0 64 75 6c 61 74 6f 72 2e 74 79 70 65 3b 0a 09 20 dulator.type;..
8adb0 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 },..
8adc0 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e set: function
8add0 20 28 74 79 70 65 29 20 7b 0a 09 20 20 20 20 20 (type) {..
8ade0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 this._mod
8adf0 75 6c 61 74 6f 72 2e 74 79 70 65 20 3d 20 74 79 ulator.type = ty
8ae00 70 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 pe;.. }..
8ae10 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
8ae20 0a 09 09 20 2a 20 54 68 65 20 70 68 61 73 65 20 ... * The phase
8ae30 6f 66 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f of the oscillato
8ae40 72 20 69 6e 20 64 65 67 72 65 65 73 2e 0a 09 09 r in degrees....
8ae50 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
8ae60 65 2e 46 4d 4f 73 63 69 6c 6c 61 74 6f 72 23 0a e.FMOscillator#.
8ae70 09 09 20 2a 20 40 74 79 70 65 20 7b 6e 75 6d 62 .. * @type {numb
8ae80 65 72 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 70 er}... * @name p
8ae90 68 61 73 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 hase... */..
8aea0 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
8aeb0 70 65 72 74 79 28 54 6f 6e 65 2e 46 4d 4f 73 63 perty(Tone.FMOsc
8aec0 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 illator.prototyp
8aed0 65 2c 20 27 70 68 61 73 65 27 2c 20 7b 0a 09 20 e, 'phase', {..
8aee0 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
8aef0 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
8af00 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
8af10 69 73 2e 5f 63 61 72 72 69 65 72 2e 70 68 61 73 is._carrier.phas
8af20 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 e;.. },..
8af30 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e set: fun
8af40 63 74 69 6f 6e 20 28 70 68 61 73 65 29 20 7b 0a ction (phase) {.
8af50 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
8af60 73 2e 5f 63 61 72 72 69 65 72 2e 70 68 61 73 65 s._carrier.phase
8af70 20 3d 20 70 68 61 73 65 3b 0a 09 20 20 20 20 20 = phase;..
8af80 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 this._mod
8af90 75 6c 61 74 6f 72 2e 70 68 61 73 65 20 3d 20 70 ulator.phase = p
8afa0 68 61 73 65 3b 0a 09 20 20 20 20 20 20 20 20 7d hase;.. }
8afb0 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f .. });.. /
8afc0 2a 2a 0a 09 09 20 2a 20 54 68 65 20 70 61 72 74 **... * The part
8afd0 69 61 6c 73 20 6f 66 20 74 68 65 20 63 61 72 72 ials of the carr
8afe0 69 65 72 20 77 61 76 65 66 6f 72 6d 2e 20 41 20 ier waveform. A
8aff0 70 61 72 74 69 61 6c 20 72 65 70 72 65 73 65 6e partial represen
8b000 74 73 20 0a 09 09 20 2a 20 74 68 65 20 61 6d 70 ts ... * the amp
8b010 6c 69 74 75 64 65 20 61 74 20 61 20 68 61 72 6d litude at a harm
8b020 6f 6e 69 63 2e 20 54 68 65 20 66 69 72 73 74 20 onic. The first
8b030 68 61 72 6d 6f 6e 69 63 20 69 73 20 74 68 65 20 harmonic is the
8b040 0a 09 09 20 2a 20 66 75 6e 64 61 6d 65 6e 74 61 ... * fundamenta
8b050 6c 20 66 72 65 71 75 65 6e 63 79 2c 20 74 68 65 l frequency, the
8b060 20 73 65 63 6f 6e 64 20 69 73 20 74 68 65 20 6f second is the o
8b070 63 74 61 76 65 20 61 6e 64 20 73 6f 20 6f 6e 0a ctave and so on.
8b080 09 09 20 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 .. * following t
8b090 68 65 20 68 61 72 6d 6f 6e 69 63 20 73 65 72 69 he harmonic seri
8b0a0 65 73 2e 20 0a 09 09 20 2a 20 53 65 74 74 69 6e es. ... * Settin
8b0b0 67 20 74 68 69 73 20 76 61 6c 75 65 20 77 69 6c g this value wil
8b0c0 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 l automatically
8b0d0 73 65 74 20 74 68 65 20 74 79 70 65 20 74 6f 20 set the type to
8b0e0 22 63 75 73 74 6f 6d 22 2e 20 0a 09 09 20 2a 20 "custom". ... *
8b0f0 54 68 65 20 76 61 6c 75 65 20 69 73 20 61 6e 20 The value is an
8b100 65 6d 70 74 79 20 61 72 72 61 79 20 77 68 65 6e empty array when
8b110 20 74 68 65 20 74 79 70 65 20 69 73 20 6e 6f 74 the type is not
8b120 20 22 63 75 73 74 6f 6d 22 2e 20 0a 09 09 20 2a "custom". ... *
8b130 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e @memberOf Tone.
8b140 46 4d 4f 73 63 69 6c 6c 61 74 6f 72 23 0a 09 09 FMOscillator#...
8b150 20 2a 20 40 74 79 70 65 20 7b 41 72 72 61 79 7d * @type {Array}
8b160 0a 09 09 20 2a 20 40 6e 61 6d 65 20 70 61 72 74 ... * @name part
8b170 69 61 6c 73 0a 09 09 20 2a 20 40 65 78 61 6d 70 ials... * @examp
8b180 6c 65 0a 09 09 20 2a 20 6f 73 63 2e 70 61 72 74 le... * osc.part
8b190 69 61 6c 73 20 3d 20 5b 31 2c 20 30 2e 32 2c 20 ials = [1, 0.2,
8b1a0 30 2e 30 31 5d 3b 0a 09 09 20 2a 2f 0a 09 20 20 0.01];... */..
8b1b0 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
8b1c0 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 46 4d 4f roperty(Tone.FMO
8b1d0 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 scillator.protot
8b1e0 79 70 65 2c 20 27 70 61 72 74 69 61 6c 73 27 2c ype, 'partials',
8b1f0 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
8b200 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
8b210 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
8b220 72 6e 20 74 68 69 73 2e 5f 63 61 72 72 69 65 72 rn this._carrier
8b230 2e 70 61 72 74 69 61 6c 73 3b 0a 09 20 20 20 20 .partials;..
8b240 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
8b250 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 70 set: function (p
8b260 61 72 74 69 61 6c 73 29 20 7b 0a 09 20 20 20 20 artials) {..
8b270 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 61 this._ca
8b280 72 72 69 65 72 2e 70 61 72 74 69 61 6c 73 20 3d rrier.partials =
8b290 20 70 61 72 74 69 61 6c 73 3b 0a 09 20 20 20 20 partials;..
8b2a0 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
8b2b0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c /**... * Cl
8b2c0 65 61 6e 20 75 70 2e 0a 09 09 20 2a 20 20 40 72 ean up.... * @r
8b2d0 65 74 75 72 6e 20 7b 54 6f 6e 65 2e 46 4d 4f 73 eturn {Tone.FMOs
8b2e0 63 69 6c 6c 61 74 6f 72 7d 20 74 68 69 73 0a 09 cillator} this..
8b2f0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 . */.. Tone.F
8b300 4d 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 MOscillator.prot
8b310 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 otype.dispose =
8b320 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
8b330 20 20 20 20 20 20 20 54 6f 6e 65 2e 53 6f 75 72 Tone.Sour
8b340 63 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 ce.prototype.dis
8b350 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b pose.call(this);
8b360 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
8b370 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 20 writable([..
8b380 20 20 20 20 20 20 20 20 27 6d 6f 64 75 6c 61 74 'modulat
8b390 69 6f 6e 49 6e 64 65 78 27 2c 0a 09 20 20 20 20 ionIndex',..
8b3a0 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 'frequen
8b3b0 63 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 cy',..
8b3c0 20 20 27 64 65 74 75 6e 65 27 2c 0a 09 20 20 20 'detune',..
8b3d0 20 20 20 20 20 20 20 20 20 27 68 61 72 6d 6f 6e 'harmon
8b3e0 69 63 69 74 79 27 0a 09 20 20 20 20 20 20 20 20 icity'..
8b3f0 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ]);.. thi
8b400 73 2e 66 72 65 71 75 65 6e 63 79 2e 64 69 73 70 s.frequency.disp
8b410 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
8b420 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 20 3d this.frequency =
8b430 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
8b440 74 68 69 73 2e 64 65 74 75 6e 65 20 3d 20 6e 75 this.detune = nu
8b450 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
8b460 73 2e 68 61 72 6d 6f 6e 69 63 69 74 79 2e 64 69 s.harmonicity.di
8b470 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
8b480 20 20 74 68 69 73 2e 68 61 72 6d 6f 6e 69 63 69 this.harmonici
8b490 74 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 ty = null;..
8b4a0 20 20 20 20 74 68 69 73 2e 5f 63 61 72 72 69 65 this._carrie
8b4b0 72 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 r.dispose();..
8b4c0 20 20 20 20 20 20 74 68 69 73 2e 5f 63 61 72 72 this._carr
8b4d0 69 65 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ier = null;..
8b4e0 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 6c this._modul
8b4f0 61 74 6f 72 2e 64 69 73 70 6f 73 65 28 29 3b 0a ator.dispose();.
8b500 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d . this._m
8b510 6f 64 75 6c 61 74 6f 72 20 3d 20 6e 75 6c 6c 3b odulator = null;
8b520 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
8b530 6d 6f 64 75 6c 61 74 69 6f 6e 4e 6f 64 65 2e 64 modulationNode.d
8b540 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
8b550 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 this._modulat
8b560 69 6f 6e 4e 6f 64 65 20 3d 20 6e 75 6c 6c 3b 0a ionNode = null;.
8b570 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d 6f . this.mo
8b580 64 75 6c 61 74 69 6f 6e 49 6e 64 65 78 2e 64 69 dulationIndex.di
8b590 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
8b5a0 20 20 74 68 69 73 2e 6d 6f 64 75 6c 61 74 69 6f this.modulatio
8b5b0 6e 49 6e 64 65 78 20 3d 20 6e 75 6c 6c 3b 0a 09 nIndex = null;..
8b5c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
8b5d0 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
8b5e0 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 46 4d return Tone.FM
8b5f0 4f 73 63 69 6c 6c 61 74 6f 72 3b 0a 09 7d 29 3b Oscillator;..});
8b600 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f ..Module(functio
8b610 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 n (Tone) {..
8b620 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
8b630 40 63 6c 61 73 73 20 54 6f 6e 65 2e 41 4d 4f 73 @class Tone.AMOs
8b640 63 69 6c 6c 61 74 6f 72 20 0a 09 09 20 2a 0a 09 cillator ... *..
8b650 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 . * @extends {T
8b660 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 7d 0a one.Oscillator}.
8b670 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 .. * @construct
8b680 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 or... * @param
8b690 7b 46 72 65 71 75 65 6e 63 79 7d 20 66 72 65 71 {Frequency} freq
8b6a0 75 65 6e 63 79 20 54 68 65 20 73 74 61 72 74 69 uency The starti
8b6b0 6e 67 20 66 72 65 71 75 65 6e 63 79 20 6f 66 20 ng frequency of
8b6c0 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 2e 20 the oscillator.
8b6d0 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 53 ... * @param {S
8b6e0 74 72 69 6e 67 7d 20 74 79 70 65 20 54 68 65 20 tring} type The
8b6f0 74 79 70 65 20 6f 66 20 74 68 65 20 63 61 72 72 type of the carr
8b700 69 65 72 20 6f 73 63 69 6c 6c 61 74 6f 72 2e 0a ier oscillator..
8b710 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 53 74 .. * @param {St
8b720 72 69 6e 67 7d 20 6d 6f 64 75 6c 61 74 69 6f 6e ring} modulation
8b730 54 79 70 65 20 54 68 65 20 74 79 70 65 20 6f 66 Type The type of
8b740 20 74 68 65 20 6d 6f 64 75 6c 61 74 6f 72 20 6f the modulator o
8b750 73 63 69 6c 6c 61 74 6f 72 2e 0a 09 09 20 2a 20 scillator.... *
8b760 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f @example... * /
8b770 2f 61 20 73 69 6e 65 20 6f 73 63 69 6c 6c 61 74 /a sine oscillat
8b780 6f 72 20 66 72 65 71 75 65 6e 63 79 2d 6d 6f 64 or frequency-mod
8b790 75 6c 61 74 65 64 20 62 79 20 61 20 73 71 75 61 ulated by a squa
8b7a0 72 65 20 77 61 76 65 0a 09 09 20 2a 20 76 61 72 re wave... * var
8b7b0 20 66 6d 4f 73 63 20 3d 20 6e 65 77 20 54 6f 6e fmOsc = new Ton
8b7c0 65 2e 41 4d 4f 73 63 69 6c 6c 61 74 6f 72 28 22 e.AMOscillator("
8b7d0 41 62 33 22 2c 20 22 73 69 6e 65 22 2c 20 22 73 Ab3", "sine", "s
8b7e0 71 75 61 72 65 22 29 2e 74 6f 4d 61 73 74 65 72 quare").toMaster
8b7f0 28 29 2e 73 74 61 72 74 28 29 3b 0a 09 09 20 2a ().start();... *
8b800 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 41 4d 4f 73 /.. Tone.AMOs
8b810 63 69 6c 6c 61 74 6f 72 20 3d 20 66 75 6e 63 74 cillator = funct
8b820 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
8b830 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 var options =
8b840 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 this.optionsObje
8b850 63 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a ct(arguments, [.
8b860 09 20 20 20 20 20 20 20 20 20 20 20 20 27 66 72 . 'fr
8b870 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 equency',..
8b880 20 20 20 20 20 20 20 27 74 79 70 65 27 2c 0a 09 'type',..
8b890 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 6f 64 'mod
8b8a0 75 6c 61 74 69 6f 6e 54 79 70 65 27 0a 09 20 20 ulationType'..
8b8b0 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 41 4d ], Tone.AM
8b8c0 4f 73 63 69 6c 6c 61 74 6f 72 2e 64 65 66 61 75 Oscillator.defau
8b8d0 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 54 lts);.. T
8b8e0 6f 6e 65 2e 53 6f 75 72 63 65 2e 63 61 6c 6c 28 one.Source.call(
8b8f0 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a this, options);.
8b900 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
8b910 20 2a 20 20 54 68 65 20 63 61 72 72 69 65 72 20 * The carrier
8b920 6f 73 63 69 6c 6c 61 74 6f 72 0a 09 09 09 20 2a oscillator.... *
8b930 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4f 73 @type {Tone.Os
8b940 63 69 6c 6c 61 74 6f 72 7d 0a 09 09 09 20 2a 20 cillator}.... *
8b950 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
8b960 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
8b970 63 61 72 72 69 65 72 20 3d 20 6e 65 77 20 54 6f carrier = new To
8b980 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 28 6f 70 ne.Oscillator(op
8b990 74 69 6f 6e 73 2e 66 72 65 71 75 65 6e 63 79 2c tions.frequency,
8b9a0 20 6f 70 74 69 6f 6e 73 2e 74 79 70 65 29 3b 0a options.type);.
8b9b0 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
8b9c0 20 2a 20 20 54 68 65 20 6f 73 63 69 6c 6c 61 74 * The oscillat
8b9d0 6f 72 27 73 20 66 72 65 71 75 65 6e 63 79 0a 09 or's frequency..
8b9e0 09 09 20 2a 20 20 40 74 79 70 65 20 7b 46 72 65 .. * @type {Fre
8b9f0 71 75 65 6e 63 79 7d 0a 09 09 09 20 2a 20 20 40 quency}.... * @
8ba00 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 signal.... */..
8ba10 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 this.freq
8ba20 75 65 6e 63 79 20 3d 20 74 68 69 73 2e 5f 63 61 uency = this._ca
8ba30 72 72 69 65 72 2e 66 72 65 71 75 65 6e 63 79 3b rrier.frequency;
8ba40 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
8ba50 09 20 2a 20 20 54 68 65 20 64 65 74 75 6e 65 20 . * The detune
8ba60 63 6f 6e 74 72 6f 6c 20 73 69 67 6e 61 6c 2e 0a control signal..
8ba70 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 43 65 ... * @type {Ce
8ba80 6e 74 73 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 nts}.... * @sig
8ba90 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 nal.... */..
8baa0 20 20 20 20 74 68 69 73 2e 64 65 74 75 6e 65 20 this.detune
8bab0 3d 20 74 68 69 73 2e 5f 63 61 72 72 69 65 72 2e = this._carrier.
8bac0 64 65 74 75 6e 65 3b 0a 09 20 20 20 20 20 20 20 detune;..
8bad0 20 74 68 69 73 2e 64 65 74 75 6e 65 2e 76 61 6c this.detune.val
8bae0 75 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 64 65 74 ue = options.det
8baf0 75 6e 65 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a une;.. /*
8bb00 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 6d 6f 64 *.... * The mod
8bb10 75 6c 61 74 69 6e 67 20 6f 73 63 69 6c 6c 61 74 ulating oscillat
8bb20 6f 72 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 or.... * @type
8bb30 20 7b 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f {Tone.Oscillato
8bb40 72 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 r}.... * @priva
8bb50 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
8bb60 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 this._modulat
8bb70 6f 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4f 73 or = new Tone.Os
8bb80 63 69 6c 6c 61 74 6f 72 28 6f 70 74 69 6f 6e 73 cillator(options
8bb90 2e 66 72 65 71 75 65 6e 63 79 2c 20 6f 70 74 69 .frequency, opti
8bba0 6f 6e 73 2e 6d 6f 64 75 6c 61 74 69 6f 6e 54 79 ons.modulationTy
8bbb0 70 65 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a pe);.. /*
8bbc0 2a 0a 09 09 09 20 2a 20 20 63 6f 6e 76 65 72 74 *.... * convert
8bbd0 20 74 68 65 20 2d 31 2c 31 20 6f 75 74 70 75 74 the -1,1 output
8bbe0 20 74 6f 20 30 2c 31 0a 09 09 09 20 2a 20 20 40 to 0,1.... * @
8bbf0 74 79 70 65 20 7b 54 6f 6e 65 2e 41 75 64 69 6f type {Tone.Audio
8bc00 54 6f 47 61 69 6e 7d 0a 09 09 09 20 2a 20 20 40 ToGain}.... * @
8bc10 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
8bc20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f this._mo
8bc30 64 75 6c 61 74 69 6f 6e 53 63 61 6c 65 20 3d 20 dulationScale =
8bc40 6e 65 77 20 54 6f 6e 65 2e 41 75 64 69 6f 54 6f new Tone.AudioTo
8bc50 47 61 69 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 Gain();..
8bc60 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 48 61 72 6d /**.... * Harm
8bc70 6f 6e 69 63 69 74 79 20 69 73 20 74 68 65 20 66 onicity is the f
8bc80 72 65 71 75 65 6e 63 79 20 72 61 74 69 6f 20 62 requency ratio b
8bc90 65 74 77 65 65 6e 20 74 68 65 20 63 61 72 72 69 etween the carri
8bca0 65 72 20 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c er and the modul
8bcb0 61 74 6f 72 20 6f 73 63 69 6c 6c 61 74 6f 72 73 ator oscillators
8bcc0 2e 20 0a 09 09 09 20 2a 20 20 41 20 68 61 72 6d . .... * A harm
8bcd0 6f 6e 69 63 69 74 79 20 6f 66 20 31 20 67 69 76 onicity of 1 giv
8bce0 65 73 20 62 6f 74 68 20 6f 73 63 69 6c 6c 61 74 es both oscillat
8bcf0 6f 72 73 20 74 68 65 20 73 61 6d 65 20 66 72 65 ors the same fre
8bd00 71 75 65 6e 63 79 2e 20 0a 09 09 09 20 2a 20 20 quency. .... *
8bd10 48 61 72 6d 6f 6e 69 63 69 74 79 20 3d 20 32 20 Harmonicity = 2
8bd20 6d 65 61 6e 73 20 61 20 63 68 61 6e 67 65 20 6f means a change o
8bd30 66 20 61 6e 20 6f 63 74 61 76 65 2e 20 0a 09 09 f an octave. ...
8bd40 09 20 2a 20 20 40 74 79 70 65 20 7b 50 6f 73 69 . * @type {Posi
8bd50 74 69 76 65 7d 0a 09 09 09 20 2a 20 20 40 73 69 tive}.... * @si
8bd60 67 6e 61 6c 0a 09 09 09 20 2a 20 20 40 65 78 61 gnal.... * @exa
8bd70 6d 70 6c 65 0a 09 09 09 20 2a 20 2f 2f 70 69 74 mple.... * //pit
8bd80 63 68 20 74 68 65 20 6d 6f 64 75 6c 61 74 6f 72 ch the modulator
8bd90 20 61 6e 20 6f 63 74 61 76 65 20 62 65 6c 6f 77 an octave below
8bda0 20 63 61 72 72 69 65 72 0a 09 09 09 20 2a 20 73 carrier.... * s
8bdb0 79 6e 74 68 2e 68 61 72 6d 6f 6e 69 63 69 74 79 ynth.harmonicity
8bdc0 2e 76 61 6c 75 65 20 3d 20 30 2e 35 3b 0a 09 09 .value = 0.5;...
8bdd0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
8bde0 69 73 2e 68 61 72 6d 6f 6e 69 63 69 74 79 20 3d is.harmonicity =
8bdf0 20 6e 65 77 20 54 6f 6e 65 2e 4d 75 6c 74 69 70 new Tone.Multip
8be00 6c 79 28 6f 70 74 69 6f 6e 73 2e 68 61 72 6d 6f ly(options.harmo
8be10 6e 69 63 69 74 79 29 3b 0a 09 20 20 20 20 20 20 nicity);..
8be20 20 20 74 68 69 73 2e 68 61 72 6d 6f 6e 69 63 69 this.harmonici
8be30 74 79 2e 75 6e 69 74 73 20 3d 20 54 6f 6e 65 2e ty.units = Tone.
8be40 54 79 70 65 2e 50 6f 73 69 74 69 76 65 3b 0a 09 Type.Positive;..
8be50 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
8be60 2a 20 20 74 68 65 20 6e 6f 64 65 20 77 68 65 72 * the node wher
8be70 65 20 74 68 65 20 6d 6f 64 75 6c 61 74 69 6f 6e e the modulation
8be80 20 68 61 70 70 65 6e 73 0a 09 09 09 20 2a 20 20 happens.... *
8be90 40 74 79 70 65 20 7b 54 6f 6e 65 2e 47 61 69 6e @type {Tone.Gain
8bea0 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
8beb0 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
8bec0 20 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 69 this._modulati
8bed0 6f 6e 4e 6f 64 65 20 3d 20 6e 65 77 20 54 6f 6e onNode = new Ton
8bee0 65 2e 47 61 69 6e 28 30 29 3b 0a 09 20 20 20 20 e.Gain(0);..
8bef0 20 20 20 20 2f 2f 63 6f 6e 6e 65 63 74 69 6f 6e //connection
8bf00 73 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e s.. this.
8bf10 66 72 65 71 75 65 6e 63 79 2e 63 68 61 69 6e 28 frequency.chain(
8bf20 74 68 69 73 2e 68 61 72 6d 6f 6e 69 63 69 74 79 this.harmonicity
8bf30 2c 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f , this._modulato
8bf40 72 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a 09 20 r.frequency);..
8bf50 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 74 75 this.detu
8bf60 6e 65 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e ne.connect(this.
8bf70 5f 6d 6f 64 75 6c 61 74 6f 72 2e 64 65 74 75 6e _modulator.detun
8bf80 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 e);.. thi
8bf90 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e 63 68 61 s._modulator.cha
8bfa0 69 6e 28 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 in(this._modulat
8bfb0 69 6f 6e 53 63 61 6c 65 2c 20 74 68 69 73 2e 5f ionScale, this._
8bfc0 6d 6f 64 75 6c 61 74 69 6f 6e 4e 6f 64 65 2e 67 modulationNode.g
8bfd0 61 69 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 74 ain);.. t
8bfe0 68 69 73 2e 5f 63 61 72 72 69 65 72 2e 63 68 61 his._carrier.cha
8bff0 69 6e 28 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 in(this._modulat
8c000 69 6f 6e 4e 6f 64 65 2c 20 74 68 69 73 2e 6f 75 ionNode, this.ou
8c010 74 70 75 74 29 3b 0a 09 20 20 20 20 20 20 20 20 tput);..
8c020 74 68 69 73 2e 70 68 61 73 65 20 3d 20 6f 70 74 this.phase = opt
8c030 69 6f 6e 73 2e 70 68 61 73 65 3b 0a 09 20 20 20 ions.phase;..
8c040 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 64 4f this._readO
8c050 6e 6c 79 28 5b 0a 09 20 20 20 20 20 20 20 20 20 nly([..
8c060 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 2c 0a 'frequency',.
8c070 09 20 20 20 20 20 20 20 20 20 20 20 20 27 64 65 . 'de
8c080 74 75 6e 65 27 2c 0a 09 20 20 20 20 20 20 20 20 tune',..
8c090 20 20 20 20 27 68 61 72 6d 6f 6e 69 63 69 74 79 'harmonicity
8c0a0 27 0a 09 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 '.. ]);..
8c0b0 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 };.. Tone
8c0c0 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 41 4d 4f .extend(Tone.AMO
8c0d0 73 63 69 6c 6c 61 74 6f 72 2c 20 54 6f 6e 65 2e scillator, Tone.
8c0e0 4f 73 63 69 6c 6c 61 74 6f 72 29 3b 0a 09 20 20 Oscillator);..
8c0f0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 64 65 66 61 /**... * defa
8c100 75 6c 74 20 76 61 6c 75 65 73 0a 09 09 20 2a 20 ult values... *
8c110 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 @static... * @
8c120 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 type {Object}...
8c130 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a 2f * @const... */
8c140 0a 09 20 20 20 20 54 6f 6e 65 2e 41 4d 4f 73 63 .. Tone.AMOsc
8c150 69 6c 6c 61 74 6f 72 2e 64 65 66 61 75 6c 74 73 illator.defaults
8c160 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 27 66 = {.. 'f
8c170 72 65 71 75 65 6e 63 79 27 3a 20 34 34 30 2c 0a requency': 440,.
8c180 09 20 20 20 20 20 20 20 20 27 64 65 74 75 6e 65 . 'detune
8c190 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 ': 0,.. '
8c1a0 70 68 61 73 65 27 3a 20 30 2c 0a 09 20 20 20 20 phase': 0,..
8c1b0 20 20 20 20 27 6d 6f 64 75 6c 61 74 69 6f 6e 54 'modulationT
8c1c0 79 70 65 27 3a 20 27 73 71 75 61 72 65 27 2c 0a ype': 'square',.
8c1d0 09 20 20 20 20 20 20 20 20 27 68 61 72 6d 6f 6e . 'harmon
8c1e0 69 63 69 74 79 27 3a 20 31 0a 09 20 20 20 20 7d icity': 1.. }
8c1f0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
8c200 20 73 74 61 72 74 20 74 68 65 20 6f 73 63 69 6c start the oscil
8c210 6c 61 74 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 lator... * @par
8c220 61 6d 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 am {Time} [time
8c230 3d 6e 6f 77 5d 0a 09 09 20 2a 20 20 40 70 72 69 =now]... * @pri
8c240 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 vate... */..
8c250 54 6f 6e 65 2e 41 4d 4f 73 63 69 6c 6c 61 74 6f Tone.AMOscillato
8c260 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 73 74 61 r.prototype._sta
8c270 72 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 rt = function (t
8c280 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ime) {..
8c290 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 time = this.toSe
8c2a0 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 20 conds(time);..
8c2b0 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 this._modu
8c2c0 6c 61 74 6f 72 2e 73 74 61 72 74 28 74 69 6d 65 lator.start(time
8c2d0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
8c2e0 2e 5f 63 61 72 72 69 65 72 2e 73 74 61 72 74 28 ._carrier.start(
8c2f0 74 69 6d 65 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 time);.. };..
8c300 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 73 74 /**... * st
8c310 6f 70 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f op the oscillato
8c320 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 r... * @param
8c330 7b 54 69 6d 65 7d 20 74 69 6d 65 20 28 6f 70 74 {Time} time (opt
8c340 69 6f 6e 61 6c 29 20 74 69 6d 69 6e 67 20 70 61 ional) timing pa
8c350 72 61 6d 65 74 65 72 0a 09 09 20 2a 20 20 40 70 rameter... * @p
8c360 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 rivate... */..
8c370 20 20 54 6f 6e 65 2e 41 4d 4f 73 63 69 6c 6c 61 Tone.AMOscilla
8c380 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 73 tor.prototype._s
8c390 74 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 top = function (
8c3a0 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 time) {..
8c3b0 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 time = this.toS
8c3c0 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 econds(time);..
8c3d0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 this._mod
8c3e0 75 6c 61 74 6f 72 2e 73 74 6f 70 28 74 69 6d 65 ulator.stop(time
8c3f0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
8c400 2e 5f 63 61 72 72 69 65 72 2e 73 74 6f 70 28 74 ._carrier.stop(t
8c410 69 6d 65 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 ime);.. };..
8c420 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 /**... * The
8c430 74 79 70 65 20 6f 66 20 74 68 65 20 63 61 72 72 type of the carr
8c440 69 65 72 20 6f 73 63 69 6c 6c 61 74 6f 72 0a 09 ier oscillator..
8c450 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f . * @memberOf To
8c460 6e 65 2e 41 4d 4f 73 63 69 6c 6c 61 74 6f 72 23 ne.AMOscillator#
8c470 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 73 74 72 ... * @type {str
8c480 69 6e 67 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 ing}... * @name
8c490 74 79 70 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 type... */..
8c4a0 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
8c4b0 70 65 72 74 79 28 54 6f 6e 65 2e 41 4d 4f 73 63 perty(Tone.AMOsc
8c4c0 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 illator.prototyp
8c4d0 65 2c 20 27 74 79 70 65 27 2c 20 7b 0a 09 20 20 e, 'type', {..
8c4e0 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
8c4f0 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
8c500 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
8c510 73 2e 5f 63 61 72 72 69 65 72 2e 74 79 70 65 3b s._carrier.type;
8c520 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
8c530 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
8c540 69 6f 6e 20 28 74 79 70 65 29 20 7b 0a 09 20 20 ion (type) {..
8c550 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
8c560 63 61 72 72 69 65 72 2e 74 79 70 65 20 3d 20 74 carrier.type = t
8c570 79 70 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a ype;.. }.
8c580 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a . });.. /*
8c590 2a 0a 09 09 20 2a 20 54 68 65 20 74 79 70 65 20 *... * The type
8c5a0 6f 66 20 74 68 65 20 6d 6f 64 75 6c 61 74 6f 72 of the modulator
8c5b0 20 6f 73 63 69 6c 6c 61 74 6f 72 0a 09 09 20 2a oscillator... *
8c5c0 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e @memberOf Tone.
8c5d0 41 4d 4f 73 63 69 6c 6c 61 74 6f 72 23 0a 09 09 AMOscillator#...
8c5e0 20 2a 20 40 74 79 70 65 20 7b 73 74 72 69 6e 67 * @type {string
8c5f0 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6d 6f 64 }... * @name mod
8c600 75 6c 61 74 69 6f 6e 54 79 70 65 0a 09 09 20 2a ulationType... *
8c610 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
8c620 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
8c630 65 2e 41 4d 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 e.AMOscillator.p
8c640 72 6f 74 6f 74 79 70 65 2c 20 27 6d 6f 64 75 6c rototype, 'modul
8c650 61 74 69 6f 6e 54 79 70 65 27 2c 20 7b 0a 09 20 ationType', {..
8c660 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
8c670 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
8c680 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
8c690 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e 74 79 is._modulator.ty
8c6a0 70 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a pe;.. },.
8c6b0 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
8c6c0 6e 63 74 69 6f 6e 20 28 74 79 70 65 29 20 7b 0a nction (type) {.
8c6d0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
8c6e0 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e 74 79 70 s._modulator.typ
8c6f0 65 20 3d 20 74 79 70 65 3b 0a 09 20 20 20 20 20 e = type;..
8c700 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
8c710 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 /**... * The
8c720 70 68 61 73 65 20 6f 66 20 74 68 65 20 6f 73 63 phase of the osc
8c730 69 6c 6c 61 74 6f 72 20 69 6e 20 64 65 67 72 65 illator in degre
8c740 65 73 2e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 es.... * @member
8c750 4f 66 20 54 6f 6e 65 2e 41 4d 4f 73 63 69 6c 6c Of Tone.AMOscill
8c760 61 74 6f 72 23 0a 09 09 20 2a 20 40 74 79 70 65 ator#... * @type
8c770 20 7b 6e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 40 {number}... * @
8c780 6e 61 6d 65 20 70 68 61 73 65 0a 09 09 20 2a 2f name phase... */
8c790 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 .. Object.def
8c7a0 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 ineProperty(Tone
8c7b0 2e 41 4d 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 .AMOscillator.pr
8c7c0 6f 74 6f 74 79 70 65 2c 20 27 70 68 61 73 65 27 ototype, 'phase'
8c7d0 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
8c7e0 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
8c7f0 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret
8c800 75 72 6e 20 74 68 69 73 2e 5f 63 61 72 72 69 65 urn this._carrie
8c810 72 2e 70 68 61 73 65 3b 0a 09 20 20 20 20 20 20 r.phase;..
8c820 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
8c830 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 70 68 61 t: function (pha
8c840 73 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 se) {..
8c850 20 20 20 74 68 69 73 2e 5f 63 61 72 72 69 65 72 this._carrier
8c860 2e 70 68 61 73 65 20 3d 20 70 68 61 73 65 3b 0a .phase = phase;.
8c870 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
8c880 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e 70 68 61 s._modulator.pha
8c890 73 65 20 3d 20 70 68 61 73 65 3b 0a 09 20 20 20 se = phase;..
8c8a0 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
8c8b0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 . /**... * Th
8c8c0 65 20 70 61 72 74 69 61 6c 73 20 6f 66 20 74 68 e partials of th
8c8d0 65 20 63 61 72 72 69 65 72 20 77 61 76 65 66 6f e carrier wavefo
8c8e0 72 6d 2e 20 41 20 70 61 72 74 69 61 6c 20 72 65 rm. A partial re
8c8f0 70 72 65 73 65 6e 74 73 20 0a 09 09 20 2a 20 74 presents ... * t
8c900 68 65 20 61 6d 70 6c 69 74 75 64 65 20 61 74 20 he amplitude at
8c910 61 20 68 61 72 6d 6f 6e 69 63 2e 20 54 68 65 20 a harmonic. The
8c920 66 69 72 73 74 20 68 61 72 6d 6f 6e 69 63 20 69 first harmonic i
8c930 73 20 74 68 65 20 0a 09 09 20 2a 20 66 75 6e 64 s the ... * fund
8c940 61 6d 65 6e 74 61 6c 20 66 72 65 71 75 65 6e 63 amental frequenc
8c950 79 2c 20 74 68 65 20 73 65 63 6f 6e 64 20 69 73 y, the second is
8c960 20 74 68 65 20 6f 63 74 61 76 65 20 61 6e 64 20 the octave and
8c970 73 6f 20 6f 6e 0a 09 09 20 2a 20 66 6f 6c 6c 6f so on... * follo
8c980 77 69 6e 67 20 74 68 65 20 68 61 72 6d 6f 6e 69 wing the harmoni
8c990 63 20 73 65 72 69 65 73 2e 20 0a 09 09 20 2a 20 c series. ... *
8c9a0 53 65 74 74 69 6e 67 20 74 68 69 73 20 76 61 6c Setting this val
8c9b0 75 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 ue will automati
8c9c0 63 61 6c 6c 79 20 73 65 74 20 74 68 65 20 74 79 cally set the ty
8c9d0 70 65 20 74 6f 20 22 63 75 73 74 6f 6d 22 2e 20 pe to "custom".
8c9e0 0a 09 09 20 2a 20 54 68 65 20 76 61 6c 75 65 20 ... * The value
8c9f0 69 73 20 61 6e 20 65 6d 70 74 79 20 61 72 72 61 is an empty arra
8ca00 79 20 77 68 65 6e 20 74 68 65 20 74 79 70 65 20 y when the type
8ca10 69 73 20 6e 6f 74 20 22 63 75 73 74 6f 6d 22 2e is not "custom".
8ca20 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
8ca30 20 54 6f 6e 65 2e 41 4d 4f 73 63 69 6c 6c 61 74 Tone.AMOscillat
8ca40 6f 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b or#... * @type {
8ca50 41 72 72 61 79 7d 0a 09 09 20 2a 20 40 6e 61 6d Array}... * @nam
8ca60 65 20 70 61 72 74 69 61 6c 73 0a 09 09 20 2a 20 e partials... *
8ca70 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 6f 73 @example... * os
8ca80 63 2e 70 61 72 74 69 61 6c 73 20 3d 20 5b 31 2c c.partials = [1,
8ca90 20 30 2e 32 2c 20 30 2e 30 31 5d 3b 0a 09 09 20 0.2, 0.01];...
8caa0 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 */.. Object.d
8cab0 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f efineProperty(To
8cac0 6e 65 2e 41 4d 4f 73 63 69 6c 6c 61 74 6f 72 2e ne.AMOscillator.
8cad0 70 72 6f 74 6f 74 79 70 65 2c 20 27 70 61 72 74 prototype, 'part
8cae0 69 61 6c 73 27 2c 20 7b 0a 09 20 20 20 20 20 20 ials', {..
8caf0 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
8cb00 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
8cb10 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 63 return this._c
8cb20 61 72 72 69 65 72 2e 70 61 72 74 69 61 6c 73 3b arrier.partials;
8cb30 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
8cb40 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
8cb50 69 6f 6e 20 28 70 61 72 74 69 61 6c 73 29 20 7b ion (partials) {
8cb60 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
8cb70 69 73 2e 5f 63 61 72 72 69 65 72 2e 70 61 72 74 is._carrier.part
8cb80 69 61 6c 73 20 3d 20 70 61 72 74 69 61 6c 73 3b ials = partials;
8cb90 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
8cba0 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
8cbb0 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a 09 09 * Clean up....
8cbc0 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 54 6f 6e * @return {Ton
8cbd0 65 2e 41 4d 4f 73 63 69 6c 6c 61 74 6f 72 7d 20 e.AMOscillator}
8cbe0 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
8cbf0 54 6f 6e 65 2e 41 4d 4f 73 63 69 6c 6c 61 74 6f Tone.AMOscillato
8cc00 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 r.prototype.disp
8cc10 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ose = function (
8cc20 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e ) {.. Ton
8cc30 65 2e 53 6f 75 72 63 65 2e 70 72 6f 74 6f 74 79 e.Source.prototy
8cc40 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 pe.dispose.call(
8cc50 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 this);..
8cc60 74 68 69 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b this._writable([
8cc70 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 66 .. 'f
8cc80 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 requency',..
8cc90 20 20 20 20 20 20 20 20 27 64 65 74 75 6e 65 27 'detune'
8cca0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
8ccb0 68 61 72 6d 6f 6e 69 63 69 74 79 27 0a 09 20 20 harmonicity'..
8ccc0 20 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 ]);..
8ccd0 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 6e 63 this.frequenc
8cce0 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 y = null;..
8ccf0 20 20 20 74 68 69 73 2e 64 65 74 75 6e 65 20 3d this.detune =
8cd00 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
8cd10 74 68 69 73 2e 68 61 72 6d 6f 6e 69 63 69 74 79 this.harmonicity
8cd20 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
8cd30 20 20 20 20 20 74 68 69 73 2e 68 61 72 6d 6f 6e this.harmon
8cd40 69 63 69 74 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 icity = null;..
8cd50 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 61 72 this._car
8cd60 72 69 65 72 2e 64 69 73 70 6f 73 65 28 29 3b 0a rier.dispose();.
8cd70 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 . this._c
8cd80 61 72 72 69 65 72 20 3d 20 6e 75 6c 6c 3b 0a 09 arrier = null;..
8cd90 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f this._mo
8cda0 64 75 6c 61 74 6f 72 2e 64 69 73 70 6f 73 65 28 dulator.dispose(
8cdb0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
8cdc0 2e 5f 6d 6f 64 75 6c 61 74 6f 72 20 3d 20 6e 75 ._modulator = nu
8cdd0 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
8cde0 73 2e 5f 6d 6f 64 75 6c 61 74 69 6f 6e 4e 6f 64 s._modulationNod
8cdf0 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 e.dispose();..
8ce00 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 this._modu
8ce10 6c 61 74 69 6f 6e 4e 6f 64 65 20 3d 20 6e 75 6c lationNode = nul
8ce20 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
8ce30 2e 5f 6d 6f 64 75 6c 61 74 69 6f 6e 53 63 61 6c ._modulationScal
8ce40 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 e.dispose();..
8ce50 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 this._modu
8ce60 6c 61 74 69 6f 6e 53 63 61 6c 65 20 3d 20 6e 75 lationScale = nu
8ce70 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ll;.. ret
8ce80 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
8ce90 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f ;.. return To
8cea0 6e 65 2e 41 4d 4f 73 63 69 6c 6c 61 74 6f 72 3b ne.AMOscillator;
8ceb0 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 ..});..Module(fu
8cec0 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a nction (Tone) {.
8ced0 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 . .. /**..
8cee0 09 20 2a 20 20 40 63 6c 61 73 73 20 54 6f 6e 65 . * @class Tone
8cef0 2e 46 61 74 4f 73 63 69 6c 6c 61 74 6f 72 20 0a .FatOscillator .
8cf00 09 09 20 2a 0a 09 09 20 2a 20 20 40 65 78 74 65 .. *... * @exte
8cf10 6e 64 73 20 7b 54 6f 6e 65 2e 4f 73 63 69 6c 6c nds {Tone.Oscill
8cf20 61 74 6f 72 7d 0a 09 09 20 2a 20 20 40 63 6f 6e ator}... * @con
8cf30 73 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 structor... * @
8cf40 70 61 72 61 6d 20 7b 46 72 65 71 75 65 6e 63 79 param {Frequency
8cf50 7d 20 66 72 65 71 75 65 6e 63 79 20 54 68 65 20 } frequency The
8cf60 73 74 61 72 74 69 6e 67 20 66 72 65 71 75 65 6e starting frequen
8cf70 63 79 20 6f 66 20 74 68 65 20 6f 73 63 69 6c 6c cy of the oscill
8cf80 61 74 6f 72 2e 20 0a 09 09 20 2a 20 20 40 70 61 ator. ... * @pa
8cf90 72 61 6d 20 7b 53 74 72 69 6e 67 7d 20 74 79 70 ram {String} typ
8cfa0 65 20 54 68 65 20 74 79 70 65 20 6f 66 20 74 68 e The type of th
8cfb0 65 20 63 61 72 72 69 65 72 20 6f 73 63 69 6c 6c e carrier oscill
8cfc0 61 74 6f 72 2e 0a 09 09 20 2a 20 20 40 70 61 72 ator.... * @par
8cfd0 61 6d 20 7b 53 74 72 69 6e 67 7d 20 6d 6f 64 75 am {String} modu
8cfe0 6c 61 74 69 6f 6e 54 79 70 65 20 54 68 65 20 74 lationType The t
8cff0 79 70 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c ype of the modul
8d000 61 74 6f 72 20 6f 73 63 69 6c 6c 61 74 6f 72 2e ator oscillator.
8d010 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
8d020 09 09 20 2a 20 2f 2f 61 20 73 69 6e 65 20 6f 73 .. * //a sine os
8d030 63 69 6c 6c 61 74 6f 72 20 66 72 65 71 75 65 6e cillator frequen
8d040 63 79 2d 6d 6f 64 75 6c 61 74 65 64 20 62 79 20 cy-modulated by
8d050 61 20 73 71 75 61 72 65 20 77 61 76 65 0a 09 09 a square wave...
8d060 20 2a 20 76 61 72 20 66 6d 4f 73 63 20 3d 20 6e * var fmOsc = n
8d070 65 77 20 54 6f 6e 65 2e 46 61 74 4f 73 63 69 6c ew Tone.FatOscil
8d080 6c 61 74 6f 72 28 22 41 62 33 22 2c 20 22 73 69 lator("Ab3", "si
8d090 6e 65 22 2c 20 22 73 71 75 61 72 65 22 29 2e 74 ne", "square").t
8d0a0 6f 4d 61 73 74 65 72 28 29 2e 73 74 61 72 74 28 oMaster().start(
8d0b0 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f );... */.. To
8d0c0 6e 65 2e 46 61 74 4f 73 63 69 6c 6c 61 74 6f 72 ne.FatOscillator
8d0d0 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
8d0e0 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 .. var op
8d0f0 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 tions = this.opt
8d100 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d ionsObject(argum
8d110 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 ents, [..
8d120 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 'frequency'
8d130 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
8d140 74 79 70 65 27 2c 0a 09 20 20 20 20 20 20 20 20 type',..
8d150 20 20 20 20 27 73 70 72 65 61 64 27 0a 09 20 20 'spread'..
8d160 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 46 61 ], Tone.Fa
8d170 74 4f 73 63 69 6c 6c 61 74 6f 72 2e 64 65 66 61 tOscillator.defa
8d180 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 ults);..
8d190 54 6f 6e 65 2e 53 6f 75 72 63 65 2e 63 61 6c 6c Tone.Source.call
8d1a0 28 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 29 3b (this, options);
8d1b0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
8d1c0 09 20 2a 20 20 54 68 65 20 6f 73 63 69 6c 6c 61 . * The oscilla
8d1d0 74 6f 72 27 73 20 66 72 65 71 75 65 6e 63 79 0a tor's frequency.
8d1e0 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 46 72 ... * @type {Fr
8d1f0 65 71 75 65 6e 63 79 7d 0a 09 09 09 20 2a 20 20 equency}.... *
8d200 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 @signal.... */..
8d210 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 this.fre
8d220 71 75 65 6e 63 79 20 3d 20 6e 65 77 20 54 6f 6e quency = new Ton
8d230 65 2e 53 69 67 6e 61 6c 28 6f 70 74 69 6f 6e 73 e.Signal(options
8d240 2e 66 72 65 71 75 65 6e 63 79 2c 20 54 6f 6e 65 .frequency, Tone
8d250 2e 54 79 70 65 2e 46 72 65 71 75 65 6e 63 79 29 .Type.Frequency)
8d260 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
8d270 09 09 20 2a 20 20 54 68 65 20 64 65 74 75 6e 65 .. * The detune
8d280 20 63 6f 6e 74 72 6f 6c 20 73 69 67 6e 61 6c 2e control signal.
8d290 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 43 .... * @type {C
8d2a0 65 6e 74 73 7d 0a 09 09 09 20 2a 20 20 40 73 69 ents}.... * @si
8d2b0 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 gnal.... */..
8d2c0 20 20 20 20 20 74 68 69 73 2e 64 65 74 75 6e 65 this.detune
8d2d0 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e = new Tone.Sign
8d2e0 61 6c 28 6f 70 74 69 6f 6e 73 2e 64 65 74 75 6e al(options.detun
8d2f0 65 2c 20 54 6f 6e 65 2e 54 79 70 65 2e 43 65 6e e, Tone.Type.Cen
8d300 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a ts);.. /*
8d310 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 61 72 72 *.... * The arr
8d320 61 79 20 6f 66 20 6f 73 63 69 6c 6c 61 74 6f 72 ay of oscillator
8d330 73 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b s.... * @type {
8d340 41 72 72 61 79 7d 0a 09 09 09 20 2a 20 20 40 70 Array}.... * @p
8d350 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
8d360 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 this._osc
8d370 69 6c 6c 61 74 6f 72 73 20 3d 20 5b 5d 3b 0a 09 illators = [];..
8d380 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
8d390 2a 20 20 54 68 65 20 74 6f 74 61 6c 20 73 70 72 * The total spr
8d3a0 65 61 64 20 6f 66 20 74 68 65 20 6f 73 63 69 6c ead of the oscil
8d3b0 6c 61 74 6f 72 73 0a 09 09 09 20 2a 20 20 40 74 lators.... * @t
8d3c0 79 70 65 20 20 7b 43 65 6e 74 73 7d 0a 09 09 09 ype {Cents}....
8d3d0 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
8d3e0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
8d3f0 73 2e 5f 73 70 72 65 61 64 20 3d 20 6f 70 74 69 s._spread = opti
8d400 6f 6e 73 2e 73 70 72 65 61 64 3b 0a 09 20 20 20 ons.spread;..
8d410 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
8d420 54 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 20 The type of the
8d430 6f 73 63 69 6c 6c 61 74 6f 72 0a 09 09 09 20 2a oscillator.... *
8d440 20 20 40 74 79 70 65 20 7b 53 74 72 69 6e 67 7d @type {String}
8d450 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
8d460 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
8d470 20 74 68 69 73 2e 5f 74 79 70 65 20 3d 20 6f 70 this._type = op
8d480 74 69 6f 6e 73 2e 74 79 70 65 3b 0a 09 20 20 20 tions.type;..
8d490 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
8d4a0 54 68 65 20 70 68 61 73 65 20 6f 66 20 74 68 65 The phase of the
8d4b0 20 6f 73 63 69 6c 6c 61 74 6f 72 73 0a 09 09 09 oscillators....
8d4c0 20 2a 20 20 40 74 79 70 65 20 7b 44 65 67 72 65 * @type {Degre
8d4d0 65 73 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 es}.... * @priv
8d4e0 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
8d4f0 20 20 20 20 74 68 69 73 2e 5f 70 68 61 73 65 20 this._phase
8d500 3d 20 6f 70 74 69 6f 6e 73 2e 70 68 61 73 65 3b = options.phase;
8d510 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
8d520 09 20 2a 20 20 54 68 65 20 70 61 72 74 69 61 6c . * The partial
8d530 73 20 61 72 72 61 79 0a 09 09 09 20 2a 20 20 40 s array.... * @
8d540 74 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 09 type {Array}....
8d550 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
8d560 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
8d570 73 2e 5f 70 61 72 74 69 61 6c 73 20 3d 20 74 68 s._partials = th
8d580 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 6f 70 is.defaultArg(op
8d590 74 69 6f 6e 73 2e 70 61 72 74 69 61 6c 73 2c 20 tions.partials,
8d5a0 5b 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f []);.. //
8d5b0 73 65 74 20 74 68 65 20 63 6f 75 6e 74 20 69 6e set the count in
8d5c0 69 74 69 61 6c 6c 79 0a 09 20 20 20 20 20 20 20 itially..
8d5d0 20 74 68 69 73 2e 63 6f 75 6e 74 20 3d 20 6f 70 this.count = op
8d5e0 74 69 6f 6e 73 2e 63 6f 75 6e 74 3b 0a 09 20 20 tions.count;..
8d5f0 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 64 this._read
8d600 4f 6e 6c 79 28 5b 0a 09 20 20 20 20 20 20 20 20 Only([..
8d610 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 2c 'frequency',
8d620 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 64 .. 'd
8d630 65 74 75 6e 65 27 0a 09 20 20 20 20 20 20 20 20 etune'..
8d640 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 ]);.. };..
8d650 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e Tone.extend(Ton
8d660 65 2e 46 61 74 4f 73 63 69 6c 6c 61 74 6f 72 2c e.FatOscillator,
8d670 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 Tone.Oscillator
8d680 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
8d690 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 73 default values
8d6a0 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 ... * @static..
8d6b0 09 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 . * @type {Obje
8d6c0 63 74 7d 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 ct}... * @const
8d6d0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
8d6e0 2e 46 61 74 4f 73 63 69 6c 6c 61 74 6f 72 2e 64 .FatOscillator.d
8d6f0 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 efaults = {..
8d700 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 'frequency'
8d710 3a 20 34 34 30 2c 0a 09 20 20 20 20 20 20 20 20 : 440,..
8d720 27 64 65 74 75 6e 65 27 3a 20 30 2c 0a 09 20 20 'detune': 0,..
8d730 20 20 20 20 20 20 27 70 68 61 73 65 27 3a 20 30 'phase': 0
8d740 2c 0a 09 20 20 20 20 20 20 20 20 27 73 70 72 65 ,.. 'spre
8d750 61 64 27 3a 20 32 30 2c 0a 09 20 20 20 20 20 20 ad': 20,..
8d760 20 20 27 63 6f 75 6e 74 27 3a 20 33 2c 0a 09 20 'count': 3,..
8d770 20 20 20 20 20 20 20 27 74 79 70 65 27 3a 20 27 'type': '
8d780 73 61 77 74 6f 6f 74 68 27 0a 09 20 20 20 20 7d sawtooth'.. }
8d790 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
8d7a0 20 73 74 61 72 74 20 74 68 65 20 6f 73 63 69 6c start the oscil
8d7b0 6c 61 74 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 lator... * @par
8d7c0 61 6d 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 am {Time} [time
8d7d0 3d 6e 6f 77 5d 0a 09 09 20 2a 20 20 40 70 72 69 =now]... * @pri
8d7e0 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 vate... */..
8d7f0 54 6f 6e 65 2e 46 61 74 4f 73 63 69 6c 6c 61 74 Tone.FatOscillat
8d800 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 73 74 or.prototype._st
8d810 61 72 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 art = function (
8d820 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 time) {..
8d830 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 time = this.toS
8d840 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 econds(time);..
8d850 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 6f 72 this._for
8d860 45 61 63 68 28 66 75 6e 63 74 69 6f 6e 20 28 6f Each(function (o
8d870 73 63 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 sc) {..
8d880 20 20 20 6f 73 63 2e 73 74 61 72 74 28 74 69 6d osc.start(tim
8d890 65 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 29 3b e);.. });
8d8a0 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
8d8b0 2a 0a 09 09 20 2a 20 20 73 74 6f 70 20 74 68 65 *... * stop the
8d8c0 20 6f 73 63 69 6c 6c 61 74 6f 72 0a 09 09 20 2a oscillator... *
8d8d0 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d @param {Time}
8d8e0 20 74 69 6d 65 20 28 6f 70 74 69 6f 6e 61 6c 29 time (optional)
8d8f0 20 74 69 6d 69 6e 67 20 70 61 72 61 6d 65 74 65 timing paramete
8d900 72 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 r... * @private
8d910 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
8d920 2e 46 61 74 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 .FatOscillator.p
8d930 72 6f 74 6f 74 79 70 65 2e 5f 73 74 6f 70 20 3d rototype._stop =
8d940 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 function (time)
8d950 20 7b 0a 09 20 20 20 20 20 20 20 20 74 69 6d 65 {.. time
8d960 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 = this.toSecond
8d970 73 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 s(time);..
8d980 20 20 74 68 69 73 2e 5f 66 6f 72 45 61 63 68 28 this._forEach(
8d990 66 75 6e 63 74 69 6f 6e 20 28 6f 73 63 29 20 7b function (osc) {
8d9a0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 6f 73 .. os
8d9b0 63 2e 73 74 6f 70 28 74 69 6d 65 29 3b 0a 09 20 c.stop(time);..
8d9c0 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 });..
8d9d0 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
8d9e0 20 20 49 74 65 72 61 74 65 20 6f 76 65 72 20 61 Iterate over a
8d9f0 6c 6c 20 6f 66 20 74 68 65 20 6f 73 63 69 6c 6c ll of the oscill
8da00 61 74 6f 72 73 0a 09 09 20 2a 20 20 40 70 61 72 ators... * @par
8da10 61 6d 20 20 7b 46 75 6e 63 74 69 6f 6e 7d 20 20 am {Function}
8da20 69 74 65 72 61 74 6f 72 20 20 54 68 65 20 69 74 iterator The it
8da30 65 72 61 74 6f 72 20 66 75 6e 63 74 69 6f 6e 0a erator function.
8da40 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
8da50 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 . */.. Tone.F
8da60 61 74 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f atOscillator.pro
8da70 74 6f 74 79 70 65 2e 5f 66 6f 72 45 61 63 68 20 totype._forEach
8da80 3d 20 66 75 6e 63 74 69 6f 6e 20 28 69 74 65 72 = function (iter
8da90 61 74 6f 72 29 20 7b 0a 09 20 20 20 20 20 20 20 ator) {..
8daa0 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b for (var i = 0;
8dab0 20 69 20 3c 20 74 68 69 73 2e 5f 6f 73 63 69 6c i < this._oscil
8dac0 6c 61 74 6f 72 73 2e 6c 65 6e 67 74 68 3b 20 69 lators.length; i
8dad0 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ++) {..
8dae0 20 20 20 69 74 65 72 61 74 6f 72 2e 63 61 6c 6c iterator.call
8daf0 28 74 68 69 73 2c 20 74 68 69 73 2e 5f 6f 73 63 (this, this._osc
8db00 69 6c 6c 61 74 6f 72 73 5b 69 5d 2c 20 69 29 3b illators[i], i);
8db10 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
8db20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
8db30 2a 20 54 68 65 20 74 79 70 65 20 6f 66 20 74 68 * The type of th
8db40 65 20 63 61 72 72 69 65 72 20 6f 73 63 69 6c 6c e carrier oscill
8db50 61 74 6f 72 0a 09 09 20 2a 20 40 6d 65 6d 62 65 ator... * @membe
8db60 72 4f 66 20 54 6f 6e 65 2e 46 61 74 4f 73 63 69 rOf Tone.FatOsci
8db70 6c 6c 61 74 6f 72 23 0a 09 09 20 2a 20 40 74 79 llator#... * @ty
8db80 70 65 20 7b 73 74 72 69 6e 67 7d 0a 09 09 20 2a pe {string}... *
8db90 20 40 6e 61 6d 65 20 74 79 70 65 0a 09 09 20 2a @name type... *
8dba0 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
8dbb0 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
8dbc0 65 2e 46 61 74 4f 73 63 69 6c 6c 61 74 6f 72 2e e.FatOscillator.
8dbd0 70 72 6f 74 6f 74 79 70 65 2c 20 27 74 79 70 65 prototype, 'type
8dbe0 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 ', {.. ge
8dbf0 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b t: function () {
8dc00 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
8dc10 74 75 72 6e 20 74 68 69 73 2e 5f 74 79 70 65 3b turn this._type;
8dc20 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
8dc30 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
8dc40 69 6f 6e 20 28 74 79 70 65 29 20 7b 0a 09 20 20 ion (type) {..
8dc50 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
8dc60 74 79 70 65 20 3d 20 74 79 70 65 3b 0a 09 20 20 type = type;..
8dc70 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
8dc80 66 6f 72 45 61 63 68 28 66 75 6e 63 74 69 6f 6e forEach(function
8dc90 20 28 6f 73 63 29 20 7b 0a 09 20 20 20 20 20 20 (osc) {..
8dca0 20 20 20 20 20 20 20 20 20 20 6f 73 63 2e 74 79 osc.ty
8dcb0 70 65 20 3d 20 74 79 70 65 3b 0a 09 20 20 20 20 pe = type;..
8dcc0 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 });..
8dcd0 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
8dce0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 . /**... * Th
8dcf0 65 20 64 65 74 75 6e 65 20 73 70 72 65 61 64 20 e detune spread
8dd00 62 65 74 77 65 65 6e 20 74 68 65 20 6f 73 63 69 between the osci
8dd10 6c 6c 61 74 6f 72 73 2e 20 49 66 20 22 63 6f 75 llators. If "cou
8dd20 6e 74 22 20 69 73 0a 09 09 20 2a 20 73 65 74 20 nt" is... * set
8dd30 74 6f 20 33 20 6f 73 63 69 6c 6c 61 74 6f 72 73 to 3 oscillators
8dd40 20 61 6e 64 20 74 68 65 20 22 73 70 72 65 61 64 and the "spread
8dd50 22 20 69 73 20 73 65 74 20 74 6f 20 34 30 2c 0a " is set to 40,.
8dd60 09 09 20 2a 20 74 68 65 20 74 68 72 65 65 20 6f .. * the three o
8dd70 73 63 69 6c 6c 61 74 6f 72 73 20 77 6f 75 6c 64 scillators would
8dd80 20 62 65 20 64 65 74 75 6e 65 64 20 6c 69 6b 65 be detuned like
8dd90 20 74 68 69 73 3a 20 5b 2d 32 30 2c 20 30 2c 20 this: [-20, 0,
8dda0 32 30 5d 0a 09 09 20 2a 20 66 6f 72 20 61 20 74 20]... * for a t
8ddb0 6f 74 61 6c 20 64 65 74 75 6e 65 20 73 70 72 65 otal detune spre
8ddc0 61 64 20 6f 66 20 34 30 20 63 65 6e 74 73 2e 0a ad of 40 cents..
8ddd0 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 .. * @memberOf T
8dde0 6f 6e 65 2e 46 61 74 4f 73 63 69 6c 6c 61 74 6f one.FatOscillato
8ddf0 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 43 r#... * @type {C
8de00 65 6e 74 73 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 ents}... * @name
8de10 20 73 70 72 65 61 64 0a 09 09 20 2a 2f 0a 09 20 spread... */..
8de20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
8de30 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 46 61 Property(Tone.Fa
8de40 74 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 tOscillator.prot
8de50 6f 74 79 70 65 2c 20 27 73 70 72 65 61 64 27 2c otype, 'spread',
8de60 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
8de70 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
8de80 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
8de90 72 6e 20 74 68 69 73 2e 5f 73 70 72 65 61 64 3b rn this._spread;
8dea0 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
8deb0 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
8dec0 69 6f 6e 20 28 73 70 72 65 61 64 29 20 7b 0a 09 ion (spread) {..
8ded0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
8dee0 2e 5f 73 70 72 65 61 64 20 3d 20 73 70 72 65 61 ._spread = sprea
8def0 64 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 d;..
8df00 69 66 20 28 74 68 69 73 2e 5f 6f 73 63 69 6c 6c if (this._oscill
8df10 61 74 6f 72 73 2e 6c 65 6e 67 74 68 20 3e 20 31 ators.length > 1
8df20 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
8df30 20 20 20 20 20 76 61 72 20 73 74 61 72 74 20 3d var start =
8df40 20 2d 73 70 72 65 61 64 20 2f 20 32 3b 0a 09 20 -spread / 2;..
8df50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 v
8df60 61 72 20 73 74 65 70 20 3d 20 73 70 72 65 61 64 ar step = spread
8df70 20 2f 20 28 74 68 69 73 2e 5f 6f 73 63 69 6c 6c / (this._oscill
8df80 61 74 6f 72 73 2e 6c 65 6e 67 74 68 20 2d 20 31 ators.length - 1
8df90 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
8dfa0 20 20 20 20 74 68 69 73 2e 5f 66 6f 72 45 61 63 this._forEac
8dfb0 68 28 66 75 6e 63 74 69 6f 6e 20 28 6f 73 63 2c h(function (osc,
8dfc0 20 69 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 i) {..
8dfd0 20 20 20 20 20 20 20 20 20 20 20 6f 73 63 2e 64 osc.d
8dfe0 65 74 75 6e 65 2e 76 61 6c 75 65 20 3d 20 73 74 etune.value = st
8dff0 61 72 74 20 2b 20 73 74 65 70 20 2a 20 69 3b 0a art + step * i;.
8e000 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
8e010 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 });..
8e020 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 }.. }..
8e030 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
8e040 0a 09 09 20 2a 20 54 68 65 20 6e 75 6d 62 65 72 ... * The number
8e050 20 6f 66 20 64 65 74 75 6e 65 64 20 6f 73 63 69 of detuned osci
8e060 6c 6c 61 74 6f 72 73 0a 09 09 20 2a 20 40 6d 65 llators... * @me
8e070 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 46 61 74 4f mberOf Tone.FatO
8e080 73 63 69 6c 6c 61 74 6f 72 23 0a 09 09 20 2a 20 scillator#... *
8e090 40 74 79 70 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 @type {Number}..
8e0a0 09 20 2a 20 40 6e 61 6d 65 20 63 6f 75 6e 74 0a . * @name count.
8e0b0 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 .. */.. Objec
8e0c0 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 t.defineProperty
8e0d0 28 54 6f 6e 65 2e 46 61 74 4f 73 63 69 6c 6c 61 (Tone.FatOscilla
8e0e0 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 tor.prototype, '
8e0f0 63 6f 75 6e 74 27 2c 20 7b 0a 09 20 20 20 20 20 count', {..
8e100 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e get: function
8e110 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 () {..
8e120 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
8e130 6f 73 63 69 6c 6c 61 74 6f 72 73 2e 6c 65 6e 67 oscillators.leng
8e140 74 68 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a th;.. },.
8e150 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
8e160 6e 63 74 69 6f 6e 20 28 63 6f 75 6e 74 29 20 7b nction (count) {
8e170 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 63 6f .. co
8e180 75 6e 74 20 3d 20 4d 61 74 68 2e 6d 61 78 28 63 unt = Math.max(c
8e190 6f 75 6e 74 2c 20 31 29 3b 0a 09 20 20 20 20 20 ount, 1);..
8e1a0 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e if (this.
8e1b0 5f 6f 73 63 69 6c 6c 61 74 6f 72 73 2e 6c 65 6e _oscillators.len
8e1c0 67 74 68 20 21 3d 3d 20 63 6f 75 6e 74 29 20 7b gth !== count) {
8e1d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
8e1e0 20 20 2f 2f 20 76 61 72 20 70 61 72 74 69 61 6c // var partial
8e1f0 73 20 3d 20 74 68 69 73 2e 70 61 72 74 69 61 6c s = this.partial
8e200 73 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 s;..
8e210 20 20 20 20 2f 2f 20 76 61 72 20 74 79 70 65 20 // var type
8e220 3d 20 74 68 69 73 2e 74 79 70 65 3b 0a 09 20 20 = this.type;..
8e230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
8e240 64 69 73 70 6f 73 65 20 74 68 65 20 70 72 65 76 dispose the prev
8e250 69 6f 75 73 20 6f 73 63 69 6c 6c 61 74 6f 72 73 ious oscillators
8e260 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
8e270 20 20 74 68 69 73 2e 5f 66 6f 72 45 61 63 68 28 this._forEach(
8e280 66 75 6e 63 74 69 6f 6e 20 28 6f 73 63 29 20 7b function (osc) {
8e290 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
8e2a0 20 20 20 20 20 20 6f 73 63 2e 64 69 73 70 6f 73 osc.dispos
8e2b0 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 e();..
8e2c0 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 });..
8e2d0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
8e2e0 5f 6f 73 63 69 6c 6c 61 74 6f 72 73 20 3d 20 5b _oscillators = [
8e2f0 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ];..
8e300 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d for (var i =
8e310 20 30 3b 20 69 20 3c 20 63 6f 75 6e 74 3b 20 69 0; i < count; i
8e320 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ++) {..
8e330 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6f var o
8e340 73 63 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4f 73 sc = new Tone.Os
8e350 63 69 6c 6c 61 74 6f 72 28 29 3b 0a 09 20 20 20 cillator();..
8e360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8e370 20 69 66 20 28 74 68 69 73 2e 74 79 70 65 20 3d if (this.type =
8e380 3d 3d 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 == Tone.Oscillat
8e390 6f 72 2e 54 79 70 65 2e 43 75 73 74 6f 6d 29 20 or.Type.Custom)
8e3a0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
8e3b0 20 20 20 20 20 20 20 20 20 20 20 6f 73 63 2e 70 osc.p
8e3c0 61 72 74 69 61 6c 73 20 3d 20 74 68 69 73 2e 5f artials = this._
8e3d0 70 61 72 74 69 61 6c 73 3b 0a 09 20 20 20 20 20 partials;..
8e3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
8e3f0 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
8e400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8e410 20 6f 73 63 2e 74 79 70 65 20 3d 20 74 68 69 73 osc.type = this
8e420 2e 5f 74 79 70 65 3b 0a 09 20 20 20 20 20 20 20 ._type;..
8e430 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 }..
8e440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8e450 20 20 20 20 6f 73 63 2e 70 68 61 73 65 20 3d 20 osc.phase =
8e460 74 68 69 73 2e 5f 70 68 61 73 65 3b 0a 09 20 20 this._phase;..
8e470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8e480 20 20 6f 73 63 2e 76 6f 6c 75 6d 65 2e 76 61 6c osc.volume.val
8e490 75 65 20 3d 20 2d 36 20 2d 20 63 6f 75 6e 74 3b ue = -6 - count;
8e4a0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
8e4b0 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 this.frequ
8e4c0 65 6e 63 79 2e 63 6f 6e 6e 65 63 74 28 6f 73 63 ency.connect(osc
8e4d0 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a 09 20 20 .frequency);..
8e4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8e4f0 20 20 74 68 69 73 2e 64 65 74 75 6e 65 2e 63 6f this.detune.co
8e500 6e 6e 65 63 74 28 6f 73 63 2e 64 65 74 75 6e 65 nnect(osc.detune
8e510 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
8e520 20 20 20 20 20 20 20 20 6f 73 63 2e 63 6f 6e 6e osc.conn
8e530 65 63 74 28 74 68 69 73 2e 6f 75 74 70 75 74 29 ect(this.output)
8e540 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
8e550 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 this._osc
8e560 69 6c 6c 61 74 6f 72 73 5b 69 5d 20 3d 20 6f 73 illators[i] = os
8e570 63 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 c;..
8e580 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
8e590 20 20 20 20 20 20 20 2f 2f 73 65 74 20 74 68 65 //set the
8e5a0 20 73 70 72 65 61 64 0a 09 20 20 20 20 20 20 20 spread..
8e5b0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 70 this.sp
8e5c0 72 65 61 64 20 3d 20 74 68 69 73 2e 5f 73 70 72 read = this._spr
8e5d0 65 61 64 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ead;..
8e5e0 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 73 if (this.s
8e5f0 74 61 74 65 20 3d 3d 3d 20 54 6f 6e 65 2e 53 74 tate === Tone.St
8e600 61 74 65 2e 53 74 61 72 74 65 64 29 20 7b 0a 09 ate.Started) {..
8e610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
8e620 20 20 20 20 74 68 69 73 2e 5f 66 6f 72 45 61 63 this._forEac
8e630 68 28 66 75 6e 63 74 69 6f 6e 20 28 6f 73 63 29 h(function (osc)
8e640 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
8e650 20 20 20 20 20 20 20 20 20 20 20 20 6f 73 63 2e osc.
8e660 73 74 61 72 74 28 29 3b 0a 09 20 20 20 20 20 20 start();..
8e670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 29 })
8e680 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
8e690 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 }..
8e6a0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 }.. }..
8e6b0 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
8e6c0 0a 09 09 20 2a 20 54 68 65 20 70 68 61 73 65 20 ... * The phase
8e6d0 6f 66 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f of the oscillato
8e6e0 72 20 69 6e 20 64 65 67 72 65 65 73 2e 0a 09 09 r in degrees....
8e6f0 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
8e700 65 2e 46 61 74 4f 73 63 69 6c 6c 61 74 6f 72 23 e.FatOscillator#
8e710 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 4e 75 6d ... * @type {Num
8e720 62 65 72 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 ber}... * @name
8e730 70 68 61 73 65 0a 09 09 20 2a 2f 0a 09 20 20 20 phase... */..
8e740 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
8e750 6f 70 65 72 74 79 28 54 6f 6e 65 2e 46 61 74 4f operty(Tone.FatO
8e760 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 scillator.protot
8e770 79 70 65 2c 20 27 70 68 61 73 65 27 2c 20 7b 0a ype, 'phase', {.
8e780 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
8e790 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
8e7a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
8e7b0 74 68 69 73 2e 5f 70 68 61 73 65 3b 0a 09 20 20 this._phase;..
8e7c0 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 },..
8e7d0 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 set: function
8e7e0 28 70 68 61 73 65 29 20 7b 0a 09 20 20 20 20 20 (phase) {..
8e7f0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 68 61 this._pha
8e800 73 65 20 3d 20 70 68 61 73 65 3b 0a 09 20 20 20 se = phase;..
8e810 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 this._f
8e820 6f 72 45 61 63 68 28 66 75 6e 63 74 69 6f 6e 20 orEach(function
8e830 28 6f 73 63 29 20 7b 0a 09 20 20 20 20 20 20 20 (osc) {..
8e840 20 20 20 20 20 20 20 20 20 6f 73 63 2e 70 68 61 osc.pha
8e850 73 65 20 3d 20 70 68 61 73 65 3b 0a 09 20 20 20 se = phase;..
8e860 20 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 });..
8e870 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b }.. });
8e880 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 .. /**... * T
8e890 68 65 20 70 61 72 74 69 61 6c 73 20 6f 66 20 74 he partials of t
8e8a0 68 65 20 63 61 72 72 69 65 72 20 77 61 76 65 66 he carrier wavef
8e8b0 6f 72 6d 2e 20 41 20 70 61 72 74 69 61 6c 20 72 orm. A partial r
8e8c0 65 70 72 65 73 65 6e 74 73 20 0a 09 09 20 2a 20 epresents ... *
8e8d0 74 68 65 20 61 6d 70 6c 69 74 75 64 65 20 61 74 the amplitude at
8e8e0 20 61 20 68 61 72 6d 6f 6e 69 63 2e 20 54 68 65 a harmonic. The
8e8f0 20 66 69 72 73 74 20 68 61 72 6d 6f 6e 69 63 20 first harmonic
8e900 69 73 20 74 68 65 20 0a 09 09 20 2a 20 66 75 6e is the ... * fun
8e910 64 61 6d 65 6e 74 61 6c 20 66 72 65 71 75 65 6e damental frequen
8e920 63 79 2c 20 74 68 65 20 73 65 63 6f 6e 64 20 69 cy, the second i
8e930 73 20 74 68 65 20 6f 63 74 61 76 65 20 61 6e 64 s the octave and
8e940 20 73 6f 20 6f 6e 0a 09 09 20 2a 20 66 6f 6c 6c so on... * foll
8e950 6f 77 69 6e 67 20 74 68 65 20 68 61 72 6d 6f 6e owing the harmon
8e960 69 63 20 73 65 72 69 65 73 2e 20 0a 09 09 20 2a ic series. ... *
8e970 20 53 65 74 74 69 6e 67 20 74 68 69 73 20 76 61 Setting this va
8e980 6c 75 65 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 lue will automat
8e990 69 63 61 6c 6c 79 20 73 65 74 20 74 68 65 20 74 ically set the t
8e9a0 79 70 65 20 74 6f 20 22 63 75 73 74 6f 6d 22 2e ype to "custom".
8e9b0 20 0a 09 09 20 2a 20 54 68 65 20 76 61 6c 75 65 ... * The value
8e9c0 20 69 73 20 61 6e 20 65 6d 70 74 79 20 61 72 72 is an empty arr
8e9d0 61 79 20 77 68 65 6e 20 74 68 65 20 74 79 70 65 ay when the type
8e9e0 20 69 73 20 6e 6f 74 20 22 63 75 73 74 6f 6d 22 is not "custom"
8e9f0 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f . ... * @memberO
8ea00 66 20 54 6f 6e 65 2e 46 61 74 4f 73 63 69 6c 6c f Tone.FatOscill
8ea10 61 74 6f 72 23 0a 09 09 20 2a 20 40 74 79 70 65 ator#... * @type
8ea20 20 7b 41 72 72 61 79 7d 0a 09 09 20 2a 20 40 6e {Array}... * @n
8ea30 61 6d 65 20 70 61 72 74 69 61 6c 73 0a 09 09 20 ame partials...
8ea40 2a 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 * @example... *
8ea50 6f 73 63 2e 70 61 72 74 69 61 6c 73 20 3d 20 5b osc.partials = [
8ea60 31 2c 20 30 2e 32 2c 20 30 2e 30 31 5d 3b 0a 09 1, 0.2, 0.01];..
8ea70 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
8ea80 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
8ea90 54 6f 6e 65 2e 46 61 74 4f 73 63 69 6c 6c 61 74 Tone.FatOscillat
8eaa0 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 70 or.prototype, 'p
8eab0 61 72 74 69 61 6c 73 27 2c 20 7b 0a 09 20 20 20 artials', {..
8eac0 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
8ead0 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
8eae0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
8eaf0 2e 5f 70 61 72 74 69 61 6c 73 3b 0a 09 20 20 20 ._partials;..
8eb00 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 },..
8eb10 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 set: function (
8eb20 70 61 72 74 69 61 6c 73 29 20 7b 0a 09 20 20 20 partials) {..
8eb30 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 this._p
8eb40 61 72 74 69 61 6c 73 20 3d 20 70 61 72 74 69 61 artials = partia
8eb50 6c 73 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ls;..
8eb60 20 74 68 69 73 2e 5f 74 79 70 65 20 3d 20 54 6f this._type = To
8eb70 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 2e 54 79 ne.Oscillator.Ty
8eb80 70 65 2e 43 75 73 74 6f 6d 3b 0a 09 20 20 20 20 pe.Custom;..
8eb90 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 6f this._fo
8eba0 72 45 61 63 68 28 66 75 6e 63 74 69 6f 6e 20 28 rEach(function (
8ebb0 6f 73 63 29 20 7b 0a 09 20 20 20 20 20 20 20 20 osc) {..
8ebc0 20 20 20 20 20 20 20 20 6f 73 63 2e 70 61 72 74 osc.part
8ebd0 69 61 6c 73 20 3d 20 70 61 72 74 69 61 6c 73 3b ials = partials;
8ebe0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 29 .. })
8ebf0 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
8ec00 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 });.. /**..
8ec10 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a 09 . * Clean up...
8ec20 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 54 6f . * @return {To
8ec30 6e 65 2e 46 61 74 4f 73 63 69 6c 6c 61 74 6f 72 ne.FatOscillator
8ec40 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 } this... */..
8ec50 20 20 54 6f 6e 65 2e 46 61 74 4f 73 63 69 6c 6c Tone.FatOscill
8ec60 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 ator.prototype.d
8ec70 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f ispose = functio
8ec80 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
8ec90 54 6f 6e 65 2e 53 6f 75 72 63 65 2e 70 72 6f 74 Tone.Source.prot
8eca0 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 otype.dispose.ca
8ecb0 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 ll(this);..
8ecc0 20 20 20 74 68 69 73 2e 5f 77 72 69 74 61 62 6c this._writabl
8ecd0 65 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e([..
8ece0 20 27 66 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 'frequency',..
8ecf0 20 20 20 20 20 20 20 20 20 20 20 27 64 65 74 75 'detu
8ed00 6e 65 27 0a 09 20 20 20 20 20 20 20 20 5d 29 3b ne'.. ]);
8ed10 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 .. this.f
8ed20 72 65 71 75 65 6e 63 79 2e 64 69 73 70 6f 73 65 requency.dispose
8ed30 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
8ed40 73 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 6e 75 s.frequency = nu
8ed50 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
8ed60 73 2e 64 65 74 75 6e 65 2e 64 69 73 70 6f 73 65 s.detune.dispose
8ed70 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
8ed80 73 2e 64 65 74 75 6e 65 20 3d 20 6e 75 6c 6c 3b s.detune = null;
8ed90 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
8eda0 66 6f 72 45 61 63 68 28 66 75 6e 63 74 69 6f 6e forEach(function
8edb0 20 28 6f 73 63 29 20 7b 0a 09 20 20 20 20 20 20 (osc) {..
8edc0 20 20 20 20 20 20 6f 73 63 2e 64 69 73 70 6f 73 osc.dispos
8edd0 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 29 e();.. })
8ede0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
8edf0 5f 6f 73 63 69 6c 6c 61 74 6f 72 73 20 3d 20 6e _oscillators = n
8ee00 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
8ee10 69 73 2e 5f 70 61 72 74 69 61 6c 73 20 3d 20 6e is._partials = n
8ee20 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 ull;.. re
8ee30 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 turn this;..
8ee40 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 };.. return T
8ee50 6f 6e 65 2e 46 61 74 4f 73 63 69 6c 6c 61 74 6f one.FatOscillato
8ee60 72 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 r;..});..Module(
8ee70 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 function (Tone)
8ee80 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a {.. .. /**
8ee90 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 54 6f ... * @class To
8eea0 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f ne.OmniOscillato
8eeb0 72 20 61 67 67 72 65 67 61 74 65 73 20 54 6f 6e r aggregates Ton
8eec0 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 2c 20 54 6f e.Oscillator, To
8eed0 6e 65 2e 50 75 6c 73 65 4f 73 63 69 6c 6c 61 74 ne.PulseOscillat
8eee0 6f 72 2c 0a 09 09 20 2a 20 20 20 20 20 20 20 20 or,... *
8eef0 20 54 6f 6e 65 2e 50 57 4d 4f 73 63 69 6c 6c 61 Tone.PWMOscilla
8ef00 74 6f 72 2c 20 54 6f 6e 65 2e 46 4d 4f 73 63 69 tor, Tone.FMOsci
8ef10 6c 6c 61 74 6f 72 2c 20 54 6f 6e 65 2e 41 4d 4f llator, Tone.AMO
8ef20 73 63 69 6c 6c 61 74 6f 72 2c 20 61 6e 64 20 54 scillator, and T
8ef30 6f 6e 65 2e 46 61 74 4f 73 63 69 6c 6c 61 74 6f one.FatOscillato
8ef40 72 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 69 r... * i
8ef50 6e 74 6f 20 6f 6e 65 20 63 6c 61 73 73 2e 20 54 nto one class. T
8ef60 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 20 63 6c he oscillator cl
8ef70 61 73 73 20 63 61 6e 20 62 65 20 63 68 61 6e 67 ass can be chang
8ef80 65 64 20 62 79 20 73 65 74 74 69 6e 67 20 74 68 ed by setting th
8ef90 65 20 60 74 79 70 65 60 2e 20 0a 09 09 20 2a 20 e `type`. ... *
8efa0 20 20 20 20 20 20 20 20 60 6f 6d 6e 69 4f 73 63 `omniOsc
8efb0 2e 74 79 70 65 20 3d 20 22 70 77 6d 22 60 20 77 .type = "pwm"` w
8efc0 69 6c 6c 20 73 65 74 20 69 74 20 74 6f 20 74 68 ill set it to th
8efd0 65 20 54 6f 6e 65 2e 50 57 4d 4f 73 63 69 6c 6c e Tone.PWMOscill
8efe0 61 74 6f 72 2e 20 50 72 65 66 69 78 69 6e 67 0a ator. Prefixing.
8eff0 09 09 20 2a 20 20 20 20 20 20 20 20 20 61 6e 79 .. * any
8f000 20 6f 66 20 74 68 65 20 62 61 73 69 63 20 74 79 of the basic ty
8f010 70 65 73 20 28 22 73 69 6e 65 22 2c 20 22 73 71 pes ("sine", "sq
8f020 75 61 72 65 34 22 2c 20 65 74 63 2e 29 20 77 69 uare4", etc.) wi
8f030 74 68 20 22 66 6d 22 2c 20 22 61 6d 22 2c 20 6f th "fm", "am", o
8f040 72 20 22 66 61 74 22 0a 09 09 20 2a 20 20 20 20 r "fat"... *
8f050 20 20 20 20 20 77 69 6c 6c 20 75 73 65 20 74 68 will use th
8f060 65 20 46 4d 4f 73 63 69 6c 6c 61 74 6f 72 2c 20 e FMOscillator,
8f070 41 4d 4f 73 63 69 6c 6c 61 74 6f 72 20 6f 72 20 AMOscillator or
8f080 46 61 74 4f 73 63 69 6c 6c 61 74 6f 72 20 72 65 FatOscillator re
8f090 73 70 65 63 74 69 76 65 6c 79 2e 20 0a 09 09 20 spectively. ...
8f0a0 2a 20 20 20 20 20 20 20 20 20 46 6f 72 20 65 78 * For ex
8f0b0 61 6d 70 6c 65 3a 20 60 6f 6d 6e 69 4f 73 63 2e ample: `omniOsc.
8f0c0 74 79 70 65 20 3d 20 22 66 61 74 73 61 77 74 6f type = "fatsawto
8f0d0 6f 74 68 22 60 20 77 69 6c 6c 20 63 72 65 61 74 oth"` will creat
8f0e0 65 20 73 65 74 20 74 68 65 20 6f 73 63 69 6c 6c e set the oscill
8f0f0 61 74 6f 72 0a 09 09 20 2a 20 20 20 20 20 20 20 ator... *
8f100 20 20 74 6f 20 61 20 46 61 74 4f 73 63 69 6c 6c to a FatOscill
8f110 61 74 6f 72 20 6f 66 20 74 79 70 65 20 22 73 61 ator of type "sa
8f120 77 74 6f 6f 74 68 22 2e 20 0a 09 09 20 2a 0a 09 wtooth". ... *..
8f130 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 . * @extends {T
8f140 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 7d 0a one.Oscillator}.
8f150 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 .. * @construct
8f160 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 or... * @param
8f170 7b 46 72 65 71 75 65 6e 63 79 7d 20 66 72 65 71 {Frequency} freq
8f180 75 65 6e 63 79 20 54 68 65 20 69 6e 69 74 69 61 uency The initia
8f190 6c 20 66 72 65 71 75 65 6e 63 79 20 6f 66 20 74 l frequency of t
8f1a0 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 2e 0a 09 he oscillator...
8f1b0 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 53 74 72 . * @param {Str
8f1c0 69 6e 67 7d 20 74 79 70 65 20 54 68 65 20 74 79 ing} type The ty
8f1d0 70 65 20 6f 66 20 74 68 65 20 6f 73 63 69 6c 6c pe of the oscill
8f1e0 61 74 6f 72 2e 0a 09 09 20 2a 20 20 40 65 78 61 ator.... * @exa
8f1f0 6d 70 6c 65 0a 09 09 20 2a 20 20 76 61 72 20 6f mple... * var o
8f200 6d 6e 69 4f 73 63 20 3d 20 6e 65 77 20 54 6f 6e mniOsc = new Ton
8f210 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 e.OmniOscillator
8f220 28 22 43 23 34 22 2c 20 22 70 77 6d 22 29 3b 0a ("C#4", "pwm");.
8f230 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
8f240 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 20 3d OmniOscillator =
8f250 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
8f260 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 var opti
8f270 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f ons = this.optio
8f280 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e nsObject(argumen
8f290 74 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 ts, [..
8f2a0 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 2c 0a 'frequency',.
8f2b0 09 20 20 20 20 20 20 20 20 20 20 20 20 27 74 79 . 'ty
8f2c0 70 65 27 0a 09 20 20 20 20 20 20 20 20 5d 2c 20 pe'.. ],
8f2d0 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 Tone.OmniOscilla
8f2e0 74 6f 72 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 tor.defaults);..
8f2f0 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 53 6f 75 Tone.Sou
8f300 72 63 65 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f rce.call(this, o
8f310 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 ptions);..
8f320 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
8f330 20 66 72 65 71 75 65 6e 63 79 20 63 6f 6e 74 72 frequency contr
8f340 6f 6c 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 ol..... * @type
8f350 20 7b 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 09 {Frequency}....
8f360 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 * @signal....
8f370 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
8f380 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 6e 65 77 .frequency = new
8f390 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 6f 70 74 Tone.Signal(opt
8f3a0 69 6f 6e 73 2e 66 72 65 71 75 65 6e 63 79 2c 20 ions.frequency,
8f3b0 54 6f 6e 65 2e 54 79 70 65 2e 46 72 65 71 75 65 Tone.Type.Freque
8f3c0 6e 63 79 29 3b 0a 09 20 20 20 20 20 20 20 20 2f ncy);.. /
8f3d0 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 64 65 **.... * The de
8f3e0 74 75 6e 65 20 63 6f 6e 74 72 6f 6c 0a 09 09 09 tune control....
8f3f0 20 2a 20 20 40 74 79 70 65 20 7b 43 65 6e 74 73 * @type {Cents
8f400 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c }.... * @signal
8f410 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
8f420 20 74 68 69 73 2e 64 65 74 75 6e 65 20 3d 20 6e this.detune = n
8f430 65 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 6f ew Tone.Signal(o
8f440 70 74 69 6f 6e 73 2e 64 65 74 75 6e 65 2c 20 54 ptions.detune, T
8f450 6f 6e 65 2e 54 79 70 65 2e 43 65 6e 74 73 29 3b one.Type.Cents);
8f460 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
8f470 09 20 2a 20 20 74 68 65 20 74 79 70 65 20 6f 66 . * the type of
8f480 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 20 the oscillator
8f490 73 6f 75 72 63 65 0a 09 09 09 20 2a 20 20 40 74 source.... * @t
8f4a0 79 70 65 20 7b 53 74 72 69 6e 67 7d 0a 09 09 09 ype {String}....
8f4b0 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
8f4c0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
8f4d0 73 2e 5f 73 6f 75 72 63 65 54 79 70 65 20 3d 20 s._sourceType =
8f4e0 75 6e 64 65 66 69 6e 65 64 3b 0a 09 20 20 20 20 undefined;..
8f4f0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 /**.... * t
8f500 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 0a 09 09 he oscillator...
8f510 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 . * @type {Tone
8f520 2e 4f 73 63 69 6c 6c 61 74 6f 72 7d 0a 09 09 09 .Oscillator}....
8f530 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
8f540 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
8f550 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 20 3d 20 s._oscillator =
8f560 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 2f null;.. /
8f570 2f 73 65 74 20 74 68 65 20 6f 73 63 69 6c 6c 61 /set the oscilla
8f580 74 6f 72 0a 09 20 20 20 20 20 20 20 20 74 68 69 tor.. thi
8f590 73 2e 74 79 70 65 20 3d 20 6f 70 74 69 6f 6e 73 s.type = options
8f5a0 2e 74 79 70 65 3b 0a 09 20 20 20 20 20 20 20 20 .type;..
8f5b0 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 5b this._readOnly([
8f5c0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 66 .. 'f
8f5d0 72 65 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 requency',..
8f5e0 20 20 20 20 20 20 20 20 27 64 65 74 75 6e 65 27 'detune'
8f5f0 0a 09 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 20 .. ]);..
8f600 20 20 20 20 20 20 20 2f 2f 73 65 74 20 74 68 65 //set the
8f610 20 6f 70 74 69 6f 6e 73 0a 09 20 20 20 20 20 20 options..
8f620 20 20 74 68 69 73 2e 73 65 74 28 6f 70 74 69 6f this.set(optio
8f630 6e 73 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ns);.. };..
8f640 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
8f650 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f ne.OmniOscillato
8f660 72 2c 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 r, Tone.Oscillat
8f670 6f 72 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 or);.. /**...
8f680 20 2a 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75 * default valu
8f690 65 73 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 es... * @static
8f6a0 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 ... * @type {Ob
8f6b0 6a 65 63 74 7d 0a 09 09 20 2a 20 20 40 63 6f 6e ject}... * @con
8f6c0 73 74 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f st... */.. To
8f6d0 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f ne.OmniOscillato
8f6e0 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 r.defaults = {..
8f6f0 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 'frequen
8f700 63 79 27 3a 20 34 34 30 2c 0a 09 20 20 20 20 20 cy': 440,..
8f710 20 20 20 27 64 65 74 75 6e 65 27 3a 20 30 2c 0a 'detune': 0,.
8f720 09 20 20 20 20 20 20 20 20 27 74 79 70 65 27 3a . 'type':
8f730 20 27 73 69 6e 65 27 2c 0a 09 20 20 20 20 20 20 'sine',..
8f740 20 20 27 70 68 61 73 65 27 3a 20 30 0a 09 20 20 'phase': 0..
8f750 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
8f760 20 2a 20 20 40 65 6e 75 6d 20 7b 53 74 72 69 6e * @enum {Strin
8f770 67 7d 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 g}... * @privat
8f780 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 76 61 72 e... */.. var
8f790 20 4f 6d 6e 69 4f 73 63 54 79 70 65 20 3d 20 7b OmniOscType = {
8f7a0 0a 09 20 20 20 20 20 20 20 20 50 75 6c 73 65 3a .. Pulse:
8f7b0 20 27 50 75 6c 73 65 4f 73 63 69 6c 6c 61 74 6f 'PulseOscillato
8f7c0 72 27 2c 0a 09 20 20 20 20 20 20 20 20 50 57 4d r',.. PWM
8f7d0 3a 20 27 50 57 4d 4f 73 63 69 6c 6c 61 74 6f 72 : 'PWMOscillator
8f7e0 27 2c 0a 09 20 20 20 20 20 20 20 20 4f 73 63 3a ',.. Osc:
8f7f0 20 27 4f 73 63 69 6c 6c 61 74 6f 72 27 2c 0a 09 'Oscillator',..
8f800 20 20 20 20 20 20 20 20 46 4d 3a 20 27 46 4d 4f FM: 'FMO
8f810 73 63 69 6c 6c 61 74 6f 72 27 2c 0a 09 20 20 20 scillator',..
8f820 20 20 20 20 20 41 4d 3a 20 27 41 4d 4f 73 63 69 AM: 'AMOsci
8f830 6c 6c 61 74 6f 72 27 2c 0a 09 20 20 20 20 20 20 llator',..
8f840 20 20 46 61 74 3a 20 27 46 61 74 4f 73 63 69 6c Fat: 'FatOscil
8f850 6c 61 74 6f 72 27 0a 09 20 20 20 20 7d 3b 0a 09 lator'.. };..
8f860 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 73 74 /**... * st
8f870 61 72 74 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 art the oscillat
8f880 6f 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 or... * @param
8f890 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 {Time} [time=now
8f8a0 5d 20 74 68 65 20 74 69 6d 65 20 74 6f 20 73 74 ] the time to st
8f8b0 61 72 74 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 art the oscillat
8f8c0 6f 72 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 or... * @privat
8f8d0 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e e... */.. Ton
8f8e0 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 e.OmniOscillator
8f8f0 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 73 74 61 72 .prototype._star
8f900 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 t = function (ti
8f910 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 me) {.. t
8f920 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 2e his._oscillator.
8f930 73 74 61 72 74 28 74 69 6d 65 29 3b 0a 09 20 20 start(time);..
8f940 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
8f950 20 2a 20 20 73 74 61 72 74 20 74 68 65 20 6f 73 * start the os
8f960 63 69 6c 6c 61 74 6f 72 0a 09 09 20 2a 20 20 40 cillator... * @
8f970 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 5b 74 69 param {Time} [ti
8f980 6d 65 3d 6e 6f 77 5d 20 74 68 65 20 74 69 6d 65 me=now] the time
8f990 20 74 6f 20 73 74 61 72 74 20 74 68 65 20 6f 73 to start the os
8f9a0 63 69 6c 6c 61 74 6f 72 0a 09 09 20 2a 20 20 40 cillator... * @
8f9b0 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 private... */..
8f9c0 20 20 20 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 Tone.OmniOsci
8f9d0 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 llator.prototype
8f9e0 2e 5f 73 74 6f 70 20 3d 20 66 75 6e 63 74 69 6f ._stop = functio
8f9f0 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 n (time) {..
8fa00 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c this._oscill
8fa10 61 74 6f 72 2e 73 74 6f 70 28 74 69 6d 65 29 3b ator.stop(time);
8fa20 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
8fa30 2a 0a 09 09 20 2a 20 54 68 65 20 74 79 70 65 20 *... * The type
8fa40 6f 66 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f of the oscillato
8fa50 72 2e 20 43 61 6e 20 62 65 20 61 6e 79 20 6f 66 r. Can be any of
8fa60 20 74 68 65 20 62 61 73 69 63 20 74 79 70 65 73 the basic types
8fa70 3a 20 73 69 6e 65 2c 20 73 71 75 61 72 65 2c 20 : sine, square,
8fa80 74 72 69 61 6e 67 6c 65 2c 20 73 61 77 74 6f 6f triangle, sawtoo
8fa90 74 68 2e 20 4f 72 0a 09 09 20 2a 20 70 72 65 66 th. Or... * pref
8faa0 69 78 20 74 68 65 20 62 61 73 69 63 20 74 79 70 ix the basic typ
8fab0 65 73 20 77 69 74 68 20 22 66 6d 22 2c 20 22 61 es with "fm", "a
8fac0 6d 22 2c 20 6f 72 20 22 66 61 74 22 20 74 6f 20 m", or "fat" to
8fad0 75 73 65 20 74 68 65 20 46 4d 4f 73 63 69 6c 6c use the FMOscill
8fae0 61 74 6f 72 2c 20 41 4d 4f 73 63 69 6c 6c 61 74 ator, AMOscillat
8faf0 6f 72 20 6f 72 20 46 61 74 4f 73 63 69 6c 6c 61 or or FatOscilla
8fb00 74 6f 72 0a 09 09 20 2a 20 74 79 70 65 73 2e 20 tor... * types.
8fb10 54 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 20 63 The oscillator c
8fb20 6f 75 6c 64 20 61 6c 73 6f 20 62 65 20 73 65 74 ould also be set
8fb30 20 74 6f 20 22 70 77 6d 22 20 6f 72 20 22 70 75 to "pwm" or "pu
8fb40 6c 73 65 22 2e 20 41 6c 6c 20 6f 66 20 74 68 65 lse". All of the
8fb50 20 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20 74 parameters of t
8fb60 68 65 0a 09 09 20 2a 20 6f 73 63 69 6c 6c 61 74 he... * oscillat
8fb70 6f 72 27 73 20 63 6c 61 73 73 20 61 72 65 20 61 or's class are a
8fb80 63 63 65 73 73 69 62 6c 65 20 77 68 65 6e 20 74 ccessible when t
8fb90 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 20 69 73 he oscillator is
8fba0 20 73 65 74 20 74 6f 20 74 68 61 74 20 74 79 70 set to that typ
8fbb0 65 2c 20 62 75 74 20 74 68 72 6f 77 73 20 61 6e e, but throws an
8fbc0 20 65 72 72 6f 72 20 0a 09 09 20 2a 20 77 68 65 error ... * whe
8fbd0 6e 20 69 74 27 73 20 6e 6f 74 2e 0a 09 09 20 2a n it's not.... *
8fbe0 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
8fbf0 20 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c Tone.OmniOscill
8fc00 61 74 6f 72 23 0a 09 09 20 2a 20 40 74 79 70 65 ator#... * @type
8fc10 20 7b 53 74 72 69 6e 67 7d 0a 09 09 20 2a 20 40 {String}... * @
8fc20 6e 61 6d 65 20 74 79 70 65 0a 09 09 20 2a 20 40 name type... * @
8fc30 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 6f 6d 6e example... * omn
8fc40 69 4f 73 63 2e 74 79 70 65 20 3d 20 22 70 77 6d iOsc.type = "pwm
8fc50 22 3b 0a 09 09 20 2a 20 2f 2f 6d 6f 64 75 6c 61 ";... * //modula
8fc60 74 69 6f 6e 46 72 65 71 75 65 6e 63 79 20 69 73 tionFrequency is
8fc70 20 70 61 72 61 6d 65 74 65 72 20 77 68 69 63 68 parameter which
8fc80 20 69 73 20 61 76 61 69 6c 61 62 6c 65 0a 09 09 is available...
8fc90 20 2a 20 2f 2f 6f 6e 6c 79 20 77 68 65 6e 20 74 * //only when t
8fca0 68 65 20 74 79 70 65 20 69 73 20 22 70 77 6d 22 he type is "pwm"
8fcb0 2e 20 0a 09 09 20 2a 20 6f 6d 6e 69 4f 73 63 2e . ... * omniOsc.
8fcc0 6d 6f 64 75 6c 61 74 69 6f 6e 46 72 65 71 75 65 modulationFreque
8fcd0 6e 63 79 2e 76 61 6c 75 65 20 3d 20 30 2e 35 3b ncy.value = 0.5;
8fce0 0a 09 09 20 2a 20 40 65 78 61 6d 70 6c 65 0a 09 ... * @example..
8fcf0 09 20 2a 20 2f 2f 61 6e 20 73 71 75 61 72 65 20 . * //an square
8fd00 77 61 76 65 20 66 72 65 71 75 65 6e 63 79 20 6d wave frequency m
8fd10 6f 64 75 6c 61 74 65 64 20 62 79 20 61 20 73 61 odulated by a sa
8fd20 77 74 6f 6f 74 68 0a 09 09 20 2a 20 6f 6d 6e 69 wtooth... * omni
8fd30 4f 73 63 2e 74 79 70 65 20 3d 20 22 66 6d 73 71 Osc.type = "fmsq
8fd40 75 61 72 65 22 3b 0a 09 09 20 2a 20 6f 6d 6e 69 uare";... * omni
8fd50 4f 73 63 2e 6d 6f 64 75 6c 61 74 69 6f 6e 54 79 Osc.modulationTy
8fd60 70 65 20 3d 20 22 73 61 77 74 6f 6f 74 68 22 3b pe = "sawtooth";
8fd70 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 ... */.. Obje
8fd80 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
8fd90 79 28 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c y(Tone.OmniOscil
8fda0 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2c lator.prototype,
8fdb0 20 27 74 79 70 65 27 2c 20 7b 0a 09 20 20 20 20 'type', {..
8fdc0 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
8fdd0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
8fde0 20 20 20 20 76 61 72 20 70 72 65 66 69 78 20 3d var prefix =
8fdf0 20 27 27 3b 0a 09 20 20 20 20 20 20 20 20 20 20 '';..
8fe00 20 20 69 66 20 28 74 68 69 73 2e 5f 73 6f 75 72 if (this._sour
8fe10 63 65 54 79 70 65 20 3d 3d 3d 20 4f 6d 6e 69 4f ceType === OmniO
8fe20 73 63 54 79 70 65 2e 46 4d 29 20 7b 0a 09 20 20 scType.FM) {..
8fe30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 pr
8fe40 65 66 69 78 20 3d 20 27 66 6d 27 3b 0a 09 20 20 efix = 'fm';..
8fe50 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
8fe60 20 69 66 20 28 74 68 69 73 2e 5f 73 6f 75 72 63 if (this._sourc
8fe70 65 54 79 70 65 20 3d 3d 3d 20 4f 6d 6e 69 4f 73 eType === OmniOs
8fe80 63 54 79 70 65 2e 41 4d 29 20 7b 0a 09 20 20 20 cType.AM) {..
8fe90 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 pre
8fea0 66 69 78 20 3d 20 27 61 6d 27 3b 0a 09 20 20 20 fix = 'am';..
8feb0 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
8fec0 69 66 20 28 74 68 69 73 2e 5f 73 6f 75 72 63 65 if (this._source
8fed0 54 79 70 65 20 3d 3d 3d 20 4f 6d 6e 69 4f 73 63 Type === OmniOsc
8fee0 54 79 70 65 2e 46 61 74 29 20 7b 0a 09 20 20 20 Type.Fat) {..
8fef0 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 pre
8ff00 66 69 78 20 3d 20 27 66 61 74 27 3b 0a 09 20 20 fix = 'fat';..
8ff10 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
8ff20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
8ff30 70 72 65 66 69 78 20 2b 20 74 68 69 73 2e 5f 6f prefix + this._o
8ff40 73 63 69 6c 6c 61 74 6f 72 2e 74 79 70 65 3b 0a scillator.type;.
8ff50 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 . },..
8ff60 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 set: functi
8ff70 6f 6e 20 28 74 79 70 65 29 20 7b 0a 09 20 20 20 on (type) {..
8ff80 20 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 if (typ
8ff90 65 2e 73 75 62 73 74 72 28 30 2c 20 32 29 20 3d e.substr(0, 2) =
8ffa0 3d 3d 20 27 66 6d 27 29 20 7b 0a 09 20 20 20 20 == 'fm') {..
8ffb0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
8ffc0 2e 5f 63 72 65 61 74 65 4e 65 77 4f 73 63 69 6c ._createNewOscil
8ffd0 6c 61 74 6f 72 28 4f 6d 6e 69 4f 73 63 54 79 70 lator(OmniOscTyp
8ffe0 65 2e 46 4d 29 3b 0a 09 20 20 20 20 20 20 20 20 e.FM);..
8fff0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 this._os
90000 63 69 6c 6c 61 74 6f 72 2e 74 79 70 65 20 3d 20 cillator.type =
90010 74 79 70 65 2e 73 75 62 73 74 72 28 32 29 3b 0a type.substr(2);.
90020 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
90030 6c 73 65 20 69 66 20 28 74 79 70 65 2e 73 75 62 lse if (type.sub
90040 73 74 72 28 30 2c 20 32 29 20 3d 3d 3d 20 27 61 str(0, 2) === 'a
90050 6d 27 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 m') {..
90060 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 72 65 this._cre
90070 61 74 65 4e 65 77 4f 73 63 69 6c 6c 61 74 6f 72 ateNewOscillator
90080 28 4f 6d 6e 69 4f 73 63 54 79 70 65 2e 41 4d 29 (OmniOscType.AM)
90090 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
900a0 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 this._oscilla
900b0 74 6f 72 2e 74 79 70 65 20 3d 20 74 79 70 65 2e tor.type = type.
900c0 73 75 62 73 74 72 28 32 29 3b 0a 09 20 20 20 20 substr(2);..
900d0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 } else i
900e0 66 20 28 74 79 70 65 2e 73 75 62 73 74 72 28 30 f (type.substr(0
900f0 2c 20 33 29 20 3d 3d 3d 20 27 66 61 74 27 29 20 , 3) === 'fat')
90100 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
90110 20 20 20 74 68 69 73 2e 5f 63 72 65 61 74 65 4e this._createN
90120 65 77 4f 73 63 69 6c 6c 61 74 6f 72 28 4f 6d 6e ewOscillator(Omn
90130 69 4f 73 63 54 79 70 65 2e 46 61 74 29 3b 0a 09 iOscType.Fat);..
90140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
90150 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 this._oscillator
90160 2e 74 79 70 65 20 3d 20 74 79 70 65 2e 73 75 62 .type = type.sub
90170 73 74 72 28 33 29 3b 0a 09 20 20 20 20 20 20 20 str(3);..
90180 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
90190 74 79 70 65 20 3d 3d 3d 20 27 70 77 6d 27 29 20 type === 'pwm')
901a0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
901b0 20 20 20 74 68 69 73 2e 5f 63 72 65 61 74 65 4e this._createN
901c0 65 77 4f 73 63 69 6c 6c 61 74 6f 72 28 4f 6d 6e ewOscillator(Omn
901d0 69 4f 73 63 54 79 70 65 2e 50 57 4d 29 3b 0a 09 iOscType.PWM);..
901e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
901f0 73 65 20 69 66 20 28 74 79 70 65 20 3d 3d 3d 20 se if (type ===
90200 27 70 75 6c 73 65 27 29 20 7b 0a 09 20 20 20 20 'pulse') {..
90210 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
90220 2e 5f 63 72 65 61 74 65 4e 65 77 4f 73 63 69 6c ._createNewOscil
90230 6c 61 74 6f 72 28 4f 6d 6e 69 4f 73 63 54 79 70 lator(OmniOscTyp
90240 65 2e 50 75 6c 73 65 29 3b 0a 09 20 20 20 20 20 e.Pulse);..
90250 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
90260 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
90270 20 74 68 69 73 2e 5f 63 72 65 61 74 65 4e 65 77 this._createNew
90280 4f 73 63 69 6c 6c 61 74 6f 72 28 4f 6d 6e 69 4f Oscillator(OmniO
90290 73 63 54 79 70 65 2e 4f 73 63 29 3b 0a 09 20 20 scType.Osc);..
902a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
902b0 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 2e 74 is._oscillator.t
902c0 79 70 65 20 3d 20 74 79 70 65 3b 0a 09 20 20 20 ype = type;..
902d0 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
902e0 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
902f0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 /**... * The
90300 20 70 61 72 74 69 61 6c 73 20 6f 66 20 74 68 65 partials of the
90310 20 77 61 76 65 66 6f 72 6d 2e 20 41 20 70 61 72 waveform. A par
90320 74 69 61 6c 20 72 65 70 72 65 73 65 6e 74 73 20 tial represents
90330 0a 09 09 20 2a 20 74 68 65 20 61 6d 70 6c 69 74 ... * the amplit
90340 75 64 65 20 61 74 20 61 20 68 61 72 6d 6f 6e 69 ude at a harmoni
90350 63 2e 20 54 68 65 20 66 69 72 73 74 20 68 61 72 c. The first har
90360 6d 6f 6e 69 63 20 69 73 20 74 68 65 20 0a 09 09 monic is the ...
90370 20 2a 20 66 75 6e 64 61 6d 65 6e 74 61 6c 20 66 * fundamental f
90380 72 65 71 75 65 6e 63 79 2c 20 74 68 65 20 73 65 requency, the se
90390 63 6f 6e 64 20 69 73 20 74 68 65 20 6f 63 74 61 cond is the octa
903a0 76 65 20 61 6e 64 20 73 6f 20 6f 6e 0a 09 09 20 ve and so on...
903b0 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 * following the
903c0 68 61 72 6d 6f 6e 69 63 20 73 65 72 69 65 73 2e harmonic series.
903d0 20 0a 09 09 20 2a 20 53 65 74 74 69 6e 67 20 74 ... * Setting t
903e0 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 61 his value will a
903f0 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 65 74 utomatically set
90400 20 74 68 65 20 74 79 70 65 20 74 6f 20 22 63 75 the type to "cu
90410 73 74 6f 6d 22 2e 20 0a 09 09 20 2a 20 54 68 65 stom". ... * The
90420 20 76 61 6c 75 65 20 69 73 20 61 6e 20 65 6d 70 value is an emp
90430 74 79 20 61 72 72 61 79 20 77 68 65 6e 20 74 68 ty array when th
90440 65 20 74 79 70 65 20 69 73 20 6e 6f 74 20 22 63 e type is not "c
90450 75 73 74 6f 6d 22 2e 20 0a 09 09 20 2a 20 54 68 ustom". ... * Th
90460 69 73 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 is is not availa
90470 62 6c 65 20 6f 6e 20 22 70 77 6d 22 20 61 6e 64 ble on "pwm" and
90480 20 22 70 75 6c 73 65 22 20 6f 73 63 69 6c 6c 61 "pulse" oscilla
90490 74 6f 72 20 74 79 70 65 73 2e 0a 09 09 20 2a 20 tor types.... *
904a0 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 4f @memberOf Tone.O
904b0 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 23 0a 09 mniOscillator#..
904c0 09 20 2a 20 40 74 79 70 65 20 7b 41 72 72 61 79 . * @type {Array
904d0 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 70 61 72 }... * @name par
904e0 74 69 61 6c 73 0a 09 09 20 2a 20 40 65 78 61 6d tials... * @exam
904f0 70 6c 65 0a 09 09 20 2a 20 6f 73 63 2e 70 61 72 ple... * osc.par
90500 74 69 61 6c 73 20 3d 20 5b 31 2c 20 30 2e 32 2c tials = [1, 0.2,
90510 20 30 2e 30 31 5d 3b 0a 09 09 20 2a 2f 0a 09 20 0.01];... */..
90520 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
90530 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 4f 6d Property(Tone.Om
90540 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f niOscillator.pro
90550 74 6f 74 79 70 65 2c 20 27 70 61 72 74 69 61 6c totype, 'partial
90560 73 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 s', {.. g
90570 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
90580 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
90590 65 74 75 72 6e 20 74 68 69 73 2e 5f 6f 73 63 69 eturn this._osci
905a0 6c 6c 61 74 6f 72 2e 70 61 72 74 69 61 6c 73 3b llator.partials;
905b0 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
905c0 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
905d0 69 6f 6e 20 28 70 61 72 74 69 61 6c 73 29 20 7b ion (partials) {
905e0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
905f0 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 2e 70 is._oscillator.p
90600 61 72 74 69 61 6c 73 20 3d 20 70 61 72 74 69 61 artials = partia
90610 6c 73 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 ls;.. }..
90620 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
90630 0a 09 09 20 2a 20 20 53 65 74 20 61 20 6d 65 6d ... * Set a mem
90640 62 65 72 2f 61 74 74 72 69 62 75 74 65 20 6f 66 ber/attribute of
90650 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 2e the oscillator.
90660 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b ... * @param {
90670 4f 62 6a 65 63 74 7c 53 74 72 69 6e 67 7d 20 70 Object|String} p
90680 61 72 61 6d 73 0a 09 09 20 2a 20 20 40 70 61 72 arams... * @par
90690 61 6d 20 7b 6e 75 6d 62 65 72 3d 7d 20 76 61 6c am {number=} val
906a0 75 65 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 ue... * @param
906b0 7b 54 69 6d 65 3d 7d 20 72 61 6d 70 54 69 6d 65 {Time=} rampTime
906c0 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
906d0 7b 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c {Tone.OmniOscill
906e0 61 74 6f 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f ator} this... */
906f0 0a 09 20 20 20 20 54 6f 6e 65 2e 4f 6d 6e 69 4f .. Tone.OmniO
90700 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 scillator.protot
90710 79 70 65 2e 73 65 74 20 3d 20 66 75 6e 63 74 69 ype.set = functi
90720 6f 6e 20 28 70 61 72 61 6d 73 2c 20 76 61 6c 75 on (params, valu
90730 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f 2f e) {.. //
90740 6d 61 6b 65 20 73 75 72 65 20 74 68 65 20 74 79 make sure the ty
90750 70 65 20 69 73 20 73 65 74 20 66 69 72 73 74 0a pe is set first.
90760 09 20 20 20 20 20 20 20 20 69 66 20 28 70 61 72 . if (par
90770 61 6d 73 20 3d 3d 3d 20 27 74 79 70 65 27 29 20 ams === 'type')
90780 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
90790 68 69 73 2e 74 79 70 65 20 3d 20 76 61 6c 75 65 his.type = value
907a0 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 ;.. } els
907b0 65 20 69 66 20 28 74 68 69 73 2e 69 73 4f 62 6a e if (this.isObj
907c0 65 63 74 28 70 61 72 61 6d 73 29 20 26 26 20 70 ect(params) && p
907d0 61 72 61 6d 73 2e 68 61 73 4f 77 6e 50 72 6f 70 arams.hasOwnProp
907e0 65 72 74 79 28 27 74 79 70 65 27 29 29 20 7b 0a erty('type')) {.
907f0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
90800 73 2e 74 79 70 65 20 3d 20 70 61 72 61 6d 73 2e s.type = params.
90810 74 79 70 65 3b 0a 09 20 20 20 20 20 20 20 20 7d type;.. }
90820 0a 09 20 20 20 20 20 20 20 20 2f 2f 74 68 65 6e .. //then
90830 20 73 65 74 20 74 68 65 20 72 65 73 74 0a 09 20 set the rest..
90840 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 6f 74 Tone.prot
90850 6f 74 79 70 65 2e 73 65 74 2e 61 70 70 6c 79 28 otype.set.apply(
90860 74 68 69 73 2c 20 61 72 67 75 6d 65 6e 74 73 29 this, arguments)
90870 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
90880 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
90890 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 63 . /**... * c
908a0 6f 6e 6e 65 63 74 20 74 68 65 20 6f 73 63 69 6c onnect the oscil
908b0 6c 61 74 6f 72 20 74 6f 20 74 68 65 20 66 72 65 lator to the fre
908c0 71 75 65 6e 63 79 20 61 6e 64 20 64 65 74 75 6e quency and detun
908d0 65 20 73 69 67 6e 61 6c 73 0a 09 09 20 2a 20 20 e signals... *
908e0 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 @private... */..
908f0 20 20 20 20 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 Tone.OmniOsc
90900 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 illator.prototyp
90910 65 2e 5f 63 72 65 61 74 65 4e 65 77 4f 73 63 69 e._createNewOsci
90920 6c 6c 61 74 6f 72 20 3d 20 66 75 6e 63 74 69 6f llator = functio
90930 6e 20 28 6f 73 63 54 79 70 65 29 20 7b 0a 09 20 n (oscType) {..
90940 20 20 20 20 20 20 20 69 66 20 28 6f 73 63 54 79 if (oscTy
90950 70 65 20 21 3d 3d 20 74 68 69 73 2e 5f 73 6f 75 pe !== this._sou
90960 72 63 65 54 79 70 65 29 20 7b 0a 09 20 20 20 20 rceType) {..
90970 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 6f this._so
90980 75 72 63 65 54 79 70 65 20 3d 20 6f 73 63 54 79 urceType = oscTy
90990 70 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 pe;..
909a0 20 76 61 72 20 4f 73 63 69 6c 6c 61 74 6f 72 43 var OscillatorC
909b0 6f 6e 73 74 72 75 63 74 6f 72 20 3d 20 54 6f 6e onstructor = Ton
909c0 65 5b 6f 73 63 54 79 70 65 5d 3b 0a 09 20 20 20 e[oscType];..
909d0 20 20 20 20 20 20 20 20 20 2f 2f 73 68 6f 72 74 //short
909e0 20 64 65 6c 61 79 20 74 6f 20 61 76 6f 69 64 20 delay to avoid
909f0 63 6c 69 63 6b 73 20 6f 6e 20 74 68 65 20 63 68 clicks on the ch
90a00 61 6e 67 65 0a 09 20 20 20 20 20 20 20 20 20 20 ange..
90a10 20 20 76 61 72 20 6e 6f 77 20 3d 20 74 68 69 73 var now = this
90a20 2e 6e 6f 77 28 29 20 2b 20 74 68 69 73 2e 62 6c .now() + this.bl
90a30 6f 63 6b 54 69 6d 65 3b 0a 09 20 20 20 20 20 20 ockTime;..
90a40 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f if (this._
90a50 6f 73 63 69 6c 6c 61 74 6f 72 20 21 3d 3d 20 6e oscillator !== n
90a60 75 6c 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ull) {..
90a70 20 20 20 20 20 20 20 20 76 61 72 20 6f 6c 64 4f var oldO
90a80 73 63 20 3d 20 74 68 69 73 2e 5f 6f 73 63 69 6c sc = this._oscil
90a90 6c 61 74 6f 72 3b 0a 09 20 20 20 20 20 20 20 20 lator;..
90aa0 20 20 20 20 20 20 20 20 6f 6c 64 4f 73 63 2e 73 oldOsc.s
90ab0 74 6f 70 28 6e 6f 77 29 3b 0a 09 20 20 20 20 20 top(now);..
90ac0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 64 69 73 //dis
90ad0 70 6f 73 65 20 74 68 65 20 6f 6c 64 20 6f 6e 65 pose the old one
90ae0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
90af0 20 20 73 65 74 54 69 6d 65 6f 75 74 28 66 75 6e setTimeout(fun
90b00 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
90b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
90b20 6f 6c 64 4f 73 63 2e 64 69 73 70 6f 73 65 28 29 oldOsc.dispose()
90b30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
90b40 20 20 20 20 20 20 20 6f 6c 64 4f 73 63 20 3d 20 oldOsc =
90b50 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 20 null;..
90b60 20 20 20 20 20 20 20 7d 2c 20 74 68 69 73 2e 62 }, this.b
90b70 6c 6f 63 6b 54 69 6d 65 20 2a 20 31 30 30 30 29 lockTime * 1000)
90b80 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
90b90 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
90ba0 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 20 3d is._oscillator =
90bb0 20 6e 65 77 20 4f 73 63 69 6c 6c 61 74 6f 72 43 new OscillatorC
90bc0 6f 6e 73 74 72 75 63 74 6f 72 28 29 3b 0a 09 20 onstructor();..
90bd0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
90be0 66 72 65 71 75 65 6e 63 79 2e 63 6f 6e 6e 65 63 frequency.connec
90bf0 74 28 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 t(this._oscillat
90c00 6f 72 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a 09 or.frequency);..
90c10 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
90c20 2e 64 65 74 75 6e 65 2e 63 6f 6e 6e 65 63 74 28 .detune.connect(
90c30 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 this._oscillator
90c40 2e 64 65 74 75 6e 65 29 3b 0a 09 20 20 20 20 20 .detune);..
90c50 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 this._osc
90c60 69 6c 6c 61 74 6f 72 2e 63 6f 6e 6e 65 63 74 28 illator.connect(
90c70 74 68 69 73 2e 6f 75 74 70 75 74 29 3b 0a 09 20 this.output);..
90c80 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 if (t
90c90 68 69 73 2e 73 74 61 74 65 20 3d 3d 3d 20 54 6f his.state === To
90ca0 6e 65 2e 53 74 61 74 65 2e 53 74 61 72 74 65 64 ne.State.Started
90cb0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
90cc0 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c this._oscil
90cd0 6c 61 74 6f 72 2e 73 74 61 72 74 28 6e 6f 77 29 lator.start(now)
90ce0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
90cf0 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
90d00 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
90d10 2a 20 54 68 65 20 70 68 61 73 65 20 6f 66 20 74 * The phase of t
90d20 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 20 69 6e he oscillator in
90d30 20 64 65 67 72 65 65 73 2e 20 0a 09 09 20 2a 20 degrees. ... *
90d40 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 4f @memberOf Tone.O
90d50 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 23 0a 09 mniOscillator#..
90d60 09 20 2a 20 40 74 79 70 65 20 7b 44 65 67 72 65 . * @type {Degre
90d70 65 73 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 70 es}... * @name p
90d80 68 61 73 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 hase... */..
90d90 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
90da0 70 65 72 74 79 28 54 6f 6e 65 2e 4f 6d 6e 69 4f perty(Tone.OmniO
90db0 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f 74 scillator.protot
90dc0 79 70 65 2c 20 27 70 68 61 73 65 27 2c 20 7b 0a ype, 'phase', {.
90dd0 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
90de0 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
90df0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
90e00 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 this._oscillator
90e10 2e 70 68 61 73 65 3b 0a 09 20 20 20 20 20 20 20 .phase;..
90e20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 },.. set
90e30 3a 20 66 75 6e 63 74 69 6f 6e 20 28 70 68 61 73 : function (phas
90e40 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
90e50 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 this._oscillat
90e60 6f 72 2e 70 68 61 73 65 20 3d 20 70 68 61 73 65 or.phase = phase
90e70 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
90e80 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 });.. /**..
90e90 09 20 2a 20 54 68 65 20 77 69 64 74 68 20 6f 66 . * The width of
90ea0 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 20 the oscillator
90eb0 28 6f 6e 6c 79 20 69 66 20 74 68 65 20 6f 73 63 (only if the osc
90ec0 69 6c 6c 61 74 6f 72 20 69 73 20 73 65 74 20 74 illator is set t
90ed0 6f 20 22 70 75 6c 73 65 22 29 0a 09 09 20 2a 20 o "pulse")... *
90ee0 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 4f @memberOf Tone.O
90ef0 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 23 0a 09 mniOscillator#..
90f00 09 20 2a 20 40 74 79 70 65 20 7b 4e 6f 72 6d 61 . * @type {Norma
90f10 6c 52 61 6e 67 65 7d 0a 09 09 20 2a 20 40 73 69 lRange}... * @si
90f20 67 6e 61 6c 0a 09 09 20 2a 20 40 6e 61 6d 65 20 gnal... * @name
90f30 77 69 64 74 68 0a 09 09 20 2a 20 40 65 78 61 6d width... * @exam
90f40 70 6c 65 0a 09 09 20 2a 20 76 61 72 20 6f 6d 6e ple... * var omn
90f50 69 4f 73 63 20 3d 20 6e 65 77 20 54 6f 6e 65 2e iOsc = new Tone.
90f60 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 28 34 OmniOscillator(4
90f70 34 30 2c 20 22 70 75 6c 73 65 22 29 3b 0a 09 09 40, "pulse");...
90f80 20 2a 20 2f 2f 63 61 6e 20 61 63 63 65 73 73 20 * //can access
90f90 74 68 65 20 77 69 64 74 68 20 61 74 74 72 69 62 the width attrib
90fa0 75 74 65 20 6f 6e 6c 79 20 69 66 20 74 79 70 65 ute only if type
90fb0 20 3d 3d 3d 20 22 70 75 6c 73 65 22 0a 09 09 20 === "pulse"...
90fc0 2a 20 6f 6d 6e 69 4f 73 63 2e 77 69 64 74 68 2e * omniOsc.width.
90fd0 76 61 6c 75 65 20 3d 20 30 2e 32 3b 20 0a 09 09 value = 0.2; ...
90fe0 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
90ff0 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
91000 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 one.OmniOscillat
91010 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 77 or.prototype, 'w
91020 69 64 74 68 27 2c 20 7b 0a 09 20 20 20 20 20 20 idth', {..
91030 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
91040 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
91050 20 20 69 66 20 28 74 68 69 73 2e 5f 73 6f 75 72 if (this._sour
91060 63 65 54 79 70 65 20 3d 3d 3d 20 4f 6d 6e 69 4f ceType === OmniO
91070 73 63 54 79 70 65 2e 50 75 6c 73 65 29 20 7b 0a scType.Pulse) {.
91080 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
91090 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6f 73 return this._os
910a0 63 69 6c 6c 61 74 6f 72 2e 77 69 64 74 68 3b 0a cillator.width;.
910b0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
910c0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
910d0 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
910e0 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 64 The number of d
910f0 65 74 75 6e 65 64 20 6f 73 63 69 6c 6c 61 74 6f etuned oscillato
91100 72 73 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f rs... * @memberO
91110 66 20 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c f Tone.OmniOscil
91120 6c 61 74 6f 72 23 0a 09 09 20 2a 20 40 74 79 70 lator#... * @typ
91130 65 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 e {Number}... *
91140 40 6e 61 6d 65 20 63 6f 75 6e 74 0a 09 09 20 2a @name count... *
91150 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
91160 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
91170 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 e.OmniOscillator
91180 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 63 6f 75 .prototype, 'cou
91190 6e 74 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 nt', {..
911a0 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 get: function ()
911b0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
911c0 69 66 20 28 74 68 69 73 2e 5f 73 6f 75 72 63 65 if (this._source
911d0 54 79 70 65 20 3d 3d 3d 20 4f 6d 6e 69 4f 73 63 Type === OmniOsc
911e0 54 79 70 65 2e 46 61 74 29 20 7b 0a 09 20 20 20 Type.Fat) {..
911f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
91200 75 72 6e 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c urn this._oscill
91210 61 74 6f 72 2e 63 6f 75 6e 74 3b 0a 09 20 20 20 ator.count;..
91220 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
91230 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
91240 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 63 set: function (c
91250 6f 75 6e 74 29 20 7b 0a 09 20 20 20 20 20 20 20 ount) {..
91260 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 73 if (this._s
91270 6f 75 72 63 65 54 79 70 65 20 3d 3d 3d 20 4f 6d ourceType === Om
91280 6e 69 4f 73 63 54 79 70 65 2e 46 61 74 29 20 7b niOscType.Fat) {
91290 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
912a0 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 this._oscillat
912b0 6f 72 2e 63 6f 75 6e 74 20 3d 20 63 6f 75 6e 74 or.count = count
912c0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
912d0 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
912e0 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
912f0 20 2a 20 54 68 65 20 64 65 74 75 6e 65 20 73 70 * The detune sp
91300 72 65 61 64 20 62 65 74 77 65 65 6e 20 74 68 65 read between the
91310 20 6f 73 63 69 6c 6c 61 74 6f 72 73 2e 20 49 66 oscillators. If
91320 20 22 63 6f 75 6e 74 22 20 69 73 0a 09 09 20 2a "count" is... *
91330 20 73 65 74 20 74 6f 20 33 20 6f 73 63 69 6c 6c set to 3 oscill
91340 61 74 6f 72 73 20 61 6e 64 20 74 68 65 20 22 73 ators and the "s
91350 70 72 65 61 64 22 20 69 73 20 73 65 74 20 74 6f pread" is set to
91360 20 34 30 2c 0a 09 09 20 2a 20 74 68 65 20 74 68 40,... * the th
91370 72 65 65 20 6f 73 63 69 6c 6c 61 74 6f 72 73 20 ree oscillators
91380 77 6f 75 6c 64 20 62 65 20 64 65 74 75 6e 65 64 would be detuned
91390 20 6c 69 6b 65 20 74 68 69 73 3a 20 5b 2d 32 30 like this: [-20
913a0 2c 20 30 2c 20 32 30 5d 0a 09 09 20 2a 20 66 6f , 0, 20]... * fo
913b0 72 20 61 20 74 6f 74 61 6c 20 64 65 74 75 6e 65 r a total detune
913c0 20 73 70 72 65 61 64 20 6f 66 20 34 30 20 63 65 spread of 40 ce
913d0 6e 74 73 2e 20 53 65 65 20 54 6f 6e 65 2e 46 61 nts. See Tone.Fa
913e0 74 4f 73 63 69 6c 6c 61 74 6f 72 0a 09 09 20 2a tOscillator... *
913f0 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 2e 0a for more info..
91400 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 .. * @memberOf T
91410 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 one.OmniOscillat
91420 6f 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b or#... * @type {
91430 43 65 6e 74 73 7d 0a 09 09 20 2a 20 40 6e 61 6d Cents}... * @nam
91440 65 20 73 70 72 65 61 64 0a 09 09 20 2a 2f 0a 09 e spread... */..
91450 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
91460 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 4f eProperty(Tone.O
91470 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 mniOscillator.pr
91480 6f 74 6f 74 79 70 65 2c 20 27 73 70 72 65 61 64 ototype, 'spread
91490 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 ', {.. ge
914a0 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b t: function () {
914b0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
914c0 20 28 74 68 69 73 2e 5f 73 6f 75 72 63 65 54 79 (this._sourceTy
914d0 70 65 20 3d 3d 3d 20 4f 6d 6e 69 4f 73 63 54 79 pe === OmniOscTy
914e0 70 65 2e 46 61 74 29 20 7b 0a 09 20 20 20 20 20 pe.Fat) {..
914f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
91500 6e 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 n this._oscillat
91510 6f 72 2e 73 70 72 65 61 64 3b 0a 09 20 20 20 20 or.spread;..
91520 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
91530 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 },.. s
91540 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 73 70 et: function (sp
91550 72 65 61 64 29 20 7b 0a 09 20 20 20 20 20 20 20 read) {..
91560 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 73 if (this._s
91570 6f 75 72 63 65 54 79 70 65 20 3d 3d 3d 20 4f 6d ourceType === Om
91580 6e 69 4f 73 63 54 79 70 65 2e 46 61 74 29 20 7b niOscType.Fat) {
91590 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
915a0 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 this._oscillat
915b0 6f 72 2e 73 70 72 65 61 64 20 3d 20 73 70 72 65 or.spread = spre
915c0 61 64 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ad;..
915d0 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 }.. }..
915e0 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
915f0 09 09 20 2a 20 54 68 65 20 74 79 70 65 20 6f 66 .. * The type of
91600 20 74 68 65 20 6d 6f 64 75 6c 61 74 6f 72 20 6f the modulator o
91610 73 63 69 6c 6c 61 74 6f 72 2e 20 4f 6e 6c 79 20 scillator. Only
91620 69 66 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f if the oscillato
91630 72 0a 09 09 20 2a 20 69 73 20 73 65 74 20 74 6f r... * is set to
91640 20 22 61 6d 22 20 6f 72 20 22 66 6d 22 20 74 79 "am" or "fm" ty
91650 70 65 73 2e 20 73 65 65 2e 20 54 6f 6e 65 2e 41 pes. see. Tone.A
91660 4d 4f 73 63 69 6c 6c 61 74 6f 72 20 6f 72 20 54 MOscillator or T
91670 6f 6e 65 2e 46 4d 4f 73 63 69 6c 6c 61 74 6f 72 one.FMOscillator
91680 0a 09 09 20 2a 20 66 6f 72 20 6d 6f 72 65 20 69 ... * for more i
91690 6e 66 6f 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 nfo. ... * @memb
916a0 65 72 4f 66 20 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 erOf Tone.OmniOs
916b0 63 69 6c 6c 61 74 6f 72 23 0a 09 09 20 2a 20 40 cillator#... * @
916c0 74 79 70 65 20 7b 53 74 72 69 6e 67 7d 0a 09 09 type {String}...
916d0 20 2a 20 40 6e 61 6d 65 20 6d 6f 64 75 6c 61 74 * @name modulat
916e0 69 6f 6e 54 79 70 65 0a 09 09 20 2a 2f 0a 09 20 ionType... */..
916f0 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
91700 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 4f 6d Property(Tone.Om
91710 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f niOscillator.pro
91720 74 6f 74 79 70 65 2c 20 27 6d 6f 64 75 6c 61 74 totype, 'modulat
91730 69 6f 6e 54 79 70 65 27 2c 20 7b 0a 09 20 20 20 ionType', {..
91740 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 get: functi
91750 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
91760 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 73 if (this._s
91770 6f 75 72 63 65 54 79 70 65 20 3d 3d 3d 20 4f 6d ourceType === Om
91780 6e 69 4f 73 63 54 79 70 65 2e 46 4d 20 7c 7c 20 niOscType.FM ||
91790 74 68 69 73 2e 5f 73 6f 75 72 63 65 54 79 70 65 this._sourceType
917a0 20 3d 3d 3d 20 4f 6d 6e 69 4f 73 63 54 79 70 65 === OmniOscType
917b0 2e 41 4d 29 20 7b 0a 09 20 20 20 20 20 20 20 20 .AM) {..
917c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
917d0 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 2e his._oscillator.
917e0 6d 6f 64 75 6c 61 74 69 6f 6e 54 79 70 65 3b 0a modulationType;.
917f0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
91800 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 },..
91810 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f set: functio
91820 6e 20 28 6d 54 79 70 65 29 20 7b 0a 09 20 20 20 n (mType) {..
91830 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 if (thi
91840 73 2e 5f 73 6f 75 72 63 65 54 79 70 65 20 3d 3d s._sourceType ==
91850 3d 20 4f 6d 6e 69 4f 73 63 54 79 70 65 2e 46 4d = OmniOscType.FM
91860 20 7c 7c 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 || this._source
91870 54 79 70 65 20 3d 3d 3d 20 4f 6d 6e 69 4f 73 63 Type === OmniOsc
91880 54 79 70 65 2e 41 4d 29 20 7b 0a 09 20 20 20 20 Type.AM) {..
91890 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
918a0 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 2e 6d 6f 64 ._oscillator.mod
918b0 75 6c 61 74 69 6f 6e 54 79 70 65 20 3d 20 6d 54 ulationType = mT
918c0 79 70 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ype;..
918d0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 }.. }..
918e0 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a });.. /**
918f0 0a 09 09 20 2a 20 54 68 65 20 6d 6f 64 75 6c 61 ... * The modula
91900 74 69 6f 6e 20 69 6e 64 65 78 20 77 68 69 63 68 tion index which
91910 20 69 73 20 69 6e 20 65 73 73 65 6e 63 65 20 74 is in essence t
91920 68 65 20 64 65 70 74 68 20 6f 72 20 61 6d 6f 75 he depth or amou
91930 6e 74 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 61 nt of the modula
91940 74 69 6f 6e 2e 20 49 6e 20 6f 74 68 65 72 20 74 tion. In other t
91950 65 72 6d 73 20 69 74 20 69 73 20 74 68 65 20 0a erms it is the .
91960 09 09 20 2a 20 72 61 74 69 6f 20 6f 66 20 74 68 .. * ratio of th
91970 65 20 66 72 65 71 75 65 6e 63 79 20 6f 66 20 74 e frequency of t
91980 68 65 20 6d 6f 64 75 6c 61 74 69 6e 67 20 73 69 he modulating si
91990 67 6e 61 6c 20 28 6d 66 29 20 74 6f 20 74 68 65 gnal (mf) to the
919a0 20 61 6d 70 6c 69 74 75 64 65 20 6f 66 20 74 68 amplitude of th
919b0 65 20 0a 09 09 20 2a 20 6d 6f 64 75 6c 61 74 69 e ... * modulati
919c0 6e 67 20 73 69 67 6e 61 6c 20 28 6d 61 29 20 2d ng signal (ma) -
919d0 2d 20 61 73 20 69 6e 20 6d 61 2f 6d 66 2e 20 0a - as in ma/mf. .
919e0 09 09 20 2a 20 53 65 65 20 54 6f 6e 65 2e 46 4d .. * See Tone.FM
919f0 4f 73 63 69 6c 6c 61 74 6f 72 20 66 6f 72 20 6d Oscillator for m
91a00 6f 72 65 20 69 6e 66 6f 2e 20 0a 09 09 20 2a 20 ore info. ... *
91a10 40 74 79 70 65 20 7b 50 6f 73 69 74 69 76 65 7d @type {Positive}
91a20 0a 09 09 20 2a 20 40 73 69 67 6e 61 6c 0a 09 09 ... * @signal...
91a30 20 2a 20 40 6e 61 6d 65 20 6d 6f 64 75 6c 61 74 * @name modulat
91a40 69 6f 6e 49 6e 64 65 78 0a 09 09 20 2a 2f 0a 09 ionIndex... */..
91a50 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
91a60 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 4f eProperty(Tone.O
91a70 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 mniOscillator.pr
91a80 6f 74 6f 74 79 70 65 2c 20 27 6d 6f 64 75 6c 61 ototype, 'modula
91a90 74 69 6f 6e 49 6e 64 65 78 27 2c 20 7b 0a 09 20 tionIndex', {..
91aa0 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
91ab0 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
91ac0 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e if (this.
91ad0 5f 73 6f 75 72 63 65 54 79 70 65 20 3d 3d 3d 20 _sourceType ===
91ae0 4f 6d 6e 69 4f 73 63 54 79 70 65 2e 46 4d 29 20 OmniOscType.FM)
91af0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
91b00 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
91b10 6f 73 63 69 6c 6c 61 74 6f 72 2e 6d 6f 64 75 6c oscillator.modul
91b20 61 74 69 6f 6e 49 6e 64 65 78 3b 0a 09 20 20 20 ationIndex;..
91b30 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
91b40 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
91b50 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 48 61 /**... * Ha
91b60 72 6d 6f 6e 69 63 69 74 79 20 69 73 20 74 68 65 rmonicity is the
91b70 20 66 72 65 71 75 65 6e 63 79 20 72 61 74 69 6f frequency ratio
91b80 20 62 65 74 77 65 65 6e 20 74 68 65 20 63 61 72 between the car
91b90 72 69 65 72 20 61 6e 64 20 74 68 65 20 6d 6f 64 rier and the mod
91ba0 75 6c 61 74 6f 72 20 6f 73 63 69 6c 6c 61 74 6f ulator oscillato
91bb0 72 73 2e 20 0a 09 09 20 2a 20 20 41 20 68 61 72 rs. ... * A har
91bc0 6d 6f 6e 69 63 69 74 79 20 6f 66 20 31 20 67 69 monicity of 1 gi
91bd0 76 65 73 20 62 6f 74 68 20 6f 73 63 69 6c 6c 61 ves both oscilla
91be0 74 6f 72 73 20 74 68 65 20 73 61 6d 65 20 66 72 tors the same fr
91bf0 65 71 75 65 6e 63 79 2e 20 0a 09 09 20 2a 20 20 equency. ... *
91c00 48 61 72 6d 6f 6e 69 63 69 74 79 20 3d 20 32 20 Harmonicity = 2
91c10 6d 65 61 6e 73 20 61 20 63 68 61 6e 67 65 20 6f means a change o
91c20 66 20 61 6e 20 6f 63 74 61 76 65 2e 20 53 65 65 f an octave. See
91c30 20 54 6f 6e 65 2e 41 4d 4f 73 63 69 6c 6c 61 74 Tone.AMOscillat
91c40 6f 72 20 6f 72 20 54 6f 6e 65 2e 46 4d 4f 73 63 or or Tone.FMOsc
91c50 69 6c 6c 61 74 6f 72 0a 09 09 20 2a 20 20 66 6f illator... * fo
91c60 72 20 6d 6f 72 65 20 69 6e 66 6f 2e 20 0a 09 09 r more info. ...
91c70 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f * @memberOf To
91c80 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f ne.OmniOscillato
91c90 72 23 0a 09 09 20 2a 20 20 40 73 69 67 6e 61 6c r#... * @signal
91ca0 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 50 6f ... * @type {Po
91cb0 73 69 74 69 76 65 7d 0a 09 09 20 2a 20 20 40 6e sitive}... * @n
91cc0 61 6d 65 20 68 61 72 6d 6f 6e 69 63 69 74 79 0a ame harmonicity.
91cd0 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 .. */.. Objec
91ce0 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 t.defineProperty
91cf0 28 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c (Tone.OmniOscill
91d00 61 74 6f 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 ator.prototype,
91d10 27 68 61 72 6d 6f 6e 69 63 69 74 79 27 2c 20 7b 'harmonicity', {
91d20 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 .. get: f
91d30 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
91d40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 if (th
91d50 69 73 2e 5f 73 6f 75 72 63 65 54 79 70 65 20 3d is._sourceType =
91d60 3d 3d 20 4f 6d 6e 69 4f 73 63 54 79 70 65 2e 46 == OmniOscType.F
91d70 4d 20 7c 7c 20 74 68 69 73 2e 5f 73 6f 75 72 63 M || this._sourc
91d80 65 54 79 70 65 20 3d 3d 3d 20 4f 6d 6e 69 4f 73 eType === OmniOs
91d90 63 54 79 70 65 2e 41 4d 29 20 7b 0a 09 20 20 20 cType.AM) {..
91da0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
91db0 75 72 6e 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c urn this._oscill
91dc0 61 74 6f 72 2e 68 61 72 6d 6f 6e 69 63 69 74 79 ator.harmonicity
91dd0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
91de0 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
91df0 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
91e00 20 2a 20 54 68 65 20 6d 6f 64 75 6c 61 74 69 6f * The modulatio
91e10 6e 46 72 65 71 75 65 6e 63 79 20 53 69 67 6e 61 nFrequency Signa
91e20 6c 20 6f 66 20 74 68 65 20 6f 73 63 69 6c 6c 61 l of the oscilla
91e30 74 6f 72 20 0a 09 09 20 2a 20 28 6f 6e 6c 79 20 tor ... * (only
91e40 69 66 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f if the oscillato
91e50 72 20 74 79 70 65 20 69 73 20 73 65 74 20 74 6f r type is set to
91e60 20 70 77 6d 29 2e 20 53 65 65 20 0a 09 09 20 2a pwm). See ... *
91e70 20 54 6f 6e 65 2e 50 57 4d 4f 73 63 69 6c 6c 61 Tone.PWMOscilla
91e80 74 6f 72 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 tor for more inf
91e90 6f 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 o. ... * @member
91ea0 4f 66 20 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 Of Tone.OmniOsci
91eb0 6c 6c 61 74 6f 72 23 0a 09 09 20 2a 20 40 74 79 llator#... * @ty
91ec0 70 65 20 7b 46 72 65 71 75 65 6e 63 79 7d 0a 09 pe {Frequency}..
91ed0 09 20 2a 20 40 73 69 67 6e 61 6c 0a 09 09 20 2a . * @signal... *
91ee0 20 40 6e 61 6d 65 20 6d 6f 64 75 6c 61 74 69 6f @name modulatio
91ef0 6e 46 72 65 71 75 65 6e 63 79 0a 09 09 20 2a 20 nFrequency... *
91f00 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 76 61 @example... * va
91f10 72 20 6f 6d 6e 69 4f 73 63 20 3d 20 6e 65 77 20 r omniOsc = new
91f20 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 Tone.OmniOscilla
91f30 74 6f 72 28 34 34 30 2c 20 22 70 77 6d 22 29 3b tor(440, "pwm");
91f40 0a 09 09 20 2a 20 2f 2f 63 61 6e 20 61 63 63 65 ... * //can acce
91f50 73 73 20 74 68 65 20 6d 6f 64 75 6c 61 74 69 6f ss the modulatio
91f60 6e 46 72 65 71 75 65 6e 63 79 20 61 74 74 72 69 nFrequency attri
91f70 62 75 74 65 20 6f 6e 6c 79 20 69 66 20 74 79 70 bute only if typ
91f80 65 20 3d 3d 3d 20 22 70 77 6d 22 0a 09 09 20 2a e === "pwm"... *
91f90 20 6f 6d 6e 69 4f 73 63 2e 6d 6f 64 75 6c 61 74 omniOsc.modulat
91fa0 69 6f 6e 46 72 65 71 75 65 6e 63 79 2e 76 61 6c ionFrequency.val
91fb0 75 65 20 3d 20 30 2e 32 3b 20 0a 09 09 20 2a 2f ue = 0.2; ... */
91fc0 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 .. Object.def
91fd0 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 ineProperty(Tone
91fe0 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 2e .OmniOscillator.
91ff0 70 72 6f 74 6f 74 79 70 65 2c 20 27 6d 6f 64 75 prototype, 'modu
92000 6c 61 74 69 6f 6e 46 72 65 71 75 65 6e 63 79 27 lationFrequency'
92010 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
92020 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
92030 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
92040 28 74 68 69 73 2e 5f 73 6f 75 72 63 65 54 79 70 (this._sourceTyp
92050 65 20 3d 3d 3d 20 4f 6d 6e 69 4f 73 63 54 79 70 e === OmniOscTyp
92060 65 2e 50 57 4d 29 20 7b 0a 09 20 20 20 20 20 20 e.PWM) {..
92070 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
92080 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f this._oscillato
92090 72 2e 6d 6f 64 75 6c 61 74 69 6f 6e 46 72 65 71 r.modulationFreq
920a0 75 65 6e 63 79 3b 0a 09 20 20 20 20 20 20 20 20 uency;..
920b0 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d }.. }
920c0 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f .. });.. /
920d0 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 **... * Clean u
920e0 70 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e p.... * @return
920f0 20 7b 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c {Tone.OmniOscil
92100 6c 61 74 6f 72 7d 20 74 68 69 73 0a 09 09 20 2a lator} this... *
92110 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4f 6d 6e 69 /.. Tone.Omni
92120 4f 73 63 69 6c 6c 61 74 6f 72 2e 70 72 6f 74 6f Oscillator.proto
92130 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 type.dispose = f
92140 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
92150 20 20 20 20 20 20 54 6f 6e 65 2e 53 6f 75 72 63 Tone.Sourc
92160 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 e.prototype.disp
92170 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a ose.call(this);.
92180 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 77 . this._w
92190 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 20 20 ritable([..
921a0 20 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 'frequenc
921b0 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 y',..
921c0 20 27 64 65 74 75 6e 65 27 0a 09 20 20 20 20 20 'detune'..
921d0 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 ]);..
921e0 74 68 69 73 2e 64 65 74 75 6e 65 2e 64 69 73 70 this.detune.disp
921f0 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
92200 74 68 69 73 2e 64 65 74 75 6e 65 20 3d 20 6e 75 this.detune = nu
92210 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
92220 73 2e 66 72 65 71 75 65 6e 63 79 2e 64 69 73 70 s.frequency.disp
92230 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
92240 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 20 3d this.frequency =
92250 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
92260 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 this._oscillator
92270 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
92280 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c this._oscil
92290 6c 61 74 6f 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 lator = null;..
922a0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 6f 75 this._sou
922b0 72 63 65 54 79 70 65 20 3d 20 6e 75 6c 6c 3b 0a rceType = null;.
922c0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
922d0 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
922e0 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 4f return Tone.O
922f0 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 3b 0a 09 mniOscillator;..
92300 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 });..Module(func
92310 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 tion (Tone) {..
92320 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 .. /**...
92330 2a 20 20 40 63 6c 61 73 73 20 20 42 61 73 65 2d * @class Base-
92340 63 6c 61 73 73 20 66 6f 72 20 61 6c 6c 20 69 6e class for all in
92350 73 74 72 75 6d 65 6e 74 73 0a 09 09 20 2a 20 20 struments... *
92360 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 ... * @construc
92370 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 74 65 6e tor... * @exten
92380 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 20 2a 2f 0a ds {Tone}... */.
92390 09 20 20 20 20 54 6f 6e 65 2e 49 6e 73 74 72 75 . Tone.Instru
923a0 6d 65 6e 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 ment = function
923b0 28 6f 70 74 69 6f 6e 73 29 20 7b 0a 09 20 20 20 (options) {..
923c0 20 20 20 20 20 2f 2f 67 65 74 20 74 68 65 20 64 //get the d
923d0 65 66 61 75 6c 74 73 0a 09 20 20 20 20 20 20 20 efaults..
923e0 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e options = this.
923f0 64 65 66 61 75 6c 74 41 72 67 28 6f 70 74 69 6f defaultArg(optio
92400 6e 73 2c 20 54 6f 6e 65 2e 49 6e 73 74 72 75 6d ns, Tone.Instrum
92410 65 6e 74 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 ent.defaults);..
92420 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
92430 2a 20 20 54 68 65 20 6f 75 74 70 75 74 20 61 6e * The output an
92440 64 20 76 6f 6c 75 6d 65 20 74 72 69 6d 69 6e 67 d volume triming
92450 20 6e 6f 64 65 0a 09 09 09 20 2a 20 20 40 74 79 node.... * @ty
92460 70 65 20 20 7b 54 6f 6e 65 2e 56 6f 6c 75 6d 65 pe {Tone.Volume
92470 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
92480 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
92490 20 20 74 68 69 73 2e 5f 76 6f 6c 75 6d 65 20 3d this._volume =
924a0 20 74 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 6e this.output = n
924b0 65 77 20 54 6f 6e 65 2e 56 6f 6c 75 6d 65 28 6f ew Tone.Volume(o
924c0 70 74 69 6f 6e 73 2e 76 6f 6c 75 6d 65 29 3b 0a ptions.volume);.
924d0 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
924e0 20 2a 20 54 68 65 20 76 6f 6c 75 6d 65 20 6f 66 * The volume of
924f0 20 74 68 65 20 6f 75 74 70 75 74 20 69 6e 20 64 the output in d
92500 65 63 69 62 65 6c 73 2e 0a 09 09 09 20 2a 20 40 ecibels..... * @
92510 74 79 70 65 20 7b 44 65 63 69 62 65 6c 73 7d 0a type {Decibels}.
92520 09 09 09 20 2a 20 40 73 69 67 6e 61 6c 0a 09 09 ... * @signal...
92530 09 20 2a 20 40 65 78 61 6d 70 6c 65 0a 09 09 09 . * @example....
92540 20 2a 20 73 6f 75 72 63 65 2e 76 6f 6c 75 6d 65 * source.volume
92550 2e 76 61 6c 75 65 20 3d 20 2d 36 3b 0a 09 09 09 .value = -6;....
92560 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
92570 73 2e 76 6f 6c 75 6d 65 20 3d 20 74 68 69 73 2e s.volume = this.
92580 5f 76 6f 6c 75 6d 65 2e 76 6f 6c 75 6d 65 3b 0a _volume.volume;.
92590 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 . this._r
925a0 65 61 64 4f 6e 6c 79 28 27 76 6f 6c 75 6d 65 27 eadOnly('volume'
925b0 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
925c0 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 Tone.extend(Tone
925d0 2e 49 6e 73 74 72 75 6d 65 6e 74 29 3b 0a 09 20 .Instrument);..
925e0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 65 /**... * the
925f0 20 64 65 66 61 75 6c 74 20 61 74 74 72 69 62 75 default attribu
92600 74 65 73 0a 09 09 20 2a 20 20 40 74 79 70 65 20 tes... * @type
92610 7b 6f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 {object}... */..
92620 20 20 20 20 54 6f 6e 65 2e 49 6e 73 74 72 75 6d Tone.Instrum
92630 65 6e 74 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b ent.defaults = {
92640 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 20 74 68 .. /** th
92650 65 20 76 6f 6c 75 6d 65 20 6f 66 20 74 68 65 20 e volume of the
92660 6f 75 74 70 75 74 20 69 6e 20 64 65 63 69 62 65 output in decibe
92670 6c 73 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 27 ls */.. '
92680 76 6f 6c 75 6d 65 27 3a 20 30 0a 09 20 20 20 20 volume': 0..
92690 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
926a0 20 20 40 61 62 73 74 72 61 63 74 0a 09 09 20 2a @abstract... *
926b0 20 20 40 70 61 72 61 6d 20 7b 73 74 72 69 6e 67 @param {string
926c0 7c 6e 75 6d 62 65 72 7d 20 6e 6f 74 65 20 74 68 |number} note th
926d0 65 20 6e 6f 74 65 20 74 6f 20 74 72 69 67 67 65 e note to trigge
926e0 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b r... * @param {
926f0 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d Time} [time=now]
92700 20 74 68 65 20 74 69 6d 65 20 74 6f 20 74 72 69 the time to tri
92710 67 67 65 72 20 74 68 65 20 6e 74 6f 65 0a 09 09 gger the ntoe...
92720 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e 75 6d 62 * @param {numb
92730 65 72 7d 20 5b 76 65 6c 6f 63 69 74 79 3d 31 5d er} [velocity=1]
92740 20 74 68 65 20 76 65 6c 6f 63 69 74 79 20 74 6f the velocity to
92750 20 74 72 69 67 67 65 72 20 74 68 65 20 6e 6f 74 trigger the not
92760 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e e... */.. Ton
92770 65 2e 49 6e 73 74 72 75 6d 65 6e 74 2e 70 72 6f e.Instrument.pro
92780 74 6f 74 79 70 65 2e 74 72 69 67 67 65 72 41 74 totype.triggerAt
92790 74 61 63 6b 20 3d 20 54 6f 6e 65 2e 6e 6f 4f 70 tack = Tone.noOp
927a0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
927b0 20 40 61 62 73 74 72 61 63 74 0a 09 09 20 2a 20 @abstract... *
927c0 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 5b @param {Time} [
927d0 74 69 6d 65 3d 6e 6f 77 5d 20 77 68 65 6e 20 74 time=now] when t
927e0 6f 20 74 72 69 67 67 65 72 20 74 68 65 20 72 65 o trigger the re
927f0 6c 65 61 73 65 0a 09 09 20 2a 2f 0a 09 20 20 20 lease... */..
92800 20 54 6f 6e 65 2e 49 6e 73 74 72 75 6d 65 6e 74 Tone.Instrument
92810 2e 70 72 6f 74 6f 74 79 70 65 2e 74 72 69 67 67 .prototype.trigg
92820 65 72 52 65 6c 65 61 73 65 20 3d 20 54 6f 6e 65 erRelease = Tone
92830 2e 6e 6f 4f 70 3b 0a 09 20 20 20 20 2f 2a 2a 0a .noOp;.. /**.
92840 09 09 20 2a 20 20 54 72 69 67 67 65 72 20 74 68 .. * Trigger th
92850 65 20 61 74 74 61 63 6b 20 61 6e 64 20 74 68 65 e attack and the
92860 6e 20 74 68 65 20 72 65 6c 65 61 73 65 20 61 66 n the release af
92870 74 65 72 20 74 68 65 20 64 75 72 61 74 69 6f 6e ter the duration
92880 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 . ... * @param
92890 20 7b 46 72 65 71 75 65 6e 63 79 7d 20 6e 6f 74 {Frequency} not
928a0 65 20 20 20 20 20 54 68 65 20 6e 6f 74 65 20 74 e The note t
928b0 6f 20 74 72 69 67 67 65 72 2e 0a 09 09 20 2a 20 o trigger.... *
928c0 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 @param {Time}
928d0 64 75 72 61 74 69 6f 6e 20 48 6f 77 20 6c 6f 6e duration How lon
928e0 67 20 74 68 65 20 6e 6f 74 65 20 73 68 6f 75 6c g the note shoul
928f0 64 20 62 65 20 68 65 6c 64 20 66 6f 72 20 62 65 d be held for be
92900 66 6f 72 65 0a 09 09 20 2a 20 20 20 20 20 20 20 fore... *
92910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
92920 20 20 20 74 72 69 67 67 65 72 69 6e 67 20 74 68 triggering th
92930 65 20 72 65 6c 65 61 73 65 2e 0a 09 09 20 2a 20 e release.... *
92940 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 5b @param {Time} [
92950 74 69 6d 65 3d 6e 6f 77 5d 20 20 57 68 65 6e 20 time=now] When
92960 74 68 65 20 6e 6f 74 65 20 73 68 6f 75 6c 64 20 the note should
92970 62 65 20 74 72 69 67 67 65 72 65 64 2e 0a 09 09 be triggered....
92980 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 4e 6f 72 * @param {Nor
92990 6d 61 6c 52 61 6e 67 65 7d 20 5b 76 65 6c 6f 63 malRange} [veloc
929a0 69 74 79 3d 31 5d 20 54 68 65 20 76 65 6c 6f 63 ity=1] The veloc
929b0 69 74 79 20 74 68 65 20 6e 6f 74 65 20 73 68 6f ity the note sho
929c0 75 6c 64 20 62 65 20 74 72 69 67 67 65 72 65 64 uld be triggered
929d0 20 61 74 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 at.... * @retu
929e0 72 6e 73 20 7b 54 6f 6e 65 2e 49 6e 73 74 72 75 rns {Tone.Instru
929f0 6d 65 6e 74 7d 20 74 68 69 73 0a 09 09 20 2a 20 ment} this... *
92a00 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f @example... * /
92a10 2f 74 72 69 67 67 65 72 20 22 43 34 22 20 66 6f /trigger "C4" fo
92a20 72 20 74 68 65 20 64 75 72 61 74 69 6f 6e 20 6f r the duration o
92a30 66 20 61 6e 20 38 74 68 20 6e 6f 74 65 0a 09 09 f an 8th note...
92a40 20 2a 20 73 79 6e 74 68 2e 74 72 69 67 67 65 72 * synth.trigger
92a50 41 74 74 61 63 6b 52 65 6c 65 61 73 65 28 22 43 AttackRelease("C
92a60 34 22 2c 20 22 38 6e 22 29 3b 0a 09 09 20 2a 2f 4", "8n");... */
92a70 0a 09 20 20 20 20 54 6f 6e 65 2e 49 6e 73 74 72 .. Tone.Instr
92a80 75 6d 65 6e 74 2e 70 72 6f 74 6f 74 79 70 65 2e ument.prototype.
92a90 74 72 69 67 67 65 72 41 74 74 61 63 6b 52 65 6c triggerAttackRel
92aa0 65 61 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 ease = function
92ab0 28 6e 6f 74 65 2c 20 64 75 72 61 74 69 6f 6e 2c (note, duration,
92ac0 20 74 69 6d 65 2c 20 76 65 6c 6f 63 69 74 79 29 time, velocity)
92ad0 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
92ae0 74 68 69 73 2e 69 73 55 6e 64 65 66 28 74 69 6d this.isUndef(tim
92af0 65 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 e)) {..
92b00 20 20 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 6e time = this.n
92b10 6f 77 28 29 20 2b 20 74 68 69 73 2e 62 6c 6f 63 ow() + this.bloc
92b20 6b 54 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 kTime;..
92b30 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 } else {..
92b40 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 time = thi
92b50 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 s.toSeconds(time
92b60 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
92b70 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 duration
92b80 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 = this.toSeconds
92b90 28 64 75 72 61 74 69 6f 6e 29 3b 0a 09 20 20 20 (duration);..
92ba0 20 20 20 20 20 74 68 69 73 2e 74 72 69 67 67 65 this.trigge
92bb0 72 41 74 74 61 63 6b 28 6e 6f 74 65 2c 20 74 69 rAttack(note, ti
92bc0 6d 65 2c 20 76 65 6c 6f 63 69 74 79 29 3b 0a 09 me, velocity);..
92bd0 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 72 69 this.tri
92be0 67 67 65 72 52 65 6c 65 61 73 65 28 74 69 6d 65 ggerRelease(time
92bf0 20 2b 20 64 75 72 61 74 69 6f 6e 29 3b 0a 09 20 + duration);..
92c00 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
92c10 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
92c20 20 2f 2a 2a 0a 09 09 20 2a 20 20 63 6c 65 61 6e /**... * clean
92c30 20 75 70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 up... * @retur
92c40 6e 73 20 7b 54 6f 6e 65 2e 49 6e 73 74 72 75 6d ns {Tone.Instrum
92c50 65 6e 74 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a ent} this... */.
92c60 09 20 20 20 20 54 6f 6e 65 2e 49 6e 73 74 72 75 . Tone.Instru
92c70 6d 65 6e 74 2e 70 72 6f 74 6f 74 79 70 65 2e 64 ment.prototype.d
92c80 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f ispose = functio
92c90 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
92ca0 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 Tone.prototype.d
92cb0 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 ispose.call(this
92cc0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
92cd0 2e 5f 76 6f 6c 75 6d 65 2e 64 69 73 70 6f 73 65 ._volume.dispose
92ce0 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
92cf0 73 2e 5f 76 6f 6c 75 6d 65 20 3d 20 6e 75 6c 6c s._volume = null
92d00 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
92d10 5f 77 72 69 74 61 62 6c 65 28 5b 27 76 6f 6c 75 _writable(['volu
92d20 6d 65 27 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 me']);..
92d30 74 68 69 73 2e 76 6f 6c 75 6d 65 20 3d 20 6e 75 this.volume = nu
92d40 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ll;.. ret
92d50 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
92d60 3b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f ;.. return To
92d70 6e 65 2e 49 6e 73 74 72 75 6d 65 6e 74 3b 0a 09 ne.Instrument;..
92d80 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 });..Module(func
92d90 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 tion (Tone) {..
92da0 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 .. /**...
92db0 2a 20 20 40 63 6c 61 73 73 20 20 54 68 69 73 20 * @class This
92dc0 69 73 20 61 6e 20 61 62 73 74 72 61 63 74 20 62 is an abstract b
92dd0 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 6f 74 ase class for ot
92de0 68 65 72 20 6d 6f 6e 6f 70 68 6f 6e 69 63 20 69 her monophonic i
92df0 6e 73 74 72 75 6d 65 6e 74 73 20 74 6f 20 0a 09 nstruments to ..
92e00 09 20 2a 20 20 20 20 20 20 20 20 20 20 65 78 74 . * ext
92e10 65 6e 64 2e 20 49 4d 50 4f 52 54 41 4e 54 3a 20 end. IMPORTANT:
92e20 49 74 20 64 6f 65 73 20 6e 6f 74 20 6d 61 6b 65 It does not make
92e30 20 61 6e 79 20 73 6f 75 6e 64 20 6f 6e 20 69 74 any sound on it
92e40 73 20 6f 77 6e 20 61 6e 64 0a 09 09 20 2a 20 20 s own and... *
92e50 20 20 20 20 20 20 20 20 73 68 6f 75 6c 64 6e 27 shouldn'
92e60 74 20 62 65 20 64 69 72 65 63 74 6c 79 20 69 6e t be directly in
92e70 73 74 61 6e 74 69 61 74 65 64 2e 0a 09 09 20 2a stantiated.... *
92e80 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 ... * @construc
92e90 74 6f 72 0a 09 09 20 2a 20 20 40 61 62 73 74 72 tor... * @abstr
92ea0 61 63 74 0a 09 09 20 2a 20 20 40 65 78 74 65 6e act... * @exten
92eb0 64 73 20 7b 54 6f 6e 65 2e 49 6e 73 74 72 75 6d ds {Tone.Instrum
92ec0 65 6e 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ent}... */..
92ed0 54 6f 6e 65 2e 4d 6f 6e 6f 70 68 6f 6e 69 63 20 Tone.Monophonic
92ee0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6f 70 74 69 = function (opti
92ef0 6f 6e 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ons) {..
92f00 2f 2f 67 65 74 20 74 68 65 20 64 65 66 61 75 6c //get the defaul
92f10 74 73 0a 09 20 20 20 20 20 20 20 20 6f 70 74 69 ts.. opti
92f20 6f 6e 73 20 3d 20 74 68 69 73 2e 64 65 66 61 75 ons = this.defau
92f30 6c 74 41 72 67 28 6f 70 74 69 6f 6e 73 2c 20 54 ltArg(options, T
92f40 6f 6e 65 2e 4d 6f 6e 6f 70 68 6f 6e 69 63 2e 64 one.Monophonic.d
92f50 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 efaults);..
92f60 20 20 20 54 6f 6e 65 2e 49 6e 73 74 72 75 6d 65 Tone.Instrume
92f70 6e 74 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 nt.call(this, op
92f80 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 tions);..
92f90 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
92fa0 67 6c 69 64 65 20 74 69 6d 65 20 62 65 74 77 65 glide time betwe
92fb0 65 6e 20 6e 6f 74 65 73 2e 20 0a 09 09 09 20 2a en notes. .... *
92fc0 20 20 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a 09 @type {Time}..
92fd0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
92fe0 68 69 73 2e 70 6f 72 74 61 6d 65 6e 74 6f 20 3d his.portamento =
92ff0 20 6f 70 74 69 6f 6e 73 2e 70 6f 72 74 61 6d 65 options.portame
93000 6e 74 6f 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 nto;.. };..
93010 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
93020 6e 65 2e 4d 6f 6e 6f 70 68 6f 6e 69 63 2c 20 54 ne.Monophonic, T
93030 6f 6e 65 2e 49 6e 73 74 72 75 6d 65 6e 74 29 3b one.Instrument);
93040 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
93050 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 63 @static... * @c
93060 6f 6e 73 74 0a 09 09 20 2a 20 20 40 74 79 70 65 onst... * @type
93070 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a {Object}... */.
93080 09 20 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f 70 68 . Tone.Monoph
93090 6f 6e 69 63 2e 64 65 66 61 75 6c 74 73 20 3d 20 onic.defaults =
930a0 7b 20 27 70 6f 72 74 61 6d 65 6e 74 6f 27 3a 20 { 'portamento':
930b0 30 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 0 };.. /**...
930c0 20 2a 20 20 54 72 69 67 67 65 72 20 74 68 65 20 * Trigger the
930d0 61 74 74 61 63 6b 20 6f 66 20 74 68 65 20 6e 6f attack of the no
930e0 74 65 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 77 69 te optionally wi
930f0 74 68 20 61 20 67 69 76 65 6e 20 76 65 6c 6f 63 th a given veloc
93100 69 74 79 2e 20 0a 09 09 20 2a 20 20 0a 09 09 20 ity. ... * ...
93110 2a 20 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d * ... * @param
93120 20 20 7b 46 72 65 71 75 65 6e 63 79 7d 20 6e 6f {Frequency} no
93130 74 65 20 20 20 20 20 54 68 65 20 6e 6f 74 65 20 te The note
93140 74 6f 20 74 72 69 67 67 65 72 2e 0a 09 09 20 2a to trigger.... *
93150 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d @param {Time}
93160 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 20 20 20 20 [time=now]
93170 57 68 65 6e 20 74 68 65 20 6e 6f 74 65 20 73 68 When the note sh
93180 6f 75 6c 64 20 73 74 61 72 74 2e 0a 09 09 20 2a ould start.... *
93190 20 20 40 70 61 72 61 6d 20 20 7b 6e 75 6d 62 65 @param {numbe
931a0 72 7d 20 5b 76 65 6c 6f 63 69 74 79 3d 31 5d 20 r} [velocity=1]
931b0 76 65 6c 6f 63 69 74 79 20 54 68 65 20 76 65 6c velocity The vel
931c0 6f 63 69 74 79 20 73 63 61 6c 65 72 20 0a 09 09 ocity scaler ...
931d0 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
931e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
931f0 20 20 64 65 74 65 72 6d 69 6e 65 73 20 68 6f 77 determines how
93200 20 22 6c 6f 75 64 22 20 74 68 65 20 6e 6f 74 65 "loud" the note
93210 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 ... *
93220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
93230 20 20 20 20 20 20 77 69 6c 6c 20 62 65 20 74 72 will be tr
93240 69 67 67 65 72 65 64 2e 0a 09 09 20 2a 20 20 40 iggered.... * @
93250 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 4d 6f returns {Tone.Mo
93260 6e 6f 70 68 6f 6e 69 63 7d 20 74 68 69 73 0a 09 nophonic} this..
93270 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 . * @example...
93280 20 2a 20 73 79 6e 74 68 2e 74 72 69 67 67 65 72 * synth.trigger
93290 41 74 74 61 63 6b 28 22 43 34 22 29 3b 0a 09 09 Attack("C4");...
932a0 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 * @example...
932b0 2a 20 2f 2f 74 72 69 67 67 65 72 20 74 68 65 20 * //trigger the
932c0 6e 6f 74 65 20 61 20 68 61 6c 66 20 73 65 63 6f note a half seco
932d0 6e 64 20 66 72 6f 6d 20 6e 6f 77 20 61 74 20 68 nd from now at h
932e0 61 6c 66 20 76 65 6c 6f 63 69 74 79 0a 09 09 20 alf velocity...
932f0 2a 20 73 79 6e 74 68 2e 74 72 69 67 67 65 72 41 * synth.triggerA
93300 74 74 61 63 6b 28 22 43 34 22 2c 20 22 2b 30 2e ttack("C4", "+0.
93310 35 22 2c 20 30 2e 35 29 3b 0a 09 09 20 2a 2f 0a 5", 0.5);... */.
93320 09 20 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f 70 68 . Tone.Monoph
93330 6f 6e 69 63 2e 70 72 6f 74 6f 74 79 70 65 2e 74 onic.prototype.t
93340 72 69 67 67 65 72 41 74 74 61 63 6b 20 3d 20 66 riggerAttack = f
93350 75 6e 63 74 69 6f 6e 20 28 6e 6f 74 65 2c 20 74 unction (note, t
93360 69 6d 65 2c 20 76 65 6c 6f 63 69 74 79 29 20 7b ime, velocity) {
93370 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
93380 69 73 2e 69 73 55 6e 64 65 66 28 74 69 6d 65 29 is.isUndef(time)
93390 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
933a0 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 6e 6f 77 time = this.now
933b0 28 29 20 2b 20 74 68 69 73 2e 62 6c 6f 63 6b 54 () + this.blockT
933c0 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 ime;.. }
933d0 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 else {..
933e0 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 73 2e time = this.
933f0 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b toSeconds(time);
93400 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
93410 20 20 20 20 20 74 68 69 73 2e 5f 74 72 69 67 67 this._trigg
93420 65 72 45 6e 76 65 6c 6f 70 65 41 74 74 61 63 6b erEnvelopeAttack
93430 28 74 69 6d 65 2c 20 76 65 6c 6f 63 69 74 79 29 (time, velocity)
93440 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
93450 73 65 74 4e 6f 74 65 28 6e 6f 74 65 2c 20 74 69 setNote(note, ti
93460 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 me);.. re
93470 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 turn this;..
93480 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
93490 20 20 54 72 69 67 67 65 72 20 74 68 65 20 72 65 Trigger the re
934a0 6c 65 61 73 65 20 70 6f 72 74 69 6f 6e 20 6f 66 lease portion of
934b0 20 74 68 65 20 65 6e 76 65 6c 6f 70 65 0a 09 09 the envelope...
934c0 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d * @param {Tim
934d0 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 49 66 e} [time=now] If
934e0 20 6e 6f 20 74 69 6d 65 20 69 73 20 67 69 76 65 no time is give
934f0 6e 2c 20 74 68 65 20 72 65 6c 65 61 73 65 20 68 n, the release h
93500 61 70 70 65 6e 73 20 69 6d 6d 65 64 69 61 74 6c appens immediatl
93510 79 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 y... * @returns
93520 20 7b 54 6f 6e 65 2e 4d 6f 6e 6f 70 68 6f 6e 69 {Tone.Monophoni
93530 63 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 40 65 c} this... * @e
93540 78 61 6d 70 6c 65 0a 09 09 20 2a 20 73 79 6e 74 xample... * synt
93550 68 2e 74 72 69 67 67 65 72 52 65 6c 65 61 73 65 h.triggerRelease
93560 28 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ();... */.. T
93570 6f 6e 65 2e 4d 6f 6e 6f 70 68 6f 6e 69 63 2e 70 one.Monophonic.p
93580 72 6f 74 6f 74 79 70 65 2e 74 72 69 67 67 65 72 rototype.trigger
93590 52 65 6c 65 61 73 65 20 3d 20 66 75 6e 63 74 69 Release = functi
935a0 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 on (time) {..
935b0 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 if (this.is
935c0 55 6e 64 65 66 28 74 69 6d 65 29 29 20 7b 0a 09 Undef(time)) {..
935d0 20 20 20 20 20 20 20 20 20 20 20 20 74 69 6d 65 time
935e0 20 3d 20 74 68 69 73 2e 6e 6f 77 28 29 20 2b 20 = this.now() +
935f0 74 68 69 73 2e 62 6c 6f 63 6b 54 69 6d 65 3b 0a this.blockTime;.
93600 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 . } else
93610 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 {.. t
93620 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 ime = this.toSec
93630 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 20 20 onds(time);..
93640 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
93650 74 68 69 73 2e 5f 74 72 69 67 67 65 72 45 6e 76 this._triggerEnv
93660 65 6c 6f 70 65 52 65 6c 65 61 73 65 28 74 69 6d elopeRelease(tim
93670 65 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 e);.. ret
93680 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
93690 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
936a0 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 6d override this m
936b0 65 74 68 6f 64 20 77 69 74 68 20 74 68 65 20 61 ethod with the a
936c0 63 74 75 61 6c 20 6d 65 74 68 6f 64 0a 09 09 20 ctual method...
936d0 2a 20 20 40 61 62 73 74 72 61 63 74 0a 09 09 20 * @abstract...
936e0 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a * @private... *
936f0 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f /.. Tone.Mono
93700 70 68 6f 6e 69 63 2e 70 72 6f 74 6f 74 79 70 65 phonic.prototype
93710 2e 5f 74 72 69 67 67 65 72 45 6e 76 65 6c 6f 70 ._triggerEnvelop
93720 65 41 74 74 61 63 6b 20 3d 20 66 75 6e 63 74 69 eAttack = functi
93730 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 7d 3b 0a on () {.. };.
93740 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 6f . /**... * o
93750 76 65 72 72 69 64 65 20 74 68 69 73 20 6d 65 74 verride this met
93760 68 6f 64 20 77 69 74 68 20 74 68 65 20 61 63 74 hod with the act
93770 75 61 6c 20 6d 65 74 68 6f 64 0a 09 09 20 2a 20 ual method... *
93780 20 40 61 62 73 74 72 61 63 74 0a 09 09 20 2a 20 @abstract... *
93790 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a @private... */.
937a0 09 20 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f 70 68 . Tone.Monoph
937b0 6f 6e 69 63 2e 70 72 6f 74 6f 74 79 70 65 2e 5f onic.prototype._
937c0 74 72 69 67 67 65 72 45 6e 76 65 6c 6f 70 65 52 triggerEnvelopeR
937d0 65 6c 65 61 73 65 20 3d 20 66 75 6e 63 74 69 6f elease = functio
937e0 6e 20 28 29 20 7b 0a 09 20 20 20 20 7d 3b 0a 09 n () {.. };..
937f0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 65 /**... * Se
93800 74 20 74 68 65 20 6e 6f 74 65 20 61 74 20 74 68 t the note at th
93810 65 20 67 69 76 65 6e 20 74 69 6d 65 2e 20 49 66 e given time. If
93820 20 6e 6f 20 74 69 6d 65 20 69 73 20 67 69 76 65 no time is give
93830 6e 2c 20 74 68 65 20 6e 6f 74 65 0a 09 09 20 2a n, the note... *
93840 20 20 77 69 6c 6c 20 73 65 74 20 69 6d 6d 65 64 will set immed
93850 69 61 74 65 6c 79 2e 20 0a 09 09 20 2a 20 20 40 iately. ... * @
93860 70 61 72 61 6d 20 7b 46 72 65 71 75 65 6e 63 79 param {Frequency
93870 7d 20 6e 6f 74 65 20 54 68 65 20 6e 6f 74 65 20 } note The note
93880 74 6f 20 63 68 61 6e 67 65 20 74 6f 2e 0a 09 09 to change to....
93890 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d * @param {Tim
938a0 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 54 68 e} [time=now] Th
938b0 65 20 74 69 6d 65 20 77 68 65 6e 20 74 68 65 20 e time when the
938c0 6e 6f 74 65 20 73 68 6f 75 6c 64 20 62 65 20 73 note should be s
938d0 65 74 2e 20 0a 09 09 20 2a 20 20 40 72 65 74 75 et. ... * @retu
938e0 72 6e 73 20 7b 54 6f 6e 65 2e 4d 6f 6e 6f 70 68 rns {Tone.Monoph
938f0 6f 6e 69 63 7d 20 74 68 69 73 0a 09 09 20 2a 20 onic} this... *
93900 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f @example... * //
93910 63 68 61 6e 67 65 20 74 6f 20 46 23 36 20 69 6e change to F#6 in
93920 20 6f 6e 65 20 71 75 61 72 74 65 72 20 6e 6f 74 one quarter not
93930 65 20 66 72 6f 6d 20 6e 6f 77 2e 0a 09 09 20 2a e from now.... *
93940 20 73 79 6e 74 68 2e 73 65 74 4e 6f 74 65 28 22 synth.setNote("
93950 46 23 36 22 2c 20 22 2b 34 6e 22 29 3b 0a 09 09 F#6", "+4n");...
93960 20 2a 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
93970 20 2f 2f 63 68 61 6e 67 65 20 74 6f 20 42 62 34 //change to Bb4
93980 20 72 69 67 68 74 20 6e 6f 77 0a 09 09 20 2a 20 right now... *
93990 73 79 6e 74 68 2e 73 65 74 4e 6f 74 65 28 22 42 synth.setNote("B
939a0 62 34 22 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 b4");... */..
939b0 20 54 6f 6e 65 2e 4d 6f 6e 6f 70 68 6f 6e 69 63 Tone.Monophonic
939c0 2e 70 72 6f 74 6f 74 79 70 65 2e 73 65 74 4e 6f .prototype.setNo
939d0 74 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6e te = function (n
939e0 6f 74 65 2c 20 74 69 6d 65 29 20 7b 0a 09 20 20 ote, time) {..
939f0 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 time = thi
93a00 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 s.toSeconds(time
93a10 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 );.. if (
93a20 74 68 69 73 2e 70 6f 72 74 61 6d 65 6e 74 6f 20 this.portamento
93a30 3e 20 30 29 20 7b 0a 09 20 20 20 20 20 20 20 20 > 0) {..
93a40 20 20 20 20 76 61 72 20 63 75 72 72 65 6e 74 4e var currentN
93a50 6f 74 65 20 3d 20 74 68 69 73 2e 66 72 65 71 75 ote = this.frequ
93a60 65 6e 63 79 2e 76 61 6c 75 65 3b 0a 09 20 20 20 ency.value;..
93a70 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 this.fr
93a80 65 71 75 65 6e 63 79 2e 73 65 74 56 61 6c 75 65 equency.setValue
93a90 41 74 54 69 6d 65 28 63 75 72 72 65 6e 74 4e 6f AtTime(currentNo
93aa0 74 65 2c 20 74 69 6d 65 29 3b 0a 09 20 20 20 20 te, time);..
93ab0 20 20 20 20 20 20 20 20 76 61 72 20 70 6f 72 74 var port
93ac0 54 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 Time = this.toSe
93ad0 63 6f 6e 64 73 28 74 68 69 73 2e 70 6f 72 74 61 conds(this.porta
93ae0 6d 65 6e 74 6f 29 3b 0a 09 20 20 20 20 20 20 20 mento);..
93af0 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 this.freque
93b00 6e 63 79 2e 65 78 70 6f 6e 65 6e 74 69 61 6c 52 ncy.exponentialR
93b10 61 6d 70 54 6f 56 61 6c 75 65 41 74 54 69 6d 65 ampToValueAtTime
93b20 28 6e 6f 74 65 2c 20 74 69 6d 65 20 2b 20 70 6f (note, time + po
93b30 72 74 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 rtTime);..
93b40 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 } else {..
93b50 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 this.fre
93b60 71 75 65 6e 63 79 2e 73 65 74 56 61 6c 75 65 41 quency.setValueA
93b70 74 54 69 6d 65 28 6e 6f 74 65 2c 20 74 69 6d 65 tTime(note, time
93b80 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
93b90 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
93ba0 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
93bb0 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 4d 6f 6e return Tone.Mon
93bc0 6f 70 68 6f 6e 69 63 3b 0a 09 7d 29 3b 0a 09 4d ophonic;..});..M
93bd0 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 odule(function (
93be0 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 Tone) {.. ..
93bf0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c /**... * @cl
93c00 61 73 73 20 20 54 6f 6e 65 2e 53 79 6e 74 68 20 ass Tone.Synth
93c10 69 73 20 63 6f 6d 70 6f 73 65 64 20 73 69 6d 70 is composed simp
93c20 6c 79 20 6f 66 20 61 20 54 6f 6e 65 2e 4f 6d 6e ly of a Tone.Omn
93c30 69 4f 73 63 69 6c 6c 61 74 6f 72 0a 09 09 20 2a iOscillator... *
93c40 20 20 20 20 20 20 20 20 20 20 72 6f 75 74 65 64 routed
93c50 20 74 68 72 6f 75 67 68 20 61 20 54 6f 6e 65 2e through a Tone.
93c60 41 6d 70 6c 69 74 75 64 65 45 6e 76 65 6c 6f 70 AmplitudeEnvelop
93c70 65 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 e. ... *
93c80 20 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 <img src="http
93c90 73 3a 2f 2f 64 6f 63 73 2e 67 6f 6f 67 6c 65 2e s://docs.google.
93ca0 63 6f 6d 2f 64 72 61 77 69 6e 67 73 2f 64 2f 31 com/drawings/d/1
93cb0 2d 31 5f 30 59 57 32 5a 31 4a 32 45 50 49 33 36 -1_0YW2Z1J2EPI36
93cc0 50 38 66 4e 43 4d 63 5a 47 37 4e 31 77 31 47 5a P8fNCMcZG7N1w1GZ
93cd0 6c 75 50 73 34 6f 67 34 65 76 6f 2f 70 75 62 3f luPs4og4evo/pub?
93ce0 77 3d 31 31 36 33 26 68 3d 32 33 31 22 3e 0a 09 w=1163&h=231">..
93cf0 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 . *... * @const
93d00 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 ructor... * @ex
93d10 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 4d 6f 6e 6f tends {Tone.Mono
93d20 70 68 6f 6e 69 63 7d 0a 09 09 20 2a 20 20 40 70 phonic}... * @p
93d30 61 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20 5b 6f aram {Object} [o
93d40 70 74 69 6f 6e 73 5d 20 74 68 65 20 6f 70 74 69 ptions] the opti
93d50 6f 6e 73 20 61 76 61 69 6c 61 62 6c 65 20 66 6f ons available fo
93d60 72 20 74 68 65 20 73 79 6e 74 68 20 0a 09 09 20 r the synth ...
93d70 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
93d80 20 20 20 20 20 20 20 20 20 20 20 73 65 65 20 64 see d
93d90 65 66 61 75 6c 74 73 20 62 65 6c 6f 77 0a 09 09 efaults below...
93da0 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 * @example...
93db0 2a 20 76 61 72 20 73 79 6e 74 68 20 3d 20 6e 65 * var synth = ne
93dc0 77 20 54 6f 6e 65 2e 53 79 6e 74 68 28 29 2e 74 w Tone.Synth().t
93dd0 6f 4d 61 73 74 65 72 28 29 3b 0a 09 09 20 2a 20 oMaster();... *
93de0 73 79 6e 74 68 2e 74 72 69 67 67 65 72 41 74 74 synth.triggerAtt
93df0 61 63 6b 52 65 6c 65 61 73 65 28 22 43 34 22 2c ackRelease("C4",
93e00 20 22 38 6e 22 29 3b 0a 09 09 20 2a 2f 0a 09 20 "8n");... */..
93e10 20 20 20 54 6f 6e 65 2e 53 79 6e 74 68 20 3d 20 Tone.Synth =
93e20 66 75 6e 63 74 69 6f 6e 20 28 6f 70 74 69 6f 6e function (option
93e30 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f 2f s) {.. //
93e40 67 65 74 20 74 68 65 20 64 65 66 61 75 6c 74 73 get the defaults
93e50 0a 09 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e .. option
93e60 73 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 s = this.default
93e70 41 72 67 28 6f 70 74 69 6f 6e 73 2c 20 54 6f 6e Arg(options, Ton
93e80 65 2e 53 79 6e 74 68 2e 64 65 66 61 75 6c 74 73 e.Synth.defaults
93e90 29 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 );.. Tone
93ea0 2e 4d 6f 6e 6f 70 68 6f 6e 69 63 2e 63 61 6c 6c .Monophonic.call
93eb0 28 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 29 3b (this, options);
93ec0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
93ed0 09 20 2a 20 20 54 68 65 20 6f 73 63 69 6c 6c 61 . * The oscilla
93ee0 74 6f 72 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 tor..... * @typ
93ef0 65 20 7b 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 e {Tone.OmniOsci
93f00 6c 6c 61 74 6f 72 7d 0a 09 09 09 20 2a 2f 0a 09 llator}.... */..
93f10 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 73 63 this.osc
93f20 69 6c 6c 61 74 6f 72 20 3d 20 6e 65 77 20 54 6f illator = new To
93f30 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f ne.OmniOscillato
93f40 72 28 6f 70 74 69 6f 6e 73 2e 6f 73 63 69 6c 6c r(options.oscill
93f50 61 74 6f 72 29 3b 0a 09 20 20 20 20 20 20 20 20 ator);..
93f60 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 66 /**.... * The f
93f70 72 65 71 75 65 6e 63 79 20 63 6f 6e 74 72 6f 6c requency control
93f80 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b ..... * @type {
93f90 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 09 20 2a Frequency}.... *
93fa0 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f @signal.... */
93fb0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 .. this.f
93fc0 72 65 71 75 65 6e 63 79 20 3d 20 74 68 69 73 2e requency = this.
93fd0 6f 73 63 69 6c 6c 61 74 6f 72 2e 66 72 65 71 75 oscillator.frequ
93fe0 65 6e 63 79 3b 0a 09 20 20 20 20 20 20 20 20 2f ency;.. /
93ff0 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 64 65 **.... * The de
94000 74 75 6e 65 20 63 6f 6e 74 72 6f 6c 2e 0a 09 09 tune control....
94010 09 20 2a 20 20 40 74 79 70 65 20 7b 43 65 6e 74 . * @type {Cent
94020 73 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 s}.... * @signa
94030 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 l.... */..
94040 20 20 74 68 69 73 2e 64 65 74 75 6e 65 20 3d 20 this.detune =
94050 74 68 69 73 2e 6f 73 63 69 6c 6c 61 74 6f 72 2e this.oscillator.
94060 64 65 74 75 6e 65 3b 0a 09 20 20 20 20 20 20 20 detune;..
94070 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
94080 61 6d 70 6c 69 74 75 64 65 20 65 6e 76 65 6c 6f amplitude envelo
94090 70 65 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 pe..... * @type
940a0 20 7b 54 6f 6e 65 2e 41 6d 70 6c 69 74 75 64 65 {Tone.Amplitude
940b0 45 6e 76 65 6c 6f 70 65 7d 0a 09 09 09 20 2a 2f Envelope}.... */
940c0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 .. this.e
940d0 6e 76 65 6c 6f 70 65 20 3d 20 6e 65 77 20 54 6f nvelope = new To
940e0 6e 65 2e 41 6d 70 6c 69 74 75 64 65 45 6e 76 65 ne.AmplitudeEnve
940f0 6c 6f 70 65 28 6f 70 74 69 6f 6e 73 2e 65 6e 76 lope(options.env
94100 65 6c 6f 70 65 29 3b 0a 09 20 20 20 20 20 20 20 elope);..
94110 20 2f 2f 63 6f 6e 6e 65 63 74 20 74 68 65 20 6f //connect the o
94120 73 63 69 6c 6c 61 74 6f 72 73 20 74 6f 20 74 68 scillators to th
94130 65 20 6f 75 74 70 75 74 0a 09 20 20 20 20 20 20 e output..
94140 20 20 74 68 69 73 2e 6f 73 63 69 6c 6c 61 74 6f this.oscillato
94150 72 2e 63 68 61 69 6e 28 74 68 69 73 2e 65 6e 76 r.chain(this.env
94160 65 6c 6f 70 65 2c 20 74 68 69 73 2e 6f 75 74 70 elope, this.outp
94170 75 74 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f ut);.. //
94180 73 74 61 72 74 20 74 68 65 20 6f 73 63 69 6c 6c start the oscill
94190 61 74 6f 72 73 0a 09 20 20 20 20 20 20 20 20 74 ators.. t
941a0 68 69 73 2e 6f 73 63 69 6c 6c 61 74 6f 72 2e 73 his.oscillator.s
941b0 74 61 72 74 28 29 3b 0a 09 20 20 20 20 20 20 20 tart();..
941c0 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 this._readOnly(
941d0 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 [.. '
941e0 6f 73 63 69 6c 6c 61 74 6f 72 27 2c 0a 09 20 20 oscillator',..
941f0 20 20 20 20 20 20 20 20 20 20 27 66 72 65 71 75 'frequ
94200 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 20 20 ency',..
94210 20 20 20 20 27 64 65 74 75 6e 65 27 2c 0a 09 20 'detune',..
94220 20 20 20 20 20 20 20 20 20 20 20 27 65 6e 76 65 'enve
94230 6c 6f 70 65 27 0a 09 20 20 20 20 20 20 20 20 5d lope'.. ]
94240 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
94250 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 Tone.extend(Tone
94260 2e 53 79 6e 74 68 2c 20 54 6f 6e 65 2e 4d 6f 6e .Synth, Tone.Mon
94270 6f 70 68 6f 6e 69 63 29 3b 0a 09 20 20 20 20 2f ophonic);.. /
94280 2a 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 0a **... * @const.
94290 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 .. * @static...
942a0 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 * @type {Objec
942b0 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f t}... */.. To
942c0 6e 65 2e 53 79 6e 74 68 2e 64 65 66 61 75 6c 74 ne.Synth.default
942d0 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 27 s = {.. '
942e0 6f 73 63 69 6c 6c 61 74 6f 72 27 3a 20 7b 20 27 oscillator': { '
942f0 74 79 70 65 27 3a 20 27 74 72 69 61 6e 67 6c 65 type': 'triangle
94300 27 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 27 65 ' },.. 'e
94310 6e 76 65 6c 6f 70 65 27 3a 20 7b 0a 09 20 20 20 nvelope': {..
94320 20 20 20 20 20 20 20 20 20 27 61 74 74 61 63 6b 'attack
94330 27 3a 20 30 2e 30 30 35 2c 0a 09 20 20 20 20 20 ': 0.005,..
94340 20 20 20 20 20 20 20 27 64 65 63 61 79 27 3a 20 'decay':
94350 30 2e 31 2c 0a 09 20 20 20 20 20 20 20 20 20 20 0.1,..
94360 20 20 27 73 75 73 74 61 69 6e 27 3a 20 30 2e 33 'sustain': 0.3
94370 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
94380 72 65 6c 65 61 73 65 27 3a 20 31 0a 09 20 20 20 release': 1..
94390 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 }.. };..
943a0 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 73 74 /**... * st
943b0 61 72 74 20 74 68 65 20 61 74 74 61 63 6b 20 70 art the attack p
943c0 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 65 6e ortion of the en
943d0 76 65 6c 6f 70 65 0a 09 09 20 2a 20 20 40 70 61 velope... * @pa
943e0 72 61 6d 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 ram {Time} [time
943f0 3d 6e 6f 77 5d 20 74 68 65 20 74 69 6d 65 20 74 =now] the time t
94400 68 65 20 61 74 74 61 63 6b 20 73 68 6f 75 6c 64 he attack should
94410 20 73 74 61 72 74 0a 09 09 20 2a 20 20 40 70 61 start... * @pa
94420 72 61 6d 20 7b 6e 75 6d 62 65 72 7d 20 5b 76 65 ram {number} [ve
94430 6c 6f 63 69 74 79 3d 31 5d 20 74 68 65 20 76 65 locity=1] the ve
94440 6c 6f 63 69 74 79 20 6f 66 20 74 68 65 20 6e 6f locity of the no
94450 74 65 20 28 30 2d 31 29 0a 09 09 20 2a 20 20 40 te (0-1)... * @
94460 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 79 returns {Tone.Sy
94470 6e 74 68 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 nth} this... *
94480 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 @private... */..
94490 20 20 20 20 54 6f 6e 65 2e 53 79 6e 74 68 2e 70 Tone.Synth.p
944a0 72 6f 74 6f 74 79 70 65 2e 5f 74 72 69 67 67 65 rototype._trigge
944b0 72 45 6e 76 65 6c 6f 70 65 41 74 74 61 63 6b 20 rEnvelopeAttack
944c0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 = function (time
944d0 2c 20 76 65 6c 6f 63 69 74 79 29 20 7b 0a 09 20 , velocity) {..
944e0 20 20 20 20 20 20 20 2f 2f 74 68 65 20 65 6e 76 //the env
944f0 65 6c 6f 70 65 73 0a 09 20 20 20 20 20 20 20 20 elopes..
94500 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 2e 74 72 this.envelope.tr
94510 69 67 67 65 72 41 74 74 61 63 6b 28 74 69 6d 65 iggerAttack(time
94520 2c 20 76 65 6c 6f 63 69 74 79 29 3b 0a 09 20 20 , velocity);..
94530 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
94540 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
94550 2f 2a 2a 0a 09 09 20 2a 20 20 73 74 61 72 74 20 /**... * start
94560 74 68 65 20 72 65 6c 65 61 73 65 20 70 6f 72 74 the release port
94570 69 6f 6e 20 6f 66 20 74 68 65 20 65 6e 76 65 6c ion of the envel
94580 6f 70 65 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ope... * @param
94590 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f {Time} [time=no
945a0 77 5d 20 74 68 65 20 74 69 6d 65 20 74 68 65 20 w] the time the
945b0 72 65 6c 65 61 73 65 20 73 68 6f 75 6c 64 20 73 release should s
945c0 74 61 72 74 0a 09 09 20 2a 20 20 40 72 65 74 75 tart... * @retu
945d0 72 6e 73 20 7b 54 6f 6e 65 2e 53 79 6e 74 68 7d rns {Tone.Synth}
945e0 20 74 68 69 73 0a 09 09 20 2a 20 20 40 70 72 69 this... * @pri
945f0 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 vate... */..
94600 54 6f 6e 65 2e 53 79 6e 74 68 2e 70 72 6f 74 6f Tone.Synth.proto
94610 74 79 70 65 2e 5f 74 72 69 67 67 65 72 45 6e 76 type._triggerEnv
94620 65 6c 6f 70 65 52 65 6c 65 61 73 65 20 3d 20 66 elopeRelease = f
94630 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 7b unction (time) {
94640 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 .. this.e
94650 6e 76 65 6c 6f 70 65 2e 74 72 69 67 67 65 72 52 nvelope.triggerR
94660 65 6c 65 61 73 65 28 74 69 6d 65 29 3b 0a 09 20 elease(time);..
94670 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
94680 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
94690 20 2f 2a 2a 0a 09 09 20 2a 20 20 63 6c 65 61 6e /**... * clean
946a0 20 75 70 0a 09 09 20 2a 20 20 40 72 65 74 75 72 up... * @retur
946b0 6e 73 20 7b 54 6f 6e 65 2e 53 79 6e 74 68 7d 20 ns {Tone.Synth}
946c0 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
946d0 54 6f 6e 65 2e 53 79 6e 74 68 2e 70 72 6f 74 6f Tone.Synth.proto
946e0 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 type.dispose = f
946f0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
94700 20 20 20 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f 70 Tone.Monop
94710 68 6f 6e 69 63 2e 70 72 6f 74 6f 74 79 70 65 2e honic.prototype.
94720 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 dispose.call(thi
94730 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 s);.. thi
94740 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 s._writable([..
94750 20 20 20 20 20 20 20 20 20 20 20 27 6f 73 63 69 'osci
94760 6c 6c 61 74 6f 72 27 2c 0a 09 20 20 20 20 20 20 llator',..
94770 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 'frequency
94780 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
94790 27 64 65 74 75 6e 65 27 2c 0a 09 20 20 20 20 20 'detune',..
947a0 20 20 20 20 20 20 20 27 65 6e 76 65 6c 6f 70 65 'envelope
947b0 27 0a 09 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 '.. ]);..
947c0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 73 63 this.osc
947d0 69 6c 6c 61 74 6f 72 2e 64 69 73 70 6f 73 65 28 illator.dispose(
947e0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
947f0 2e 6f 73 63 69 6c 6c 61 74 6f 72 20 3d 20 6e 75 .oscillator = nu
94800 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
94810 73 2e 65 6e 76 65 6c 6f 70 65 2e 64 69 73 70 6f s.envelope.dispo
94820 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
94830 68 69 73 2e 65 6e 76 65 6c 6f 70 65 20 3d 20 6e his.envelope = n
94840 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
94850 69 73 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 6e is.frequency = n
94860 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
94870 69 73 2e 64 65 74 75 6e 65 20 3d 20 6e 75 6c 6c is.detune = null
94880 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
94890 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
948a0 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 . return Tone
948b0 2e 53 79 6e 74 68 3b 0a 09 7d 29 3b 0a 09 4d 6f .Synth;..});..Mo
948c0 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 dule(function (T
948d0 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 one) {.. ..
948e0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 /**... * @cla
948f0 73 73 20 20 41 4d 53 79 6e 74 68 20 75 73 65 73 ss AMSynth uses
94900 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 6f the output of o
94910 6e 65 20 54 6f 6e 65 2e 53 79 6e 74 68 20 74 6f ne Tone.Synth to
94920 20 6d 6f 64 75 6c 61 74 65 20 74 68 65 0a 09 09 modulate the...
94930 20 2a 20 20 20 20 20 20 20 20 20 20 61 6d 70 6c * ampl
94940 69 74 75 64 65 20 6f 66 20 61 6e 6f 74 68 65 72 itude of another
94950 20 54 6f 6e 65 2e 53 79 6e 74 68 2e 20 54 68 65 Tone.Synth. The
94960 20 68 61 72 6d 6f 6e 69 63 69 74 79 20 28 74 68 harmonicity (th
94970 65 20 72 61 74 69 6f 20 62 65 74 77 65 65 6e 0a e ratio between.
94980 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 74 68 .. * th
94990 65 20 74 77 6f 20 73 69 67 6e 61 6c 73 29 20 61 e two signals) a
949a0 66 66 65 63 74 73 20 74 68 65 20 74 69 6d 62 72 ffects the timbr
949b0 65 20 6f 66 20 74 68 65 20 6f 75 74 70 75 74 20 e of the output
949c0 73 69 67 6e 61 6c 20 67 72 65 61 74 6c 79 2e 0a signal greatly..
949d0 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 52 65 .. * Re
949e0 61 64 20 6d 6f 72 65 20 61 62 6f 75 74 20 41 6d ad more about Am
949f0 70 6c 69 74 75 64 65 20 4d 6f 64 75 6c 61 74 69 plitude Modulati
94a00 6f 6e 20 53 79 6e 74 68 65 73 69 73 20 6f 6e 20 on Synthesis on
94a10 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 5b ... * [
94a20 53 6f 75 6e 64 4f 6e 53 6f 75 6e 64 5d 28 68 74 SoundOnSound](ht
94a30 74 70 3a 2f 2f 77 77 77 2e 73 6f 75 6e 64 6f 6e tp://www.soundon
94a40 73 6f 75 6e 64 2e 63 6f 6d 2f 73 6f 73 2f 6d 61 sound.com/sos/ma
94a50 72 30 30 2f 61 72 74 69 63 6c 65 73 2f 73 79 6e r00/articles/syn
94a60 74 68 73 65 63 72 65 74 73 2e 68 74 6d 29 2e 0a thsecrets.htm)..
94a70 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 3c 69 .. * <i
94a80 6d 67 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f mg src="https://
94a90 64 6f 63 73 2e 67 6f 6f 67 6c 65 2e 63 6f 6d 2f docs.google.com/
94aa0 64 72 61 77 69 6e 67 73 2f 64 2f 31 54 51 75 38 drawings/d/1TQu8
94ab0 45 64 34 69 46 72 31 59 54 4c 4b 70 42 33 55 31 Ed4iFr1YTLKpB3U1
94ac0 5f 68 75 72 2d 55 77 42 72 68 35 67 64 42 58 63 _hur-UwBrh5gdBXc
94ad0 38 42 78 66 47 4b 77 2f 70 75 62 3f 77 3d 31 30 8BxfGKw/pub?w=10
94ae0 30 39 26 68 3d 34 35 37 22 3e 0a 09 09 20 2a 0a 09&h=457">... *.
94af0 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 .. * @construct
94b00 6f 72 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 or... * @extend
94b10 73 20 7b 54 6f 6e 65 2e 4d 6f 6e 6f 70 68 6f 6e s {Tone.Monophon
94b20 69 63 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ic}... * @param
94b30 20 7b 4f 62 6a 65 63 74 7d 20 5b 6f 70 74 69 6f {Object} [optio
94b40 6e 73 5d 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 ns] the options
94b50 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 74 68 available for th
94b60 65 20 73 79 6e 74 68 20 0a 09 09 20 2a 20 20 20 e synth ... *
94b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
94b80 20 20 20 20 20 20 20 20 20 73 65 65 20 64 65 66 see def
94b90 61 75 6c 74 73 20 62 65 6c 6f 77 0a 09 09 20 2a aults below... *
94ba0 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 @example... *
94bb0 76 61 72 20 73 79 6e 74 68 20 3d 20 6e 65 77 20 var synth = new
94bc0 54 6f 6e 65 2e 41 4d 53 79 6e 74 68 28 29 2e 74 Tone.AMSynth().t
94bd0 6f 4d 61 73 74 65 72 28 29 3b 0a 09 09 20 2a 20 oMaster();... *
94be0 73 79 6e 74 68 2e 74 72 69 67 67 65 72 41 74 74 synth.triggerAtt
94bf0 61 63 6b 52 65 6c 65 61 73 65 28 22 43 34 22 2c ackRelease("C4",
94c00 20 22 34 6e 22 29 3b 0a 09 09 20 2a 2f 0a 09 20 "4n");... */..
94c10 20 20 20 54 6f 6e 65 2e 41 4d 53 79 6e 74 68 20 Tone.AMSynth
94c20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6f 70 74 69 = function (opti
94c30 6f 6e 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ons) {..
94c40 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 64 options = this.d
94c50 65 66 61 75 6c 74 41 72 67 28 6f 70 74 69 6f 6e efaultArg(option
94c60 73 2c 20 54 6f 6e 65 2e 41 4d 53 79 6e 74 68 2e s, Tone.AMSynth.
94c70 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 defaults);..
94c80 20 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f 70 68 6f Tone.Monopho
94c90 6e 69 63 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f nic.call(this, o
94ca0 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 ptions);..
94cb0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
94cc0 20 63 61 72 72 69 65 72 20 76 6f 69 63 65 2e 20 carrier voice.
94cd0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 .... * @type {T
94ce0 6f 6e 65 2e 53 79 6e 74 68 7d 0a 09 09 09 20 2a one.Synth}.... *
94cf0 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
94d00 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
94d10 5f 63 61 72 72 69 65 72 20 3d 20 6e 65 77 20 54 _carrier = new T
94d20 6f 6e 65 2e 53 79 6e 74 68 28 29 3b 0a 09 20 20 one.Synth();..
94d30 20 20 20 20 20 20 74 68 69 73 2e 5f 63 61 72 72 this._carr
94d40 69 65 72 2e 76 6f 6c 75 6d 65 2e 76 61 6c 75 65 ier.volume.value
94d50 20 3d 20 2d 31 30 3b 0a 09 20 20 20 20 20 20 20 = -10;..
94d60 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
94d70 63 61 72 72 69 65 72 27 73 20 6f 73 63 69 6c 6c carrier's oscill
94d80 61 74 6f 72 0a 09 09 09 20 2a 20 20 40 74 79 70 ator.... * @typ
94d90 65 20 7b 54 6f 6e 65 2e 4f 73 63 69 6c 6c 61 74 e {Tone.Oscillat
94da0 6f 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 or}.... */..
94db0 20 20 20 20 74 68 69 73 2e 6f 73 63 69 6c 6c 61 this.oscilla
94dc0 74 6f 72 20 3d 20 74 68 69 73 2e 5f 63 61 72 72 tor = this._carr
94dd0 69 65 72 2e 6f 73 63 69 6c 6c 61 74 6f 72 3b 0a ier.oscillator;.
94de0 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
94df0 20 2a 20 20 54 68 65 20 63 61 72 72 69 65 72 27 * The carrier'
94e00 73 20 65 6e 76 65 6c 6f 70 65 0a 09 09 09 20 2a s envelope.... *
94e10 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4f 73 @type {Tone.Os
94e20 63 69 6c 6c 61 74 6f 72 7d 0a 09 09 09 20 2a 2f cillator}.... */
94e30 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 .. this.e
94e40 6e 76 65 6c 6f 70 65 20 3d 20 74 68 69 73 2e 5f nvelope = this._
94e50 63 61 72 72 69 65 72 2e 65 6e 76 65 6c 6f 70 65 carrier.envelope
94e60 2e 73 65 74 28 6f 70 74 69 6f 6e 73 2e 65 6e 76 .set(options.env
94e70 65 6c 6f 70 65 29 3b 0a 09 20 20 20 20 20 20 20 elope);..
94e80 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
94e90 6d 6f 64 75 6c 61 74 6f 72 20 76 6f 69 63 65 2e modulator voice.
94ea0 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b .... * @type {
94eb0 54 6f 6e 65 2e 53 79 6e 74 68 7d 0a 09 09 09 20 Tone.Synth}....
94ec0 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
94ed0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
94ee0 2e 5f 6d 6f 64 75 6c 61 74 6f 72 20 3d 20 6e 65 ._modulator = ne
94ef0 77 20 54 6f 6e 65 2e 53 79 6e 74 68 28 29 3b 0a w Tone.Synth();.
94f00 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d . this._m
94f10 6f 64 75 6c 61 74 6f 72 2e 76 6f 6c 75 6d 65 2e odulator.volume.
94f20 76 61 6c 75 65 20 3d 20 2d 31 30 3b 0a 09 20 20 value = -10;..
94f30 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
94f40 20 54 68 65 20 6d 6f 64 75 6c 61 74 6f 72 27 73 The modulator's
94f50 20 6f 73 63 69 6c 6c 61 74 6f 72 20 77 68 69 63 oscillator whic
94f60 68 20 69 73 20 61 70 70 6c 69 65 64 0a 09 09 09 h is applied....
94f70 20 2a 20 20 74 6f 20 74 68 65 20 61 6d 70 6c 69 * to the ampli
94f80 74 75 64 65 20 6f 66 20 74 68 65 20 6f 73 63 69 tude of the osci
94f90 6c 6c 61 74 6f 72 0a 09 09 09 20 2a 20 20 40 74 llator.... * @t
94fa0 79 70 65 20 7b 54 6f 6e 65 2e 4f 73 63 69 6c 6c ype {Tone.Oscill
94fb0 61 74 6f 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 ator}.... */..
94fc0 20 20 20 20 20 20 74 68 69 73 2e 6d 6f 64 75 6c this.modul
94fd0 61 74 69 6f 6e 20 3d 20 74 68 69 73 2e 5f 6d 6f ation = this._mo
94fe0 64 75 6c 61 74 6f 72 2e 6f 73 63 69 6c 6c 61 74 dulator.oscillat
94ff0 6f 72 2e 73 65 74 28 6f 70 74 69 6f 6e 73 2e 6d or.set(options.m
95000 6f 64 75 6c 61 74 69 6f 6e 29 3b 0a 09 20 20 20 odulation);..
95010 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
95020 54 68 65 20 6d 6f 64 75 6c 61 74 6f 72 27 73 20 The modulator's
95030 65 6e 76 65 6c 6f 70 65 0a 09 09 09 20 2a 20 20 envelope.... *
95040 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4f 73 63 69 @type {Tone.Osci
95050 6c 6c 61 74 6f 72 7d 0a 09 09 09 20 2a 2f 0a 09 llator}.... */..
95060 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d 6f 64 this.mod
95070 75 6c 61 74 69 6f 6e 45 6e 76 65 6c 6f 70 65 20 ulationEnvelope
95080 3d 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f = this._modulato
95090 72 2e 65 6e 76 65 6c 6f 70 65 2e 73 65 74 28 6f r.envelope.set(o
950a0 70 74 69 6f 6e 73 2e 6d 6f 64 75 6c 61 74 69 6f ptions.modulatio
950b0 6e 45 6e 76 65 6c 6f 70 65 29 3b 0a 09 20 20 20 nEnvelope);..
950c0 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
950d0 54 68 65 20 66 72 65 71 75 65 6e 63 79 2e 0a 09 The frequency...
950e0 09 09 20 2a 20 20 40 74 79 70 65 20 7b 46 72 65 .. * @type {Fre
950f0 71 75 65 6e 63 79 7d 0a 09 09 09 20 2a 20 20 40 quency}.... * @
95100 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 signal.... */..
95110 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 this.freq
95120 75 65 6e 63 79 20 3d 20 6e 65 77 20 54 6f 6e 65 uency = new Tone
95130 2e 53 69 67 6e 61 6c 28 34 34 30 2c 20 54 6f 6e .Signal(440, Ton
95140 65 2e 54 79 70 65 2e 46 72 65 71 75 65 6e 63 79 e.Type.Frequency
95150 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
95160 09 09 09 20 2a 20 20 54 68 65 20 64 65 74 75 6e ... * The detun
95170 65 20 69 6e 20 63 65 6e 74 73 0a 09 09 09 20 2a e in cents.... *
95180 20 20 40 74 79 70 65 20 7b 43 65 6e 74 73 7d 0a @type {Cents}.
95190 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 ... * @signal..
951a0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
951b0 68 69 73 2e 64 65 74 75 6e 65 20 3d 20 6e 65 77 his.detune = new
951c0 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 6f 70 74 Tone.Signal(opt
951d0 69 6f 6e 73 2e 64 65 74 75 6e 65 2c 20 54 6f 6e ions.detune, Ton
951e0 65 2e 54 79 70 65 2e 43 65 6e 74 73 29 3b 0a 09 e.Type.Cents);..
951f0 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
95200 2a 20 20 48 61 72 6d 6f 6e 69 63 69 74 79 20 69 * Harmonicity i
95210 73 20 74 68 65 20 72 61 74 69 6f 20 62 65 74 77 s the ratio betw
95220 65 65 6e 20 74 68 65 20 74 77 6f 20 76 6f 69 63 een the two voic
95230 65 73 2e 20 41 20 68 61 72 6d 6f 6e 69 63 69 74 es. A harmonicit
95240 79 20 6f 66 0a 09 09 09 20 2a 20 20 31 20 69 73 y of.... * 1 is
95250 20 6e 6f 20 63 68 61 6e 67 65 2e 20 48 61 72 6d no change. Harm
95260 6f 6e 69 63 69 74 79 20 3d 20 32 20 6d 65 61 6e onicity = 2 mean
95270 73 20 61 20 63 68 61 6e 67 65 20 6f 66 20 61 6e s a change of an
95280 20 6f 63 74 61 76 65 2e 20 0a 09 09 09 20 2a 20 octave. .... *
95290 20 40 74 79 70 65 20 7b 50 6f 73 69 74 69 76 65 @type {Positive
952a0 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c }.... * @signal
952b0 0a 09 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 .... * @example
952c0 0a 09 09 09 20 2a 20 2f 2f 70 69 74 63 68 20 76 .... * //pitch v
952d0 6f 69 63 65 31 20 61 6e 20 6f 63 74 61 76 65 20 oice1 an octave
952e0 62 65 6c 6f 77 20 76 6f 69 63 65 30 0a 09 09 09 below voice0....
952f0 20 2a 20 73 79 6e 74 68 2e 68 61 72 6d 6f 6e 69 * synth.harmoni
95300 63 69 74 79 2e 76 61 6c 75 65 20 3d 20 30 2e 35 city.value = 0.5
95310 3b 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 ;.... */..
95320 20 20 74 68 69 73 2e 68 61 72 6d 6f 6e 69 63 69 this.harmonici
95330 74 79 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 75 ty = new Tone.Mu
95340 6c 74 69 70 6c 79 28 6f 70 74 69 6f 6e 73 2e 68 ltiply(options.h
95350 61 72 6d 6f 6e 69 63 69 74 79 29 3b 0a 09 20 20 armonicity);..
95360 20 20 20 20 20 20 74 68 69 73 2e 68 61 72 6d 6f this.harmo
95370 6e 69 63 69 74 79 2e 75 6e 69 74 73 20 3d 20 54 nicity.units = T
95380 6f 6e 65 2e 54 79 70 65 2e 50 6f 73 69 74 69 76 one.Type.Positiv
95390 65 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a e;.. /**.
953a0 09 09 09 20 2a 20 20 63 6f 6e 76 65 72 74 20 74 ... * convert t
953b0 68 65 20 2d 31 2c 31 20 6f 75 74 70 75 74 20 74 he -1,1 output t
953c0 6f 20 30 2c 31 0a 09 09 09 20 2a 20 20 40 74 79 o 0,1.... * @ty
953d0 70 65 20 7b 54 6f 6e 65 2e 41 75 64 69 6f 54 6f pe {Tone.AudioTo
953e0 47 61 69 6e 7d 0a 09 09 09 20 2a 20 20 40 70 72 Gain}.... * @pr
953f0 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 ivate.... */..
95400 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 this._modu
95410 6c 61 74 69 6f 6e 53 63 61 6c 65 20 3d 20 6e 65 lationScale = ne
95420 77 20 54 6f 6e 65 2e 41 75 64 69 6f 54 6f 47 61 w Tone.AudioToGa
95430 69 6e 28 29 3b 0a 09 20 20 20 20 20 20 20 20 2f in();.. /
95440 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 6e 6f **.... * the no
95450 64 65 20 77 68 65 72 65 20 74 68 65 20 6d 6f 64 de where the mod
95460 75 6c 61 74 69 6f 6e 20 68 61 70 70 65 6e 73 0a ulation happens.
95470 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f ... * @type {To
95480 6e 65 2e 47 61 69 6e 7d 0a 09 09 09 20 2a 20 20 ne.Gain}.... *
95490 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
954a0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d . this._m
954b0 6f 64 75 6c 61 74 69 6f 6e 4e 6f 64 65 20 3d 20 odulationNode =
954c0 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 29 3b new Tone.Gain();
954d0 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 74 .. //cont
954e0 72 6f 6c 20 74 68 65 20 74 77 6f 20 76 6f 69 63 rol the two voic
954f0 65 73 20 66 72 65 71 75 65 6e 63 79 0a 09 20 20 es frequency..
95500 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 this.frequ
95510 65 6e 63 79 2e 63 6f 6e 6e 65 63 74 28 74 68 69 ency.connect(thi
95520 73 2e 5f 63 61 72 72 69 65 72 2e 66 72 65 71 75 s._carrier.frequ
95530 65 6e 63 79 29 3b 0a 09 20 20 20 20 20 20 20 20 ency);..
95540 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 2e 63 this.frequency.c
95550 68 61 69 6e 28 74 68 69 73 2e 68 61 72 6d 6f 6e hain(this.harmon
95560 69 63 69 74 79 2c 20 74 68 69 73 2e 5f 6d 6f 64 icity, this._mod
95570 75 6c 61 74 6f 72 2e 66 72 65 71 75 65 6e 63 79 ulator.frequency
95580 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
95590 2e 64 65 74 75 6e 65 2e 66 61 6e 28 74 68 69 73 .detune.fan(this
955a0 2e 5f 63 61 72 72 69 65 72 2e 64 65 74 75 6e 65 ._carrier.detune
955b0 2c 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f , this._modulato
955c0 72 2e 64 65 74 75 6e 65 29 3b 0a 09 20 20 20 20 r.detune);..
955d0 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 this._modula
955e0 74 6f 72 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f tor.chain(this._
955f0 6d 6f 64 75 6c 61 74 69 6f 6e 53 63 61 6c 65 2c modulationScale,
95600 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 69 6f this._modulatio
95610 6e 4e 6f 64 65 2e 67 61 69 6e 29 3b 0a 09 20 20 nNode.gain);..
95620 20 20 20 20 20 20 74 68 69 73 2e 5f 63 61 72 72 this._carr
95630 69 65 72 2e 63 68 61 69 6e 28 74 68 69 73 2e 5f ier.chain(this._
95640 6d 6f 64 75 6c 61 74 69 6f 6e 4e 6f 64 65 2c 20 modulationNode,
95650 74 68 69 73 2e 6f 75 74 70 75 74 29 3b 0a 09 20 this.output);..
95660 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 this._rea
95670 64 4f 6e 6c 79 28 5b 0a 09 20 20 20 20 20 20 20 dOnly([..
95680 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 'frequency'
95690 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
956a0 68 61 72 6d 6f 6e 69 63 69 74 79 27 2c 0a 09 20 harmonicity',..
956b0 20 20 20 20 20 20 20 20 20 20 20 27 6f 73 63 69 'osci
956c0 6c 6c 61 74 6f 72 27 2c 0a 09 20 20 20 20 20 20 llator',..
956d0 20 20 20 20 20 20 27 65 6e 76 65 6c 6f 70 65 27 'envelope'
956e0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
956f0 6d 6f 64 75 6c 61 74 69 6f 6e 27 2c 0a 09 20 20 modulation',..
95700 20 20 20 20 20 20 20 20 20 20 27 6d 6f 64 75 6c 'modul
95710 61 74 69 6f 6e 45 6e 76 65 6c 6f 70 65 27 2c 0a ationEnvelope',.
95720 09 20 20 20 20 20 20 20 20 20 20 20 20 27 64 65 . 'de
95730 74 75 6e 65 27 0a 09 20 20 20 20 20 20 20 20 5d tune'.. ]
95740 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
95750 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 Tone.extend(Tone
95760 2e 41 4d 53 79 6e 74 68 2c 20 54 6f 6e 65 2e 4d .AMSynth, Tone.M
95770 6f 6e 6f 70 68 6f 6e 69 63 29 3b 0a 09 20 20 20 onophonic);..
95780 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 73 74 61 74 /**... * @stat
95790 69 63 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b ic... * @type {
957a0 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 Object}... */..
957b0 20 20 20 54 6f 6e 65 2e 41 4d 53 79 6e 74 68 2e Tone.AMSynth.
957c0 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 defaults = {..
957d0 20 20 20 20 20 20 27 68 61 72 6d 6f 6e 69 63 69 'harmonici
957e0 74 79 27 3a 20 33 2c 0a 09 20 20 20 20 20 20 20 ty': 3,..
957f0 20 27 64 65 74 75 6e 65 27 3a 20 30 2c 0a 09 20 'detune': 0,..
95800 20 20 20 20 20 20 20 27 6f 73 63 69 6c 6c 61 74 'oscillat
95810 6f 72 27 3a 20 7b 20 27 74 79 70 65 27 3a 20 27 or': { 'type': '
95820 73 69 6e 65 27 20 7d 2c 0a 09 20 20 20 20 20 20 sine' },..
95830 20 20 27 65 6e 76 65 6c 6f 70 65 27 3a 20 7b 0a 'envelope': {.
95840 09 20 20 20 20 20 20 20 20 20 20 20 20 27 61 74 . 'at
95850 74 61 63 6b 27 3a 20 30 2e 30 31 2c 0a 09 20 20 tack': 0.01,..
95860 20 20 20 20 20 20 20 20 20 20 27 64 65 63 61 79 'decay
95870 27 3a 20 30 2e 30 31 2c 0a 09 20 20 20 20 20 20 ': 0.01,..
95880 20 20 20 20 20 20 27 73 75 73 74 61 69 6e 27 3a 'sustain':
95890 20 31 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 1,..
958a0 20 27 72 65 6c 65 61 73 65 27 3a 20 30 2e 35 0a 'release': 0.5.
958b0 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 . },..
958c0 20 20 20 20 20 27 6d 6f 64 75 6c 61 74 69 6f 6e 'modulation
958d0 27 3a 20 7b 20 27 74 79 70 65 27 3a 20 27 73 71 ': { 'type': 'sq
958e0 75 61 72 65 27 20 7d 2c 0a 09 20 20 20 20 20 20 uare' },..
958f0 20 20 27 6d 6f 64 75 6c 61 74 69 6f 6e 45 6e 76 'modulationEnv
95900 65 6c 6f 70 65 27 3a 20 7b 0a 09 20 20 20 20 20 elope': {..
95910 20 20 20 20 20 20 20 27 61 74 74 61 63 6b 27 3a 'attack':
95920 20 30 2e 35 2c 0a 09 20 20 20 20 20 20 20 20 20 0.5,..
95930 20 20 20 27 64 65 63 61 79 27 3a 20 30 2c 0a 09 'decay': 0,..
95940 20 20 20 20 20 20 20 20 20 20 20 20 27 73 75 73 'sus
95950 74 61 69 6e 27 3a 20 31 2c 0a 09 20 20 20 20 20 tain': 1,..
95960 20 20 20 20 20 20 20 27 72 65 6c 65 61 73 65 27 'release'
95970 3a 20 30 2e 35 0a 09 20 20 20 20 20 20 20 20 7d : 0.5.. }
95980 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
95990 2a 0a 09 09 20 2a 20 20 74 72 69 67 67 65 72 20 *... * trigger
959a0 74 68 65 20 61 74 74 61 63 6b 20 70 6f 72 74 69 the attack porti
959b0 6f 6e 20 6f 66 20 74 68 65 20 6e 6f 74 65 0a 09 on of the note..
959c0 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 70 61 72 . * ... * @par
959d0 61 6d 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 am {Time} [time
959e0 3d 6e 6f 77 5d 20 74 68 65 20 74 69 6d 65 20 74 =now] the time t
959f0 68 65 20 6e 6f 74 65 20 77 69 6c 6c 20 6f 63 63 he note will occ
95a00 75 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 ur... * @param
95a10 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d 20 5b 76 {NormalRange} [v
95a20 65 6c 6f 63 69 74 79 3d 31 5d 20 74 68 65 20 76 elocity=1] the v
95a30 65 6c 6f 63 69 74 79 20 6f 66 20 74 68 65 20 6e elocity of the n
95a40 6f 74 65 0a 09 09 20 2a 20 20 40 70 72 69 76 61 ote... * @priva
95a50 74 65 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e te... * @return
95a60 73 20 7b 54 6f 6e 65 2e 41 4d 53 79 6e 74 68 7d s {Tone.AMSynth}
95a70 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
95a80 20 54 6f 6e 65 2e 41 4d 53 79 6e 74 68 2e 70 72 Tone.AMSynth.pr
95a90 6f 74 6f 74 79 70 65 2e 5f 74 72 69 67 67 65 72 ototype._trigger
95aa0 45 6e 76 65 6c 6f 70 65 41 74 74 61 63 6b 20 3d EnvelopeAttack =
95ab0 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 2c function (time,
95ac0 20 76 65 6c 6f 63 69 74 79 29 20 7b 0a 09 20 20 velocity) {..
95ad0 20 20 20 20 20 20 2f 2f 74 68 65 20 70 6f 72 74 //the port
95ae0 20 67 6c 69 64 65 0a 09 20 20 20 20 20 20 20 20 glide..
95af0 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 time = this.toSe
95b00 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 20 conds(time);..
95b10 20 20 20 20 20 20 2f 2f 74 68 65 20 65 6e 76 65 //the enve
95b20 6c 6f 70 65 73 0a 09 20 20 20 20 20 20 20 20 74 lopes.. t
95b30 68 69 73 2e 65 6e 76 65 6c 6f 70 65 2e 74 72 69 his.envelope.tri
95b40 67 67 65 72 41 74 74 61 63 6b 28 74 69 6d 65 2c ggerAttack(time,
95b50 20 76 65 6c 6f 63 69 74 79 29 3b 0a 09 20 20 20 velocity);..
95b60 20 20 20 20 20 74 68 69 73 2e 6d 6f 64 75 6c 61 this.modula
95b70 74 69 6f 6e 45 6e 76 65 6c 6f 70 65 2e 74 72 69 tionEnvelope.tri
95b80 67 67 65 72 41 74 74 61 63 6b 28 74 69 6d 65 2c ggerAttack(time,
95b90 20 76 65 6c 6f 63 69 74 79 29 3b 0a 09 20 20 20 velocity);..
95ba0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
95bb0 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
95bc0 2a 2a 0a 09 09 20 2a 20 20 74 72 69 67 67 65 72 **... * trigger
95bd0 20 74 68 65 20 72 65 6c 65 61 73 65 20 70 6f 72 the release por
95be0 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 6f 74 65 tion of the note
95bf0 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 70 ... * ... * @p
95c00 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 5b 74 69 aram {Time} [ti
95c10 6d 65 3d 6e 6f 77 5d 20 74 68 65 20 74 69 6d 65 me=now] the time
95c20 20 74 68 65 20 6e 6f 74 65 20 77 69 6c 6c 20 72 the note will r
95c30 65 6c 65 61 73 65 0a 09 09 20 2a 20 20 40 70 72 elease... * @pr
95c40 69 76 61 74 65 0a 09 09 20 2a 20 20 40 72 65 74 ivate... * @ret
95c50 75 72 6e 73 20 7b 54 6f 6e 65 2e 41 4d 53 79 6e urns {Tone.AMSyn
95c60 74 68 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 th} this... */..
95c70 20 20 20 20 54 6f 6e 65 2e 41 4d 53 79 6e 74 68 Tone.AMSynth
95c80 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 74 72 69 67 .prototype._trig
95c90 67 65 72 45 6e 76 65 6c 6f 70 65 52 65 6c 65 61 gerEnvelopeRelea
95ca0 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 se = function (t
95cb0 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ime) {..
95cc0 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 2e 74 72 this.envelope.tr
95cd0 69 67 67 65 72 52 65 6c 65 61 73 65 28 74 69 6d iggerRelease(tim
95ce0 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 e);.. thi
95cf0 73 2e 6d 6f 64 75 6c 61 74 69 6f 6e 45 6e 76 65 s.modulationEnve
95d00 6c 6f 70 65 2e 74 72 69 67 67 65 72 52 65 6c 65 lope.triggerRele
95d10 61 73 65 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 ase(time);..
95d20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
95d30 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
95d40 2a 0a 09 09 20 2a 20 20 63 6c 65 61 6e 20 75 70 *... * clean up
95d50 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
95d60 7b 54 6f 6e 65 2e 41 4d 53 79 6e 74 68 7d 20 74 {Tone.AMSynth} t
95d70 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
95d80 6f 6e 65 2e 41 4d 53 79 6e 74 68 2e 70 72 6f 74 one.AMSynth.prot
95d90 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 otype.dispose =
95da0 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
95db0 20 20 20 20 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f Tone.Mono
95dc0 70 68 6f 6e 69 63 2e 70 72 6f 74 6f 74 79 70 65 phonic.prototype
95dd0 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 .dispose.call(th
95de0 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 is);.. th
95df0 69 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b 0a 09 is._writable([..
95e00 20 20 20 20 20 20 20 20 20 20 20 20 27 66 72 65 'fre
95e10 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 quency',..
95e20 20 20 20 20 20 20 27 68 61 72 6d 6f 6e 69 63 69 'harmonici
95e30 74 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 ty',..
95e40 20 20 27 6f 73 63 69 6c 6c 61 74 6f 72 27 2c 0a 'oscillator',.
95e50 09 20 20 20 20 20 20 20 20 20 20 20 20 27 65 6e . 'en
95e60 76 65 6c 6f 70 65 27 2c 0a 09 20 20 20 20 20 20 velope',..
95e70 20 20 20 20 20 20 27 6d 6f 64 75 6c 61 74 69 6f 'modulatio
95e80 6e 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 n',..
95e90 20 27 6d 6f 64 75 6c 61 74 69 6f 6e 45 6e 76 65 'modulationEnve
95ea0 6c 6f 70 65 27 2c 0a 09 20 20 20 20 20 20 20 20 lope',..
95eb0 20 20 20 20 27 64 65 74 75 6e 65 27 0a 09 20 20 'detune'..
95ec0 20 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 ]);..
95ed0 20 20 20 74 68 69 73 2e 5f 63 61 72 72 69 65 72 this._carrier
95ee0 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
95ef0 20 20 20 20 20 74 68 69 73 2e 5f 63 61 72 72 69 this._carri
95f00 65 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 er = null;..
95f10 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 this._modula
95f20 74 6f 72 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 tor.dispose();..
95f30 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f this._mo
95f40 64 75 6c 61 74 6f 72 20 3d 20 6e 75 6c 6c 3b 0a dulator = null;.
95f50 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 . this.fr
95f60 65 71 75 65 6e 63 79 2e 64 69 73 70 6f 73 65 28 equency.dispose(
95f70 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
95f80 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 6e 75 6c .frequency = nul
95f90 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 l;.. this
95fa0 2e 64 65 74 75 6e 65 2e 64 69 73 70 6f 73 65 28 .detune.dispose(
95fb0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
95fc0 2e 64 65 74 75 6e 65 20 3d 20 6e 75 6c 6c 3b 0a .detune = null;.
95fd0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 68 61 . this.ha
95fe0 72 6d 6f 6e 69 63 69 74 79 2e 64 69 73 70 6f 73 rmonicity.dispos
95ff0 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
96000 69 73 2e 68 61 72 6d 6f 6e 69 63 69 74 79 20 3d is.harmonicity =
96010 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
96020 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 69 6f 6e this._modulation
96030 53 63 61 6c 65 2e 64 69 73 70 6f 73 65 28 29 3b Scale.dispose();
96040 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
96050 6d 6f 64 75 6c 61 74 69 6f 6e 53 63 61 6c 65 20 modulationScale
96060 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
96070 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 69 6f this._modulatio
96080 6e 4e 6f 64 65 2e 64 69 73 70 6f 73 65 28 29 3b nNode.dispose();
96090 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
960a0 6d 6f 64 75 6c 61 74 69 6f 6e 4e 6f 64 65 20 3d modulationNode =
960b0 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
960c0 74 68 69 73 2e 6f 73 63 69 6c 6c 61 74 6f 72 20 this.oscillator
960d0 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
960e0 20 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 20 3d this.envelope =
960f0 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
96100 74 68 69 73 2e 6d 6f 64 75 6c 61 74 69 6f 6e 45 this.modulationE
96110 6e 76 65 6c 6f 70 65 20 3d 20 6e 75 6c 6c 3b 0a nvelope = null;.
96120 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d 6f . this.mo
96130 64 75 6c 61 74 69 6f 6e 20 3d 20 6e 75 6c 6c 3b dulation = null;
96140 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
96150 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
96160 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e return Tone.
96170 41 4d 53 79 6e 74 68 3b 0a 09 7d 29 3b 0a 09 4d AMSynth;..});..M
96180 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 odule(function (
96190 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 Tone) {.. ..
961a0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c /**... * @cl
961b0 61 73 73 20 20 54 6f 6e 65 2e 4d 6f 6e 6f 53 79 ass Tone.MonoSy
961c0 6e 74 68 20 69 73 20 63 6f 6d 70 6f 73 65 64 20 nth is composed
961d0 6f 66 20 6f 6e 65 20 6f 73 63 69 6c 6c 61 74 6f of one oscillato
961e0 72 2c 20 6f 6e 65 20 66 69 6c 74 65 72 2c 20 61 r, one filter, a
961f0 6e 64 20 74 77 6f 20 65 6e 76 65 6c 6f 70 65 73 nd two envelopes
96200 2e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 .... *
96210 54 68 65 20 61 6d 70 6c 69 74 75 64 65 20 6f 66 The amplitude of
96220 20 74 68 65 20 54 6f 6e 65 2e 4f 73 63 69 6c 6c the Tone.Oscill
96230 61 74 6f 72 20 61 6e 64 20 74 68 65 20 63 75 74 ator and the cut
96240 6f 66 66 20 66 72 65 71 75 65 6e 63 79 20 6f 66 off frequency of
96250 20 74 68 65 20 0a 09 09 20 2a 20 20 20 20 20 20 the ... *
96260 20 20 20 20 54 6f 6e 65 2e 46 69 6c 74 65 72 20 Tone.Filter
96270 61 72 65 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 are controlled b
96280 79 20 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 73 y Tone.Envelopes
96290 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 . ... *
962a0 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 70 73 <img src="https
962b0 3a 2f 2f 64 6f 63 73 2e 67 6f 6f 67 6c 65 2e 63 ://docs.google.c
962c0 6f 6d 2f 64 72 61 77 69 6e 67 73 2f 64 2f 31 67 om/drawings/d/1g
962d0 61 59 31 44 46 39 5f 48 7a 6b 6f 64 71 66 38 4a aY1DF9_Hzkodqf8J
962e0 49 31 43 67 32 56 5a 66 77 53 45 6c 70 46 51 66 I1Cg2VZfwSElpFQf
962f0 49 39 34 49 51 77 61 64 33 38 2f 70 75 62 3f 77 I94IQwad38/pub?w
96300 3d 39 32 34 26 68 3d 32 34 30 22 3e 0a 09 09 20 =924&h=240">...
96310 2a 20 20 20 20 20 20 20 20 20 20 0a 09 09 20 2a * ... *
96320 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 @constructor..
96330 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 . * @extends {T
96340 6f 6e 65 2e 4d 6f 6e 6f 70 68 6f 6e 69 63 7d 0a one.Monophonic}.
96350 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 4f 62 .. * @param {Ob
96360 6a 65 63 74 7d 20 5b 6f 70 74 69 6f 6e 73 5d 20 ject} [options]
96370 74 68 65 20 6f 70 74 69 6f 6e 73 20 61 76 61 69 the options avai
96380 6c 61 62 6c 65 20 66 6f 72 20 74 68 65 20 73 79 lable for the sy
96390 6e 74 68 20 0a 09 09 20 2a 20 20 20 20 20 20 20 nth ... *
963a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
963b0 20 20 20 73 65 65 20 64 65 66 61 75 6c 74 73 20 see defaults
963c0 62 65 6c 6f 77 0a 09 09 20 2a 20 20 40 65 78 61 below... * @exa
963d0 6d 70 6c 65 0a 09 09 20 2a 20 76 61 72 20 73 79 mple... * var sy
963e0 6e 74 68 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d nth = new Tone.M
963f0 6f 6e 6f 53 79 6e 74 68 28 7b 0a 09 09 20 2a 20 onoSynth({... *
96400 09 22 6f 73 63 69 6c 6c 61 74 6f 72 22 20 3a 20 ."oscillator" :
96410 7b 0a 09 09 20 2a 20 09 09 22 74 79 70 65 22 20 {... * .."type"
96420 3a 20 22 73 71 75 61 72 65 22 0a 09 09 20 2a 20 : "square"... *
96430 20 7d 2c 0a 09 09 20 2a 20 20 22 65 6e 76 65 6c },... * "envel
96440 6f 70 65 22 20 3a 20 7b 0a 09 09 20 2a 20 20 09 ope" : {... * .
96450 22 61 74 74 61 63 6b 22 20 3a 20 30 2e 31 0a 09 "attack" : 0.1..
96460 09 20 2a 20 20 7d 0a 09 09 20 2a 20 7d 29 2e 74 . * }... * }).t
96470 6f 4d 61 73 74 65 72 28 29 3b 0a 09 09 20 2a 20 oMaster();... *
96480 73 79 6e 74 68 2e 74 72 69 67 67 65 72 41 74 74 synth.triggerAtt
96490 61 63 6b 52 65 6c 65 61 73 65 28 22 43 34 22 2c ackRelease("C4",
964a0 20 22 38 6e 22 29 3b 0a 09 09 20 2a 2f 0a 09 20 "8n");... */..
964b0 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f 53 79 6e 74 Tone.MonoSynt
964c0 68 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6f 70 h = function (op
964d0 74 69 6f 6e 73 29 20 7b 0a 09 20 20 20 20 20 20 tions) {..
964e0 20 20 2f 2f 67 65 74 20 74 68 65 20 64 65 66 61 //get the defa
964f0 75 6c 74 73 0a 09 20 20 20 20 20 20 20 20 6f 70 ults.. op
96500 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 64 65 66 tions = this.def
96510 61 75 6c 74 41 72 67 28 6f 70 74 69 6f 6e 73 2c aultArg(options,
96520 20 54 6f 6e 65 2e 4d 6f 6e 6f 53 79 6e 74 68 2e Tone.MonoSynth.
96530 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 defaults);..
96540 20 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f 70 68 6f Tone.Monopho
96550 6e 69 63 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f nic.call(this, o
96560 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 ptions);..
96570 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
96580 20 6f 73 63 69 6c 6c 61 74 6f 72 2e 0a 09 09 09 oscillator.....
96590 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e * @type {Tone.
965a0 4f 6d 6e 69 4f 73 63 69 6c 6c 61 74 6f 72 7d 0a OmniOscillator}.
965b0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
965c0 74 68 69 73 2e 6f 73 63 69 6c 6c 61 74 6f 72 20 this.oscillator
965d0 3d 20 6e 65 77 20 54 6f 6e 65 2e 4f 6d 6e 69 4f = new Tone.OmniO
965e0 73 63 69 6c 6c 61 74 6f 72 28 6f 70 74 69 6f 6e scillator(option
965f0 73 2e 6f 73 63 69 6c 6c 61 74 6f 72 29 3b 0a 09 s.oscillator);..
96600 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
96610 2a 20 20 54 68 65 20 66 72 65 71 75 65 6e 63 79 * The frequency
96620 20 63 6f 6e 74 72 6f 6c 2e 0a 09 09 09 20 2a 20 control..... *
96630 20 40 74 79 70 65 20 7b 46 72 65 71 75 65 6e 63 @type {Frequenc
96640 79 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 y}.... * @signa
96650 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 l.... */..
96660 20 20 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 this.frequency
96670 20 3d 20 74 68 69 73 2e 6f 73 63 69 6c 6c 61 74 = this.oscillat
96680 6f 72 2e 66 72 65 71 75 65 6e 63 79 3b 0a 09 20 or.frequency;..
96690 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
966a0 20 20 54 68 65 20 64 65 74 75 6e 65 20 63 6f 6e The detune con
966b0 74 72 6f 6c 2e 0a 09 09 09 20 2a 20 20 40 74 79 trol..... * @ty
966c0 70 65 20 7b 43 65 6e 74 73 7d 0a 09 09 09 20 2a pe {Cents}.... *
966d0 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f @signal.... */
966e0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 .. this.d
966f0 65 74 75 6e 65 20 3d 20 74 68 69 73 2e 6f 73 63 etune = this.osc
96700 69 6c 6c 61 74 6f 72 2e 64 65 74 75 6e 65 3b 0a illator.detune;.
96710 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
96720 20 2a 20 20 54 68 65 20 66 69 6c 74 65 72 2e 0a * The filter..
96730 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f ... * @type {To
96740 6e 65 2e 46 69 6c 74 65 72 7d 0a 09 09 09 20 2a ne.Filter}.... *
96750 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
96760 66 69 6c 74 65 72 20 3d 20 6e 65 77 20 54 6f 6e filter = new Ton
96770 65 2e 46 69 6c 74 65 72 28 6f 70 74 69 6f 6e 73 e.Filter(options
96780 2e 66 69 6c 74 65 72 29 3b 0a 09 20 20 20 20 20 .filter);..
96790 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 /**.... * Th
967a0 65 20 66 69 6c 74 65 72 20 65 6e 76 65 6c 6f 70 e filter envelop
967b0 65 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 e..... * @type
967c0 7b 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 79 45 {Tone.FrequencyE
967d0 6e 76 65 6c 6f 70 65 7d 0a 09 09 09 20 2a 2f 0a nvelope}.... */.
967e0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 69 . this.fi
967f0 6c 74 65 72 45 6e 76 65 6c 6f 70 65 20 3d 20 6e lterEnvelope = n
96800 65 77 20 54 6f 6e 65 2e 46 72 65 71 75 65 6e 63 ew Tone.Frequenc
96810 79 45 6e 76 65 6c 6f 70 65 28 6f 70 74 69 6f 6e yEnvelope(option
96820 73 2e 66 69 6c 74 65 72 45 6e 76 65 6c 6f 70 65 s.filterEnvelope
96830 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
96840 09 09 09 20 2a 20 20 54 68 65 20 61 6d 70 6c 69 ... * The ampli
96850 74 75 64 65 20 65 6e 76 65 6c 6f 70 65 2e 0a 09 tude envelope...
96860 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e .. * @type {Ton
96870 65 2e 41 6d 70 6c 69 74 75 64 65 45 6e 76 65 6c e.AmplitudeEnvel
96880 6f 70 65 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 ope}.... */..
96890 20 20 20 20 20 74 68 69 73 2e 65 6e 76 65 6c 6f this.envelo
968a0 70 65 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 41 6d pe = new Tone.Am
968b0 70 6c 69 74 75 64 65 45 6e 76 65 6c 6f 70 65 28 plitudeEnvelope(
968c0 6f 70 74 69 6f 6e 73 2e 65 6e 76 65 6c 6f 70 65 options.envelope
968d0 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 6f );.. //co
968e0 6e 6e 65 63 74 20 74 68 65 20 6f 73 63 69 6c 6c nnect the oscill
968f0 61 74 6f 72 73 20 74 6f 20 74 68 65 20 6f 75 74 ators to the out
96900 70 75 74 0a 09 20 20 20 20 20 20 20 20 74 68 69 put.. thi
96910 73 2e 6f 73 63 69 6c 6c 61 74 6f 72 2e 63 68 61 s.oscillator.cha
96920 69 6e 28 74 68 69 73 2e 66 69 6c 74 65 72 2c 20 in(this.filter,
96930 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 2c 20 74 this.envelope, t
96940 68 69 73 2e 6f 75 74 70 75 74 29 3b 0a 09 20 20 his.output);..
96950 20 20 20 20 20 20 2f 2f 73 74 61 72 74 20 74 68 //start th
96960 65 20 6f 73 63 69 6c 6c 61 74 6f 72 73 0a 09 20 e oscillators..
96970 20 20 20 20 20 20 20 74 68 69 73 2e 6f 73 63 69 this.osci
96980 6c 6c 61 74 6f 72 2e 73 74 61 72 74 28 29 3b 0a llator.start();.
96990 09 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 . //conne
969a0 63 74 20 74 68 65 20 66 69 6c 74 65 72 20 65 6e ct the filter en
969b0 76 65 6c 6f 70 65 0a 09 20 20 20 20 20 20 20 20 velope..
969c0 74 68 69 73 2e 66 69 6c 74 65 72 45 6e 76 65 6c this.filterEnvel
969d0 6f 70 65 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 ope.connect(this
969e0 2e 66 69 6c 74 65 72 2e 66 72 65 71 75 65 6e 63 .filter.frequenc
969f0 79 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 y);.. thi
96a00 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 5b 0a 09 20 s._readOnly([..
96a10 20 20 20 20 20 20 20 20 20 20 20 27 6f 73 63 69 'osci
96a20 6c 6c 61 74 6f 72 27 2c 0a 09 20 20 20 20 20 20 llator',..
96a30 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 'frequency
96a40 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
96a50 27 64 65 74 75 6e 65 27 2c 0a 09 20 20 20 20 20 'detune',..
96a60 20 20 20 20 20 20 20 27 66 69 6c 74 65 72 27 2c 'filter',
96a70 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 66 .. 'f
96a80 69 6c 74 65 72 45 6e 76 65 6c 6f 70 65 27 2c 0a ilterEnvelope',.
96a90 09 20 20 20 20 20 20 20 20 20 20 20 20 27 65 6e . 'en
96aa0 76 65 6c 6f 70 65 27 0a 09 20 20 20 20 20 20 20 velope'..
96ab0 20 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 ]);.. };..
96ac0 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f Tone.extend(To
96ad0 6e 65 2e 4d 6f 6e 6f 53 79 6e 74 68 2c 20 54 6f ne.MonoSynth, To
96ae0 6e 65 2e 4d 6f 6e 6f 70 68 6f 6e 69 63 29 3b 0a ne.Monophonic);.
96af0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 . /**... * @
96b00 63 6f 6e 73 74 0a 09 09 20 2a 20 20 40 73 74 61 const... * @sta
96b10 74 69 63 0a 09 09 20 2a 20 20 40 74 79 70 65 20 tic... * @type
96b20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 {Object}... */..
96b30 20 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f 53 79 6e Tone.MonoSyn
96b40 74 68 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a th.defaults = {.
96b50 09 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 . 'freque
96b60 6e 63 79 27 3a 20 27 43 34 27 2c 0a 09 20 20 20 ncy': 'C4',..
96b70 20 20 20 20 20 27 64 65 74 75 6e 65 27 3a 20 30 'detune': 0
96b80 2c 0a 09 20 20 20 20 20 20 20 20 27 6f 73 63 69 ,.. 'osci
96b90 6c 6c 61 74 6f 72 27 3a 20 7b 20 27 74 79 70 65 llator': { 'type
96ba0 27 3a 20 27 73 71 75 61 72 65 27 20 7d 2c 0a 09 ': 'square' },..
96bb0 20 20 20 20 20 20 20 20 27 66 69 6c 74 65 72 27 'filter'
96bc0 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 : {..
96bd0 20 27 51 27 3a 20 36 2c 0a 09 20 20 20 20 20 20 'Q': 6,..
96be0 20 20 20 20 20 20 27 74 79 70 65 27 3a 20 27 6c 'type': 'l
96bf0 6f 77 70 61 73 73 27 2c 0a 09 20 20 20 20 20 20 owpass',..
96c00 20 20 20 20 20 20 27 72 6f 6c 6c 6f 66 66 27 3a 'rolloff':
96c10 20 2d 32 34 0a 09 20 20 20 20 20 20 20 20 7d 2c -24.. },
96c20 0a 09 20 20 20 20 20 20 20 20 27 65 6e 76 65 6c .. 'envel
96c30 6f 70 65 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 ope': {..
96c40 20 20 20 20 20 27 61 74 74 61 63 6b 27 3a 20 30 'attack': 0
96c50 2e 30 30 35 2c 0a 09 20 20 20 20 20 20 20 20 20 .005,..
96c60 20 20 20 27 64 65 63 61 79 27 3a 20 30 2e 31 2c 'decay': 0.1,
96c70 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 73 .. 's
96c80 75 73 74 61 69 6e 27 3a 20 30 2e 39 2c 0a 09 20 ustain': 0.9,..
96c90 20 20 20 20 20 20 20 20 20 20 20 27 72 65 6c 65 'rele
96ca0 61 73 65 27 3a 20 31 0a 09 20 20 20 20 20 20 20 ase': 1..
96cb0 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 27 66 69 },.. 'fi
96cc0 6c 74 65 72 45 6e 76 65 6c 6f 70 65 27 3a 20 7b lterEnvelope': {
96cd0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 61 .. 'a
96ce0 74 74 61 63 6b 27 3a 20 30 2e 30 36 2c 0a 09 20 ttack': 0.06,..
96cf0 20 20 20 20 20 20 20 20 20 20 20 27 64 65 63 61 'deca
96d00 79 27 3a 20 30 2e 32 2c 0a 09 20 20 20 20 20 20 y': 0.2,..
96d10 20 20 20 20 20 20 27 73 75 73 74 61 69 6e 27 3a 'sustain':
96d20 20 30 2e 35 2c 0a 09 20 20 20 20 20 20 20 20 20 0.5,..
96d30 20 20 20 27 72 65 6c 65 61 73 65 27 3a 20 32 2c 'release': 2,
96d40 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 62 .. 'b
96d50 61 73 65 46 72 65 71 75 65 6e 63 79 27 3a 20 32 aseFrequency': 2
96d60 30 30 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 00,..
96d70 20 27 6f 63 74 61 76 65 73 27 3a 20 37 2c 0a 09 'octaves': 7,..
96d80 20 20 20 20 20 20 20 20 20 20 20 20 27 65 78 70 'exp
96d90 6f 6e 65 6e 74 27 3a 20 32 0a 09 20 20 20 20 20 onent': 2..
96da0 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 20 }.. };..
96db0 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 73 74 61 72 /**... * star
96dc0 74 20 74 68 65 20 61 74 74 61 63 6b 20 70 6f 72 t the attack por
96dd0 74 69 6f 6e 20 6f 66 20 74 68 65 20 65 6e 76 65 tion of the enve
96de0 6c 6f 70 65 0a 09 09 20 2a 20 20 40 70 61 72 61 lope... * @para
96df0 6d 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e m {Time} [time=n
96e00 6f 77 5d 20 74 68 65 20 74 69 6d 65 20 74 68 65 ow] the time the
96e10 20 61 74 74 61 63 6b 20 73 68 6f 75 6c 64 20 73 attack should s
96e20 74 61 72 74 0a 09 09 20 2a 20 20 40 70 61 72 61 tart... * @para
96e30 6d 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 7d 20 m {NormalRange}
96e40 5b 76 65 6c 6f 63 69 74 79 3d 31 5d 20 74 68 65 [velocity=1] the
96e50 20 76 65 6c 6f 63 69 74 79 20 6f 66 20 74 68 65 velocity of the
96e60 20 6e 6f 74 65 20 28 30 2d 31 29 0a 09 09 20 2a note (0-1)... *
96e70 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
96e80 2e 4d 6f 6e 6f 53 79 6e 74 68 7d 20 74 68 69 73 .MonoSynth} this
96e90 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
96ea0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
96eb0 4d 6f 6e 6f 53 79 6e 74 68 2e 70 72 6f 74 6f 74 MonoSynth.protot
96ec0 79 70 65 2e 5f 74 72 69 67 67 65 72 45 6e 76 65 ype._triggerEnve
96ed0 6c 6f 70 65 41 74 74 61 63 6b 20 3d 20 66 75 6e lopeAttack = fun
96ee0 63 74 69 6f 6e 20 28 74 69 6d 65 2c 20 76 65 6c ction (time, vel
96ef0 6f 63 69 74 79 29 20 7b 0a 09 20 20 20 20 20 20 ocity) {..
96f00 20 20 2f 2f 74 68 65 20 65 6e 76 65 6c 6f 70 65 //the envelope
96f10 73 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e s.. this.
96f20 65 6e 76 65 6c 6f 70 65 2e 74 72 69 67 67 65 72 envelope.trigger
96f30 41 74 74 61 63 6b 28 74 69 6d 65 2c 20 76 65 6c Attack(time, vel
96f40 6f 63 69 74 79 29 3b 0a 09 20 20 20 20 20 20 20 ocity);..
96f50 20 74 68 69 73 2e 66 69 6c 74 65 72 45 6e 76 65 this.filterEnve
96f60 6c 6f 70 65 2e 74 72 69 67 67 65 72 41 74 74 61 lope.triggerAtta
96f70 63 6b 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 ck(time);..
96f80 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
96f90 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
96fa0 0a 09 09 20 2a 20 20 73 74 61 72 74 20 74 68 65 ... * start the
96fb0 20 72 65 6c 65 61 73 65 20 70 6f 72 74 69 6f 6e release portion
96fc0 20 6f 66 20 74 68 65 20 65 6e 76 65 6c 6f 70 65 of the envelope
96fd0 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 ... * @param {T
96fe0 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 ime} [time=now]
96ff0 74 68 65 20 74 69 6d 65 20 74 68 65 20 72 65 6c the time the rel
97000 65 61 73 65 20 73 68 6f 75 6c 64 20 73 74 61 72 ease should star
97010 74 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 t... * @returns
97020 20 7b 54 6f 6e 65 2e 4d 6f 6e 6f 53 79 6e 74 68 {Tone.MonoSynth
97030 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 40 70 72 } this... * @pr
97040 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 ivate... */..
97050 20 54 6f 6e 65 2e 4d 6f 6e 6f 53 79 6e 74 68 2e Tone.MonoSynth.
97060 70 72 6f 74 6f 74 79 70 65 2e 5f 74 72 69 67 67 prototype._trigg
97070 65 72 45 6e 76 65 6c 6f 70 65 52 65 6c 65 61 73 erEnvelopeReleas
97080 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 e = function (ti
97090 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 me) {.. t
970a0 68 69 73 2e 65 6e 76 65 6c 6f 70 65 2e 74 72 69 his.envelope.tri
970b0 67 67 65 72 52 65 6c 65 61 73 65 28 74 69 6d 65 ggerRelease(time
970c0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
970d0 2e 66 69 6c 74 65 72 45 6e 76 65 6c 6f 70 65 2e .filterEnvelope.
970e0 74 72 69 67 67 65 72 52 65 6c 65 61 73 65 28 74 triggerRelease(t
970f0 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 72 ime);.. r
97100 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 eturn this;..
97110 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
97120 2a 20 20 63 6c 65 61 6e 20 75 70 0a 09 09 20 2a * clean up... *
97130 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
97140 2e 4d 6f 6e 6f 53 79 6e 74 68 7d 20 74 68 69 73 .MonoSynth} this
97150 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
97160 2e 4d 6f 6e 6f 53 79 6e 74 68 2e 70 72 6f 74 6f .MonoSynth.proto
97170 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 type.dispose = f
97180 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
97190 20 20 20 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f 70 Tone.Monop
971a0 68 6f 6e 69 63 2e 70 72 6f 74 6f 74 79 70 65 2e honic.prototype.
971b0 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 dispose.call(thi
971c0 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 s);.. thi
971d0 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 s._writable([..
971e0 20 20 20 20 20 20 20 20 20 20 20 27 6f 73 63 69 'osci
971f0 6c 6c 61 74 6f 72 27 2c 0a 09 20 20 20 20 20 20 llator',..
97200 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 'frequency
97210 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
97220 27 64 65 74 75 6e 65 27 2c 0a 09 20 20 20 20 20 'detune',..
97230 20 20 20 20 20 20 20 27 66 69 6c 74 65 72 27 2c 'filter',
97240 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 66 .. 'f
97250 69 6c 74 65 72 45 6e 76 65 6c 6f 70 65 27 2c 0a ilterEnvelope',.
97260 09 20 20 20 20 20 20 20 20 20 20 20 20 27 65 6e . 'en
97270 76 65 6c 6f 70 65 27 0a 09 20 20 20 20 20 20 20 velope'..
97280 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ]);.. th
97290 69 73 2e 6f 73 63 69 6c 6c 61 74 6f 72 2e 64 69 is.oscillator.di
972a0 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
972b0 20 20 74 68 69 73 2e 6f 73 63 69 6c 6c 61 74 6f this.oscillato
972c0 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 r = null;..
972d0 20 20 20 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 this.envelope
972e0 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
972f0 20 20 20 20 20 74 68 69 73 2e 65 6e 76 65 6c 6f this.envelo
97300 70 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 pe = null;..
97310 20 20 20 20 74 68 69 73 2e 66 69 6c 74 65 72 45 this.filterE
97320 6e 76 65 6c 6f 70 65 2e 64 69 73 70 6f 73 65 28 nvelope.dispose(
97330 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
97340 2e 66 69 6c 74 65 72 45 6e 76 65 6c 6f 70 65 20 .filterEnvelope
97350 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
97360 20 74 68 69 73 2e 66 69 6c 74 65 72 2e 64 69 73 this.filter.dis
97370 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
97380 20 74 68 69 73 2e 66 69 6c 74 65 72 20 3d 20 6e this.filter = n
97390 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
973a0 69 73 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 6e is.frequency = n
973b0 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
973c0 69 73 2e 64 65 74 75 6e 65 20 3d 20 6e 75 6c 6c is.detune = null
973d0 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
973e0 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
973f0 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 . return Tone
97400 2e 4d 6f 6e 6f 53 79 6e 74 68 3b 0a 09 7d 29 3b .MonoSynth;..});
97410 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f ..Module(functio
97420 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 n (Tone) {..
97430 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
97440 40 63 6c 61 73 73 20 20 54 6f 6e 65 2e 44 75 6f @class Tone.Duo
97450 53 79 6e 74 68 20 69 73 20 61 20 6d 6f 6e 6f 70 Synth is a monop
97460 68 6f 6e 69 63 20 73 79 6e 74 68 20 63 6f 6d 70 honic synth comp
97470 6f 73 65 64 20 6f 66 20 74 77 6f 20 0a 09 09 20 osed of two ...
97480 2a 20 20 20 20 20 20 20 20 20 20 4d 6f 6e 6f 53 * MonoS
97490 79 6e 74 68 73 20 72 75 6e 20 69 6e 20 70 61 72 ynths run in par
974a0 61 6c 6c 65 6c 20 77 69 74 68 20 63 6f 6e 74 72 allel with contr
974b0 6f 6c 20 6f 76 65 72 20 74 68 65 20 0a 09 09 20 ol over the ...
974c0 2a 20 20 20 20 20 20 20 20 20 20 66 72 65 71 75 * frequ
974d0 65 6e 63 79 20 72 61 74 69 6f 20 62 65 74 77 65 ency ratio betwe
974e0 65 6e 20 74 68 65 20 74 77 6f 20 76 6f 69 63 65 en the two voice
974f0 73 20 61 6e 64 20 76 69 62 72 61 74 6f 20 65 66 s and vibrato ef
97500 66 65 63 74 2e 0a 09 09 20 2a 20 20 20 20 20 20 fect.... *
97510 20 20 20 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 <img src="ht
97520 74 70 73 3a 2f 2f 64 6f 63 73 2e 67 6f 6f 67 6c tps://docs.googl
97530 65 2e 63 6f 6d 2f 64 72 61 77 69 6e 67 73 2f 64 e.com/drawings/d
97540 2f 31 62 4c 34 47 58 76 66 52 4d 4d 6c 71 53 37 /1bL4GXvfRMMlqS7
97550 58 79 42 6d 39 43 6a 4c 39 4b 4a 50 53 55 4b 62 XyBm9CjL9KJPSUKb
97560 63 64 42 4e 70 71 4f 6c 6b 46 4c 78 6b 2f 70 75 cdBNpqOlkFLxk/pu
97570 62 3f 77 3d 31 30 31 32 26 68 3d 34 34 38 22 3e b?w=1012&h=448">
97580 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e ... *... * @con
97590 73 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 structor... * @
975a0 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 4d 6f extends {Tone.Mo
975b0 6e 6f 70 68 6f 6e 69 63 7d 0a 09 09 20 2a 20 20 nophonic}... *
975c0 40 70 61 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20 @param {Object}
975d0 5b 6f 70 74 69 6f 6e 73 5d 20 74 68 65 20 6f 70 [options] the op
975e0 74 69 6f 6e 73 20 61 76 61 69 6c 61 62 6c 65 20 tions available
975f0 66 6f 72 20 74 68 65 20 73 79 6e 74 68 20 0a 09 for the synth ..
97600 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 . *
97610 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 65 see
97620 20 64 65 66 61 75 6c 74 73 20 62 65 6c 6f 77 0a defaults below.
97630 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
97640 09 20 2a 20 76 61 72 20 64 75 6f 53 79 6e 74 68 . * var duoSynth
97650 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 44 75 6f 53 = new Tone.DuoS
97660 79 6e 74 68 28 29 2e 74 6f 4d 61 73 74 65 72 28 ynth().toMaster(
97670 29 3b 0a 09 09 20 2a 20 64 75 6f 53 79 6e 74 68 );... * duoSynth
97680 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b 52 65 .triggerAttackRe
97690 6c 65 61 73 65 28 22 43 34 22 2c 20 22 32 6e 22 lease("C4", "2n"
976a0 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f );... */.. To
976b0 6e 65 2e 44 75 6f 53 79 6e 74 68 20 3d 20 66 75 ne.DuoSynth = fu
976c0 6e 63 74 69 6f 6e 20 28 6f 70 74 69 6f 6e 73 29 nction (options)
976d0 20 7b 0a 09 20 20 20 20 20 20 20 20 6f 70 74 69 {.. opti
976e0 6f 6e 73 20 3d 20 74 68 69 73 2e 64 65 66 61 75 ons = this.defau
976f0 6c 74 41 72 67 28 6f 70 74 69 6f 6e 73 2c 20 54 ltArg(options, T
97700 6f 6e 65 2e 44 75 6f 53 79 6e 74 68 2e 64 65 66 one.DuoSynth.def
97710 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 aults);..
97720 20 54 6f 6e 65 2e 4d 6f 6e 6f 70 68 6f 6e 69 63 Tone.Monophonic
97730 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 .call(this, opti
97740 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f ons);.. /
97750 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 66 69 **.... * the fi
97760 72 73 74 20 76 6f 69 63 65 0a 09 09 09 20 2a 20 rst voice.... *
97770 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4d 6f 6e @type {Tone.Mon
97780 6f 53 79 6e 74 68 7d 0a 09 09 09 20 2a 2f 0a 09 oSynth}.... */..
97790 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 6f 69 this.voi
977a0 63 65 30 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d ce0 = new Tone.M
977b0 6f 6e 6f 53 79 6e 74 68 28 6f 70 74 69 6f 6e 73 onoSynth(options
977c0 2e 76 6f 69 63 65 30 29 3b 0a 09 20 20 20 20 20 .voice0);..
977d0 20 20 20 74 68 69 73 2e 76 6f 69 63 65 30 2e 76 this.voice0.v
977e0 6f 6c 75 6d 65 2e 76 61 6c 75 65 20 3d 20 2d 31 olume.value = -1
977f0 30 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 0;.. /**.
97800 09 09 09 20 2a 20 20 74 68 65 20 73 65 63 6f 6e ... * the secon
97810 64 20 76 6f 69 63 65 0a 09 09 09 20 2a 20 20 40 d voice.... * @
97820 74 79 70 65 20 7b 54 6f 6e 65 2e 4d 6f 6e 6f 53 type {Tone.MonoS
97830 79 6e 74 68 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 ynth}.... */..
97840 20 20 20 20 20 20 74 68 69 73 2e 76 6f 69 63 65 this.voice
97850 31 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 6f 6e 1 = new Tone.Mon
97860 6f 53 79 6e 74 68 28 6f 70 74 69 6f 6e 73 2e 76 oSynth(options.v
97870 6f 69 63 65 31 29 3b 0a 09 20 20 20 20 20 20 20 oice1);..
97880 20 74 68 69 73 2e 76 6f 69 63 65 31 2e 76 6f 6c this.voice1.vol
97890 75 6d 65 2e 76 61 6c 75 65 20 3d 20 2d 31 30 3b ume.value = -10;
978a0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
978b0 09 20 2a 20 20 54 68 65 20 76 69 62 72 61 74 6f . * The vibrato
978c0 20 4c 46 4f 2e 20 0a 09 09 09 20 2a 20 20 40 74 LFO. .... * @t
978d0 79 70 65 20 7b 54 6f 6e 65 2e 4c 46 4f 7d 0a 09 ype {Tone.LFO}..
978e0 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
978f0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
97900 68 69 73 2e 5f 76 69 62 72 61 74 6f 20 3d 20 6e his._vibrato = n
97910 65 77 20 54 6f 6e 65 2e 4c 46 4f 28 6f 70 74 69 ew Tone.LFO(opti
97920 6f 6e 73 2e 76 69 62 72 61 74 6f 52 61 74 65 2c ons.vibratoRate,
97930 20 2d 35 30 2c 20 35 30 29 3b 0a 09 20 20 20 20 -50, 50);..
97940 20 20 20 20 74 68 69 73 2e 5f 76 69 62 72 61 74 this._vibrat
97950 6f 2e 73 74 61 72 74 28 29 3b 0a 09 20 20 20 20 o.start();..
97960 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 74 68 /**.... * th
97970 65 20 76 69 62 72 61 74 6f 20 66 72 65 71 75 65 e vibrato freque
97980 6e 63 79 0a 09 09 09 20 2a 20 40 74 79 70 65 20 ncy.... * @type
97990 7b 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 09 20 {Frequency}....
979a0 2a 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f * @signal.... */
979b0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 .. this.v
979c0 69 62 72 61 74 6f 52 61 74 65 20 3d 20 74 68 69 ibratoRate = thi
979d0 73 2e 5f 76 69 62 72 61 74 6f 2e 66 72 65 71 75 s._vibrato.frequ
979e0 65 6e 63 79 3b 0a 09 20 20 20 20 20 20 20 20 2f ency;.. /
979f0 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 76 69 **.... * the vi
97a00 62 72 61 74 6f 20 67 61 69 6e 0a 09 09 09 20 2a brato gain.... *
97a10 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 47 61 @type {Tone.Ga
97a20 69 6e 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 in}.... * @priv
97a30 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 ate.... */..
97a40 20 20 20 20 74 68 69 73 2e 5f 76 69 62 72 61 74 this._vibrat
97a50 6f 47 61 69 6e 20 3d 20 6e 65 77 20 54 6f 6e 65 oGain = new Tone
97a60 2e 47 61 69 6e 28 6f 70 74 69 6f 6e 73 2e 76 69 .Gain(options.vi
97a70 62 72 61 74 6f 41 6d 6f 75 6e 74 2c 20 54 6f 6e bratoAmount, Ton
97a80 65 2e 54 79 70 65 2e 50 6f 73 69 74 69 76 65 29 e.Type.Positive)
97a90 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
97aa0 09 09 20 2a 20 54 68 65 20 61 6d 6f 75 6e 74 20 .. * The amount
97ab0 6f 66 20 76 69 62 72 61 74 6f 0a 09 09 09 20 2a of vibrato.... *
97ac0 20 40 74 79 70 65 20 7b 50 6f 73 69 74 69 76 65 @type {Positive
97ad0 7d 0a 09 09 09 20 2a 20 40 73 69 67 6e 61 6c 0a }.... * @signal.
97ae0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
97af0 74 68 69 73 2e 76 69 62 72 61 74 6f 41 6d 6f 75 this.vibratoAmou
97b00 6e 74 20 3d 20 74 68 69 73 2e 5f 76 69 62 72 61 nt = this._vibra
97b10 74 6f 47 61 69 6e 2e 67 61 69 6e 3b 0a 09 20 20 toGain.gain;..
97b20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
97b30 20 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 63 the frequency c
97b40 6f 6e 74 72 6f 6c 0a 09 09 09 20 2a 20 20 40 74 ontrol.... * @t
97b50 79 70 65 20 7b 46 72 65 71 75 65 6e 63 79 7d 0a ype {Frequency}.
97b60 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 ... * @signal..
97b70 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
97b80 68 69 73 2e 66 72 65 71 75 65 6e 63 79 20 3d 20 his.frequency =
97b90 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 new Tone.Signal(
97ba0 34 34 30 2c 20 54 6f 6e 65 2e 54 79 70 65 2e 46 440, Tone.Type.F
97bb0 72 65 71 75 65 6e 63 79 29 3b 0a 09 20 20 20 20 requency);..
97bc0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 48 /**.... * H
97bd0 61 72 6d 6f 6e 69 63 69 74 79 20 69 73 20 74 68 armonicity is th
97be0 65 20 72 61 74 69 6f 20 62 65 74 77 65 65 6e 20 e ratio between
97bf0 74 68 65 20 74 77 6f 20 76 6f 69 63 65 73 2e 20 the two voices.
97c00 41 20 68 61 72 6d 6f 6e 69 63 69 74 79 20 6f 66 A harmonicity of
97c10 0a 09 09 09 20 2a 20 20 31 20 69 73 20 6e 6f 20 .... * 1 is no
97c20 63 68 61 6e 67 65 2e 20 48 61 72 6d 6f 6e 69 63 change. Harmonic
97c30 69 74 79 20 3d 20 32 20 6d 65 61 6e 73 20 61 20 ity = 2 means a
97c40 63 68 61 6e 67 65 20 6f 66 20 61 6e 20 6f 63 74 change of an oct
97c50 61 76 65 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 ave. .... * @ty
97c60 70 65 20 7b 50 6f 73 69 74 69 76 65 7d 0a 09 09 pe {Positive}...
97c70 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 . * @signal....
97c80 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 09 * @example....
97c90 20 2a 20 2f 2f 70 69 74 63 68 20 76 6f 69 63 65 * //pitch voice
97ca0 31 20 61 6e 20 6f 63 74 61 76 65 20 62 65 6c 6f 1 an octave belo
97cb0 77 20 76 6f 69 63 65 30 0a 09 09 09 20 2a 20 64 w voice0.... * d
97cc0 75 6f 53 79 6e 74 68 2e 68 61 72 6d 6f 6e 69 63 uoSynth.harmonic
97cd0 69 74 79 2e 76 61 6c 75 65 20 3d 20 30 2e 35 3b ity.value = 0.5;
97ce0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
97cf0 20 74 68 69 73 2e 68 61 72 6d 6f 6e 69 63 69 74 this.harmonicit
97d00 79 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 75 6c y = new Tone.Mul
97d10 74 69 70 6c 79 28 6f 70 74 69 6f 6e 73 2e 68 61 tiply(options.ha
97d20 72 6d 6f 6e 69 63 69 74 79 29 3b 0a 09 20 20 20 rmonicity);..
97d30 20 20 20 20 20 74 68 69 73 2e 68 61 72 6d 6f 6e this.harmon
97d40 69 63 69 74 79 2e 75 6e 69 74 73 20 3d 20 54 6f icity.units = To
97d50 6e 65 2e 54 79 70 65 2e 50 6f 73 69 74 69 76 65 ne.Type.Positive
97d60 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e ;.. //con
97d70 74 72 6f 6c 20 74 68 65 20 74 77 6f 20 76 6f 69 trol the two voi
97d80 63 65 73 20 66 72 65 71 75 65 6e 63 79 0a 09 20 ces frequency..
97d90 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 this.freq
97da0 75 65 6e 63 79 2e 63 6f 6e 6e 65 63 74 28 74 68 uency.connect(th
97db0 69 73 2e 76 6f 69 63 65 30 2e 66 72 65 71 75 65 is.voice0.freque
97dc0 6e 63 79 29 3b 0a 09 20 20 20 20 20 20 20 20 74 ncy);.. t
97dd0 68 69 73 2e 66 72 65 71 75 65 6e 63 79 2e 63 68 his.frequency.ch
97de0 61 69 6e 28 74 68 69 73 2e 68 61 72 6d 6f 6e 69 ain(this.harmoni
97df0 63 69 74 79 2c 20 74 68 69 73 2e 76 6f 69 63 65 city, this.voice
97e00 31 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a 09 20 1.frequency);..
97e10 20 20 20 20 20 20 20 74 68 69 73 2e 5f 76 69 62 this._vib
97e20 72 61 74 6f 2e 63 6f 6e 6e 65 63 74 28 74 68 69 rato.connect(thi
97e30 73 2e 5f 76 69 62 72 61 74 6f 47 61 69 6e 29 3b s._vibratoGain);
97e40 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
97e50 76 69 62 72 61 74 6f 47 61 69 6e 2e 66 61 6e 28 vibratoGain.fan(
97e60 74 68 69 73 2e 76 6f 69 63 65 30 2e 64 65 74 75 this.voice0.detu
97e70 6e 65 2c 20 74 68 69 73 2e 76 6f 69 63 65 31 2e ne, this.voice1.
97e80 64 65 74 75 6e 65 29 3b 0a 09 20 20 20 20 20 20 detune);..
97e90 20 20 74 68 69 73 2e 76 6f 69 63 65 30 2e 63 6f this.voice0.co
97ea0 6e 6e 65 63 74 28 74 68 69 73 2e 6f 75 74 70 75 nnect(this.outpu
97eb0 74 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 t);.. thi
97ec0 73 2e 76 6f 69 63 65 31 2e 63 6f 6e 6e 65 63 74 s.voice1.connect
97ed0 28 74 68 69 73 2e 6f 75 74 70 75 74 29 3b 0a 09 (this.output);..
97ee0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 this._re
97ef0 61 64 4f 6e 6c 79 28 5b 0a 09 20 20 20 20 20 20 adOnly([..
97f00 20 20 20 20 20 20 27 76 6f 69 63 65 30 27 2c 0a 'voice0',.
97f10 09 20 20 20 20 20 20 20 20 20 20 20 20 27 76 6f . 'vo
97f20 69 63 65 31 27 2c 0a 09 20 20 20 20 20 20 20 20 ice1',..
97f30 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 2c 'frequency',
97f40 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 76 .. 'v
97f50 69 62 72 61 74 6f 41 6d 6f 75 6e 74 27 2c 0a 09 ibratoAmount',..
97f60 20 20 20 20 20 20 20 20 20 20 20 20 27 76 69 62 'vib
97f70 72 61 74 6f 52 61 74 65 27 0a 09 20 20 20 20 20 ratoRate'..
97f80 20 20 20 5d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 ]);.. };..
97f90 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 Tone.extend(
97fa0 54 6f 6e 65 2e 44 75 6f 53 79 6e 74 68 2c 20 54 Tone.DuoSynth, T
97fb0 6f 6e 65 2e 4d 6f 6e 6f 70 68 6f 6e 69 63 29 3b one.Monophonic);
97fc0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
97fd0 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 74 @static... * @t
97fe0 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 ype {Object}...
97ff0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 44 75 6f */.. Tone.Duo
98000 53 79 6e 74 68 2e 64 65 66 61 75 6c 74 73 20 3d Synth.defaults =
98010 20 7b 0a 09 20 20 20 20 20 20 20 20 27 76 69 62 {.. 'vib
98020 72 61 74 6f 41 6d 6f 75 6e 74 27 3a 20 30 2e 35 ratoAmount': 0.5
98030 2c 0a 09 20 20 20 20 20 20 20 20 27 76 69 62 72 ,.. 'vibr
98040 61 74 6f 52 61 74 65 27 3a 20 35 2c 0a 09 20 20 atoRate': 5,..
98050 20 20 20 20 20 20 27 68 61 72 6d 6f 6e 69 63 69 'harmonici
98060 74 79 27 3a 20 31 2e 35 2c 0a 09 20 20 20 20 20 ty': 1.5,..
98070 20 20 20 27 76 6f 69 63 65 30 27 3a 20 7b 0a 09 'voice0': {..
98080 20 20 20 20 20 20 20 20 20 20 20 20 27 76 6f 6c 'vol
98090 75 6d 65 27 3a 20 2d 31 30 2c 0a 09 20 20 20 20 ume': -10,..
980a0 20 20 20 20 20 20 20 20 27 70 6f 72 74 61 6d 65 'portame
980b0 6e 74 6f 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 nto': 0,..
980c0 20 20 20 20 20 20 27 6f 73 63 69 6c 6c 61 74 6f 'oscillato
980d0 72 27 3a 20 7b 20 27 74 79 70 65 27 3a 20 27 73 r': { 'type': 's
980e0 69 6e 65 27 20 7d 2c 0a 09 20 20 20 20 20 20 20 ine' },..
980f0 20 20 20 20 20 27 66 69 6c 74 65 72 45 6e 76 65 'filterEnve
98100 6c 6f 70 65 27 3a 20 7b 0a 09 20 20 20 20 20 20 lope': {..
98110 20 20 20 20 20 20 20 20 20 20 27 61 74 74 61 63 'attac
98120 6b 27 3a 20 30 2e 30 31 2c 0a 09 20 20 20 20 20 k': 0.01,..
98130 20 20 20 20 20 20 20 20 20 20 20 27 64 65 63 61 'deca
98140 79 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 y': 0,..
98150 20 20 20 20 20 20 20 20 27 73 75 73 74 61 69 6e 'sustain
98160 27 3a 20 31 2c 0a 09 20 20 20 20 20 20 20 20 20 ': 1,..
98170 20 20 20 20 20 20 20 27 72 65 6c 65 61 73 65 27 'release'
98180 3a 20 30 2e 35 0a 09 20 20 20 20 20 20 20 20 20 : 0.5..
98190 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 20 },..
981a0 20 20 20 27 65 6e 76 65 6c 6f 70 65 27 3a 20 7b 'envelope': {
981b0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
981c0 20 20 27 61 74 74 61 63 6b 27 3a 20 30 2e 30 31 'attack': 0.01
981d0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
981e0 20 20 20 27 64 65 63 61 79 27 3a 20 30 2c 0a 09 'decay': 0,..
981f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
98200 27 73 75 73 74 61 69 6e 27 3a 20 31 2c 0a 09 20 'sustain': 1,..
98210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 '
98220 72 65 6c 65 61 73 65 27 3a 20 30 2e 35 0a 09 20 release': 0.5..
98230 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
98240 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 },..
98250 20 20 27 76 6f 69 63 65 31 27 3a 20 7b 0a 09 20 'voice1': {..
98260 20 20 20 20 20 20 20 20 20 20 20 27 76 6f 6c 75 'volu
98270 6d 65 27 3a 20 2d 31 30 2c 0a 09 20 20 20 20 20 me': -10,..
98280 20 20 20 20 20 20 20 27 70 6f 72 74 61 6d 65 6e 'portamen
98290 74 6f 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 to': 0,..
982a0 20 20 20 20 20 27 6f 73 63 69 6c 6c 61 74 6f 72 'oscillator
982b0 27 3a 20 7b 20 27 74 79 70 65 27 3a 20 27 73 69 ': { 'type': 'si
982c0 6e 65 27 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 ne' },..
982d0 20 20 20 20 27 66 69 6c 74 65 72 45 6e 76 65 6c 'filterEnvel
982e0 6f 70 65 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 ope': {..
982f0 20 20 20 20 20 20 20 20 20 27 61 74 74 61 63 6b 'attack
98300 27 3a 20 30 2e 30 31 2c 0a 09 20 20 20 20 20 20 ': 0.01,..
98310 20 20 20 20 20 20 20 20 20 20 27 64 65 63 61 79 'decay
98320 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 20 ': 0,..
98330 20 20 20 20 20 20 20 27 73 75 73 74 61 69 6e 27 'sustain'
98340 3a 20 31 2c 0a 09 20 20 20 20 20 20 20 20 20 20 : 1,..
98350 20 20 20 20 20 20 27 72 65 6c 65 61 73 65 27 3a 'release':
98360 20 30 2e 35 0a 09 20 20 20 20 20 20 20 20 20 20 0.5..
98370 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 20 20 },..
98380 20 20 27 65 6e 76 65 6c 6f 70 65 27 3a 20 7b 0a 'envelope': {.
98390 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
983a0 20 27 61 74 74 61 63 6b 27 3a 20 30 2e 30 31 2c 'attack': 0.01,
983b0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
983c0 20 20 27 64 65 63 61 79 27 3a 20 30 2c 0a 09 20 'decay': 0,..
983d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 '
983e0 73 75 73 74 61 69 6e 27 3a 20 31 2c 0a 09 20 20 sustain': 1,..
983f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 72 'r
98400 65 6c 65 61 73 65 27 3a 20 30 2e 35 0a 09 20 20 elease': 0.5..
98410 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
98420 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 }.. };..
98430 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 73 74 /**... * st
98440 61 72 74 20 74 68 65 20 61 74 74 61 63 6b 20 70 art the attack p
98450 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 65 6e ortion of the en
98460 76 65 6c 6f 70 65 73 0a 09 09 20 2a 20 20 0a 09 velopes... * ..
98470 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 6d . * @param {Tim
98480 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 74 68 e} [time=now] th
98490 65 20 74 69 6d 65 20 74 68 65 20 61 74 74 61 63 e time the attac
984a0 6b 20 73 68 6f 75 6c 64 20 73 74 61 72 74 0a 09 k should start..
984b0 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 4e 6f 72 . * @param {Nor
984c0 6d 61 6c 52 61 6e 67 65 7d 20 5b 76 65 6c 6f 63 malRange} [veloc
984d0 69 74 79 3d 31 5d 20 74 68 65 20 76 65 6c 6f 63 ity=1] the veloc
984e0 69 74 79 20 6f 66 20 74 68 65 20 6e 6f 74 65 20 ity of the note
984f0 28 30 2d 31 29 0a 09 09 20 2a 20 20 40 72 65 74 (0-1)... * @ret
98500 75 72 6e 73 20 7b 54 6f 6e 65 2e 44 75 6f 53 79 urns {Tone.DuoSy
98510 6e 74 68 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 nth} this... *
98520 40 70 72 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 @private... */..
98530 20 20 20 20 54 6f 6e 65 2e 44 75 6f 53 79 6e 74 Tone.DuoSynt
98540 68 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 74 72 69 h.prototype._tri
98550 67 67 65 72 45 6e 76 65 6c 6f 70 65 41 74 74 61 ggerEnvelopeAtta
98560 63 6b 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 ck = function (t
98570 69 6d 65 2c 20 76 65 6c 6f 63 69 74 79 29 20 7b ime, velocity) {
98580 0a 09 20 20 20 20 20 20 20 20 74 69 6d 65 20 3d .. time =
98590 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 this.toSeconds(
985a0 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 time);..
985b0 74 68 69 73 2e 76 6f 69 63 65 30 2e 65 6e 76 65 this.voice0.enve
985c0 6c 6f 70 65 2e 74 72 69 67 67 65 72 41 74 74 61 lope.triggerAtta
985d0 63 6b 28 74 69 6d 65 2c 20 76 65 6c 6f 63 69 74 ck(time, velocit
985e0 79 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 y);.. thi
985f0 73 2e 76 6f 69 63 65 31 2e 65 6e 76 65 6c 6f 70 s.voice1.envelop
98600 65 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b 28 e.triggerAttack(
98610 74 69 6d 65 2c 20 76 65 6c 6f 63 69 74 79 29 3b time, velocity);
98620 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 .. this.v
98630 6f 69 63 65 30 2e 66 69 6c 74 65 72 45 6e 76 65 oice0.filterEnve
98640 6c 6f 70 65 2e 74 72 69 67 67 65 72 41 74 74 61 lope.triggerAtta
98650 63 6b 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 ck(time);..
98660 20 20 20 74 68 69 73 2e 76 6f 69 63 65 31 2e 66 this.voice1.f
98670 69 6c 74 65 72 45 6e 76 65 6c 6f 70 65 2e 74 72 ilterEnvelope.tr
98680 69 67 67 65 72 41 74 74 61 63 6b 28 74 69 6d 65 iggerAttack(time
98690 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 );.. retu
986a0 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
986b0 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
986c0 73 74 61 72 74 20 74 68 65 20 72 65 6c 65 61 73 start the releas
986d0 65 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 e portion of the
986e0 20 65 6e 76 65 6c 6f 70 65 73 0a 09 09 20 2a 20 envelopes... *
986f0 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b ... * @param {
98700 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d Time} [time=now]
98710 20 74 68 65 20 74 69 6d 65 20 74 68 65 20 72 65 the time the re
98720 6c 65 61 73 65 20 73 68 6f 75 6c 64 20 73 74 61 lease should sta
98730 72 74 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e rt... * @return
98740 73 20 7b 54 6f 6e 65 2e 44 75 6f 53 79 6e 74 68 s {Tone.DuoSynth
98750 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 40 70 72 } this... * @pr
98760 69 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 ivate... */..
98770 20 54 6f 6e 65 2e 44 75 6f 53 79 6e 74 68 2e 70 Tone.DuoSynth.p
98780 72 6f 74 6f 74 79 70 65 2e 5f 74 72 69 67 67 65 rototype._trigge
98790 72 45 6e 76 65 6c 6f 70 65 52 65 6c 65 61 73 65 rEnvelopeRelease
987a0 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d = function (tim
987b0 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 68 e) {.. th
987c0 69 73 2e 76 6f 69 63 65 30 2e 74 72 69 67 67 65 is.voice0.trigge
987d0 72 52 65 6c 65 61 73 65 28 74 69 6d 65 29 3b 0a rRelease(time);.
987e0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 6f . this.vo
987f0 69 63 65 31 2e 74 72 69 67 67 65 72 52 65 6c 65 ice1.triggerRele
98800 61 73 65 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 ase(time);..
98810 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
98820 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
98830 2a 0a 09 09 20 2a 20 20 63 6c 65 61 6e 20 75 70 *... * clean up
98840 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 ... * @returns
98850 7b 54 6f 6e 65 2e 44 75 6f 53 79 6e 74 68 7d 20 {Tone.DuoSynth}
98860 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
98870 54 6f 6e 65 2e 44 75 6f 53 79 6e 74 68 2e 70 72 Tone.DuoSynth.pr
98880 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 ototype.dispose
98890 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
988a0 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 4d 6f . Tone.Mo
988b0 6e 6f 70 68 6f 6e 69 63 2e 70 72 6f 74 6f 74 79 nophonic.prototy
988c0 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 pe.dispose.call(
988d0 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 this);..
988e0 74 68 69 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b this._writable([
988f0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 76 .. 'v
98900 6f 69 63 65 30 27 2c 0a 09 20 20 20 20 20 20 20 oice0',..
98910 20 20 20 20 20 27 76 6f 69 63 65 31 27 2c 0a 09 'voice1',..
98920 20 20 20 20 20 20 20 20 20 20 20 20 27 66 72 65 'fre
98930 71 75 65 6e 63 79 27 2c 0a 09 20 20 20 20 20 20 quency',..
98940 20 20 20 20 20 20 27 76 69 62 72 61 74 6f 41 6d 'vibratoAm
98950 6f 75 6e 74 27 2c 0a 09 20 20 20 20 20 20 20 20 ount',..
98960 20 20 20 20 27 76 69 62 72 61 74 6f 52 61 74 65 'vibratoRate
98970 27 0a 09 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 '.. ]);..
98980 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 6f 69 this.voi
98990 63 65 30 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 ce0.dispose();..
989a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 6f 69 this.voi
989b0 63 65 30 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ce0 = null;..
989c0 20 20 20 20 20 74 68 69 73 2e 76 6f 69 63 65 31 this.voice1
989d0 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
989e0 20 20 20 20 20 74 68 69 73 2e 76 6f 69 63 65 31 this.voice1
989f0 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
98a00 20 20 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 this.frequency
98a10 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
98a20 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 this.freque
98a30 6e 63 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 ncy = null;..
98a40 20 20 20 20 20 74 68 69 73 2e 5f 76 69 62 72 61 this._vibra
98a50 74 6f 47 61 69 6e 2e 64 69 73 70 6f 73 65 28 29 toGain.dispose()
98a60 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
98a70 5f 76 69 62 72 61 74 6f 47 61 69 6e 20 3d 20 6e _vibratoGain = n
98a80 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
98a90 69 73 2e 5f 76 69 62 72 61 74 6f 20 3d 20 6e 75 is._vibrato = nu
98aa0 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ll;.. thi
98ab0 73 2e 68 61 72 6d 6f 6e 69 63 69 74 79 2e 64 69 s.harmonicity.di
98ac0 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
98ad0 20 20 74 68 69 73 2e 68 61 72 6d 6f 6e 69 63 69 this.harmonici
98ae0 74 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 ty = null;..
98af0 20 20 20 20 74 68 69 73 2e 76 69 62 72 61 74 6f this.vibrato
98b00 41 6d 6f 75 6e 74 2e 64 69 73 70 6f 73 65 28 29 Amount.dispose()
98b10 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
98b20 76 69 62 72 61 74 6f 41 6d 6f 75 6e 74 20 3d 20 vibratoAmount =
98b30 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 null;.. t
98b40 68 69 73 2e 76 69 62 72 61 74 6f 52 61 74 65 20 his.vibratoRate
98b50 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
98b60 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
98b70 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
98b80 6e 20 54 6f 6e 65 2e 44 75 6f 53 79 6e 74 68 3b n Tone.DuoSynth;
98b90 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 ..});..Module(fu
98ba0 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a nction (Tone) {.
98bb0 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 . .. /**..
98bc0 09 20 2a 20 20 40 63 6c 61 73 73 20 20 46 4d 53 . * @class FMS
98bd0 79 6e 74 68 20 69 73 20 63 6f 6d 70 6f 73 65 64 ynth is composed
98be0 20 6f 66 20 74 77 6f 20 54 6f 6e 65 2e 53 79 6e of two Tone.Syn
98bf0 74 68 73 20 77 68 65 72 65 20 6f 6e 65 20 54 6f ths where one To
98c00 6e 65 2e 53 79 6e 74 68 20 6d 6f 64 75 6c 61 74 ne.Synth modulat
98c10 65 73 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 es... *
98c20 20 74 68 65 20 66 72 65 71 75 65 6e 63 79 20 6f the frequency o
98c30 66 20 61 20 73 65 63 6f 6e 64 20 54 6f 6e 65 2e f a second Tone.
98c40 53 79 6e 74 68 2e 20 41 20 6c 6f 74 20 6f 66 20 Synth. A lot of
98c50 73 70 65 63 74 72 61 6c 20 63 6f 6e 74 65 6e 74 spectral content
98c60 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 ... *
98c70 63 61 6e 20 62 65 20 65 78 70 6c 6f 72 65 64 20 can be explored
98c80 75 73 69 6e 67 20 74 68 65 20 6d 6f 64 75 6c 61 using the modula
98c90 74 69 6f 6e 49 6e 64 65 78 20 70 61 72 61 6d 65 tionIndex parame
98ca0 74 65 72 2e 20 52 65 61 64 20 6d 6f 72 65 20 61 ter. Read more a
98cb0 62 6f 75 74 0a 09 09 20 2a 20 20 20 20 20 20 20 bout... *
98cc0 20 20 20 66 72 65 71 75 65 6e 63 79 20 6d 6f 64 frequency mod
98cd0 75 6c 61 74 69 6f 6e 20 73 79 6e 74 68 65 73 69 ulation synthesi
98ce0 73 20 6f 6e 20 5b 53 6f 75 6e 64 4f 6e 53 6f 75 s on [SoundOnSou
98cf0 6e 64 5d 28 68 74 74 70 3a 2f 2f 77 77 77 2e 73 nd](http://www.s
98d00 6f 75 6e 64 6f 6e 73 6f 75 6e 64 2e 63 6f 6d 2f oundonsound.com/
98d10 73 6f 73 2f 61 70 72 30 30 2f 61 72 74 69 63 6c sos/apr00/articl
98d20 65 73 2f 73 79 6e 74 68 73 65 63 72 65 74 73 2e es/synthsecrets.
98d30 68 74 6d 29 2e 0a 09 09 20 2a 20 20 20 20 20 20 htm).... *
98d40 20 20 20 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 <img src="ht
98d50 74 70 73 3a 2f 2f 64 6f 63 73 2e 67 6f 6f 67 6c tps://docs.googl
98d60 65 2e 63 6f 6d 2f 64 72 61 77 69 6e 67 73 2f 64 e.com/drawings/d
98d70 2f 31 68 30 50 55 44 5a 58 50 67 69 34 49 6b 78 /1h0PUDZXPgi4Ikx
98d80 36 62 56 54 36 6f 6e 63 72 59 50 4c 6c 75 46 4b 6bVT6oncrYPLluFK
98d90 79 37 6c 6a 35 33 70 75 78 6a 2d 44 4d 2f 70 75 y7lj53puxj-DM/pu
98da0 62 3f 77 3d 39 30 32 26 68 3d 34 36 32 22 3e 0a b?w=902&h=462">.
98db0 09 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 .. *... * @cons
98dc0 74 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 tructor... * @e
98dd0 78 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 4d 6f 6e xtends {Tone.Mon
98de0 6f 70 68 6f 6e 69 63 7d 0a 09 09 20 2a 20 20 40 ophonic}... * @
98df0 70 61 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20 5b param {Object} [
98e00 6f 70 74 69 6f 6e 73 5d 20 74 68 65 20 6f 70 74 options] the opt
98e10 69 6f 6e 73 20 61 76 61 69 6c 61 62 6c 65 20 66 ions available f
98e20 6f 72 20 74 68 65 20 73 79 6e 74 68 20 0a 09 09 or the synth ...
98e30 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
98e40 20 20 20 20 20 20 20 20 20 20 20 20 73 65 65 20 see
98e50 64 65 66 61 75 6c 74 73 20 62 65 6c 6f 77 0a 09 defaults below..
98e60 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 . * @example...
98e70 20 2a 20 76 61 72 20 66 6d 53 79 6e 74 68 20 3d * var fmSynth =
98e80 20 6e 65 77 20 54 6f 6e 65 2e 46 4d 53 79 6e 74 new Tone.FMSynt
98e90 68 28 29 2e 74 6f 4d 61 73 74 65 72 28 29 3b 0a h().toMaster();.
98ea0 09 09 20 2a 20 66 6d 53 79 6e 74 68 2e 74 72 69 .. * fmSynth.tri
98eb0 67 67 65 72 41 74 74 61 63 6b 52 65 6c 65 61 73 ggerAttackReleas
98ec0 65 28 22 43 35 22 2c 20 22 34 6e 22 29 3b 0a 09 e("C5", "4n");..
98ed0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 . */.. Tone.F
98ee0 4d 53 79 6e 74 68 20 3d 20 66 75 6e 63 74 69 6f MSynth = functio
98ef0 6e 20 28 6f 70 74 69 6f 6e 73 29 20 7b 0a 09 20 n (options) {..
98f00 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 20 3d options =
98f10 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 67 this.defaultArg
98f20 28 6f 70 74 69 6f 6e 73 2c 20 54 6f 6e 65 2e 46 (options, Tone.F
98f30 4d 53 79 6e 74 68 2e 64 65 66 61 75 6c 74 73 29 MSynth.defaults)
98f40 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e ;.. Tone.
98f50 4d 6f 6e 6f 70 68 6f 6e 69 63 2e 63 61 6c 6c 28 Monophonic.call(
98f60 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a this, options);.
98f70 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
98f80 20 2a 20 20 54 68 65 20 63 61 72 72 69 65 72 20 * The carrier
98f90 76 6f 69 63 65 2e 0a 09 09 09 20 2a 20 20 40 74 voice..... * @t
98fa0 79 70 65 20 7b 54 6f 6e 65 2e 53 79 6e 74 68 7d ype {Tone.Synth}
98fb0 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
98fc0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
98fd0 20 74 68 69 73 2e 5f 63 61 72 72 69 65 72 20 3d this._carrier =
98fe0 20 6e 65 77 20 54 6f 6e 65 2e 53 79 6e 74 68 28 new Tone.Synth(
98ff0 6f 70 74 69 6f 6e 73 2e 63 61 72 72 69 65 72 29 options.carrier)
99000 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
99010 5f 63 61 72 72 69 65 72 2e 76 6f 6c 75 6d 65 2e _carrier.volume.
99020 76 61 6c 75 65 20 3d 20 2d 31 30 3b 0a 09 20 20 value = -10;..
99030 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
99040 20 54 68 65 20 63 61 72 72 69 65 72 27 73 20 6f The carrier's o
99050 73 63 69 6c 6c 61 74 6f 72 0a 09 09 09 20 2a 20 scillator.... *
99060 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4f 73 63 @type {Tone.Osc
99070 69 6c 6c 61 74 6f 72 7d 0a 09 09 09 20 2a 2f 0a illator}.... */.
99080 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 73 . this.os
99090 63 69 6c 6c 61 74 6f 72 20 3d 20 74 68 69 73 2e cillator = this.
990a0 5f 63 61 72 72 69 65 72 2e 6f 73 63 69 6c 6c 61 _carrier.oscilla
990b0 74 6f 72 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a tor;.. /*
990c0 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 63 61 72 *.... * The car
990d0 72 69 65 72 27 73 20 65 6e 76 65 6c 6f 70 65 0a rier's envelope.
990e0 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f ... * @type {To
990f0 6e 65 2e 4f 73 63 69 6c 6c 61 74 6f 72 7d 0a 09 ne.Oscillator}..
99100 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
99110 68 69 73 2e 65 6e 76 65 6c 6f 70 65 20 3d 20 74 his.envelope = t
99120 68 69 73 2e 5f 63 61 72 72 69 65 72 2e 65 6e 76 his._carrier.env
99130 65 6c 6f 70 65 2e 73 65 74 28 6f 70 74 69 6f 6e elope.set(option
99140 73 2e 65 6e 76 65 6c 6f 70 65 29 3b 0a 09 20 20 s.envelope);..
99150 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
99160 20 54 68 65 20 6d 6f 64 75 6c 61 74 6f 72 20 76 The modulator v
99170 6f 69 63 65 2e 0a 09 09 09 20 2a 20 20 40 74 79 oice..... * @ty
99180 70 65 20 7b 54 6f 6e 65 2e 53 79 6e 74 68 7d 0a pe {Tone.Synth}.
99190 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
991a0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
991b0 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 20 this._modulator
991c0 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 79 6e 74 68 = new Tone.Synth
991d0 28 6f 70 74 69 6f 6e 73 2e 6d 6f 64 75 6c 61 74 (options.modulat
991e0 6f 72 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 or);.. th
991f0 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e 76 6f is._modulator.vo
99200 6c 75 6d 65 2e 76 61 6c 75 65 20 3d 20 2d 31 30 lume.value = -10
99210 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
99220 09 09 20 2a 20 20 54 68 65 20 6d 6f 64 75 6c 61 .. * The modula
99230 74 6f 72 27 73 20 6f 73 63 69 6c 6c 61 74 6f 72 tor's oscillator
99240 20 77 68 69 63 68 20 69 73 20 61 70 70 6c 69 65 which is applie
99250 64 0a 09 09 09 20 2a 20 20 74 6f 20 74 68 65 20 d.... * to the
99260 61 6d 70 6c 69 74 75 64 65 20 6f 66 20 74 68 65 amplitude of the
99270 20 6f 73 63 69 6c 6c 61 74 6f 72 0a 09 09 09 20 oscillator....
99280 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4f * @type {Tone.O
99290 73 63 69 6c 6c 61 74 6f 72 7d 0a 09 09 09 20 2a scillator}.... *
992a0 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
992b0 6d 6f 64 75 6c 61 74 69 6f 6e 20 3d 20 74 68 69 modulation = thi
992c0 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e 6f 73 63 s._modulator.osc
992d0 69 6c 6c 61 74 6f 72 2e 73 65 74 28 6f 70 74 69 illator.set(opti
992e0 6f 6e 73 2e 6d 6f 64 75 6c 61 74 69 6f 6e 29 3b ons.modulation);
992f0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
99300 09 20 2a 20 20 54 68 65 20 6d 6f 64 75 6c 61 74 . * The modulat
99310 6f 72 27 73 20 65 6e 76 65 6c 6f 70 65 0a 09 09 or's envelope...
99320 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 . * @type {Tone
99330 2e 4f 73 63 69 6c 6c 61 74 6f 72 7d 0a 09 09 09 .Oscillator}....
99340 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
99350 73 2e 6d 6f 64 75 6c 61 74 69 6f 6e 45 6e 76 65 s.modulationEnve
99360 6c 6f 70 65 20 3d 20 74 68 69 73 2e 5f 6d 6f 64 lope = this._mod
99370 75 6c 61 74 6f 72 2e 65 6e 76 65 6c 6f 70 65 2e ulator.envelope.
99380 73 65 74 28 6f 70 74 69 6f 6e 73 2e 6d 6f 64 75 set(options.modu
99390 6c 61 74 69 6f 6e 45 6e 76 65 6c 6f 70 65 29 3b lationEnvelope);
993a0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
993b0 09 20 2a 20 20 54 68 65 20 66 72 65 71 75 65 6e . * The frequen
993c0 63 79 20 63 6f 6e 74 72 6f 6c 2e 0a 09 09 09 20 cy control.....
993d0 2a 20 20 40 74 79 70 65 20 7b 46 72 65 71 75 65 * @type {Freque
993e0 6e 63 79 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 ncy}.... * @sig
993f0 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 nal.... */..
99400 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 6e this.frequen
99410 63 79 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 cy = new Tone.Si
99420 67 6e 61 6c 28 34 34 30 2c 20 54 6f 6e 65 2e 54 gnal(440, Tone.T
99430 79 70 65 2e 46 72 65 71 75 65 6e 63 79 29 3b 0a ype.Frequency);.
99440 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
99450 20 2a 20 20 54 68 65 20 64 65 74 75 6e 65 20 69 * The detune i
99460 6e 20 63 65 6e 74 73 0a 09 09 09 20 2a 20 20 40 n cents.... * @
99470 74 79 70 65 20 7b 43 65 6e 74 73 7d 0a 09 09 09 type {Cents}....
99480 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 * @signal....
99490 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
994a0 2e 64 65 74 75 6e 65 20 3d 20 6e 65 77 20 54 6f .detune = new To
994b0 6e 65 2e 53 69 67 6e 61 6c 28 6f 70 74 69 6f 6e ne.Signal(option
994c0 73 2e 64 65 74 75 6e 65 2c 20 54 6f 6e 65 2e 54 s.detune, Tone.T
994d0 79 70 65 2e 43 65 6e 74 73 29 3b 0a 09 20 20 20 ype.Cents);..
994e0 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
994f0 48 61 72 6d 6f 6e 69 63 69 74 79 20 69 73 20 74 Harmonicity is t
99500 68 65 20 72 61 74 69 6f 20 62 65 74 77 65 65 6e he ratio between
99510 20 74 68 65 20 74 77 6f 20 76 6f 69 63 65 73 2e the two voices.
99520 20 41 20 68 61 72 6d 6f 6e 69 63 69 74 79 20 6f A harmonicity o
99530 66 0a 09 09 09 20 2a 20 20 31 20 69 73 20 6e 6f f.... * 1 is no
99540 20 63 68 61 6e 67 65 2e 20 48 61 72 6d 6f 6e 69 change. Harmoni
99550 63 69 74 79 20 3d 20 32 20 6d 65 61 6e 73 20 61 city = 2 means a
99560 20 63 68 61 6e 67 65 20 6f 66 20 61 6e 20 6f 63 change of an oc
99570 74 61 76 65 2e 20 0a 09 09 09 20 2a 20 20 40 74 tave. .... * @t
99580 79 70 65 20 7b 50 6f 73 69 74 69 76 65 7d 0a 09 ype {Positive}..
99590 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 .. * @signal...
995a0 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 . * @example...
995b0 09 20 2a 20 2f 2f 70 69 74 63 68 20 76 6f 69 63 . * //pitch voic
995c0 65 31 20 61 6e 20 6f 63 74 61 76 65 20 62 65 6c e1 an octave bel
995d0 6f 77 20 76 6f 69 63 65 30 0a 09 09 09 20 2a 20 ow voice0.... *
995e0 73 79 6e 74 68 2e 68 61 72 6d 6f 6e 69 63 69 74 synth.harmonicit
995f0 79 2e 76 61 6c 75 65 20 3d 20 30 2e 35 3b 0a 09 y.value = 0.5;..
99600 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
99610 68 69 73 2e 68 61 72 6d 6f 6e 69 63 69 74 79 20 his.harmonicity
99620 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 75 6c 74 69 = new Tone.Multi
99630 70 6c 79 28 6f 70 74 69 6f 6e 73 2e 68 61 72 6d ply(options.harm
99640 6f 6e 69 63 69 74 79 29 3b 0a 09 20 20 20 20 20 onicity);..
99650 20 20 20 74 68 69 73 2e 68 61 72 6d 6f 6e 69 63 this.harmonic
99660 69 74 79 2e 75 6e 69 74 73 20 3d 20 54 6f 6e 65 ity.units = Tone
99670 2e 54 79 70 65 2e 50 6f 73 69 74 69 76 65 3b 0a .Type.Positive;.
99680 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
99690 20 2a 20 20 54 68 65 20 6d 6f 64 75 6c 61 74 69 * The modulati
996a0 6f 6e 20 69 6e 64 65 78 20 77 68 69 63 68 20 65 on index which e
996b0 73 73 65 6e 74 69 61 6c 6c 79 20 74 68 65 20 64 ssentially the d
996c0 65 70 74 68 20 6f 72 20 61 6d 6f 75 6e 74 20 6f epth or amount o
996d0 66 20 74 68 65 20 6d 6f 64 75 6c 61 74 69 6f 6e f the modulation
996e0 2e 20 49 74 20 69 73 20 74 68 65 20 0a 09 09 09 . It is the ....
996f0 20 2a 20 20 72 61 74 69 6f 20 6f 66 20 74 68 65 * ratio of the
99700 20 66 72 65 71 75 65 6e 63 79 20 6f 66 20 74 68 frequency of th
99710 65 20 6d 6f 64 75 6c 61 74 69 6e 67 20 73 69 67 e modulating sig
99720 6e 61 6c 20 28 6d 66 29 20 74 6f 20 74 68 65 20 nal (mf) to the
99730 61 6d 70 6c 69 74 75 64 65 20 6f 66 20 74 68 65 amplitude of the
99740 20 0a 09 09 09 20 2a 20 20 6d 6f 64 75 6c 61 74 .... * modulat
99750 69 6e 67 20 73 69 67 6e 61 6c 20 28 6d 61 29 20 ing signal (ma)
99760 2d 2d 20 61 73 20 69 6e 20 6d 61 2f 6d 66 2e 20 -- as in ma/mf.
99770 0a 09 09 09 20 2a 09 40 74 79 70 65 20 7b 50 6f .... *.@type {Po
99780 73 69 74 69 76 65 7d 0a 09 09 09 20 2a 09 40 73 sitive}.... *.@s
99790 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 ignal.... */..
997a0 20 20 20 20 20 20 74 68 69 73 2e 6d 6f 64 75 6c this.modul
997b0 61 74 69 6f 6e 49 6e 64 65 78 20 3d 20 6e 65 77 ationIndex = new
997c0 20 54 6f 6e 65 2e 4d 75 6c 74 69 70 6c 79 28 6f Tone.Multiply(o
997d0 70 74 69 6f 6e 73 2e 6d 6f 64 75 6c 61 74 69 6f ptions.modulatio
997e0 6e 49 6e 64 65 78 29 3b 0a 09 20 20 20 20 20 20 nIndex);..
997f0 20 20 74 68 69 73 2e 6d 6f 64 75 6c 61 74 69 6f this.modulatio
99800 6e 49 6e 64 65 78 2e 75 6e 69 74 73 20 3d 20 54 nIndex.units = T
99810 6f 6e 65 2e 54 79 70 65 2e 50 6f 73 69 74 69 76 one.Type.Positiv
99820 65 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a e;.. /**.
99830 09 09 09 20 2a 20 20 74 68 65 20 6e 6f 64 65 20 ... * the node
99840 77 68 65 72 65 20 74 68 65 20 6d 6f 64 75 6c 61 where the modula
99850 74 69 6f 6e 20 68 61 70 70 65 6e 73 0a 09 09 09 tion happens....
99860 20 2a 20 20 40 74 79 70 65 20 7b 47 61 69 6e 4e * @type {GainN
99870 6f 64 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 ode}.... * @pri
99880 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 vate.... */..
99890 20 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 6c this._modul
998a0 61 74 69 6f 6e 4e 6f 64 65 20 3d 20 6e 65 77 20 ationNode = new
998b0 54 6f 6e 65 2e 47 61 69 6e 28 30 29 3b 0a 09 20 Tone.Gain(0);..
998c0 20 20 20 20 20 20 20 2f 2f 63 6f 6e 74 72 6f 6c //control
998d0 20 74 68 65 20 74 77 6f 20 76 6f 69 63 65 73 20 the two voices
998e0 66 72 65 71 75 65 6e 63 79 0a 09 20 20 20 20 20 frequency..
998f0 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 6e 63 this.frequenc
99900 79 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f y.connect(this._
99910 63 61 72 72 69 65 72 2e 66 72 65 71 75 65 6e 63 carrier.frequenc
99920 79 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 y);.. thi
99930 73 2e 66 72 65 71 75 65 6e 63 79 2e 63 68 61 69 s.frequency.chai
99940 6e 28 74 68 69 73 2e 68 61 72 6d 6f 6e 69 63 69 n(this.harmonici
99950 74 79 2c 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 ty, this._modula
99960 74 6f 72 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a tor.frequency);.
99970 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 . this.fr
99980 65 71 75 65 6e 63 79 2e 63 68 61 69 6e 28 74 68 equency.chain(th
99990 69 73 2e 6d 6f 64 75 6c 61 74 69 6f 6e 49 6e 64 is.modulationInd
999a0 65 78 2c 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 ex, this._modula
999b0 74 69 6f 6e 4e 6f 64 65 29 3b 0a 09 20 20 20 20 tionNode);..
999c0 20 20 20 20 74 68 69 73 2e 64 65 74 75 6e 65 2e this.detune.
999d0 66 61 6e 28 74 68 69 73 2e 5f 63 61 72 72 69 65 fan(this._carrie
999e0 72 2e 64 65 74 75 6e 65 2c 20 74 68 69 73 2e 5f r.detune, this._
999f0 6d 6f 64 75 6c 61 74 6f 72 2e 64 65 74 75 6e 65 modulator.detune
99a00 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
99a10 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e 63 6f 6e 6e ._modulator.conn
99a20 65 63 74 28 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 ect(this._modula
99a30 74 69 6f 6e 4e 6f 64 65 2e 67 61 69 6e 29 3b 0a tionNode.gain);.
99a40 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d . this._m
99a50 6f 64 75 6c 61 74 69 6f 6e 4e 6f 64 65 2e 63 6f odulationNode.co
99a60 6e 6e 65 63 74 28 74 68 69 73 2e 5f 63 61 72 72 nnect(this._carr
99a70 69 65 72 2e 66 72 65 71 75 65 6e 63 79 29 3b 0a ier.frequency);.
99a80 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 63 . this._c
99a90 61 72 72 69 65 72 2e 63 6f 6e 6e 65 63 74 28 74 arrier.connect(t
99aa0 68 69 73 2e 6f 75 74 70 75 74 29 3b 0a 09 20 20 his.output);..
99ab0 20 20 20 20 20 20 74 68 69 73 2e 5f 72 65 61 64 this._read
99ac0 4f 6e 6c 79 28 5b 0a 09 20 20 20 20 20 20 20 20 Only([..
99ad0 20 20 20 20 27 66 72 65 71 75 65 6e 63 79 27 2c 'frequency',
99ae0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 68 .. 'h
99af0 61 72 6d 6f 6e 69 63 69 74 79 27 2c 0a 09 20 20 armonicity',..
99b00 20 20 20 20 20 20 20 20 20 20 27 6d 6f 64 75 6c 'modul
99b10 61 74 69 6f 6e 49 6e 64 65 78 27 2c 0a 09 20 20 ationIndex',..
99b20 20 20 20 20 20 20 20 20 20 20 27 6f 73 63 69 6c 'oscil
99b30 6c 61 74 6f 72 27 2c 0a 09 20 20 20 20 20 20 20 lator',..
99b40 20 20 20 20 20 27 65 6e 76 65 6c 6f 70 65 27 2c 'envelope',
99b50 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6d .. 'm
99b60 6f 64 75 6c 61 74 69 6f 6e 27 2c 0a 09 20 20 20 odulation',..
99b70 20 20 20 20 20 20 20 20 20 27 6d 6f 64 75 6c 61 'modula
99b80 74 69 6f 6e 45 6e 76 65 6c 6f 70 65 27 2c 0a 09 tionEnvelope',..
99b90 20 20 20 20 20 20 20 20 20 20 20 20 27 64 65 74 'det
99ba0 75 6e 65 27 0a 09 20 20 20 20 20 20 20 20 5d 29 une'.. ])
99bb0 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 ;.. };.. T
99bc0 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e one.extend(Tone.
99bd0 46 4d 53 79 6e 74 68 2c 20 54 6f 6e 65 2e 4d 6f FMSynth, Tone.Mo
99be0 6e 6f 70 68 6f 6e 69 63 29 3b 0a 09 20 20 20 20 nophonic);..
99bf0 2f 2a 2a 0a 09 09 20 2a 20 20 40 73 74 61 74 69 /**... * @stati
99c00 63 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4f c... * @type {O
99c10 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 bject}... */..
99c20 20 20 54 6f 6e 65 2e 46 4d 53 79 6e 74 68 2e 64 Tone.FMSynth.d
99c30 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 efaults = {..
99c40 20 20 20 20 20 27 68 61 72 6d 6f 6e 69 63 69 74 'harmonicit
99c50 79 27 3a 20 33 2c 0a 09 20 20 20 20 20 20 20 20 y': 3,..
99c60 27 6d 6f 64 75 6c 61 74 69 6f 6e 49 6e 64 65 78 'modulationIndex
99c70 27 3a 20 31 30 2c 0a 09 20 20 20 20 20 20 20 20 ': 10,..
99c80 27 64 65 74 75 6e 65 27 3a 20 30 2c 0a 09 20 20 'detune': 0,..
99c90 20 20 20 20 20 20 27 6f 73 63 69 6c 6c 61 74 6f 'oscillato
99ca0 72 27 3a 20 7b 20 27 74 79 70 65 27 3a 20 27 73 r': { 'type': 's
99cb0 69 6e 65 27 20 7d 2c 0a 09 20 20 20 20 20 20 20 ine' },..
99cc0 20 27 65 6e 76 65 6c 6f 70 65 27 3a 20 7b 0a 09 'envelope': {..
99cd0 20 20 20 20 20 20 20 20 20 20 20 20 27 61 74 74 'att
99ce0 61 63 6b 27 3a 20 30 2e 30 31 2c 0a 09 20 20 20 ack': 0.01,..
99cf0 20 20 20 20 20 20 20 20 20 27 64 65 63 61 79 27 'decay'
99d00 3a 20 30 2e 30 31 2c 0a 09 20 20 20 20 20 20 20 : 0.01,..
99d10 20 20 20 20 20 27 73 75 73 74 61 69 6e 27 3a 20 'sustain':
99d20 31 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 1,..
99d30 27 72 65 6c 65 61 73 65 27 3a 20 30 2e 35 0a 09 'release': 0.5..
99d40 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 },..
99d50 20 20 20 20 27 6d 6f 64 75 6c 61 74 69 6f 6e 27 'modulation'
99d60 3a 20 7b 20 27 74 79 70 65 27 3a 20 27 73 71 75 : { 'type': 'squ
99d70 61 72 65 27 20 7d 2c 0a 09 20 20 20 20 20 20 20 are' },..
99d80 20 27 6d 6f 64 75 6c 61 74 69 6f 6e 45 6e 76 65 'modulationEnve
99d90 6c 6f 70 65 27 3a 20 7b 0a 09 20 20 20 20 20 20 lope': {..
99da0 20 20 20 20 20 20 27 61 74 74 61 63 6b 27 3a 20 'attack':
99db0 30 2e 35 2c 0a 09 20 20 20 20 20 20 20 20 20 20 0.5,..
99dc0 20 20 27 64 65 63 61 79 27 3a 20 30 2c 0a 09 20 'decay': 0,..
99dd0 20 20 20 20 20 20 20 20 20 20 20 27 73 75 73 74 'sust
99de0 61 69 6e 27 3a 20 31 2c 0a 09 20 20 20 20 20 20 ain': 1,..
99df0 20 20 20 20 20 20 27 72 65 6c 65 61 73 65 27 3a 'release':
99e00 20 30 2e 35 0a 09 20 20 20 20 20 20 20 20 7d 0a 0.5.. }.
99e10 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
99e20 0a 09 09 20 2a 20 09 74 72 69 67 67 65 72 20 74 ... * .trigger t
99e30 68 65 20 61 74 74 61 63 6b 20 70 6f 72 74 69 6f he attack portio
99e40 6e 20 6f 66 20 74 68 65 20 6e 6f 74 65 0a 09 09 n of the note...
99e50 20 2a 20 20 0a 09 09 20 2a 20 20 40 70 61 72 61 * ... * @para
99e60 6d 20 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d m {Time} [time=
99e70 6e 6f 77 5d 20 74 68 65 20 74 69 6d 65 20 74 68 now] the time th
99e80 65 20 6e 6f 74 65 20 77 69 6c 6c 20 6f 63 63 75 e note will occu
99e90 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b r... * @param {
99ea0 6e 75 6d 62 65 72 7d 20 5b 76 65 6c 6f 63 69 74 number} [velocit
99eb0 79 3d 31 5d 20 74 68 65 20 76 65 6c 6f 63 69 74 y=1] the velocit
99ec0 79 20 6f 66 20 74 68 65 20 6e 6f 74 65 0a 09 09 y of the note...
99ed0 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f * @returns {To
99ee0 6e 65 2e 46 4d 53 79 6e 74 68 7d 20 74 68 69 73 ne.FMSynth} this
99ef0 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
99f00 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
99f10 46 4d 53 79 6e 74 68 2e 70 72 6f 74 6f 74 79 70 FMSynth.prototyp
99f20 65 2e 5f 74 72 69 67 67 65 72 45 6e 76 65 6c 6f e._triggerEnvelo
99f30 70 65 41 74 74 61 63 6b 20 3d 20 66 75 6e 63 74 peAttack = funct
99f40 69 6f 6e 20 28 74 69 6d 65 2c 20 76 65 6c 6f 63 ion (time, veloc
99f50 69 74 79 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ity) {..
99f60 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 time = this.toSe
99f70 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 20 conds(time);..
99f80 20 20 20 20 20 20 2f 2f 74 68 65 20 65 6e 76 65 //the enve
99f90 6c 6f 70 65 73 0a 09 20 20 20 20 20 20 20 20 74 lopes.. t
99fa0 68 69 73 2e 65 6e 76 65 6c 6f 70 65 2e 74 72 69 his.envelope.tri
99fb0 67 67 65 72 41 74 74 61 63 6b 28 74 69 6d 65 2c ggerAttack(time,
99fc0 20 76 65 6c 6f 63 69 74 79 29 3b 0a 09 20 20 20 velocity);..
99fd0 20 20 20 20 20 74 68 69 73 2e 6d 6f 64 75 6c 61 this.modula
99fe0 74 69 6f 6e 45 6e 76 65 6c 6f 70 65 2e 74 72 69 tionEnvelope.tri
99ff0 67 67 65 72 41 74 74 61 63 6b 28 74 69 6d 65 29 ggerAttack(time)
9a000 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
9a010 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
9a020 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 . /**... * t
9a030 72 69 67 67 65 72 20 74 68 65 20 72 65 6c 65 61 rigger the relea
9a040 73 65 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 se portion of th
9a050 65 20 6e 6f 74 65 0a 09 09 20 2a 20 20 0a 09 09 e note... * ...
9a060 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d * @param {Tim
9a070 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 74 68 e} [time=now] th
9a080 65 20 74 69 6d 65 20 74 68 65 20 6e 6f 74 65 20 e time the note
9a090 77 69 6c 6c 20 72 65 6c 65 61 73 65 0a 09 09 20 will release...
9a0a0 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
9a0b0 65 2e 46 4d 53 79 6e 74 68 7d 20 74 68 69 73 0a e.FMSynth} this.
9a0c0 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
9a0d0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 46 . */.. Tone.F
9a0e0 4d 53 79 6e 74 68 2e 70 72 6f 74 6f 74 79 70 65 MSynth.prototype
9a0f0 2e 5f 74 72 69 67 67 65 72 45 6e 76 65 6c 6f 70 ._triggerEnvelop
9a100 65 52 65 6c 65 61 73 65 20 3d 20 66 75 6e 63 74 eRelease = funct
9a110 69 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 ion (time) {..
9a120 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 time = thi
9a130 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 s.toSeconds(time
9a140 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
9a150 2e 65 6e 76 65 6c 6f 70 65 2e 74 72 69 67 67 65 .envelope.trigge
9a160 72 52 65 6c 65 61 73 65 28 74 69 6d 65 29 3b 0a rRelease(time);.
9a170 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d 6f . this.mo
9a180 64 75 6c 61 74 69 6f 6e 45 6e 76 65 6c 6f 70 65 dulationEnvelope
9a190 2e 74 72 69 67 67 65 72 52 65 6c 65 61 73 65 28 .triggerRelease(
9a1a0 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 time);..
9a1b0 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 return this;..
9a1c0 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
9a1d0 20 2a 20 20 63 6c 65 61 6e 20 75 70 0a 09 09 20 * clean up...
9a1e0 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
9a1f0 65 2e 46 4d 53 79 6e 74 68 7d 20 74 68 69 73 0a e.FMSynth} this.
9a200 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
9a210 46 4d 53 79 6e 74 68 2e 70 72 6f 74 6f 74 79 70 FMSynth.prototyp
9a220 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 e.dispose = func
9a230 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
9a240 20 20 20 54 6f 6e 65 2e 4d 6f 6e 6f 70 68 6f 6e Tone.Monophon
9a250 69 63 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 ic.prototype.dis
9a260 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b pose.call(this);
9a270 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
9a280 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 20 writable([..
9a290 20 20 20 20 20 20 20 20 27 66 72 65 71 75 65 6e 'frequen
9a2a0 63 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 cy',..
9a2b0 20 20 27 68 61 72 6d 6f 6e 69 63 69 74 79 27 2c 'harmonicity',
9a2c0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6d .. 'm
9a2d0 6f 64 75 6c 61 74 69 6f 6e 49 6e 64 65 78 27 2c odulationIndex',
9a2e0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6f .. 'o
9a2f0 73 63 69 6c 6c 61 74 6f 72 27 2c 0a 09 20 20 20 scillator',..
9a300 20 20 20 20 20 20 20 20 20 27 65 6e 76 65 6c 6f 'envelo
9a310 70 65 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 pe',..
9a320 20 20 27 6d 6f 64 75 6c 61 74 69 6f 6e 27 2c 0a 'modulation',.
9a330 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 6f . 'mo
9a340 64 75 6c 61 74 69 6f 6e 45 6e 76 65 6c 6f 70 65 dulationEnvelope
9a350 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
9a360 27 64 65 74 75 6e 65 27 0a 09 20 20 20 20 20 20 'detune'..
9a370 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 74 ]);.. t
9a380 68 69 73 2e 5f 63 61 72 72 69 65 72 2e 64 69 73 his._carrier.dis
9a390 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
9a3a0 20 74 68 69 73 2e 5f 63 61 72 72 69 65 72 20 3d this._carrier =
9a3b0 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
9a3c0 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 74 6f 72 2e this._modulator.
9a3d0 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
9a3e0 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 this._modula
9a3f0 74 6f 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 tor = null;..
9a400 20 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 this.freque
9a410 6e 63 79 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 ncy.dispose();..
9a420 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 72 65 this.fre
9a430 71 75 65 6e 63 79 20 3d 20 6e 75 6c 6c 3b 0a 09 quency = null;..
9a440 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 74 this.det
9a450 75 6e 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 une.dispose();..
9a460 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 74 this.det
9a470 75 6e 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 une = null;..
9a480 20 20 20 20 20 74 68 69 73 2e 6d 6f 64 75 6c 61 this.modula
9a490 74 69 6f 6e 49 6e 64 65 78 2e 64 69 73 70 6f 73 tionIndex.dispos
9a4a0 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
9a4b0 69 73 2e 6d 6f 64 75 6c 61 74 69 6f 6e 49 6e 64 is.modulationInd
9a4c0 65 78 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 ex = null;..
9a4d0 20 20 20 20 74 68 69 73 2e 68 61 72 6d 6f 6e 69 this.harmoni
9a4e0 63 69 74 79 2e 64 69 73 70 6f 73 65 28 29 3b 0a city.dispose();.
9a4f0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 68 61 . this.ha
9a500 72 6d 6f 6e 69 63 69 74 79 20 3d 20 6e 75 6c 6c rmonicity = null
9a510 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
9a520 5f 6d 6f 64 75 6c 61 74 69 6f 6e 4e 6f 64 65 2e _modulationNode.
9a530 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
9a540 20 20 20 20 74 68 69 73 2e 5f 6d 6f 64 75 6c 61 this._modula
9a550 74 69 6f 6e 4e 6f 64 65 20 3d 20 6e 75 6c 6c 3b tionNode = null;
9a560 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f .. this.o
9a570 73 63 69 6c 6c 61 74 6f 72 20 3d 20 6e 75 6c 6c scillator = null
9a580 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
9a590 65 6e 76 65 6c 6f 70 65 20 3d 20 6e 75 6c 6c 3b envelope = null;
9a5a0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6d .. this.m
9a5b0 6f 64 75 6c 61 74 69 6f 6e 45 6e 76 65 6c 6f 70 odulationEnvelop
9a5c0 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 e = null;..
9a5d0 20 20 20 74 68 69 73 2e 6d 6f 64 75 6c 61 74 69 this.modulati
9a5e0 6f 6e 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 on = null;..
9a5f0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
9a600 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 .. };.. re
9a610 74 75 72 6e 20 54 6f 6e 65 2e 46 4d 53 79 6e 74 turn Tone.FMSynt
9a620 68 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 h;..});..Module(
9a630 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 function (Tone)
9a640 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a {.. .. /**
9a650 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 20 54 ... * @class T
9a660 6f 6e 65 2e 4d 65 6d 62 72 61 6e 65 53 79 6e 74 one.MembraneSynt
9a670 68 20 6d 61 6b 65 73 20 6b 69 63 6b 20 61 6e 64 h makes kick and
9a680 20 74 6f 6d 20 73 6f 75 6e 64 73 20 75 73 69 6e tom sounds usin
9a690 67 20 61 20 73 69 6e 67 6c 65 20 6f 73 63 69 6c g a single oscil
9a6a0 6c 61 74 6f 72 0a 09 09 20 2a 20 20 20 20 20 20 lator... *
9a6b0 20 20 20 20 77 69 74 68 20 61 6e 20 61 6d 70 6c with an ampl
9a6c0 69 74 75 64 65 20 65 6e 76 65 6c 6f 70 65 20 61 itude envelope a
9a6d0 6e 64 20 66 72 65 71 75 65 6e 63 79 20 72 61 6d nd frequency ram
9a6e0 70 2e 20 41 20 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 p. A Tone.OmniOs
9a6f0 63 69 6c 6c 61 74 6f 72 0a 09 09 20 2a 20 20 20 cillator... *
9a700 20 20 20 20 20 20 20 69 73 20 72 6f 75 74 65 64 is routed
9a710 20 74 68 72 6f 75 67 68 20 61 20 54 6f 6e 65 2e through a Tone.
9a720 41 6d 70 6c 69 74 75 64 65 45 6e 76 65 6c 6f 70 AmplitudeEnvelop
9a730 65 20 74 6f 20 74 68 65 20 6f 75 74 70 75 74 2e e to the output.
9a740 20 54 68 65 20 64 72 75 6d 0a 09 09 20 2a 20 20 The drum... *
9a750 20 20 20 20 20 20 20 20 71 75 61 6c 69 74 79 20 quality
9a760 6f 66 20 74 68 65 20 73 6f 75 6e 64 20 63 6f 6d of the sound com
9a770 65 73 20 66 72 6f 6d 20 74 68 65 20 66 72 65 71 es from the freq
9a780 75 65 6e 63 79 20 65 6e 76 65 6c 6f 70 65 20 61 uency envelope a
9a790 70 70 6c 69 65 64 0a 09 09 20 2a 20 20 20 20 20 pplied... *
9a7a0 20 20 20 20 20 64 75 72 69 6e 67 20 64 75 72 69 during duri
9a7b0 6e 67 20 54 6f 6e 65 2e 4d 65 6d 62 72 61 6e 65 ng Tone.Membrane
9a7c0 53 79 6e 74 68 2e 74 72 69 67 67 65 72 41 74 74 Synth.triggerAtt
9a7d0 61 63 6b 28 6e 6f 74 65 29 2e 20 54 68 65 20 66 ack(note). The f
9a7e0 72 65 71 75 65 6e 63 79 0a 09 09 20 2a 20 20 20 requency... *
9a7f0 20 20 20 20 20 20 20 65 6e 76 65 6c 6f 70 65 20 envelope
9a800 73 74 61 72 74 73 20 61 74 20 3c 63 6f 64 65 3e starts at <code>
9a810 6e 6f 74 65 20 2a 20 2e 6f 63 74 61 76 65 73 3c note * .octaves<
9a820 2f 63 6f 64 65 3e 20 61 6e 64 20 72 61 6d 70 73 /code> and ramps
9a830 20 74 6f 20 0a 09 09 20 2a 20 20 20 20 20 20 20 to ... *
9a840 20 20 20 3c 63 6f 64 65 3e 6e 6f 74 65 3c 2f 63 <code>note</c
9a850 6f 64 65 3e 20 6f 76 65 72 20 74 68 65 20 64 75 ode> over the du
9a860 72 61 74 69 6f 6e 20 6f 66 20 3c 63 6f 64 65 3e ration of <code>
9a870 2e 70 69 74 63 68 44 65 63 61 79 3c 2f 63 6f 64 .pitchDecay</cod
9a880 65 3e 2e 20 0a 09 09 20 2a 0a 09 09 20 2a 20 20 e>. ... *... *
9a890 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 @constructor...
9a8a0 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e * @extends {Ton
9a8b0 65 2e 49 6e 73 74 72 75 6d 65 6e 74 7d 0a 09 09 e.Instrument}...
9a8c0 20 2a 20 20 40 70 61 72 61 6d 20 7b 4f 62 6a 65 * @param {Obje
9a8d0 63 74 7d 20 5b 6f 70 74 69 6f 6e 73 5d 20 74 68 ct} [options] th
9a8e0 65 20 6f 70 74 69 6f 6e 73 20 61 76 61 69 6c 61 e options availa
9a8f0 62 6c 65 20 66 6f 72 20 74 68 65 20 73 79 6e 74 ble for the synt
9a900 68 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 h ... *
9a910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9a920 20 73 65 65 20 64 65 66 61 75 6c 74 73 20 62 65 see defaults be
9a930 6c 6f 77 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 low... * @examp
9a940 6c 65 0a 09 09 20 2a 20 76 61 72 20 73 79 6e 74 le... * var synt
9a950 68 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4d 65 6d h = new Tone.Mem
9a960 62 72 61 6e 65 53 79 6e 74 68 28 29 2e 74 6f 4d braneSynth().toM
9a970 61 73 74 65 72 28 29 3b 0a 09 09 20 2a 20 73 79 aster();... * sy
9a980 6e 74 68 2e 74 72 69 67 67 65 72 41 74 74 61 63 nth.triggerAttac
9a990 6b 52 65 6c 65 61 73 65 28 22 43 32 22 2c 20 22 kRelease("C2", "
9a9a0 38 6e 22 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 8n");... */..
9a9b0 20 54 6f 6e 65 2e 4d 65 6d 62 72 61 6e 65 53 79 Tone.MembraneSy
9a9c0 6e 74 68 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 nth = function (
9a9d0 6f 70 74 69 6f 6e 73 29 20 7b 0a 09 20 20 20 20 options) {..
9a9e0 20 20 20 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 options = th
9a9f0 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 6f 70 is.defaultArg(op
9aa00 74 69 6f 6e 73 2c 20 54 6f 6e 65 2e 4d 65 6d 62 tions, Tone.Memb
9aa10 72 61 6e 65 53 79 6e 74 68 2e 64 65 66 61 75 6c raneSynth.defaul
9aa20 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 54 6f ts);.. To
9aa30 6e 65 2e 49 6e 73 74 72 75 6d 65 6e 74 2e 63 61 ne.Instrument.ca
9aa40 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 ll(this, options
9aa50 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
9aa60 09 09 09 20 2a 20 20 54 68 65 20 6f 73 63 69 6c ... * The oscil
9aa70 6c 61 74 6f 72 2e 0a 09 09 09 20 2a 20 20 40 74 lator..... * @t
9aa80 79 70 65 20 7b 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 ype {Tone.OmniOs
9aa90 63 69 6c 6c 61 74 6f 72 7d 0a 09 09 09 20 2a 2f cillator}.... */
9aaa0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f .. this.o
9aab0 73 63 69 6c 6c 61 74 6f 72 20 3d 20 6e 65 77 20 scillator = new
9aac0 54 6f 6e 65 2e 4f 6d 6e 69 4f 73 63 69 6c 6c 61 Tone.OmniOscilla
9aad0 74 6f 72 28 6f 70 74 69 6f 6e 73 2e 6f 73 63 69 tor(options.osci
9aae0 6c 6c 61 74 6f 72 29 2e 73 74 61 72 74 28 29 3b llator).start();
9aaf0 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
9ab00 09 20 2a 20 20 54 68 65 20 61 6d 70 6c 69 74 75 . * The amplitu
9ab10 64 65 20 65 6e 76 65 6c 6f 70 65 2e 0a 09 09 09 de envelope.....
9ab20 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e * @type {Tone.
9ab30 41 6d 70 6c 69 74 75 64 65 45 6e 76 65 6c 6f 70 AmplitudeEnvelop
9ab40 65 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 e}.... */..
9ab50 20 20 20 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 this.envelope
9ab60 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 41 6d 70 6c = new Tone.Ampl
9ab70 69 74 75 64 65 45 6e 76 65 6c 6f 70 65 28 6f 70 itudeEnvelope(op
9ab80 74 69 6f 6e 73 2e 65 6e 76 65 6c 6f 70 65 29 3b tions.envelope);
9ab90 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
9aba0 09 20 2a 20 20 54 68 65 20 6e 75 6d 62 65 72 20 . * The number
9abb0 6f 66 20 6f 63 74 61 76 65 73 20 74 68 65 20 70 of octaves the p
9abc0 69 74 63 68 20 65 6e 76 65 6c 6f 70 65 20 72 61 itch envelope ra
9abd0 6d 70 73 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 mps..... * @typ
9abe0 65 20 7b 50 6f 73 69 74 69 76 65 7d 0a 09 09 09 e {Positive}....
9abf0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
9ac00 73 2e 6f 63 74 61 76 65 73 20 3d 20 6f 70 74 69 s.octaves = opti
9ac10 6f 6e 73 2e 6f 63 74 61 76 65 73 3b 0a 09 20 20 ons.octaves;..
9ac20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
9ac30 20 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 74 The amount of t
9ac40 69 6d 65 20 74 68 65 20 66 72 65 71 75 65 6e 63 ime the frequenc
9ac50 79 20 65 6e 76 65 6c 6f 70 65 20 74 61 6b 65 73 y envelope takes
9ac60 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 . .... * @type
9ac70 7b 54 69 6d 65 7d 0a 09 09 09 20 2a 2f 0a 09 20 {Time}.... */..
9ac80 20 20 20 20 20 20 20 74 68 69 73 2e 70 69 74 63 this.pitc
9ac90 68 44 65 63 61 79 20 3d 20 6f 70 74 69 6f 6e 73 hDecay = options
9aca0 2e 70 69 74 63 68 44 65 63 61 79 3b 0a 09 20 20 .pitchDecay;..
9acb0 20 20 20 20 20 20 74 68 69 73 2e 6f 73 63 69 6c this.oscil
9acc0 6c 61 74 6f 72 2e 63 68 61 69 6e 28 74 68 69 73 lator.chain(this
9acd0 2e 65 6e 76 65 6c 6f 70 65 2c 20 74 68 69 73 2e .envelope, this.
9ace0 6f 75 74 70 75 74 29 3b 0a 09 20 20 20 20 20 20 output);..
9acf0 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 this._readOnly
9ad00 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ([..
9ad10 27 6f 73 63 69 6c 6c 61 74 6f 72 27 2c 0a 09 20 'oscillator',..
9ad20 20 20 20 20 20 20 20 20 20 20 20 27 65 6e 76 65 'enve
9ad30 6c 6f 70 65 27 0a 09 20 20 20 20 20 20 20 20 5d lope'.. ]
9ad40 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 );.. };..
9ad50 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 Tone.extend(Tone
9ad60 2e 4d 65 6d 62 72 61 6e 65 53 79 6e 74 68 2c 20 .MembraneSynth,
9ad70 54 6f 6e 65 2e 49 6e 73 74 72 75 6d 65 6e 74 29 Tone.Instrument)
9ad80 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
9ad90 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 @static... * @
9ada0 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 type {Object}...
9adb0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 65 */.. Tone.Me
9adc0 6d 62 72 61 6e 65 53 79 6e 74 68 2e 64 65 66 61 mbraneSynth.defa
9add0 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 ults = {..
9ade0 20 20 27 70 69 74 63 68 44 65 63 61 79 27 3a 20 'pitchDecay':
9adf0 30 2e 30 35 2c 0a 09 20 20 20 20 20 20 20 20 27 0.05,.. '
9ae00 6f 63 74 61 76 65 73 27 3a 20 31 30 2c 0a 09 20 octaves': 10,..
9ae10 20 20 20 20 20 20 20 27 6f 73 63 69 6c 6c 61 74 'oscillat
9ae20 6f 72 27 3a 20 7b 20 27 74 79 70 65 27 3a 20 27 or': { 'type': '
9ae30 73 69 6e 65 27 20 7d 2c 0a 09 20 20 20 20 20 20 sine' },..
9ae40 20 20 27 65 6e 76 65 6c 6f 70 65 27 3a 20 7b 0a 'envelope': {.
9ae50 09 20 20 20 20 20 20 20 20 20 20 20 20 27 61 74 . 'at
9ae60 74 61 63 6b 27 3a 20 30 2e 30 30 31 2c 0a 09 20 tack': 0.001,..
9ae70 20 20 20 20 20 20 20 20 20 20 20 27 64 65 63 61 'deca
9ae80 79 27 3a 20 30 2e 34 2c 0a 09 20 20 20 20 20 20 y': 0.4,..
9ae90 20 20 20 20 20 20 27 73 75 73 74 61 69 6e 27 3a 'sustain':
9aea0 20 30 2e 30 31 2c 0a 09 20 20 20 20 20 20 20 20 0.01,..
9aeb0 20 20 20 20 27 72 65 6c 65 61 73 65 27 3a 20 31 'release': 1
9aec0 2e 34 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 .4,..
9aed0 20 27 61 74 74 61 63 6b 43 75 72 76 65 27 3a 20 'attackCurve':
9aee0 27 65 78 70 6f 6e 65 6e 74 69 61 6c 27 0a 09 20 'exponential'..
9aef0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b }.. };
9af00 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
9af10 54 72 69 67 67 65 72 20 74 68 65 20 6e 6f 74 65 Trigger the note
9af20 20 61 74 20 74 68 65 20 67 69 76 65 6e 20 74 69 at the given ti
9af30 6d 65 20 77 69 74 68 20 74 68 65 20 67 69 76 65 me with the give
9af40 6e 20 76 65 6c 6f 63 69 74 79 2e 20 0a 09 09 20 n velocity. ...
9af50 2a 20 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d * ... * @param
9af60 20 20 7b 46 72 65 71 75 65 6e 63 79 7d 20 6e 6f {Frequency} no
9af70 74 65 20 20 20 20 20 74 68 65 20 6e 6f 74 65 0a te the note.
9af80 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 .. * @param {T
9af90 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 ime} [time=now]
9afa0 20 20 20 20 74 68 65 20 74 69 6d 65 2c 20 69 66 the time, if
9afb0 20 6e 6f 74 20 67 69 76 65 6e 20 69 73 20 6e 6f not given is no
9afc0 77 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 w... * @param
9afd0 7b 6e 75 6d 62 65 72 7d 20 5b 76 65 6c 6f 63 69 {number} [veloci
9afe0 74 79 3d 31 5d 20 76 65 6c 6f 63 69 74 79 20 64 ty=1] velocity d
9aff0 65 66 61 75 6c 74 73 20 74 6f 20 31 0a 09 09 20 efaults to 1...
9b000 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
9b010 65 2e 4d 65 6d 62 72 61 6e 65 53 79 6e 74 68 7d e.MembraneSynth}
9b020 20 74 68 69 73 0a 09 09 20 2a 20 20 40 65 78 61 this... * @exa
9b030 6d 70 6c 65 0a 09 09 20 2a 20 20 6b 69 63 6b 2e mple... * kick.
9b040 74 72 69 67 67 65 72 41 74 74 61 63 6b 28 36 30 triggerAttack(60
9b050 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f );... */.. To
9b060 6e 65 2e 4d 65 6d 62 72 61 6e 65 53 79 6e 74 68 ne.MembraneSynth
9b070 2e 70 72 6f 74 6f 74 79 70 65 2e 74 72 69 67 67 .prototype.trigg
9b080 65 72 41 74 74 61 63 6b 20 3d 20 66 75 6e 63 74 erAttack = funct
9b090 69 6f 6e 20 28 6e 6f 74 65 2c 20 74 69 6d 65 2c ion (note, time,
9b0a0 20 76 65 6c 6f 63 69 74 79 29 20 7b 0a 09 20 20 velocity) {..
9b0b0 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 time = thi
9b0c0 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 s.toSeconds(time
9b0d0 29 3b 0a 09 20 20 20 20 20 20 20 20 6e 6f 74 65 );.. note
9b0e0 20 3d 20 74 68 69 73 2e 74 6f 46 72 65 71 75 65 = this.toFreque
9b0f0 6e 63 79 28 6e 6f 74 65 29 3b 0a 09 20 20 20 20 ncy(note);..
9b100 20 20 20 20 76 61 72 20 6d 61 78 4e 6f 74 65 20 var maxNote
9b110 3d 20 6e 6f 74 65 20 2a 20 74 68 69 73 2e 6f 63 = note * this.oc
9b120 74 61 76 65 73 3b 0a 09 20 20 20 20 20 20 20 20 taves;..
9b130 74 68 69 73 2e 6f 73 63 69 6c 6c 61 74 6f 72 2e this.oscillator.
9b140 66 72 65 71 75 65 6e 63 79 2e 73 65 74 56 61 6c frequency.setVal
9b150 75 65 41 74 54 69 6d 65 28 6d 61 78 4e 6f 74 65 ueAtTime(maxNote
9b160 2c 20 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 , time);..
9b170 20 20 74 68 69 73 2e 6f 73 63 69 6c 6c 61 74 6f this.oscillato
9b180 72 2e 66 72 65 71 75 65 6e 63 79 2e 65 78 70 6f r.frequency.expo
9b190 6e 65 6e 74 69 61 6c 52 61 6d 70 54 6f 56 61 6c nentialRampToVal
9b1a0 75 65 41 74 54 69 6d 65 28 6e 6f 74 65 2c 20 74 ueAtTime(note, t
9b1b0 69 6d 65 20 2b 20 74 68 69 73 2e 74 6f 53 65 63 ime + this.toSec
9b1c0 6f 6e 64 73 28 74 68 69 73 2e 70 69 74 63 68 44 onds(this.pitchD
9b1d0 65 63 61 79 29 29 3b 0a 09 20 20 20 20 20 20 20 ecay));..
9b1e0 20 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 2e 74 this.envelope.t
9b1f0 72 69 67 67 65 72 41 74 74 61 63 6b 28 74 69 6d riggerAttack(tim
9b200 65 2c 20 76 65 6c 6f 63 69 74 79 29 3b 0a 09 20 e, velocity);..
9b210 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
9b220 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
9b230 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 72 69 67 67 /**... * Trigg
9b240 65 72 20 74 68 65 20 72 65 6c 65 61 73 65 20 70 er the release p
9b250 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 6f ortion of the no
9b260 74 65 2e 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 te.... * ... *
9b270 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 @param {Time}
9b280 5b 74 69 6d 65 3d 6e 6f 77 5d 20 74 68 65 20 74 [time=now] the t
9b290 69 6d 65 20 74 68 65 20 6e 6f 74 65 20 77 69 6c ime the note wil
9b2a0 6c 20 72 65 6c 65 61 73 65 0a 09 09 20 2a 20 20 l release... *
9b2b0 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 4d @returns {Tone.M
9b2c0 65 6d 62 72 61 6e 65 53 79 6e 74 68 7d 20 74 68 embraneSynth} th
9b2d0 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
9b2e0 6e 65 2e 4d 65 6d 62 72 61 6e 65 53 79 6e 74 68 ne.MembraneSynth
9b2f0 2e 70 72 6f 74 6f 74 79 70 65 2e 74 72 69 67 67 .prototype.trigg
9b300 65 72 52 65 6c 65 61 73 65 20 3d 20 66 75 6e 63 erRelease = func
9b310 74 69 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 tion (time) {..
9b320 20 20 20 20 20 20 20 74 68 69 73 2e 65 6e 76 65 this.enve
9b330 6c 6f 70 65 2e 74 72 69 67 67 65 72 52 65 6c 65 lope.triggerRele
9b340 61 73 65 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 ase(time);..
9b350 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
9b360 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
9b370 2a 0a 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 *... * Clean up
9b380 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 .... * @returns
9b390 20 7b 54 6f 6e 65 2e 4d 65 6d 62 72 61 6e 65 53 {Tone.MembraneS
9b3a0 79 6e 74 68 7d 20 74 68 69 73 0a 09 09 20 2a 2f ynth} this... */
9b3b0 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 65 6d 62 72 .. Tone.Membr
9b3c0 61 6e 65 53 79 6e 74 68 2e 70 72 6f 74 6f 74 79 aneSynth.prototy
9b3d0 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e pe.dispose = fun
9b3e0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
9b3f0 20 20 20 20 54 6f 6e 65 2e 49 6e 73 74 72 75 6d Tone.Instrum
9b400 65 6e 74 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 ent.prototype.di
9b410 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 spose.call(this)
9b420 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
9b430 5f 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 _writable([..
9b440 20 20 20 20 20 20 20 20 20 27 6f 73 63 69 6c 6c 'oscill
9b450 61 74 6f 72 27 2c 0a 09 20 20 20 20 20 20 20 20 ator',..
9b460 20 20 20 20 27 65 6e 76 65 6c 6f 70 65 27 0a 09 'envelope'..
9b470 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 ]);..
9b480 20 20 20 20 20 74 68 69 73 2e 6f 73 63 69 6c 6c this.oscill
9b490 61 74 6f 72 2e 64 69 73 70 6f 73 65 28 29 3b 0a ator.dispose();.
9b4a0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 73 . this.os
9b4b0 63 69 6c 6c 61 74 6f 72 20 3d 20 6e 75 6c 6c 3b cillator = null;
9b4c0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 .. this.e
9b4d0 6e 76 65 6c 6f 70 65 2e 64 69 73 70 6f 73 65 28 nvelope.dispose(
9b4e0 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 );.. this
9b4f0 2e 65 6e 76 65 6c 6f 70 65 20 3d 20 6e 75 6c 6c .envelope = null
9b500 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
9b510 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
9b520 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 . return Tone
9b530 2e 4d 65 6d 62 72 61 6e 65 53 79 6e 74 68 3b 0a .MembraneSynth;.
9b540 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e .});..Module(fun
9b550 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 ction (Tone) {..
9b560 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 49 6e /**... * In
9b570 68 61 72 6d 6f 6e 69 63 20 72 61 74 69 6f 20 6f harmonic ratio o
9b580 66 20 66 72 65 71 75 65 6e 63 69 65 73 20 62 61 f frequencies ba
9b590 73 65 64 20 6f 6e 20 74 68 65 20 52 6f 6c 61 6e sed on the Rolan
9b5a0 64 20 54 52 2d 38 30 38 0a 09 09 20 2a 20 20 54 d TR-808... * T
9b5b0 61 6b 65 6e 20 66 72 6f 6d 20 68 74 74 70 73 3a aken from https:
9b5c0 2f 2f 63 63 72 6d 61 2e 73 74 61 6e 66 6f 72 64 //ccrma.stanford
9b5d0 2e 65 64 75 2f 70 61 70 65 72 73 2f 74 72 2d 38 .edu/papers/tr-8
9b5e0 30 38 2d 63 79 6d 62 61 6c 2d 70 68 79 73 69 63 08-cymbal-physic
9b5f0 61 6c 6c 79 2d 69 6e 66 6f 72 6d 65 64 2d 63 69 ally-informed-ci
9b600 72 63 75 69 74 2d 62 65 6e 64 61 62 6c 65 2d 64 rcuit-bendable-d
9b610 69 67 69 74 61 6c 2d 6d 6f 64 65 6c 0a 09 09 20 igital-model...
9b620 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a * @private... *
9b630 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 @static... *
9b640 40 74 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 @type {Array}...
9b650 20 2a 2f 0a 09 20 20 20 20 76 61 72 20 69 6e 68 */.. var inh
9b660 61 72 6d 52 61 74 69 6f 73 20 3d 20 5b 0a 09 20 armRatios = [..
9b670 20 20 20 20 20 20 20 31 2c 0a 09 20 20 20 20 20 1,..
9b680 20 20 20 31 2e 34 38 33 2c 0a 09 20 20 20 20 20 1.483,..
9b690 20 20 20 31 2e 39 33 32 2c 0a 09 20 20 20 20 20 1.932,..
9b6a0 20 20 20 32 2e 35 34 36 2c 0a 09 20 20 20 20 20 2.546,..
9b6b0 20 20 20 32 2e 36 33 2c 0a 09 20 20 20 20 20 20 2.63,..
9b6c0 20 20 33 2e 38 39 37 0a 09 20 20 20 20 5d 3b 0a 3.897.. ];.
9b6d0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 . /**... * @
9b6e0 63 6c 61 73 73 20 20 41 20 68 69 67 68 6c 79 20 class A highly
9b6f0 69 6e 68 61 72 6d 6f 6e 69 63 20 61 6e 64 20 73 inharmonic and s
9b700 70 65 63 74 72 61 6c 6c 79 20 63 6f 6d 70 6c 65 pectrally comple
9b710 78 20 73 6f 75 72 63 65 20 77 69 74 68 20 61 20 x source with a
9b720 68 69 67 68 70 61 73 73 20 66 69 6c 74 65 72 0a highpass filter.
9b730 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 61 6e .. * an
9b740 64 20 61 6d 70 6c 69 74 75 64 65 20 65 6e 76 65 d amplitude enve
9b750 6c 6f 70 65 20 77 68 69 63 68 20 69 73 20 67 6f lope which is go
9b760 6f 64 20 66 6f 72 20 6d 61 6b 69 6e 67 20 6d 65 od for making me
9b770 74 61 6c 6f 70 68 6f 6e 65 20 73 6f 75 6e 64 73 talophone sounds
9b780 2e 20 42 61 73 65 64 0a 09 09 20 2a 20 20 20 20 . Based... *
9b790 20 20 20 20 20 20 6f 6e 20 43 79 6d 62 61 6c 53 on CymbalS
9b7a0 79 6e 74 68 20 62 79 20 5b 40 70 6f 6c 79 72 68 ynth by [@polyrh
9b7b0 79 74 68 6d 61 74 69 63 5d 28 68 74 74 70 73 3a ythmatic](https:
9b7c0 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 70 6f 6c //github.com/pol
9b7d0 79 72 68 79 74 68 6d 61 74 69 63 29 2e 0a 09 09 yrhythmatic)....
9b7e0 20 2a 20 20 20 20 20 20 20 20 20 20 49 6e 73 70 * Insp
9b7f0 69 72 61 74 69 6f 6e 20 66 72 6f 6d 20 5b 53 6f iration from [So
9b800 75 6e 64 20 6f 6e 20 53 6f 75 6e 64 5d 28 68 74 und on Sound](ht
9b810 74 70 3a 2f 2f 77 77 77 2e 73 6f 75 6e 64 6f 6e tp://www.soundon
9b820 73 6f 75 6e 64 2e 63 6f 6d 2f 73 6f 73 2f 6a 75 sound.com/sos/ju
9b830 6c 30 32 2f 61 72 74 69 63 6c 65 73 2f 73 79 6e l02/articles/syn
9b840 74 68 73 65 63 72 65 74 73 30 37 30 32 2e 61 73 thsecrets0702.as
9b850 70 29 2e 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 p).... *... * @
9b860 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 2a constructor... *
9b870 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
9b880 2e 49 6e 73 74 72 75 6d 65 6e 74 7d 0a 09 09 20 .Instrument}...
9b890 2a 20 20 40 70 61 72 61 6d 20 7b 4f 62 6a 65 63 * @param {Objec
9b8a0 74 7d 20 5b 6f 70 74 69 6f 6e 73 5d 20 54 68 65 t} [options] The
9b8b0 20 6f 70 74 69 6f 6e 73 20 61 76 61 69 6c 62 6c options availbl
9b8c0 65 20 66 6f 72 20 74 68 65 20 73 79 6e 74 68 0a e for the synth.
9b8d0 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 .. *
9b8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9b8f0 20 73 65 65 20 64 65 66 61 75 6c 74 73 20 62 65 see defaults be
9b900 6c 6f 77 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 low... */.. T
9b910 6f 6e 65 2e 4d 65 74 61 6c 53 79 6e 74 68 20 3d one.MetalSynth =
9b920 20 66 75 6e 63 74 69 6f 6e 20 28 6f 70 74 69 6f function (optio
9b930 6e 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 6f ns) {.. o
9b940 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 64 65 ptions = this.de
9b950 66 61 75 6c 74 41 72 67 28 6f 70 74 69 6f 6e 73 faultArg(options
9b960 2c 20 54 6f 6e 65 2e 4d 65 74 61 6c 53 79 6e 74 , Tone.MetalSynt
9b970 68 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 h.defaults);..
9b980 20 20 20 20 20 20 54 6f 6e 65 2e 49 6e 73 74 72 Tone.Instr
9b990 75 6d 65 6e 74 2e 63 61 6c 6c 28 74 68 69 73 2c ument.call(this,
9b9a0 20 6f 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 options);..
9b9b0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
9b9c0 68 65 20 66 72 65 71 75 65 6e 63 79 20 6f 66 20 he frequency of
9b9d0 74 68 65 20 63 79 6d 62 61 6c 0a 09 09 09 20 2a the cymbal.... *
9b9e0 20 20 40 74 79 70 65 20 20 7b 46 72 65 71 75 65 @type {Freque
9b9f0 6e 63 79 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 ncy}.... * @sig
9ba00 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 nal.... */..
9ba10 20 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 6e this.frequen
9ba20 63 79 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 cy = new Tone.Si
9ba30 67 6e 61 6c 28 6f 70 74 69 6f 6e 73 2e 66 72 65 gnal(options.fre
9ba40 71 75 65 6e 63 79 2c 20 54 6f 6e 65 2e 54 79 70 quency, Tone.Typ
9ba50 65 2e 46 72 65 71 75 65 6e 63 79 29 3b 0a 09 20 e.Frequency);..
9ba60 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
9ba70 20 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 46 The array of F
9ba80 4d 4f 73 63 69 6c 6c 61 74 6f 72 73 0a 09 09 09 MOscillators....
9ba90 20 2a 20 20 40 74 79 70 65 20 20 7b 41 72 72 61 * @type {Arra
9baa0 79 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 y}.... * @priva
9bab0 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
9bac0 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 this._oscilla
9bad0 74 6f 72 73 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 tors = [];..
9bae0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
9baf0 68 65 20 66 72 65 71 75 65 6e 63 79 20 6d 75 6c he frequency mul
9bb00 74 69 70 6c 69 65 72 73 0a 09 09 09 20 2a 20 20 tipliers.... *
9bb10 40 74 79 70 65 20 7b 41 72 72 61 79 7d 0a 09 09 @type {Array}...
9bb20 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
9bb30 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
9bb40 69 73 2e 5f 66 72 65 71 4d 75 6c 74 69 70 6c 69 is._freqMultipli
9bb50 65 72 73 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 ers = [];..
9bb60 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 /**.... * Th
9bb70 65 20 61 6d 70 6c 69 74 75 64 65 20 66 6f 72 20 e amplitude for
9bb80 74 68 65 20 62 6f 64 79 0a 09 09 09 20 2a 20 20 the body.... *
9bb90 40 74 79 70 65 20 7b 54 6f 6e 65 2e 47 61 69 6e @type {Tone.Gain
9bba0 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
9bbb0 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
9bbc0 20 20 74 68 69 73 2e 5f 61 6d 70 6c 69 74 75 65 this._amplitue
9bbd0 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e = new Tone.Gain
9bbe0 28 30 29 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 (0).connect(this
9bbf0 2e 6f 75 74 70 75 74 29 3b 0a 09 20 20 20 20 20 .output);..
9bc00 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 68 69 /**.... * hi
9bc10 67 68 70 61 73 73 20 74 68 65 20 6f 75 74 70 75 ghpass the outpu
9bc20 74 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b t.... * @type {
9bc30 54 6f 6e 65 2e 46 69 6c 74 65 72 7d 0a 09 09 09 Tone.Filter}....
9bc40 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 * @private....
9bc50 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
9bc60 73 2e 5f 68 69 67 68 70 61 73 73 20 3d 20 6e 65 s._highpass = ne
9bc70 77 20 54 6f 6e 65 2e 46 69 6c 74 65 72 28 7b 0a w Tone.Filter({.
9bc80 09 20 20 20 20 20 20 20 20 20 20 20 20 27 74 79 . 'ty
9bc90 70 65 27 3a 20 27 68 69 67 68 70 61 73 73 27 2c pe': 'highpass',
9bca0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 51 .. 'Q
9bcb0 27 3a 20 2d 33 2e 30 31 30 32 39 39 39 35 36 36 ': -3.0102999566
9bcc0 33 39 38 31 32 35 0a 09 20 20 20 20 20 20 20 20 398125..
9bcd0 7d 29 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e }).connect(this.
9bce0 5f 61 6d 70 6c 69 74 75 65 29 3b 0a 09 20 20 20 _amplitue);..
9bcf0 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
9bd00 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6f 63 The number of oc
9bd10 74 61 76 65 73 20 74 68 65 20 68 69 67 68 70 61 taves the highpa
9bd20 73 73 0a 09 09 09 20 2a 20 20 66 69 6c 74 65 72 ss.... * filter
9bd30 20 66 72 65 71 75 65 6e 63 79 20 72 61 6d 70 73 frequency ramps
9bd40 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4e .... * @type {N
9bd50 75 6d 62 65 72 7d 0a 09 09 09 20 2a 20 20 40 70 umber}.... * @p
9bd60 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
9bd70 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 63 74 this._oct
9bd80 61 76 65 73 20 3d 20 6f 70 74 69 6f 6e 73 2e 6f aves = options.o
9bd90 63 74 61 76 65 73 3b 0a 09 20 20 20 20 20 20 20 ctaves;..
9bda0 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 53 63 61 6c /**.... * Scal
9bdb0 65 20 74 68 65 20 62 6f 64 79 20 65 6e 76 65 6c e the body envel
9bdc0 6f 70 65 0a 09 09 09 20 2a 20 20 66 6f 72 20 74 ope.... * for t
9bdd0 68 65 20 62 61 6e 64 70 61 73 73 0a 09 09 09 20 he bandpass....
9bde0 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 53 * @type {Tone.S
9bdf0 63 61 6c 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 cale}.... * @pr
9be00 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 ivate.... */..
9be10 20 20 20 20 20 20 74 68 69 73 2e 5f 66 69 6c 74 this._filt
9be20 65 72 46 72 65 71 53 63 61 6c 65 72 20 3d 20 6e erFreqScaler = n
9be30 65 77 20 54 6f 6e 65 2e 53 63 61 6c 65 28 6f 70 ew Tone.Scale(op
9be40 74 69 6f 6e 73 2e 72 65 73 6f 6e 61 6e 63 65 2c tions.resonance,
9be50 20 37 30 30 30 29 3b 0a 09 20 20 20 20 20 20 20 7000);..
9be60 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
9be70 65 6e 76 65 6c 6f 70 65 20 77 68 69 63 68 20 69 envelope which i
9be80 73 20 63 6f 6e 6e 65 63 74 65 64 20 62 6f 74 68 s connected both
9be90 20 74 6f 20 74 68 65 20 0a 09 09 09 20 2a 20 20 to the .... *
9bea0 61 6d 70 6c 69 74 75 64 65 20 61 6e 64 20 68 69 amplitude and hi
9beb0 67 68 70 61 73 73 20 66 69 6c 74 65 72 27 73 20 ghpass filter's
9bec0 63 75 74 6f 66 66 20 66 72 65 71 75 65 6e 63 79 cutoff frequency
9bed0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b .... * @type {
9bee0 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 7d 0a 09 Tone.Envelope}..
9bef0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
9bf00 68 69 73 2e 65 6e 76 65 6c 6f 70 65 20 3d 20 6e his.envelope = n
9bf10 65 77 20 54 6f 6e 65 2e 45 6e 76 65 6c 6f 70 65 ew Tone.Envelope
9bf20 28 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ({..
9bf30 27 61 74 74 61 63 6b 27 3a 20 6f 70 74 69 6f 6e 'attack': option
9bf40 73 2e 65 6e 76 65 6c 6f 70 65 2e 61 74 74 61 63 s.envelope.attac
9bf50 6b 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 k,..
9bf60 27 61 74 74 61 63 6b 43 75 72 76 65 27 3a 20 27 'attackCurve': '
9bf70 6c 69 6e 65 61 72 27 2c 0a 09 20 20 20 20 20 20 linear',..
9bf80 20 20 20 20 20 20 27 64 65 63 61 79 27 3a 20 6f 'decay': o
9bf90 70 74 69 6f 6e 73 2e 65 6e 76 65 6c 6f 70 65 2e ptions.envelope.
9bfa0 64 65 63 61 79 2c 0a 09 20 20 20 20 20 20 20 20 decay,..
9bfb0 20 20 20 20 27 73 75 73 74 61 69 6e 27 3a 20 30 'sustain': 0
9bfc0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
9bfd0 72 65 6c 65 61 73 65 27 3a 20 6f 70 74 69 6f 6e release': option
9bfe0 73 2e 65 6e 76 65 6c 6f 70 65 2e 72 65 6c 65 61 s.envelope.relea
9bff0 73 65 0a 09 20 20 20 20 20 20 20 20 7d 29 2e 63 se.. }).c
9c000 68 61 69 6e 28 74 68 69 73 2e 5f 66 69 6c 74 65 hain(this._filte
9c010 72 46 72 65 71 53 63 61 6c 65 72 2c 20 74 68 69 rFreqScaler, thi
9c020 73 2e 5f 68 69 67 68 70 61 73 73 2e 66 72 65 71 s._highpass.freq
9c030 75 65 6e 63 79 29 3b 0a 09 20 20 20 20 20 20 20 uency);..
9c040 20 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 2e 63 this.envelope.c
9c050 6f 6e 6e 65 63 74 28 74 68 69 73 2e 5f 61 6d 70 onnect(this._amp
9c060 6c 69 74 75 65 2e 67 61 69 6e 29 3b 0a 09 20 20 litue.gain);..
9c070 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 for (var i
9c080 20 3d 20 30 3b 20 69 20 3c 20 69 6e 68 61 72 6d = 0; i < inharm
9c090 52 61 74 69 6f 73 2e 6c 65 6e 67 74 68 3b 20 69 Ratios.length; i
9c0a0 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ++) {..
9c0b0 20 20 20 76 61 72 20 6f 73 63 20 3d 20 6e 65 77 var osc = new
9c0c0 20 54 6f 6e 65 2e 46 4d 4f 73 63 69 6c 6c 61 74 Tone.FMOscillat
9c0d0 6f 72 28 7b 0a 09 20 20 20 20 20 20 20 20 20 20 or({..
9c0e0 20 20 20 20 20 20 27 74 79 70 65 27 3a 20 27 73 'type': 's
9c0f0 71 75 61 72 65 27 2c 0a 09 20 20 20 20 20 20 20 quare',..
9c100 20 20 20 20 20 20 20 20 20 27 6d 6f 64 75 6c 61 'modula
9c110 74 69 6f 6e 54 79 70 65 27 3a 20 27 73 71 75 61 tionType': 'squa
9c120 72 65 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 re',..
9c130 20 20 20 20 20 20 27 68 61 72 6d 6f 6e 69 63 69 'harmonici
9c140 74 79 27 3a 20 6f 70 74 69 6f 6e 73 2e 68 61 72 ty': options.har
9c150 6d 6f 6e 69 63 69 74 79 2c 0a 09 20 20 20 20 20 monicity,..
9c160 20 20 20 20 20 20 20 20 20 20 20 27 6d 6f 64 75 'modu
9c170 6c 61 74 69 6f 6e 49 6e 64 65 78 27 3a 20 6f 70 lationIndex': op
9c180 74 69 6f 6e 73 2e 6d 6f 64 75 6c 61 74 69 6f 6e tions.modulation
9c190 49 6e 64 65 78 0a 09 20 20 20 20 20 20 20 20 20 Index..
9c1a0 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 });..
9c1b0 20 20 20 20 6f 73 63 2e 63 6f 6e 6e 65 63 74 28 osc.connect(
9c1c0 74 68 69 73 2e 5f 68 69 67 68 70 61 73 73 29 2e this._highpass).
9c1d0 73 74 61 72 74 28 30 29 3b 0a 09 20 20 20 20 20 start(0);..
9c1e0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 this._osc
9c1f0 69 6c 6c 61 74 6f 72 73 5b 69 5d 20 3d 20 6f 73 illators[i] = os
9c200 63 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 c;..
9c210 76 61 72 20 6d 75 6c 74 20 3d 20 6e 65 77 20 54 var mult = new T
9c220 6f 6e 65 2e 4d 75 6c 74 69 70 6c 79 28 69 6e 68 one.Multiply(inh
9c230 61 72 6d 52 61 74 69 6f 73 5b 69 5d 29 3b 0a 09 armRatios[i]);..
9c240 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
9c250 2e 5f 66 72 65 71 4d 75 6c 74 69 70 6c 69 65 72 ._freqMultiplier
9c260 73 5b 69 5d 20 3d 20 6d 75 6c 74 3b 0a 09 20 20 s[i] = mult;..
9c270 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 this.f
9c280 72 65 71 75 65 6e 63 79 2e 63 68 61 69 6e 28 6d requency.chain(m
9c290 75 6c 74 2c 20 6f 73 63 2e 66 72 65 71 75 65 6e ult, osc.frequen
9c2a0 63 79 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a cy);.. }.
9c2b0 09 20 20 20 20 20 20 20 20 2f 2f 73 65 74 20 74 . //set t
9c2c0 68 65 20 6f 63 74 61 76 65 73 0a 09 20 20 20 20 he octaves..
9c2d0 20 20 20 20 74 68 69 73 2e 6f 63 74 61 76 65 73 this.octaves
9c2e0 20 3d 20 6f 70 74 69 6f 6e 73 2e 6f 63 74 61 76 = options.octav
9c2f0 65 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 es;.. };..
9c300 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e Tone.extend(Ton
9c310 65 2e 4d 65 74 61 6c 53 79 6e 74 68 2c 20 54 6f e.MetalSynth, To
9c320 6e 65 2e 49 6e 73 74 72 75 6d 65 6e 74 29 3b 0a ne.Instrument);.
9c330 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 64 . /**... * d
9c340 65 66 61 75 6c 74 20 76 61 6c 75 65 73 0a 09 09 efault values...
9c350 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a * @static... *
9c360 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a 20 20 40 @const... * @
9c370 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 type {Object}...
9c380 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 65 */.. Tone.Me
9c390 74 61 6c 53 79 6e 74 68 2e 64 65 66 61 75 6c 74 talSynth.default
9c3a0 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 27 s = {.. '
9c3b0 66 72 65 71 75 65 6e 63 79 27 3a 20 32 30 30 2c frequency': 200,
9c3c0 0a 09 20 20 20 20 20 20 20 20 27 65 6e 76 65 6c .. 'envel
9c3d0 6f 70 65 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 ope': {..
9c3e0 20 20 20 20 20 27 61 74 74 61 63 6b 27 3a 20 30 'attack': 0
9c3f0 2e 30 30 31 2c 0a 09 20 20 20 20 20 20 20 20 20 .001,..
9c400 20 20 20 27 64 65 63 61 79 27 3a 20 31 2e 34 2c 'decay': 1.4,
9c410 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 72 .. 'r
9c420 65 6c 65 61 73 65 27 3a 20 30 2e 32 0a 09 20 20 elease': 0.2..
9c430 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 },..
9c440 20 20 27 68 61 72 6d 6f 6e 69 63 69 74 79 27 3a 'harmonicity':
9c450 20 35 2e 31 2c 0a 09 20 20 20 20 20 20 20 20 27 5.1,.. '
9c460 6d 6f 64 75 6c 61 74 69 6f 6e 49 6e 64 65 78 27 modulationIndex'
9c470 3a 20 33 32 2c 0a 09 20 20 20 20 20 20 20 20 27 : 32,.. '
9c480 72 65 73 6f 6e 61 6e 63 65 27 3a 20 34 30 30 30 resonance': 4000
9c490 2c 0a 09 20 20 20 20 20 20 20 20 27 6f 63 74 61 ,.. 'octa
9c4a0 76 65 73 27 3a 20 31 2e 35 0a 09 20 20 20 20 7d ves': 1.5.. }
9c4b0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
9c4c0 20 54 72 69 67 67 65 72 20 74 68 65 20 61 74 74 Trigger the att
9c4d0 61 63 6b 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 ack.... * @para
9c4e0 6d 20 20 7b 54 69 6d 65 7d 20 20 74 69 6d 65 20 m {Time} time
9c4f0 20 20 20 20 20 57 68 65 6e 20 74 68 65 20 61 74 When the at
9c500 74 61 63 6b 20 73 68 6f 75 6c 64 20 62 65 20 74 tack should be t
9c510 72 69 67 67 65 72 65 64 2e 0a 09 09 20 2a 20 20 riggered.... *
9c520 40 70 61 72 61 6d 20 20 7b 4e 6f 72 6d 61 6c 52 @param {NormalR
9c530 61 6e 67 65 3d 31 7d 20 20 76 65 6c 6f 63 69 74 ange=1} velocit
9c540 79 20 20 54 68 65 20 76 65 6c 6f 63 69 74 79 20 y The velocity
9c550 74 68 61 74 20 74 68 65 20 65 6e 76 65 6c 6f 70 that the envelop
9c560 65 20 73 68 6f 75 6c 64 20 62 65 20 74 72 69 67 e should be trig
9c570 67 65 72 65 64 20 61 74 2e 0a 09 09 20 2a 20 20 gered at.... *
9c580 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 4d @return {Tone.M
9c590 65 74 61 6c 53 79 6e 74 68 7d 20 20 74 68 69 73 etalSynth} this
9c5a0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
9c5b0 2e 4d 65 74 61 6c 53 79 6e 74 68 2e 70 72 6f 74 .MetalSynth.prot
9c5c0 6f 74 79 70 65 2e 74 72 69 67 67 65 72 41 74 74 otype.triggerAtt
9c5d0 61 63 6b 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ack = function (
9c5e0 74 69 6d 65 2c 20 76 65 6c 29 20 7b 0a 09 20 20 time, vel) {..
9c5f0 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 time = thi
9c600 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 s.toSeconds(time
9c610 29 3b 0a 09 20 20 20 20 20 20 20 20 76 65 6c 20 );.. vel
9c620 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 = this.defaultAr
9c630 67 28 76 65 6c 2c 20 31 29 3b 0a 09 20 20 20 20 g(vel, 1);..
9c640 20 20 20 20 74 68 69 73 2e 65 6e 76 65 6c 6f 70 this.envelop
9c650 65 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b 28 e.triggerAttack(
9c660 74 69 6d 65 2c 20 76 65 6c 29 3b 0a 09 20 20 20 time, vel);..
9c670 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
9c680 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
9c690 2a 2a 0a 09 09 20 2a 20 20 54 72 69 67 67 65 72 **... * Trigger
9c6a0 20 74 68 65 20 72 65 6c 65 61 73 65 20 6f 66 20 the release of
9c6b0 74 68 65 20 65 6e 76 65 6c 6f 70 65 2e 0a 09 09 the envelope....
9c6c0 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d * @param {Tim
9c6d0 65 7d 20 20 74 69 6d 65 20 20 20 20 20 20 57 68 e} time Wh
9c6e0 65 6e 20 74 68 65 20 72 65 6c 65 61 73 65 20 73 en the release s
9c6f0 68 6f 75 6c 64 20 62 65 20 74 72 69 67 67 65 72 hould be trigger
9c700 65 64 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 ed.... * @retur
9c710 6e 20 20 7b 54 6f 6e 65 2e 4d 65 74 61 6c 53 79 n {Tone.MetalSy
9c720 6e 74 68 7d 20 20 74 68 69 73 0a 09 09 20 2a 2f nth} this... */
9c730 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 65 74 61 6c .. Tone.Metal
9c740 53 79 6e 74 68 2e 70 72 6f 74 6f 74 79 70 65 2e Synth.prototype.
9c750 74 72 69 67 67 65 72 52 65 6c 65 61 73 65 20 3d triggerRelease =
9c760 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 function (time)
9c770 20 7b 0a 09 20 20 20 20 20 20 20 20 74 69 6d 65 {.. time
9c780 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 = this.toSecond
9c790 73 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 s(time);..
9c7a0 20 20 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 2e this.envelope.
9c7b0 74 72 69 67 67 65 72 52 65 6c 65 61 73 65 28 74 triggerRelease(t
9c7c0 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 72 ime);.. r
9c7d0 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 eturn this;..
9c7e0 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
9c7f0 2a 20 20 54 72 69 67 67 65 72 20 74 68 65 20 61 * Trigger the a
9c800 74 74 61 63 6b 20 61 6e 64 20 72 65 6c 65 61 73 ttack and releas
9c810 65 20 6f 66 20 74 68 65 20 65 6e 76 65 6c 6f 70 e of the envelop
9c820 65 20 61 66 74 65 72 20 74 68 65 20 67 69 76 65 e after the give
9c830 6e 20 0a 09 09 20 2a 20 20 64 75 72 61 74 69 6f n ... * duratio
9c840 6e 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d n. ... * @param
9c850 20 20 7b 54 69 6d 65 7d 20 20 64 75 72 61 74 69 {Time} durati
9c860 6f 6e 20 20 54 68 65 20 64 75 72 61 74 69 6f 6e on The duration
9c870 20 62 65 66 6f 72 65 20 74 72 69 67 67 65 72 69 before triggeri
9c880 6e 67 20 74 68 65 20 72 65 6c 65 61 73 65 0a 09 ng the release..
9c890 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 . * @param {Ti
9c8a0 6d 65 7d 20 20 74 69 6d 65 20 20 20 20 20 20 57 me} time W
9c8b0 68 65 6e 20 74 68 65 20 61 74 74 61 63 6b 20 73 hen the attack s
9c8c0 68 6f 75 6c 64 20 62 65 20 74 72 69 67 67 65 72 hould be trigger
9c8d0 65 64 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ed.... * @param
9c8e0 20 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 3d 31 {NormalRange=1
9c8f0 7d 20 20 76 65 6c 6f 63 69 74 79 20 20 54 68 65 } velocity The
9c900 20 76 65 6c 6f 63 69 74 79 20 74 68 61 74 20 74 velocity that t
9c910 68 65 20 65 6e 76 65 6c 6f 70 65 20 73 68 6f 75 he envelope shou
9c920 6c 64 20 62 65 20 74 72 69 67 67 65 72 65 64 20 ld be triggered
9c930 61 74 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 at.... * @retur
9c940 6e 20 20 7b 54 6f 6e 65 2e 4d 65 74 61 6c 53 79 n {Tone.MetalSy
9c950 6e 74 68 7d 20 20 74 68 69 73 0a 09 09 20 2a 2f nth} this... */
9c960 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 65 74 61 6c .. Tone.Metal
9c970 53 79 6e 74 68 2e 70 72 6f 74 6f 74 79 70 65 2e Synth.prototype.
9c980 74 72 69 67 67 65 72 41 74 74 61 63 6b 52 65 6c triggerAttackRel
9c990 65 61 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 ease = function
9c9a0 28 64 75 72 61 74 69 6f 6e 2c 20 74 69 6d 65 2c (duration, time,
9c9b0 20 76 65 6c 6f 63 69 74 79 29 20 7b 0a 09 20 20 velocity) {..
9c9c0 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 time = thi
9c9d0 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 s.toSeconds(time
9c9e0 29 3b 0a 09 20 20 20 20 20 20 20 20 64 75 72 61 );.. dura
9c9f0 74 69 6f 6e 20 3d 20 74 68 69 73 2e 74 6f 53 65 tion = this.toSe
9ca00 63 6f 6e 64 73 28 64 75 72 61 74 69 6f 6e 29 3b conds(duration);
9ca10 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 .. this.t
9ca20 72 69 67 67 65 72 41 74 74 61 63 6b 28 74 69 6d riggerAttack(tim
9ca30 65 2c 20 76 65 6c 6f 63 69 74 79 29 3b 0a 09 20 e, velocity);..
9ca40 20 20 20 20 20 20 20 74 68 69 73 2e 74 72 69 67 this.trig
9ca50 67 65 72 52 65 6c 65 61 73 65 28 74 69 6d 65 20 gerRelease(time
9ca60 2b 20 64 75 72 61 74 69 6f 6e 29 3b 0a 09 20 20 + duration);..
9ca70 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
9ca80 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
9ca90 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 6d 6f /**... * The mo
9caa0 64 75 6c 61 74 69 6f 6e 49 6e 64 65 78 20 6f 66 dulationIndex of
9cab0 20 74 68 65 20 6f 73 63 69 6c 6c 61 74 6f 72 73 the oscillators
9cac0 20 77 68 69 63 68 20 6d 61 6b 65 20 75 70 20 74 which make up t
9cad0 68 65 20 73 6f 75 72 63 65 2e 0a 09 09 20 2a 20 he source.... *
9cae0 20 73 65 65 20 54 6f 6e 65 2e 46 4d 4f 73 63 69 see Tone.FMOsci
9caf0 6c 6c 61 74 6f 72 2e 6d 6f 64 75 6c 61 74 69 6f llator.modulatio
9cb00 6e 49 6e 64 65 78 0a 09 09 20 2a 20 20 40 6d 65 nIndex... * @me
9cb10 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 4d 65 74 61 mberOf Tone.Meta
9cb20 6c 53 79 6e 74 68 23 0a 09 09 20 2a 20 20 40 74 lSynth#... * @t
9cb30 79 70 65 20 7b 50 6f 73 69 74 69 76 65 7d 0a 09 ype {Positive}..
9cb40 09 20 2a 20 20 40 6e 61 6d 65 20 20 6d 6f 64 75 . * @name modu
9cb50 6c 61 74 69 6f 6e 49 6e 64 65 78 0a 09 09 20 2a lationIndex... *
9cb60 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
9cb70 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
9cb80 65 2e 4d 65 74 61 6c 53 79 6e 74 68 2e 70 72 6f e.MetalSynth.pro
9cb90 74 6f 74 79 70 65 2c 20 27 6d 6f 64 75 6c 61 74 totype, 'modulat
9cba0 69 6f 6e 49 6e 64 65 78 27 2c 20 7b 0a 09 20 20 ionIndex', {..
9cbb0 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
9cbc0 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
9cbd0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
9cbe0 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 73 5b 30 s._oscillators[0
9cbf0 5d 2e 6d 6f 64 75 6c 61 74 69 6f 6e 49 6e 64 65 ].modulationInde
9cc00 78 2e 76 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 x.value;..
9cc10 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
9cc20 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c t: function (val
9cc30 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
9cc40 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b for (var i = 0;
9cc50 20 69 20 3c 20 74 68 69 73 2e 5f 6f 73 63 69 6c i < this._oscil
9cc60 6c 61 74 6f 72 73 2e 6c 65 6e 67 74 68 3b 20 69 lators.length; i
9cc70 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 ++) {..
9cc80 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 this._osc
9cc90 69 6c 6c 61 74 6f 72 73 5b 69 5d 2e 6d 6f 64 75 illators[i].modu
9cca0 6c 61 74 69 6f 6e 49 6e 64 65 78 2e 76 61 6c 75 lationIndex.valu
9ccb0 65 20 3d 20 76 61 6c 3b 0a 09 20 20 20 20 20 20 e = val;..
9ccc0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
9ccd0 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
9cce0 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 68 /**... * The h
9ccf0 61 72 6d 6f 6e 69 63 69 74 79 20 6f 66 20 74 68 armonicity of th
9cd00 65 20 6f 73 63 69 6c 6c 61 74 6f 72 73 20 77 68 e oscillators wh
9cd10 69 63 68 20 6d 61 6b 65 20 75 70 20 74 68 65 20 ich make up the
9cd20 73 6f 75 72 63 65 2e 0a 09 09 20 2a 20 20 73 65 source.... * se
9cd30 65 20 54 6f 6e 65 2e 46 4d 4f 73 63 69 6c 6c 61 e Tone.FMOscilla
9cd40 74 6f 72 2e 68 61 72 6d 6f 6e 69 63 69 74 79 0a tor.harmonicity.
9cd50 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 .. * @memberOf
9cd60 54 6f 6e 65 2e 4d 65 74 61 6c 53 79 6e 74 68 23 Tone.MetalSynth#
9cd70 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 50 6f ... * @type {Po
9cd80 73 69 74 69 76 65 7d 0a 09 09 20 2a 20 20 40 6e sitive}... * @n
9cd90 61 6d 65 20 20 68 61 72 6d 6f 6e 69 63 69 74 79 ame harmonicity
9cda0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 ... */.. Obje
9cdb0 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
9cdc0 79 28 54 6f 6e 65 2e 4d 65 74 61 6c 53 79 6e 74 y(Tone.MetalSynt
9cdd0 68 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 68 61 h.prototype, 'ha
9cde0 72 6d 6f 6e 69 63 69 74 79 27 2c 20 7b 0a 09 20 rmonicity', {..
9cdf0 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
9ce00 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
9ce10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
9ce20 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f 72 73 5b is._oscillators[
9ce30 30 5d 2e 68 61 72 6d 6f 6e 69 63 69 74 79 2e 76 0].harmonicity.v
9ce40 61 6c 75 65 3b 0a 09 20 20 20 20 20 20 20 20 7d alue;.. }
9ce50 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 ,.. set:
9ce60 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 29 20 7b function (val) {
9ce70 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 66 6f .. fo
9ce80 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 r (var i = 0; i
9ce90 3c 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 < this._oscillat
9cea0 6f 72 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 ors.length; i++)
9ceb0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
9cec0 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c this._oscill
9ced0 61 74 6f 72 73 5b 69 5d 2e 68 61 72 6d 6f 6e 69 ators[i].harmoni
9cee0 63 69 74 79 2e 76 61 6c 75 65 20 3d 20 76 61 6c city.value = val
9cef0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
9cf00 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
9cf10 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
9cf20 20 2a 20 20 54 68 65 20 66 72 65 71 75 65 6e 63 * The frequenc
9cf30 79 20 6f 66 20 74 68 65 20 68 69 67 68 70 61 73 y of the highpas
9cf40 73 20 66 69 6c 74 65 72 20 61 74 74 61 63 68 65 s filter attache
9cf50 64 20 74 6f 20 74 68 65 20 65 6e 76 65 6c 6f 70 d to the envelop
9cf60 65 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f e... * @memberO
9cf70 66 20 54 6f 6e 65 2e 4d 65 74 61 6c 53 79 6e 74 f Tone.MetalSynt
9cf80 68 23 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b h#... * @type {
9cf90 46 72 65 71 75 65 6e 63 79 7d 0a 09 09 20 2a 20 Frequency}... *
9cfa0 20 40 6e 61 6d 65 20 20 72 65 73 6f 6e 61 6e 63 @name resonanc
9cfb0 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a e... */.. Obj
9cfc0 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
9cfd0 74 79 28 54 6f 6e 65 2e 4d 65 74 61 6c 53 79 6e ty(Tone.MetalSyn
9cfe0 74 68 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 72 th.prototype, 'r
9cff0 65 73 6f 6e 61 6e 63 65 27 2c 20 7b 0a 09 20 20 esonance', {..
9d000 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
9d010 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
9d020 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
9d030 73 2e 5f 66 69 6c 74 65 72 46 72 65 71 53 63 61 s._filterFreqSca
9d040 6c 65 72 2e 6d 69 6e 3b 0a 09 20 20 20 20 20 20 ler.min;..
9d050 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
9d060 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c t: function (val
9d070 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
9d080 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 46 72 65 this._filterFre
9d090 71 53 63 61 6c 65 72 2e 6d 69 6e 20 3d 20 76 61 qScaler.min = va
9d0a0 6c 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 l;..
9d0b0 74 68 69 73 2e 6f 63 74 61 76 65 73 20 3d 20 74 this.octaves = t
9d0c0 68 69 73 2e 5f 6f 63 74 61 76 65 73 3b 0a 09 20 his._octaves;..
9d0d0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 }.. })
9d0e0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
9d0f0 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6f The number of o
9d100 63 74 61 76 65 73 20 61 62 6f 76 65 20 74 68 65 ctaves above the
9d110 20 22 72 65 73 6f 6e 61 6e 63 65 22 20 66 72 65 "resonance" fre
9d120 71 75 65 6e 63 79 0a 09 09 20 2a 20 20 74 68 61 quency... * tha
9d130 74 20 74 68 65 20 66 69 6c 74 65 72 20 72 61 6d t the filter ram
9d140 70 73 20 64 75 72 69 6e 67 20 74 68 65 20 61 74 ps during the at
9d150 74 61 63 6b 2f 64 65 63 61 79 20 65 6e 76 65 6c tack/decay envel
9d160 6f 70 65 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 ope... * @membe
9d170 72 4f 66 20 54 6f 6e 65 2e 4d 65 74 61 6c 53 79 rOf Tone.MetalSy
9d180 6e 74 68 23 0a 09 09 20 2a 20 20 40 74 79 70 65 nth#... * @type
9d190 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 20 2a 20 20 {Number}... *
9d1a0 40 6e 61 6d 65 20 20 6f 63 74 61 76 65 73 0a 09 @name octaves..
9d1b0 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
9d1c0 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
9d1d0 54 6f 6e 65 2e 4d 65 74 61 6c 53 79 6e 74 68 2e Tone.MetalSynth.
9d1e0 70 72 6f 74 6f 74 79 70 65 2c 20 27 6f 63 74 61 prototype, 'octa
9d1f0 76 65 73 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 ves', {..
9d200 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
9d210 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
9d220 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6f 63 return this._oc
9d230 74 61 76 65 73 3b 0a 09 20 20 20 20 20 20 20 20 taves;..
9d240 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a },.. set:
9d250 20 66 75 6e 63 74 69 6f 6e 20 28 6f 63 74 73 29 function (octs)
9d260 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
9d270 74 68 69 73 2e 5f 6f 63 74 61 76 65 73 20 3d 20 this._octaves =
9d280 6f 63 74 73 3b 0a 09 20 20 20 20 20 20 20 20 20 octs;..
9d290 20 20 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 46 this._filterF
9d2a0 72 65 71 53 63 61 6c 65 72 2e 6d 61 78 20 3d 20 reqScaler.max =
9d2b0 74 68 69 73 2e 5f 66 69 6c 74 65 72 46 72 65 71 this._filterFreq
9d2c0 53 63 61 6c 65 72 2e 6d 69 6e 20 2a 20 4d 61 74 Scaler.min * Mat
9d2d0 68 2e 70 6f 77 28 32 2c 20 6f 63 74 73 29 3b 0a h.pow(2, octs);.
9d2e0 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
9d2f0 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 });.. /**...
9d300 2a 20 20 43 6c 65 61 6e 20 75 70 0a 09 09 20 2a * Clean up... *
9d310 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
9d320 2e 4d 65 74 61 6c 53 79 6e 74 68 7d 20 74 68 69 .MetalSynth} thi
9d330 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
9d340 65 2e 4d 65 74 61 6c 53 79 6e 74 68 2e 70 72 6f e.MetalSynth.pro
9d350 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d totype.dispose =
9d360 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
9d370 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 49 6e 73 Tone.Ins
9d380 74 72 75 6d 65 6e 74 2e 70 72 6f 74 6f 74 79 70 trument.prototyp
9d390 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 e.dispose.call(t
9d3a0 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 66 his);.. f
9d3b0 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 or (var i = 0; i
9d3c0 20 3c 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 < this._oscilla
9d3d0 74 6f 72 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b tors.length; i++
9d3e0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
9d3f0 20 74 68 69 73 2e 5f 6f 73 63 69 6c 6c 61 74 6f this._oscillato
9d400 72 73 5b 69 5d 2e 64 69 73 70 6f 73 65 28 29 3b rs[i].dispose();
9d410 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
9d420 69 73 2e 5f 66 72 65 71 4d 75 6c 74 69 70 6c 69 is._freqMultipli
9d430 65 72 73 5b 69 5d 2e 64 69 73 70 6f 73 65 28 29 ers[i].dispose()
9d440 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
9d450 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 73 63 69 this._osci
9d460 6c 6c 61 74 6f 72 73 20 3d 20 6e 75 6c 6c 3b 0a llators = null;.
9d470 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 66 . this._f
9d480 72 65 71 4d 75 6c 74 69 70 6c 69 65 72 73 20 3d reqMultipliers =
9d490 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
9d4a0 74 68 69 73 2e 66 72 65 71 75 65 6e 63 79 2e 64 this.frequency.d
9d4b0 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
9d4c0 20 20 20 74 68 69 73 2e 66 72 65 71 75 65 6e 63 this.frequenc
9d4d0 79 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 y = null;..
9d4e0 20 20 20 74 68 69 73 2e 5f 66 69 6c 74 65 72 46 this._filterF
9d4f0 72 65 71 53 63 61 6c 65 72 2e 64 69 73 70 6f 73 reqScaler.dispos
9d500 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
9d510 69 73 2e 5f 66 69 6c 74 65 72 46 72 65 71 53 63 is._filterFreqSc
9d520 61 6c 65 72 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 aler = null;..
9d530 20 20 20 20 20 20 74 68 69 73 2e 5f 61 6d 70 6c this._ampl
9d540 69 74 75 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a itue.dispose();.
9d550 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 61 . this._a
9d560 6d 70 6c 69 74 75 65 20 3d 20 6e 75 6c 6c 3b 0a mplitue = null;.
9d570 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 6e . this.en
9d580 76 65 6c 6f 70 65 2e 64 69 73 70 6f 73 65 28 29 velope.dispose()
9d590 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
9d5a0 65 6e 76 65 6c 6f 70 65 20 3d 20 6e 75 6c 6c 3b envelope = null;
9d5b0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
9d5c0 68 69 67 68 70 61 73 73 2e 64 69 73 70 6f 73 65 highpass.dispose
9d5d0 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
9d5e0 73 2e 5f 68 69 67 68 70 61 73 73 20 3d 20 6e 75 s._highpass = nu
9d5f0 6c 6c 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 ll;.. };..
9d600 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 4d 65 74 return Tone.Met
9d610 61 6c 53 79 6e 74 68 3b 0a 09 7d 29 3b 0a 09 4d alSynth;..});..M
9d620 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 odule(function (
9d630 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 Tone) {.. ..
9d640 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c /**... * @cl
9d650 61 73 73 20 20 54 6f 6e 65 2e 4e 6f 69 73 65 20 ass Tone.Noise
9d660 69 73 20 61 20 6e 6f 69 73 65 20 67 65 6e 65 72 is a noise gener
9d670 61 74 6f 72 2e 20 49 74 20 75 73 65 73 20 6c 6f ator. It uses lo
9d680 6f 70 65 64 20 6e 6f 69 73 65 20 62 75 66 66 65 oped noise buffe
9d690 72 73 20 74 6f 20 73 61 76 65 20 6f 6e 20 70 65 rs to save on pe
9d6a0 72 66 6f 72 6d 61 6e 63 65 2e 0a 09 09 20 2a 20 rformance.... *
9d6b0 20 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 4e 6f Tone.No
9d6c0 69 73 65 20 73 75 70 70 6f 72 74 73 20 74 68 65 ise supports the
9d6d0 20 6e 6f 69 73 65 20 74 79 70 65 73 3a 20 22 70 noise types: "p
9d6e0 69 6e 6b 22 2c 20 22 77 68 69 74 65 22 2c 20 61 ink", "white", a
9d6f0 6e 64 20 22 62 72 6f 77 6e 22 2e 20 52 65 61 64 nd "brown". Read
9d700 20 6d 6f 72 65 20 61 62 6f 75 74 0a 09 09 20 2a more about... *
9d710 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6f 72 73 colors
9d720 20 6f 66 20 6e 6f 69 73 65 20 6f 6e 20 5b 57 69 of noise on [Wi
9d730 6b 69 70 65 64 69 61 5d 28 68 74 74 70 73 3a 2f kipedia](https:/
9d740 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 /en.wikipedia.or
9d750 67 2f 77 69 6b 69 2f 43 6f 6c 6f 72 73 5f 6f 66 g/wiki/Colors_of
9d760 5f 6e 6f 69 73 65 29 2e 0a 09 09 20 2a 0a 09 09 _noise).... *...
9d770 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 * @constructor
9d780 0a 09 09 20 2a 20 20 40 65 78 74 65 6e 64 73 20 ... * @extends
9d790 7b 54 6f 6e 65 2e 53 6f 75 72 63 65 7d 0a 09 09 {Tone.Source}...
9d7a0 20 2a 20 20 40 70 61 72 61 6d 20 7b 73 74 72 69 * @param {stri
9d7b0 6e 67 7d 20 74 79 70 65 20 74 68 65 20 6e 6f 69 ng} type the noi
9d7c0 73 65 20 74 79 70 65 20 28 77 68 69 74 65 7c 70 se type (white|p
9d7d0 69 6e 6b 7c 62 72 6f 77 6e 29 0a 09 09 20 2a 20 ink|brown)... *
9d7e0 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f @example... * /
9d7f0 2f 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 /initialize the
9d800 6e 6f 69 73 65 20 61 6e 64 20 73 74 61 72 74 0a noise and start.
9d810 09 09 20 2a 20 76 61 72 20 6e 6f 69 73 65 20 3d .. * var noise =
9d820 20 6e 65 77 20 54 6f 6e 65 2e 4e 6f 69 73 65 28 new Tone.Noise(
9d830 22 70 69 6e 6b 22 29 2e 73 74 61 72 74 28 29 3b "pink").start();
9d840 0a 09 09 20 2a 20 0a 09 09 20 2a 20 2f 2f 6d 61 ... * ... * //ma
9d850 6b 65 20 61 6e 20 61 75 74 6f 66 69 6c 74 65 72 ke an autofilter
9d860 20 74 6f 20 73 68 61 70 65 20 74 68 65 20 6e 6f to shape the no
9d870 69 73 65 0a 09 09 20 2a 20 76 61 72 20 61 75 74 ise... * var aut
9d880 6f 46 69 6c 74 65 72 20 3d 20 6e 65 77 20 54 6f oFilter = new To
9d890 6e 65 2e 41 75 74 6f 46 69 6c 74 65 72 28 7b 0a ne.AutoFilter({.
9d8a0 09 09 20 2a 20 09 22 66 72 65 71 75 65 6e 63 79 .. * ."frequency
9d8b0 22 20 3a 20 22 38 6d 22 2c 20 0a 09 09 20 2a 20 " : "8m", ... *
9d8c0 09 22 6d 69 6e 22 20 3a 20 38 30 30 2c 20 0a 09 ."min" : 800, ..
9d8d0 09 20 2a 20 09 22 6d 61 78 22 20 3a 20 31 35 30 . * ."max" : 150
9d8e0 30 30 0a 09 09 20 2a 20 7d 29 2e 63 6f 6e 6e 65 00... * }).conne
9d8f0 63 74 28 54 6f 6e 65 2e 4d 61 73 74 65 72 29 3b ct(Tone.Master);
9d900 0a 09 09 20 2a 20 0a 09 09 20 2a 20 2f 2f 63 6f ... * ... * //co
9d910 6e 6e 65 63 74 20 74 68 65 20 6e 6f 69 73 65 0a nnect the noise.
9d920 09 09 20 2a 20 6e 6f 69 73 65 2e 63 6f 6e 6e 65 .. * noise.conne
9d930 63 74 28 61 75 74 6f 46 69 6c 74 65 72 29 3b 0a ct(autoFilter);.
9d940 09 09 20 2a 20 2f 2f 73 74 61 72 74 20 74 68 65 .. * //start the
9d950 20 61 75 74 6f 66 69 6c 74 65 72 20 4c 46 4f 0a autofilter LFO.
9d960 09 09 20 2a 20 61 75 74 6f 46 69 6c 74 65 72 2e .. * autoFilter.
9d970 73 74 61 72 74 28 29 0a 09 09 20 2a 2f 0a 09 20 start()... */..
9d980 20 20 20 54 6f 6e 65 2e 4e 6f 69 73 65 20 3d 20 Tone.Noise =
9d990 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
9d9a0 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 6f var optio
9d9b0 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e ns = this.option
9d9c0 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 sObject(argument
9d9d0 73 2c 20 5b 27 74 79 70 65 27 5d 2c 20 54 6f 6e s, ['type'], Ton
9d9e0 65 2e 4e 6f 69 73 65 2e 64 65 66 61 75 6c 74 73 e.Noise.defaults
9d9f0 29 3b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 );.. Tone
9da00 2e 53 6f 75 72 63 65 2e 63 61 6c 6c 28 74 68 69 .Source.call(thi
9da10 73 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a 09 20 20 s, options);..
9da20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
9da30 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 20 @private.... *
9da40 20 40 74 79 70 65 20 7b 41 75 64 69 6f 42 75 66 @type {AudioBuf
9da50 66 65 72 53 6f 75 72 63 65 4e 6f 64 65 7d 0a 09 ferSourceNode}..
9da60 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
9da70 68 69 73 2e 5f 73 6f 75 72 63 65 20 3d 20 6e 75 his._source = nu
9da80 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a ll;.. /**
9da90 0a 09 09 09 20 2a 20 20 74 68 65 20 62 75 66 66 .... * the buff
9daa0 65 72 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 er.... * @priva
9dab0 74 65 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 te.... * @type
9dac0 7b 41 75 64 69 6f 42 75 66 66 65 72 7d 0a 09 09 {AudioBuffer}...
9dad0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
9dae0 69 73 2e 5f 62 75 66 66 65 72 20 3d 20 6e 75 6c is._buffer = nul
9daf0 6c 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a l;.. /**.
9db00 09 09 09 20 2a 20 20 54 68 65 20 70 6c 61 79 62 ... * The playb
9db10 61 63 6b 20 72 61 74 65 20 6f 66 20 74 68 65 20 ack rate of the
9db20 6e 6f 69 73 65 2e 20 41 66 66 65 63 74 73 0a 09 noise. Affects..
9db30 09 09 20 2a 20 20 74 68 65 20 22 66 72 65 71 75 .. * the "frequ
9db40 65 6e 63 79 22 20 6f 66 20 74 68 65 20 6e 6f 69 ency" of the noi
9db50 73 65 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 se..... * @type
9db60 20 7b 50 6f 73 69 74 69 76 65 7d 0a 09 09 09 20 {Positive}....
9db70 2a 20 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a * @signal.... *
9db80 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
9db90 5f 70 6c 61 79 62 61 63 6b 52 61 74 65 20 3d 20 _playbackRate =
9dba0 6f 70 74 69 6f 6e 73 2e 70 6c 61 79 62 61 63 6b options.playback
9dbb0 52 61 74 65 3b 0a 09 20 20 20 20 20 20 20 20 74 Rate;.. t
9dbc0 68 69 73 2e 74 79 70 65 20 3d 20 6f 70 74 69 6f his.type = optio
9dbd0 6e 73 2e 74 79 70 65 3b 0a 09 20 20 20 20 7d 3b ns.type;.. };
9dbe0 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e .. Tone.exten
9dbf0 64 28 54 6f 6e 65 2e 4e 6f 69 73 65 2c 20 54 6f d(Tone.Noise, To
9dc00 6e 65 2e 53 6f 75 72 63 65 29 3b 0a 09 20 20 20 ne.Source);..
9dc10 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 65 20 64 /**... * the d
9dc20 65 66 61 75 6c 74 20 70 61 72 61 6d 65 74 65 72 efault parameter
9dc30 73 0a 09 09 20 2a 0a 09 09 20 2a 20 20 40 73 74 s... *... * @st
9dc40 61 74 69 63 0a 09 09 20 2a 20 20 40 63 6f 6e 73 atic... * @cons
9dc50 74 0a 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4f t... * @type {O
9dc60 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 bject}... */..
9dc70 20 20 54 6f 6e 65 2e 4e 6f 69 73 65 2e 64 65 66 Tone.Noise.def
9dc80 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 aults = {..
9dc90 20 20 20 27 74 79 70 65 27 3a 20 27 77 68 69 74 'type': 'whit
9dca0 65 27 2c 0a 09 20 20 20 20 20 20 20 20 27 70 6c e',.. 'pl
9dcb0 61 79 62 61 63 6b 52 61 74 65 27 3a 20 31 0a 09 aybackRate': 1..
9dcc0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
9dcd0 09 09 20 2a 20 54 68 65 20 74 79 70 65 20 6f 66 .. * The type of
9dce0 20 74 68 65 20 6e 6f 69 73 65 2e 20 43 61 6e 20 the noise. Can
9dcf0 62 65 20 22 77 68 69 74 65 22 2c 20 22 62 72 6f be "white", "bro
9dd00 77 6e 22 2c 20 6f 72 20 22 70 69 6e 6b 22 2e 20 wn", or "pink".
9dd10 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 ... * @memberOf
9dd20 54 6f 6e 65 2e 4e 6f 69 73 65 23 0a 09 09 20 2a Tone.Noise#... *
9dd30 20 40 74 79 70 65 20 7b 73 74 72 69 6e 67 7d 0a @type {string}.
9dd40 09 09 20 2a 20 40 6e 61 6d 65 20 74 79 70 65 0a .. * @name type.
9dd50 09 09 20 2a 20 40 65 78 61 6d 70 6c 65 0a 09 09 .. * @example...
9dd60 20 2a 20 6e 6f 69 73 65 2e 74 79 70 65 20 3d 20 * noise.type =
9dd70 22 77 68 69 74 65 22 3b 0a 09 09 20 2a 2f 0a 09 "white";... */..
9dd80 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
9dd90 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 4e eProperty(Tone.N
9dda0 6f 69 73 65 2e 70 72 6f 74 6f 74 79 70 65 2c 20 oise.prototype,
9ddb0 27 74 79 70 65 27 2c 20 7b 0a 09 20 20 20 20 20 'type', {..
9ddc0 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e get: function
9ddd0 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 () {..
9dde0 20 20 20 69 66 20 28 74 68 69 73 2e 5f 62 75 66 if (this._buf
9ddf0 66 65 72 20 3d 3d 3d 20 5f 77 68 69 74 65 4e 6f fer === _whiteNo
9de00 69 73 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ise) {..
9de10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 27 return '
9de20 77 68 69 74 65 27 3b 0a 09 20 20 20 20 20 20 20 white';..
9de30 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
9de40 74 68 69 73 2e 5f 62 75 66 66 65 72 20 3d 3d 3d this._buffer ===
9de50 20 5f 62 72 6f 77 6e 4e 6f 69 73 65 29 20 7b 0a _brownNoise) {.
9de60 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
9de70 20 72 65 74 75 72 6e 20 27 62 72 6f 77 6e 27 3b return 'brown';
9de80 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 .. }
9de90 65 6c 73 65 20 69 66 20 28 74 68 69 73 2e 5f 62 else if (this._b
9dea0 75 66 66 65 72 20 3d 3d 3d 20 5f 70 69 6e 6b 4e uffer === _pinkN
9deb0 6f 69 73 65 29 20 7b 0a 09 20 20 20 20 20 20 20 oise) {..
9dec0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
9ded0 27 70 69 6e 6b 27 3b 0a 09 20 20 20 20 20 20 20 'pink';..
9dee0 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
9def0 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a },.. set:
9df00 20 66 75 6e 63 74 69 6f 6e 20 28 74 79 70 65 29 function (type)
9df10 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
9df20 69 66 20 28 74 68 69 73 2e 74 79 70 65 20 21 3d if (this.type !=
9df30 3d 20 74 79 70 65 29 20 7b 0a 09 20 20 20 20 20 = type) {..
9df40 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 switc
9df50 68 20 28 74 79 70 65 29 20 7b 0a 09 20 20 20 20 h (type) {..
9df60 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case
9df70 20 27 77 68 69 74 65 27 3a 0a 09 20 20 20 20 20 'white':..
9df80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
9df90 68 69 73 2e 5f 62 75 66 66 65 72 20 3d 20 5f 77 his._buffer = _w
9dfa0 68 69 74 65 4e 6f 69 73 65 3b 0a 09 20 20 20 20 hiteNoise;..
9dfb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9dfc0 62 72 65 61 6b 3b 0a 09 20 20 20 20 20 20 20 20 break;..
9dfd0 20 20 20 20 20 20 20 20 63 61 73 65 20 27 70 69 case 'pi
9dfe0 6e 6b 27 3a 0a 09 20 20 20 20 20 20 20 20 20 20 nk':..
9dff0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
9e000 62 75 66 66 65 72 20 3d 20 5f 70 69 6e 6b 4e 6f buffer = _pinkNo
9e010 69 73 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ise;..
9e020 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b break;
9e030 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
9e040 20 20 63 61 73 65 20 27 62 72 6f 77 6e 27 3a 0a case 'brown':.
9e050 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
9e060 20 20 20 20 20 74 68 69 73 2e 5f 62 75 66 66 65 this._buffe
9e070 72 20 3d 20 5f 62 72 6f 77 6e 4e 6f 69 73 65 3b r = _brownNoise;
9e080 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
9e090 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 09 20 20 break;..
9e0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 de
9e0b0 66 61 75 6c 74 3a 0a 09 20 20 20 20 20 20 20 20 fault:..
9e0c0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f thro
9e0d0 77 20 6e 65 77 20 54 79 70 65 45 72 72 6f 72 28 w new TypeError(
9e0e0 27 54 6f 6e 65 2e 4e 6f 69 73 65 3a 20 69 6e 76 'Tone.Noise: inv
9e0f0 61 6c 69 64 20 74 79 70 65 3a 20 27 20 2b 20 74 alid type: ' + t
9e100 79 70 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 ype);..
9e110 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
9e120 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20 69 //if i
9e130 74 27 73 20 70 6c 61 79 69 6e 67 2c 20 73 74 6f t's playing, sto
9e140 70 20 61 6e 64 20 72 65 73 74 61 72 74 20 69 74 p and restart it
9e150 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
9e160 20 20 69 66 20 28 74 68 69 73 2e 73 74 61 74 65 if (this.state
9e170 20 3d 3d 3d 20 54 6f 6e 65 2e 53 74 61 74 65 2e === Tone.State.
9e180 53 74 61 72 74 65 64 29 20 7b 0a 09 20 20 20 20 Started) {..
9e190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9e1a0 76 61 72 20 6e 6f 77 20 3d 20 74 68 69 73 2e 6e var now = this.n
9e1b0 6f 77 28 29 20 2b 20 74 68 69 73 2e 62 6c 6f 63 ow() + this.bloc
9e1c0 6b 54 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 kTime;..
9e1d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 72 65 //re
9e1e0 6d 6f 76 65 20 74 68 65 20 6c 69 73 74 65 6e 65 move the listene
9e1f0 72 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 r..
9e200 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 74 6f this._sto
9e210 70 28 6e 6f 77 29 3b 0a 09 20 20 20 20 20 20 20 p(now);..
9e220 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
9e230 73 2e 5f 73 74 61 72 74 28 6e 6f 77 29 3b 0a 09 s._start(now);..
9e240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9e250 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d }.. }
9e260 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
9e270 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 });.. /**...
9e280 20 2a 20 20 54 68 65 20 70 6c 61 79 62 61 63 6b * The playback
9e290 20 72 61 74 65 20 6f 66 20 74 68 65 20 6e 6f 69 rate of the noi
9e2a0 73 65 2e 20 41 66 66 65 63 74 73 0a 09 09 20 2a se. Affects... *
9e2b0 20 20 74 68 65 20 22 66 72 65 71 75 65 6e 63 79 the "frequency
9e2c0 22 20 6f 66 20 74 68 65 20 6e 6f 69 73 65 2e 0a " of the noise..
9e2d0 09 09 20 2a 20 20 40 74 79 70 65 20 7b 50 6f 73 .. * @type {Pos
9e2e0 69 74 69 76 65 7d 0a 09 09 20 2a 20 20 40 73 69 itive}... * @si
9e2f0 67 6e 61 6c 0a 09 09 20 2a 2f 0a 09 20 20 20 20 gnal... */..
9e300 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
9e310 70 65 72 74 79 28 54 6f 6e 65 2e 4e 6f 69 73 65 perty(Tone.Noise
9e320 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 70 6c 61 .prototype, 'pla
9e330 79 62 61 63 6b 52 61 74 65 27 2c 20 7b 0a 09 20 ybackRate', {..
9e340 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
9e350 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
9e360 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
9e370 69 73 2e 5f 70 6c 61 79 62 61 63 6b 52 61 74 65 is._playbackRate
9e380 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 ;.. },..
9e390 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 set: func
9e3a0 74 69 6f 6e 20 28 72 61 74 65 29 20 7b 0a 09 20 tion (rate) {..
9e3b0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
9e3c0 5f 70 6c 61 79 62 61 63 6b 52 61 74 65 20 3d 20 _playbackRate =
9e3d0 72 61 74 65 3b 0a 09 20 20 20 20 20 20 20 20 20 rate;..
9e3e0 20 20 20 69 66 20 28 74 68 69 73 2e 5f 73 6f 75 if (this._sou
9e3f0 72 63 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 rce) {..
9e400 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 6f this._so
9e410 75 72 63 65 2e 70 6c 61 79 62 61 63 6b 52 61 74 urce.playbackRat
9e420 65 2e 76 61 6c 75 65 20 3d 20 72 61 74 65 3b 0a e.value = rate;.
9e430 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 . }..
9e440 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
9e450 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
9e460 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 72 74 internal start
9e470 20 6d 65 74 68 6f 64 0a 09 09 20 2a 0a 09 09 20 method... *...
9e480 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d * @param {Time}
9e490 20 74 69 6d 65 0a 09 09 20 2a 20 20 40 70 72 69 time... * @pri
9e4a0 76 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 vate... */..
9e4b0 54 6f 6e 65 2e 4e 6f 69 73 65 2e 70 72 6f 74 6f Tone.Noise.proto
9e4c0 74 79 70 65 2e 5f 73 74 61 72 74 20 3d 20 66 75 type._start = fu
9e4d0 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 7b 0a nction (time) {.
9e4e0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 . this._s
9e4f0 6f 75 72 63 65 20 3d 20 74 68 69 73 2e 63 6f 6e ource = this.con
9e500 74 65 78 74 2e 63 72 65 61 74 65 42 75 66 66 65 text.createBuffe
9e510 72 53 6f 75 72 63 65 28 29 3b 0a 09 20 20 20 20 rSource();..
9e520 20 20 20 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 this._source
9e530 2e 62 75 66 66 65 72 20 3d 20 74 68 69 73 2e 5f .buffer = this._
9e540 62 75 66 66 65 72 3b 0a 09 20 20 20 20 20 20 20 buffer;..
9e550 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e 6c 6f this._source.lo
9e560 6f 70 20 3d 20 74 72 75 65 3b 0a 09 20 20 20 20 op = true;..
9e570 20 20 20 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 this._source
9e580 2e 70 6c 61 79 62 61 63 6b 52 61 74 65 2e 76 61 .playbackRate.va
9e590 6c 75 65 20 3d 20 74 68 69 73 2e 5f 70 6c 61 79 lue = this._play
9e5a0 62 61 63 6b 52 61 74 65 3b 0a 09 20 20 20 20 20 backRate;..
9e5b0 20 20 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e this._source.
9e5c0 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 6f 75 74 connect(this.out
9e5d0 70 75 74 29 3b 0a 09 20 20 20 20 20 20 20 20 74 put);.. t
9e5e0 68 69 73 2e 5f 73 6f 75 72 63 65 2e 73 74 61 72 his._source.star
9e5f0 74 28 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 t(this.toSeconds
9e600 28 74 69 6d 65 29 2c 20 4d 61 74 68 2e 72 61 6e (time), Math.ran
9e610 64 6f 6d 28 29 20 2a 20 28 74 68 69 73 2e 5f 62 dom() * (this._b
9e620 75 66 66 65 72 2e 64 75 72 61 74 69 6f 6e 20 2d uffer.duration -
9e630 20 30 2e 30 30 31 29 29 3b 0a 09 20 20 20 20 7d 0.001));.. }
9e640 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
9e650 20 69 6e 74 65 72 6e 61 6c 20 73 74 6f 70 20 6d internal stop m
9e660 65 74 68 6f 64 0a 09 09 20 2a 0a 09 09 20 2a 20 ethod... *... *
9e670 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 74 @param {Time} t
9e680 69 6d 65 0a 09 09 20 2a 20 20 40 70 72 69 76 61 ime... * @priva
9e690 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f te... */.. To
9e6a0 6e 65 2e 4e 6f 69 73 65 2e 70 72 6f 74 6f 74 79 ne.Noise.prototy
9e6b0 70 65 2e 5f 73 74 6f 70 20 3d 20 66 75 6e 63 74 pe._stop = funct
9e6c0 69 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 ion (time) {..
9e6d0 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f if (this._
9e6e0 73 6f 75 72 63 65 29 20 7b 0a 09 20 20 20 20 20 source) {..
9e6f0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 6f 75 this._sou
9e700 72 63 65 2e 73 74 6f 70 28 74 68 69 73 2e 74 6f rce.stop(this.to
9e710 53 65 63 6f 6e 64 73 28 74 69 6d 65 29 29 3b 0a Seconds(time));.
9e720 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
9e730 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
9e740 20 20 43 6c 65 61 6e 20 75 70 2e 0a 09 09 20 2a Clean up.... *
9e750 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
9e760 2e 4e 6f 69 73 65 7d 20 74 68 69 73 0a 09 09 20 .Noise} this...
9e770 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4e 6f 69 */.. Tone.Noi
9e780 73 65 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 se.prototype.dis
9e790 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 pose = function
9e7a0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 6f () {.. To
9e7b0 6e 65 2e 53 6f 75 72 63 65 2e 70 72 6f 74 6f 74 ne.Source.protot
9e7c0 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c ype.dispose.call
9e7d0 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 (this);..
9e7e0 20 69 66 20 28 74 68 69 73 2e 5f 73 6f 75 72 63 if (this._sourc
9e7f0 65 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 09 20 e !== null) {..
9e800 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
9e810 5f 73 6f 75 72 63 65 2e 64 69 73 63 6f 6e 6e 65 _source.disconne
9e820 63 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 ct();..
9e830 20 20 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 20 this._source
9e840 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
9e850 20 7d 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 }.. this
9e860 2e 5f 62 75 66 66 65 72 20 3d 20 6e 75 6c 6c 3b ._buffer = null;
9e870 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
9e880 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
9e890 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////
9e8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
9e8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
9e8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
9e8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0a ///////////////.
9e8e0 09 20 20 20 20 2f 2f 20 54 48 45 20 42 55 46 46 . // THE BUFF
9e8f0 45 52 53 0a 09 20 20 20 20 2f 2f 20 62 6f 72 72 ERS.. // borr
9e900 6f 77 65 64 20 68 65 61 76 69 6c 79 20 66 72 6f owed heavily fro
9e910 6d 20 68 74 74 70 3a 2f 2f 6e 6f 69 73 65 68 61 m http://noiseha
9e920 63 6b 2e 63 6f 6d 2f 67 65 6e 65 72 61 74 65 2d ck.com/generate-
9e930 6e 6f 69 73 65 2d 77 65 62 2d 61 75 64 69 6f 2d noise-web-audio-
9e940 61 70 69 2f 0a 09 20 20 20 20 2f 2f 2f 2f 2f 2f api/.. //////
9e950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
9e960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
9e970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
9e980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
9e990 2f 2f 2f 2f 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 /////.. /**..
9e9a0 09 20 2a 09 73 74 61 74 69 63 20 6e 6f 69 73 65 . *.static noise
9e9b0 20 62 75 66 66 65 72 73 0a 09 09 20 2a 0a 09 09 buffers... *...
9e9c0 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a * @static... *
9e9d0 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 20 @private... *
9e9e0 20 40 74 79 70 65 20 7b 41 75 64 69 6f 42 75 66 @type {AudioBuf
9e9f0 66 65 72 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 fer}... */..
9ea00 76 61 72 20 5f 70 69 6e 6b 4e 6f 69 73 65 20 3d var _pinkNoise =
9ea10 20 6e 75 6c 6c 2c 20 5f 62 72 6f 77 6e 4e 6f 69 null, _brownNoi
9ea20 73 65 20 3d 20 6e 75 6c 6c 2c 20 5f 77 68 69 74 se = null, _whit
9ea30 65 4e 6f 69 73 65 20 3d 20 6e 75 6c 6c 3b 0a 09 eNoise = null;..
9ea40 20 20 20 20 54 6f 6e 65 2e 5f 69 6e 69 74 41 75 Tone._initAu
9ea50 64 69 6f 43 6f 6e 74 65 78 74 28 66 75 6e 63 74 dioContext(funct
9ea60 69 6f 6e 20 28 61 75 64 69 6f 43 6f 6e 74 65 78 ion (audioContex
9ea70 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 t) {.. va
9ea80 72 20 73 61 6d 70 6c 65 52 61 74 65 20 3d 20 61 r sampleRate = a
9ea90 75 64 69 6f 43 6f 6e 74 65 78 74 2e 73 61 6d 70 udioContext.samp
9eaa0 6c 65 52 61 74 65 3b 0a 09 20 20 20 20 20 20 20 leRate;..
9eab0 20 2f 2f 66 6f 75 72 20 73 65 63 6f 6e 64 73 20 //four seconds
9eac0 70 65 72 20 62 75 66 66 65 72 0a 09 20 20 20 20 per buffer..
9ead0 20 20 20 20 76 61 72 20 62 75 66 66 65 72 4c 65 var bufferLe
9eae0 6e 67 74 68 20 3d 20 73 61 6d 70 6c 65 52 61 74 ngth = sampleRat
9eaf0 65 20 2a 20 34 3b 0a 09 20 20 20 20 20 20 20 20 e * 4;..
9eb00 2f 2f 66 69 6c 6c 20 74 68 65 20 62 75 66 66 65 //fill the buffe
9eb10 72 73 0a 09 20 20 20 20 20 20 20 20 5f 70 69 6e rs.. _pin
9eb20 6b 4e 6f 69 73 65 20 3d 20 66 75 6e 63 74 69 6f kNoise = functio
9eb30 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
9eb40 20 20 20 20 76 61 72 20 62 75 66 66 65 72 20 3d var buffer =
9eb50 20 61 75 64 69 6f 43 6f 6e 74 65 78 74 2e 63 72 audioContext.cr
9eb60 65 61 74 65 42 75 66 66 65 72 28 32 2c 20 62 75 eateBuffer(2, bu
9eb70 66 66 65 72 4c 65 6e 67 74 68 2c 20 73 61 6d 70 fferLength, samp
9eb80 6c 65 52 61 74 65 29 3b 0a 09 20 20 20 20 20 20 leRate);..
9eb90 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 63 for (var c
9eba0 68 61 6e 6e 65 6c 4e 75 6d 20 3d 20 30 3b 20 63 hannelNum = 0; c
9ebb0 68 61 6e 6e 65 6c 4e 75 6d 20 3c 20 62 75 66 66 hannelNum < buff
9ebc0 65 72 2e 6e 75 6d 62 65 72 4f 66 43 68 61 6e 6e er.numberOfChann
9ebd0 65 6c 73 3b 20 63 68 61 6e 6e 65 6c 4e 75 6d 2b els; channelNum+
9ebe0 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 +) {..
9ebf0 20 20 20 20 20 20 76 61 72 20 63 68 61 6e 6e 65 var channe
9ec00 6c 20 3d 20 62 75 66 66 65 72 2e 67 65 74 43 68 l = buffer.getCh
9ec10 61 6e 6e 65 6c 44 61 74 61 28 63 68 61 6e 6e 65 annelData(channe
9ec20 6c 4e 75 6d 29 3b 0a 09 20 20 20 20 20 20 20 20 lNum);..
9ec30 20 20 20 20 20 20 20 20 76 61 72 20 62 30 2c 20 var b0,
9ec40 62 31 2c 20 62 32 2c 20 62 33 2c 20 62 34 2c 20 b1, b2, b3, b4,
9ec50 62 35 2c 20 62 36 3b 0a 09 20 20 20 20 20 20 20 b5, b6;..
9ec60 20 20 20 20 20 20 20 20 20 62 30 20 3d 20 62 31 b0 = b1
9ec70 20 3d 20 62 32 20 3d 20 62 33 20 3d 20 62 34 20 = b2 = b3 = b4
9ec80 3d 20 62 35 20 3d 20 62 36 20 3d 20 30 3b 0a 09 = b5 = b6 = 0;..
9ec90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9eca0 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 for (var i = 0;
9ecb0 69 20 3c 20 62 75 66 66 65 72 4c 65 6e 67 74 68 i < bufferLength
9ecc0 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 ; i++) {..
9ecd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va
9ece0 72 20 77 68 69 74 65 20 3d 20 4d 61 74 68 2e 72 r white = Math.r
9ecf0 61 6e 64 6f 6d 28 29 20 2a 20 32 20 2d 20 31 3b andom() * 2 - 1;
9ed00 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
9ed10 20 20 20 20 20 20 62 30 20 3d 20 30 2e 39 39 38 b0 = 0.998
9ed20 38 36 20 2a 20 62 30 20 2b 20 77 68 69 74 65 20 86 * b0 + white
9ed30 2a 20 30 2e 30 35 35 35 31 37 39 3b 0a 09 20 20 * 0.0555179;..
9ed40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9ed50 20 20 62 31 20 3d 20 30 2e 39 39 33 33 32 20 2a b1 = 0.99332 *
9ed60 20 62 31 20 2b 20 77 68 69 74 65 20 2a 20 30 2e b1 + white * 0.
9ed70 30 37 35 30 37 35 39 3b 0a 09 20 20 20 20 20 20 0750759;..
9ed80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 32 b2
9ed90 20 3d 20 30 2e 39 36 39 20 2a 20 62 32 20 2b 20 = 0.969 * b2 +
9eda0 77 68 69 74 65 20 2a 20 30 2e 31 35 33 38 35 32 white * 0.153852
9edb0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
9edc0 20 20 20 20 20 20 20 62 33 20 3d 20 30 2e 38 36 b3 = 0.86
9edd0 36 35 20 2a 20 62 33 20 2b 20 77 68 69 74 65 20 65 * b3 + white
9ede0 2a 20 30 2e 33 31 30 34 38 35 36 3b 0a 09 20 20 * 0.3104856;..
9edf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9ee00 20 20 62 34 20 3d 20 30 2e 35 35 20 2a 20 62 34 b4 = 0.55 * b4
9ee10 20 2b 20 77 68 69 74 65 20 2a 20 30 2e 35 33 32 + white * 0.532
9ee20 39 35 32 32 3b 0a 09 20 20 20 20 20 20 20 20 20 9522;..
9ee30 20 20 20 20 20 20 20 20 20 20 20 62 35 20 3d 20 b5 =
9ee40 2d 30 2e 37 36 31 36 20 2a 20 62 35 20 2d 20 77 -0.7616 * b5 - w
9ee50 68 69 74 65 20 2a 20 30 2e 30 31 36 38 39 38 3b hite * 0.016898;
9ee60 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
9ee70 20 20 20 20 20 20 63 68 61 6e 6e 65 6c 5b 69 5d channel[i]
9ee80 20 3d 20 62 30 20 2b 20 62 31 20 2b 20 62 32 20 = b0 + b1 + b2
9ee90 2b 20 62 33 20 2b 20 62 34 20 2b 20 62 35 20 2b + b3 + b4 + b5 +
9eea0 20 62 36 20 2b 20 77 68 69 74 65 20 2a 20 30 2e b6 + white * 0.
9eeb0 35 33 36 32 3b 0a 09 20 20 20 20 20 20 20 20 20 5362;..
9eec0 20 20 20 20 20 20 20 20 20 20 20 63 68 61 6e 6e chann
9eed0 65 6c 5b 69 5d 20 2a 3d 20 30 2e 31 31 3b 0a 09 el[i] *= 0.11;..
9eee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9eef0 20 20 20 20 2f 2f 20 28 72 6f 75 67 68 6c 79 29 // (roughly)
9ef00 20 63 6f 6d 70 65 6e 73 61 74 65 20 66 6f 72 20 compensate for
9ef10 67 61 69 6e 0a 09 20 20 20 20 20 20 20 20 20 20 gain..
9ef20 20 20 20 20 20 20 20 20 20 20 62 36 20 3d 20 77 b6 = w
9ef30 68 69 74 65 20 2a 20 30 2e 31 31 35 39 32 36 3b hite * 0.115926;
9ef40 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
9ef50 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
9ef60 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
9ef70 72 65 74 75 72 6e 20 62 75 66 66 65 72 3b 0a 09 return buffer;..
9ef80 20 20 20 20 20 20 20 20 7d 28 29 3b 0a 09 20 20 }();..
9ef90 20 20 20 20 20 20 5f 62 72 6f 77 6e 4e 6f 69 73 _brownNois
9efa0 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 e = function ()
9efb0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 {.. v
9efc0 61 72 20 62 75 66 66 65 72 20 3d 20 61 75 64 69 ar buffer = audi
9efd0 6f 43 6f 6e 74 65 78 74 2e 63 72 65 61 74 65 42 oContext.createB
9efe0 75 66 66 65 72 28 32 2c 20 62 75 66 66 65 72 4c uffer(2, bufferL
9eff0 65 6e 67 74 68 2c 20 73 61 6d 70 6c 65 52 61 74 ength, sampleRat
9f000 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e);..
9f010 20 66 6f 72 20 28 76 61 72 20 63 68 61 6e 6e 65 for (var channe
9f020 6c 4e 75 6d 20 3d 20 30 3b 20 63 68 61 6e 6e 65 lNum = 0; channe
9f030 6c 4e 75 6d 20 3c 20 62 75 66 66 65 72 2e 6e 75 lNum < buffer.nu
9f040 6d 62 65 72 4f 66 43 68 61 6e 6e 65 6c 73 3b 20 mberOfChannels;
9f050 63 68 61 6e 6e 65 6c 4e 75 6d 2b 2b 29 20 7b 0a channelNum++) {.
9f060 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
9f070 20 76 61 72 20 63 68 61 6e 6e 65 6c 20 3d 20 62 var channel = b
9f080 75 66 66 65 72 2e 67 65 74 43 68 61 6e 6e 65 6c uffer.getChannel
9f090 44 61 74 61 28 63 68 61 6e 6e 65 6c 4e 75 6d 29 Data(channelNum)
9f0a0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
9f0b0 20 20 20 76 61 72 20 6c 61 73 74 4f 75 74 20 3d var lastOut =
9f0c0 20 30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 0;..
9f0d0 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 for (var i
9f0e0 3d 20 30 3b 20 69 20 3c 20 62 75 66 66 65 72 4c = 0; i < bufferL
9f0f0 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 ength; i++) {..
9f100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9f110 20 20 20 76 61 72 20 77 68 69 74 65 20 3d 20 4d var white = M
9f120 61 74 68 2e 72 61 6e 64 6f 6d 28 29 20 2a 20 32 ath.random() * 2
9f130 20 2d 20 31 3b 0a 09 20 20 20 20 20 20 20 20 20 - 1;..
9f140 20 20 20 20 20 20 20 20 20 20 20 63 68 61 6e 6e chann
9f150 65 6c 5b 69 5d 20 3d 20 28 6c 61 73 74 4f 75 74 el[i] = (lastOut
9f160 20 2b 20 30 2e 30 32 20 2a 20 77 68 69 74 65 29 + 0.02 * white)
9f170 20 2f 20 31 2e 30 32 3b 0a 09 20 20 20 20 20 20 / 1.02;..
9f180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 la
9f190 73 74 4f 75 74 20 3d 20 63 68 61 6e 6e 65 6c 5b stOut = channel[
9f1a0 69 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 i];..
9f1b0 20 20 20 20 20 20 20 20 20 63 68 61 6e 6e 65 6c channel
9f1c0 5b 69 5d 20 2a 3d 20 33 2e 35 3b 20 20 20 20 2f [i] *= 3.5; /
9f1d0 2f 20 28 72 6f 75 67 68 6c 79 29 20 63 6f 6d 70 / (roughly) comp
9f1e0 65 6e 73 61 74 65 20 66 6f 72 20 67 61 69 6e 0a ensate for gain.
9f1f0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
9f200 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
9f210 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 }.. r
9f220 65 74 75 72 6e 20 62 75 66 66 65 72 3b 0a 09 20 eturn buffer;..
9f230 20 20 20 20 20 20 20 7d 28 29 3b 0a 09 20 20 20 }();..
9f240 20 20 20 20 20 5f 77 68 69 74 65 4e 6f 69 73 65 _whiteNoise
9f250 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
9f260 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
9f270 72 20 62 75 66 66 65 72 20 3d 20 61 75 64 69 6f r buffer = audio
9f280 43 6f 6e 74 65 78 74 2e 63 72 65 61 74 65 42 75 Context.createBu
9f290 66 66 65 72 28 32 2c 20 62 75 66 66 65 72 4c 65 ffer(2, bufferLe
9f2a0 6e 67 74 68 2c 20 73 61 6d 70 6c 65 52 61 74 65 ngth, sampleRate
9f2b0 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
9f2c0 66 6f 72 20 28 76 61 72 20 63 68 61 6e 6e 65 6c for (var channel
9f2d0 4e 75 6d 20 3d 20 30 3b 20 63 68 61 6e 6e 65 6c Num = 0; channel
9f2e0 4e 75 6d 20 3c 20 62 75 66 66 65 72 2e 6e 75 6d Num < buffer.num
9f2f0 62 65 72 4f 66 43 68 61 6e 6e 65 6c 73 3b 20 63 berOfChannels; c
9f300 68 61 6e 6e 65 6c 4e 75 6d 2b 2b 29 20 7b 0a 09 hannelNum++) {..
9f310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9f320 76 61 72 20 63 68 61 6e 6e 65 6c 20 3d 20 62 75 var channel = bu
9f330 66 66 65 72 2e 67 65 74 43 68 61 6e 6e 65 6c 44 ffer.getChannelD
9f340 61 74 61 28 63 68 61 6e 6e 65 6c 4e 75 6d 29 3b ata(channelNum);
9f350 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
9f360 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 for (var i = 0
9f370 3b 20 69 20 3c 20 62 75 66 66 65 72 4c 65 6e 67 ; i < bufferLeng
9f380 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 th; i++) {..
9f390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
9f3a0 63 68 61 6e 6e 65 6c 5b 69 5d 20 3d 20 4d 61 74 channel[i] = Mat
9f3b0 68 2e 72 61 6e 64 6f 6d 28 29 20 2a 20 32 20 2d h.random() * 2 -
9f3c0 20 31 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 1;..
9f3d0 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
9f3e0 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
9f3f0 20 20 20 72 65 74 75 72 6e 20 62 75 66 66 65 72 return buffer
9f400 3b 0a 09 20 20 20 20 20 20 20 20 7d 28 29 3b 0a ;.. }();.
9f410 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 72 65 . });.. re
9f420 74 75 72 6e 20 54 6f 6e 65 2e 4e 6f 69 73 65 3b turn Tone.Noise;
9f430 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 ..});..Module(fu
9f440 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a nction (Tone) {.
9f450 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 . .. /**..
9f460 09 20 2a 20 20 40 63 6c 61 73 73 20 20 54 6f 6e . * @class Ton
9f470 65 2e 4e 6f 69 73 65 53 79 6e 74 68 20 69 73 20 e.NoiseSynth is
9f480 63 6f 6d 70 6f 73 65 64 20 6f 66 20 61 20 6e 6f composed of a no
9f490 69 73 65 20 67 65 6e 65 72 61 74 6f 72 20 28 54 ise generator (T
9f4a0 6f 6e 65 2e 4e 6f 69 73 65 29 2c 20 6f 6e 65 20 one.Noise), one
9f4b0 66 69 6c 74 65 72 20 28 54 6f 6e 65 2e 46 69 6c filter (Tone.Fil
9f4c0 74 65 72 29 2c 20 0a 09 09 20 2a 20 20 20 20 20 ter), ... *
9f4d0 20 20 20 20 20 61 6e 64 20 74 77 6f 20 65 6e 76 and two env
9f4e0 65 6c 6f 70 65 73 20 28 54 6f 6e 65 2e 45 6e 76 elopes (Tone.Env
9f4f0 65 6c 6f 70 29 2e 20 4f 6e 65 20 65 6e 76 65 6c elop). One envel
9f500 6f 70 65 20 63 6f 6e 74 72 6f 6c 73 20 74 68 65 ope controls the
9f510 20 61 6d 70 6c 69 74 75 64 65 0a 09 09 20 2a 20 amplitude... *
9f520 20 20 20 20 20 20 20 20 20 6f 66 20 74 68 65 20 of the
9f530 6e 6f 69 73 65 20 61 6e 64 20 74 68 65 20 6f 74 noise and the ot
9f540 68 65 72 20 69 73 20 63 6f 6e 74 72 6f 6c 73 20 her is controls
9f550 74 68 65 20 63 75 74 6f 66 66 20 66 72 65 71 75 the cutoff frequ
9f560 65 6e 63 79 20 6f 66 20 74 68 65 20 66 69 6c 74 ency of the filt
9f570 65 72 2e 20 0a 09 09 20 2a 20 20 20 20 20 20 20 er. ... *
9f580 20 20 20 3c 69 6d 67 20 73 72 63 3d 22 68 74 74 <img src="htt
9f590 70 73 3a 2f 2f 64 6f 63 73 2e 67 6f 6f 67 6c 65 ps://docs.google
9f5a0 2e 63 6f 6d 2f 64 72 61 77 69 6e 67 73 2f 64 2f .com/drawings/d/
9f5b0 31 72 71 7a 75 58 39 72 42 6c 68 54 35 30 4d 52 1rqzuX9rBlhT50MR
9f5c0 76 44 32 54 4b 6d 6c 39 62 6e 5a 68 63 5a 6d 7a vD2TKml9bnZhcZmz
9f5d0 58 46 31 72 66 5f 6f 37 76 64 6e 45 2f 70 75 62 XF1rf_o7vdnE/pub
9f5e0 3f 77 3d 39 31 38 26 68 3d 32 34 32 22 3e 0a 09 ?w=918&h=242">..
9f5f0 09 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 . *... * @const
9f600 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 ructor... * @ex
9f610 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 49 6e 73 74 tends {Tone.Inst
9f620 72 75 6d 65 6e 74 7d 0a 09 09 20 2a 20 20 40 70 rument}... * @p
9f630 61 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20 5b 6f aram {Object} [o
9f640 70 74 69 6f 6e 73 5d 20 74 68 65 20 6f 70 74 69 ptions] the opti
9f650 6f 6e 73 20 61 76 61 69 6c 61 62 6c 65 20 66 6f ons available fo
9f660 72 20 74 68 65 20 73 79 6e 74 68 20 0a 09 09 20 r the synth ...
9f670 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
9f680 20 20 20 20 20 20 20 20 20 20 20 73 65 65 20 64 see d
9f690 65 66 61 75 6c 74 73 20 62 65 6c 6f 77 0a 09 09 efaults below...
9f6a0 20 2a 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
9f6b0 20 76 61 72 20 6e 6f 69 73 65 53 79 6e 74 68 20 var noiseSynth
9f6c0 3d 20 6e 65 77 20 54 6f 6e 65 2e 4e 6f 69 73 65 = new Tone.Noise
9f6d0 53 79 6e 74 68 28 29 2e 74 6f 4d 61 73 74 65 72 Synth().toMaster
9f6e0 28 29 3b 0a 09 09 20 2a 20 6e 6f 69 73 65 53 79 ();... * noiseSy
9f6f0 6e 74 68 2e 74 72 69 67 67 65 72 41 74 74 61 63 nth.triggerAttac
9f700 6b 52 65 6c 65 61 73 65 28 22 38 6e 22 29 3b 0a kRelease("8n");.
9f710 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
9f720 4e 6f 69 73 65 53 79 6e 74 68 20 3d 20 66 75 6e NoiseSynth = fun
9f730 63 74 69 6f 6e 20 28 6f 70 74 69 6f 6e 73 29 20 ction (options)
9f740 7b 0a 09 20 20 20 20 20 20 20 20 2f 2f 67 65 74 {.. //get
9f750 20 74 68 65 20 64 65 66 61 75 6c 74 73 0a 09 20 the defaults..
9f760 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 20 3d options =
9f770 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 67 this.defaultArg
9f780 28 6f 70 74 69 6f 6e 73 2c 20 54 6f 6e 65 2e 4e (options, Tone.N
9f790 6f 69 73 65 53 79 6e 74 68 2e 64 65 66 61 75 6c oiseSynth.defaul
9f7a0 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 54 6f ts);.. To
9f7b0 6e 65 2e 49 6e 73 74 72 75 6d 65 6e 74 2e 63 61 ne.Instrument.ca
9f7c0 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 ll(this, options
9f7d0 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
9f7e0 09 09 09 20 2a 20 20 54 68 65 20 6e 6f 69 73 65 ... * The noise
9f7f0 20 73 6f 75 72 63 65 2e 0a 09 09 09 20 2a 20 20 source..... *
9f800 40 74 79 70 65 20 7b 54 6f 6e 65 2e 4e 6f 69 73 @type {Tone.Nois
9f810 65 7d 0a 09 09 09 20 2a 20 20 40 65 78 61 6d 70 e}.... * @examp
9f820 6c 65 0a 09 09 09 20 2a 20 6e 6f 69 73 65 53 79 le.... * noiseSy
9f830 6e 74 68 2e 73 65 74 28 22 6e 6f 69 73 65 2e 74 nth.set("noise.t
9f840 79 70 65 22 2c 20 22 62 72 6f 77 6e 22 29 3b 0a ype", "brown");.
9f850 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
9f860 74 68 69 73 2e 6e 6f 69 73 65 20 3d 20 6e 65 77 this.noise = new
9f870 20 54 6f 6e 65 2e 4e 6f 69 73 65 28 29 3b 0a 09 Tone.Noise();..
9f880 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
9f890 2a 20 20 54 68 65 20 61 6d 70 6c 69 74 75 64 65 * The amplitude
9f8a0 20 65 6e 76 65 6c 6f 70 65 2e 20 0a 09 09 09 20 envelope. ....
9f8b0 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e 41 * @type {Tone.A
9f8c0 6d 70 6c 69 74 75 64 65 45 6e 76 65 6c 6f 70 65 mplitudeEnvelope
9f8d0 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 }.... */..
9f8e0 20 20 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 20 this.envelope
9f8f0 3d 20 6e 65 77 20 54 6f 6e 65 2e 41 6d 70 6c 69 = new Tone.Ampli
9f900 74 75 64 65 45 6e 76 65 6c 6f 70 65 28 6f 70 74 tudeEnvelope(opt
9f910 69 6f 6e 73 2e 65 6e 76 65 6c 6f 70 65 29 3b 0a ions.envelope);.
9f920 09 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 6e 65 . //conne
9f930 63 74 20 74 68 65 20 6e 6f 69 73 65 20 74 6f 20 ct the noise to
9f940 74 68 65 20 6f 75 74 70 75 74 0a 09 20 20 20 20 the output..
9f950 20 20 20 20 74 68 69 73 2e 6e 6f 69 73 65 2e 63 this.noise.c
9f960 68 61 69 6e 28 74 68 69 73 2e 65 6e 76 65 6c 6f hain(this.envelo
9f970 70 65 2c 20 74 68 69 73 2e 6f 75 74 70 75 74 29 pe, this.output)
9f980 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 73 74 61 ;.. //sta
9f990 72 74 20 74 68 65 20 6e 6f 69 73 65 0a 09 20 20 rt the noise..
9f9a0 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 69 73 65 this.noise
9f9b0 2e 73 74 61 72 74 28 29 3b 0a 09 20 20 20 20 20 .start();..
9f9c0 20 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c this._readOnl
9f9d0 79 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 y([..
9f9e0 20 27 6e 6f 69 73 65 27 2c 0a 09 20 20 20 20 20 'noise',..
9f9f0 20 20 20 20 20 20 20 27 65 6e 76 65 6c 6f 70 65 'envelope
9fa00 27 0a 09 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 '.. ]);..
9fa10 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 };.. Tone
9fa20 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 4e 6f 69 .extend(Tone.Noi
9fa30 73 65 53 79 6e 74 68 2c 20 54 6f 6e 65 2e 49 6e seSynth, Tone.In
9fa40 73 74 72 75 6d 65 6e 74 29 3b 0a 09 20 20 20 20 strument);..
9fa50 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 /**... * @const
9fa60 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 ... * @static..
9fa70 09 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 . * @type {Obje
9fa80 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ct}... */.. T
9fa90 6f 6e 65 2e 4e 6f 69 73 65 53 79 6e 74 68 2e 64 one.NoiseSynth.d
9faa0 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 efaults = {..
9fab0 20 20 20 20 20 27 6e 6f 69 73 65 27 3a 20 7b 20 'noise': {
9fac0 27 74 79 70 65 27 3a 20 27 77 68 69 74 65 27 20 'type': 'white'
9fad0 7d 2c 0a 09 20 20 20 20 20 20 20 20 27 65 6e 76 },.. 'env
9fae0 65 6c 6f 70 65 27 3a 20 7b 0a 09 20 20 20 20 20 elope': {..
9faf0 20 20 20 20 20 20 20 27 61 74 74 61 63 6b 27 3a 'attack':
9fb00 20 30 2e 30 30 35 2c 0a 09 20 20 20 20 20 20 20 0.005,..
9fb10 20 20 20 20 20 27 64 65 63 61 79 27 3a 20 30 2e 'decay': 0.
9fb20 31 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 1,..
9fb30 27 73 75 73 74 61 69 6e 27 3a 20 30 0a 09 20 20 'sustain': 0..
9fb40 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a }.. };.
9fb50 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 . /**... * S
9fb60 74 61 72 74 20 74 68 65 20 61 74 74 61 63 6b 20 tart the attack
9fb70 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 65 portion of the e
9fb80 6e 76 65 6c 6f 70 65 73 2e 20 55 6e 6c 69 6b 65 nvelopes. Unlike
9fb90 20 6f 74 68 65 72 20 0a 09 09 20 2a 20 20 69 6e other ... * in
9fba0 73 74 72 75 6d 65 6e 74 73 2c 20 54 6f 6e 65 2e struments, Tone.
9fbb0 4e 6f 69 73 65 53 79 6e 74 68 20 64 6f 65 73 6e NoiseSynth doesn
9fbc0 27 74 20 68 61 76 65 20 61 20 6e 6f 74 65 2e 20 't have a note.
9fbd0 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 ... * @param {T
9fbe0 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 ime} [time=now]
9fbf0 74 68 65 20 74 69 6d 65 20 74 68 65 20 61 74 74 the time the att
9fc00 61 63 6b 20 73 68 6f 75 6c 64 20 73 74 61 72 74 ack should start
9fc10 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e ... * @param {n
9fc20 75 6d 62 65 72 7d 20 5b 76 65 6c 6f 63 69 74 79 umber} [velocity
9fc30 3d 31 5d 20 74 68 65 20 76 65 6c 6f 63 69 74 79 =1] the velocity
9fc40 20 6f 66 20 74 68 65 20 6e 6f 74 65 20 28 30 2d of the note (0-
9fc50 31 29 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 1)... * @return
9fc60 73 20 7b 54 6f 6e 65 2e 4e 6f 69 73 65 53 79 6e s {Tone.NoiseSyn
9fc70 74 68 7d 20 74 68 69 73 0a 09 09 20 2a 20 20 40 th} this... * @
9fc80 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 6e 6f 69 example... * noi
9fc90 73 65 53 79 6e 74 68 2e 74 72 69 67 67 65 72 41 seSynth.triggerA
9fca0 74 74 61 63 6b 28 29 3b 0a 09 09 20 2a 2f 0a 09 ttack();... */..
9fcb0 20 20 20 20 54 6f 6e 65 2e 4e 6f 69 73 65 53 79 Tone.NoiseSy
9fcc0 6e 74 68 2e 70 72 6f 74 6f 74 79 70 65 2e 74 72 nth.prototype.tr
9fcd0 69 67 67 65 72 41 74 74 61 63 6b 20 3d 20 66 75 iggerAttack = fu
9fce0 6e 63 74 69 6f 6e 20 28 74 69 6d 65 2c 20 76 65 nction (time, ve
9fcf0 6c 6f 63 69 74 79 29 20 7b 0a 09 20 20 20 20 20 locity) {..
9fd00 20 20 20 2f 2f 74 68 65 20 65 6e 76 65 6c 6f 70 //the envelop
9fd10 65 73 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 es.. this
9fd20 2e 65 6e 76 65 6c 6f 70 65 2e 74 72 69 67 67 65 .envelope.trigge
9fd30 72 41 74 74 61 63 6b 28 74 69 6d 65 2c 20 76 65 rAttack(time, ve
9fd40 6c 6f 63 69 74 79 29 3b 0a 09 20 20 20 20 20 20 locity);..
9fd50 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
9fd60 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
9fd70 09 09 20 2a 20 20 53 74 61 72 74 20 74 68 65 20 .. * Start the
9fd80 72 65 6c 65 61 73 65 20 70 6f 72 74 69 6f 6e 20 release portion
9fd90 6f 66 20 74 68 65 20 65 6e 76 65 6c 6f 70 65 73 of the envelopes
9fda0 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b .... * @param {
9fdb0 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d Time} [time=now]
9fdc0 20 74 68 65 20 74 69 6d 65 20 74 68 65 20 72 65 the time the re
9fdd0 6c 65 61 73 65 20 73 68 6f 75 6c 64 20 73 74 61 lease should sta
9fde0 72 74 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e rt... * @return
9fdf0 73 20 7b 54 6f 6e 65 2e 4e 6f 69 73 65 53 79 6e s {Tone.NoiseSyn
9fe00 74 68 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 th} this... */..
9fe10 20 20 20 20 54 6f 6e 65 2e 4e 6f 69 73 65 53 79 Tone.NoiseSy
9fe20 6e 74 68 2e 70 72 6f 74 6f 74 79 70 65 2e 74 72 nth.prototype.tr
9fe30 69 67 67 65 72 52 65 6c 65 61 73 65 20 3d 20 66 iggerRelease = f
9fe40 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 7b unction (time) {
9fe50 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 .. this.e
9fe60 6e 76 65 6c 6f 70 65 2e 74 72 69 67 67 65 72 52 nvelope.triggerR
9fe70 65 6c 65 61 73 65 28 74 69 6d 65 29 3b 0a 09 20 elease(time);..
9fe80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
9fe90 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
9fea0 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 72 69 67 67 /**... * Trigg
9feb0 65 72 20 74 68 65 20 61 74 74 61 63 6b 20 61 6e er the attack an
9fec0 64 20 74 68 65 6e 20 74 68 65 20 72 65 6c 65 61 d then the relea
9fed0 73 65 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 se. ... * @para
9fee0 6d 20 20 7b 54 69 6d 65 7d 20 64 75 72 61 74 69 m {Time} durati
9fef0 6f 6e 20 74 68 65 20 64 75 72 61 74 69 6f 6e 20 on the duration
9ff00 6f 66 20 74 68 65 20 6e 6f 74 65 0a 09 09 20 2a of the note... *
9ff10 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d @param {Time}
9ff20 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 20 20 20 20 [time=now]
9ff30 74 68 65 20 74 69 6d 65 20 6f 66 20 74 68 65 20 the time of the
9ff40 61 74 74 61 63 6b 0a 09 09 20 2a 20 20 40 70 61 attack... * @pa
9ff50 72 61 6d 20 20 7b 6e 75 6d 62 65 72 7d 20 5b 76 ram {number} [v
9ff60 65 6c 6f 63 69 74 79 3d 31 5d 20 74 68 65 20 76 elocity=1] the v
9ff70 65 6c 6f 63 69 74 79 0a 09 09 20 2a 20 20 40 72 elocity... * @r
9ff80 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 4e 6f 69 eturns {Tone.Noi
9ff90 73 65 53 79 6e 74 68 7d 20 74 68 69 73 0a 09 09 seSynth} this...
9ffa0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4e 6f */.. Tone.No
9ffb0 69 73 65 53 79 6e 74 68 2e 70 72 6f 74 6f 74 79 iseSynth.prototy
9ffc0 70 65 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b pe.triggerAttack
9ffd0 52 65 6c 65 61 73 65 20 3d 20 66 75 6e 63 74 69 Release = functi
9ffe0 6f 6e 20 28 64 75 72 61 74 69 6f 6e 2c 20 74 69 on (duration, ti
9fff0 6d 65 2c 20 76 65 6c 6f 63 69 74 79 29 20 7b 0a me, velocity) {.
a0000 09 20 20 20 20 20 20 20 20 74 69 6d 65 20 3d 20 . time =
a0010 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 this.toSeconds(t
a0020 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 64 ime);.. d
a0030 75 72 61 74 69 6f 6e 20 3d 20 74 68 69 73 2e 74 uration = this.t
a0040 6f 53 65 63 6f 6e 64 73 28 64 75 72 61 74 69 6f oSeconds(duratio
a0050 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 n);.. thi
a0060 73 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b 28 s.triggerAttack(
a0070 74 69 6d 65 2c 20 76 65 6c 6f 63 69 74 79 29 3b time, velocity);
a0080 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 .. this.t
a0090 72 69 67 67 65 72 52 65 6c 65 61 73 65 28 74 69 riggerRelease(ti
a00a0 6d 65 20 2b 20 64 75 72 61 74 69 6f 6e 29 3b 0a me + duration);.
a00b0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
a00c0 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
a00d0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 6c 65 /**... * Cle
a00e0 61 6e 20 75 70 2e 20 0a 09 09 20 2a 20 20 40 72 an up. ... * @r
a00f0 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 4e 6f 69 eturns {Tone.Noi
a0100 73 65 53 79 6e 74 68 7d 20 74 68 69 73 0a 09 09 seSynth} this...
a0110 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4e 6f */.. Tone.No
a0120 69 73 65 53 79 6e 74 68 2e 70 72 6f 74 6f 74 79 iseSynth.prototy
a0130 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e pe.dispose = fun
a0140 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
a0150 20 20 20 20 54 6f 6e 65 2e 49 6e 73 74 72 75 6d Tone.Instrum
a0160 65 6e 74 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 ent.prototype.di
a0170 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 spose.call(this)
a0180 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
a0190 5f 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 20 20 _writable([..
a01a0 20 20 20 20 20 20 20 20 20 27 6e 6f 69 73 65 27 'noise'
a01b0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
a01c0 65 6e 76 65 6c 6f 70 65 27 0a 09 20 20 20 20 20 envelope'..
a01d0 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 ]);..
a01e0 74 68 69 73 2e 6e 6f 69 73 65 2e 64 69 73 70 6f this.noise.dispo
a01f0 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
a0200 68 69 73 2e 6e 6f 69 73 65 20 3d 20 6e 75 6c 6c his.noise = null
a0210 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
a0220 65 6e 76 65 6c 6f 70 65 2e 64 69 73 70 6f 73 65 envelope.dispose
a0230 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
a0240 73 2e 65 6e 76 65 6c 6f 70 65 20 3d 20 6e 75 6c s.envelope = nul
a0250 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 l;.. retu
a0260 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b rn this;.. };
a0270 0a 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e .. return Ton
a0280 65 2e 4e 6f 69 73 65 53 79 6e 74 68 3b 0a 09 7d e.NoiseSynth;..}
a0290 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
a02a0 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
a02b0 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a .. /**... *
a02c0 20 20 40 63 6c 61 73 73 20 4b 61 72 70 6c 75 73 @class Karplus
a02d0 2d 53 74 72 69 6e 67 20 73 74 72 69 6e 67 20 73 -String string s
a02e0 79 6e 74 68 65 73 69 73 2e 20 4f 66 74 65 6e 20 ynthesis. Often
a02f0 6f 75 74 20 6f 66 20 74 75 6e 65 2e 20 0a 09 09 out of tune. ...
a0300 20 2a 20 20 20 20 20 20 20 20 20 57 69 6c 6c 20 * Will
a0310 63 68 61 6e 67 65 20 77 68 65 6e 20 74 68 65 20 change when the
a0320 41 75 64 69 6f 57 6f 72 6b 65 72 4e 6f 64 65 20 AudioWorkerNode
a0330 69 73 20 61 76 61 69 6c 61 62 6c 65 20 61 63 72 is available acr
a0340 6f 73 73 0a 09 09 20 2a 20 20 20 20 20 20 20 20 oss... *
a0350 20 62 72 6f 77 73 65 72 73 2e 20 0a 09 09 20 2a browsers. ... *
a0360 20 20 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 ... * @constr
a0370 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 74 uctor... * @ext
a0380 65 6e 64 73 20 7b 54 6f 6e 65 2e 49 6e 73 74 72 ends {Tone.Instr
a0390 75 6d 65 6e 74 7d 0a 09 09 20 2a 20 20 40 70 61 ument}... * @pa
a03a0 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20 5b 6f 70 ram {Object} [op
a03b0 74 69 6f 6e 73 5d 20 73 65 65 20 74 68 65 20 64 tions] see the d
a03c0 65 66 61 75 6c 74 73 0a 09 09 20 2a 20 20 40 65 efaults... * @e
a03d0 78 61 6d 70 6c 65 0a 09 09 20 2a 20 76 61 72 20 xample... * var
a03e0 70 6c 75 63 6b 79 20 3d 20 6e 65 77 20 54 6f 6e plucky = new Ton
a03f0 65 2e 50 6c 75 63 6b 53 79 6e 74 68 28 29 2e 74 e.PluckSynth().t
a0400 6f 4d 61 73 74 65 72 28 29 3b 0a 09 09 20 2a 20 oMaster();... *
a0410 70 6c 75 63 6b 79 2e 74 72 69 67 67 65 72 41 74 plucky.triggerAt
a0420 74 61 63 6b 28 22 43 34 22 29 3b 0a 09 09 20 2a tack("C4");... *
a0430 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 6c 75 63 /.. Tone.Pluc
a0440 6b 53 79 6e 74 68 20 3d 20 66 75 6e 63 74 69 6f kSynth = functio
a0450 6e 20 28 6f 70 74 69 6f 6e 73 29 20 7b 0a 09 20 n (options) {..
a0460 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 20 3d options =
a0470 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 67 this.defaultArg
a0480 28 6f 70 74 69 6f 6e 73 2c 20 54 6f 6e 65 2e 50 (options, Tone.P
a0490 6c 75 63 6b 53 79 6e 74 68 2e 64 65 66 61 75 6c luckSynth.defaul
a04a0 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 54 6f ts);.. To
a04b0 6e 65 2e 49 6e 73 74 72 75 6d 65 6e 74 2e 63 61 ne.Instrument.ca
a04c0 6c 6c 28 74 68 69 73 2c 20 6f 70 74 69 6f 6e 73 ll(this, options
a04d0 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a );.. /**.
a04e0 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 54 6f ... * @type {To
a04f0 6e 65 2e 4e 6f 69 73 65 7d 0a 09 09 09 20 2a 20 ne.Noise}.... *
a0500 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
a0510 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
a0520 6e 6f 69 73 65 20 3d 20 6e 65 77 20 54 6f 6e 65 noise = new Tone
a0530 2e 4e 6f 69 73 65 28 27 70 69 6e 6b 27 29 3b 0a .Noise('pink');.
a0540 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
a0550 20 2a 20 20 54 68 65 20 61 6d 6f 75 6e 74 20 6f * The amount o
a0560 66 20 6e 6f 69 73 65 20 61 74 20 74 68 65 20 61 f noise at the a
a0570 74 74 61 63 6b 2e 20 0a 09 09 09 20 2a 20 20 4e ttack. .... * N
a0580 6f 6d 69 6e 61 6c 20 72 61 6e 67 65 20 6f 66 20 ominal range of
a0590 5b 30 2e 31 2c 20 32 30 5d 0a 09 09 09 20 2a 20 [0.1, 20].... *
a05a0 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 7d 0a @type {number}.
a05b0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
a05c0 74 68 69 73 2e 61 74 74 61 63 6b 4e 6f 69 73 65 this.attackNoise
a05d0 20 3d 20 6f 70 74 69 6f 6e 73 2e 61 74 74 61 63 = options.attac
a05e0 6b 4e 6f 69 73 65 3b 0a 09 20 20 20 20 20 20 20 kNoise;..
a05f0 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 /**.... * the
a0600 4c 46 43 46 0a 09 09 09 20 2a 20 20 40 74 79 70 LFCF.... * @typ
a0610 65 20 7b 54 6f 6e 65 2e 4c 6f 77 70 61 73 73 43 e {Tone.LowpassC
a0620 6f 6d 62 46 69 6c 74 65 72 7d 0a 09 09 09 20 2a ombFilter}.... *
a0630 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
a0640 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
a0650 5f 6c 66 63 66 20 3d 20 6e 65 77 20 54 6f 6e 65 _lfcf = new Tone
a0660 2e 4c 6f 77 70 61 73 73 43 6f 6d 62 46 69 6c 74 .LowpassCombFilt
a0670 65 72 28 7b 0a 09 20 20 20 20 20 20 20 20 20 20 er({..
a0680 20 20 27 72 65 73 6f 6e 61 6e 63 65 27 3a 20 6f 'resonance': o
a0690 70 74 69 6f 6e 73 2e 72 65 73 6f 6e 61 6e 63 65 ptions.resonance
a06a0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
a06b0 64 61 6d 70 65 6e 69 6e 67 27 3a 20 6f 70 74 69 dampening': opti
a06c0 6f 6e 73 2e 64 61 6d 70 65 6e 69 6e 67 0a 09 20 ons.dampening..
a06d0 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 });..
a06e0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
a06f0 68 65 20 72 65 73 6f 6e 61 6e 63 65 20 63 6f 6e he resonance con
a0700 74 72 6f 6c 2e 20 0a 09 09 09 20 2a 20 20 40 74 trol. .... * @t
a0710 79 70 65 20 7b 4e 6f 72 6d 61 6c 52 61 6e 67 65 ype {NormalRange
a0720 7d 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c }.... * @signal
a0730 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
a0740 20 74 68 69 73 2e 72 65 73 6f 6e 61 6e 63 65 20 this.resonance
a0750 3d 20 74 68 69 73 2e 5f 6c 66 63 66 2e 72 65 73 = this._lfcf.res
a0760 6f 6e 61 6e 63 65 3b 0a 09 20 20 20 20 20 20 20 onance;..
a0770 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 /**.... * The
a0780 64 61 6d 70 65 6e 69 6e 67 20 63 6f 6e 74 72 6f dampening contro
a0790 6c 2e 20 69 2e 65 2e 20 74 68 65 20 6c 6f 77 70 l. i.e. the lowp
a07a0 61 73 73 20 66 69 6c 74 65 72 20 66 72 65 71 75 ass filter frequ
a07b0 65 6e 63 79 20 6f 66 20 74 68 65 20 63 6f 6d 62 ency of the comb
a07c0 20 66 69 6c 74 65 72 0a 09 09 09 20 2a 20 20 40 filter.... * @
a07d0 74 79 70 65 20 7b 46 72 65 71 75 65 6e 63 79 7d type {Frequency}
a07e0 0a 09 09 09 20 2a 20 20 40 73 69 67 6e 61 6c 0a .... * @signal.
a07f0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
a0800 74 68 69 73 2e 64 61 6d 70 65 6e 69 6e 67 20 3d this.dampening =
a0810 20 74 68 69 73 2e 5f 6c 66 63 66 2e 64 61 6d 70 this._lfcf.damp
a0820 65 6e 69 6e 67 3b 0a 09 20 20 20 20 20 20 20 20 ening;..
a0830 2f 2f 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 09 20 //connections..
a0840 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6e 6f 69 this._noi
a0850 73 65 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e se.connect(this.
a0860 5f 6c 66 63 66 29 3b 0a 09 20 20 20 20 20 20 20 _lfcf);..
a0870 20 74 68 69 73 2e 5f 6c 66 63 66 2e 63 6f 6e 6e this._lfcf.conn
a0880 65 63 74 28 74 68 69 73 2e 6f 75 74 70 75 74 29 ect(this.output)
a0890 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
a08a0 5f 72 65 61 64 4f 6e 6c 79 28 5b 0a 09 20 20 20 _readOnly([..
a08b0 20 20 20 20 20 20 20 20 20 27 72 65 73 6f 6e 61 'resona
a08c0 6e 63 65 27 2c 0a 09 20 20 20 20 20 20 20 20 20 nce',..
a08d0 20 20 20 27 64 61 6d 70 65 6e 69 6e 67 27 0a 09 'dampening'..
a08e0 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 ]);..
a08f0 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 };.. Tone.ex
a0900 74 65 6e 64 28 54 6f 6e 65 2e 50 6c 75 63 6b 53 tend(Tone.PluckS
a0910 79 6e 74 68 2c 20 54 6f 6e 65 2e 49 6e 73 74 72 ynth, Tone.Instr
a0920 75 6d 65 6e 74 29 3b 0a 09 20 20 20 20 2f 2a 2a ument);.. /**
a0930 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 ... * @static..
a0940 09 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a . * @const... *
a0950 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d @type {Object}
a0960 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
a0970 2e 50 6c 75 63 6b 53 79 6e 74 68 2e 64 65 66 61 .PluckSynth.defa
a0980 75 6c 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 ults = {..
a0990 20 20 27 61 74 74 61 63 6b 4e 6f 69 73 65 27 3a 'attackNoise':
a09a0 20 31 2c 0a 09 20 20 20 20 20 20 20 20 27 64 61 1,.. 'da
a09b0 6d 70 65 6e 69 6e 67 27 3a 20 34 30 30 30 2c 0a mpening': 4000,.
a09c0 09 20 20 20 20 20 20 20 20 27 72 65 73 6f 6e 61 . 'resona
a09d0 6e 63 65 27 3a 20 30 2e 39 0a 09 20 20 20 20 7d nce': 0.9.. }
a09e0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
a09f0 20 54 72 69 67 67 65 72 20 74 68 65 20 6e 6f 74 Trigger the not
a0a00 65 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d e. ... * @param
a0a10 20 7b 46 72 65 71 75 65 6e 63 79 7d 20 6e 6f 74 {Frequency} not
a0a20 65 20 54 68 65 20 6e 6f 74 65 20 74 6f 20 74 72 e The note to tr
a0a30 69 67 67 65 72 2e 0a 09 09 20 2a 20 20 40 70 61 igger.... * @pa
a0a40 72 61 6d 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 ram {Time} [time
a0a50 3d 6e 6f 77 5d 20 57 68 65 6e 20 74 68 65 20 6e =now] When the n
a0a60 6f 74 65 20 73 68 6f 75 6c 64 20 62 65 20 74 72 ote should be tr
a0a70 69 67 67 65 72 65 64 2e 0a 09 09 20 2a 20 20 40 iggered.... * @
a0a80 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 50 6c returns {Tone.Pl
a0a90 75 63 6b 53 79 6e 74 68 7d 20 74 68 69 73 0a 09 uckSynth} this..
a0aa0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 . */.. Tone.P
a0ab0 6c 75 63 6b 53 79 6e 74 68 2e 70 72 6f 74 6f 74 luckSynth.protot
a0ac0 79 70 65 2e 74 72 69 67 67 65 72 41 74 74 61 63 ype.triggerAttac
a0ad0 6b 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6e 6f k = function (no
a0ae0 74 65 2c 20 74 69 6d 65 29 20 7b 0a 09 20 20 20 te, time) {..
a0af0 20 20 20 20 20 6e 6f 74 65 20 3d 20 74 68 69 73 note = this
a0b00 2e 74 6f 46 72 65 71 75 65 6e 63 79 28 6e 6f 74 .toFrequency(not
a0b10 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 69 6d e);.. tim
a0b20 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e e = this.toSecon
a0b30 64 73 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 ds(time);..
a0b40 20 20 20 76 61 72 20 64 65 6c 61 79 41 6d 6f 75 var delayAmou
a0b50 6e 74 20 3d 20 31 20 2f 20 6e 6f 74 65 3b 0a 09 nt = 1 / note;..
a0b60 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 66 this._lf
a0b70 63 66 2e 64 65 6c 61 79 54 69 6d 65 2e 73 65 74 cf.delayTime.set
a0b80 56 61 6c 75 65 41 74 54 69 6d 65 28 64 65 6c 61 ValueAtTime(dela
a0b90 79 41 6d 6f 75 6e 74 2c 20 74 69 6d 65 29 3b 0a yAmount, time);.
a0ba0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6e . this._n
a0bb0 6f 69 73 65 2e 73 74 61 72 74 28 74 69 6d 65 29 oise.start(time)
a0bc0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
a0bd0 5f 6e 6f 69 73 65 2e 73 74 6f 70 28 74 69 6d 65 _noise.stop(time
a0be0 20 2b 20 64 65 6c 61 79 41 6d 6f 75 6e 74 20 2a + delayAmount *
a0bf0 20 74 68 69 73 2e 61 74 74 61 63 6b 4e 6f 69 73 this.attackNois
a0c00 65 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 e);.. ret
a0c10 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
a0c20 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
a0c30 20 43 6c 65 61 6e 20 75 70 2e 20 0a 09 09 20 2a Clean up. ... *
a0c40 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
a0c50 2e 50 6c 75 63 6b 53 79 6e 74 68 7d 20 74 68 69 .PluckSynth} thi
a0c60 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
a0c70 65 2e 50 6c 75 63 6b 53 79 6e 74 68 2e 70 72 6f e.PluckSynth.pro
a0c80 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d totype.dispose =
a0c90 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
a0ca0 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 49 6e 73 Tone.Ins
a0cb0 74 72 75 6d 65 6e 74 2e 70 72 6f 74 6f 74 79 70 trument.prototyp
a0cc0 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 e.dispose.call(t
a0cd0 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 his);.. t
a0ce0 68 69 73 2e 5f 6e 6f 69 73 65 2e 64 69 73 70 6f his._noise.dispo
a0cf0 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 se();.. t
a0d00 68 69 73 2e 5f 6c 66 63 66 2e 64 69 73 70 6f 73 his._lfcf.dispos
a0d10 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
a0d20 69 73 2e 5f 6e 6f 69 73 65 20 3d 20 6e 75 6c 6c is._noise = null
a0d30 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
a0d40 5f 6c 66 63 66 20 3d 20 6e 75 6c 6c 3b 0a 09 20 _lfcf = null;..
a0d50 20 20 20 20 20 20 20 74 68 69 73 2e 5f 77 72 69 this._wri
a0d60 74 61 62 6c 65 28 5b 0a 09 20 20 20 20 20 20 20 table([..
a0d70 20 20 20 20 20 27 72 65 73 6f 6e 61 6e 63 65 27 'resonance'
a0d80 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 ,.. '
a0d90 64 61 6d 70 65 6e 69 6e 67 27 0a 09 20 20 20 20 dampening'..
a0da0 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 20 20 ]);..
a0db0 20 74 68 69 73 2e 64 61 6d 70 65 6e 69 6e 67 20 this.dampening
a0dc0 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
a0dd0 20 74 68 69 73 2e 72 65 73 6f 6e 61 6e 63 65 20 this.resonance
a0de0 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
a0df0 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
a0e00 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
a0e10 6e 20 54 6f 6e 65 2e 50 6c 75 63 6b 53 79 6e 74 n Tone.PluckSynt
a0e20 68 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 h;..});..Module(
a0e30 66 75 6e 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 function (Tone)
a0e40 7b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a {.. .. /**
a0e50 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 20 54 ... * @class T
a0e60 6f 6e 65 2e 50 6f 6c 79 53 79 6e 74 68 20 68 61 one.PolySynth ha
a0e70 6e 64 6c 65 73 20 76 6f 69 63 65 20 63 72 65 61 ndles voice crea
a0e80 74 69 6f 6e 20 61 6e 64 20 61 6c 6c 6f 63 61 74 tion and allocat
a0e90 69 6f 6e 20 66 6f 72 20 61 6e 79 0a 09 09 20 2a ion for any... *
a0ea0 20 20 20 20 20 20 20 20 20 20 69 6e 73 74 72 75 instru
a0eb0 6d 65 6e 74 73 20 70 61 73 73 65 64 20 69 6e 20 ments passed in
a0ec0 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 70 61 as the second pa
a0ed0 72 61 6d 74 65 72 2e 20 50 6f 6c 79 53 79 6e 74 ramter. PolySynt
a0ee0 68 20 69 73 20 0a 09 09 20 2a 20 20 20 20 20 20 h is ... *
a0ef0 20 20 20 20 6e 6f 74 20 61 20 73 79 6e 74 68 65 not a synthe
a0f00 73 69 7a 65 72 20 62 79 20 69 74 73 65 6c 66 2c sizer by itself,
a0f10 20 69 74 20 6d 65 72 65 6c 79 20 6d 61 6e 61 67 it merely manag
a0f20 65 73 20 76 6f 69 63 65 73 20 6f 66 20 0a 09 09 es voices of ...
a0f30 20 2a 20 20 20 20 20 20 20 20 20 20 6f 6e 65 20 * one
a0f40 6f 66 20 74 68 65 20 6f 74 68 65 72 20 74 79 70 of the other typ
a0f50 65 73 20 6f 66 20 73 79 6e 74 68 73 2c 20 61 6c es of synths, al
a0f60 6c 6f 77 69 6e 67 20 61 6e 79 20 6f 66 20 74 68 lowing any of th
a0f70 65 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 e ... *
a0f80 20 6d 6f 6e 6f 70 68 6f 6e 69 63 20 73 79 6e 74 monophonic synt
a0f90 68 65 73 69 7a 65 72 73 20 74 6f 20 62 65 20 70 hesizers to be p
a0fa0 6f 6c 79 70 68 6f 6e 69 63 2e 20 0a 09 09 20 2a olyphonic. ... *
a0fb0 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 ... * @construc
a0fc0 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 74 65 6e tor... * @exten
a0fd0 64 73 20 7b 54 6f 6e 65 2e 49 6e 73 74 72 75 6d ds {Tone.Instrum
a0fe0 65 6e 74 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 ent}... * @para
a0ff0 6d 20 7b 6e 75 6d 62 65 72 7c 4f 62 6a 65 63 74 m {number|Object
a1000 7d 20 5b 70 6f 6c 79 70 68 6f 6e 79 3d 34 5d 20 } [polyphony=4]
a1010 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 6f The number of vo
a1020 69 63 65 73 20 74 6f 20 63 72 65 61 74 65 0a 09 ices to create..
a1030 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 66 75 6e . * @param {fun
a1040 63 74 69 6f 6e 7d 20 5b 76 6f 69 63 65 3d 54 6f ction} [voice=To
a1050 6e 65 2e 53 79 6e 74 68 5d 20 54 68 65 20 63 6f ne.Synth] The co
a1060 6e 73 74 72 75 63 74 6f 72 20 6f 66 20 74 68 65 nstructor of the
a1070 20 76 6f 69 63 65 73 0a 09 09 20 2a 20 20 20 20 voices... *
a1080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a1090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a10a0 20 20 20 20 20 20 20 20 75 73 65 73 20 54 6f 6e uses Ton
a10b0 65 2e 53 79 6e 74 68 20 62 79 20 64 65 66 61 75 e.Synth by defau
a10c0 6c 74 2e 20 0a 09 09 20 2a 20 20 40 65 78 61 6d lt. ... * @exam
a10d0 70 6c 65 0a 09 09 20 2a 20 2f 2f 61 20 70 6f 6c ple... * //a pol
a10e0 79 73 79 6e 74 68 20 63 6f 6d 70 6f 73 65 64 20 ysynth composed
a10f0 6f 66 20 36 20 56 6f 69 63 65 73 20 6f 66 20 53 of 6 Voices of S
a1100 79 6e 74 68 0a 09 09 20 2a 20 76 61 72 20 73 79 ynth... * var sy
a1110 6e 74 68 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 50 nth = new Tone.P
a1120 6f 6c 79 53 79 6e 74 68 28 36 2c 20 54 6f 6e 65 olySynth(6, Tone
a1130 2e 53 79 6e 74 68 29 2e 74 6f 4d 61 73 74 65 72 .Synth).toMaster
a1140 28 29 3b 0a 09 09 20 2a 20 2f 2f 73 65 74 20 74 ();... * //set t
a1150 68 65 20 61 74 74 72 69 62 75 74 65 73 20 75 73 he attributes us
a1160 69 6e 67 20 74 68 65 20 73 65 74 20 69 6e 74 65 ing the set inte
a1170 72 66 61 63 65 0a 09 09 20 2a 20 73 79 6e 74 68 rface... * synth
a1180 2e 73 65 74 28 22 64 65 74 75 6e 65 22 2c 20 2d .set("detune", -
a1190 31 32 30 30 29 3b 0a 09 09 20 2a 20 2f 2f 70 6c 1200);... * //pl
a11a0 61 79 20 61 20 63 68 6f 72 64 0a 09 09 20 2a 20 ay a chord... *
a11b0 73 79 6e 74 68 2e 74 72 69 67 67 65 72 41 74 74 synth.triggerAtt
a11c0 61 63 6b 52 65 6c 65 61 73 65 28 5b 22 43 34 22 ackRelease(["C4"
a11d0 2c 20 22 45 34 22 2c 20 22 41 34 22 5d 2c 20 22 , "E4", "A4"], "
a11e0 34 6e 22 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 4n");... */..
a11f0 20 54 6f 6e 65 2e 50 6f 6c 79 53 79 6e 74 68 20 Tone.PolySynth
a1200 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
a1210 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 49 6e . Tone.In
a1220 73 74 72 75 6d 65 6e 74 2e 63 61 6c 6c 28 74 68 strument.call(th
a1230 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 76 61 is);.. va
a1240 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 r options = this
a1250 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 .optionsObject(a
a1260 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 rguments, [..
a1270 20 20 20 20 20 20 20 20 20 27 70 6f 6c 79 70 68 'polyph
a1280 6f 6e 79 27 2c 0a 09 20 20 20 20 20 20 20 20 20 ony',..
a1290 20 20 20 27 76 6f 69 63 65 27 0a 09 20 20 20 20 'voice'..
a12a0 20 20 20 20 5d 2c 20 54 6f 6e 65 2e 50 6f 6c 79 ], Tone.Poly
a12b0 53 79 6e 74 68 2e 64 65 66 61 75 6c 74 73 29 3b Synth.defaults);
a12c0 0a 09 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e .. option
a12d0 73 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 s = this.default
a12e0 41 72 67 28 6f 70 74 69 6f 6e 73 2c 20 54 6f 6e Arg(options, Ton
a12f0 65 2e 49 6e 73 74 72 75 6d 65 6e 74 2e 64 65 66 e.Instrument.def
a1300 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 aults);..
a1310 20 2f 2f 6d 61 78 20 70 6f 6c 79 70 68 6f 6e 79 //max polyphony
a1320 0a 09 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e .. option
a1330 73 2e 70 6f 6c 79 70 68 6f 6e 79 20 3d 20 4d 61 s.polyphony = Ma
a1340 74 68 2e 6d 69 6e 28 54 6f 6e 65 2e 50 6f 6c 79 th.min(Tone.Poly
a1350 53 79 6e 74 68 2e 4d 41 58 5f 50 4f 4c 59 50 48 Synth.MAX_POLYPH
a1360 4f 4e 59 2c 20 6f 70 74 69 6f 6e 73 2e 70 6f 6c ONY, options.pol
a1370 79 70 68 6f 6e 79 29 3b 0a 09 20 20 20 20 20 20 yphony);..
a1380 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 /**.... * the
a1390 20 61 72 72 61 79 20 6f 66 20 76 6f 69 63 65 73 array of voices
a13a0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 41 .... * @type {A
a13b0 72 72 61 79 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 rray}.... */..
a13c0 20 20 20 20 20 20 74 68 69 73 2e 76 6f 69 63 65 this.voice
a13d0 73 20 3d 20 6e 65 77 20 41 72 72 61 79 28 6f 70 s = new Array(op
a13e0 74 69 6f 6e 73 2e 70 6f 6c 79 70 68 6f 6e 79 29 tions.polyphony)
a13f0 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
a1400 09 09 20 2a 20 20 54 68 65 20 71 75 65 75 65 20 .. * The queue
a1410 6f 66 20 76 6f 69 63 65 73 20 77 69 74 68 20 64 of voices with d
a1420 61 74 61 20 61 62 6f 75 74 20 6c 61 73 74 20 74 ata about last t
a1430 72 69 67 67 65 72 0a 09 09 09 20 2a 20 20 61 6e rigger.... * an
a1440 64 20 74 68 65 20 74 72 69 67 67 65 72 65 64 20 d the triggered
a1450 6e 6f 74 65 0a 09 09 09 20 2a 20 20 40 70 72 69 note.... * @pri
a1460 76 61 74 65 0a 09 09 09 20 2a 20 20 40 74 79 70 vate.... * @typ
a1470 65 20 7b 41 72 72 61 79 7d 0a 09 09 09 20 2a 2f e {Array}.... */
a1480 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
a1490 74 72 69 67 67 65 72 73 20 3d 20 6e 65 77 20 41 triggers = new A
a14a0 72 72 61 79 28 6f 70 74 69 6f 6e 73 2e 70 6f 6c rray(options.pol
a14b0 79 70 68 6f 6e 79 29 3b 0a 09 20 20 20 20 20 20 yphony);..
a14c0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
a14d0 20 64 65 74 75 6e 65 20 69 6e 20 63 65 6e 74 73 detune in cents
a14e0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 43 .... * @type {C
a14f0 65 6e 74 73 7d 0a 09 09 09 20 2a 20 20 40 73 69 ents}.... * @si
a1500 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a 09 20 20 20 gnal.... */..
a1510 20 20 20 20 20 74 68 69 73 2e 64 65 74 75 6e 65 this.detune
a1520 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 53 69 67 6e = new Tone.Sign
a1530 61 6c 28 6f 70 74 69 6f 6e 73 2e 64 65 74 75 6e al(options.detun
a1540 65 2c 20 54 6f 6e 65 2e 54 79 70 65 2e 43 65 6e e, Tone.Type.Cen
a1550 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ts);.. th
a1560 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 27 64 65 is._readOnly('de
a1570 74 75 6e 65 27 29 3b 0a 09 20 20 20 20 20 20 20 tune');..
a1580 20 2f 2f 63 72 65 61 74 65 20 74 68 65 20 76 6f //create the vo
a1590 69 63 65 73 0a 09 20 20 20 20 20 20 20 20 66 6f ices.. fo
a15a0 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 r (var i = 0; i
a15b0 3c 20 6f 70 74 69 6f 6e 73 2e 70 6f 6c 79 70 68 < options.polyph
a15c0 6f 6e 79 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 ony; i++) {..
a15d0 20 20 20 20 20 20 20 20 20 76 61 72 20 76 20 3d var v =
a15e0 20 6e 65 77 20 6f 70 74 69 6f 6e 73 2e 76 6f 69 new options.voi
a15f0 63 65 28 61 72 67 75 6d 65 6e 74 73 5b 32 5d 2c ce(arguments[2],
a1600 20 61 72 67 75 6d 65 6e 74 73 5b 33 5d 29 3b 0a arguments[3]);.
a1610 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
a1620 73 2e 76 6f 69 63 65 73 5b 69 5d 20 3d 20 76 3b s.voices[i] = v;
a1630 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 2e .. v.
a1640 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 6f 75 74 connect(this.out
a1650 70 75 74 29 3b 0a 09 20 20 20 20 20 20 20 20 20 put);..
a1660 20 20 20 69 66 20 28 76 2e 68 61 73 4f 77 6e 50 if (v.hasOwnP
a1670 72 6f 70 65 72 74 79 28 27 64 65 74 75 6e 65 27 roperty('detune'
a1680 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 )) {..
a1690 20 20 20 20 20 20 74 68 69 73 2e 64 65 74 75 6e this.detun
a16a0 65 2e 63 6f 6e 6e 65 63 74 28 76 2e 64 65 74 75 e.connect(v.detu
a16b0 6e 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ne);..
a16c0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
a16d0 20 74 68 69 73 2e 5f 74 72 69 67 67 65 72 73 5b this._triggers[
a16e0 69 5d 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 i] = {..
a16f0 20 20 20 20 20 20 20 20 72 65 6c 65 61 73 65 3a release:
a1700 20 2d 31 2c 0a 09 20 20 20 20 20 20 20 20 20 20 -1,..
a1710 20 20 20 20 20 20 6e 6f 74 65 3a 20 6e 75 6c 6c note: null
a1720 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
a1730 20 20 20 76 6f 69 63 65 3a 20 76 0a 09 20 20 20 voice: v..
a1740 20 20 20 20 20 20 20 20 20 7d 3b 0a 09 20 20 20 };..
a1750 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
a1760 2f 2f 73 65 74 20 74 68 65 20 76 6f 6c 75 6d 65 //set the volume
a1770 20 69 6e 69 74 69 61 6c 6c 79 0a 09 20 20 20 20 initially..
a1780 20 20 20 20 74 68 69 73 2e 76 6f 6c 75 6d 65 2e this.volume.
a1790 76 61 6c 75 65 20 3d 20 6f 70 74 69 6f 6e 73 2e value = options.
a17a0 76 6f 6c 75 6d 65 3b 0a 09 20 20 20 20 7d 3b 0a volume;.. };.
a17b0 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 . Tone.extend
a17c0 28 54 6f 6e 65 2e 50 6f 6c 79 53 79 6e 74 68 2c (Tone.PolySynth,
a17d0 20 54 6f 6e 65 2e 49 6e 73 74 72 75 6d 65 6e 74 Tone.Instrument
a17e0 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
a17f0 20 20 74 68 65 20 64 65 66 61 75 6c 74 73 0a 09 the defaults..
a1800 09 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 20 2a . * @const... *
a1810 20 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 @static... *
a1820 40 74 79 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 @type {Object}..
a1830 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 . */.. Tone.P
a1840 6f 6c 79 53 79 6e 74 68 2e 64 65 66 61 75 6c 74 olySynth.default
a1850 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 27 s = {.. '
a1860 70 6f 6c 79 70 68 6f 6e 79 27 3a 20 34 2c 0a 09 polyphony': 4,..
a1870 20 20 20 20 20 20 20 20 27 76 6f 6c 75 6d 65 27 'volume'
a1880 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 64 : 0,.. 'd
a1890 65 74 75 6e 65 27 3a 20 30 2c 0a 09 20 20 20 20 etune': 0,..
a18a0 20 20 20 20 27 76 6f 69 63 65 27 3a 20 54 6f 6e 'voice': Ton
a18b0 65 2e 53 79 6e 74 68 0a 09 20 20 20 20 7d 3b 0a e.Synth.. };.
a18c0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 . /**... * T
a18d0 72 69 67 67 65 72 20 74 68 65 20 61 74 74 61 63 rigger the attac
a18e0 6b 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 k portion of the
a18f0 20 6e 6f 74 65 0a 09 09 20 2a 20 20 40 70 61 72 note... * @par
a1900 61 6d 20 20 7b 46 72 65 71 75 65 6e 63 79 7c 41 am {Frequency|A
a1910 72 72 61 79 7d 20 6e 6f 74 65 73 20 54 68 65 20 rray} notes The
a1920 6e 6f 74 65 73 20 74 6f 20 70 6c 61 79 2e 20 41 notes to play. A
a1930 63 63 65 70 74 73 20 61 20 73 69 6e 67 6c 65 0a ccepts a single.
a1940 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 .. *
a1950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a1960 20 20 20 20 20 20 46 72 65 71 75 65 6e 63 79 20 Frequency
a1970 6f 72 20 61 6e 20 61 72 72 61 79 20 6f 66 20 66 or an array of f
a1980 72 65 71 75 65 6e 63 69 65 73 2e 0a 09 09 20 2a requencies.... *
a1990 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d @param {Time}
a19a0 20 5b 74 69 6d 65 3d 6e 6f 77 5d 20 20 54 68 65 [time=now] The
a19b0 20 73 74 61 72 74 20 74 69 6d 65 20 6f 66 20 74 start time of t
a19c0 68 65 20 6e 6f 74 65 2e 0a 09 09 20 2a 20 20 40 he note.... * @
a19d0 70 61 72 61 6d 20 7b 6e 75 6d 62 65 72 7d 20 5b param {number} [
a19e0 76 65 6c 6f 63 69 74 79 3d 31 5d 20 54 68 65 20 velocity=1] The
a19f0 76 65 6c 6f 63 69 74 79 20 6f 66 20 74 68 65 20 velocity of the
a1a00 6e 6f 74 65 2e 0a 09 09 20 2a 20 20 40 72 65 74 note.... * @ret
a1a10 75 72 6e 73 20 7b 54 6f 6e 65 2e 50 6f 6c 79 53 urns {Tone.PolyS
a1a20 79 6e 74 68 7d 20 74 68 69 73 0a 09 09 20 2a 20 ynth} this... *
a1a30 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f @example... * /
a1a40 2f 74 72 69 67 67 65 72 20 61 20 63 68 6f 72 64 /trigger a chord
a1a50 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 77 69 74 immediately wit
a1a60 68 20 61 20 76 65 6c 6f 63 69 74 79 20 6f 66 20 h a velocity of
a1a70 30 2e 32 0a 09 09 20 2a 20 70 6f 6c 79 2e 74 72 0.2... * poly.tr
a1a80 69 67 67 65 72 41 74 74 61 63 6b 28 5b 22 41 62 iggerAttack(["Ab
a1a90 33 22 2c 20 22 43 34 22 2c 20 22 46 35 22 5d 2c 3", "C4", "F5"],
a1aa0 20 75 6e 64 65 66 69 6e 65 64 2c 20 30 2e 32 29 undefined, 0.2)
a1ab0 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e ;... */.. Ton
a1ac0 65 2e 50 6f 6c 79 53 79 6e 74 68 2e 70 72 6f 74 e.PolySynth.prot
a1ad0 6f 74 79 70 65 2e 74 72 69 67 67 65 72 41 74 74 otype.triggerAtt
a1ae0 61 63 6b 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ack = function (
a1af0 6e 6f 74 65 73 2c 20 74 69 6d 65 2c 20 76 65 6c notes, time, vel
a1b00 6f 63 69 74 79 29 20 7b 0a 09 20 20 20 20 20 20 ocity) {..
a1b10 20 20 69 66 20 28 21 41 72 72 61 79 2e 69 73 41 if (!Array.isA
a1b20 72 72 61 79 28 6e 6f 74 65 73 29 29 20 7b 0a 09 rray(notes)) {..
a1b30 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 74 65 note
a1b40 73 20 3d 20 5b 6e 6f 74 65 73 5d 3b 0a 09 20 20 s = [notes];..
a1b50 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
a1b60 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 time = this.toS
a1b70 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 econds(time);..
a1b80 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 for (var
a1b90 69 20 3d 20 30 3b 20 69 20 3c 20 6e 6f 74 65 73 i = 0; i < notes
a1ba0 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a .length; i++) {.
a1bb0 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
a1bc0 20 76 61 6c 20 3d 20 6e 6f 74 65 73 5b 69 5d 3b val = notes[i];
a1bd0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f .. //
a1be0 74 72 69 67 67 65 72 20 74 68 65 20 6f 6c 64 65 trigger the olde
a1bf0 73 74 20 76 6f 69 63 65 0a 09 20 20 20 20 20 20 st voice..
a1c00 20 20 20 20 20 20 76 61 72 20 6f 6c 64 65 73 74 var oldest
a1c10 20 3d 20 74 68 69 73 2e 5f 74 72 69 67 67 65 72 = this._trigger
a1c20 73 5b 30 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 s[0];..
a1c30 20 20 20 76 61 72 20 6f 6c 64 65 73 74 49 6e 64 var oldestInd
a1c40 65 78 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 ex = 0;..
a1c50 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 6a 20 for (var j
a1c60 3d 20 31 3b 20 6a 20 3c 20 74 68 69 73 2e 5f 74 = 1; j < this._t
a1c70 72 69 67 67 65 72 73 2e 6c 65 6e 67 74 68 3b 20 riggers.length;
a1c80 6a 2b 2b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 j++) {..
a1c90 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
a1ca0 2e 5f 74 72 69 67 67 65 72 73 5b 6a 5d 2e 72 65 ._triggers[j].re
a1cb0 6c 65 61 73 65 20 3c 20 6f 6c 64 65 73 74 2e 72 lease < oldest.r
a1cc0 65 6c 65 61 73 65 29 20 7b 0a 09 20 20 20 20 20 elease) {..
a1cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f o
a1ce0 6c 64 65 73 74 20 3d 20 74 68 69 73 2e 5f 74 72 ldest = this._tr
a1cf0 69 67 67 65 72 73 5b 6a 5d 3b 0a 09 20 20 20 20 iggers[j];..
a1d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a1d10 6f 6c 64 65 73 74 49 6e 64 65 78 20 3d 20 6a 3b oldestIndex = j;
a1d20 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
a1d30 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 }..
a1d40 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
a1d50 6f 6c 64 65 73 74 2e 72 65 6c 65 61 73 65 20 3d oldest.release =
a1d60 20 49 6e 66 69 6e 69 74 79 3b 0a 09 20 20 20 20 Infinity;..
a1d70 20 20 20 20 20 20 20 20 6f 6c 64 65 73 74 2e 6e oldest.n
a1d80 6f 74 65 20 3d 20 4a 53 4f 4e 2e 73 74 72 69 6e ote = JSON.strin
a1d90 67 69 66 79 28 76 61 6c 29 3b 0a 09 20 20 20 20 gify(val);..
a1da0 20 20 20 20 20 20 20 20 6f 6c 64 65 73 74 2e 76 oldest.v
a1db0 6f 69 63 65 2e 74 72 69 67 67 65 72 41 74 74 61 oice.triggerAtta
a1dc0 63 6b 28 76 61 6c 2c 20 74 69 6d 65 2c 20 76 65 ck(val, time, ve
a1dd0 6c 6f 63 69 74 79 29 3b 0a 09 20 20 20 20 20 20 locity);..
a1de0 20 20 7d 0a 09 20 20 20 20 20 20 20 20 72 65 74 }.. ret
a1df0 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
a1e00 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
a1e10 20 54 72 69 67 67 65 72 20 74 68 65 20 61 74 74 Trigger the att
a1e20 61 63 6b 20 61 6e 64 20 72 65 6c 65 61 73 65 20 ack and release
a1e30 61 66 74 65 72 20 74 68 65 20 73 70 65 63 69 66 after the specif
a1e40 69 65 64 20 64 75 72 61 74 69 6f 6e 0a 09 09 20 ied duration...
a1e50 2a 20 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d * ... * @param
a1e60 20 20 7b 46 72 65 71 75 65 6e 63 79 7c 41 72 72 {Frequency|Arr
a1e70 61 79 7d 20 6e 6f 74 65 73 20 54 68 65 20 6e 6f ay} notes The no
a1e80 74 65 73 20 74 6f 20 70 6c 61 79 2e 20 41 63 63 tes to play. Acc
a1e90 65 70 74 73 20 61 20 73 69 6e 67 6c 65 0a 09 09 epts a single...
a1ea0 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
a1eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a1ec0 20 20 20 20 46 72 65 71 75 65 6e 63 79 20 6f 72 Frequency or
a1ed0 20 61 6e 20 61 72 72 61 79 20 6f 66 20 66 72 65 an array of fre
a1ee0 71 75 65 6e 63 69 65 73 2e 0a 09 09 20 2a 20 20 quencies.... *
a1ef0 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 64 @param {Time} d
a1f00 75 72 61 74 69 6f 6e 20 74 68 65 20 64 75 72 61 uration the dura
a1f10 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 6f 74 65 tion of the note
a1f20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
a1f30 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f 77 5d Time} [time=now]
a1f40 20 20 20 20 20 69 66 20 6e 6f 20 74 69 6d 65 20 if no time
a1f50 69 73 20 67 69 76 65 6e 2c 20 64 65 66 61 75 6c is given, defaul
a1f60 74 73 20 74 6f 20 6e 6f 77 0a 09 09 20 2a 20 20 ts to now... *
a1f70 40 70 61 72 61 6d 20 20 7b 6e 75 6d 62 65 72 7d @param {number}
a1f80 20 5b 76 65 6c 6f 63 69 74 79 3d 31 5d 20 74 68 [velocity=1] th
a1f90 65 20 76 65 6c 6f 63 69 74 79 20 6f 66 20 74 68 e velocity of th
a1fa0 65 20 61 74 74 61 63 6b 20 28 30 2d 31 29 0a 09 e attack (0-1)..
a1fb0 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 . * @returns {T
a1fc0 6f 6e 65 2e 50 6f 6c 79 53 79 6e 74 68 7d 20 74 one.PolySynth} t
a1fd0 68 69 73 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 his... * @examp
a1fe0 6c 65 0a 09 09 20 2a 20 2f 2f 74 72 69 67 67 65 le... * //trigge
a1ff0 72 20 61 20 63 68 6f 72 64 20 66 6f 72 20 61 20 r a chord for a
a2000 64 75 72 61 74 69 6f 6e 20 6f 66 20 61 20 68 61 duration of a ha
a2010 6c 66 20 6e 6f 74 65 20 0a 09 09 20 2a 20 70 6f lf note ... * po
a2020 6c 79 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b ly.triggerAttack
a2030 52 65 6c 65 61 73 65 28 5b 22 45 62 33 22 2c 20 Release(["Eb3",
a2040 22 47 34 22 2c 20 22 43 35 22 5d 2c 20 22 32 6e "G4", "C5"], "2n
a2050 22 29 3b 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 ");... * @examp
a2060 6c 65 0a 09 09 20 2a 20 2f 2f 63 61 6e 20 70 61 le... * //can pa
a2070 73 73 20 69 6e 20 61 6e 20 61 72 72 61 79 20 6f ss in an array o
a2080 66 20 64 75 72 61 74 69 6f 6e 73 20 61 73 20 77 f durations as w
a2090 65 6c 6c 0a 09 09 20 2a 20 70 6f 6c 79 2e 74 72 ell... * poly.tr
a20a0 69 67 67 65 72 41 74 74 61 63 6b 52 65 6c 65 61 iggerAttackRelea
a20b0 73 65 28 5b 22 45 62 33 22 2c 20 22 47 34 22 2c se(["Eb3", "G4",
a20c0 20 22 43 35 22 5d 2c 20 5b 22 32 6e 22 2c 20 22 "C5"], ["2n", "
a20d0 34 6e 22 2c 20 22 34 6e 22 5d 29 3b 0a 09 09 20 4n", "4n"]);...
a20e0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 6f 6c */.. Tone.Pol
a20f0 79 53 79 6e 74 68 2e 70 72 6f 74 6f 74 79 70 65 ySynth.prototype
a2100 2e 74 72 69 67 67 65 72 41 74 74 61 63 6b 52 65 .triggerAttackRe
a2110 6c 65 61 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e lease = function
a2120 20 28 6e 6f 74 65 73 2c 20 64 75 72 61 74 69 6f (notes, duratio
a2130 6e 2c 20 74 69 6d 65 2c 20 76 65 6c 6f 63 69 74 n, time, velocit
a2140 79 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 69 y) {.. ti
a2150 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f me = this.toSeco
a2160 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 nds(time);..
a2170 20 20 20 20 74 68 69 73 2e 74 72 69 67 67 65 72 this.trigger
a2180 41 74 74 61 63 6b 28 6e 6f 74 65 73 2c 20 74 69 Attack(notes, ti
a2190 6d 65 2c 20 76 65 6c 6f 63 69 74 79 29 3b 0a 09 me, velocity);..
a21a0 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
a21b0 2e 69 73 41 72 72 61 79 28 64 75 72 61 74 69 6f .isArray(duratio
a21c0 6e 29 20 26 26 20 74 68 69 73 2e 69 73 41 72 72 n) && this.isArr
a21d0 61 79 28 6e 6f 74 65 73 29 29 20 7b 0a 09 20 20 ay(notes)) {..
a21e0 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 for (v
a21f0 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 6e 6f ar i = 0; i < no
a2200 74 65 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 tes.length; i++)
a2210 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
a2220 20 20 20 20 76 61 72 20 64 20 3d 20 64 75 72 61 var d = dura
a2230 74 69 6f 6e 5b 4d 61 74 68 2e 6d 69 6e 28 69 2c tion[Math.min(i,
a2240 20 64 75 72 61 74 69 6f 6e 2e 6c 65 6e 67 74 68 duration.length
a2250 20 2d 20 31 29 5d 3b 0a 09 20 20 20 20 20 20 20 - 1)];..
a2260 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 72 this.tr
a2270 69 67 67 65 72 52 65 6c 65 61 73 65 28 6e 6f 74 iggerRelease(not
a2280 65 73 5b 69 5d 2c 20 74 69 6d 65 20 2b 20 74 68 es[i], time + th
a2290 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 64 29 29 is.toSeconds(d))
a22a0 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
a22b0 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
a22c0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
a22d0 74 68 69 73 2e 74 72 69 67 67 65 72 52 65 6c 65 this.triggerRele
a22e0 61 73 65 28 6e 6f 74 65 73 2c 20 74 69 6d 65 20 ase(notes, time
a22f0 2b 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 + this.toSeconds
a2300 28 64 75 72 61 74 69 6f 6e 29 29 3b 0a 09 20 20 (duration));..
a2310 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
a2320 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
a2330 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
a2340 09 20 2a 20 20 54 72 69 67 67 65 72 20 74 68 65 . * Trigger the
a2350 20 72 65 6c 65 61 73 65 20 6f 66 20 74 68 65 20 release of the
a2360 6e 6f 74 65 2e 20 55 6e 6c 69 6b 65 20 6d 6f 6e note. Unlike mon
a2370 6f 70 68 6f 6e 69 63 20 69 6e 73 74 72 75 6d 65 ophonic instrume
a2380 6e 74 73 2c 20 0a 09 09 20 2a 20 20 61 20 6e 6f nts, ... * a no
a2390 74 65 20 28 6f 72 20 61 72 72 61 79 20 6f 66 20 te (or array of
a23a0 6e 6f 74 65 73 29 20 6e 65 65 64 73 20 74 6f 20 notes) needs to
a23b0 62 65 20 70 61 73 73 65 64 20 69 6e 20 61 73 20 be passed in as
a23c0 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 the first argume
a23d0 6e 74 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d nt.... * @param
a23e0 20 20 7b 46 72 65 71 75 65 6e 63 79 7c 41 72 72 {Frequency|Arr
a23f0 61 79 7d 20 6e 6f 74 65 73 20 54 68 65 20 6e 6f ay} notes The no
a2400 74 65 73 20 74 6f 20 70 6c 61 79 2e 20 41 63 63 tes to play. Acc
a2410 65 70 74 73 20 61 20 73 69 6e 67 6c 65 0a 09 09 epts a single...
a2420 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
a2430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a2440 20 20 20 20 46 72 65 71 75 65 6e 63 79 20 6f 72 Frequency or
a2450 20 61 6e 20 61 72 72 61 79 20 6f 66 20 66 72 65 an array of fre
a2460 71 75 65 6e 63 69 65 73 2e 0a 09 09 20 2a 20 20 quencies.... *
a2470 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 5b @param {Time} [
a2480 74 69 6d 65 3d 6e 6f 77 5d 20 20 57 68 65 6e 20 time=now] When
a2490 74 68 65 20 72 65 6c 65 61 73 65 20 77 69 6c 6c the release will
a24a0 20 62 65 20 74 72 69 67 67 65 72 65 64 2e 20 0a be triggered. .
a24b0 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
a24c0 54 6f 6e 65 2e 50 6f 6c 79 53 79 6e 74 68 7d 20 Tone.PolySynth}
a24d0 74 68 69 73 0a 09 09 20 2a 20 20 40 65 78 61 6d this... * @exam
a24e0 70 6c 65 0a 09 09 20 2a 20 70 6f 6c 79 2e 74 72 ple... * poly.tr
a24f0 69 67 67 65 72 52 65 6c 65 61 73 65 28 5b 22 41 iggerRelease(["A
a2500 62 33 22 2c 20 22 43 34 22 2c 20 22 46 35 22 5d b3", "C4", "F5"]
a2510 2c 20 22 2b 32 6e 22 29 3b 0a 09 09 20 2a 2f 0a , "+2n");... */.
a2520 09 20 20 20 20 54 6f 6e 65 2e 50 6f 6c 79 53 79 . Tone.PolySy
a2530 6e 74 68 2e 70 72 6f 74 6f 74 79 70 65 2e 74 72 nth.prototype.tr
a2540 69 67 67 65 72 52 65 6c 65 61 73 65 20 3d 20 66 iggerRelease = f
a2550 75 6e 63 74 69 6f 6e 20 28 6e 6f 74 65 73 2c 20 unction (notes,
a2560 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 time) {..
a2570 20 69 66 20 28 21 41 72 72 61 79 2e 69 73 41 72 if (!Array.isAr
a2580 72 61 79 28 6e 6f 74 65 73 29 29 20 7b 0a 09 20 ray(notes)) {..
a2590 20 20 20 20 20 20 20 20 20 20 20 6e 6f 74 65 73 notes
a25a0 20 3d 20 5b 6e 6f 74 65 73 5d 3b 0a 09 20 20 20 = [notes];..
a25b0 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
a25c0 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 time = this.toSe
a25d0 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 20 conds(time);..
a25e0 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 for (var i
a25f0 20 3d 20 30 3b 20 69 20 3c 20 6e 6f 74 65 73 2e = 0; i < notes.
a2600 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 length; i++) {..
a2610 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 67 65 //ge
a2620 74 20 74 68 65 20 76 6f 69 63 65 0a 09 20 20 20 t the voice..
a2630 20 20 20 20 20 20 20 20 20 76 61 72 20 73 74 72 var str
a2640 69 6e 67 69 66 69 65 64 20 3d 20 4a 53 4f 4e 2e ingified = JSON.
a2650 73 74 72 69 6e 67 69 66 79 28 6e 6f 74 65 73 5b stringify(notes[
a2660 69 5d 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 i]);..
a2670 20 20 66 6f 72 20 28 76 61 72 20 76 20 3d 20 30 for (var v = 0
a2680 3b 20 76 20 3c 20 74 68 69 73 2e 5f 74 72 69 67 ; v < this._trig
a2690 67 65 72 73 2e 6c 65 6e 67 74 68 3b 20 76 2b 2b gers.length; v++
a26a0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
a26b0 20 20 20 20 20 76 61 72 20 64 65 73 63 20 3d 20 var desc =
a26c0 74 68 69 73 2e 5f 74 72 69 67 67 65 72 73 5b 76 this._triggers[v
a26d0 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ];..
a26e0 20 20 20 20 69 66 20 28 64 65 73 63 2e 6e 6f 74 if (desc.not
a26f0 65 20 3d 3d 3d 20 73 74 72 69 6e 67 69 66 69 65 e === stringifie
a2700 64 20 26 26 20 64 65 73 63 2e 72 65 6c 65 61 73 d && desc.releas
a2710 65 20 3e 20 74 69 6d 65 29 20 7b 0a 09 20 20 20 e > time) {..
a2720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a2730 20 64 65 73 63 2e 76 6f 69 63 65 2e 74 72 69 67 desc.voice.trig
a2740 67 65 72 52 65 6c 65 61 73 65 28 74 69 6d 65 29 gerRelease(time)
a2750 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
a2760 20 20 20 20 20 20 20 64 65 73 63 2e 72 65 6c 65 desc.rele
a2770 61 73 65 20 3d 20 74 69 6d 65 3b 0a 09 20 20 20 ase = time;..
a2780 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 }..
a2790 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
a27a0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
a27b0 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
a27c0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
a27d0 09 09 20 2a 20 20 53 65 74 20 61 20 6d 65 6d 62 .. * Set a memb
a27e0 65 72 2f 61 74 74 72 69 62 75 74 65 20 6f 66 20 er/attribute of
a27f0 74 68 65 20 76 6f 69 63 65 73 2e 20 0a 09 09 20 the voices. ...
a2800 2a 20 20 40 70 61 72 61 6d 20 7b 4f 62 6a 65 63 * @param {Objec
a2810 74 7c 73 74 72 69 6e 67 7d 20 70 61 72 61 6d 73 t|string} params
a2820 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e ... * @param {n
a2830 75 6d 62 65 72 3d 7d 20 76 61 6c 75 65 0a 09 09 umber=} value...
a2840 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 * @param {Time
a2850 3d 7d 20 72 61 6d 70 54 69 6d 65 0a 09 09 20 2a =} rampTime... *
a2860 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 @returns {Tone
a2870 2e 50 6f 6c 79 53 79 6e 74 68 7d 20 74 68 69 73 .PolySynth} this
a2880 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a ... * @example.
a2890 09 09 20 2a 20 70 6f 6c 79 2e 73 65 74 28 7b 0a .. * poly.set({.
a28a0 09 09 20 2a 20 09 22 66 69 6c 74 65 72 22 20 3a .. * ."filter" :
a28b0 20 7b 0a 09 09 20 2a 20 09 09 22 74 79 70 65 22 {... * .."type"
a28c0 20 3a 20 22 68 69 67 68 70 61 73 73 22 0a 09 09 : "highpass"...
a28d0 20 2a 20 09 7d 2c 0a 09 09 20 2a 20 09 22 65 6e * .},... * ."en
a28e0 76 65 6c 6f 70 65 22 20 3a 20 7b 0a 09 09 20 2a velope" : {... *
a28f0 20 09 09 22 61 74 74 61 63 6b 22 20 3a 20 30 2e .."attack" : 0.
a2900 32 35 0a 09 09 20 2a 20 09 7d 0a 09 09 20 2a 20 25... * .}... *
a2910 7d 29 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 });... */.. T
a2920 6f 6e 65 2e 50 6f 6c 79 53 79 6e 74 68 2e 70 72 one.PolySynth.pr
a2930 6f 74 6f 74 79 70 65 2e 73 65 74 20 3d 20 66 75 ototype.set = fu
a2940 6e 63 74 69 6f 6e 20 28 70 61 72 61 6d 73 2c 20 nction (params,
a2950 76 61 6c 75 65 2c 20 72 61 6d 70 54 69 6d 65 29 value, rampTime)
a2960 20 7b 0a 09 20 20 20 20 20 20 20 20 66 6f 72 20 {.. for
a2970 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 (var i = 0; i <
a2980 74 68 69 73 2e 76 6f 69 63 65 73 2e 6c 65 6e 67 this.voices.leng
a2990 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 th; i++) {..
a29a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 6f 69 this.voi
a29b0 63 65 73 5b 69 5d 2e 73 65 74 28 70 61 72 61 6d ces[i].set(param
a29c0 73 2c 20 76 61 6c 75 65 2c 20 72 61 6d 70 54 69 s, value, rampTi
a29d0 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a me);.. }.
a29e0 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
a29f0 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 this;.. };..
a2a00 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 47 65 74 /**... * Get
a2a10 20 74 68 65 20 73 79 6e 74 68 27 73 20 61 74 74 the synth's att
a2a20 72 69 62 75 74 65 73 2e 20 47 69 76 65 6e 20 6e ributes. Given n
a2a30 6f 20 61 72 67 75 6d 65 6e 74 73 20 67 65 74 0a o arguments get.
a2a40 09 09 20 2a 20 20 77 69 6c 6c 20 72 65 74 75 72 .. * will retur
a2a50 6e 20 61 6c 6c 20 61 76 61 69 6c 61 62 6c 65 20 n all available
a2a60 6f 62 6a 65 63 74 20 70 72 6f 70 65 72 74 69 65 object propertie
a2a70 73 20 61 6e 64 20 74 68 65 69 72 20 63 6f 72 72 s and their corr
a2a80 65 73 70 6f 6e 64 69 6e 67 0a 09 09 20 2a 20 20 esponding... *
a2a90 76 61 6c 75 65 73 2e 20 50 61 73 73 20 69 6e 20 values. Pass in
a2aa0 61 20 73 69 6e 67 6c 65 20 61 74 74 72 69 62 75 a single attribu
a2ab0 74 65 20 74 6f 20 72 65 74 72 69 65 76 65 20 6f te to retrieve o
a2ac0 72 20 61 6e 20 61 72 72 61 79 0a 09 09 20 2a 20 r an array... *
a2ad0 20 6f 66 20 61 74 74 72 69 62 75 74 65 73 2e 20 of attributes.
a2ae0 54 68 65 20 61 74 74 72 69 62 75 74 65 20 73 74 The attribute st
a2af0 72 69 6e 67 73 20 63 61 6e 20 61 6c 73 6f 20 69 rings can also i
a2b00 6e 63 6c 75 64 65 20 61 20 22 2e 22 0a 09 09 20 nclude a "."...
a2b10 2a 20 20 74 6f 20 61 63 63 65 73 73 20 64 65 65 * to access dee
a2b20 70 65 72 20 70 72 6f 70 65 72 74 69 65 73 2e 0a per properties..
a2b30 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 41 72 .. * @param {Ar
a2b40 72 61 79 3d 7d 20 70 61 72 61 6d 73 20 74 68 65 ray=} params the
a2b50 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 67 parameters to g
a2b60 65 74 2c 20 6f 74 68 65 72 77 69 73 65 20 77 69 et, otherwise wi
a2b70 6c 6c 20 72 65 74 75 72 6e 20 0a 09 09 20 2a 20 ll return ... *
a2b80 20 09 09 09 09 09 20 20 20 61 6c 6c 20 61 76 61 ..... all ava
a2b90 69 6c 61 62 6c 65 2e 0a 09 09 20 2a 2f 0a 09 20 ilable.... */..
a2ba0 20 20 20 54 6f 6e 65 2e 50 6f 6c 79 53 79 6e 74 Tone.PolySynt
a2bb0 68 2e 70 72 6f 74 6f 74 79 70 65 2e 67 65 74 20 h.prototype.get
a2bc0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 70 61 72 61 = function (para
a2bd0 6d 73 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 ms) {.. r
a2be0 65 74 75 72 6e 20 74 68 69 73 2e 76 6f 69 63 65 eturn this.voice
a2bf0 73 5b 30 5d 2e 67 65 74 28 70 61 72 61 6d 73 29 s[0].get(params)
a2c00 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
a2c10 2a 2a 0a 09 09 20 2a 20 20 54 72 69 67 67 65 72 **... * Trigger
a2c20 20 74 68 65 20 72 65 6c 65 61 73 65 20 70 6f 72 the release por
a2c30 74 69 6f 6e 20 6f 66 20 61 6c 6c 20 74 68 65 20 tion of all the
a2c40 63 75 72 72 65 6e 74 6c 79 20 61 63 74 69 76 65 currently active
a2c50 20 76 6f 69 63 65 73 2e 0a 09 09 20 2a 20 20 40 voices.... * @
a2c60 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 5b 74 69 param {Time} [ti
a2c70 6d 65 3d 6e 6f 77 5d 20 57 68 65 6e 20 74 68 65 me=now] When the
a2c80 20 6e 6f 74 65 73 20 73 68 6f 75 6c 64 20 62 65 notes should be
a2c90 20 72 65 6c 65 61 73 65 64 2e 0a 09 09 20 2a 20 released.... *
a2ca0 20 40 72 65 74 75 72 6e 20 7b 54 6f 6e 65 2e 50 @return {Tone.P
a2cb0 6f 6c 79 53 79 6e 74 68 7d 20 74 68 69 73 0a 09 olySynth} this..
a2cc0 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 . */.. Tone.P
a2cd0 6f 6c 79 53 79 6e 74 68 2e 70 72 6f 74 6f 74 79 olySynth.prototy
a2ce0 70 65 2e 72 65 6c 65 61 73 65 41 6c 6c 20 3d 20 pe.releaseAll =
a2cf0 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 function (time)
a2d00 7b 0a 09 20 20 20 20 20 20 20 20 74 69 6d 65 20 {.. time
a2d10 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 = this.toSeconds
a2d20 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 (time);..
a2d30 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b for (var i = 0;
a2d40 20 69 20 3c 20 74 68 69 73 2e 5f 74 72 69 67 67 i < this._trigg
a2d50 65 72 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 ers.length; i++)
a2d60 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
a2d70 76 61 72 20 64 65 73 63 20 3d 20 74 68 69 73 2e var desc = this.
a2d80 5f 74 72 69 67 67 65 72 73 5b 69 5d 3b 0a 09 20 _triggers[i];..
a2d90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 if (d
a2da0 65 73 63 2e 72 65 6c 65 61 73 65 20 3e 20 74 69 esc.release > ti
a2db0 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 me) {..
a2dc0 20 20 20 20 20 20 20 64 65 73 63 2e 72 65 6c 65 desc.rele
a2dd0 61 73 65 20 3d 20 74 69 6d 65 3b 0a 09 20 20 20 ase = time;..
a2de0 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73 des
a2df0 63 2e 76 6f 69 63 65 2e 74 72 69 67 67 65 72 52 c.voice.triggerR
a2e00 65 6c 65 61 73 65 28 74 69 6d 65 29 3b 0a 09 20 elease(time);..
a2e10 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
a2e20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
a2e30 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
a2e40 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
a2e50 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a 09 . * Clean up...
a2e60 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 . * @returns {T
a2e70 6f 6e 65 2e 50 6f 6c 79 53 79 6e 74 68 7d 20 74 one.PolySynth} t
a2e80 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
a2e90 6f 6e 65 2e 50 6f 6c 79 53 79 6e 74 68 2e 70 72 one.PolySynth.pr
a2ea0 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 ototype.dispose
a2eb0 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a = function () {.
a2ec0 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 49 6e . Tone.In
a2ed0 73 74 72 75 6d 65 6e 74 2e 70 72 6f 74 6f 74 79 strument.prototy
a2ee0 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 pe.dispose.call(
a2ef0 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 this);..
a2f00 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 for (var i = 0;
a2f10 69 20 3c 20 74 68 69 73 2e 76 6f 69 63 65 73 2e i < this.voices.
a2f20 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 length; i++) {..
a2f30 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
a2f40 2e 76 6f 69 63 65 73 5b 69 5d 2e 64 69 73 70 6f .voices[i].dispo
a2f50 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 se();..
a2f60 20 20 20 74 68 69 73 2e 76 6f 69 63 65 73 5b 69 this.voices[i
a2f70 5d 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 ] = null;..
a2f80 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 74 68 }.. th
a2f90 69 73 2e 5f 77 72 69 74 61 62 6c 65 28 27 64 65 is._writable('de
a2fa0 74 75 6e 65 27 29 3b 0a 09 20 20 20 20 20 20 20 tune');..
a2fb0 20 74 68 69 73 2e 64 65 74 75 6e 65 2e 64 69 73 this.detune.dis
a2fc0 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 pose();..
a2fd0 20 74 68 69 73 2e 64 65 74 75 6e 65 20 3d 20 6e this.detune = n
a2fe0 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
a2ff0 69 73 2e 76 6f 69 63 65 73 20 3d 20 6e 75 6c 6c is.voices = null
a3000 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
a3010 5f 74 72 69 67 67 65 72 73 20 3d 20 6e 75 6c 6c _triggers = null
a3020 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
a3030 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
a3040 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 54 . /**... * T
a3050 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 he maximum numbe
a3060 72 20 6f 66 20 6e 6f 74 65 73 20 74 68 61 74 20 r of notes that
a3070 63 61 6e 20 62 65 20 61 6c 6c 6f 63 61 74 65 64 can be allocated
a3080 20 0a 09 09 20 2a 20 20 74 6f 20 61 20 70 6f 6c ... * to a pol
a3090 79 73 79 6e 74 68 2e 20 0a 09 09 20 2a 20 20 40 ysynth. ... * @
a30a0 74 79 70 65 20 20 7b 4e 75 6d 62 65 72 7d 0a 09 type {Number}..
a30b0 09 20 2a 20 20 40 73 74 61 74 69 63 0a 09 09 20 . * @static...
a30c0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 6f 6c */.. Tone.Pol
a30d0 79 53 79 6e 74 68 2e 4d 41 58 5f 50 4f 4c 59 50 ySynth.MAX_POLYP
a30e0 48 4f 4e 59 20 3d 20 32 30 3b 0a 09 20 20 20 20 HONY = 20;..
a30f0 72 65 74 75 72 6e 20 54 6f 6e 65 2e 50 6f 6c 79 return Tone.Poly
a3100 53 79 6e 74 68 3b 0a 09 7d 29 3b 0a 09 4d 6f 64 Synth;..});..Mod
a3110 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 54 6f ule(function (To
a3120 6e 65 29 20 7b 0a 09 20 20 20 20 0a 09 20 20 20 ne) {.. ..
a3130 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c 61 73 /**... * @clas
a3140 73 20 20 54 6f 6e 65 2e 50 6c 61 79 65 72 20 69 s Tone.Player i
a3150 73 20 61 6e 20 61 75 64 69 6f 20 66 69 6c 65 20 s an audio file
a3160 70 6c 61 79 65 72 20 77 69 74 68 20 73 74 61 72 player with star
a3170 74 2c 20 6c 6f 6f 70 2c 20 61 6e 64 20 73 74 6f t, loop, and sto
a3180 70 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 09 09 20 p functions....
a3190 2a 20 20 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 * ... * @const
a31a0 72 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 ructor... * @ex
a31b0 74 65 6e 64 73 20 7b 54 6f 6e 65 2e 53 6f 75 72 tends {Tone.Sour
a31c0 63 65 7d 20 0a 09 09 20 2a 20 20 40 70 61 72 61 ce} ... * @para
a31d0 6d 20 7b 73 74 72 69 6e 67 7c 41 75 64 69 6f 42 m {string|AudioB
a31e0 75 66 66 65 72 7d 20 75 72 6c 20 45 69 74 68 65 uffer} url Eithe
a31f0 72 20 74 68 65 20 41 75 64 69 6f 42 75 66 66 65 r the AudioBuffe
a3200 72 20 6f 72 20 74 68 65 20 75 72 6c 20 66 72 6f r or the url fro
a3210 6d 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 m... *
a3220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a3230 20 20 20 20 20 20 20 20 77 68 69 63 68 20 74 6f which to
a3240 20 6c 6f 61 64 20 74 68 65 20 41 75 64 69 6f 42 load the AudioB
a3250 75 66 66 65 72 0a 09 09 20 2a 20 20 40 70 61 72 uffer... * @par
a3260 61 6d 20 7b 66 75 6e 63 74 69 6f 6e 3d 7d 20 6f am {function=} o
a3270 6e 6c 6f 61 64 20 54 68 65 20 66 75 6e 63 74 69 nload The functi
a3280 6f 6e 20 74 6f 20 69 6e 76 6f 6b 65 20 77 68 65 on to invoke whe
a3290 6e 20 74 68 65 20 62 75 66 66 65 72 20 69 73 20 n the buffer is
a32a0 6c 6f 61 64 65 64 2e 20 0a 09 09 20 2a 20 20 20 loaded. ... *
a32b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a32c0 20 20 20 20 20 20 20 20 20 52 65 63 6f 6d 6d 65 Recomme
a32d0 6e 64 65 64 20 74 6f 20 75 73 65 20 54 6f 6e 65 nded to use Tone
a32e0 2e 42 75 66 66 65 72 2e 6f 6e 28 27 6c 6f 61 64 .Buffer.on('load
a32f0 27 29 20 69 6e 73 74 65 61 64 2e 0a 09 09 20 2a ') instead.... *
a3300 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 @example... *
a3310 76 61 72 20 70 6c 61 79 65 72 20 3d 20 6e 65 77 var player = new
a3320 20 54 6f 6e 65 2e 50 6c 61 79 65 72 28 22 2e 2f Tone.Player("./
a3330 70 61 74 68 2f 74 6f 2f 73 61 6d 70 6c 65 2e 6d path/to/sample.m
a3340 70 33 22 29 2e 74 6f 4d 61 73 74 65 72 28 29 3b p3").toMaster();
a3350 0a 09 09 20 2a 20 2f 2f 70 6c 61 79 20 61 73 20 ... * //play as
a3360 73 6f 6f 6e 20 61 73 20 74 68 65 20 62 75 66 66 soon as the buff
a3370 65 72 20 69 73 20 6c 6f 61 64 65 64 0a 09 09 20 er is loaded...
a3380 2a 20 70 6c 61 79 65 72 2e 61 75 74 6f 73 74 61 * player.autosta
a3390 72 74 20 3d 20 74 72 75 65 3b 0a 09 09 20 2a 2f rt = true;... */
a33a0 0a 09 20 20 20 20 54 6f 6e 65 2e 50 6c 61 79 65 .. Tone.Playe
a33b0 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 75 72 r = function (ur
a33c0 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 l) {.. va
a33d0 72 20 6f 70 74 69 6f 6e 73 3b 0a 09 20 20 20 20 r options;..
a33e0 20 20 20 20 69 66 20 28 75 72 6c 20 69 6e 73 74 if (url inst
a33f0 61 6e 63 65 6f 66 20 54 6f 6e 65 2e 42 75 66 66 anceof Tone.Buff
a3400 65 72 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 er) {..
a3410 20 20 20 75 72 6c 20 3d 20 75 72 6c 2e 67 65 74 url = url.get
a3420 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ();..
a3430 20 6f 70 74 69 6f 6e 73 20 3d 20 54 6f 6e 65 2e options = Tone.
a3440 50 6c 61 79 65 72 2e 64 65 66 61 75 6c 74 73 3b Player.defaults;
a3450 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
a3460 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
a3470 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 2e 6f options = this.o
a3480 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 72 67 ptionsObject(arg
a3490 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 20 20 uments, [..
a34a0 20 20 20 20 20 20 20 20 20 20 20 27 75 72 6c 27 'url'
a34b0 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
a34c0 20 20 20 27 6f 6e 6c 6f 61 64 27 0a 09 20 20 20 'onload'..
a34d0 20 20 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 ], Tone
a34e0 2e 50 6c 61 79 65 72 2e 64 65 66 61 75 6c 74 73 .Player.defaults
a34f0 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
a3500 20 20 20 20 20 20 20 54 6f 6e 65 2e 53 6f 75 72 Tone.Sour
a3510 63 65 2e 63 61 6c 6c 28 74 68 69 73 2c 20 6f 70 ce.call(this, op
a3520 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 20 20 20 tions);..
a3530 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 40 70 72 69 /**.... * @pri
a3540 76 61 74 65 0a 09 09 09 20 2a 20 20 40 74 79 70 vate.... * @typ
a3550 65 20 7b 41 75 64 69 6f 42 75 66 66 65 72 53 6f e {AudioBufferSo
a3560 75 72 63 65 4e 6f 64 65 7d 0a 09 09 09 20 2a 2f urceNode}.... */
a3570 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
a3580 73 6f 75 72 63 65 20 3d 20 6e 75 6c 6c 3b 0a 09 source = null;..
a3590 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
a35a0 2a 20 20 49 66 20 74 68 65 20 66 69 6c 65 20 73 * If the file s
a35b0 68 6f 75 6c 64 20 70 6c 61 79 20 61 73 20 73 6f hould play as so
a35c0 6f 6e 0a 09 09 09 20 2a 20 20 61 73 20 74 68 65 on.... * as the
a35d0 20 62 75 66 66 65 72 20 69 73 20 6c 6f 61 64 65 buffer is loade
a35e0 64 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 70 65 d. .... * @type
a35f0 20 7b 62 6f 6f 6c 65 61 6e 7d 0a 09 09 09 20 2a {boolean}.... *
a3600 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 09 20 2a @example.... *
a3610 20 2f 2f 77 69 6c 6c 20 70 6c 61 79 20 61 73 20 //will play as
a3620 73 6f 6f 6e 20 61 73 20 69 74 27 73 20 6c 6f 61 soon as it's loa
a3630 64 65 64 0a 09 09 09 20 2a 20 76 61 72 20 70 6c ded.... * var pl
a3640 61 79 65 72 20 3d 20 6e 65 77 20 54 6f 6e 65 2e ayer = new Tone.
a3650 50 6c 61 79 65 72 28 7b 0a 09 09 09 20 2a 20 09 Player({.... * .
a3660 22 75 72 6c 22 20 3a 20 22 2e 2f 70 61 74 68 2f "url" : "./path/
a3670 74 6f 2f 73 61 6d 70 6c 65 2e 6d 70 33 22 2c 0a to/sample.mp3",.
a3680 09 09 09 20 2a 20 09 22 61 75 74 6f 73 74 61 72 ... * ."autostar
a3690 74 22 20 3a 20 74 72 75 65 2c 0a 09 09 09 20 2a t" : true,.... *
a36a0 20 7d 29 2e 74 6f 4d 61 73 74 65 72 28 29 3b 0a }).toMaster();.
a36b0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
a36c0 74 68 69 73 2e 61 75 74 6f 73 74 61 72 74 20 3d this.autostart =
a36d0 20 6f 70 74 69 6f 6e 73 2e 61 75 74 6f 73 74 61 options.autosta
a36e0 72 74 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a rt;.. /**
a36f0 0a 09 09 09 20 2a 20 20 74 68 65 20 62 75 66 66 .... * the buff
a3700 65 72 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 er.... * @priva
a3710 74 65 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 te.... * @type
a3720 7b 54 6f 6e 65 2e 42 75 66 66 65 72 7d 0a 09 09 {Tone.Buffer}...
a3730 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
a3740 69 73 2e 5f 62 75 66 66 65 72 20 3d 20 6e 65 77 is._buffer = new
a3750 20 54 6f 6e 65 2e 42 75 66 66 65 72 28 7b 0a 09 Tone.Buffer({..
a3760 20 20 20 20 20 20 20 20 20 20 20 20 27 75 72 6c 'url
a3770 27 3a 20 6f 70 74 69 6f 6e 73 2e 75 72 6c 2c 0a ': options.url,.
a3780 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6f 6e . 'on
a3790 6c 6f 61 64 27 3a 20 74 68 69 73 2e 5f 6f 6e 6c load': this._onl
a37a0 6f 61 64 2e 62 69 6e 64 28 74 68 69 73 2c 20 6f oad.bind(this, o
a37b0 70 74 69 6f 6e 73 2e 6f 6e 6c 6f 61 64 29 2c 0a ptions.onload),.
a37c0 09 20 20 20 20 20 20 20 20 20 20 20 20 27 72 65 . 're
a37d0 76 65 72 73 65 27 3a 20 6f 70 74 69 6f 6e 73 2e verse': options.
a37e0 72 65 76 65 72 73 65 0a 09 20 20 20 20 20 20 20 reverse..
a37f0 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 });.. if
a3800 20 28 75 72 6c 20 69 6e 73 74 61 6e 63 65 6f 66 (url instanceof
a3810 20 41 75 64 69 6f 42 75 66 66 65 72 29 20 7b 0a AudioBuffer) {.
a3820 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
a3830 73 2e 5f 62 75 66 66 65 72 2e 73 65 74 28 75 72 s._buffer.set(ur
a3840 6c 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 l);.. }..
a3850 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
a3860 2a 20 20 69 66 20 74 68 65 20 62 75 66 66 65 72 * if the buffer
a3870 20 73 68 6f 75 6c 64 20 6c 6f 6f 70 20 6f 6e 63 should loop onc
a3880 65 20 69 74 27 73 20 6f 76 65 72 0a 09 09 09 20 e it's over....
a3890 2a 20 20 40 74 79 70 65 20 7b 62 6f 6f 6c 65 61 * @type {boolea
a38a0 6e 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 n}.... * @priva
a38b0 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 te.... */..
a38c0 20 20 20 74 68 69 73 2e 5f 6c 6f 6f 70 20 3d 20 this._loop =
a38d0 6f 70 74 69 6f 6e 73 2e 6c 6f 6f 70 3b 0a 09 20 options.loop;..
a38e0 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
a38f0 20 20 69 66 20 27 6c 6f 6f 70 27 20 69 73 20 74 if 'loop' is t
a3900 72 75 65 2c 20 74 68 65 20 6c 6f 6f 70 20 77 69 rue, the loop wi
a3910 6c 6c 20 73 74 61 72 74 20 61 74 20 74 68 69 73 ll start at this
a3920 20 70 6f 73 69 74 69 6f 6e 0a 09 09 09 20 2a 20 position.... *
a3930 20 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a 09 09 @type {Time}...
a3940 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
a3950 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
a3960 69 73 2e 5f 6c 6f 6f 70 53 74 61 72 74 20 3d 20 is._loopStart =
a3970 6f 70 74 69 6f 6e 73 2e 6c 6f 6f 70 53 74 61 72 options.loopStar
a3980 74 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a t;.. /**.
a3990 09 09 09 20 2a 20 20 69 66 20 27 6c 6f 6f 70 27 ... * if 'loop'
a39a0 20 69 73 20 74 72 75 65 2c 20 74 68 65 20 6c 6f is true, the lo
a39b0 6f 70 20 77 69 6c 6c 20 65 6e 64 20 61 74 20 74 op will end at t
a39c0 68 69 73 20 70 6f 73 69 74 69 6f 6e 0a 09 09 09 his position....
a39d0 20 2a 20 20 40 74 79 70 65 20 7b 54 69 6d 65 7d * @type {Time}
a39e0 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
a39f0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
a3a00 20 74 68 69 73 2e 5f 6c 6f 6f 70 45 6e 64 20 3d this._loopEnd =
a3a10 20 6f 70 74 69 6f 6e 73 2e 6c 6f 6f 70 45 6e 64 options.loopEnd
a3a20 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
a3a30 09 09 20 2a 20 20 74 68 65 20 70 6c 61 79 62 61 .. * the playba
a3a40 63 6b 20 72 61 74 65 0a 09 09 09 20 2a 20 20 40 ck rate.... * @
a3a50 70 72 69 76 61 74 65 0a 09 09 09 20 2a 20 20 40 private.... * @
a3a60 74 79 70 65 20 7b 6e 75 6d 62 65 72 7d 0a 09 09 type {number}...
a3a70 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
a3a80 69 73 2e 5f 70 6c 61 79 62 61 63 6b 52 61 74 65 is._playbackRate
a3a90 20 3d 20 6f 70 74 69 6f 6e 73 2e 70 6c 61 79 62 = options.playb
a3aa0 61 63 6b 52 61 74 65 3b 0a 09 20 20 20 20 20 20 ackRate;..
a3ab0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 45 6e 61 /**.... * Ena
a3ac0 62 6c 69 6e 67 20 72 65 74 72 69 67 67 65 72 20 bling retrigger
a3ad0 77 69 6c 6c 20 61 6c 6c 6f 77 20 61 20 70 6c 61 will allow a pla
a3ae0 79 65 72 20 74 6f 20 62 65 20 72 65 73 74 61 72 yer to be restar
a3af0 74 65 64 0a 09 09 09 20 2a 20 20 62 65 66 6f 72 ted.... * befor
a3b00 65 20 74 68 65 20 74 68 65 20 70 72 65 76 69 6f e the the previo
a3b10 75 73 20 27 73 74 61 72 74 27 20 69 73 20 64 6f us 'start' is do
a3b20 6e 65 20 70 6c 61 79 69 6e 67 2e 20 4f 74 68 65 ne playing. Othe
a3b30 72 77 69 73 65 2c 20 0a 09 09 09 20 2a 20 20 73 rwise, .... * s
a3b40 75 63 63 65 73 73 69 76 65 20 63 61 6c 6c 73 20 uccessive calls
a3b50 74 6f 20 54 6f 6e 65 2e 50 6c 61 79 65 72 2e 73 to Tone.Player.s
a3b60 74 61 72 74 20 77 69 6c 6c 20 6f 6e 6c 79 20 73 tart will only s
a3b70 74 61 72 74 0a 09 09 09 20 2a 20 20 74 68 65 20 tart.... * the
a3b80 73 61 6d 70 6c 65 20 69 66 20 69 74 20 68 61 64 sample if it had
a3b90 20 70 6c 61 79 65 64 20 61 6c 6c 20 74 68 65 20 played all the
a3ba0 77 61 79 20 74 68 72 6f 75 67 68 2e 20 0a 09 09 way through. ...
a3bb0 09 20 2a 20 20 40 74 79 70 65 20 7b 62 6f 6f 6c . * @type {bool
a3bc0 65 61 6e 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 ean}.... */..
a3bd0 20 20 20 20 20 74 68 69 73 2e 72 65 74 72 69 67 this.retrig
a3be0 67 65 72 20 3d 20 6f 70 74 69 6f 6e 73 2e 72 65 ger = options.re
a3bf0 74 72 69 67 67 65 72 3b 0a 09 20 20 20 20 7d 3b trigger;.. };
a3c00 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e .. Tone.exten
a3c10 64 28 54 6f 6e 65 2e 50 6c 61 79 65 72 2c 20 54 d(Tone.Player, T
a3c20 6f 6e 65 2e 53 6f 75 72 63 65 29 3b 0a 09 20 20 one.Source);..
a3c30 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 65 20 /**... * the
a3c40 64 65 66 61 75 6c 74 20 70 61 72 61 6d 65 74 65 default paramete
a3c50 72 73 0a 09 09 20 2a 20 20 40 73 74 61 74 69 63 rs... * @static
a3c60 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 0a 09 09 ... * @const...
a3c70 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 6a 65 63 * @type {Objec
a3c80 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f t}... */.. To
a3c90 6e 65 2e 50 6c 61 79 65 72 2e 64 65 66 61 75 6c ne.Player.defaul
a3ca0 74 73 20 3d 20 7b 0a 09 20 20 20 20 20 20 20 20 ts = {..
a3cb0 27 6f 6e 6c 6f 61 64 27 3a 20 54 6f 6e 65 2e 6e 'onload': Tone.n
a3cc0 6f 4f 70 2c 0a 09 20 20 20 20 20 20 20 20 27 70 oOp,.. 'p
a3cd0 6c 61 79 62 61 63 6b 52 61 74 65 27 3a 20 31 2c laybackRate': 1,
a3ce0 0a 09 20 20 20 20 20 20 20 20 27 6c 6f 6f 70 27 .. 'loop'
a3cf0 3a 20 66 61 6c 73 65 2c 0a 09 20 20 20 20 20 20 : false,..
a3d00 20 20 27 61 75 74 6f 73 74 61 72 74 27 3a 20 66 'autostart': f
a3d10 61 6c 73 65 2c 0a 09 20 20 20 20 20 20 20 20 27 alse,.. '
a3d20 6c 6f 6f 70 53 74 61 72 74 27 3a 20 30 2c 0a 09 loopStart': 0,..
a3d30 20 20 20 20 20 20 20 20 27 6c 6f 6f 70 45 6e 64 'loopEnd
a3d40 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 ': 0,.. '
a3d50 72 65 74 72 69 67 67 65 72 27 3a 20 66 61 6c 73 retrigger': fals
a3d60 65 2c 0a 09 20 20 20 20 20 20 20 20 27 72 65 76 e,.. 'rev
a3d70 65 72 73 65 27 3a 20 66 61 6c 73 65 0a 09 20 20 erse': false..
a3d80 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
a3d90 20 2a 20 20 4c 6f 61 64 20 74 68 65 20 61 75 64 * Load the aud
a3da0 69 6f 20 66 69 6c 65 20 61 73 20 61 6e 20 61 75 io file as an au
a3db0 64 69 6f 20 62 75 66 66 65 72 2e 0a 09 09 20 2a dio buffer.... *
a3dc0 20 20 44 65 63 6f 64 65 73 20 74 68 65 20 61 75 Decodes the au
a3dd0 64 69 6f 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 dio asynchronous
a3de0 6c 79 20 61 6e 64 20 69 6e 76 6f 6b 65 73 0a 09 ly and invokes..
a3df0 09 20 2a 20 20 74 68 65 20 63 61 6c 6c 62 61 63 . * the callbac
a3e00 6b 20 6f 6e 63 65 20 74 68 65 20 61 75 64 69 6f k once the audio
a3e10 20 62 75 66 66 65 72 20 6c 6f 61 64 73 2e 20 0a buffer loads. .
a3e20 09 09 20 2a 20 20 4e 6f 74 65 3a 20 74 68 69 73 .. * Note: this
a3e30 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 does not need t
a3e40 6f 20 62 65 20 63 61 6c 6c 65 64 20 69 66 20 61 o be called if a
a3e50 20 75 72 6c 0a 09 09 20 2a 20 20 77 61 73 20 70 url... * was p
a3e60 61 73 73 65 64 20 69 6e 20 74 6f 20 74 68 65 20 assed in to the
a3e70 63 6f 6e 73 74 72 75 63 74 6f 72 2e 20 4f 6e 6c constructor. Onl
a3e80 79 20 75 73 65 20 74 68 69 73 0a 09 09 20 2a 20 y use this... *
a3e90 20 69 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 if you want to
a3ea0 6d 61 6e 75 61 6c 6c 79 20 6c 6f 61 64 20 61 20 manually load a
a3eb0 6e 65 77 20 75 72 6c 2e 20 0a 09 09 20 2a 20 40 new url. ... * @
a3ec0 70 61 72 61 6d 20 7b 73 74 72 69 6e 67 7d 20 75 param {string} u
a3ed0 72 6c 20 54 68 65 20 75 72 6c 20 6f 66 20 74 68 rl The url of th
a3ee0 65 20 62 75 66 66 65 72 20 74 6f 20 6c 6f 61 64 e buffer to load
a3ef0 2e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 .... *
a3f00 20 20 20 20 20 20 20 20 20 20 20 46 69 6c 65 74 Filet
a3f10 79 70 65 20 73 75 70 70 6f 72 74 20 64 65 70 65 ype support depe
a3f20 6e 64 73 20 6f 6e 20 74 68 65 0a 09 09 20 2a 20 nds on the... *
a3f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a3f40 20 20 20 20 62 72 6f 77 73 65 72 2e 0a 09 09 20 browser....
a3f50 2a 20 20 40 70 61 72 61 6d 20 20 7b 66 75 6e 63 * @param {func
a3f60 74 69 6f 6e 3d 7d 20 63 61 6c 6c 62 61 63 6b 20 tion=} callback
a3f70 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 The function to
a3f80 69 6e 76 6f 6b 65 20 6f 6e 63 65 0a 09 09 20 2a invoke once... *
a3f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a3fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
a3fb0 68 65 20 73 61 6d 70 6c 65 20 69 73 20 6c 6f 61 he sample is loa
a3fc0 64 65 64 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 ded.... * @retu
a3fd0 72 6e 73 20 7b 50 72 6f 6d 69 73 65 7d 0a 09 09 rns {Promise}...
a3fe0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 6c */.. Tone.Pl
a3ff0 61 79 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 6c ayer.prototype.l
a4000 6f 61 64 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 oad = function (
a4010 75 72 6c 2c 20 63 61 6c 6c 62 61 63 6b 29 20 7b url, callback) {
a4020 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
a4030 20 74 68 69 73 2e 5f 62 75 66 66 65 72 2e 6c 6f this._buffer.lo
a4040 61 64 28 75 72 6c 2c 20 74 68 69 73 2e 5f 6f 6e ad(url, this._on
a4050 6c 6f 61 64 2e 62 69 6e 64 28 74 68 69 73 2c 20 load.bind(this,
a4060 63 61 6c 6c 62 61 63 6b 29 29 3b 0a 09 20 20 20 callback));..
a4070 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 };.. /**...
a4080 2a 20 49 6e 74 65 72 6e 61 6c 20 63 61 6c 6c 62 * Internal callb
a4090 61 63 6b 20 77 68 65 6e 20 74 68 65 20 62 75 66 ack when the buf
a40a0 66 65 72 20 69 73 20 6c 6f 61 64 65 64 2e 0a 09 fer is loaded...
a40b0 09 20 2a 20 40 70 72 69 76 61 74 65 0a 09 09 20 . * @private...
a40c0 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 6c 61 */.. Tone.Pla
a40d0 79 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 6f yer.prototype._o
a40e0 6e 6c 6f 61 64 20 3d 20 66 75 6e 63 74 69 6f 6e nload = function
a40f0 20 28 63 61 6c 6c 62 61 63 6b 29 20 7b 0a 09 20 (callback) {..
a4100 20 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 callback
a4110 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 = this.defaultAr
a4120 67 28 63 61 6c 6c 62 61 63 6b 2c 20 54 6f 6e 65 g(callback, Tone
a4130 2e 6e 6f 4f 70 29 3b 0a 09 20 20 20 20 20 20 20 .noOp);..
a4140 20 63 61 6c 6c 62 61 63 6b 28 74 68 69 73 29 3b callback(this);
a4150 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
a4160 69 73 2e 61 75 74 6f 73 74 61 72 74 29 20 7b 0a is.autostart) {.
a4170 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
a4180 73 2e 73 74 61 72 74 28 29 3b 0a 09 20 20 20 20 s.start();..
a4190 20 20 20 20 7d 0a 09 20 20 20 20 7d 3b 0a 09 20 }.. };..
a41a0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 50 6c 61 /**... * Pla
a41b0 79 20 74 68 65 20 62 75 66 66 65 72 20 61 74 20 y the buffer at
a41c0 74 68 65 20 67 69 76 65 6e 20 73 74 61 72 74 54 the given startT
a41d0 69 6d 65 2e 20 4f 70 74 69 6f 6e 61 6c 6c 79 20 ime. Optionally
a41e0 61 64 64 20 61 6e 20 6f 66 66 73 65 74 0a 09 09 add an offset...
a41f0 20 2a 20 20 61 6e 64 2f 6f 72 20 64 75 72 61 74 * and/or durat
a4200 69 6f 6e 20 77 68 69 63 68 20 77 69 6c 6c 20 70 ion which will p
a4210 6c 61 79 20 74 68 65 20 62 75 66 66 65 72 20 66 lay the buffer f
a4220 72 6f 6d 20 61 20 70 6f 73 69 74 69 6f 6e 0a 09 rom a position..
a4230 09 20 2a 20 20 77 69 74 68 69 6e 20 74 68 65 20 . * within the
a4240 62 75 66 66 65 72 20 66 6f 72 20 74 68 65 20 67 buffer for the g
a4250 69 76 65 6e 20 64 75 72 61 74 69 6f 6e 2e 20 0a iven duration. .
a4260 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 70 61 .. * ... * @pa
a4270 72 61 6d 20 20 7b 54 69 6d 65 7d 20 5b 73 74 61 ram {Time} [sta
a4280 72 74 54 69 6d 65 3d 6e 6f 77 5d 20 57 68 65 6e rtTime=now] When
a4290 20 74 68 65 20 70 6c 61 79 65 72 20 73 68 6f 75 the player shou
a42a0 6c 64 20 73 74 61 72 74 2e 0a 09 09 20 2a 20 20 ld start.... *
a42b0 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 5b @param {Time} [
a42c0 6f 66 66 73 65 74 3d 30 5d 20 54 68 65 20 6f 66 offset=0] The of
a42d0 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 62 65 fset from the be
a42e0 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 73 ginning of the s
a42f0 61 6d 70 6c 65 0a 09 09 20 2a 20 20 20 20 20 20 ample... *
a4300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a4310 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 73 74 to st
a4320 61 72 74 20 61 74 2e 20 0a 09 09 20 2a 20 20 40 art at. ... * @
a4330 70 61 72 61 6d 20 20 7b 54 69 6d 65 3d 7d 20 64 param {Time=} d
a4340 75 72 61 74 69 6f 6e 20 48 6f 77 20 6c 6f 6e 67 uration How long
a4350 20 74 68 65 20 73 61 6d 70 6c 65 20 73 68 6f 75 the sample shou
a4360 6c 64 20 70 6c 61 79 2e 20 49 66 20 6e 6f 20 64 ld play. If no d
a4370 75 72 61 74 69 6f 6e 0a 09 09 20 2a 20 20 20 20 uration... *
a4380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a4390 20 20 20 20 20 20 20 20 20 20 20 20 69 73 20 67 is g
a43a0 69 76 65 6e 2c 20 69 74 20 77 69 6c 6c 20 64 65 iven, it will de
a43b0 66 61 75 6c 74 20 74 6f 20 74 68 65 20 66 75 6c fault to the ful
a43c0 6c 20 6c 65 6e 67 74 68 20 0a 09 09 20 2a 20 20 l length ... *
a43d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a43e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 of
a43f0 20 74 68 65 20 73 61 6d 70 6c 65 20 28 6d 69 6e the sample (min
a4400 75 73 20 61 6e 79 20 6f 66 66 73 65 74 29 0a 09 us any offset)..
a4410 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 . * @returns {T
a4420 6f 6e 65 2e 50 6c 61 79 65 72 7d 20 74 68 69 73 one.Player} this
a4430 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
a4440 20 54 6f 6e 65 2e 50 6c 61 79 65 72 23 0a 09 09 Tone.Player#...
a4450 20 2a 20 20 40 6d 65 74 68 6f 64 20 73 74 61 72 * @method star
a4460 74 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 73 74 t... * @name st
a4470 61 72 74 0a 09 09 20 2a 2f 0a 09 20 20 20 20 2f art... */.. /
a4480 2a 2a 0a 09 09 20 2a 20 20 49 6e 74 65 72 6e 61 **... * Interna
a4490 6c 20 73 74 61 72 74 20 6d 65 74 68 6f 64 0a 09 l start method..
a44a0 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
a44b0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 6c */.. Tone.Pl
a44c0 61 79 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f ayer.prototype._
a44d0 73 74 61 72 74 20 3d 20 66 75 6e 63 74 69 6f 6e start = function
a44e0 20 28 73 74 61 72 74 54 69 6d 65 2c 20 6f 66 66 (startTime, off
a44f0 73 65 74 2c 20 64 75 72 61 74 69 6f 6e 29 20 7b set, duration) {
a4500 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
a4510 69 73 2e 5f 62 75 66 66 65 72 2e 6c 6f 61 64 65 is._buffer.loade
a4520 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 d) {..
a4530 20 20 2f 2f 69 66 20 69 74 27 73 20 61 20 6c 6f //if it's a lo
a4540 6f 70 20 74 68 65 20 64 65 66 61 75 6c 74 20 6f op the default o
a4550 66 66 73 65 74 20 69 73 20 74 68 65 20 6c 6f 6f ffset is the loo
a4560 70 73 74 61 72 74 20 70 6f 69 6e 74 0a 09 20 20 pstart point..
a4570 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 if (th
a4580 69 73 2e 5f 6c 6f 6f 70 29 20 7b 0a 09 20 20 20 is._loop) {..
a4590 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 off
a45a0 73 65 74 20 3d 20 74 68 69 73 2e 64 65 66 61 75 set = this.defau
a45b0 6c 74 41 72 67 28 6f 66 66 73 65 74 2c 20 74 68 ltArg(offset, th
a45c0 69 73 2e 5f 6c 6f 6f 70 53 74 61 72 74 29 3b 0a is._loopStart);.
a45d0 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
a45e0 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
a45f0 20 20 20 20 20 20 20 2f 2f 6f 74 68 65 72 77 69 //otherwi
a4600 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 6f se the default o
a4610 66 66 73 65 74 20 69 73 20 30 0a 09 20 20 20 20 ffset is 0..
a4620 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 offs
a4630 65 74 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c et = this.defaul
a4640 74 41 72 67 28 6f 66 66 73 65 74 2c 20 30 29 3b tArg(offset, 0);
a4650 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
a4660 09 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 . off
a4670 73 65 74 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 set = this.toSec
a4680 6f 6e 64 73 28 6f 66 66 73 65 74 29 3b 0a 09 20 onds(offset);..
a4690 20 20 20 20 20 20 20 20 20 20 20 2f 2f 6d 61 6b //mak
a46a0 65 20 73 75 72 65 20 69 74 20 68 61 73 20 61 20 e sure it has a
a46b0 70 6f 73 69 74 69 76 65 20 64 75 72 61 74 69 6f positive duratio
a46c0 6e 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 64 n.. d
a46d0 75 72 61 74 69 6f 6e 20 3d 20 74 68 69 73 2e 64 uration = this.d
a46e0 65 66 61 75 6c 74 41 72 67 28 64 75 72 61 74 69 efaultArg(durati
a46f0 6f 6e 2c 20 4d 61 74 68 2e 6d 61 78 28 74 68 69 on, Math.max(thi
a4700 73 2e 5f 62 75 66 66 65 72 2e 64 75 72 61 74 69 s._buffer.durati
a4710 6f 6e 20 2d 20 6f 66 66 73 65 74 2c 20 30 29 29 on - offset, 0))
a4720 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 64 ;.. d
a4730 75 72 61 74 69 6f 6e 20 3d 20 74 68 69 73 2e 74 uration = this.t
a4740 6f 53 65 63 6f 6e 64 73 28 64 75 72 61 74 69 6f oSeconds(duratio
a4750 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 n);..
a4760 20 2f 2f 74 68 65 20 76 61 6c 75 65 73 20 69 6e //the values in
a4770 20 73 65 63 6f 6e 64 73 0a 09 20 20 20 20 20 20 seconds..
a4780 20 20 20 20 20 20 73 74 61 72 74 54 69 6d 65 20 startTime
a4790 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 = this.toSeconds
a47a0 28 73 74 61 72 74 54 69 6d 65 29 3b 0a 09 20 20 (startTime);..
a47b0 20 20 20 20 20 20 20 20 20 20 2f 2f 6d 61 6b 65 //make
a47c0 20 74 68 65 20 73 6f 75 72 63 65 0a 09 20 20 20 the source..
a47d0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 this._s
a47e0 6f 75 72 63 65 20 3d 20 74 68 69 73 2e 63 6f 6e ource = this.con
a47f0 74 65 78 74 2e 63 72 65 61 74 65 42 75 66 66 65 text.createBuffe
a4800 72 53 6f 75 72 63 65 28 29 3b 0a 09 20 20 20 20 rSource();..
a4810 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 6f this._so
a4820 75 72 63 65 2e 62 75 66 66 65 72 20 3d 20 74 68 urce.buffer = th
a4830 69 73 2e 5f 62 75 66 66 65 72 2e 67 65 74 28 29 is._buffer.get()
a4840 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f ;.. /
a4850 2f 73 65 74 20 74 68 65 20 6c 6f 6f 70 69 6e 67 /set the looping
a4860 20 70 72 6f 70 65 72 74 69 65 73 0a 09 20 20 20 properties..
a4870 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 if (thi
a4880 73 2e 5f 6c 6f 6f 70 29 20 7b 0a 09 20 20 20 20 s._loop) {..
a4890 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
a48a0 2e 5f 73 6f 75 72 63 65 2e 6c 6f 6f 70 20 3d 20 ._source.loop =
a48b0 74 68 69 73 2e 5f 6c 6f 6f 70 3b 0a 09 20 20 20 this._loop;..
a48c0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
a48d0 73 2e 5f 73 6f 75 72 63 65 2e 6c 6f 6f 70 53 74 s._source.loopSt
a48e0 61 72 74 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 art = this.toSec
a48f0 6f 6e 64 73 28 74 68 69 73 2e 5f 6c 6f 6f 70 53 onds(this._loopS
a4900 74 61 72 74 29 3b 0a 09 20 20 20 20 20 20 20 20 tart);..
a4910 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 6f this._so
a4920 75 72 63 65 2e 6c 6f 6f 70 45 6e 64 20 3d 20 74 urce.loopEnd = t
a4930 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 68 his.toSeconds(th
a4940 69 73 2e 5f 6c 6f 6f 70 45 6e 64 29 3b 0a 09 20 is._loopEnd);..
a4950 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
a4960 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
a4970 20 20 20 20 20 2f 2f 69 66 20 69 74 27 73 20 6e //if it's n
a4980 6f 74 20 6c 6f 6f 70 69 6e 67 2c 20 73 65 74 20 ot looping, set
a4990 74 68 65 20 73 74 61 74 65 20 63 68 61 6e 67 65 the state change
a49a0 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 at the end of t
a49b0 68 65 20 73 61 6d 70 6c 65 0a 09 20 20 20 20 20 he sample..
a49c0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
a49d0 5f 73 74 61 74 65 2e 73 65 74 53 74 61 74 65 41 _state.setStateA
a49e0 74 54 69 6d 65 28 54 6f 6e 65 2e 53 74 61 74 65 tTime(Tone.State
a49f0 2e 53 74 6f 70 70 65 64 2c 20 73 74 61 72 74 54 .Stopped, startT
a4a00 69 6d 65 20 2b 20 64 75 72 61 74 69 6f 6e 29 3b ime + duration);
a4a10 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
a4a20 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 61 . //a
a4a30 6e 64 20 6f 74 68 65 72 20 70 72 6f 70 65 72 74 nd other propert
a4a40 69 65 73 0a 09 20 20 20 20 20 20 20 20 20 20 20 ies..
a4a50 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e 70 6c this._source.pl
a4a60 61 79 62 61 63 6b 52 61 74 65 2e 76 61 6c 75 65 aybackRate.value
a4a70 20 3d 20 74 68 69 73 2e 5f 70 6c 61 79 62 61 63 = this._playbac
a4a80 6b 52 61 74 65 3b 0a 09 20 20 20 20 20 20 20 20 kRate;..
a4a90 20 20 20 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 this._source
a4aa0 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 6f 75 .connect(this.ou
a4ab0 74 70 75 74 29 3b 0a 09 20 20 20 20 20 20 20 20 tput);..
a4ac0 20 20 20 20 2f 2f 73 74 61 72 74 20 69 74 0a 09 //start it..
a4ad0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
a4ae0 74 68 69 73 2e 5f 6c 6f 6f 70 29 20 7b 0a 09 20 this._loop) {..
a4af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f /
a4b00 2f 6d 6f 64 69 66 79 20 74 68 65 20 6f 66 66 73 /modify the offs
a4b10 65 74 20 69 66 20 69 74 27 73 20 67 72 65 61 74 et if it's great
a4b20 65 72 20 74 68 61 6e 20 74 68 65 20 6c 6f 6f 70 er than the loop
a4b30 20 74 69 6d 65 0a 09 20 20 20 20 20 20 20 20 20 time..
a4b40 20 20 20 20 20 20 20 76 61 72 20 6c 6f 6f 70 45 var loopE
a4b50 6e 64 20 3d 20 74 68 69 73 2e 5f 73 6f 75 72 63 nd = this._sourc
a4b60 65 2e 6c 6f 6f 70 45 6e 64 20 7c 7c 20 74 68 69 e.loopEnd || thi
a4b70 73 2e 5f 62 75 66 66 65 72 2e 64 75 72 61 74 69 s._buffer.durati
a4b80 6f 6e 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 on;..
a4b90 20 20 20 20 20 76 61 72 20 6c 6f 6f 70 53 74 61 var loopSta
a4ba0 72 74 20 3d 20 74 68 69 73 2e 5f 73 6f 75 72 63 rt = this._sourc
a4bb0 65 2e 6c 6f 6f 70 53 74 61 72 74 3b 0a 09 20 20 e.loopStart;..
a4bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va
a4bd0 72 20 6c 6f 6f 70 44 75 72 61 74 69 6f 6e 20 3d r loopDuration =
a4be0 20 6c 6f 6f 70 45 6e 64 20 2d 20 6c 6f 6f 70 53 loopEnd - loopS
a4bf0 74 61 72 74 3b 0a 09 20 20 20 20 20 20 20 20 20 tart;..
a4c00 20 20 20 20 20 20 20 69 66 20 28 6f 66 66 73 65 if (offse
a4c10 74 20 3e 20 6c 6f 6f 70 45 6e 64 29 20 7b 0a 09 t > loopEnd) {..
a4c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a4c30 20 20 20 20 2f 2f 6d 6f 76 65 20 74 68 65 20 6f //move the o
a4c40 66 66 73 65 74 20 62 61 63 6b 0a 09 20 20 20 20 ffset back..
a4c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a4c60 77 68 69 6c 65 20 28 6f 66 66 73 65 74 20 3e 20 while (offset >
a4c70 6c 6f 6f 70 45 6e 64 29 20 7b 0a 09 20 20 20 20 loopEnd) {..
a4c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a4c90 20 20 20 20 6f 66 66 73 65 74 20 2d 3d 20 6c 6f offset -= lo
a4ca0 6f 70 44 75 72 61 74 69 6f 6e 3b 0a 09 20 20 20 opDuration;..
a4cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a4cc0 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
a4cd0 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
a4ce0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 6f 75 this._sou
a4cf0 72 63 65 2e 73 74 61 72 74 28 73 74 61 72 74 54 rce.start(startT
a4d00 69 6d 65 2c 20 6f 66 66 73 65 74 29 3b 0a 09 20 ime, offset);..
a4d10 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
a4d20 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
a4d30 20 20 20 20 20 74 68 69 73 2e 5f 73 6f 75 72 63 this._sourc
a4d40 65 2e 73 74 61 72 74 28 73 74 61 72 74 54 69 6d e.start(startTim
a4d50 65 2c 20 6f 66 66 73 65 74 2c 20 64 75 72 61 74 e, offset, durat
a4d60 69 6f 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 20 ion);..
a4d70 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 20 }.. }
a4d80 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 else {..
a4d90 20 20 20 20 74 68 72 6f 77 20 45 72 72 6f 72 28 throw Error(
a4da0 27 54 6f 6e 65 2e 50 6c 61 79 65 72 3a 20 74 72 'Tone.Player: tr
a4db0 69 65 64 20 74 6f 20 73 74 61 72 74 20 50 6c 61 ied to start Pla
a4dc0 79 65 72 20 62 65 66 6f 72 65 20 74 68 65 20 62 yer before the b
a4dd0 75 66 66 65 72 20 77 61 73 20 6c 6f 61 64 65 64 uffer was loaded
a4de0 27 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 ');.. }..
a4df0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
a4e00 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
a4e10 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 74 6f 70 /**... * Stop
a4e20 20 70 6c 61 79 62 61 63 6b 2e 0a 09 09 20 2a 20 playback.... *
a4e30 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a 20 20 @private... *
a4e40 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 5b @param {Time} [
a4e50 74 69 6d 65 3d 6e 6f 77 5d 0a 09 09 20 2a 20 20 time=now]... *
a4e60 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 50 @returns {Tone.P
a4e70 6c 61 79 65 72 7d 20 74 68 69 73 0a 09 09 20 2a layer} this... *
a4e80 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 50 6c 61 79 /.. Tone.Play
a4e90 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 5f 73 74 er.prototype._st
a4ea0 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 74 op = function (t
a4eb0 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ime) {..
a4ec0 69 66 20 28 74 68 69 73 2e 5f 73 6f 75 72 63 65 if (this._source
a4ed0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
a4ee0 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e 73 74 this._source.st
a4ef0 6f 70 28 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 op(this.toSecond
a4f00 73 28 74 69 6d 65 29 29 3b 0a 09 20 20 20 20 20 s(time));..
a4f10 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 6f 75 this._sou
a4f20 72 63 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 rce = null;..
a4f30 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
a4f40 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 return this;..
a4f50 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
a4f60 20 2a 20 20 53 65 65 6b 20 74 6f 20 61 20 73 70 * Seek to a sp
a4f70 65 63 69 66 69 63 20 74 69 6d 65 20 69 6e 20 74 ecific time in t
a4f80 68 65 20 70 6c 61 79 65 72 27 73 20 62 75 66 66 he player's buff
a4f90 65 72 2e 20 49 66 20 74 68 65 20 0a 09 09 20 2a er. If the ... *
a4fa0 20 20 73 6f 75 72 63 65 20 69 73 20 6e 6f 20 6c source is no l
a4fb0 6f 6e 67 65 72 20 70 6c 61 79 69 6e 67 20 61 74 onger playing at
a4fc0 20 74 68 61 74 20 74 69 6d 65 2c 20 69 74 20 77 that time, it w
a4fd0 69 6c 6c 20 73 74 6f 70 2e 0a 09 09 20 2a 20 20 ill stop.... *
a4fe0 49 66 20 79 6f 75 20 73 65 65 6b 20 74 6f 20 61 If you seek to a
a4ff0 20 74 69 6d 65 20 74 68 61 74 20 0a 09 09 20 2a time that ... *
a5000 20 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 @param {Time}
a5010 6f 66 66 73 65 74 20 54 68 65 20 74 69 6d 65 20 offset The time
a5020 74 6f 20 73 65 65 6b 20 74 6f 2e 0a 09 09 20 2a to seek to.... *
a5030 20 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 3d 7d @param {Time=}
a5040 20 74 69 6d 65 20 54 68 65 20 74 69 6d 65 20 66 time The time f
a5050 6f 72 20 74 68 65 20 73 65 65 6b 20 65 76 65 6e or the seek even
a5060 74 20 74 6f 20 6f 63 63 75 72 2e 0a 09 09 20 2a t to occur.... *
a5070 20 20 40 72 65 74 75 72 6e 20 7b 54 6f 6e 65 2e @return {Tone.
a5080 50 6c 61 79 65 72 7d 20 74 68 69 73 0a 09 09 20 Player} this...
a5090 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
a50a0 20 73 6f 75 72 63 65 2e 73 74 61 72 74 28 30 2e source.start(0.
a50b0 32 29 3b 0a 09 09 20 2a 20 73 6f 75 72 63 65 2e 2);... * source.
a50c0 73 74 6f 70 28 30 2e 34 29 3b 0a 09 09 20 2a 2f stop(0.4);... */
a50d0 0a 09 20 20 20 20 54 6f 6e 65 2e 50 6c 61 79 65 .. Tone.Playe
a50e0 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73 65 65 6b r.prototype.seek
a50f0 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6f 66 66 = function (off
a5100 73 65 74 2c 20 74 69 6d 65 29 20 7b 0a 09 20 20 set, time) {..
a5110 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 time = thi
a5120 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 s.toSeconds(time
a5130 29 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 );.. if (
a5140 74 68 69 73 2e 5f 73 74 61 74 65 2e 67 65 74 56 this._state.getV
a5150 61 6c 75 65 41 74 54 69 6d 65 28 74 69 6d 65 29 alueAtTime(time)
a5160 20 3d 3d 3d 20 54 6f 6e 65 2e 53 74 61 74 65 2e === Tone.State.
a5170 53 74 61 72 74 65 64 29 20 7b 0a 09 20 20 20 20 Started) {..
a5180 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d offset =
a5190 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 this.toSeconds(
a51a0 6f 66 66 73 65 74 29 3b 0a 09 20 20 20 20 20 20 offset);..
a51b0 20 20 20 20 20 20 2f 2f 20 69 66 20 69 74 27 73 // if it's
a51c0 20 63 75 72 72 65 6e 74 6c 79 20 70 6c 61 79 69 currently playi
a51d0 6e 67 2c 20 73 74 6f 70 20 69 74 0a 09 20 20 20 ng, stop it..
a51e0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 this._s
a51f0 74 6f 70 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 top(time);..
a5200 20 20 20 20 20 20 20 20 2f 2f 72 65 73 74 61 72 //restar
a5210 74 20 69 74 20 61 74 20 74 68 65 20 67 69 76 65 t it at the give
a5220 6e 20 74 69 6d 65 0a 09 20 20 20 20 20 20 20 20 n time..
a5230 20 20 20 20 74 68 69 73 2e 5f 73 74 61 72 74 28 this._start(
a5240 74 69 6d 65 2c 20 6f 66 66 73 65 74 29 3b 0a 09 time, offset);..
a5250 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
a5260 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
a5270 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
a5280 0a 09 09 20 2a 20 20 53 65 74 20 74 68 65 20 6c ... * Set the l
a5290 6f 6f 70 20 73 74 61 72 74 20 61 6e 64 20 65 6e oop start and en
a52a0 64 2e 20 57 69 6c 6c 20 6f 6e 6c 79 20 6c 6f 6f d. Will only loo
a52b0 70 20 69 66 20 6c 6f 6f 70 20 69 73 20 0a 09 09 p if loop is ...
a52c0 20 2a 20 20 73 65 74 20 74 6f 20 74 72 75 65 2e * set to true.
a52d0 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b ... * @param {
a52e0 54 69 6d 65 7d 20 6c 6f 6f 70 53 74 61 72 74 20 Time} loopStart
a52f0 54 68 65 20 6c 6f 6f 70 20 65 6e 64 20 74 69 6d The loop end tim
a5300 65 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b e... * @param {
a5310 54 69 6d 65 7d 20 6c 6f 6f 70 45 6e 64 20 54 68 Time} loopEnd Th
a5320 65 20 6c 6f 6f 70 20 65 6e 64 20 74 69 6d 65 0a e loop end time.
a5330 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
a5340 54 6f 6e 65 2e 50 6c 61 79 65 72 7d 20 74 68 69 Tone.Player} thi
a5350 73 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 s... * @example
a5360 0a 09 09 20 2a 20 2f 2f 6c 6f 6f 70 20 30 2e 31 ... * //loop 0.1
a5370 20 73 65 63 6f 6e 64 73 20 6f 66 20 74 68 65 20 seconds of the
a5380 66 69 6c 65 2e 20 0a 09 09 20 2a 20 70 6c 61 79 file. ... * play
a5390 65 72 2e 73 65 74 4c 6f 6f 70 50 6f 69 6e 74 73 er.setLoopPoints
a53a0 28 30 2e 32 2c 20 30 2e 33 29 3b 0a 09 09 20 2a (0.2, 0.3);... *
a53b0 20 70 6c 61 79 65 72 2e 6c 6f 6f 70 20 3d 20 74 player.loop = t
a53c0 72 75 65 3b 0a 09 09 20 2a 2f 0a 09 20 20 20 20 rue;... */..
a53d0 54 6f 6e 65 2e 50 6c 61 79 65 72 2e 70 72 6f 74 Tone.Player.prot
a53e0 6f 74 79 70 65 2e 73 65 74 4c 6f 6f 70 50 6f 69 otype.setLoopPoi
a53f0 6e 74 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 nts = function (
a5400 6c 6f 6f 70 53 74 61 72 74 2c 20 6c 6f 6f 70 45 loopStart, loopE
a5410 6e 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 nd) {.. t
a5420 68 69 73 2e 6c 6f 6f 70 53 74 61 72 74 20 3d 20 his.loopStart =
a5430 6c 6f 6f 70 53 74 61 72 74 3b 0a 09 20 20 20 20 loopStart;..
a5440 20 20 20 20 74 68 69 73 2e 6c 6f 6f 70 45 6e 64 this.loopEnd
a5450 20 3d 20 6c 6f 6f 70 45 6e 64 3b 0a 09 20 20 20 = loopEnd;..
a5460 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
a5470 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
a5480 2a 2a 0a 09 09 20 2a 20 49 66 20 6c 6f 6f 70 20 **... * If loop
a5490 69 73 20 74 72 75 65 2c 20 74 68 65 20 6c 6f 6f is true, the loo
a54a0 70 20 77 69 6c 6c 20 73 74 61 72 74 20 61 74 20 p will start at
a54b0 74 68 69 73 20 70 6f 73 69 74 69 6f 6e 2e 20 0a this position. .
a54c0 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 .. * @memberOf T
a54d0 6f 6e 65 2e 50 6c 61 79 65 72 23 0a 09 09 20 2a one.Player#... *
a54e0 20 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a 09 09 @type {Time}...
a54f0 20 2a 20 40 6e 61 6d 65 20 6c 6f 6f 70 53 74 61 * @name loopSta
a5500 72 74 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 rt... */.. Ob
a5510 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
a5520 72 74 79 28 54 6f 6e 65 2e 50 6c 61 79 65 72 2e rty(Tone.Player.
a5530 70 72 6f 74 6f 74 79 70 65 2c 20 27 6c 6f 6f 70 prototype, 'loop
a5540 53 74 61 72 74 27 2c 20 7b 0a 09 20 20 20 20 20 Start', {..
a5550 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e get: function
a5560 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 () {..
a5570 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f return this._
a5580 6c 6f 6f 70 53 74 61 72 74 3b 0a 09 20 20 20 20 loopStart;..
a5590 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 },..
a55a0 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6c set: function (l
a55b0 6f 6f 70 53 74 61 72 74 29 20 7b 0a 09 20 20 20 oopStart) {..
a55c0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c this._l
a55d0 6f 6f 70 53 74 61 72 74 20 3d 20 6c 6f 6f 70 53 oopStart = loopS
a55e0 74 61 72 74 3b 0a 09 20 20 20 20 20 20 20 20 20 tart;..
a55f0 20 20 20 69 66 20 28 74 68 69 73 2e 5f 73 6f 75 if (this._sou
a5600 72 63 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 rce) {..
a5610 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 6f this._so
a5620 75 72 63 65 2e 6c 6f 6f 70 53 74 61 72 74 20 3d urce.loopStart =
a5630 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 this.toSeconds(
a5640 6c 6f 6f 70 53 74 61 72 74 29 3b 0a 09 20 20 20 loopStart);..
a5650 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
a5660 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
a5670 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 49 66 20 /**... * If
a5680 6c 6f 6f 70 20 69 73 20 74 72 75 65 2c 20 74 68 loop is true, th
a5690 65 20 6c 6f 6f 70 20 77 69 6c 6c 20 65 6e 64 20 e loop will end
a56a0 61 74 20 74 68 69 73 20 70 6f 73 69 74 69 6f 6e at this position
a56b0 2e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 .... * @memberOf
a56c0 20 54 6f 6e 65 2e 50 6c 61 79 65 72 23 0a 09 09 Tone.Player#...
a56d0 20 2a 20 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a * @type {Time}.
a56e0 09 09 20 2a 20 40 6e 61 6d 65 20 6c 6f 6f 70 45 .. * @name loopE
a56f0 6e 64 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 nd... */.. Ob
a5700 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
a5710 72 74 79 28 54 6f 6e 65 2e 50 6c 61 79 65 72 2e rty(Tone.Player.
a5720 70 72 6f 74 6f 74 79 70 65 2c 20 27 6c 6f 6f 70 prototype, 'loop
a5730 45 6e 64 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 End', {..
a5740 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
a5750 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
a5760 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6c 6f return this._lo
a5770 6f 70 45 6e 64 3b 0a 09 20 20 20 20 20 20 20 20 opEnd;..
a5780 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a },.. set:
a5790 20 66 75 6e 63 74 69 6f 6e 20 28 6c 6f 6f 70 45 function (loopE
a57a0 6e 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 nd) {..
a57b0 20 20 20 74 68 69 73 2e 5f 6c 6f 6f 70 45 6e 64 this._loopEnd
a57c0 20 3d 20 6c 6f 6f 70 45 6e 64 3b 0a 09 20 20 20 = loopEnd;..
a57d0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 if (thi
a57e0 73 2e 5f 73 6f 75 72 63 65 29 20 7b 0a 09 20 20 s._source) {..
a57f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
a5800 69 73 2e 5f 73 6f 75 72 63 65 2e 6c 6f 6f 70 45 is._source.loopE
a5810 6e 64 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f nd = this.toSeco
a5820 6e 64 73 28 6c 6f 6f 70 45 6e 64 29 3b 0a 09 20 nds(loopEnd);..
a5830 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
a5840 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b }.. });
a5850 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 .. /**... * T
a5860 68 65 20 61 75 64 69 6f 20 62 75 66 66 65 72 20 he audio buffer
a5870 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65 belonging to the
a5880 20 70 6c 61 79 65 72 2e 20 0a 09 09 20 2a 20 40 player. ... * @
a5890 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 50 6c memberOf Tone.Pl
a58a0 61 79 65 72 23 0a 09 09 20 2a 20 40 74 79 70 65 ayer#... * @type
a58b0 20 7b 54 6f 6e 65 2e 42 75 66 66 65 72 7d 0a 09 {Tone.Buffer}..
a58c0 09 20 2a 20 40 6e 61 6d 65 20 62 75 66 66 65 72 . * @name buffer
a58d0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 ... */.. Obje
a58e0 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
a58f0 79 28 54 6f 6e 65 2e 50 6c 61 79 65 72 2e 70 72 y(Tone.Player.pr
a5900 6f 74 6f 74 79 70 65 2c 20 27 62 75 66 66 65 72 ototype, 'buffer
a5910 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 ', {.. ge
a5920 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b t: function () {
a5930 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
a5940 74 75 72 6e 20 74 68 69 73 2e 5f 62 75 66 66 65 turn this._buffe
a5950 72 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 r;.. },..
a5960 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e set: fun
a5970 63 74 69 6f 6e 20 28 62 75 66 66 65 72 29 20 7b ction (buffer) {
a5980 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
a5990 69 73 2e 5f 62 75 66 66 65 72 2e 73 65 74 28 62 is._buffer.set(b
a59a0 75 66 66 65 72 29 3b 0a 09 20 20 20 20 20 20 20 uffer);..
a59b0 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
a59c0 20 2f 2a 2a 0a 09 09 20 2a 20 49 66 20 74 68 65 /**... * If the
a59d0 20 62 75 66 66 65 72 20 73 68 6f 75 6c 64 20 6c buffer should l
a59e0 6f 6f 70 20 6f 6e 63 65 20 69 74 27 73 20 6f 76 oop once it's ov
a59f0 65 72 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 er. ... * @membe
a5a00 72 4f 66 20 54 6f 6e 65 2e 50 6c 61 79 65 72 23 rOf Tone.Player#
a5a10 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 62 6f 6f ... * @type {boo
a5a20 6c 65 61 6e 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 lean}... * @name
a5a30 20 6c 6f 6f 70 0a 09 09 20 2a 2f 0a 09 20 20 20 loop... */..
a5a40 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
a5a50 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 6c 61 79 operty(Tone.Play
a5a60 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 6c er.prototype, 'l
a5a70 6f 6f 70 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 oop', {..
a5a80 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
a5a90 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
a5aa0 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6c 6f return this._lo
a5ab0 6f 70 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a op;.. },.
a5ac0 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
a5ad0 6e 63 74 69 6f 6e 20 28 6c 6f 6f 70 29 20 7b 0a nction (loop) {.
a5ae0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
a5af0 73 2e 5f 6c 6f 6f 70 20 3d 20 6c 6f 6f 70 3b 0a s._loop = loop;.
a5b00 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
a5b10 28 74 68 69 73 2e 5f 73 6f 75 72 63 65 29 20 7b (this._source) {
a5b20 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
a5b30 20 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e 6c this._source.l
a5b40 6f 6f 70 20 3d 20 6c 6f 6f 70 3b 0a 09 20 20 20 oop = loop;..
a5b50 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 }..
a5b60 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
a5b70 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 /**... * The
a5b80 20 70 6c 61 79 62 61 63 6b 20 73 70 65 65 64 2e playback speed.
a5b90 20 31 20 69 73 20 6e 6f 72 6d 61 6c 20 73 70 65 1 is normal spe
a5ba0 65 64 2e 20 54 68 69 73 20 69 73 20 6e 6f 74 20 ed. This is not
a5bb0 61 20 73 69 67 6e 61 6c 20 62 65 63 61 75 73 65 a signal because
a5bc0 0a 09 09 20 2a 20 53 61 66 61 72 69 20 61 6e 64 ... * Safari and
a5bd0 20 69 4f 53 20 63 75 72 72 65 6e 74 6c 79 20 64 iOS currently d
a5be0 6f 6e 27 74 20 73 75 70 70 6f 72 74 20 70 6c 61 on't support pla
a5bf0 79 62 61 63 6b 52 61 74 65 20 61 73 20 61 20 73 ybackRate as a s
a5c00 69 67 6e 61 6c 2e 0a 09 09 20 2a 20 40 6d 65 6d ignal.... * @mem
a5c10 62 65 72 4f 66 20 54 6f 6e 65 2e 50 6c 61 79 65 berOf Tone.Playe
a5c20 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 6e r#... * @type {n
a5c30 75 6d 62 65 72 7d 0a 09 09 20 2a 20 40 6e 61 6d umber}... * @nam
a5c40 65 20 70 6c 61 79 62 61 63 6b 52 61 74 65 0a 09 e playbackRate..
a5c50 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
a5c60 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
a5c70 54 6f 6e 65 2e 50 6c 61 79 65 72 2e 70 72 6f 74 Tone.Player.prot
a5c80 6f 74 79 70 65 2c 20 27 70 6c 61 79 62 61 63 6b otype, 'playback
a5c90 52 61 74 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 Rate', {..
a5ca0 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
a5cb0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
a5cc0 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 70 return this._p
a5cd0 6c 61 79 62 61 63 6b 52 61 74 65 3b 0a 09 20 20 laybackRate;..
a5ce0 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 20 },..
a5cf0 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 set: function
a5d00 28 72 61 74 65 29 20 7b 0a 09 20 20 20 20 20 20 (rate) {..
a5d10 20 20 20 20 20 20 74 68 69 73 2e 5f 70 6c 61 79 this._play
a5d20 62 61 63 6b 52 61 74 65 20 3d 20 72 61 74 65 3b backRate = rate;
a5d30 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
a5d40 20 28 74 68 69 73 2e 5f 73 6f 75 72 63 65 29 20 (this._source)
a5d50 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
a5d60 20 20 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e this._source.
a5d70 70 6c 61 79 62 61 63 6b 52 61 74 65 2e 76 61 6c playbackRate.val
a5d80 75 65 20 3d 20 72 61 74 65 3b 0a 09 20 20 20 20 ue = rate;..
a5d90 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
a5da0 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
a5db0 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 /**... * The
a5dc0 64 69 72 65 63 74 69 6f 6e 20 74 68 65 20 62 75 direction the bu
a5dd0 66 66 65 72 20 73 68 6f 75 6c 64 20 70 6c 61 79 ffer should play
a5de0 20 69 6e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 in... * @member
a5df0 4f 66 20 54 6f 6e 65 2e 50 6c 61 79 65 72 23 0a Of Tone.Player#.
a5e00 09 09 20 2a 20 40 74 79 70 65 20 7b 62 6f 6f 6c .. * @type {bool
a5e10 65 61 6e 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 ean}... * @name
a5e20 72 65 76 65 72 73 65 0a 09 09 20 2a 2f 0a 09 20 reverse... */..
a5e30 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 Object.define
a5e40 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 50 6c Property(Tone.Pl
a5e50 61 79 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 ayer.prototype,
a5e60 27 72 65 76 65 72 73 65 27 2c 20 7b 0a 09 20 20 'reverse', {..
a5e70 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
a5e80 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
a5e90 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
a5ea0 73 2e 5f 62 75 66 66 65 72 2e 72 65 76 65 72 73 s._buffer.revers
a5eb0 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 e;.. },..
a5ec0 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e set: fun
a5ed0 63 74 69 6f 6e 20 28 72 65 76 29 20 7b 0a 09 20 ction (rev) {..
a5ee0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
a5ef0 5f 62 75 66 66 65 72 2e 72 65 76 65 72 73 65 20 _buffer.reverse
a5f00 3d 20 72 65 76 3b 0a 09 20 20 20 20 20 20 20 20 = rev;..
a5f10 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
a5f20 2f 2a 2a 0a 09 09 20 2a 20 20 44 69 73 70 6f 73 /**... * Dispos
a5f30 65 20 61 6e 64 20 64 69 73 63 6f 6e 6e 65 63 74 e and disconnect
a5f40 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 .... * @return
a5f50 7b 54 6f 6e 65 2e 50 6c 61 79 65 72 7d 20 74 68 {Tone.Player} th
a5f60 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
a5f70 6e 65 2e 50 6c 61 79 65 72 2e 70 72 6f 74 6f 74 ne.Player.protot
a5f80 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 ype.dispose = fu
a5f90 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
a5fa0 20 20 20 20 20 54 6f 6e 65 2e 53 6f 75 72 63 65 Tone.Source
a5fb0 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f .prototype.dispo
a5fc0 73 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 se.call(this);..
a5fd0 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
a5fe0 2e 5f 73 6f 75 72 63 65 20 21 3d 3d 20 6e 75 6c ._source !== nul
a5ff0 6c 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 l) {..
a6000 20 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e 64 this._source.d
a6010 69 73 63 6f 6e 6e 65 63 74 28 29 3b 0a 09 20 20 isconnect();..
a6020 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
a6030 73 6f 75 72 63 65 20 3d 20 6e 75 6c 6c 3b 0a 09 source = null;..
a6040 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
a6050 20 20 20 74 68 69 73 2e 5f 62 75 66 66 65 72 2e this._buffer.
a6060 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
a6070 20 20 20 20 74 68 69 73 2e 5f 62 75 66 66 65 72 this._buffer
a6080 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
a6090 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
a60a0 20 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 };.. retu
a60b0 72 6e 20 54 6f 6e 65 2e 50 6c 61 79 65 72 3b 0a rn Tone.Player;.
a60c0 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e .});..Module(fun
a60d0 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 ction (Tone) {..
a60e0 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
a60f0 20 2a 20 20 40 63 6c 61 73 73 20 53 61 6d 70 6c * @class Sampl
a6100 65 72 20 77 72 61 70 73 20 54 6f 6e 65 2e 50 6c er wraps Tone.Pl
a6110 61 79 65 72 20 69 6e 20 61 6e 20 41 6d 70 6c 69 ayer in an Ampli
a6120 74 75 64 65 45 6e 76 65 6c 6f 70 65 2e 0a 09 09 tudeEnvelope....
a6130 20 2a 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 72 *... * @constr
a6140 75 63 74 6f 72 0a 09 09 20 2a 20 20 40 65 78 74 uctor... * @ext
a6150 65 6e 64 73 20 7b 54 6f 6e 65 2e 49 6e 73 74 72 ends {Tone.Instr
a6160 75 6d 65 6e 74 7d 0a 09 09 20 2a 20 20 40 70 61 ument}... * @pa
a6170 72 61 6d 20 7b 53 74 72 69 6e 67 7d 20 75 72 6c ram {String} url
a6180 20 74 68 65 20 75 72 6c 20 6f 66 20 74 68 65 20 the url of the
a6190 61 75 64 69 6f 20 66 69 6c 65 0a 09 09 20 2a 20 audio file... *
a61a0 20 40 70 61 72 61 6d 20 7b 46 75 6e 63 74 69 6f @param {Functio
a61b0 6e 3d 7d 20 6f 6e 6c 6f 61 64 20 54 68 65 20 63 n=} onload The c
a61c0 61 6c 6c 62 61 63 6b 20 74 6f 20 69 6e 76 6f 6b allback to invok
a61d0 65 20 77 68 65 6e 20 74 68 65 20 73 61 6d 70 6c e when the sampl
a61e0 65 20 69 73 20 6c 6f 61 64 65 64 2e 0a 09 09 20 e is loaded....
a61f0 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
a6200 20 76 61 72 20 73 61 6d 70 6c 65 72 20 3d 20 6e var sampler = n
a6210 65 77 20 53 61 6d 70 6c 65 72 28 22 2e 2f 61 75 ew Sampler("./au
a6220 64 69 6f 2f 63 61 73 69 6f 2f 41 31 2e 6d 70 33 dio/casio/A1.mp3
a6230 22 2c 20 66 75 6e 63 74 69 6f 6e 28 29 7b 0a 09 ", function(){..
a6240 09 20 2a 20 09 2f 2f 72 65 70 69 74 63 68 20 74 . * .//repitch t
a6250 68 65 20 73 61 6d 70 6c 65 20 64 6f 77 6e 20 61 he sample down a
a6260 20 68 61 6c 66 20 73 74 65 70 0a 09 09 20 2a 20 half step... *
a6270 09 73 61 6d 70 6c 65 72 2e 74 72 69 67 67 65 72 .sampler.trigger
a6280 41 74 74 61 63 6b 28 2d 31 29 3b 0a 09 09 20 2a Attack(-1);... *
a6290 20 7d 29 2e 74 6f 4d 61 73 74 65 72 28 29 3b 0a }).toMaster();.
a62a0 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
a62b0 53 61 6d 70 6c 65 72 20 3d 20 66 75 6e 63 74 69 Sampler = functi
a62c0 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 on () {..
a62d0 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 var options = t
a62e0 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 his.optionsObjec
a62f0 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 t(arguments, [..
a6300 20 20 20 20 20 20 20 20 20 20 20 20 27 75 72 6c 'url
a6310 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ',..
a6320 27 6f 6e 6c 6f 61 64 27 0a 09 20 20 20 20 20 20 'onload'..
a6330 20 20 5d 2c 20 54 6f 6e 65 2e 53 61 6d 70 6c 65 ], Tone.Sample
a6340 72 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 20 20 r.defaults);..
a6350 20 20 20 20 20 20 54 6f 6e 65 2e 49 6e 73 74 72 Tone.Instr
a6360 75 6d 65 6e 74 2e 63 61 6c 6c 28 74 68 69 73 2c ument.call(this,
a6370 20 6f 70 74 69 6f 6e 73 29 3b 0a 09 20 20 20 20 options);..
a6380 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
a6390 68 65 20 73 61 6d 70 6c 65 20 70 6c 61 79 65 72 he sample player
a63a0 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b ..... * @type {
a63b0 54 6f 6e 65 2e 50 6c 61 79 65 72 7d 0a 09 09 09 Tone.Player}....
a63c0 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
a63d0 73 2e 70 6c 61 79 65 72 20 3d 20 6e 65 77 20 54 s.player = new T
a63e0 6f 6e 65 2e 50 6c 61 79 65 72 28 6f 70 74 69 6f one.Player(optio
a63f0 6e 73 2e 75 72 6c 2c 20 6f 70 74 69 6f 6e 73 2e ns.url, options.
a6400 6f 6e 6c 6f 61 64 29 3b 0a 09 20 20 20 20 20 20 onload);..
a6410 20 20 74 68 69 73 2e 70 6c 61 79 65 72 2e 72 65 this.player.re
a6420 74 72 69 67 67 65 72 20 3d 20 74 72 75 65 3b 0a trigger = true;.
a6430 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
a6440 20 2a 20 20 54 68 65 20 61 6d 70 6c 69 74 75 64 * The amplitud
a6450 65 20 65 6e 76 65 6c 6f 70 65 2e 20 0a 09 09 09 e envelope. ....
a6460 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e * @type {Tone.
a6470 41 6d 70 6c 69 74 75 64 65 45 6e 76 65 6c 6f 70 AmplitudeEnvelop
a6480 65 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 e}.... */..
a6490 20 20 20 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 this.envelope
a64a0 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 41 6d 70 6c = new Tone.Ampl
a64b0 69 74 75 64 65 45 6e 76 65 6c 6f 70 65 28 6f 70 itudeEnvelope(op
a64c0 74 69 6f 6e 73 2e 65 6e 76 65 6c 6f 70 65 29 3b tions.envelope);
a64d0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 .. this.p
a64e0 6c 61 79 65 72 2e 63 68 61 69 6e 28 74 68 69 73 layer.chain(this
a64f0 2e 65 6e 76 65 6c 6f 70 65 2c 20 74 68 69 73 2e .envelope, this.
a6500 6f 75 74 70 75 74 29 3b 0a 09 20 20 20 20 20 20 output);..
a6510 20 20 74 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 this._readOnly
a6520 28 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 ([..
a6530 27 70 6c 61 79 65 72 27 2c 0a 09 20 20 20 20 20 'player',..
a6540 20 20 20 20 20 20 20 27 65 6e 76 65 6c 6f 70 65 'envelope
a6550 27 0a 09 20 20 20 20 20 20 20 20 5d 29 3b 0a 09 '.. ]);..
a6560 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 6f this.loo
a6570 70 20 3d 20 6f 70 74 69 6f 6e 73 2e 6c 6f 6f 70 p = options.loop
a6580 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
a6590 72 65 76 65 72 73 65 20 3d 20 6f 70 74 69 6f 6e reverse = option
a65a0 73 2e 72 65 76 65 72 73 65 3b 0a 09 20 20 20 20 s.reverse;..
a65b0 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 };.. Tone.ext
a65c0 65 6e 64 28 54 6f 6e 65 2e 53 61 6d 70 6c 65 72 end(Tone.Sampler
a65d0 2c 20 54 6f 6e 65 2e 49 6e 73 74 72 75 6d 65 6e , Tone.Instrumen
a65e0 74 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 t);.. /**...
a65f0 2a 20 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 * the default p
a6600 61 72 61 6d 65 74 65 72 73 0a 09 09 20 2a 20 20 arameters... *
a6610 40 73 74 61 74 69 63 0a 09 09 20 2a 2f 0a 09 20 @static... */..
a6620 20 20 20 54 6f 6e 65 2e 53 61 6d 70 6c 65 72 2e Tone.Sampler.
a6630 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 20 defaults = {..
a6640 20 20 20 20 20 20 27 6f 6e 6c 6f 61 64 27 3a 20 'onload':
a6650 54 6f 6e 65 2e 6e 6f 4f 70 2c 0a 09 20 20 20 20 Tone.noOp,..
a6660 20 20 20 20 27 6c 6f 6f 70 27 3a 20 66 61 6c 73 'loop': fals
a6670 65 2c 0a 09 20 20 20 20 20 20 20 20 27 72 65 76 e,.. 'rev
a6680 65 72 73 65 27 3a 20 66 61 6c 73 65 2c 0a 09 20 erse': false,..
a6690 20 20 20 20 20 20 20 27 65 6e 76 65 6c 6f 70 65 'envelope
a66a0 27 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 ': {..
a66b0 20 20 27 61 74 74 61 63 6b 27 3a 20 30 2e 30 30 'attack': 0.00
a66c0 31 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 1,..
a66d0 27 64 65 63 61 79 27 3a 20 30 2c 0a 09 20 20 20 'decay': 0,..
a66e0 20 20 20 20 20 20 20 20 20 27 73 75 73 74 61 69 'sustai
a66f0 6e 27 3a 20 31 2c 0a 09 20 20 20 20 20 20 20 20 n': 1,..
a6700 20 20 20 20 27 72 65 6c 65 61 73 65 27 3a 20 30 'release': 0
a6710 2e 31 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 .1.. }..
a6720 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
a6730 09 20 2a 20 20 54 72 69 67 67 65 72 20 74 68 65 . * Trigger the
a6740 20 73 74 61 72 74 20 6f 66 20 74 68 65 20 73 61 start of the sa
a6750 6d 70 6c 65 2e 20 0a 09 09 20 2a 20 20 40 70 61 mple. ... * @pa
a6760 72 61 6d 20 7b 49 6e 74 65 72 76 61 6c 7d 20 5b ram {Interval} [
a6770 70 69 74 63 68 3d 30 5d 20 54 68 65 20 61 6d 6f pitch=0] The amo
a6780 75 6e 74 20 74 68 65 20 73 61 6d 70 6c 65 20 73 unt the sample s
a6790 68 6f 75 6c 64 0a 09 09 20 2a 20 20 20 20 20 20 hould... *
a67a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a67b0 20 20 20 20 20 20 20 20 62 65 20 72 65 70 69 74 be repit
a67c0 63 68 65 64 2e 20 0a 09 09 20 2a 20 20 40 70 61 ched. ... * @pa
a67d0 72 61 6d 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 ram {Time} [time
a67e0 3d 6e 6f 77 5d 20 54 68 65 20 74 69 6d 65 20 77 =now] The time w
a67f0 68 65 6e 20 74 68 65 20 73 61 6d 70 6c 65 20 73 hen the sample s
a6800 68 6f 75 6c 64 20 73 74 61 72 74 0a 09 09 20 2a hould start... *
a6810 20 20 40 70 61 72 61 6d 20 7b 4e 6f 72 6d 61 6c @param {Normal
a6820 52 61 6e 67 65 7d 20 5b 76 65 6c 6f 63 69 74 79 Range} [velocity
a6830 3d 31 5d 20 54 68 65 20 76 65 6c 6f 63 69 74 79 =1] The velocity
a6840 20 6f 66 20 74 68 65 20 6e 6f 74 65 0a 09 09 20 of the note...
a6850 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 6f 6e * @returns {Ton
a6860 65 2e 53 61 6d 70 6c 65 72 7d 20 74 68 69 73 0a e.Sampler} this.
a6870 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 .. * @example..
a6880 09 20 2a 20 73 61 6d 70 6c 65 72 2e 74 72 69 67 . * sampler.trig
a6890 67 65 72 41 74 74 61 63 6b 28 30 2c 20 22 2b 30 gerAttack(0, "+0
a68a0 2e 31 22 2c 20 30 2e 35 29 3b 0a 09 09 20 2a 2f .1", 0.5);... */
a68b0 0a 09 20 20 20 20 54 6f 6e 65 2e 53 61 6d 70 6c .. Tone.Sampl
a68c0 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 74 72 69 er.prototype.tri
a68d0 67 67 65 72 41 74 74 61 63 6b 20 3d 20 66 75 6e ggerAttack = fun
a68e0 63 74 69 6f 6e 20 28 70 69 74 63 68 2c 20 74 69 ction (pitch, ti
a68f0 6d 65 2c 20 76 65 6c 6f 63 69 74 79 29 20 7b 0a me, velocity) {.
a6900 09 20 20 20 20 20 20 20 20 74 69 6d 65 20 3d 20 . time =
a6910 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 this.toSeconds(t
a6920 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 70 ime);.. p
a6930 69 74 63 68 20 3d 20 74 68 69 73 2e 64 65 66 61 itch = this.defa
a6940 75 6c 74 41 72 67 28 70 69 74 63 68 2c 20 30 29 ultArg(pitch, 0)
a6950 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
a6960 70 6c 61 79 65 72 2e 70 6c 61 79 62 61 63 6b 52 player.playbackR
a6970 61 74 65 20 3d 20 74 68 69 73 2e 69 6e 74 65 72 ate = this.inter
a6980 76 61 6c 54 6f 46 72 65 71 75 65 6e 63 79 52 61 valToFrequencyRa
a6990 74 69 6f 28 70 69 74 63 68 29 3b 0a 09 20 20 20 tio(pitch);..
a69a0 20 20 20 20 20 74 68 69 73 2e 70 6c 61 79 65 72 this.player
a69b0 2e 73 74 61 72 74 28 74 69 6d 65 29 3b 0a 09 20 .start(time);..
a69c0 20 20 20 20 20 20 20 74 68 69 73 2e 65 6e 76 65 this.enve
a69d0 6c 6f 70 65 2e 74 72 69 67 67 65 72 41 74 74 61 lope.triggerAtta
a69e0 63 6b 28 74 69 6d 65 2c 20 76 65 6c 6f 63 69 74 ck(time, velocit
a69f0 79 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 y);.. ret
a6a00 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
a6a10 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
a6a20 20 53 74 61 72 74 20 74 68 65 20 72 65 6c 65 61 Start the relea
a6a30 73 65 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 se portion of th
a6a40 65 20 73 61 6d 70 6c 65 2e 20 57 69 6c 6c 20 73 e sample. Will s
a6a50 74 6f 70 20 74 68 65 20 73 61 6d 70 6c 65 20 6f top the sample o
a6a60 6e 63 65 20 74 68 65 20 0a 09 09 20 2a 20 20 65 nce the ... * e
a6a70 6e 76 65 6c 6f 70 65 20 68 61 73 20 66 75 6c 6c nvelope has full
a6a80 79 20 72 65 6c 65 61 73 65 64 2e 20 0a 09 09 20 y released. ...
a6a90 2a 20 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d * ... * @param
a6aa0 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e 6f {Time} [time=no
a6ab0 77 5d 20 54 68 65 20 74 69 6d 65 20 77 68 65 6e w] The time when
a6ac0 20 74 68 65 20 6e 6f 74 65 20 73 68 6f 75 6c 64 the note should
a6ad0 20 72 65 6c 65 61 73 65 0a 09 09 20 2a 20 20 40 release... * @
a6ae0 72 65 74 75 72 6e 73 20 7b 54 6f 6e 65 2e 53 61 returns {Tone.Sa
a6af0 6d 70 6c 65 72 7d 20 74 68 69 73 0a 09 09 20 2a mpler} this... *
a6b00 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 @example... *
a6b10 73 61 6d 70 6c 65 72 2e 74 72 69 67 67 65 72 52 sampler.triggerR
a6b20 65 6c 65 61 73 65 28 29 3b 0a 09 09 20 2a 2f 0a elease();... */.
a6b30 09 20 20 20 20 54 6f 6e 65 2e 53 61 6d 70 6c 65 . Tone.Sample
a6b40 72 2e 70 72 6f 74 6f 74 79 70 65 2e 74 72 69 67 r.prototype.trig
a6b50 67 65 72 52 65 6c 65 61 73 65 20 3d 20 66 75 6e gerRelease = fun
a6b60 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 ction (time) {..
a6b70 20 20 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 time = t
a6b80 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 his.toSeconds(ti
a6b90 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 me);.. th
a6ba0 69 73 2e 65 6e 76 65 6c 6f 70 65 2e 74 72 69 67 is.envelope.trig
a6bb0 67 65 72 52 65 6c 65 61 73 65 28 74 69 6d 65 29 gerRelease(time)
a6bc0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
a6bd0 70 6c 61 79 65 72 2e 73 74 6f 70 28 74 68 69 73 player.stop(this
a6be0 2e 74 6f 53 65 63 6f 6e 64 73 28 74 68 69 73 2e .toSeconds(this.
a6bf0 65 6e 76 65 6c 6f 70 65 2e 72 65 6c 65 61 73 65 envelope.release
a6c00 29 20 2b 20 74 69 6d 65 29 3b 0a 09 20 20 20 20 ) + time);..
a6c10 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
a6c20 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
a6c30 2a 0a 09 09 20 2a 20 20 54 72 69 67 67 65 72 20 *... * Trigger
a6c40 74 68 65 20 61 74 74 61 63 6b 20 61 6e 64 20 74 the attack and t
a6c50 68 65 6e 20 74 68 65 20 72 65 6c 65 61 73 65 20 hen the release
a6c60 61 66 74 65 72 20 74 68 65 20 64 75 72 61 74 69 after the durati
a6c70 6f 6e 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 on. ... * @para
a6c80 6d 20 20 7b 49 6e 74 65 72 76 61 6c 7d 20 69 6e m {Interval} in
a6c90 74 65 72 76 61 6c 20 20 20 20 20 54 68 65 20 69 terval The i
a6ca0 6e 74 65 72 76 61 6c 20 69 6e 20 68 61 6c 66 2d nterval in half-
a6cb0 73 74 65 70 73 20 74 68 61 74 20 74 68 65 0a 09 steps that the..
a6cc0 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 . *
a6cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a6ce0 20 20 20 20 20 73 61 6d 70 6c 65 20 73 68 6f 75 sample shou
a6cf0 6c 64 20 62 65 20 70 69 74 63 68 20 73 68 69 66 ld be pitch shif
a6d00 74 65 64 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 ted.... * @para
a6d10 6d 20 20 7b 54 69 6d 65 7d 20 64 75 72 61 74 69 m {Time} durati
a6d20 6f 6e 20 48 6f 77 20 6c 6f 6e 67 20 74 68 65 20 on How long the
a6d30 6e 6f 74 65 20 73 68 6f 75 6c 64 20 62 65 20 68 note should be h
a6d40 65 6c 64 20 66 6f 72 20 62 65 66 6f 72 65 0a 09 eld for before..
a6d50 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 . *
a6d60 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 69 tri
a6d70 67 67 65 72 69 6e 67 20 74 68 65 20 72 65 6c 65 ggering the rele
a6d80 61 73 65 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 ase.... * @para
a6d90 6d 20 7b 54 69 6d 65 7d 20 5b 74 69 6d 65 3d 6e m {Time} [time=n
a6da0 6f 77 5d 20 20 57 68 65 6e 20 74 68 65 20 6e 6f ow] When the no
a6db0 74 65 20 73 68 6f 75 6c 64 20 62 65 20 74 72 69 te should be tri
a6dc0 67 67 65 72 65 64 2e 0a 09 09 20 2a 20 20 40 70 ggered.... * @p
a6dd0 61 72 61 6d 20 20 7b 4e 6f 72 6d 61 6c 52 61 6e aram {NormalRan
a6de0 67 65 7d 20 5b 76 65 6c 6f 63 69 74 79 3d 31 5d ge} [velocity=1]
a6df0 20 54 68 65 20 76 65 6c 6f 63 69 74 79 20 74 68 The velocity th
a6e00 65 20 6e 6f 74 65 20 73 68 6f 75 6c 64 20 62 65 e note should be
a6e10 20 74 72 69 67 67 65 72 65 64 20 61 74 2e 0a 09 triggered at...
a6e20 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b 54 . * @returns {T
a6e30 6f 6e 65 2e 53 61 6d 70 6c 65 72 7d 20 74 68 69 one.Sampler} thi
a6e40 73 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 s... * @example
a6e50 0a 09 09 20 2a 20 2f 2f 74 72 69 67 67 65 72 20 ... * //trigger
a6e60 74 68 65 20 75 6e 70 69 74 63 68 65 64 20 6e 6f the unpitched no
a6e70 74 65 20 66 6f 72 20 74 68 65 20 64 75 72 61 74 te for the durat
a6e80 69 6f 6e 20 6f 66 20 61 6e 20 38 74 68 20 6e 6f ion of an 8th no
a6e90 74 65 0a 09 09 20 2a 20 73 79 6e 74 68 2e 74 72 te... * synth.tr
a6ea0 69 67 67 65 72 41 74 74 61 63 6b 52 65 6c 65 61 iggerAttackRelea
a6eb0 73 65 28 30 2c 20 22 38 6e 22 29 3b 0a 09 09 20 se(0, "8n");...
a6ec0 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
a6ed0 65 2e 53 61 6d 70 6c 65 72 23 0a 09 09 20 2a 20 e.Sampler#... *
a6ee0 20 40 6e 61 6d 65 20 74 72 69 67 67 65 72 41 74 @name triggerAt
a6ef0 74 61 63 6b 52 65 6c 65 61 73 65 0a 09 09 20 2a tackRelease... *
a6f00 20 20 40 6d 65 74 68 6f 64 20 74 72 69 67 67 65 @method trigge
a6f10 72 41 74 74 61 63 6b 52 65 6c 65 61 73 65 0a 09 rAttackRelease..
a6f20 09 20 2a 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 . */.. /**...
a6f30 20 2a 20 49 66 20 74 68 65 20 6f 75 74 70 75 74 * If the output
a6f40 20 73 61 6d 70 6c 65 20 73 68 6f 75 6c 64 20 6c sample should l
a6f50 6f 6f 70 20 6f 72 20 6e 6f 74 2e 0a 09 09 20 2a oop or not.... *
a6f60 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e @memberOf Tone.
a6f70 53 61 6d 70 6c 65 72 23 0a 09 09 20 2a 20 40 74 Sampler#... * @t
a6f80 79 70 65 20 7b 6e 75 6d 62 65 72 7c 73 74 72 69 ype {number|stri
a6f90 6e 67 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6c ng}... * @name l
a6fa0 6f 6f 70 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f oop... */.. O
a6fb0 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 bject.defineProp
a6fc0 65 72 74 79 28 54 6f 6e 65 2e 53 61 6d 70 6c 65 erty(Tone.Sample
a6fd0 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 6c 6f r.prototype, 'lo
a6fe0 6f 70 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 op', {..
a6ff0 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 get: function ()
a7000 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
a7010 72 65 74 75 72 6e 20 74 68 69 73 2e 70 6c 61 79 return this.play
a7020 65 72 2e 6c 6f 6f 70 3b 0a 09 20 20 20 20 20 20 er.loop;..
a7030 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
a7040 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6c 6f 6f t: function (loo
a7050 70 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 p) {..
a7060 20 20 74 68 69 73 2e 70 6c 61 79 65 72 2e 6c 6f this.player.lo
a7070 6f 70 20 3d 20 6c 6f 6f 70 3b 0a 09 20 20 20 20 op = loop;..
a7080 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 }.. });..
a7090 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 /**... * The
a70a0 20 64 69 72 65 63 74 69 6f 6e 20 74 68 65 20 62 direction the b
a70b0 75 66 66 65 72 20 73 68 6f 75 6c 64 20 70 6c 61 uffer should pla
a70c0 79 20 69 6e 0a 09 09 20 2a 20 40 6d 65 6d 62 65 y in... * @membe
a70d0 72 4f 66 20 54 6f 6e 65 2e 53 61 6d 70 6c 65 72 rOf Tone.Sampler
a70e0 23 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 62 6f #... * @type {bo
a70f0 6f 6c 65 61 6e 7d 0a 09 09 20 2a 20 40 6e 61 6d olean}... * @nam
a7100 65 20 72 65 76 65 72 73 65 0a 09 09 20 2a 2f 0a e reverse... */.
a7110 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 . Object.defi
a7120 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e neProperty(Tone.
a7130 53 61 6d 70 6c 65 72 2e 70 72 6f 74 6f 74 79 70 Sampler.prototyp
a7140 65 2c 20 27 72 65 76 65 72 73 65 27 2c 20 7b 0a e, 'reverse', {.
a7150 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
a7160 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
a7170 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
a7180 74 68 69 73 2e 70 6c 61 79 65 72 2e 72 65 76 65 this.player.reve
a7190 72 73 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c rse;.. },
a71a0 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 .. set: f
a71b0 75 6e 63 74 69 6f 6e 20 28 72 65 76 29 20 7b 0a unction (rev) {.
a71c0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
a71d0 73 2e 70 6c 61 79 65 72 2e 72 65 76 65 72 73 65 s.player.reverse
a71e0 20 3d 20 72 65 76 3b 0a 09 20 20 20 20 20 20 20 = rev;..
a71f0 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
a7200 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 62 75 /**... * The bu
a7210 66 66 65 72 20 74 6f 20 70 6c 61 79 2e 0a 09 09 ffer to play....
a7220 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e * @memberOf Ton
a7230 65 2e 53 61 6d 70 6c 65 72 23 0a 09 09 20 2a 20 e.Sampler#... *
a7240 40 74 79 70 65 20 7b 54 6f 6e 65 2e 42 75 66 66 @type {Tone.Buff
a7250 65 72 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 62 er}... * @name b
a7260 75 66 66 65 72 0a 09 09 20 2a 2f 0a 09 20 20 20 uffer... */..
a7270 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
a7280 6f 70 65 72 74 79 28 54 6f 6e 65 2e 53 61 6d 70 operty(Tone.Samp
a7290 6c 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 ler.prototype, '
a72a0 62 75 66 66 65 72 27 2c 20 7b 0a 09 20 20 20 20 buffer', {..
a72b0 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
a72c0 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
a72d0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
a72e0 70 6c 61 79 65 72 2e 62 75 66 66 65 72 3b 0a 09 player.buffer;..
a72f0 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 },..
a7300 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f set: functio
a7310 6e 20 28 62 75 66 66 29 20 7b 0a 09 20 20 20 20 n (buff) {..
a7320 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 6c 61 this.pla
a7330 79 65 72 2e 62 75 66 66 65 72 20 3d 20 62 75 66 yer.buffer = buf
a7340 66 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 f;.. }..
a7350 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
a7360 09 09 20 2a 20 20 43 6c 65 61 6e 20 75 70 2e 0a .. * Clean up..
a7370 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
a7380 54 6f 6e 65 2e 53 61 6d 70 6c 65 72 7d 20 74 68 Tone.Sampler} th
a7390 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f is... */.. To
a73a0 6e 65 2e 53 61 6d 70 6c 65 72 2e 70 72 6f 74 6f ne.Sampler.proto
a73b0 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 type.dispose = f
a73c0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
a73d0 20 20 20 20 20 20 54 6f 6e 65 2e 49 6e 73 74 72 Tone.Instr
a73e0 75 6d 65 6e 74 2e 70 72 6f 74 6f 74 79 70 65 2e ument.prototype.
a73f0 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 68 69 dispose.call(thi
a7400 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 s);.. thi
a7410 73 2e 5f 77 72 69 74 61 62 6c 65 28 5b 0a 09 20 s._writable([..
a7420 20 20 20 20 20 20 20 20 20 20 20 27 70 6c 61 79 'play
a7430 65 72 27 2c 0a 09 20 20 20 20 20 20 20 20 20 20 er',..
a7440 20 20 27 65 6e 76 65 6c 6f 70 65 27 0a 09 20 20 'envelope'..
a7450 20 20 20 20 20 20 5d 29 3b 0a 09 20 20 20 20 20 ]);..
a7460 20 20 20 74 68 69 73 2e 70 6c 61 79 65 72 2e 64 this.player.d
a7470 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
a7480 20 20 20 74 68 69 73 2e 70 6c 61 79 65 72 20 3d this.player =
a7490 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
a74a0 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 2e 64 69 this.envelope.di
a74b0 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
a74c0 20 20 74 68 69 73 2e 65 6e 76 65 6c 6f 70 65 20 this.envelope
a74d0 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
a74e0 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 return this;..
a74f0 20 20 20 7d 3b 0a 09 20 20 20 20 72 65 74 75 72 };.. retur
a7500 6e 20 54 6f 6e 65 2e 53 61 6d 70 6c 65 72 3b 0a n Tone.Sampler;.
a7510 09 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e .});..Module(fun
a7520 63 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 ction (Tone) {..
a7530 20 20 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
a7540 20 2a 20 20 40 63 6c 61 73 73 20 4d 61 70 73 20 * @class Maps
a7550 61 20 4e 6f 72 6d 61 6c 52 61 6e 67 65 20 5b 30 a NormalRange [0
a7560 2c 20 31 5d 20 74 6f 20 61 6e 20 41 75 64 69 6f , 1] to an Audio
a7570 52 61 6e 67 65 20 5b 2d 31 2c 20 31 5d 2e 20 0a Range [-1, 1]. .
a7580 09 09 20 2a 20 20 20 20 20 20 20 20 20 53 65 65 .. * See
a7590 20 61 6c 73 6f 20 54 6f 6e 65 2e 41 75 64 69 6f also Tone.Audio
a75a0 54 6f 47 61 69 6e 2e 20 0a 09 09 20 2a 0a 09 09 ToGain. ... *...
a75b0 20 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f * @extends {To
a75c0 6e 65 2e 53 69 67 6e 61 6c 42 61 73 65 7d 0a 09 ne.SignalBase}..
a75d0 09 20 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f . * @constructo
a75e0 72 0a 09 09 20 2a 20 20 40 65 78 61 6d 70 6c 65 r... * @example
a75f0 0a 09 09 20 2a 20 76 61 72 20 67 32 61 20 3d 20 ... * var g2a =
a7600 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 54 6f 41 new Tone.GainToA
a7610 75 64 69 6f 28 29 3b 0a 09 09 20 2a 2f 0a 09 20 udio();... */..
a7620 20 20 20 54 6f 6e 65 2e 47 61 69 6e 54 6f 41 75 Tone.GainToAu
a7630 64 69 6f 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 dio = function (
a7640 29 20 7b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a ) {.. /**
a7650 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 57 .... * @type {W
a7660 61 76 65 53 68 61 70 65 72 4e 6f 64 65 7d 0a 09 aveShaperNode}..
a7670 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
a7680 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
a7690 68 69 73 2e 5f 6e 6f 72 6d 20 3d 20 74 68 69 73 his._norm = this
a76a0 2e 69 6e 70 75 74 20 3d 20 74 68 69 73 2e 6f 75 .input = this.ou
a76b0 74 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e tput = new Tone.
a76c0 57 61 76 65 53 68 61 70 65 72 28 66 75 6e 63 74 WaveShaper(funct
a76d0 69 6f 6e 20 28 78 29 20 7b 0a 09 20 20 20 20 20 ion (x) {..
a76e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 61 return Ma
a76f0 74 68 2e 61 62 73 28 78 29 20 2a 20 32 20 2d 20 th.abs(x) * 2 -
a7700 31 3b 0a 09 20 20 20 20 20 20 20 20 7d 29 3b 0a 1;.. });.
a7710 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e . };.. Ton
a7720 65 2e 65 78 74 65 6e 64 28 54 6f 6e 65 2e 47 61 e.extend(Tone.Ga
a7730 69 6e 54 6f 41 75 64 69 6f 2c 20 54 6f 6e 65 2e inToAudio, Tone.
a7740 53 69 67 6e 61 6c 42 61 73 65 29 3b 0a 09 20 20 SignalBase);..
a7750 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 63 6c 65 61 /**... * clea
a7760 6e 20 75 70 0a 09 09 20 2a 20 20 40 72 65 74 75 n up... * @retu
a7770 72 6e 73 20 7b 54 6f 6e 65 2e 47 61 69 6e 54 6f rns {Tone.GainTo
a7780 41 75 64 69 6f 7d 20 74 68 69 73 0a 09 09 20 2a Audio} this... *
a7790 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 47 61 69 6e /.. Tone.Gain
a77a0 54 6f 41 75 64 69 6f 2e 70 72 6f 74 6f 74 79 70 ToAudio.prototyp
a77b0 65 2e 64 69 73 70 6f 73 65 20 3d 20 66 75 6e 63 e.dispose = func
a77c0 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
a77d0 20 20 20 54 6f 6e 65 2e 70 72 6f 74 6f 74 79 70 Tone.prototyp
a77e0 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c 6c 28 74 e.dispose.call(t
a77f0 68 69 73 29 3b 0a 09 20 20 20 20 20 20 20 20 74 his);.. t
a7800 68 69 73 2e 5f 6e 6f 72 6d 2e 64 69 73 70 6f 73 his._norm.dispos
a7810 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
a7820 69 73 2e 5f 6e 6f 72 6d 20 3d 20 6e 75 6c 6c 3b is._norm = null;
a7830 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
a7840 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
a7850 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e return Tone.
a7860 47 61 69 6e 54 6f 41 75 64 69 6f 3b 0a 09 7d 29 GainToAudio;..})
a7870 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 69 ;..Module(functi
a7880 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 20 on (Tone) {..
a7890 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 .. /**... *
a78a0 20 40 63 6c 61 73 73 20 4e 6f 72 6d 61 6c 69 7a @class Normaliz
a78b0 65 20 74 61 6b 65 73 20 61 6e 20 69 6e 70 75 74 e takes an input
a78c0 20 6d 69 6e 20 61 6e 64 20 6d 61 78 20 61 6e 64 min and max and
a78d0 20 6d 61 70 73 20 69 74 20 6c 69 6e 65 61 72 6c maps it linearl
a78e0 79 20 74 6f 20 4e 6f 72 6d 61 6c 52 61 6e 67 65 y to NormalRange
a78f0 20 5b 30 2c 31 5d 0a 09 09 20 2a 0a 09 09 20 2a [0,1]... *... *
a7900 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 @extends {Tone
a7910 2e 53 69 67 6e 61 6c 42 61 73 65 7d 0a 09 09 20 .SignalBase}...
a7920 2a 20 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a * @constructor.
a7930 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 6e 75 .. * @param {nu
a7940 6d 62 65 72 7d 20 69 6e 70 75 74 4d 69 6e 20 74 mber} inputMin t
a7950 68 65 20 6d 69 6e 20 69 6e 70 75 74 20 76 61 6c he min input val
a7960 75 65 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 ue... * @param
a7970 7b 6e 75 6d 62 65 72 7d 20 69 6e 70 75 74 4d 61 {number} inputMa
a7980 78 20 74 68 65 20 6d 61 78 20 69 6e 70 75 74 20 x the max input
a7990 76 61 6c 75 65 0a 09 09 20 2a 20 20 40 65 78 61 value... * @exa
a79a0 6d 70 6c 65 0a 09 09 20 2a 20 76 61 72 20 6e 6f mple... * var no
a79b0 72 6d 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 4e 6f rm = new Tone.No
a79c0 72 6d 61 6c 69 7a 65 28 32 2c 20 34 29 3b 0a 09 rmalize(2, 4);..
a79d0 09 20 2a 20 76 61 72 20 73 69 67 20 3d 20 6e 65 . * var sig = ne
a79e0 77 20 54 6f 6e 65 2e 53 69 67 6e 61 6c 28 33 29 w Tone.Signal(3)
a79f0 2e 63 6f 6e 6e 65 63 74 28 6e 6f 72 6d 29 3b 0a .connect(norm);.
a7a00 09 09 20 2a 20 2f 2f 6f 75 74 70 75 74 20 6f 66 .. * //output of
a7a10 20 6e 6f 72 6d 20 69 73 20 30 2e 35 2e 20 0a 09 norm is 0.5. ..
a7a20 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4e . */.. Tone.N
a7a30 6f 72 6d 61 6c 69 7a 65 20 3d 20 66 75 6e 63 74 ormalize = funct
a7a40 69 6f 6e 20 28 69 6e 70 75 74 4d 69 6e 2c 20 69 ion (inputMin, i
a7a50 6e 70 75 74 4d 61 78 29 20 7b 0a 09 20 20 20 20 nputMax) {..
a7a60 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 /**.... * t
a7a70 68 65 20 6d 69 6e 20 69 6e 70 75 74 20 76 61 6c he min input val
a7a80 75 65 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 ue.... * @type
a7a90 7b 6e 75 6d 62 65 72 7d 0a 09 09 09 20 2a 20 20 {number}.... *
a7aa0 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
a7ab0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 69 . this._i
a7ac0 6e 70 75 74 4d 69 6e 20 3d 20 74 68 69 73 2e 64 nputMin = this.d
a7ad0 65 66 61 75 6c 74 41 72 67 28 69 6e 70 75 74 4d efaultArg(inputM
a7ae0 69 6e 2c 20 30 29 3b 0a 09 20 20 20 20 20 20 20 in, 0);..
a7af0 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 74 68 65 20 /**.... * the
a7b00 6d 61 78 20 69 6e 70 75 74 20 76 61 6c 75 65 0a max input value.
a7b10 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 6e 75 ... * @type {nu
a7b20 6d 62 65 72 7d 0a 09 09 09 20 2a 20 20 40 70 72 mber}.... * @pr
a7b30 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 ivate.... */..
a7b40 20 20 20 20 20 20 74 68 69 73 2e 5f 69 6e 70 75 this._inpu
a7b50 74 4d 61 78 20 3d 20 74 68 69 73 2e 64 65 66 61 tMax = this.defa
a7b60 75 6c 74 41 72 67 28 69 6e 70 75 74 4d 61 78 2c ultArg(inputMax,
a7b70 20 31 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 1);.. /*
a7b80 2a 0a 09 09 09 20 2a 20 20 73 75 62 74 72 61 63 *.... * subtrac
a7b90 74 20 74 68 65 20 6d 69 6e 20 66 72 6f 6d 20 74 t the min from t
a7ba0 68 65 20 69 6e 70 75 74 0a 09 09 09 20 2a 20 20 he input.... *
a7bb0 40 74 79 70 65 20 7b 54 6f 6e 65 2e 41 64 64 7d @type {Tone.Add}
a7bc0 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
a7bd0 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
a7be0 20 74 68 69 73 2e 5f 73 75 62 20 3d 20 74 68 69 this._sub = thi
a7bf0 73 2e 69 6e 70 75 74 20 3d 20 6e 65 77 20 54 6f s.input = new To
a7c00 6e 65 2e 41 64 64 28 30 29 3b 0a 09 20 20 20 20 ne.Add(0);..
a7c10 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 64 /**.... * d
a7c20 69 76 69 64 65 20 62 79 20 74 68 65 20 64 69 66 ivide by the dif
a7c30 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e 20 ference between
a7c40 74 68 65 20 69 6e 70 75 74 20 61 6e 64 20 6f 75 the input and ou
a7c50 74 70 75 74 0a 09 09 09 20 2a 20 20 40 74 79 70 tput.... * @typ
a7c60 65 20 7b 54 6f 6e 65 2e 4d 75 6c 74 69 70 6c 79 e {Tone.Multiply
a7c70 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
a7c80 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
a7c90 20 20 74 68 69 73 2e 5f 64 69 76 20 3d 20 74 68 this._div = th
a7ca0 69 73 2e 6f 75 74 70 75 74 20 3d 20 6e 65 77 20 is.output = new
a7cb0 54 6f 6e 65 2e 4d 75 6c 74 69 70 6c 79 28 31 29 Tone.Multiply(1)
a7cc0 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e ;.. this.
a7cd0 5f 73 75 62 2e 63 6f 6e 6e 65 63 74 28 74 68 69 _sub.connect(thi
a7ce0 73 2e 5f 64 69 76 29 3b 0a 09 20 20 20 20 20 20 s._div);..
a7cf0 20 20 74 68 69 73 2e 5f 73 65 74 52 61 6e 67 65 this._setRange
a7d00 28 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 ();.. };..
a7d10 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 6f 6e Tone.extend(Ton
a7d20 65 2e 4e 6f 72 6d 61 6c 69 7a 65 2c 20 54 6f 6e e.Normalize, Ton
a7d30 65 2e 53 69 67 6e 61 6c 42 61 73 65 29 3b 0a 09 e.SignalBase);..
a7d40 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 /**... * The
a7d50 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20 74 minimum value t
a7d60 68 65 20 69 6e 70 75 74 20 73 69 67 6e 61 6c 20 he input signal
a7d70 77 69 6c 6c 20 72 65 61 63 68 2e 0a 09 09 20 2a will reach.... *
a7d80 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e @memberOf Tone.
a7d90 4e 6f 72 6d 61 6c 69 7a 65 23 0a 09 09 20 2a 20 Normalize#... *
a7da0 40 74 79 70 65 20 7b 6e 75 6d 62 65 72 7d 0a 09 @type {number}..
a7db0 09 20 2a 20 40 6e 61 6d 65 20 6d 69 6e 0a 09 09 . * @name min...
a7dc0 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
a7dd0 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
a7de0 6f 6e 65 2e 4e 6f 72 6d 61 6c 69 7a 65 2e 70 72 one.Normalize.pr
a7df0 6f 74 6f 74 79 70 65 2c 20 27 6d 69 6e 27 2c 20 ototype, 'min',
a7e00 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 {.. get:
a7e10 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 function () {..
a7e20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
a7e30 6e 20 74 68 69 73 2e 5f 69 6e 70 75 74 4d 69 6e n this._inputMin
a7e40 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 ;.. },..
a7e50 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 set: func
a7e60 74 69 6f 6e 20 28 6d 69 6e 29 20 7b 0a 09 20 20 tion (min) {..
a7e70 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
a7e80 69 6e 70 75 74 4d 69 6e 20 3d 20 6d 69 6e 3b 0a inputMin = min;.
a7e90 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
a7ea0 73 2e 5f 73 65 74 52 61 6e 67 65 28 29 3b 0a 09 s._setRange();..
a7eb0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d }.. }
a7ec0 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
a7ed0 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c The maximum val
a7ee0 75 65 20 74 68 65 20 69 6e 70 75 74 20 73 69 67 ue the input sig
a7ef0 6e 61 6c 20 77 69 6c 6c 20 72 65 61 63 68 2e 0a nal will reach..
a7f00 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 .. * @memberOf T
a7f10 6f 6e 65 2e 4e 6f 72 6d 61 6c 69 7a 65 23 0a 09 one.Normalize#..
a7f20 09 20 2a 20 40 74 79 70 65 20 7b 6e 75 6d 62 65 . * @type {numbe
a7f30 72 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6d 61 r}... * @name ma
a7f40 78 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a x... */.. Obj
a7f50 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
a7f60 74 79 28 54 6f 6e 65 2e 4e 6f 72 6d 61 6c 69 7a ty(Tone.Normaliz
a7f70 65 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 6d 61 e.prototype, 'ma
a7f80 78 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 x', {.. g
a7f90 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
a7fa0 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
a7fb0 65 74 75 72 6e 20 74 68 69 73 2e 5f 69 6e 70 75 eturn this._inpu
a7fc0 74 4d 61 78 3b 0a 09 20 20 20 20 20 20 20 20 7d tMax;.. }
a7fd0 2c 0a 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 ,.. set:
a7fe0 66 75 6e 63 74 69 6f 6e 20 28 6d 61 78 29 20 7b function (max) {
a7ff0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
a8000 69 73 2e 5f 69 6e 70 75 74 4d 61 78 20 3d 20 6d is._inputMax = m
a8010 61 78 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ax;..
a8020 20 74 68 69 73 2e 5f 73 65 74 52 61 6e 67 65 28 this._setRange(
a8030 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
a8040 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
a8050 09 09 20 2a 20 20 73 65 74 20 74 68 65 20 76 61 .. * set the va
a8060 6c 75 65 73 0a 09 09 20 2a 20 20 40 70 72 69 76 lues... * @priv
a8070 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ate... */.. T
a8080 6f 6e 65 2e 4e 6f 72 6d 61 6c 69 7a 65 2e 70 72 one.Normalize.pr
a8090 6f 74 6f 74 79 70 65 2e 5f 73 65 74 52 61 6e 67 ototype._setRang
a80a0 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 e = function ()
a80b0 7b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e {.. this.
a80c0 5f 73 75 62 2e 76 61 6c 75 65 20 3d 20 2d 74 68 _sub.value = -th
a80d0 69 73 2e 5f 69 6e 70 75 74 4d 69 6e 3b 0a 09 20 is._inputMin;..
a80e0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 64 69 76 this._div
a80f0 2e 76 61 6c 75 65 20 3d 20 31 20 2f 20 28 74 68 .value = 1 / (th
a8100 69 73 2e 5f 69 6e 70 75 74 4d 61 78 20 2d 20 74 is._inputMax - t
a8110 68 69 73 2e 5f 69 6e 70 75 74 4d 69 6e 29 3b 0a his._inputMin);.
a8120 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
a8130 0a 09 09 20 2a 20 20 63 6c 65 61 6e 20 75 70 0a ... * clean up.
a8140 09 09 20 2a 20 20 40 72 65 74 75 72 6e 73 20 7b .. * @returns {
a8150 54 6f 6e 65 2e 4e 6f 72 6d 61 6c 69 7a 65 7d 20 Tone.Normalize}
a8160 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 this... */..
a8170 54 6f 6e 65 2e 4e 6f 72 6d 61 6c 69 7a 65 2e 70 Tone.Normalize.p
a8180 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 rototype.dispose
a8190 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
a81a0 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 .. Tone.p
a81b0 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 rototype.dispose
a81c0 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 .call(this);..
a81d0 20 20 20 20 20 20 74 68 69 73 2e 5f 73 75 62 2e this._sub.
a81e0 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 dispose();..
a81f0 20 20 20 20 74 68 69 73 2e 5f 73 75 62 20 3d 20 this._sub =
a8200 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 null;.. t
a8210 68 69 73 2e 5f 64 69 76 2e 64 69 73 70 6f 73 65 his._div.dispose
a8220 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ();.. thi
a8230 73 2e 5f 64 69 76 20 3d 20 6e 75 6c 6c 3b 0a 09 s._div = null;..
a8240 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
a8250 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 his;.. };..
a8260 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 4e 6f return Tone.No
a8270 72 6d 61 6c 69 7a 65 3b 0a 09 7d 29 3b 0a 09 4d rmalize;..});..M
a8280 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 odule(function (
a8290 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 2f 2a 2a Tone) {.. /**
a82a0 0a 09 09 20 2a 20 20 40 63 6c 61 73 73 20 57 72 ... * @class Wr
a82b0 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 apper around the
a82c0 20 6e 61 74 69 76 65 20 42 75 66 66 65 72 53 6f native BufferSo
a82d0 75 72 63 65 4e 6f 64 65 2e 0a 09 09 20 2a 20 20 urceNode.... *
a82e0 40 70 61 72 61 6d 20 20 7b 41 75 64 69 6f 42 75 @param {AudioBu
a82f0 66 66 65 72 7c 54 6f 6e 65 2e 42 75 66 66 65 72 ffer|Tone.Buffer
a8300 7d 20 20 62 75 66 66 65 72 20 20 20 54 68 65 20 } buffer The
a8310 62 75 66 66 65 72 20 74 6f 20 70 6c 61 79 0a 09 buffer to play..
a8320 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 46 75 . * @param {Fu
a8330 6e 63 74 69 6f 6e 7d 20 20 6f 6e 65 6e 64 65 64 nction} onended
a8340 20 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 The callback t
a8350 6f 20 69 6e 76 6f 6b 65 20 77 68 65 6e 20 74 68 o invoke when th
a8360 65 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 e ... *
a8370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a8380 20 20 20 20 20 20 62 75 66 66 65 72 20 69 73 20 buffer is
a8390 64 6f 6e 65 20 70 6c 61 79 69 6e 67 2e 0a 09 09 done playing....
a83a0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 42 75 */.. Tone.Bu
a83b0 66 66 65 72 53 6f 75 72 63 65 20 3d 20 66 75 6e fferSource = fun
a83c0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
a83d0 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 var options
a83e0 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 = this.optionsOb
a83f0 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 ject(arguments,
a8400 5b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 [.. '
a8410 62 75 66 66 65 72 27 2c 0a 09 20 20 20 20 20 20 buffer',..
a8420 20 20 20 20 20 20 27 6f 6e 65 6e 64 65 64 27 0a 'onended'.
a8430 09 20 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 . ], Tone
a8440 2e 42 75 66 66 65 72 53 6f 75 72 63 65 2e 64 65 .BufferSource.de
a8450 66 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 faults);..
a8460 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
a8470 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 69 6e 76 callback to inv
a8480 6f 6b 65 20 61 66 74 65 72 20 74 68 65 20 0a 09 oke after the ..
a8490 09 09 20 2a 20 20 62 75 66 66 65 72 20 73 6f 75 .. * buffer sou
a84a0 72 63 65 20 69 73 20 64 6f 6e 65 20 70 6c 61 79 rce is done play
a84b0 69 6e 67 2e 20 0a 09 09 09 20 2a 20 20 40 74 79 ing. .... * @ty
a84c0 70 65 20 20 7b 46 75 6e 63 74 69 6f 6e 7d 0a 09 pe {Function}..
a84d0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
a84e0 68 69 73 2e 6f 6e 65 6e 64 65 64 20 3d 20 6f 70 his.onended = op
a84f0 74 69 6f 6e 73 2e 6f 6e 65 6e 64 65 64 3b 0a 09 tions.onended;..
a8500 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
a8510 2a 20 20 54 68 65 20 74 69 6d 65 20 74 68 61 74 * The time that
a8520 20 74 68 65 20 62 75 66 66 65 72 20 77 61 73 20 the buffer was
a8530 73 74 61 72 74 65 64 2e 0a 09 09 09 20 2a 20 20 started..... *
a8540 40 74 79 70 65 20 20 7b 4e 75 6d 62 65 72 7d 0a @type {Number}.
a8550 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
a8560 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
a8570 74 68 69 73 2e 5f 73 74 61 72 74 54 69 6d 65 20 this._startTime
a8580 3d 20 2d 31 3b 0a 09 20 20 20 20 20 20 20 20 2f = -1;.. /
a8590 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 74 69 **.... * The ti
a85a0 6d 65 20 74 68 61 74 20 74 68 65 20 62 75 66 66 me that the buff
a85b0 65 72 20 69 73 20 73 63 68 65 64 75 6c 65 64 20 er is scheduled
a85c0 74 6f 20 73 74 6f 70 2e 0a 09 09 09 20 2a 20 20 to stop..... *
a85d0 40 74 79 70 65 20 20 7b 4e 75 6d 62 65 72 7d 0a @type {Number}.
a85e0 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a ... * @private.
a85f0 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
a8600 74 68 69 73 2e 5f 73 74 6f 70 54 69 6d 65 20 3d this._stopTime =
a8610 20 2d 31 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a -1;.. /*
a8620 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 67 61 69 *.... * The gai
a8630 6e 20 6e 6f 64 65 20 77 68 69 63 68 20 65 6e 76 n node which env
a8640 65 6c 6f 70 65 73 20 74 68 65 20 42 75 66 66 65 elopes the Buffe
a8650 72 53 6f 75 72 63 65 0a 09 09 09 20 2a 20 20 40 rSource.... * @
a8660 74 79 70 65 20 20 7b 54 6f 6e 65 2e 47 61 69 6e type {Tone.Gain
a8670 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
a8680 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
a8690 20 20 74 68 69 73 2e 5f 67 61 69 6e 4e 6f 64 65 this._gainNode
a86a0 20 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 20 3d = this.output =
a86b0 20 6e 65 77 20 54 6f 6e 65 2e 47 61 69 6e 28 29 new Tone.Gain()
a86c0 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
a86d0 09 09 20 2a 20 20 54 68 65 20 62 75 66 66 65 72 .. * The buffer
a86e0 20 73 6f 75 72 63 65 0a 09 09 09 20 2a 20 20 40 source.... * @
a86f0 74 79 70 65 20 20 7b 41 75 64 69 6f 42 75 66 66 type {AudioBuff
a8700 65 72 53 6f 75 72 63 65 4e 6f 64 65 7d 0a 09 09 erSourceNode}...
a8710 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
a8720 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
a8730 69 73 2e 5f 73 6f 75 72 63 65 20 3d 20 74 68 69 is._source = thi
a8740 73 2e 63 6f 6e 74 65 78 74 2e 63 72 65 61 74 65 s.context.create
a8750 42 75 66 66 65 72 53 6f 75 72 63 65 28 29 3b 0a BufferSource();.
a8760 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 . this._s
a8770 6f 75 72 63 65 2e 63 6f 6e 6e 65 63 74 28 74 68 ource.connect(th
a8780 69 73 2e 5f 67 61 69 6e 4e 6f 64 65 29 3b 0a 09 is._gainNode);..
a8790 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
a87a0 2a 20 20 54 68 65 20 70 6c 61 79 62 61 63 6b 52 * The playbackR
a87b0 61 74 65 20 6f 66 20 74 68 65 20 62 75 66 66 65 ate of the buffe
a87c0 72 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b r.... * @type {
a87d0 50 6f 73 69 74 69 76 65 7d 0a 09 09 09 20 2a 20 Positive}.... *
a87e0 20 40 73 69 67 6e 61 6c 0a 09 09 09 20 2a 2f 0a @signal.... */.
a87f0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 6c . this.pl
a8800 61 79 62 61 63 6b 52 61 74 65 20 3d 20 6e 65 77 aybackRate = new
a8810 20 54 6f 6e 65 2e 50 61 72 61 6d 28 74 68 69 73 Tone.Param(this
a8820 2e 5f 73 6f 75 72 63 65 2e 70 6c 61 79 62 61 63 ._source.playbac
a8830 6b 52 61 74 65 2c 20 54 6f 6e 65 2e 54 79 70 65 kRate, Tone.Type
a8840 2e 50 6f 73 69 74 69 76 65 29 3b 0a 09 20 20 20 .Positive);..
a8850 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 /**.... *
a8860 54 68 65 20 66 61 64 65 49 6e 20 74 69 6d 65 20 The fadeIn time
a8870 6f 66 20 74 68 65 20 61 6d 70 6c 69 74 75 64 65 of the amplitude
a8880 20 65 6e 76 65 6c 6f 70 65 2e 0a 09 09 09 20 2a envelope..... *
a8890 20 20 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a 09 @type {Time}..
a88a0 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 .. */.. t
a88b0 68 69 73 2e 66 61 64 65 49 6e 20 3d 20 6f 70 74 his.fadeIn = opt
a88c0 69 6f 6e 73 2e 66 61 64 65 49 6e 3b 0a 09 20 20 ions.fadeIn;..
a88d0 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
a88e0 20 54 68 65 20 66 61 64 65 4f 75 74 20 74 69 6d The fadeOut tim
a88f0 65 20 6f 66 20 74 68 65 20 61 6d 70 6c 69 74 75 e of the amplitu
a8900 64 65 20 65 6e 76 65 6c 6f 70 65 2e 0a 09 09 09 de envelope.....
a8910 20 2a 20 20 40 74 79 70 65 20 7b 54 69 6d 65 7d * @type {Time}
a8920 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
a8930 20 74 68 69 73 2e 66 61 64 65 4f 75 74 20 3d 20 this.fadeOut =
a8940 6f 70 74 69 6f 6e 73 2e 66 61 64 65 4f 75 74 3b options.fadeOut;
a8950 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
a8960 09 20 2a 20 20 54 68 65 20 76 61 6c 75 65 20 74 . * The value t
a8970 68 61 74 20 74 68 65 20 62 75 66 66 65 72 20 72 hat the buffer r
a8980 61 6d 70 73 20 74 6f 0a 09 09 09 20 2a 20 20 40 amps to.... * @
a8990 74 79 70 65 20 7b 47 61 69 6e 7d 0a 09 09 09 20 type {Gain}....
a89a0 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 * @private....
a89b0 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 */.. this
a89c0 2e 5f 67 61 69 6e 20 3d 20 31 3b 0a 09 20 20 20 ._gain = 1;..
a89d0 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 54 /**.... * T
a89e0 68 65 20 6f 6e 65 6e 64 65 64 20 74 69 6d 65 6f he onended timeo
a89f0 75 74 0a 09 09 09 20 2a 20 40 74 79 70 65 20 7b ut.... * @type {
a8a00 4e 75 6d 62 65 72 7d 0a 09 09 09 20 2a 20 40 70 Number}.... * @p
a8a10 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 rivate.... */..
a8a20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f 6e 65 this._one
a8a30 6e 64 65 64 54 69 6d 65 6f 75 74 20 3d 20 2d 31 ndedTimeout = -1
a8a40 3b 0a 09 20 20 20 20 20 20 20 20 2f 2f 73 65 74 ;.. //set
a8a50 20 74 68 65 20 62 75 66 66 65 72 20 69 6e 69 74 the buffer init
a8a60 69 61 6c 6c 79 0a 09 20 20 20 20 20 20 20 20 69 ially.. i
a8a70 66 20 28 21 74 68 69 73 2e 69 73 55 6e 64 65 66 f (!this.isUndef
a8a80 28 6f 70 74 69 6f 6e 73 2e 62 75 66 66 65 72 29 (options.buffer)
a8a90 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
a8aa0 20 74 68 69 73 2e 62 75 66 66 65 72 20 3d 20 6f this.buffer = o
a8ab0 70 74 69 6f 6e 73 2e 62 75 66 66 65 72 3b 0a 09 ptions.buffer;..
a8ac0 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
a8ad0 20 20 20 74 68 69 73 2e 6c 6f 6f 70 20 3d 20 6f this.loop = o
a8ae0 70 74 69 6f 6e 73 2e 6c 6f 6f 70 3b 0a 09 20 20 ptions.loop;..
a8af0 20 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 };.. Tone.e
a8b00 78 74 65 6e 64 28 54 6f 6e 65 2e 42 75 66 66 65 xtend(Tone.Buffe
a8b10 72 53 6f 75 72 63 65 29 3b 0a 09 20 20 20 20 2f rSource);.. /
a8b20 2a 2a 0a 09 09 20 2a 20 20 54 68 65 20 64 65 66 **... * The def
a8b30 61 75 6c 74 73 0a 09 09 20 2a 20 20 40 63 6f 6e aults... * @con
a8b40 73 74 0a 09 09 20 2a 20 20 40 74 79 70 65 20 20 st... * @type
a8b50 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 {Object}... */..
a8b60 20 20 20 20 54 6f 6e 65 2e 42 75 66 66 65 72 53 Tone.BufferS
a8b70 6f 75 72 63 65 2e 64 65 66 61 75 6c 74 73 20 3d ource.defaults =
a8b80 20 7b 0a 09 20 20 20 20 20 20 20 20 27 6f 6e 65 {.. 'one
a8b90 6e 64 65 64 27 3a 20 54 6f 6e 65 2e 6e 6f 4f 70 nded': Tone.noOp
a8ba0 2c 0a 09 20 20 20 20 20 20 20 20 27 66 61 64 65 ,.. 'fade
a8bb0 49 6e 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 In': 0,..
a8bc0 20 27 66 61 64 65 4f 75 74 27 3a 20 30 0a 09 20 'fadeOut': 0..
a8bd0 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 };.. /**..
a8be0 09 20 2a 20 20 52 65 74 75 72 6e 73 20 74 68 65 . * Returns the
a8bf0 20 70 6c 61 79 62 61 63 6b 20 73 74 61 74 65 20 playback state
a8c00 6f 66 20 74 68 65 20 73 6f 75 72 63 65 2c 20 65 of the source, e
a8c10 69 74 68 65 72 20 22 73 74 61 72 74 65 64 22 20 ither "started"
a8c20 6f 72 20 22 73 74 6f 70 70 65 64 22 2e 0a 09 09 or "stopped"....
a8c30 20 2a 20 20 40 74 79 70 65 20 7b 54 6f 6e 65 2e * @type {Tone.
a8c40 53 74 61 74 65 7d 0a 09 09 20 2a 20 20 40 72 65 State}... * @re
a8c50 61 64 4f 6e 6c 79 0a 09 09 20 2a 20 20 40 6d 65 adOnly... * @me
a8c60 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 42 75 66 66 mberOf Tone.Buff
a8c70 65 72 53 6f 75 72 63 65 23 0a 09 09 20 2a 20 20 erSource#... *
a8c80 40 6e 61 6d 65 20 73 74 61 74 65 0a 09 09 20 2a @name state... *
a8c90 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
a8ca0 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
a8cb0 65 2e 42 75 66 66 65 72 53 6f 75 72 63 65 2e 70 e.BufferSource.p
a8cc0 72 6f 74 6f 74 79 70 65 2c 20 27 73 74 61 74 65 rototype, 'state
a8cd0 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 ', {.. ge
a8ce0 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b t: function () {
a8cf0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 76 61 .. va
a8d00 72 20 6e 6f 77 20 3d 20 74 68 69 73 2e 6e 6f 77 r now = this.now
a8d10 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ();..
a8d20 20 69 66 20 28 74 68 69 73 2e 5f 73 74 61 72 74 if (this._start
a8d30 54 69 6d 65 20 21 3d 3d 20 2d 31 20 26 26 20 6e Time !== -1 && n
a8d40 6f 77 20 3e 3d 20 74 68 69 73 2e 5f 73 74 61 72 ow >= this._star
a8d50 74 54 69 6d 65 20 26 26 20 6e 6f 77 20 3c 20 74 tTime && now < t
a8d60 68 69 73 2e 5f 73 74 6f 70 54 69 6d 65 29 20 7b his._stopTime) {
a8d70 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
a8d80 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e 53 74 return Tone.St
a8d90 61 74 65 2e 53 74 61 72 74 65 64 3b 0a 09 20 20 ate.Started;..
a8da0 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 } else
a8db0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
a8dc0 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 2e return Tone.
a8dd0 53 74 61 74 65 2e 53 74 6f 70 70 65 64 3b 0a 09 State.Stopped;..
a8de0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
a8df0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 }.. })
a8e00 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
a8e10 20 53 74 61 72 74 20 74 68 65 20 62 75 66 66 65 Start the buffe
a8e20 72 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 r... * @param
a8e30 7b 54 69 6d 65 7d 20 5b 73 74 61 72 74 54 69 6d {Time} [startTim
a8e40 65 3d 6e 6f 77 5d 20 57 68 65 6e 20 74 68 65 20 e=now] When the
a8e50 70 6c 61 79 65 72 20 73 68 6f 75 6c 64 20 73 74 player should st
a8e60 61 72 74 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 art.... * @para
a8e70 6d 20 20 7b 54 69 6d 65 7d 20 5b 6f 66 66 73 65 m {Time} [offse
a8e80 74 3d 30 5d 20 54 68 65 20 6f 66 66 73 65 74 20 t=0] The offset
a8e90 66 72 6f 6d 20 74 68 65 20 62 65 67 69 6e 6e 69 from the beginni
a8ea0 6e 67 20 6f 66 20 74 68 65 20 73 61 6d 70 6c 65 ng of the sample
a8eb0 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 20 ... *
a8ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a8ed0 20 20 20 20 20 20 74 6f 20 73 74 61 72 74 20 61 to start a
a8ee0 74 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d t. ... * @param
a8ef0 20 20 7b 54 69 6d 65 3d 7d 20 64 75 72 61 74 69 {Time=} durati
a8f00 6f 6e 20 48 6f 77 20 6c 6f 6e 67 20 74 68 65 20 on How long the
a8f10 73 61 6d 70 6c 65 20 73 68 6f 75 6c 64 20 70 6c sample should pl
a8f20 61 79 2e 20 49 66 20 6e 6f 20 64 75 72 61 74 69 ay. If no durati
a8f30 6f 6e 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 on... *
a8f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a8f50 20 20 20 20 20 20 20 69 73 20 67 69 76 65 6e 2c is given,
a8f60 20 69 74 20 77 69 6c 6c 20 64 65 66 61 75 6c 74 it will default
a8f70 20 74 6f 20 74 68 65 20 66 75 6c 6c 20 6c 65 6e to the full len
a8f80 67 74 68 20 0a 09 09 20 2a 20 20 20 20 20 20 20 gth ... *
a8f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a8fa0 20 20 20 20 20 20 20 20 20 6f 66 20 74 68 65 20 of the
a8fb0 73 61 6d 70 6c 65 20 28 6d 69 6e 75 73 20 61 6e sample (minus an
a8fc0 79 20 6f 66 66 73 65 74 29 0a 09 09 20 2a 20 20 y offset)... *
a8fd0 40 70 61 72 61 6d 20 20 7b 47 61 69 6e 7d 20 20 @param {Gain}
a8fe0 5b 67 61 69 6e 3d 31 5d 20 20 54 68 65 20 67 61 [gain=1] The ga
a8ff0 69 6e 20 74 6f 20 70 6c 61 79 20 74 68 65 20 62 in to play the b
a9000 75 66 66 65 72 20 62 61 63 6b 20 61 74 2e 0a 09 uffer back at...
a9010 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 . * @param {Ti
a9020 6d 65 3d 7d 20 20 66 61 64 65 49 6e 54 69 6d 65 me=} fadeInTime
a9030 20 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 66 The optional f
a9040 61 64 65 49 6e 20 72 61 6d 70 20 74 69 6d 65 2e adeIn ramp time.
a9050 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 ... * @return
a9060 7b 54 6f 6e 65 2e 42 75 66 66 65 72 53 6f 75 72 {Tone.BufferSour
a9070 63 65 7d 20 20 74 68 69 73 0a 09 09 20 2a 2f 0a ce} this... */.
a9080 09 20 20 20 20 54 6f 6e 65 2e 42 75 66 66 65 72 . Tone.Buffer
a9090 53 6f 75 72 63 65 2e 70 72 6f 74 6f 74 79 70 65 Source.prototype
a90a0 2e 73 74 61 72 74 20 3d 20 66 75 6e 63 74 69 6f .start = functio
a90b0 6e 20 28 74 69 6d 65 2c 20 6f 66 66 73 65 74 2c n (time, offset,
a90c0 20 64 75 72 61 74 69 6f 6e 2c 20 67 61 69 6e 2c duration, gain,
a90d0 20 66 61 64 65 49 6e 54 69 6d 65 29 20 7b 0a 09 fadeInTime) {..
a90e0 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
a90f0 2e 5f 73 74 61 72 74 54 69 6d 65 20 21 3d 3d 20 ._startTime !==
a9100 2d 31 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 -1) {..
a9110 20 20 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 throw new Err
a9120 6f 72 28 27 54 6f 6e 65 2e 42 75 66 66 65 72 53 or('Tone.BufferS
a9130 6f 75 72 63 65 3a 20 63 61 6e 20 6f 6e 6c 79 20 ource: can only
a9140 62 65 20 73 74 61 72 74 65 64 20 6f 6e 63 65 2e be started once.
a9150 27 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 ');.. }..
a9160 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
a9170 2e 62 75 66 66 65 72 29 20 7b 0a 09 20 20 20 20 .buffer) {..
a9180 20 20 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 time = t
a9190 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 his.toSeconds(ti
a91a0 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 me);..
a91b0 20 20 2f 2f 69 66 20 69 74 27 73 20 61 20 6c 6f //if it's a lo
a91c0 6f 70 20 74 68 65 20 64 65 66 61 75 6c 74 20 6f op the default o
a91d0 66 66 73 65 74 20 69 73 20 74 68 65 20 6c 6f 6f ffset is the loo
a91e0 70 73 74 61 72 74 20 70 6f 69 6e 74 0a 09 20 20 pstart point..
a91f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 68 if (th
a9200 69 73 2e 6c 6f 6f 70 29 20 7b 0a 09 20 20 20 20 is.loop) {..
a9210 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 offs
a9220 65 74 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c et = this.defaul
a9230 74 41 72 67 28 6f 66 66 73 65 74 2c 20 74 68 69 tArg(offset, thi
a9240 73 2e 6c 6f 6f 70 53 74 61 72 74 29 3b 0a 09 20 s.loopStart);..
a9250 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
a9260 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
a9270 20 20 20 20 20 2f 2f 6f 74 68 65 72 77 69 73 65 //otherwise
a9280 20 74 68 65 20 64 65 66 61 75 6c 74 20 6f 66 66 the default off
a9290 73 65 74 20 69 73 20 30 0a 09 20 20 20 20 20 20 set is 0..
a92a0 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 offset
a92b0 20 3d 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 = this.defaultA
a92c0 72 67 28 6f 66 66 73 65 74 2c 20 30 29 3b 0a 09 rg(offset, 0);..
a92d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
a92e0 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 offse
a92f0 74 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e t = this.toSecon
a9300 64 73 28 6f 66 66 73 65 74 29 3b 0a 09 20 20 20 ds(offset);..
a9310 20 20 20 20 20 20 20 20 20 2f 2f 74 68 65 20 76 //the v
a9320 61 6c 75 65 73 20 69 6e 20 73 65 63 6f 6e 64 73 alues in seconds
a9330 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 69 .. ti
a9340 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f me = this.toSeco
a9350 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 nds(time);..
a9360 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 6f this._so
a9370 75 72 63 65 2e 73 74 61 72 74 28 74 69 6d 65 2c urce.start(time,
a9380 20 6f 66 66 73 65 74 29 3b 0a 09 20 20 20 20 20 offset);..
a9390 20 20 20 20 20 20 20 67 61 69 6e 20 3d 20 74 68 gain = th
a93a0 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 67 61 is.defaultArg(ga
a93b0 69 6e 2c 20 31 29 3b 0a 09 20 20 20 20 20 20 20 in, 1);..
a93c0 20 20 20 20 20 74 68 69 73 2e 5f 67 61 69 6e 20 this._gain
a93d0 3d 20 67 61 69 6e 3b 0a 09 20 20 20 20 20 20 20 = gain;..
a93e0 20 20 20 20 20 2f 2f 74 68 65 20 66 61 64 65 49 //the fadeI
a93f0 6e 20 74 69 6d 65 0a 09 20 20 20 20 20 20 20 20 n time..
a9400 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 55 if (this.isU
a9410 6e 64 65 66 28 66 61 64 65 49 6e 54 69 6d 65 29 ndef(fadeInTime)
a9420 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
a9430 20 20 20 20 20 66 61 64 65 49 6e 54 69 6d 65 20 fadeInTime
a9440 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 = this.toSeconds
a9450 28 74 68 69 73 2e 66 61 64 65 49 6e 29 3b 0a 09 (this.fadeIn);..
a9460 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c } el
a9470 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 se {..
a9480 20 20 20 20 20 20 66 61 64 65 49 6e 54 69 6d 65 fadeInTime
a9490 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 = this.toSecond
a94a0 73 28 66 61 64 65 49 6e 54 69 6d 65 29 3b 0a 09 s(fadeInTime);..
a94b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 }..
a94c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 if (f
a94d0 61 64 65 49 6e 54 69 6d 65 20 3e 20 30 29 20 7b adeInTime > 0) {
a94e0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
a94f0 20 20 74 68 69 73 2e 5f 67 61 69 6e 4e 6f 64 65 this._gainNode
a9500 2e 67 61 69 6e 2e 73 65 74 56 61 6c 75 65 41 74 .gain.setValueAt
a9510 54 69 6d 65 28 30 2c 20 74 69 6d 65 29 3b 0a 09 Time(0, time);..
a9520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
a9530 74 68 69 73 2e 5f 67 61 69 6e 4e 6f 64 65 2e 67 this._gainNode.g
a9540 61 69 6e 2e 6c 69 6e 65 61 72 52 61 6d 70 54 6f ain.linearRampTo
a9550 56 61 6c 75 65 41 74 54 69 6d 65 28 74 68 69 73 ValueAtTime(this
a9560 2e 5f 67 61 69 6e 2c 20 74 69 6d 65 20 2b 20 66 ._gain, time + f
a9570 61 64 65 49 6e 54 69 6d 65 29 3b 0a 09 20 20 20 adeInTime);..
a9580 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 } else
a9590 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
a95a0 20 20 20 74 68 69 73 2e 5f 67 61 69 6e 4e 6f 64 this._gainNod
a95b0 65 2e 67 61 69 6e 2e 73 65 74 56 61 6c 75 65 41 e.gain.setValueA
a95c0 74 54 69 6d 65 28 67 61 69 6e 2c 20 74 69 6d 65 tTime(gain, time
a95d0 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
a95e0 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 }.. t
a95f0 68 69 73 2e 5f 73 74 61 72 74 54 69 6d 65 20 3d his._startTime =
a9600 20 74 69 6d 65 20 2b 20 66 61 64 65 49 6e 54 69 time + fadeInTi
a9610 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 me;..
a9620 20 69 66 20 28 21 74 68 69 73 2e 69 73 55 6e 64 if (!this.isUnd
a9630 65 66 28 64 75 72 61 74 69 6f 6e 29 29 20 7b 0a ef(duration)) {.
a9640 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
a9650 20 64 75 72 61 74 69 6f 6e 20 3d 20 74 68 69 73 duration = this
a9660 2e 64 65 66 61 75 6c 74 41 72 67 28 64 75 72 61 .defaultArg(dura
a9670 74 69 6f 6e 2c 20 74 68 69 73 2e 62 75 66 66 65 tion, this.buffe
a9680 72 2e 64 75 72 61 74 69 6f 6e 20 2d 20 6f 66 66 r.duration - off
a9690 73 65 74 29 3b 0a 09 20 20 20 20 20 20 20 20 20 set);..
a96a0 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 duration
a96b0 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 = this.toSeconds
a96c0 28 64 75 72 61 74 69 6f 6e 29 3b 0a 09 20 20 20 (duration);..
a96d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
a96e0 73 2e 73 74 6f 70 28 74 69 6d 65 20 2b 20 64 75 s.stop(time + du
a96f0 72 61 74 69 6f 6e 20 2b 20 66 61 64 65 49 6e 54 ration + fadeInT
a9700 69 6d 65 2c 20 66 61 64 65 49 6e 54 69 6d 65 29 ime, fadeInTime)
a9710 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
a9720 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 .. }..
a9730 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
a9740 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f ;.. };.. /
a9750 2a 2a 0a 09 09 20 2a 20 20 53 74 6f 70 20 74 68 **... * Stop th
a9760 65 20 62 75 66 66 65 72 2e 20 4f 70 74 69 6f 6e e buffer. Option
a9770 61 6c 6c 79 20 61 64 64 20 61 20 72 61 6d 70 20 ally add a ramp
a9780 74 69 6d 65 20 74 6f 20 66 61 64 65 20 74 68 65 time to fade the
a9790 20 0a 09 09 20 2a 20 20 62 75 66 66 65 72 20 6f ... * buffer o
a97a0 75 74 2e 20 0a 09 09 20 2a 20 20 40 70 61 72 61 ut. ... * @para
a97b0 6d 20 20 7b 54 69 6d 65 3d 7d 20 20 74 69 6d 65 m {Time=} time
a97c0 20 20 20 20 20 20 20 20 20 54 68 65 20 74 69 6d The tim
a97d0 65 20 74 68 65 20 62 75 66 66 65 72 20 73 68 6f e the buffer sho
a97e0 75 6c 64 20 73 74 6f 70 2e 0a 09 09 20 2a 20 20 uld stop.... *
a97f0 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 3d 7d 20 @param {Time=}
a9800 20 66 61 64 65 4f 75 74 54 69 6d 65 20 20 48 6f fadeOutTime Ho
a9810 77 20 6c 6f 6e 67 20 74 68 65 20 67 61 69 6e 20 w long the gain
a9820 73 68 6f 75 6c 64 20 66 61 64 65 20 6f 75 74 20 should fade out
a9830 66 6f 72 0a 09 09 20 2a 20 20 40 72 65 74 75 72 for... * @retur
a9840 6e 20 20 7b 54 6f 6e 65 2e 42 75 66 66 65 72 53 n {Tone.BufferS
a9850 6f 75 72 63 65 7d 20 20 74 68 69 73 0a 09 09 20 ource} this...
a9860 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 42 75 66 */.. Tone.Buf
a9870 66 65 72 53 6f 75 72 63 65 2e 70 72 6f 74 6f 74 ferSource.protot
a9880 79 70 65 2e 73 74 6f 70 20 3d 20 66 75 6e 63 74 ype.stop = funct
a9890 69 6f 6e 20 28 74 69 6d 65 2c 20 66 61 64 65 4f ion (time, fadeO
a98a0 75 74 54 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 utTime) {..
a98b0 20 20 20 69 66 20 28 74 68 69 73 2e 62 75 66 66 if (this.buff
a98c0 65 72 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 er) {..
a98d0 20 20 20 74 69 6d 65 20 3d 20 74 68 69 73 2e 74 time = this.t
a98e0 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a oSeconds(time);.
a98f0 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 74 . //t
a9900 68 65 20 66 61 64 65 4f 75 74 20 74 69 6d 65 0a he fadeOut time.
a9910 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
a9920 28 74 68 69 73 2e 69 73 55 6e 64 65 66 28 66 61 (this.isUndef(fa
a9930 64 65 4f 75 74 54 69 6d 65 29 29 20 7b 0a 09 20 deOutTime)) {..
a9940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 f
a9950 61 64 65 4f 75 74 54 69 6d 65 20 3d 20 74 68 69 adeOutTime = thi
a9960 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 68 69 73 s.toSeconds(this
a9970 2e 66 61 64 65 4f 75 74 29 3b 0a 09 20 20 20 20 .fadeOut);..
a9980 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b } else {
a9990 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
a99a0 20 20 66 61 64 65 4f 75 74 54 69 6d 65 20 3d 20 fadeOutTime =
a99b0 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 66 this.toSeconds(f
a99c0 61 64 65 4f 75 74 54 69 6d 65 29 3b 0a 09 20 20 adeOutTime);..
a99d0 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 }..
a99e0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 this._s
a99f0 74 6f 70 54 69 6d 65 20 3d 20 74 69 6d 65 20 2b topTime = time +
a9a00 20 66 61 64 65 4f 75 74 54 69 6d 65 3b 0a 09 20 fadeOutTime;..
a9a10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 63 61 6e //can
a9a20 63 65 6c 20 74 68 65 20 65 6e 64 20 63 75 72 76 cel the end curv
a9a30 65 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 e.. t
a9a40 68 69 73 2e 5f 67 61 69 6e 4e 6f 64 65 2e 67 61 his._gainNode.ga
a9a50 69 6e 2e 63 61 6e 63 65 6c 53 63 68 65 64 75 6c in.cancelSchedul
a9a60 65 64 56 61 6c 75 65 73 28 74 68 69 73 2e 5f 73 edValues(this._s
a9a70 74 61 72 74 54 69 6d 65 20 2b 20 74 68 69 73 2e tartTime + this.
a9a80 73 61 6d 70 6c 65 54 69 6d 65 29 3b 0a 09 20 20 sampleTime);..
a9a90 20 20 20 20 20 20 20 20 20 20 2f 2f 73 65 74 20 //set
a9aa0 61 20 6e 65 77 20 6f 6e 65 0a 09 20 20 20 20 20 a new one..
a9ab0 20 20 20 20 20 20 20 69 66 20 28 66 61 64 65 4f if (fadeO
a9ac0 75 74 54 69 6d 65 20 3e 20 30 29 20 7b 0a 09 20 utTime > 0) {..
a9ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
a9ae0 68 69 73 2e 5f 67 61 69 6e 4e 6f 64 65 2e 67 61 his._gainNode.ga
a9af0 69 6e 2e 73 65 74 56 61 6c 75 65 41 74 54 69 6d in.setValueAtTim
a9b00 65 28 74 68 69 73 2e 5f 67 61 69 6e 2c 20 74 69 e(this._gain, ti
a9b10 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 me);..
a9b20 20 20 20 20 20 20 74 68 69 73 2e 5f 67 61 69 6e this._gain
a9b30 4e 6f 64 65 2e 67 61 69 6e 2e 6c 69 6e 65 61 72 Node.gain.linear
a9b40 52 61 6d 70 54 6f 56 61 6c 75 65 41 74 54 69 6d RampToValueAtTim
a9b50 65 28 30 2c 20 74 69 6d 65 20 2b 20 66 61 64 65 e(0, time + fade
a9b60 4f 75 74 54 69 6d 65 29 3b 0a 09 20 20 20 20 20 OutTime);..
a9b70 20 20 20 20 20 20 20 20 20 20 20 74 69 6d 65 20 time
a9b80 2b 3d 20 66 61 64 65 4f 75 74 54 69 6d 65 3b 0a += fadeOutTime;.
a9b90 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 . } e
a9ba0 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
a9bb0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 67 61 69 this._gai
a9bc0 6e 4e 6f 64 65 2e 67 61 69 6e 2e 73 65 74 56 61 nNode.gain.setVa
a9bd0 6c 75 65 41 74 54 69 6d 65 28 30 2c 20 74 69 6d lueAtTime(0, tim
a9be0 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e);..
a9bf0 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
a9c00 2f 2f 20 66 69 78 20 66 6f 72 20 73 61 66 61 72 // fix for safar
a9c10 69 20 62 75 67 20 61 6e 64 20 6f 6c 64 20 46 46 i bug and old FF
a9c20 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
a9c30 20 28 21 74 68 69 73 2e 69 73 4e 75 6d 62 65 72 (!this.isNumber
a9c40 28 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e 70 6c (this._source.pl
a9c50 61 79 62 61 63 6b 53 74 61 74 65 29 20 7c 7c 20 aybackState) ||
a9c60 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e 70 6c 61 this._source.pla
a9c70 79 62 61 63 6b 53 74 61 74 65 20 3d 3d 3d 20 32 ybackState === 2
a9c80 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
a9c90 20 20 20 20 20 74 68 69 73 2e 5f 73 6f 75 72 63 this._sourc
a9ca0 65 2e 73 74 6f 70 28 74 69 6d 65 29 3b 0a 09 20 e.stop(time);..
a9cb0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 09 20 20 }..
a9cc0 20 20 20 20 20 20 20 20 20 20 63 6c 65 61 72 54 clearT
a9cd0 69 6d 65 6f 75 74 28 74 68 69 73 2e 5f 6f 6e 65 imeout(this._one
a9ce0 6e 64 65 64 54 69 6d 65 6f 75 74 29 3b 0a 09 20 ndedTimeout);..
a9cf0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
a9d00 5f 6f 6e 65 6e 64 65 64 54 69 6d 65 6f 75 74 20 _onendedTimeout
a9d10 3d 20 73 65 74 54 69 6d 65 6f 75 74 28 74 68 69 = setTimeout(thi
a9d20 73 2e 5f 6f 6e 65 6e 64 65 64 2e 62 69 6e 64 28 s._onended.bind(
a9d30 74 68 69 73 29 2c 20 28 74 68 69 73 2e 5f 73 74 this), (this._st
a9d40 6f 70 54 69 6d 65 20 2d 20 74 68 69 73 2e 6e 6f opTime - this.no
a9d50 77 28 29 29 20 2a 20 31 30 30 30 29 3b 0a 09 20 w()) * 1000);..
a9d60 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
a9d70 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 return this;..
a9d80 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
a9d90 09 09 20 2a 20 20 49 6e 74 65 72 6e 61 6c 20 63 .. * Internal c
a9da0 61 6c 6c 62 61 63 6b 20 77 68 65 6e 20 74 68 65 allback when the
a9db0 20 62 75 66 66 65 72 20 69 73 20 65 6e 64 65 64 buffer is ended
a9dc0 2e 20 0a 09 09 20 2a 20 20 49 6e 76 6f 6b 65 73 . ... * Invokes
a9dd0 20 60 6f 6e 65 6e 64 65 64 60 20 61 6e 64 20 64 `onended` and d
a9de0 69 73 70 6f 73 65 73 20 74 68 65 20 6e 6f 64 65 isposes the node
a9df0 2e 0a 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
a9e00 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
a9e10 2e 42 75 66 66 65 72 53 6f 75 72 63 65 2e 70 72 .BufferSource.pr
a9e20 6f 74 6f 74 79 70 65 2e 5f 6f 6e 65 6e 64 65 64 ototype._onended
a9e30 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
a9e40 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f .. this.o
a9e50 6e 65 6e 64 65 64 28 74 68 69 73 29 3b 0a 09 20 nended(this);..
a9e60 20 20 20 20 20 20 20 74 68 69 73 2e 64 69 73 70 this.disp
a9e70 6f 73 65 28 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 ose();.. };..
a9e80 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 49 66 20 /**... * If
a9e90 6c 6f 6f 70 20 69 73 20 74 72 75 65 2c 20 74 68 loop is true, th
a9ea0 65 20 6c 6f 6f 70 20 77 69 6c 6c 20 73 74 61 72 e loop will star
a9eb0 74 20 61 74 20 74 68 69 73 20 70 6f 73 69 74 69 t at this positi
a9ec0 6f 6e 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 on. ... * @membe
a9ed0 72 4f 66 20 54 6f 6e 65 2e 42 75 66 66 65 72 53 rOf Tone.BufferS
a9ee0 6f 75 72 63 65 23 0a 09 09 20 2a 20 40 74 79 70 ource#... * @typ
a9ef0 65 20 7b 54 69 6d 65 7d 0a 09 09 20 2a 20 40 6e e {Time}... * @n
a9f00 61 6d 65 20 6c 6f 6f 70 53 74 61 72 74 0a 09 09 ame loopStart...
a9f10 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
a9f20 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
a9f30 6f 6e 65 2e 42 75 66 66 65 72 53 6f 75 72 63 65 one.BufferSource
a9f40 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 6c 6f 6f .prototype, 'loo
a9f50 70 53 74 61 72 74 27 2c 20 7b 0a 09 20 20 20 20 pStart', {..
a9f60 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
a9f70 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
a9f80 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
a9f90 5f 73 6f 75 72 63 65 2e 6c 6f 6f 70 53 74 61 72 _source.loopStar
a9fa0 74 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 t;.. },..
a9fb0 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e set: fun
a9fc0 63 74 69 6f 6e 20 28 6c 6f 6f 70 53 74 61 72 74 ction (loopStart
a9fd0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
a9fe0 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e 6c 6f this._source.lo
a9ff0 6f 70 53 74 61 72 74 20 3d 20 74 68 69 73 2e 74 opStart = this.t
aa000 6f 53 65 63 6f 6e 64 73 28 6c 6f 6f 70 53 74 61 oSeconds(loopSta
aa010 72 74 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a rt);.. }.
aa020 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a . });.. /*
aa030 2a 0a 09 09 20 2a 20 49 66 20 6c 6f 6f 70 20 69 *... * If loop i
aa040 73 20 74 72 75 65 2c 20 74 68 65 20 6c 6f 6f 70 s true, the loop
aa050 20 77 69 6c 6c 20 65 6e 64 20 61 74 20 74 68 69 will end at thi
aa060 73 20 70 6f 73 69 74 69 6f 6e 2e 0a 09 09 20 2a s position.... *
aa070 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e @memberOf Tone.
aa080 42 75 66 66 65 72 53 6f 75 72 63 65 23 0a 09 09 BufferSource#...
aa090 20 2a 20 40 74 79 70 65 20 7b 54 69 6d 65 7d 0a * @type {Time}.
aa0a0 09 09 20 2a 20 40 6e 61 6d 65 20 6c 6f 6f 70 45 .. * @name loopE
aa0b0 6e 64 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 nd... */.. Ob
aa0c0 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 ject.definePrope
aa0d0 72 74 79 28 54 6f 6e 65 2e 42 75 66 66 65 72 53 rty(Tone.BufferS
aa0e0 6f 75 72 63 65 2e 70 72 6f 74 6f 74 79 70 65 2c ource.prototype,
aa0f0 20 27 6c 6f 6f 70 45 6e 64 27 2c 20 7b 0a 09 20 'loopEnd', {..
aa100 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 get: func
aa110 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 tion () {..
aa120 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
aa130 69 73 2e 5f 73 6f 75 72 63 65 2e 6c 6f 6f 70 45 is._source.loopE
aa140 6e 64 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a nd;.. },.
aa150 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
aa160 6e 63 74 69 6f 6e 20 28 6c 6f 6f 70 45 6e 64 29 nction (loopEnd)
aa170 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
aa180 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e 6c 6f 6f this._source.loo
aa190 70 45 6e 64 20 3d 20 74 68 69 73 2e 74 6f 53 65 pEnd = this.toSe
aa1a0 63 6f 6e 64 73 28 6c 6f 6f 70 45 6e 64 29 3b 0a conds(loopEnd);.
aa1b0 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
aa1c0 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 });.. /**...
aa1d0 2a 20 54 68 65 20 61 75 64 69 6f 20 62 75 66 66 * The audio buff
aa1e0 65 72 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20 er belonging to
aa1f0 74 68 65 20 70 6c 61 79 65 72 2e 20 0a 09 09 20 the player. ...
aa200 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 * @memberOf Tone
aa210 2e 42 75 66 66 65 72 53 6f 75 72 63 65 23 0a 09 .BufferSource#..
aa220 09 20 2a 20 40 74 79 70 65 20 7b 41 75 64 69 6f . * @type {Audio
aa230 42 75 66 66 65 72 7d 0a 09 09 20 2a 20 40 6e 61 Buffer}... * @na
aa240 6d 65 20 62 75 66 66 65 72 0a 09 09 20 2a 2f 0a me buffer... */.
aa250 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 . Object.defi
aa260 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e neProperty(Tone.
aa270 42 75 66 66 65 72 53 6f 75 72 63 65 2e 70 72 6f BufferSource.pro
aa280 74 6f 74 79 70 65 2c 20 27 62 75 66 66 65 72 27 totype, 'buffer'
aa290 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 , {.. get
aa2a0 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a : function () {.
aa2b0 09 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
aa2c0 28 74 68 69 73 2e 5f 73 6f 75 72 63 65 29 20 7b (this._source) {
aa2d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
aa2e0 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 73 return this._s
aa2f0 6f 75 72 63 65 2e 62 75 66 66 65 72 3b 0a 09 20 ource.buffer;..
aa300 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
aa310 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
aa320 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c return null
aa330 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
aa340 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 .. },..
aa350 20 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 set: funct
aa360 69 6f 6e 20 28 62 75 66 66 65 72 29 20 7b 0a 09 ion (buffer) {..
aa370 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
aa380 62 75 66 66 65 72 20 69 6e 73 74 61 6e 63 65 6f buffer instanceo
aa390 66 20 54 6f 6e 65 2e 42 75 66 66 65 72 29 20 7b f Tone.Buffer) {
aa3a0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
aa3b0 20 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e 62 this._source.b
aa3c0 75 66 66 65 72 20 3d 20 62 75 66 66 65 72 2e 67 uffer = buffer.g
aa3d0 65 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 et();..
aa3e0 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 } else {..
aa3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 thi
aa400 73 2e 5f 73 6f 75 72 63 65 2e 62 75 66 66 65 72 s._source.buffer
aa410 20 3d 20 62 75 66 66 65 72 3b 0a 09 20 20 20 20 = buffer;..
aa420 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
aa430 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
aa440 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 49 66 20 74 /**... * If t
aa450 68 65 20 62 75 66 66 65 72 20 73 68 6f 75 6c 64 he buffer should
aa460 20 6c 6f 6f 70 20 6f 6e 63 65 20 69 74 27 73 20 loop once it's
aa470 6f 76 65 72 2e 20 0a 09 09 20 2a 20 40 6d 65 6d over. ... * @mem
aa480 62 65 72 4f 66 20 54 6f 6e 65 2e 42 75 66 66 65 berOf Tone.Buffe
aa490 72 53 6f 75 72 63 65 23 0a 09 09 20 2a 20 40 74 rSource#... * @t
aa4a0 79 70 65 20 7b 62 6f 6f 6c 65 61 6e 7d 0a 09 09 ype {boolean}...
aa4b0 20 2a 20 40 6e 61 6d 65 20 6c 6f 6f 70 0a 09 09 * @name loop...
aa4c0 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
aa4d0 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
aa4e0 6f 6e 65 2e 42 75 66 66 65 72 53 6f 75 72 63 65 one.BufferSource
aa4f0 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 6c 6f 6f .prototype, 'loo
aa500 70 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 p', {.. g
aa510 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
aa520 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
aa530 65 74 75 72 6e 20 74 68 69 73 2e 5f 73 6f 75 72 eturn this._sour
aa540 63 65 2e 6c 6f 6f 70 3b 0a 09 20 20 20 20 20 20 ce.loop;..
aa550 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
aa560 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6c 6f 6f t: function (loo
aa570 70 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 p) {..
aa580 20 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 2e 6c this._source.l
aa590 6f 6f 70 20 3d 20 6c 6f 6f 70 3b 0a 09 20 20 20 oop = loop;..
aa5a0 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
aa5b0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 . /**... * C
aa5c0 6c 65 61 6e 20 75 70 2e 0a 09 09 20 2a 20 20 40 lean up.... * @
aa5d0 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 42 75 return {Tone.Bu
aa5e0 66 66 65 72 53 6f 75 72 63 65 7d 20 20 74 68 69 fferSource} thi
aa5f0 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e s... */.. Ton
aa600 65 2e 42 75 66 66 65 72 53 6f 75 72 63 65 2e 70 e.BufferSource.p
aa610 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 rototype.dispose
aa620 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b = function () {
aa630 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f .. this.o
aa640 6e 65 6e 64 65 64 20 3d 20 6e 75 6c 6c 3b 0a 09 nended = null;..
aa650 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
aa660 2e 5f 73 6f 75 72 63 65 29 20 7b 0a 09 20 20 20 ._source) {..
aa670 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 this._s
aa680 6f 75 72 63 65 2e 64 69 73 63 6f 6e 6e 65 63 74 ource.disconnect
aa690 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ();..
aa6a0 20 74 68 69 73 2e 5f 73 6f 75 72 63 65 20 3d 20 this._source =
aa6b0 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 7d null;.. }
aa6c0 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
aa6d0 69 73 2e 5f 67 61 69 6e 4e 6f 64 65 29 20 7b 0a is._gainNode) {.
aa6e0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
aa6f0 73 2e 5f 67 61 69 6e 4e 6f 64 65 2e 64 69 73 70 s._gainNode.disp
aa700 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
aa710 20 20 20 20 74 68 69 73 2e 5f 67 61 69 6e 4e 6f this._gainNo
aa720 64 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 de = null;..
aa730 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 74 }.. t
aa740 68 69 73 2e 5f 73 74 61 72 74 54 69 6d 65 20 3d his._startTime =
aa750 20 2d 31 3b 0a 09 20 20 20 20 20 20 20 20 74 68 -1;.. th
aa760 69 73 2e 70 6c 61 79 62 61 63 6b 52 61 74 65 20 is.playbackRate
aa770 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
aa780 20 74 68 69 73 2e 6f 75 74 70 75 74 20 3d 20 6e this.output = n
aa790 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 63 6c ull;.. cl
aa7a0 65 61 72 54 69 6d 65 6f 75 74 28 74 68 69 73 2e earTimeout(this.
aa7b0 5f 6f 6e 65 6e 64 65 64 54 69 6d 65 6f 75 74 29 _onendedTimeout)
aa7c0 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
aa7d0 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
aa7e0 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 . return Tone
aa7f0 2e 42 75 66 66 65 72 53 6f 75 72 63 65 3b 0a 09 .BufferSource;..
aa800 7d 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 });..Module(func
aa810 74 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 tion (Tone) {..
aa820 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 40 63 6c /**... * @cl
aa830 61 73 73 20 54 6f 6e 65 2e 4d 75 6c 74 69 50 6c ass Tone.MultiPl
aa840 61 79 65 72 20 69 73 20 77 65 6c 6c 20 73 75 69 ayer is well sui
aa850 74 65 64 20 66 6f 72 20 6f 6e 65 2d 73 68 6f 74 ted for one-shot
aa860 73 2c 20 6d 75 6c 74 69 2d 73 61 6d 70 6c 65 64 s, multi-sampled
aa870 20 69 6e 73 74 72 75 6d 65 6e 74 73 0a 09 09 20 instruments...
aa880 2a 20 20 20 20 20 20 20 20 20 6f 72 20 61 6e 79 * or any
aa890 20 74 69 6d 65 20 79 6f 75 20 6e 65 65 64 20 74 time you need t
aa8a0 6f 20 70 6c 61 79 20 61 20 62 75 6e 63 68 20 6f o play a bunch o
aa8b0 66 20 61 75 64 69 6f 20 62 75 66 66 65 72 73 2e f audio buffers.
aa8c0 20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 ... * @param
aa8d0 7b 4f 62 6a 65 63 74 7c 41 72 72 61 79 7c 54 6f {Object|Array|To
aa8e0 6e 65 2e 42 75 66 66 65 72 73 7d 20 20 62 75 66 ne.Buffers} buf
aa8f0 66 65 72 73 20 20 54 68 65 20 62 75 66 66 65 72 fers The buffer
aa900 73 20 77 68 69 63 68 20 61 72 65 20 61 76 61 69 s which are avai
aa910 6c 61 62 6c 65 0a 09 09 20 2a 20 20 20 20 20 20 lable... *
aa920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
aa930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
aa940 20 20 20 20 20 20 20 20 20 20 74 6f 20 74 68 65 to the
aa950 20 4d 75 6c 74 69 50 6c 61 79 65 72 0a 09 09 20 MultiPlayer...
aa960 2a 20 20 40 70 61 72 61 6d 20 7b 46 75 6e 63 74 * @param {Funct
aa970 69 6f 6e 7d 20 6f 6e 6c 6f 61 64 20 54 68 65 20 ion} onload The
aa980 63 61 6c 6c 62 61 63 6b 20 74 6f 20 69 6e 76 6f callback to invo
aa990 6b 65 20 77 68 65 6e 20 61 6c 6c 20 6f 66 20 74 ke when all of t
aa9a0 68 65 20 62 75 66 66 65 72 73 20 61 72 65 20 6c he buffers are l
aa9b0 6f 61 64 65 64 2e 0a 09 09 20 2a 20 20 40 65 78 oaded.... * @ex
aa9c0 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a 09 09 20 tends {Tone}...
aa9d0 2a 20 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a * @example... *
aa9e0 20 76 61 72 20 6d 75 6c 74 69 50 6c 61 79 65 72 var multiPlayer
aa9f0 20 3d 20 6e 65 77 20 4d 75 6c 74 69 50 6c 61 79 = new MultiPlay
aaa00 65 72 28 7b 0a 09 09 20 2a 20 09 22 6b 69 63 6b er({... * ."kick
aaa10 22 20 3a 20 22 70 61 74 68 2f 74 6f 2f 6b 69 63 " : "path/to/kic
aaa20 6b 2e 6d 70 33 22 2c 0a 09 09 20 2a 20 09 22 73 k.mp3",... * ."s
aaa30 6e 61 72 65 22 20 3a 20 22 70 61 74 68 2f 74 6f nare" : "path/to
aaa40 2f 73 6e 61 72 65 2e 6d 70 33 22 2c 0a 09 09 20 /snare.mp3",...
aaa50 2a 20 7d 2c 20 66 75 6e 63 74 69 6f 6e 28 29 7b * }, function(){
aaa60 0a 09 09 20 2a 20 09 6d 75 6c 74 69 50 6c 61 79 ... * .multiPlay
aaa70 65 72 2e 73 74 61 72 74 28 22 6b 69 63 6b 22 29 er.start("kick")
aaa80 3b 0a 09 09 20 2a 20 7d 29 3b 0a 09 09 20 2a 20 ;... * });... *
aaa90 20 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f @example... * /
aaaa0 2f 63 61 6e 20 61 6c 73 6f 20 73 74 6f 72 65 20 /can also store
aaab0 74 68 65 20 76 61 6c 75 65 73 20 69 6e 20 61 6e the values in an
aaac0 20 61 72 72 61 79 0a 09 09 20 2a 20 76 61 72 20 array... * var
aaad0 6d 75 6c 74 69 50 6c 61 79 65 72 20 3d 20 6e 65 multiPlayer = ne
aaae0 77 20 4d 75 6c 74 69 50 6c 61 79 65 72 28 5b 22 w MultiPlayer(["
aaaf0 70 61 74 68 2f 74 6f 2f 6b 69 63 6b 2e 6d 70 33 path/to/kick.mp3
aab00 22 2c 20 22 70 61 74 68 2f 74 6f 2f 73 6e 61 72 ", "path/to/snar
aab10 65 2e 6d 70 33 22 5d 2c 20 0a 09 09 20 2a 20 66 e.mp3"], ... * f
aab20 75 6e 63 74 69 6f 6e 28 29 7b 0a 09 09 20 2a 20 unction(){... *
aab30 09 2f 2f 69 66 20 61 6e 20 61 72 72 61 79 20 69 .//if an array i
aab40 73 20 70 61 73 73 65 64 20 69 6e 2c 20 74 68 65 s passed in, the
aab50 20 73 61 6d 70 6c 65 73 20 61 72 65 20 72 65 66 samples are ref
aab60 65 72 65 6e 63 65 64 20 74 6f 20 62 79 20 69 6e erenced to by in
aab70 64 65 78 0a 09 09 20 2a 20 09 6d 75 6c 74 69 50 dex... * .multiP
aab80 6c 61 79 65 72 2e 73 74 61 72 74 28 31 29 3b 0a layer.start(1);.
aab90 09 09 20 2a 20 7d 29 3b 0a 09 09 20 2a 2f 0a 09 .. * });... */..
aaba0 20 20 20 20 54 6f 6e 65 2e 4d 75 6c 74 69 50 6c Tone.MultiPl
aabb0 61 79 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 ayer = function
aabc0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 76 61 () {.. va
aabd0 72 20 6f 70 74 69 6f 6e 73 20 3d 20 74 68 69 73 r options = this
aabe0 2e 6f 70 74 69 6f 6e 73 4f 62 6a 65 63 74 28 61 .optionsObject(a
aabf0 72 67 75 6d 65 6e 74 73 2c 20 5b 0a 09 20 20 20 rguments, [..
aac00 20 20 20 20 20 20 20 20 20 27 75 72 6c 73 27 2c 'urls',
aac10 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 27 6f .. 'o
aac20 6e 6c 6f 61 64 27 0a 09 20 20 20 20 20 20 20 20 nload'..
aac30 5d 2c 20 54 6f 6e 65 2e 4d 75 6c 74 69 50 6c 61 ], Tone.MultiPla
aac40 79 65 72 2e 64 65 66 61 75 6c 74 73 29 3b 0a 09 yer.defaults);..
aac50 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 74 69 if (opti
aac60 6f 6e 73 2e 75 72 6c 73 20 69 6e 73 74 61 6e 63 ons.urls instanc
aac70 65 6f 66 20 54 6f 6e 65 2e 42 75 66 66 65 72 73 eof Tone.Buffers
aac80 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
aac90 20 2f 2a 2a 0a 09 09 09 09 20 2a 20 20 41 6c 6c /**..... * All
aaca0 20 74 68 65 20 62 75 66 66 65 72 73 20 62 65 6c the buffers bel
aacb0 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65 20 70 6c onging to the pl
aacc0 61 79 65 72 2e 0a 09 09 09 09 20 2a 20 20 40 74 ayer...... * @t
aacd0 79 70 65 20 20 7b 54 6f 6e 65 2e 42 75 66 66 65 ype {Tone.Buffe
aace0 72 73 7d 0a 09 09 09 09 20 2a 2f 0a 09 20 20 20 rs}..... */..
aacf0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 75 this.bu
aad00 66 66 65 72 73 20 3d 20 6f 70 74 69 6f 6e 73 2e ffers = options.
aad10 75 72 6c 73 3b 0a 09 20 20 20 20 20 20 20 20 7d urls;.. }
aad20 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 else {..
aad30 20 20 20 20 20 74 68 69 73 2e 62 75 66 66 65 72 this.buffer
aad40 73 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 42 75 66 s = new Tone.Buf
aad50 66 65 72 73 28 6f 70 74 69 6f 6e 73 2e 75 72 6c fers(options.url
aad60 73 2c 20 6f 70 74 69 6f 6e 73 2e 6f 6e 6c 6f 61 s, options.onloa
aad70 64 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 d);.. }..
aad80 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
aad90 2a 20 20 4b 65 65 70 73 20 74 72 61 63 6b 20 6f * Keeps track o
aada0 66 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 f the currently
aadb0 70 6c 61 79 69 6e 67 20 73 6f 75 72 63 65 73 2e playing sources.
aadc0 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b .... * @type {
aadd0 4f 62 6a 65 63 74 7d 0a 09 09 09 20 2a 20 20 40 Object}.... * @
aade0 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
aadf0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 61 63 this._ac
aae00 74 69 76 65 53 6f 75 72 63 65 73 20 3d 20 7b 7d tiveSources = {}
aae10 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 ;.. /**..
aae20 09 09 20 2a 20 20 54 68 65 20 66 61 64 65 20 69 .. * The fade i
aae30 6e 20 65 6e 76 65 6c 6f 70 65 20 77 68 69 63 68 n envelope which
aae40 20 69 73 20 61 70 70 6c 69 65 64 0a 09 09 09 20 is applied....
aae50 2a 20 20 74 6f 20 74 68 65 20 62 65 67 69 6e 6e * to the beginn
aae60 69 6e 67 20 6f 66 20 74 68 65 20 42 75 66 66 65 ing of the Buffe
aae70 72 53 6f 75 72 63 65 0a 09 09 09 20 2a 20 20 40 rSource.... * @
aae80 74 79 70 65 20 20 7b 54 69 6d 65 7d 0a 09 09 09 type {Time}....
aae90 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 */.. thi
aaea0 73 2e 66 61 64 65 49 6e 20 3d 20 6f 70 74 69 6f s.fadeIn = optio
aaeb0 6e 73 2e 66 61 64 65 49 6e 3b 0a 09 20 20 20 20 ns.fadeIn;..
aaec0 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 /**.... * T
aaed0 68 65 20 66 61 64 65 20 6f 75 74 20 65 6e 76 65 he fade out enve
aaee0 6c 6f 70 65 20 77 68 69 63 68 20 69 73 20 61 70 lope which is ap
aaef0 70 6c 69 65 64 0a 09 09 09 20 2a 20 20 74 6f 20 plied.... * to
aaf00 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 42 the end of the B
aaf10 75 66 66 65 72 53 6f 75 72 63 65 0a 09 09 09 20 ufferSource....
aaf20 2a 20 20 40 74 79 70 65 20 20 7b 54 69 6d 65 7d * @type {Time}
aaf30 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
aaf40 20 74 68 69 73 2e 66 61 64 65 4f 75 74 20 3d 20 this.fadeOut =
aaf50 6f 70 74 69 6f 6e 73 2e 66 61 64 65 4f 75 74 3b options.fadeOut;
aaf60 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 .. /**...
aaf70 09 20 2a 20 20 54 68 65 20 6f 75 74 70 75 74 20 . * The output
aaf80 76 6f 6c 75 6d 65 20 6e 6f 64 65 0a 09 09 09 20 volume node....
aaf90 2a 20 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 2e * @type {Tone.
aafa0 56 6f 6c 75 6d 65 7d 0a 09 09 09 20 2a 20 20 40 Volume}.... * @
aafb0 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 private.... */..
aafc0 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 76 6f this._vo
aafd0 6c 75 6d 65 20 3d 20 74 68 69 73 2e 6f 75 74 70 lume = this.outp
aafe0 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 56 6f ut = new Tone.Vo
aaff0 6c 75 6d 65 28 6f 70 74 69 6f 6e 73 2e 76 6f 6c lume(options.vol
ab000 75 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 2f ume);.. /
ab010 2a 2a 0a 09 09 09 20 2a 20 54 68 65 20 76 6f 6c **.... * The vol
ab020 75 6d 65 20 6f 66 20 74 68 65 20 6f 75 74 70 75 ume of the outpu
ab030 74 20 69 6e 20 64 65 63 69 62 65 6c 73 2e 0a 09 t in decibels...
ab040 09 09 20 2a 20 40 74 79 70 65 20 7b 44 65 63 69 .. * @type {Deci
ab050 62 65 6c 73 7d 0a 09 09 09 20 2a 20 40 73 69 67 bels}.... * @sig
ab060 6e 61 6c 0a 09 09 09 20 2a 20 40 65 78 61 6d 70 nal.... * @examp
ab070 6c 65 0a 09 09 09 20 2a 20 73 6f 75 72 63 65 2e le.... * source.
ab080 76 6f 6c 75 6d 65 2e 76 61 6c 75 65 20 3d 20 2d volume.value = -
ab090 36 3b 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 6;.... */..
ab0a0 20 20 20 74 68 69 73 2e 76 6f 6c 75 6d 65 20 3d this.volume =
ab0b0 20 74 68 69 73 2e 5f 76 6f 6c 75 6d 65 2e 76 6f this._volume.vo
ab0c0 6c 75 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 74 lume;.. t
ab0d0 68 69 73 2e 5f 72 65 61 64 4f 6e 6c 79 28 27 76 his._readOnly('v
ab0e0 6f 6c 75 6d 65 27 29 3b 0a 09 20 20 20 20 20 20 olume');..
ab0f0 20 20 2f 2f 6d 61 6b 65 20 74 68 65 20 6f 75 74 //make the out
ab100 70 75 74 20 65 78 70 6c 69 63 69 74 6c 79 20 73 put explicitly s
ab110 74 65 72 65 6f 0a 09 20 20 20 20 20 20 20 20 74 tereo.. t
ab120 68 69 73 2e 5f 76 6f 6c 75 6d 65 2e 6f 75 74 70 his._volume.outp
ab130 75 74 2e 6f 75 74 70 75 74 2e 63 68 61 6e 6e 65 ut.output.channe
ab140 6c 43 6f 75 6e 74 20 3d 20 32 3b 0a 09 20 20 20 lCount = 2;..
ab150 20 20 20 20 20 74 68 69 73 2e 5f 76 6f 6c 75 6d this._volum
ab160 65 2e 6f 75 74 70 75 74 2e 6f 75 74 70 75 74 2e e.output.output.
ab170 63 68 61 6e 6e 65 6c 43 6f 75 6e 74 4d 6f 64 65 channelCountMode
ab180 20 3d 20 27 65 78 70 6c 69 63 69 74 27 3b 0a 09 = 'explicit';..
ab190 20 20 20 20 20 20 20 20 2f 2f 6d 75 74 65 20 69 //mute i
ab1a0 6e 69 74 69 61 6c 6c 79 0a 09 20 20 20 20 20 20 nitially..
ab1b0 20 20 74 68 69 73 2e 6d 75 74 65 20 3d 20 6f 70 this.mute = op
ab1c0 74 69 6f 6e 73 2e 6d 75 74 65 3b 0a 09 20 20 20 tions.mute;..
ab1d0 20 7d 3b 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 };.. Tone.ex
ab1e0 74 65 6e 64 28 54 6f 6e 65 2e 4d 75 6c 74 69 50 tend(Tone.MultiP
ab1f0 6c 61 79 65 72 2c 20 54 6f 6e 65 2e 53 6f 75 72 layer, Tone.Sour
ab200 63 65 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 ce);.. /**...
ab210 20 2a 20 20 54 68 65 20 64 65 66 61 75 6c 74 73 * The defaults
ab220 0a 09 09 20 2a 20 20 40 74 79 70 65 20 20 7b 4f ... * @type {O
ab230 62 6a 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 bject}... */..
ab240 20 20 54 6f 6e 65 2e 4d 75 6c 74 69 50 6c 61 79 Tone.MultiPlay
ab250 65 72 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a er.defaults = {.
ab260 09 20 20 20 20 20 20 20 20 27 6f 6e 6c 6f 61 64 . 'onload
ab270 27 3a 20 54 6f 6e 65 2e 6e 6f 4f 70 2c 0a 09 20 ': Tone.noOp,..
ab280 20 20 20 20 20 20 20 27 66 61 64 65 49 6e 27 3a 'fadeIn':
ab290 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 66 61 0,.. 'fa
ab2a0 64 65 4f 75 74 27 3a 20 30 0a 09 20 20 20 20 7d deOut': 0.. }
ab2b0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
ab2c0 4d 61 6b 65 20 74 68 65 20 73 6f 75 72 63 65 20 Make the source
ab2d0 66 72 6f 6d 20 74 68 65 20 62 75 66 66 65 72 6e from the buffern
ab2e0 61 6d 65 0a 09 09 20 2a 20 40 70 61 72 61 6d 20 ame... * @param
ab2f0 20 7b 53 74 72 69 6e 67 7d 20 62 75 66 66 65 72 {String} buffer
ab300 4e 61 6d 65 0a 09 09 20 2a 20 40 72 65 74 75 72 Name... * @retur
ab310 6e 20 7b 54 6f 6e 65 2e 42 75 66 66 65 72 53 6f n {Tone.BufferSo
ab320 75 72 63 65 7d 0a 09 09 20 2a 20 40 70 72 69 76 urce}... * @priv
ab330 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 ate... */.. T
ab340 6f 6e 65 2e 4d 75 6c 74 69 50 6c 61 79 65 72 2e one.MultiPlayer.
ab350 70 72 6f 74 6f 74 79 70 65 2e 5f 6d 61 6b 65 53 prototype._makeS
ab360 6f 75 72 63 65 20 3d 20 66 75 6e 63 74 69 6f 6e ource = function
ab370 20 28 62 75 66 66 65 72 4e 61 6d 65 29 20 7b 0a (bufferName) {.
ab380 09 20 20 20 20 20 20 20 20 76 61 72 20 62 75 66 . var buf
ab390 66 65 72 3b 0a 09 20 20 20 20 20 20 20 20 69 66 fer;.. if
ab3a0 20 28 74 68 69 73 2e 69 73 53 74 72 69 6e 67 28 (this.isString(
ab3b0 62 75 66 66 65 72 4e 61 6d 65 29 20 7c 7c 20 74 bufferName) || t
ab3c0 68 69 73 2e 69 73 4e 75 6d 62 65 72 28 62 75 66 his.isNumber(buf
ab3d0 66 65 72 4e 61 6d 65 29 29 20 7b 0a 09 20 20 20 ferName)) {..
ab3e0 20 20 20 20 20 20 20 20 20 62 75 66 66 65 72 20 buffer
ab3f0 3d 20 74 68 69 73 2e 62 75 66 66 65 72 73 2e 67 = this.buffers.g
ab400 65 74 28 62 75 66 66 65 72 4e 61 6d 65 29 2e 67 et(bufferName).g
ab410 65 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 7d et();.. }
ab420 20 65 6c 73 65 20 69 66 20 28 62 75 66 66 65 72 else if (buffer
ab430 4e 61 6d 65 20 69 6e 73 74 61 6e 63 65 6f 66 20 Name instanceof
ab440 54 6f 6e 65 2e 42 75 66 66 65 72 29 20 7b 0a 09 Tone.Buffer) {..
ab450 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 66 buff
ab460 65 72 20 3d 20 62 75 66 66 65 72 4e 61 6d 65 2e er = bufferName.
ab470 67 65 74 28 29 3b 0a 09 20 20 20 20 20 20 20 20 get();..
ab480 7d 20 65 6c 73 65 20 69 66 20 28 62 75 66 66 65 } else if (buffe
ab490 72 4e 61 6d 65 20 69 6e 73 74 61 6e 63 65 6f 66 rName instanceof
ab4a0 20 41 75 64 69 6f 42 75 66 66 65 72 29 20 7b 0a AudioBuffer) {.
ab4b0 09 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 . buf
ab4c0 66 65 72 20 3d 20 62 75 66 66 65 72 4e 61 6d 65 fer = bufferName
ab4d0 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 ;.. }..
ab4e0 20 20 20 20 20 20 76 61 72 20 73 6f 75 72 63 65 var source
ab4f0 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 42 75 66 66 = new Tone.Buff
ab500 65 72 53 6f 75 72 63 65 28 62 75 66 66 65 72 29 erSource(buffer)
ab510 2e 63 6f 6e 6e 65 63 74 28 74 68 69 73 2e 6f 75 .connect(this.ou
ab520 74 70 75 74 29 3b 0a 09 20 20 20 20 20 20 20 20 tput);..
ab530 69 66 20 28 21 74 68 69 73 2e 5f 61 63 74 69 76 if (!this._activ
ab540 65 53 6f 75 72 63 65 73 2e 68 61 73 4f 77 6e 50 eSources.hasOwnP
ab550 72 6f 70 65 72 74 79 28 62 75 66 66 65 72 4e 61 roperty(bufferNa
ab560 6d 65 29 29 20 7b 0a 09 20 20 20 20 20 20 20 20 me)) {..
ab570 20 20 20 20 74 68 69 73 2e 5f 61 63 74 69 76 65 this._active
ab580 53 6f 75 72 63 65 73 5b 62 75 66 66 65 72 4e 61 Sources[bufferNa
ab590 6d 65 5d 20 3d 20 5b 5d 3b 0a 09 20 20 20 20 20 me] = [];..
ab5a0 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 74 68 }.. th
ab5b0 69 73 2e 5f 61 63 74 69 76 65 53 6f 75 72 63 65 is._activeSource
ab5c0 73 5b 62 75 66 66 65 72 4e 61 6d 65 5d 2e 70 75 s[bufferName].pu
ab5d0 73 68 28 73 6f 75 72 63 65 29 3b 0a 09 20 20 20 sh(source);..
ab5e0 20 20 20 20 20 72 65 74 75 72 6e 20 73 6f 75 72 return sour
ab5f0 63 65 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 ce;.. };..
ab600 20 2f 2a 2a 0a 09 09 20 2a 20 20 53 74 61 72 74 /**... * Start
ab610 20 61 20 62 75 66 66 65 72 20 62 79 20 6e 61 6d a buffer by nam
ab620 65 2e 20 54 68 65 20 60 73 74 61 72 74 60 20 6d e. The `start` m
ab630 65 74 68 6f 64 20 61 6c 6c 6f 77 73 20 61 20 6e ethod allows a n
ab640 75 6d 62 65 72 20 6f 66 20 6f 70 74 69 6f 6e 73 umber of options
ab650 0a 09 09 20 2a 20 20 74 6f 20 62 65 20 70 61 73 ... * to be pas
ab660 73 65 64 20 69 6e 20 73 75 63 68 20 61 73 20 6f sed in such as o
ab670 66 66 73 65 74 2c 20 69 6e 74 65 72 76 61 6c 2c ffset, interval,
ab680 20 61 6e 64 20 67 61 69 6e 2e 20 54 68 69 73 20 and gain. This
ab690 69 73 20 67 6f 6f 64 20 66 6f 72 20 6d 75 6c 74 is good for mult
ab6a0 69 2d 73 61 6d 70 6c 65 64 20 0a 09 09 20 2a 20 i-sampled ... *
ab6b0 20 69 6e 73 74 72 75 6d 65 6e 74 73 20 61 6e 64 instruments and
ab6c0 20 73 6f 75 6e 64 20 73 70 72 69 74 65 73 20 77 sound sprites w
ab6d0 68 65 72 65 20 73 61 6d 70 6c 65 73 20 61 72 65 here samples are
ab6e0 20 72 65 70 69 74 63 68 65 64 20 70 6c 61 79 65 repitched playe
ab6f0 64 20 62 61 63 6b 20 61 74 20 64 69 66 66 65 72 d back at differ
ab700 65 6e 74 20 76 65 6c 6f 63 69 74 69 65 73 2e 0a ent velocities..
ab710 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 53 .. * @param {S
ab720 74 72 69 6e 67 7d 20 20 62 75 66 66 65 72 4e 61 tring} bufferNa
ab730 6d 65 20 20 20 20 54 68 65 20 6e 61 6d 65 20 6f me The name o
ab740 66 20 74 68 65 20 62 75 66 66 65 72 20 74 6f 20 f the buffer to
ab750 73 74 61 72 74 2e 0a 09 09 20 2a 20 20 40 70 61 start.... * @pa
ab760 72 61 6d 20 20 7b 54 69 6d 65 7d 20 20 74 69 6d ram {Time} tim
ab770 65 20 20 20 20 20 20 57 68 65 6e 20 74 6f 20 73 e When to s
ab780 74 61 72 74 20 74 68 65 20 62 75 66 66 65 72 2e tart the buffer.
ab790 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
ab7a0 54 69 6d 65 7d 20 20 5b 6f 66 66 73 65 74 3d 30 Time} [offset=0
ab7b0 5d 20 20 20 20 54 68 65 20 6f 66 66 73 65 74 20 ] The offset
ab7c0 69 6e 74 6f 20 74 68 65 20 62 75 66 66 65 72 20 into the buffer
ab7d0 74 6f 20 70 6c 61 79 20 66 72 6f 6d 2e 0a 09 09 to play from....
ab7e0 20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d * @param {Tim
ab7f0 65 3d 7d 20 20 64 75 72 61 74 69 6f 6e 20 20 20 e=} duration
ab800 48 6f 77 20 6c 6f 6e 67 20 74 6f 20 70 6c 61 79 How long to play
ab810 20 74 68 65 20 62 75 66 66 65 72 20 66 6f 72 2e the buffer for.
ab820 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
ab830 49 6e 74 65 72 76 61 6c 7d 20 20 5b 70 69 74 63 Interval} [pitc
ab840 68 3d 30 5d 20 20 54 68 65 20 69 6e 74 65 72 76 h=0] The interv
ab850 61 6c 20 74 6f 20 72 65 70 69 74 63 68 20 74 68 al to repitch th
ab860 65 20 62 75 66 66 65 72 2e 0a 09 09 20 2a 20 20 e buffer.... *
ab870 40 70 61 72 61 6d 20 20 7b 47 61 69 6e 7d 20 20 @param {Gain}
ab880 5b 67 61 69 6e 3d 31 5d 20 20 20 20 20 20 54 68 [gain=1] Th
ab890 65 20 67 61 69 6e 20 74 6f 20 70 6c 61 79 20 74 e gain to play t
ab8a0 68 65 20 73 61 6d 70 6c 65 20 61 74 2e 0a 09 09 he sample at....
ab8b0 20 2a 20 20 40 72 65 74 75 72 6e 20 20 7b 54 6f * @return {To
ab8c0 6e 65 2e 4d 75 6c 74 69 50 6c 61 79 65 72 7d 20 ne.MultiPlayer}
ab8d0 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
ab8e0 20 54 6f 6e 65 2e 4d 75 6c 74 69 50 6c 61 79 65 Tone.MultiPlaye
ab8f0 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73 74 61 72 r.prototype.star
ab900 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 62 75 t = function (bu
ab910 66 66 65 72 4e 61 6d 65 2c 20 74 69 6d 65 2c 20 fferName, time,
ab920 6f 66 66 73 65 74 2c 20 64 75 72 61 74 69 6f 6e offset, duration
ab930 2c 20 70 69 74 63 68 2c 20 67 61 69 6e 29 20 7b , pitch, gain) {
ab940 0a 09 20 20 20 20 20 20 20 20 74 69 6d 65 20 3d .. time =
ab950 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 this.toSeconds(
ab960 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 time);..
ab970 76 61 72 20 73 6f 75 72 63 65 20 3d 20 74 68 69 var source = thi
ab980 73 2e 5f 6d 61 6b 65 53 6f 75 72 63 65 28 62 75 s._makeSource(bu
ab990 66 66 65 72 4e 61 6d 65 29 3b 0a 09 20 20 20 20 fferName);..
ab9a0 20 20 20 20 73 6f 75 72 63 65 2e 73 74 61 72 74 source.start
ab9b0 28 74 69 6d 65 2c 20 6f 66 66 73 65 74 2c 20 64 (time, offset, d
ab9c0 75 72 61 74 69 6f 6e 2c 20 74 68 69 73 2e 64 65 uration, this.de
ab9d0 66 61 75 6c 74 41 72 67 28 67 61 69 6e 2c 20 31 faultArg(gain, 1
ab9e0 29 2c 20 74 68 69 73 2e 66 61 64 65 49 6e 29 3b ), this.fadeIn);
ab9f0 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 64 75 .. if (du
aba00 72 61 74 69 6f 6e 29 20 7b 0a 09 20 20 20 20 20 ration) {..
aba10 20 20 20 20 20 20 20 73 6f 75 72 63 65 2e 73 74 source.st
aba20 6f 70 28 74 69 6d 65 20 2b 20 74 68 69 73 2e 74 op(time + this.t
aba30 6f 53 65 63 6f 6e 64 73 28 64 75 72 61 74 69 6f oSeconds(duratio
aba40 6e 29 2c 20 74 68 69 73 2e 66 61 64 65 4f 75 74 n), this.fadeOut
aba50 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 );.. }..
aba60 20 20 20 20 20 20 20 70 69 74 63 68 20 3d 20 74 pitch = t
aba70 68 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 70 his.defaultArg(p
aba80 69 74 63 68 2c 20 30 29 3b 0a 09 20 20 20 20 20 itch, 0);..
aba90 20 20 20 73 6f 75 72 63 65 2e 70 6c 61 79 62 61 source.playba
abaa0 63 6b 52 61 74 65 2e 76 61 6c 75 65 20 3d 20 74 ckRate.value = t
abab0 68 69 73 2e 69 6e 74 65 72 76 61 6c 54 6f 46 72 his.intervalToFr
abac0 65 71 75 65 6e 63 79 52 61 74 69 6f 28 70 69 74 equencyRatio(pit
abad0 63 68 29 3b 0a 09 20 20 20 20 20 20 20 20 72 65 ch);.. re
abae0 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 turn this;..
abaf0 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a };.. /**... *
abb00 20 20 53 74 61 72 74 20 61 20 6c 6f 6f 70 69 6e Start a loopin
abb10 67 20 62 75 66 66 65 72 20 62 79 20 6e 61 6d 65 g buffer by name
abb20 2e 20 53 69 6d 69 6c 61 72 20 74 6f 20 60 73 74 . Similar to `st
abb30 61 72 74 60 2c 20 62 75 74 20 74 68 65 20 62 75 art`, but the bu
abb40 66 66 65 72 0a 09 09 20 2a 20 20 69 73 20 6c 6f ffer... * is lo
abb50 6f 70 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 oped instead of
abb60 70 6c 61 79 65 64 20 73 74 72 61 69 67 68 74 20 played straight
abb70 74 68 72 6f 75 67 68 2e 20 43 61 6e 20 73 74 69 through. Can sti
abb80 6c 6c 20 62 65 20 73 74 6f 70 70 65 64 20 77 69 ll be stopped wi
abb90 74 68 20 60 73 74 6f 70 60 2e 20 0a 09 09 20 2a th `stop`. ... *
abba0 20 20 40 70 61 72 61 6d 20 20 7b 53 74 72 69 6e @param {Strin
abbb0 67 7d 20 20 62 75 66 66 65 72 4e 61 6d 65 20 20 g} bufferName
abbc0 20 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 The name of th
abbd0 65 20 62 75 66 66 65 72 20 74 6f 20 73 74 61 72 e buffer to star
abbe0 74 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 t.... * @param
abbf0 20 7b 54 69 6d 65 7d 20 20 74 69 6d 65 20 20 20 {Time} time
abc00 20 20 20 57 68 65 6e 20 74 6f 20 73 74 61 72 74 When to start
abc10 20 74 68 65 20 62 75 66 66 65 72 2e 0a 09 09 20 the buffer....
abc20 2a 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 * @param {Time
abc30 7d 20 20 5b 6f 66 66 73 65 74 3d 30 5d 20 20 20 } [offset=0]
abc40 20 54 68 65 20 6f 66 66 73 65 74 20 69 6e 74 6f The offset into
abc50 20 74 68 65 20 62 75 66 66 65 72 20 74 6f 20 70 the buffer to p
abc60 6c 61 79 20 66 72 6f 6d 2e 0a 09 09 20 2a 20 20 lay from.... *
abc70 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 3d 7d 20 @param {Time=}
abc80 20 6c 6f 6f 70 53 74 61 72 74 20 20 20 54 68 65 loopStart The
abc90 20 73 74 61 72 74 20 6f 66 20 74 68 65 20 6c 6f start of the lo
abca0 6f 70 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d op.... * @param
abcb0 20 20 7b 54 69 6d 65 3d 7d 20 20 6c 6f 6f 70 45 {Time=} loopE
abcc0 6e 64 09 54 68 65 20 65 6e 64 20 6f 66 20 74 68 nd.The end of th
abcd0 65 20 6c 6f 6f 70 2e 0a 09 09 20 2a 20 20 40 70 e loop.... * @p
abce0 61 72 61 6d 20 20 7b 49 6e 74 65 72 76 61 6c 7d aram {Interval}
abcf0 20 20 5b 70 69 74 63 68 3d 30 5d 20 20 54 68 65 [pitch=0] The
abd00 20 69 6e 74 65 72 76 61 6c 20 74 6f 20 72 65 70 interval to rep
abd10 69 74 63 68 20 74 68 65 20 62 75 66 66 65 72 2e itch the buffer.
abd20 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 20 7b ... * @param {
abd30 47 61 69 6e 7d 20 20 5b 67 61 69 6e 3d 31 5d 20 Gain} [gain=1]
abd40 20 20 20 20 20 54 68 65 20 67 61 69 6e 20 74 6f The gain to
abd50 20 70 6c 61 79 20 74 68 65 20 73 61 6d 70 6c 65 play the sample
abd60 20 61 74 2e 0a 09 09 20 2a 20 20 40 72 65 74 75 at.... * @retu
abd70 72 6e 20 20 7b 54 6f 6e 65 2e 4d 75 6c 74 69 50 rn {Tone.MultiP
abd80 6c 61 79 65 72 7d 20 20 74 68 69 73 0a 09 09 20 layer} this...
abd90 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 75 6c */.. Tone.Mul
abda0 74 69 50 6c 61 79 65 72 2e 70 72 6f 74 6f 74 79 tiPlayer.prototy
abdb0 70 65 2e 73 74 61 72 74 4c 6f 6f 70 20 3d 20 66 pe.startLoop = f
abdc0 75 6e 63 74 69 6f 6e 20 28 62 75 66 66 65 72 4e unction (bufferN
abdd0 61 6d 65 2c 20 74 69 6d 65 2c 20 6f 66 66 73 65 ame, time, offse
abde0 74 2c 20 6c 6f 6f 70 53 74 61 72 74 2c 20 6c 6f t, loopStart, lo
abdf0 6f 70 45 6e 64 2c 20 70 69 74 63 68 2c 20 67 61 opEnd, pitch, ga
abe00 69 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 20 74 in) {.. t
abe10 69 6d 65 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 ime = this.toSec
abe20 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 20 20 onds(time);..
abe30 20 20 20 20 20 76 61 72 20 73 6f 75 72 63 65 20 var source
abe40 3d 20 74 68 69 73 2e 5f 6d 61 6b 65 53 6f 75 72 = this._makeSour
abe50 63 65 28 62 75 66 66 65 72 4e 61 6d 65 29 3b 0a ce(bufferName);.
abe60 09 20 20 20 20 20 20 20 20 73 6f 75 72 63 65 2e . source.
abe70 6c 6f 6f 70 20 3d 20 74 72 75 65 3b 0a 09 20 20 loop = true;..
abe80 20 20 20 20 20 20 73 6f 75 72 63 65 2e 6c 6f 6f source.loo
abe90 70 53 74 61 72 74 20 3d 20 74 68 69 73 2e 74 6f pStart = this.to
abea0 53 65 63 6f 6e 64 73 28 74 68 69 73 2e 64 65 66 Seconds(this.def
abeb0 61 75 6c 74 41 72 67 28 6c 6f 6f 70 53 74 61 72 aultArg(loopStar
abec0 74 2c 20 30 29 29 3b 0a 09 20 20 20 20 20 20 20 t, 0));..
abed0 20 73 6f 75 72 63 65 2e 6c 6f 6f 70 45 6e 64 20 source.loopEnd
abee0 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 = this.toSeconds
abef0 28 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 67 (this.defaultArg
abf00 28 6c 6f 6f 70 45 6e 64 2c 20 30 29 29 3b 0a 09 (loopEnd, 0));..
abf10 20 20 20 20 20 20 20 20 73 6f 75 72 63 65 2e 73 source.s
abf20 74 61 72 74 28 74 69 6d 65 2c 20 6f 66 66 73 65 tart(time, offse
abf30 74 2c 20 75 6e 64 65 66 69 6e 65 64 2c 20 74 68 t, undefined, th
abf40 69 73 2e 64 65 66 61 75 6c 74 41 72 67 28 67 61 is.defaultArg(ga
abf50 69 6e 2c 20 31 29 2c 20 74 68 69 73 2e 66 61 64 in, 1), this.fad
abf60 65 49 6e 29 3b 0a 09 20 20 20 20 20 20 20 20 70 eIn);.. p
abf70 69 74 63 68 20 3d 20 74 68 69 73 2e 64 65 66 61 itch = this.defa
abf80 75 6c 74 41 72 67 28 70 69 74 63 68 2c 20 30 29 ultArg(pitch, 0)
abf90 3b 0a 09 20 20 20 20 20 20 20 20 73 6f 75 72 63 ;.. sourc
abfa0 65 2e 70 6c 61 79 62 61 63 6b 52 61 74 65 2e 76 e.playbackRate.v
abfb0 61 6c 75 65 20 3d 20 74 68 69 73 2e 69 6e 74 65 alue = this.inte
abfc0 72 76 61 6c 54 6f 46 72 65 71 75 65 6e 63 79 52 rvalToFrequencyR
abfd0 61 74 69 6f 28 70 69 74 63 68 29 3b 0a 09 20 20 atio(pitch);..
abfe0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
abff0 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
ac000 2f 2a 2a 0a 09 09 20 2a 20 20 53 74 6f 70 20 74 /**... * Stop t
ac010 68 65 20 66 69 72 73 74 20 70 6c 61 79 65 64 20 he first played
ac020 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 instance of the
ac030 62 75 66 66 65 72 20 6e 61 6d 65 2e 0a 09 09 20 buffer name....
ac040 2a 20 20 40 70 61 72 61 6d 20 20 7b 53 74 72 69 * @param {Stri
ac050 6e 67 7d 20 20 62 75 66 66 65 72 4e 61 6d 65 20 ng} bufferName
ac060 20 54 68 65 20 62 75 66 66 65 72 20 74 6f 20 73 The buffer to s
ac070 74 6f 70 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 top.... * @para
ac080 6d 20 20 7b 54 69 6d 65 3d 7d 20 20 74 69 6d 65 m {Time=} time
ac090 20 20 20 20 57 68 65 6e 20 74 6f 20 73 74 6f 70 When to stop
ac0a0 20 74 68 65 20 62 75 66 66 65 72 0a 09 09 20 2a the buffer... *
ac0b0 20 20 40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 @return {Tone
ac0c0 2e 4d 75 6c 74 69 50 6c 61 79 65 72 7d 20 20 74 .MultiPlayer} t
ac0d0 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 his... */.. T
ac0e0 6f 6e 65 2e 4d 75 6c 74 69 50 6c 61 79 65 72 2e one.MultiPlayer.
ac0f0 70 72 6f 74 6f 74 79 70 65 2e 73 74 6f 70 20 3d prototype.stop =
ac100 20 66 75 6e 63 74 69 6f 6e 20 28 62 75 66 66 65 function (buffe
ac110 72 4e 61 6d 65 2c 20 74 69 6d 65 29 20 7b 0a 09 rName, time) {..
ac120 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
ac130 2e 5f 61 63 74 69 76 65 53 6f 75 72 63 65 73 5b ._activeSources[
ac140 62 75 66 66 65 72 4e 61 6d 65 5d 20 26 26 20 74 bufferName] && t
ac150 68 69 73 2e 5f 61 63 74 69 76 65 53 6f 75 72 63 his._activeSourc
ac160 65 73 5b 62 75 66 66 65 72 4e 61 6d 65 5d 2e 6c es[bufferName].l
ac170 65 6e 67 74 68 29 20 7b 0a 09 20 20 20 20 20 20 ength) {..
ac180 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 time = thi
ac190 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 s.toSeconds(time
ac1a0 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
ac1b0 74 68 69 73 2e 5f 61 63 74 69 76 65 53 6f 75 72 this._activeSour
ac1c0 63 65 73 5b 62 75 66 66 65 72 4e 61 6d 65 5d 2e ces[bufferName].
ac1d0 73 68 69 66 74 28 29 2e 73 74 6f 70 28 74 69 6d shift().stop(tim
ac1e0 65 2c 20 74 68 69 73 2e 66 61 64 65 4f 75 74 29 e, this.fadeOut)
ac1f0 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 ;.. } els
ac200 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
ac210 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 throw new Error
ac220 28 27 54 6f 6e 65 2e 4d 75 6c 74 69 50 6c 61 79 ('Tone.MultiPlay
ac230 65 72 3a 20 63 61 6e 6e 6f 74 20 73 74 6f 70 20 er: cannot stop
ac240 61 20 62 75 66 66 65 72 20 74 68 61 74 20 68 61 a buffer that ha
ac250 73 6e 5c 27 74 20 62 65 65 6e 20 73 74 61 72 74 sn\'t been start
ac260 65 64 20 6f 72 20 69 73 20 61 6c 72 65 61 64 79 ed or is already
ac270 20 73 74 6f 70 70 65 64 27 29 3b 0a 09 20 20 20 stopped');..
ac280 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
ac290 72 65 74 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 return this;..
ac2a0 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 };.. /**...
ac2b0 20 2a 20 20 53 74 6f 70 20 61 6c 6c 20 63 75 72 * Stop all cur
ac2c0 72 65 6e 74 6c 79 20 70 6c 61 79 69 6e 67 20 62 rently playing b
ac2d0 75 66 66 65 72 73 20 61 74 20 74 68 65 20 67 69 uffers at the gi
ac2e0 76 65 6e 20 74 69 6d 65 2e 0a 09 09 20 2a 20 20 ven time.... *
ac2f0 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 3d 7d 20 @param {Time=}
ac300 20 74 69 6d 65 20 20 57 68 65 6e 20 74 6f 20 73 time When to s
ac310 74 6f 70 20 74 68 65 20 62 75 66 66 65 72 73 2e top the buffers.
ac320 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 ... * @return
ac330 7b 54 6f 6e 65 2e 4d 75 6c 74 69 50 6c 61 79 65 {Tone.MultiPlaye
ac340 72 7d 20 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 r} this... */..
ac350 20 20 20 20 54 6f 6e 65 2e 4d 75 6c 74 69 50 6c Tone.MultiPl
ac360 61 79 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73 ayer.prototype.s
ac370 74 6f 70 41 6c 6c 20 3d 20 66 75 6e 63 74 69 6f topAll = functio
ac380 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 n (time) {..
ac390 20 20 20 20 74 69 6d 65 20 3d 20 74 68 69 73 2e time = this.
ac3a0 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b toSeconds(time);
ac3b0 0a 09 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 .. for (v
ac3c0 61 72 20 62 75 66 66 65 72 4e 61 6d 65 20 69 6e ar bufferName in
ac3d0 20 74 68 69 73 2e 5f 61 63 74 69 76 65 53 6f 75 this._activeSou
ac3e0 72 63 65 73 29 20 7b 0a 09 20 20 20 20 20 20 20 rces) {..
ac3f0 20 20 20 20 20 76 61 72 20 73 6f 75 72 63 65 73 var sources
ac400 20 3d 20 74 68 69 73 2e 5f 61 63 74 69 76 65 53 = this._activeS
ac410 6f 75 72 63 65 73 5b 62 75 66 66 65 72 4e 61 6d ources[bufferNam
ac420 65 5d 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e];..
ac430 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b for (var i = 0;
ac440 20 69 20 3c 20 73 6f 75 72 63 65 73 2e 6c 65 6e i < sources.len
ac450 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 gth; i++) {..
ac460 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 75 sou
ac470 72 63 65 73 5b 69 5d 2e 73 74 6f 70 28 74 69 6d rces[i].stop(tim
ac480 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e);..
ac490 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 }.. }..
ac4a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
ac4b0 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 is;.. };..
ac4c0 20 2f 2a 2a 0a 09 09 20 2a 20 20 41 64 64 20 61 /**... * Add a
ac4d0 6e 6f 74 68 65 72 20 62 75 66 66 65 72 20 74 6f nother buffer to
ac4e0 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 62 the available b
ac4f0 75 66 66 65 72 73 2e 0a 09 09 20 2a 20 20 40 70 uffers.... * @p
ac500 61 72 61 6d 20 7b 53 74 72 69 6e 67 7d 20 6e 61 aram {String} na
ac510 6d 65 20 54 68 65 20 6e 61 6d 65 20 74 6f 20 74 me The name to t
ac520 68 61 74 20 74 68 65 20 62 75 66 66 65 72 20 69 hat the buffer i
ac530 73 20 72 65 66 65 72 65 64 0a 09 09 20 2a 20 20 s refered... *
ac540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ac550 20 20 20 20 20 74 6f 20 69 6e 20 73 74 61 72 74 to in start
ac560 2f 73 74 6f 70 20 6d 65 74 68 6f 64 73 2e 20 0a /stop methods. .
ac570 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 53 74 .. * @param {St
ac580 72 69 6e 67 7c 54 6f 6e 65 2e 42 75 66 66 65 72 ring|Tone.Buffer
ac590 7d 20 75 72 6c 20 54 68 65 20 75 72 6c 20 6f 66 } url The url of
ac5a0 20 74 68 65 20 62 75 66 66 65 72 20 74 6f 20 6c the buffer to l
ac5b0 6f 61 64 0a 09 09 20 2a 20 20 20 20 20 20 20 20 oad... *
ac5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ac5d0 20 20 20 20 20 20 20 20 20 20 6f 72 20 74 68 65 or the
ac5e0 20 62 75 66 66 65 72 2e 0a 09 09 20 2a 20 20 40 buffer.... * @
ac5f0 70 61 72 61 6d 20 7b 46 75 6e 63 74 69 6f 6e 7d param {Function}
ac600 20 63 61 6c 6c 62 61 63 6b 20 54 68 65 20 66 75 callback The fu
ac610 6e 63 74 69 6f 6e 20 74 6f 20 69 6e 76 6f 6b 65 nction to invoke
ac620 20 61 66 74 65 72 20 74 68 65 20 62 75 66 66 65 after the buffe
ac630 72 20 69 73 20 6c 6f 61 64 65 64 2e 0a 09 09 20 r is loaded....
ac640 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 4d 75 6c */.. Tone.Mul
ac650 74 69 50 6c 61 79 65 72 2e 70 72 6f 74 6f 74 79 tiPlayer.prototy
ac660 70 65 2e 61 64 64 20 3d 20 66 75 6e 63 74 69 6f pe.add = functio
ac670 6e 20 28 6e 61 6d 65 2c 20 75 72 6c 2c 20 63 61 n (name, url, ca
ac680 6c 6c 62 61 63 6b 29 20 7b 0a 09 20 20 20 20 20 llback) {..
ac690 20 20 20 74 68 69 73 2e 62 75 66 66 65 72 73 2e this.buffers.
ac6a0 61 64 64 28 6e 61 6d 65 2c 20 75 72 6c 2c 20 63 add(name, url, c
ac6b0 61 6c 6c 62 61 63 6b 29 3b 0a 09 20 20 20 20 20 allback);..
ac6c0 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0a return this;.
ac6d0 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
ac6e0 0a 09 09 20 2a 20 20 52 65 74 75 72 6e 73 20 74 ... * Returns t
ac6f0 68 65 20 70 6c 61 79 62 61 63 6b 20 73 74 61 74 he playback stat
ac700 65 20 6f 66 20 74 68 65 20 73 6f 75 72 63 65 2e e of the source.
ac710 20 22 73 74 61 72 74 65 64 22 0a 09 09 20 2a 20 "started"... *
ac720 20 69 66 20 74 68 65 72 65 20 61 72 65 20 61 6e if there are an
ac730 79 20 62 75 66 66 65 72 73 20 70 6c 61 79 69 6e y buffers playin
ac740 67 2e 20 22 73 74 6f 70 70 65 64 22 20 6f 74 68 g. "stopped" oth
ac750 65 72 77 69 73 65 2e 0a 09 09 20 2a 20 20 40 74 erwise.... * @t
ac760 79 70 65 20 7b 54 6f 6e 65 2e 53 74 61 74 65 7d ype {Tone.State}
ac770 0a 09 09 20 2a 20 20 40 72 65 61 64 4f 6e 6c 79 ... * @readOnly
ac780 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
ac790 20 54 6f 6e 65 2e 4d 75 6c 74 69 50 6c 61 79 65 Tone.MultiPlaye
ac7a0 72 23 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 73 r#... * @name s
ac7b0 74 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 tate... */..
ac7c0 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
ac7d0 70 65 72 74 79 28 54 6f 6e 65 2e 4d 75 6c 74 69 perty(Tone.Multi
ac7e0 50 6c 61 79 65 72 2e 70 72 6f 74 6f 74 79 70 65 Player.prototype
ac7f0 2c 20 27 73 74 61 74 65 27 2c 20 7b 0a 09 20 20 , 'state', {..
ac800 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 get: funct
ac810 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 ion () {..
ac820 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
ac830 73 2e 5f 61 63 74 69 76 65 53 6f 75 72 63 65 73 s._activeSources
ac840 2e 6c 65 6e 67 74 68 20 3e 20 30 20 3f 20 54 6f .length > 0 ? To
ac850 6e 65 2e 53 74 61 74 65 2e 53 74 61 72 74 65 64 ne.State.Started
ac860 20 3a 20 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 : Tone.State.St
ac870 6f 70 70 65 64 3b 0a 09 20 20 20 20 20 20 20 20 opped;..
ac880 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
ac890 2f 2a 2a 0a 09 09 20 2a 20 4d 75 74 65 20 74 68 /**... * Mute th
ac8a0 65 20 6f 75 74 70 75 74 2e 20 0a 09 09 20 2a 20 e output. ... *
ac8b0 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 4d @memberOf Tone.M
ac8c0 75 6c 74 69 50 6c 61 79 65 72 23 0a 09 09 20 2a ultiPlayer#... *
ac8d0 20 40 74 79 70 65 20 7b 62 6f 6f 6c 65 61 6e 7d @type {boolean}
ac8e0 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6d 75 74 65 ... * @name mute
ac8f0 0a 09 09 20 2a 20 40 65 78 61 6d 70 6c 65 0a 09 ... * @example..
ac900 09 20 2a 20 2f 2f 6d 75 74 65 20 74 68 65 20 6f . * //mute the o
ac910 75 74 70 75 74 0a 09 09 20 2a 20 73 6f 75 72 63 utput... * sourc
ac920 65 2e 6d 75 74 65 20 3d 20 74 72 75 65 3b 0a 09 e.mute = true;..
ac930 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
ac940 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
ac950 54 6f 6e 65 2e 4d 75 6c 74 69 50 6c 61 79 65 72 Tone.MultiPlayer
ac960 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 6d 75 74 .prototype, 'mut
ac970 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 e', {.. g
ac980 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
ac990 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 {.. r
ac9a0 65 74 75 72 6e 20 74 68 69 73 2e 5f 76 6f 6c 75 eturn this._volu
ac9b0 6d 65 2e 6d 75 74 65 3b 0a 09 20 20 20 20 20 20 me.mute;..
ac9c0 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
ac9d0 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6d 75 74 t: function (mut
ac9e0 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
ac9f0 20 20 74 68 69 73 2e 5f 76 6f 6c 75 6d 65 2e 6d this._volume.m
aca00 75 74 65 20 3d 20 6d 75 74 65 3b 0a 09 20 20 20 ute = mute;..
aca10 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
aca20 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 . /**... * C
aca30 6c 65 61 6e 20 75 70 2e 0a 09 09 20 2a 20 20 40 lean up.... * @
aca40 72 65 74 75 72 6e 20 20 7b 54 6f 6e 65 2e 4d 75 return {Tone.Mu
aca50 6c 74 69 50 6c 61 79 65 72 7d 20 20 74 68 69 73 ltiPlayer} this
aca60 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
aca70 2e 4d 75 6c 74 69 50 6c 61 79 65 72 2e 70 72 6f .MultiPlayer.pro
aca80 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 20 3d totype.dispose =
aca90 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
acaa0 20 20 20 20 20 20 20 20 54 6f 6e 65 2e 70 72 6f Tone.pro
acab0 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 totype.dispose.c
acac0 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 all(this);..
acad0 20 20 20 20 74 68 69 73 2e 5f 76 6f 6c 75 6d 65 this._volume
acae0 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 .dispose();..
acaf0 20 20 20 20 20 74 68 69 73 2e 5f 76 6f 6c 75 6d this._volum
acb00 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 e = null;..
acb10 20 20 20 74 68 69 73 2e 5f 77 72 69 74 61 62 6c this._writabl
acb20 65 28 27 76 6f 6c 75 6d 65 27 29 3b 0a 09 20 20 e('volume');..
acb30 20 20 20 20 20 20 74 68 69 73 2e 76 6f 6c 75 6d this.volum
acb40 65 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 e = null;..
acb50 20 20 20 66 6f 72 20 28 76 61 72 20 62 75 66 66 for (var buff
acb60 65 72 4e 61 6d 65 20 69 6e 20 74 68 69 73 2e 5f erName in this._
acb70 61 63 74 69 76 65 53 6f 75 72 63 65 73 29 20 7b activeSources) {
acb80 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
acb90 69 73 2e 5f 61 63 74 69 76 65 53 6f 75 72 63 65 is._activeSource
acba0 73 5b 62 75 66 66 65 72 4e 61 6d 65 5d 2e 66 6f s[bufferName].fo
acbb0 72 45 61 63 68 28 66 75 6e 63 74 69 6f 6e 20 28 rEach(function (
acbc0 73 6f 75 72 63 65 29 20 7b 0a 09 20 20 20 20 20 source) {..
acbd0 20 20 20 20 20 20 20 20 20 20 20 73 6f 75 72 63 sourc
acbe0 65 2e 64 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 e.dispose();..
acbf0 20 20 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 });..
acc00 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
acc10 20 20 74 68 69 73 2e 62 75 66 66 65 72 73 2e 64 this.buffers.d
acc20 69 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 ispose();..
acc30 20 20 20 74 68 69 73 2e 62 75 66 66 65 72 73 20 this.buffers
acc40 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
acc50 20 74 68 69 73 2e 5f 61 63 74 69 76 65 53 6f 75 this._activeSou
acc60 72 63 65 73 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 rces = null;..
acc70 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
acc80 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 s;.. };..
acc90 72 65 74 75 72 6e 20 54 6f 6e 65 2e 4d 75 6c 74 return Tone.Mult
acca0 69 50 6c 61 79 65 72 3b 0a 09 7d 29 3b 0a 09 4d iPlayer;..});..M
accb0 6f 64 75 6c 65 28 66 75 6e 63 74 69 6f 6e 20 28 odule(function (
accc0 54 6f 6e 65 29 20 7b 0a 09 20 20 20 20 2f 2a 2a Tone) {.. /**
accd0 0a 09 09 20 2a 20 40 63 6c 61 73 73 20 54 6f 6e ... * @class Ton
acce0 65 2e 47 72 61 69 6e 50 6c 61 79 65 72 20 69 6d e.GrainPlayer im
accf0 70 6c 65 6d 65 6e 74 73 20 5b 67 72 61 6e 75 6c plements [granul
acd00 61 72 20 73 79 6e 74 68 65 73 69 73 5d 28 68 74 ar synthesis](ht
acd10 74 70 73 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 tps://en.wikiped
acd20 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 47 72 61 6e ia.org/wiki/Gran
acd30 75 6c 61 72 5f 73 79 6e 74 68 65 73 69 73 29 2e ular_synthesis).
acd40 0a 09 09 20 2a 20 20 20 20 20 20 20 20 47 72 61 ... * Gra
acd50 6e 75 6c 61 72 20 53 79 6e 74 68 65 73 69 73 20 nular Synthesis
acd60 65 6e 61 62 6c 65 73 20 79 6f 75 20 74 6f 20 61 enables you to a
acd70 64 6a 75 73 74 20 70 69 74 63 68 20 61 6e 64 20 djust pitch and
acd80 70 6c 61 79 62 61 63 6b 20 72 61 74 65 20 69 6e playback rate in
acd90 64 65 70 65 6e 64 65 6e 74 6c 79 2e 20 54 68 65 dependently. The
acda0 20 67 72 61 69 6e 53 69 7a 65 20 69 73 20 74 68 grainSize is th
acdb0 65 20 0a 09 09 20 2a 20 20 20 20 20 20 20 20 61 e ... * a
acdc0 6d 6f 75 6e 74 20 6f 66 20 74 69 6d 65 20 65 61 mount of time ea
acdd0 63 68 20 73 6d 61 6c 6c 20 63 68 75 6e 6b 20 6f ch small chunk o
acde0 66 20 61 75 64 69 6f 20 69 73 20 70 6c 61 79 65 f audio is playe
acdf0 64 20 66 6f 72 20 61 6e 64 20 74 68 65 20 6f 76 d for and the ov
ace00 65 72 6c 61 70 20 69 73 20 74 68 65 20 0a 09 09 erlap is the ...
ace10 20 2a 20 20 20 20 20 20 20 20 61 6d 6f 75 6e 74 * amount
ace20 20 6f 66 20 63 72 6f 73 73 66 61 64 69 6e 67 20 of crossfading
ace30 74 72 61 6e 73 69 74 69 6f 6e 20 74 69 6d 65 20 transition time
ace40 62 65 74 77 65 65 6e 20 73 75 63 63 65 73 73 69 between successi
ace50 76 65 20 67 72 61 69 6e 73 2e 0a 09 09 20 2a 20 ve grains.... *
ace60 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e 65 7d 0a @extends {Tone}.
ace70 09 09 20 2a 20 40 70 61 72 61 6d 20 7b 53 74 72 .. * @param {Str
ace80 69 6e 67 7c 54 6f 6e 65 2e 42 75 66 66 65 72 7d ing|Tone.Buffer}
ace90 20 75 72 6c 09 54 68 65 20 75 72 6c 20 74 6f 20 url.The url to
acea0 6c 6f 61 64 2c 20 6f 72 20 74 68 65 20 54 6f 6e load, or the Ton
aceb0 65 2e 42 75 66 66 65 72 20 74 6f 20 70 6c 61 79 e.Buffer to play
acec0 2e 0a 09 09 20 2a 20 40 70 61 72 61 6d 20 7b 46 .... * @param {F
aced0 75 6e 63 74 69 6f 6e 3d 7d 20 63 61 6c 6c 62 61 unction=} callba
acee0 63 6b 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 ck The callback
acef0 74 6f 20 69 6e 76 6f 6b 65 20 61 66 74 65 72 20 to invoke after
acf00 74 68 65 20 75 72 6c 20 69 73 20 6c 6f 61 64 65 the url is loade
acf10 64 2e 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f d.... */.. To
acf20 6e 65 2e 47 72 61 69 6e 50 6c 61 79 65 72 20 3d ne.GrainPlayer =
acf30 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
acf40 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 74 69 var opti
acf50 6f 6e 73 20 3d 20 74 68 69 73 2e 6f 70 74 69 6f ons = this.optio
acf60 6e 73 4f 62 6a 65 63 74 28 61 72 67 75 6d 65 6e nsObject(argumen
acf70 74 73 2c 20 5b 0a 09 20 20 20 20 20 20 20 20 20 ts, [..
acf80 20 20 20 27 75 72 6c 27 2c 0a 09 20 20 20 20 20 'url',..
acf90 20 20 20 20 20 20 20 27 6f 6e 6c 6f 61 64 27 0a 'onload'.
acfa0 09 20 20 20 20 20 20 20 20 5d 2c 20 54 6f 6e 65 . ], Tone
acfb0 2e 47 72 61 69 6e 50 6c 61 79 65 72 2e 64 65 66 .GrainPlayer.def
acfc0 61 75 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 aults);..
acfd0 20 54 6f 6e 65 2e 53 6f 75 72 63 65 2e 63 61 6c Tone.Source.cal
acfe0 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 l(this);..
acff0 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 /**.... * The
ad000 20 61 75 64 69 6f 20 62 75 66 66 65 72 20 62 65 audio buffer be
ad010 6c 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65 20 70 longing to the p
ad020 6c 61 79 65 72 2e 0a 09 09 09 20 2a 20 20 40 74 layer..... * @t
ad030 79 70 65 20 20 7b 54 6f 6e 65 2e 42 75 66 66 65 ype {Tone.Buffe
ad040 72 7d 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 r}.... */..
ad050 20 20 20 74 68 69 73 2e 62 75 66 66 65 72 20 3d this.buffer =
ad060 20 6e 65 77 20 54 6f 6e 65 2e 42 75 66 66 65 72 new Tone.Buffer
ad070 28 6f 70 74 69 6f 6e 73 2e 75 72 6c 2c 20 6f 70 (options.url, op
ad080 74 69 6f 6e 73 2e 6f 6e 6c 6f 61 64 29 3b 0a 09 tions.onload);..
ad090 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
ad0a0 2a 20 20 50 6c 61 79 73 20 74 68 65 20 62 75 66 * Plays the buf
ad0b0 66 65 72 20 77 69 74 68 20 61 20 73 6d 61 6c 6c fer with a small
ad0c0 20 65 6e 76 65 6c 6f 70 65 0a 09 09 09 20 2a 20 envelope.... *
ad0d0 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 2e 4d 75 @type {Tone.Mu
ad0e0 6c 74 69 50 6c 61 79 65 72 7d 0a 09 09 09 20 2a ltiPlayer}.... *
ad0f0 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
ad100 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
ad110 5f 70 6c 61 79 65 72 20 3d 20 74 68 69 73 2e 6f _player = this.o
ad120 75 74 70 75 74 20 3d 20 6e 65 77 20 54 6f 6e 65 utput = new Tone
ad130 2e 4d 75 6c 74 69 50 6c 61 79 65 72 28 29 3b 0a .MultiPlayer();.
ad140 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 . /**....
ad150 20 2a 20 20 43 72 65 61 74 65 20 61 20 72 65 70 * Create a rep
ad160 65 61 74 69 6e 67 20 74 69 63 6b 20 74 6f 20 73 eating tick to s
ad170 63 68 65 64 75 6c 65 0a 09 09 09 20 2a 20 20 74 chedule.... * t
ad180 68 65 20 67 72 61 69 6e 73 2e 0a 09 09 09 20 2a he grains..... *
ad190 20 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 2e 43 @type {Tone.C
ad1a0 6c 6f 63 6b 7d 0a 09 09 09 20 2a 20 20 40 70 72 lock}.... * @pr
ad1b0 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 ivate.... */..
ad1c0 20 20 20 20 20 20 74 68 69 73 2e 5f 63 6c 6f 63 this._cloc
ad1d0 6b 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 43 6c 6f k = new Tone.Clo
ad1e0 63 6b 28 74 68 69 73 2e 5f 74 69 63 6b 2e 62 69 ck(this._tick.bi
ad1f0 6e 64 28 74 68 69 73 29 2c 20 31 29 3b 0a 09 20 nd(this), 1);..
ad200 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
ad210 20 20 40 74 79 70 65 20 20 7b 4e 75 6d 62 65 72 @type {Number
ad220 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
ad230 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
ad240 20 20 74 68 69 73 2e 5f 6c 6f 6f 70 53 74 61 72 this._loopStar
ad250 74 20 3d 20 30 3b 0a 09 20 20 20 20 20 20 20 20 t = 0;..
ad260 2f 2a 2a 0a 09 09 09 20 2a 20 20 40 74 79 70 65 /**.... * @type
ad270 20 20 7b 4e 75 6d 62 65 72 7d 0a 09 09 09 20 2a {Number}.... *
ad280 20 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a @private.... *
ad290 2f 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e /.. this.
ad2a0 5f 6c 6f 6f 70 45 6e 64 20 3d 20 30 3b 0a 09 20 _loopEnd = 0;..
ad2b0 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a /**.... *
ad2c0 20 20 40 74 79 70 65 20 20 7b 4e 75 6d 62 65 72 @type {Number
ad2d0 7d 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 }.... * @privat
ad2e0 65 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 e.... */..
ad2f0 20 20 74 68 69 73 2e 5f 70 6c 61 79 62 61 63 6b this._playback
ad300 52 61 74 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 70 Rate = options.p
ad310 6c 61 79 62 61 63 6b 52 61 74 65 3b 0a 09 20 20 laybackRate;..
ad320 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 /**.... *
ad330 20 40 74 79 70 65 20 20 7b 4e 75 6d 62 65 72 7d @type {Number}
ad340 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
ad350 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
ad360 20 74 68 69 73 2e 5f 67 72 61 69 6e 53 69 7a 65 this._grainSize
ad370 20 3d 20 6f 70 74 69 6f 6e 73 2e 67 72 61 69 6e = options.grain
ad380 53 69 7a 65 3b 0a 09 20 20 20 20 20 20 20 20 2f Size;.. /
ad390 2a 2a 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 **.... * @priva
ad3a0 74 65 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 te.... * @type
ad3b0 7b 4e 75 6d 62 65 72 7d 0a 09 09 09 20 2a 2f 0a {Number}.... */.
ad3c0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f . this._o
ad3d0 76 65 72 6c 61 70 20 3d 20 6f 70 74 69 6f 6e 73 verlap = options
ad3e0 2e 6f 76 65 72 6c 61 70 3b 0a 09 20 20 20 20 20 .overlap;..
ad3f0 20 20 20 2f 2a 2a 0a 09 09 09 20 2a 20 20 41 64 /**.... * Ad
ad400 6a 75 73 74 20 74 68 65 20 70 69 74 63 68 20 69 just the pitch i
ad410 6e 64 65 70 65 6e 64 65 6e 74 6c 79 20 6f 66 20 ndependently of
ad420 74 68 65 20 70 6c 61 79 62 61 63 6b 52 61 74 65 the playbackRate
ad430 2e 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 20 ..... * @type
ad440 7b 43 65 6e 74 73 7d 0a 09 09 09 20 2a 2f 0a 09 {Cents}.... */..
ad450 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 74 this.det
ad460 75 6e 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 64 65 une = options.de
ad470 74 75 6e 65 3b 0a 09 20 20 20 20 20 20 20 20 2f tune;.. /
ad480 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 61 6d **.... * The am
ad490 6f 75 6e 74 20 6f 66 20 74 69 6d 65 20 72 61 6e ount of time ran
ad4a0 64 6f 6d 6c 79 20 61 64 64 65 64 0a 09 09 09 20 domly added....
ad4b0 2a 20 20 6f 72 20 73 75 62 74 72 61 63 74 65 64 * or subtracted
ad4c0 20 66 72 6f 6d 20 74 68 65 20 67 72 61 69 6e 27 from the grain'
ad4d0 73 20 6f 66 66 73 65 74 0a 09 09 09 20 2a 20 20 s offset.... *
ad4e0 40 74 79 70 65 20 20 7b 54 69 6d 65 7d 0a 09 09 @type {Time}...
ad4f0 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 74 68 . */.. th
ad500 69 73 2e 64 72 69 66 74 20 3d 20 6f 70 74 69 6f is.drift = optio
ad510 6e 73 2e 64 72 69 66 74 3b 0a 09 20 20 20 20 20 ns.drift;..
ad520 20 20 20 2f 2f 73 65 74 75 70 0a 09 20 20 20 20 //setup..
ad530 20 20 20 20 74 68 69 73 2e 6f 76 65 72 6c 61 70 this.overlap
ad540 20 3d 20 6f 70 74 69 6f 6e 73 2e 6f 76 65 72 6c = options.overl
ad550 61 70 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 ap;.. thi
ad560 73 2e 6c 6f 6f 70 20 3d 20 6f 70 74 69 6f 6e 73 s.loop = options
ad570 2e 6c 6f 6f 70 3b 0a 09 20 20 20 20 20 20 20 20 .loop;..
ad580 74 68 69 73 2e 70 6c 61 79 62 61 63 6b 52 61 74 this.playbackRat
ad590 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 70 6c 61 79 e = options.play
ad5a0 62 61 63 6b 52 61 74 65 3b 0a 09 20 20 20 20 20 backRate;..
ad5b0 20 20 20 74 68 69 73 2e 67 72 61 69 6e 53 69 7a this.grainSiz
ad5c0 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 67 72 61 69 e = options.grai
ad5d0 6e 53 69 7a 65 3b 0a 09 20 20 20 20 20 20 20 20 nSize;..
ad5e0 74 68 69 73 2e 6c 6f 6f 70 53 74 61 72 74 20 3d this.loopStart =
ad5f0 20 6f 70 74 69 6f 6e 73 2e 6c 6f 6f 70 53 74 61 options.loopSta
ad600 72 74 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 rt;.. thi
ad610 73 2e 6c 6f 6f 70 45 6e 64 20 3d 20 6f 70 74 69 s.loopEnd = opti
ad620 6f 6e 73 2e 6c 6f 6f 70 45 6e 64 3b 0a 09 20 20 ons.loopEnd;..
ad630 20 20 20 20 20 20 74 68 69 73 2e 72 65 76 65 72 this.rever
ad640 73 65 20 3d 20 6f 70 74 69 6f 6e 73 2e 72 65 76 se = options.rev
ad650 65 72 73 65 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 erse;.. };..
ad660 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e 64 28 54 Tone.extend(T
ad670 6f 6e 65 2e 47 72 61 69 6e 50 6c 61 79 65 72 2c one.GrainPlayer,
ad680 20 54 6f 6e 65 2e 53 6f 75 72 63 65 29 3b 0a 09 Tone.Source);..
ad690 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 74 68 /**... * th
ad6a0 65 20 64 65 66 61 75 6c 74 20 70 61 72 61 6d 65 e default parame
ad6b0 74 65 72 73 0a 09 09 20 2a 20 20 40 73 74 61 74 ters... * @stat
ad6c0 69 63 0a 09 09 20 2a 20 20 40 63 6f 6e 73 74 0a ic... * @const.
ad6d0 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4f 62 6a .. * @type {Obj
ad6e0 65 63 74 7d 0a 09 09 20 2a 2f 0a 09 20 20 20 20 ect}... */..
ad6f0 54 6f 6e 65 2e 47 72 61 69 6e 50 6c 61 79 65 72 Tone.GrainPlayer
ad700 2e 64 65 66 61 75 6c 74 73 20 3d 20 7b 0a 09 20 .defaults = {..
ad710 20 20 20 20 20 20 20 27 6f 6e 6c 6f 61 64 27 3a 'onload':
ad720 20 54 6f 6e 65 2e 6e 6f 4f 70 2c 0a 09 20 20 20 Tone.noOp,..
ad730 20 20 20 20 20 27 6f 76 65 72 6c 61 70 27 3a 20 'overlap':
ad740 30 2e 31 2c 0a 09 20 20 20 20 20 20 20 20 27 67 0.1,.. 'g
ad750 72 61 69 6e 53 69 7a 65 27 3a 20 30 2e 32 2c 0a rainSize': 0.2,.
ad760 09 20 20 20 20 20 20 20 20 27 64 72 69 66 74 27 . 'drift'
ad770 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 27 70 : 0,.. 'p
ad780 6c 61 79 62 61 63 6b 52 61 74 65 27 3a 20 31 2c laybackRate': 1,
ad790 0a 09 20 20 20 20 20 20 20 20 27 64 65 74 75 6e .. 'detun
ad7a0 65 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 20 e': 0,..
ad7b0 27 6c 6f 6f 70 27 3a 20 66 61 6c 73 65 2c 0a 09 'loop': false,..
ad7c0 20 20 20 20 20 20 20 20 27 6c 6f 6f 70 53 74 61 'loopSta
ad7d0 72 74 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 20 rt': 0,..
ad7e0 20 27 6c 6f 6f 70 45 6e 64 27 3a 20 30 2c 0a 09 'loopEnd': 0,..
ad7f0 20 20 20 20 20 20 20 20 27 72 65 76 65 72 73 65 'reverse
ad800 27 3a 20 66 61 6c 73 65 0a 09 20 20 20 20 7d 3b ': false.. };
ad810 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 .. /**... *
ad820 50 6c 61 79 20 74 68 65 20 62 75 66 66 65 72 20 Play the buffer
ad830 61 74 20 74 68 65 20 67 69 76 65 6e 20 73 74 61 at the given sta
ad840 72 74 54 69 6d 65 2e 20 4f 70 74 69 6f 6e 61 6c rtTime. Optional
ad850 6c 79 20 61 64 64 20 61 6e 20 6f 66 66 73 65 74 ly add an offset
ad860 0a 09 09 20 2a 20 20 66 72 6f 6d 20 74 68 65 20 ... * from the
ad870 73 74 61 72 74 20 6f 66 20 74 68 65 20 62 75 66 start of the buf
ad880 66 65 72 20 74 6f 20 70 6c 61 79 20 66 72 6f 6d fer to play from
ad890 2e 0a 09 09 20 2a 20 20 0a 09 09 20 2a 20 20 40 .... * ... * @
ad8a0 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 5b 73 param {Time} [s
ad8b0 74 61 72 74 54 69 6d 65 3d 6e 6f 77 5d 20 57 68 tartTime=now] Wh
ad8c0 65 6e 20 74 68 65 20 70 6c 61 79 65 72 20 73 68 en the player sh
ad8d0 6f 75 6c 64 20 73 74 61 72 74 2e 0a 09 09 20 2a ould start.... *
ad8e0 20 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d @param {Time}
ad8f0 20 5b 6f 66 66 73 65 74 3d 30 5d 20 54 68 65 20 [offset=0] The
ad900 6f 66 66 73 65 74 20 66 72 6f 6d 20 74 68 65 20 offset from the
ad910 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 beginning of the
ad920 20 73 61 6d 70 6c 65 0a 09 09 20 2a 20 20 20 20 sample... *
ad930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ad940 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 to
ad950 73 74 61 72 74 20 61 74 2e 20 0a 09 09 20 2a 20 start at. ... *
ad960 40 72 65 74 75 72 6e 20 7b 54 6f 6e 65 2e 47 72 @return {Tone.Gr
ad970 61 69 6e 50 6c 61 79 65 72 7d 20 74 68 69 73 0a ainPlayer} this.
ad980 09 09 20 2a 2f 0a 09 20 20 20 20 2f 2a 2a 0a 09 .. */.. /**..
ad990 09 20 2a 20 20 49 6e 74 65 72 6e 61 6c 20 73 74 . * Internal st
ad9a0 61 72 74 20 6d 65 74 68 6f 64 0a 09 09 20 2a 20 art method... *
ad9b0 20 40 70 61 72 61 6d 20 7b 54 69 6d 65 7d 20 74 @param {Time} t
ad9c0 69 6d 65 0a 09 09 20 2a 20 20 40 70 61 72 61 6d ime... * @param
ad9d0 20 7b 54 69 6d 65 7d 20 6f 66 66 73 65 74 0a 09 {Time} offset..
ad9e0 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 . * @private...
ad9f0 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 47 72 */.. Tone.Gr
ada00 61 69 6e 50 6c 61 79 65 72 2e 70 72 6f 74 6f 74 ainPlayer.protot
ada10 79 70 65 2e 5f 73 74 61 72 74 20 3d 20 66 75 6e ype._start = fun
ada20 63 74 69 6f 6e 20 28 74 69 6d 65 2c 20 6f 66 66 ction (time, off
ada30 73 65 74 29 20 7b 0a 09 20 20 20 20 20 20 20 20 set) {..
ada40 6f 66 66 73 65 74 20 3d 20 74 68 69 73 2e 64 65 offset = this.de
ada50 66 61 75 6c 74 41 72 67 28 6f 66 66 73 65 74 2c faultArg(offset,
ada60 20 30 29 3b 0a 09 20 20 20 20 20 20 20 20 6f 66 0);.. of
ada70 66 73 65 74 20 3d 20 74 68 69 73 2e 74 6f 53 65 fset = this.toSe
ada80 63 6f 6e 64 73 28 6f 66 66 73 65 74 29 3b 0a 09 conds(offset);..
ada90 20 20 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 time = t
adaa0 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 his.toSeconds(ti
adab0 6d 65 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 me);.. th
adac0 69 73 2e 5f 6f 66 66 73 65 74 20 3d 20 6f 66 66 is._offset = off
adad0 73 65 74 3b 0a 09 20 20 20 20 20 20 20 20 74 68 set;.. th
adae0 69 73 2e 5f 63 6c 6f 63 6b 2e 73 74 61 72 74 28 is._clock.start(
adaf0 74 69 6d 65 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 time);.. };..
adb00 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 49 6e /**... * In
adb10 74 65 72 6e 61 6c 20 73 74 61 72 74 20 6d 65 74 ternal start met
adb20 68 6f 64 0a 09 09 20 2a 20 20 40 70 61 72 61 6d hod... * @param
adb30 20 7b 54 69 6d 65 7d 20 74 69 6d 65 0a 09 09 20 {Time} time...
adb40 2a 20 20 40 70 72 69 76 61 74 65 0a 09 09 20 2a * @private... *
adb50 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 47 72 61 69 /.. Tone.Grai
adb60 6e 50 6c 61 79 65 72 2e 70 72 6f 74 6f 74 79 70 nPlayer.prototyp
adb70 65 2e 5f 73 74 6f 70 20 3d 20 66 75 6e 63 74 69 e._stop = functi
adb80 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 on (time) {..
adb90 20 20 20 20 20 74 68 69 73 2e 5f 63 6c 6f 63 6b this._clock
adba0 2e 73 74 6f 70 28 74 69 6d 65 29 3b 0a 09 20 20 .stop(time);..
adbb0 20 20 20 20 20 20 74 68 69 73 2e 5f 70 6c 61 79 this._play
adbc0 65 72 2e 73 74 6f 70 28 74 68 69 73 2e 62 75 66 er.stop(this.buf
adbd0 66 65 72 2c 20 74 69 6d 65 29 3b 0a 09 20 20 20 fer, time);..
adbe0 20 20 20 20 20 74 68 69 73 2e 5f 6f 66 66 73 65 this._offse
adbf0 74 20 3d 20 30 3b 0a 09 20 20 20 20 7d 3b 0a 09 t = 0;.. };..
adc00 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 49 6e /**... * In
adc10 76 6f 6b 65 64 20 6f 6e 20 65 61 63 68 20 63 6c voked on each cl
adc20 6f 63 6b 20 74 69 63 6b 2e 20 73 63 68 65 64 75 ock tick. schedu
adc30 6c 65 64 20 61 20 6e 65 77 0a 09 09 20 2a 20 20 led a new... *
adc40 67 72 61 69 6e 20 61 74 20 74 68 69 73 20 74 69 grain at this ti
adc50 6d 65 2e 0a 09 09 20 2a 20 20 40 70 61 72 61 6d me.... * @param
adc60 20 20 7b 54 69 6d 65 7d 20 20 74 69 6d 65 20 0a {Time} time .
adc70 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 0a 09 .. * @private..
adc80 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 47 . */.. Tone.G
adc90 72 61 69 6e 50 6c 61 79 65 72 2e 70 72 6f 74 6f rainPlayer.proto
adca0 74 79 70 65 2e 5f 74 69 63 6b 20 3d 20 66 75 6e type._tick = fun
adcb0 63 74 69 6f 6e 20 28 74 69 6d 65 29 20 7b 0a 09 ction (time) {..
adcc0 20 20 20 20 20 20 20 20 76 61 72 20 62 75 66 66 var buff
adcd0 65 72 44 75 72 61 74 69 6f 6e 20 3d 20 74 68 69 erDuration = thi
adce0 73 2e 62 75 66 66 65 72 2e 64 75 72 61 74 69 6f s.buffer.duratio
adcf0 6e 3b 0a 09 20 20 20 20 20 20 20 20 69 66 20 28 n;.. if (
add00 74 68 69 73 2e 6c 6f 6f 70 20 26 26 20 74 68 69 this.loop && thi
add10 73 2e 5f 6c 6f 6f 70 45 6e 64 20 3e 20 30 29 20 s._loopEnd > 0)
add20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 62 {.. b
add30 75 66 66 65 72 44 75 72 61 74 69 6f 6e 20 3d 20 ufferDuration =
add40 74 68 69 73 2e 5f 6c 6f 6f 70 45 6e 64 3b 0a 09 this._loopEnd;..
add50 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 }..
add60 20 20 20 76 61 72 20 64 72 69 66 74 20 3d 20 28 var drift = (
add70 4d 61 74 68 2e 72 61 6e 64 6f 6d 28 29 20 2a 20 Math.random() *
add80 32 20 2d 20 31 29 20 2a 20 74 68 69 73 2e 64 72 2 - 1) * this.dr
add90 69 66 74 3b 0a 09 20 20 20 20 20 20 20 20 76 61 ift;.. va
adda0 72 20 6f 66 66 73 65 74 20 3d 20 74 68 69 73 2e r offset = this.
addb0 5f 6f 66 66 73 65 74 20 2d 20 74 68 69 73 2e 5f _offset - this._
addc0 6f 76 65 72 6c 61 70 20 2b 20 64 72 69 66 74 3b overlap + drift;
addd0 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 64 65 .. var de
adde0 74 75 6e 65 20 3d 20 74 68 69 73 2e 64 65 74 75 tune = this.detu
addf0 6e 65 20 2f 20 31 30 30 3b 0a 09 20 20 20 20 20 ne / 100;..
ade00 20 20 20 76 61 72 20 6f 72 69 67 69 6e 61 6c 46 var originalF
ade10 61 64 65 49 6e 20 3d 20 74 68 69 73 2e 5f 70 6c adeIn = this._pl
ade20 61 79 65 72 2e 66 61 64 65 49 6e 3b 0a 09 20 20 ayer.fadeIn;..
ade30 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c if (this.l
ade40 6f 6f 70 20 26 26 20 74 68 69 73 2e 5f 6f 66 66 oop && this._off
ade50 73 65 74 20 3e 20 62 75 66 66 65 72 44 75 72 61 set > bufferDura
ade60 74 69 6f 6e 29 20 7b 0a 09 20 20 20 20 20 20 20 tion) {..
ade70 20 20 20 20 20 2f 2f 70 6c 61 79 20 74 68 65 20 //play the
ade80 65 6e 64 0a 09 20 20 20 20 20 20 20 20 20 20 20 end..
ade90 20 76 61 72 20 65 6e 64 53 65 67 6d 65 6e 74 44 var endSegmentD
adea0 75 72 61 74 69 6f 6e 20 3d 20 74 68 69 73 2e 5f uration = this._
adeb0 6f 66 66 73 65 74 20 2d 20 62 75 66 66 65 72 44 offset - bufferD
adec0 75 72 61 74 69 6f 6e 3b 0a 09 20 20 20 20 20 20 uration;..
aded0 20 20 20 20 20 20 74 68 69 73 2e 5f 70 6c 61 79 this._play
adee0 65 72 2e 73 74 61 72 74 28 74 68 69 73 2e 62 75 er.start(this.bu
adef0 66 66 65 72 2c 20 74 69 6d 65 2c 20 6f 66 66 73 ffer, time, offs
adf00 65 74 2c 20 65 6e 64 53 65 67 6d 65 6e 74 44 75 et, endSegmentDu
adf10 72 61 74 69 6f 6e 20 2b 20 74 68 69 73 2e 5f 6f ration + this._o
adf20 76 65 72 6c 61 70 2c 20 64 65 74 75 6e 65 29 3b verlap, detune);
adf30 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f .. //
adf40 61 6e 64 20 70 6c 61 79 20 74 68 65 20 62 65 67 and play the beg
adf50 69 6e 6e 69 6e 67 20 0a 09 20 20 20 20 20 20 20 inning ..
adf60 20 20 20 20 20 6f 66 66 73 65 74 20 3d 20 74 68 offset = th
adf70 69 73 2e 5f 6f 66 66 73 65 74 20 25 20 62 75 66 is._offset % buf
adf80 66 65 72 44 75 72 61 74 69 6f 6e 3b 0a 09 20 20 ferDuration;..
adf90 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f this._
adfa0 6f 66 66 73 65 74 20 3d 20 74 68 69 73 2e 5f 6c offset = this._l
adfb0 6f 6f 70 53 74 61 72 74 3b 0a 09 20 20 20 20 20 oopStart;..
adfc0 20 20 20 20 20 20 20 74 68 69 73 2e 5f 70 6c 61 this._pla
adfd0 79 65 72 2e 66 61 64 65 49 6e 20 3d 20 30 3b 0a yer.fadeIn = 0;.
adfe0 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
adff0 73 2e 5f 70 6c 61 79 65 72 2e 73 74 61 72 74 28 s._player.start(
ae000 74 68 69 73 2e 62 75 66 66 65 72 2c 20 74 69 6d this.buffer, tim
ae010 65 20 2b 20 65 6e 64 53 65 67 6d 65 6e 74 44 75 e + endSegmentDu
ae020 72 61 74 69 6f 6e 2c 20 74 68 69 73 2e 5f 6f 66 ration, this._of
ae030 66 73 65 74 2c 20 6f 66 66 73 65 74 20 2b 20 74 fset, offset + t
ae040 68 69 73 2e 5f 6f 76 65 72 6c 61 70 2c 20 64 65 his._overlap, de
ae050 74 75 6e 65 29 3b 0a 09 20 20 20 20 20 20 20 20 tune);..
ae060 7d 20 65 6c 73 65 20 69 66 20 28 74 68 69 73 2e } else if (this.
ae070 5f 6f 66 66 73 65 74 20 3e 20 62 75 66 66 65 72 _offset > buffer
ae080 44 75 72 61 74 69 6f 6e 29 20 7b 0a 09 20 20 20 Duration) {..
ae090 20 20 20 20 20 20 20 20 20 2f 2f 73 65 74 20 74 //set t
ae0a0 68 65 20 73 74 61 74 65 20 74 6f 20 73 74 6f 70 he state to stop
ae0b0 70 65 64 2e 20 0a 09 20 20 20 20 20 20 20 20 20 ped. ..
ae0c0 20 20 20 74 68 69 73 2e 73 74 6f 70 28 74 69 6d this.stop(tim
ae0d0 65 29 3b 0a 09 20 20 20 20 20 20 20 20 7d 20 65 e);.. } e
ae0e0 6c 73 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 lse {..
ae0f0 20 20 20 69 66 20 28 6f 66 66 73 65 74 20 3c 20 if (offset <
ae100 30 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 0) {..
ae110 20 20 20 20 20 20 74 68 69 73 2e 5f 70 6c 61 79 this._play
ae120 65 72 2e 66 61 64 65 49 6e 20 3d 20 4d 61 74 68 er.fadeIn = Math
ae130 2e 6d 61 78 28 74 68 69 73 2e 5f 70 6c 61 79 65 .max(this._playe
ae140 72 2e 66 61 64 65 49 6e 20 2b 20 6f 66 66 73 65 r.fadeIn + offse
ae150 74 2c 20 30 29 3b 0a 09 20 20 20 20 20 20 20 20 t, 0);..
ae160 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 3d offset =
ae170 20 30 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 0;..
ae180 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
ae190 74 68 69 73 2e 5f 70 6c 61 79 65 72 2e 73 74 61 this._player.sta
ae1a0 72 74 28 74 68 69 73 2e 62 75 66 66 65 72 2c 20 rt(this.buffer,
ae1b0 74 69 6d 65 2c 20 6f 66 66 73 65 74 2c 20 74 68 time, offset, th
ae1c0 69 73 2e 67 72 61 69 6e 53 69 7a 65 20 2b 20 74 is.grainSize + t
ae1d0 68 69 73 2e 5f 6f 76 65 72 6c 61 70 2c 20 64 65 his._overlap, de
ae1e0 74 75 6e 65 29 3b 0a 09 20 20 20 20 20 20 20 20 tune);..
ae1f0 7d 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e }.. this.
ae200 5f 70 6c 61 79 65 72 2e 66 61 64 65 49 6e 20 3d _player.fadeIn =
ae210 20 6f 72 69 67 69 6e 61 6c 46 61 64 65 49 6e 3b originalFadeIn;
ae220 0a 09 20 20 20 20 20 20 20 20 2f 2f 69 6e 63 72 .. //incr
ae230 65 6d 65 6e 74 20 74 68 65 20 6f 66 66 73 65 74 ement the offset
ae240 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 64 75 .. var du
ae250 72 61 74 69 6f 6e 20 3d 20 74 68 69 73 2e 5f 63 ration = this._c
ae260 6c 6f 63 6b 2e 5f 6e 65 78 74 54 69 63 6b 20 2d lock._nextTick -
ae270 20 74 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 time;..
ae280 74 68 69 73 2e 5f 6f 66 66 73 65 74 20 2b 3d 20 this._offset +=
ae290 64 75 72 61 74 69 6f 6e 20 2a 20 74 68 69 73 2e duration * this.
ae2a0 5f 70 6c 61 79 62 61 63 6b 52 61 74 65 3b 0a 09 _playbackRate;..
ae2b0 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a 0a };.. /**.
ae2c0 09 09 20 2a 20 20 4a 75 6d 70 20 74 6f 20 61 20 .. * Jump to a
ae2d0 73 70 65 63 69 66 69 63 20 74 69 6d 65 20 61 6e specific time an
ae2e0 64 20 70 6c 61 79 20 69 74 2e 0a 09 09 20 2a 20 d play it.... *
ae2f0 20 40 70 61 72 61 6d 20 20 7b 54 69 6d 65 7d 20 @param {Time}
ae300 20 6f 66 66 73 65 74 20 20 54 68 65 20 6f 66 66 offset The off
ae310 73 65 74 20 74 6f 20 6a 75 6d 70 20 74 6f 2e 0a set to jump to..
ae320 09 09 20 2a 20 20 40 70 61 72 61 6d 20 7b 54 69 .. * @param {Ti
ae330 6d 65 3d 7d 20 74 69 6d 65 20 57 68 65 6e 20 74 me=} time When t
ae340 6f 20 6d 61 6b 65 20 74 68 65 20 6a 75 6d 70 2e o make the jump.
ae350 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 20 ... * @return
ae360 7b 5b 74 79 70 65 5d 7d 20 20 5b 64 65 73 63 72 {[type]} [descr
ae370 69 70 74 69 6f 6e 5d 0a 09 09 20 2a 2f 0a 09 20 iption]... */..
ae380 20 20 20 54 6f 6e 65 2e 47 72 61 69 6e 50 6c 61 Tone.GrainPla
ae390 79 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 73 63 yer.prototype.sc
ae3a0 72 75 62 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 rub = function (
ae3b0 6f 66 66 73 65 74 2c 20 74 69 6d 65 29 20 7b 0a offset, time) {.
ae3c0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6f . this._o
ae3d0 66 66 73 65 74 20 3d 20 74 68 69 73 2e 74 6f 53 ffset = this.toS
ae3e0 65 63 6f 6e 64 73 28 6f 66 66 73 65 74 29 3b 0a econds(offset);.
ae3f0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 74 . this._t
ae400 69 63 6b 28 74 68 69 73 2e 74 6f 53 65 63 6f 6e ick(this.toSecon
ae410 64 73 28 74 69 6d 65 29 29 3b 0a 09 20 20 20 20 ds(time));..
ae420 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b return this;
ae430 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a .. };.. /*
ae440 2a 0a 09 09 20 2a 20 54 68 65 20 70 6c 61 79 62 *... * The playb
ae450 61 63 6b 20 72 61 74 65 20 6f 66 20 74 68 65 20 ack rate of the
ae460 73 61 6d 70 6c 65 0a 09 09 20 2a 20 40 6d 65 6d sample... * @mem
ae470 62 65 72 4f 66 20 54 6f 6e 65 2e 47 72 61 69 6e berOf Tone.Grain
ae480 50 6c 61 79 65 72 23 0a 09 09 20 2a 20 40 74 79 Player#... * @ty
ae490 70 65 20 7b 50 6f 73 69 74 69 76 65 7d 0a 09 09 pe {Positive}...
ae4a0 20 2a 20 40 6e 61 6d 65 20 70 6c 61 79 62 61 63 * @name playbac
ae4b0 6b 52 61 74 65 0a 09 09 20 2a 2f 0a 09 20 20 20 kRate... */..
ae4c0 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
ae4d0 6f 70 65 72 74 79 28 54 6f 6e 65 2e 47 72 61 69 operty(Tone.Grai
ae4e0 6e 50 6c 61 79 65 72 2e 70 72 6f 74 6f 74 79 70 nPlayer.prototyp
ae4f0 65 2c 20 27 70 6c 61 79 62 61 63 6b 52 61 74 65 e, 'playbackRate
ae500 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 ', {.. ge
ae510 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b t: function () {
ae520 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
ae530 74 75 72 6e 20 74 68 69 73 2e 5f 70 6c 61 79 62 turn this._playb
ae540 61 63 6b 52 61 74 65 3b 0a 09 20 20 20 20 20 20 ackRate;..
ae550 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
ae560 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 72 61 74 t: function (rat
ae570 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
ae580 20 20 74 68 69 73 2e 5f 70 6c 61 79 62 61 63 6b this._playback
ae590 52 61 74 65 20 3d 20 72 61 74 65 3b 0a 09 20 20 Rate = rate;..
ae5a0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 67 this.g
ae5b0 72 61 69 6e 53 69 7a 65 20 3d 20 74 68 69 73 2e rainSize = this.
ae5c0 5f 67 72 61 69 6e 53 69 7a 65 3b 0a 09 20 20 20 _grainSize;..
ae5d0 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
ae5e0 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 . /**... * Th
ae5f0 65 20 6c 6f 6f 70 20 73 74 61 72 74 20 74 69 6d e loop start tim
ae600 65 2e 20 0a 09 09 20 2a 20 40 6d 65 6d 62 65 72 e. ... * @member
ae610 4f 66 20 54 6f 6e 65 2e 47 72 61 69 6e 50 6c 61 Of Tone.GrainPla
ae620 79 65 72 23 0a 09 09 20 2a 20 40 74 79 70 65 20 yer#... * @type
ae630 7b 54 69 6d 65 7d 0a 09 09 20 2a 20 40 6e 61 6d {Time}... * @nam
ae640 65 20 6c 6f 6f 70 53 74 61 72 74 0a 09 09 20 2a e loopStart... *
ae650 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
ae660 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
ae670 65 2e 47 72 61 69 6e 50 6c 61 79 65 72 2e 70 72 e.GrainPlayer.pr
ae680 6f 74 6f 74 79 70 65 2c 20 27 6c 6f 6f 70 53 74 ototype, 'loopSt
ae690 61 72 74 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 art', {..
ae6a0 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
ae6b0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
ae6c0 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 6c 6f return this._lo
ae6d0 6f 70 53 74 61 72 74 3b 0a 09 20 20 20 20 20 20 opStart;..
ae6e0 20 20 7d 2c 0a 09 20 20 20 20 20 20 20 20 73 65 },.. se
ae6f0 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 74 69 6d t: function (tim
ae700 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
ae710 20 20 74 68 69 73 2e 5f 6c 6f 6f 70 53 74 61 72 this._loopStar
ae720 74 20 3d 20 74 68 69 73 2e 74 6f 53 65 63 6f 6e t = this.toSecon
ae730 64 73 28 74 69 6d 65 29 3b 0a 09 20 20 20 20 20 ds(time);..
ae740 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 }.. });..
ae750 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 54 68 65 20 /**... * The
ae760 6c 6f 6f 70 20 65 6e 64 20 74 69 6d 65 2e 20 0a loop end time. .
ae770 09 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 .. * @memberOf T
ae780 6f 6e 65 2e 47 72 61 69 6e 50 6c 61 79 65 72 23 one.GrainPlayer#
ae790 0a 09 09 20 2a 20 40 74 79 70 65 20 7b 54 69 6d ... * @type {Tim
ae7a0 65 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6c 6f e}... * @name lo
ae7b0 6f 70 45 6e 64 0a 09 09 20 2a 2f 0a 09 20 20 20 opEnd... */..
ae7c0 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 Object.definePr
ae7d0 6f 70 65 72 74 79 28 54 6f 6e 65 2e 47 72 61 69 operty(Tone.Grai
ae7e0 6e 50 6c 61 79 65 72 2e 70 72 6f 74 6f 74 79 70 nPlayer.prototyp
ae7f0 65 2c 20 27 6c 6f 6f 70 45 6e 64 27 2c 20 7b 0a e, 'loopEnd', {.
ae800 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 . get: fu
ae810 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 nction () {..
ae820 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
ae830 74 68 69 73 2e 5f 6c 6f 6f 70 45 6e 64 3b 0a 09 this._loopEnd;..
ae840 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 },..
ae850 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f set: functio
ae860 6e 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 n (time) {..
ae870 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6c 6f this._lo
ae880 6f 70 45 6e 64 20 3d 20 74 68 69 73 2e 74 6f 53 opEnd = this.toS
ae890 65 63 6f 6e 64 73 28 74 69 6d 65 29 3b 0a 09 20 econds(time);..
ae8a0 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 }.. })
ae8b0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
ae8c0 54 68 65 20 64 69 72 65 63 74 69 6f 6e 20 74 68 The direction th
ae8d0 65 20 62 75 66 66 65 72 20 73 68 6f 75 6c 64 20 e buffer should
ae8e0 70 6c 61 79 20 69 6e 0a 09 09 20 2a 20 40 6d 65 play in... * @me
ae8f0 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 47 72 61 69 mberOf Tone.Grai
ae900 6e 50 6c 61 79 65 72 23 0a 09 09 20 2a 20 40 74 nPlayer#... * @t
ae910 79 70 65 20 7b 62 6f 6f 6c 65 61 6e 7d 0a 09 09 ype {boolean}...
ae920 20 2a 20 40 6e 61 6d 65 20 72 65 76 65 72 73 65 * @name reverse
ae930 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 ... */.. Obje
ae940 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 ct.definePropert
ae950 79 28 54 6f 6e 65 2e 47 72 61 69 6e 50 6c 61 79 y(Tone.GrainPlay
ae960 65 72 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 72 er.prototype, 'r
ae970 65 76 65 72 73 65 27 2c 20 7b 0a 09 20 20 20 20 everse', {..
ae980 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
ae990 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
ae9a0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
ae9b0 62 75 66 66 65 72 2e 72 65 76 65 72 73 65 3b 0a buffer.reverse;.
ae9c0 09 20 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 . },..
ae9d0 20 20 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 set: functi
ae9e0 6f 6e 20 28 72 65 76 29 20 7b 0a 09 20 20 20 20 on (rev) {..
ae9f0 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 75 66 this.buf
aea00 66 65 72 2e 72 65 76 65 72 73 65 20 3d 20 72 65 fer.reverse = re
aea10 76 3b 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 v;.. }..
aea20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
aea30 09 09 20 2a 20 54 68 65 20 73 69 7a 65 20 6f 66 .. * The size of
aea40 20 65 61 63 68 20 63 68 75 6e 6b 20 6f 66 20 61 each chunk of a
aea50 75 64 69 6f 20 74 68 61 74 20 74 68 65 20 0a 09 udio that the ..
aea60 09 20 2a 20 62 75 66 66 65 72 20 69 73 20 63 68 . * buffer is ch
aea70 6f 70 70 65 64 20 69 6e 74 6f 20 61 6e 64 20 70 opped into and p
aea80 6c 61 79 65 64 20 62 61 63 6b 20 61 74 2e 0a 09 layed back at...
aea90 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f . * @memberOf To
aeaa0 6e 65 2e 47 72 61 69 6e 50 6c 61 79 65 72 23 0a ne.GrainPlayer#.
aeab0 09 09 20 2a 20 40 74 79 70 65 20 7b 54 69 6d 65 .. * @type {Time
aeac0 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 67 72 61 }... * @name gra
aead0 69 6e 53 69 7a 65 0a 09 09 20 2a 2f 0a 09 20 20 inSize... */..
aeae0 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 Object.defineP
aeaf0 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 47 72 61 roperty(Tone.Gra
aeb00 69 6e 50 6c 61 79 65 72 2e 70 72 6f 74 6f 74 79 inPlayer.prototy
aeb10 70 65 2c 20 27 67 72 61 69 6e 53 69 7a 65 27 2c pe, 'grainSize',
aeb20 20 7b 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a {.. get:
aeb30 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 function () {..
aeb40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
aeb50 72 6e 20 74 68 69 73 2e 5f 67 72 61 69 6e 53 69 rn this._grainSi
aeb60 7a 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a ze;.. },.
aeb70 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
aeb80 6e 63 74 69 6f 6e 20 28 73 69 7a 65 29 20 7b 0a nction (size) {.
aeb90 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
aeba0 73 2e 5f 67 72 61 69 6e 53 69 7a 65 20 3d 20 74 s._grainSize = t
aebb0 68 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 73 69 his.toSeconds(si
aebc0 7a 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 ze);..
aebd0 20 20 74 68 69 73 2e 5f 63 6c 6f 63 6b 2e 66 72 this._clock.fr
aebe0 65 71 75 65 6e 63 79 2e 76 61 6c 75 65 20 3d 20 equency.value =
aebf0 74 68 69 73 2e 5f 70 6c 61 79 62 61 63 6b 52 61 this._playbackRa
aec00 74 65 20 2f 20 74 68 69 73 2e 5f 67 72 61 69 6e te / this._grain
aec10 53 69 7a 65 3b 0a 09 20 20 20 20 20 20 20 20 7d Size;.. }
aec20 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f .. });.. /
aec30 2a 2a 0a 09 09 20 2a 20 54 68 69 73 20 69 73 20 **... * This is
aec40 74 68 65 20 64 75 72 61 74 69 6f 6e 20 6f 66 20 the duration of
aec50 74 68 65 20 63 72 6f 73 73 2d 66 61 64 65 20 62 the cross-fade b
aec60 65 74 77 65 65 6e 20 0a 09 09 20 2a 20 73 75 63 etween ... * suc
aec70 65 73 73 69 76 65 20 67 72 61 69 6e 73 2e 0a 09 essive grains...
aec80 09 20 2a 20 40 6d 65 6d 62 65 72 4f 66 20 54 6f . * @memberOf To
aec90 6e 65 2e 47 72 61 69 6e 50 6c 61 79 65 72 23 0a ne.GrainPlayer#.
aeca0 09 09 20 2a 20 40 74 79 70 65 20 7b 54 69 6d 65 .. * @type {Time
aecb0 7d 0a 09 09 20 2a 20 40 6e 61 6d 65 20 6f 76 65 }... * @name ove
aecc0 72 6c 61 70 0a 09 09 20 2a 2f 0a 09 20 20 20 20 rlap... */..
aecd0 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
aece0 70 65 72 74 79 28 54 6f 6e 65 2e 47 72 61 69 6e perty(Tone.Grain
aecf0 50 6c 61 79 65 72 2e 70 72 6f 74 6f 74 79 70 65 Player.prototype
aed00 2c 20 27 6f 76 65 72 6c 61 70 27 2c 20 7b 0a 09 , 'overlap', {..
aed10 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 75 6e get: fun
aed20 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
aed30 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
aed40 68 69 73 2e 5f 6f 76 65 72 6c 61 70 3b 0a 09 20 his._overlap;..
aed50 20 20 20 20 20 20 20 7d 2c 0a 09 20 20 20 20 20 },..
aed60 20 20 20 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e set: function
aed70 20 28 74 69 6d 65 29 20 7b 0a 09 20 20 20 20 20 (time) {..
aed80 20 20 20 20 20 20 20 74 69 6d 65 20 3d 20 74 68 time = th
aed90 69 73 2e 74 6f 53 65 63 6f 6e 64 73 28 74 69 6d is.toSeconds(tim
aeda0 65 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e);..
aedb0 20 74 68 69 73 2e 5f 6f 76 65 72 6c 61 70 20 3d this._overlap =
aedc0 20 74 69 6d 65 3b 0a 09 20 20 20 20 20 20 20 20 time;..
aedd0 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 6f 76 if (this._ov
aede0 65 72 6c 61 70 20 3c 20 30 29 20 7b 0a 09 20 20 erlap < 0) {..
aedf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 th
aee00 69 73 2e 5f 70 6c 61 79 65 72 2e 66 61 64 65 49 is._player.fadeI
aee10 6e 20 3d 20 30 2e 30 31 3b 0a 09 20 20 20 20 20 n = 0.01;..
aee20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
aee30 5f 70 6c 61 79 65 72 2e 66 61 64 65 4f 75 74 20 _player.fadeOut
aee40 3d 20 30 2e 30 31 3b 0a 09 20 20 20 20 20 20 20 = 0.01;..
aee50 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
aee60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
aee70 68 69 73 2e 5f 70 6c 61 79 65 72 2e 66 61 64 65 his._player.fade
aee80 49 6e 20 3d 20 74 69 6d 65 3b 0a 09 20 20 20 20 In = time;..
aee90 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
aeea0 2e 5f 70 6c 61 79 65 72 2e 66 61 64 65 4f 75 74 ._player.fadeOut
aeeb0 20 3d 20 74 69 6d 65 3b 0a 09 20 20 20 20 20 20 = time;..
aeec0 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 }..
aeed0 20 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 }.. });..
aeee0 20 2f 2a 2a 0a 09 09 20 2a 20 43 6c 65 61 6e 20 /**... * Clean
aeef0 75 70 0a 09 09 20 2a 20 40 72 65 74 75 72 6e 20 up... * @return
aef00 7b 54 6f 6e 65 2e 47 72 61 69 6e 50 6c 61 79 65 {Tone.GrainPlaye
aef10 72 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 r} this... */..
aef20 20 20 20 54 6f 6e 65 2e 47 72 61 69 6e 50 6c 61 Tone.GrainPla
aef30 79 65 72 2e 70 72 6f 74 6f 74 79 70 65 2e 64 69 yer.prototype.di
aef40 73 70 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e spose = function
aef50 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 54 () {.. T
aef60 6f 6e 65 2e 53 6f 75 72 63 65 2e 70 72 6f 74 6f one.Source.proto
aef70 74 79 70 65 2e 64 69 73 70 6f 73 65 2e 63 61 6c type.dispose.cal
aef80 6c 28 74 68 69 73 29 3b 0a 09 20 20 20 20 20 20 l(this);..
aef90 20 20 74 68 69 73 2e 62 75 66 66 65 72 2e 64 69 this.buffer.di
aefa0 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
aefb0 20 20 74 68 69 73 2e 62 75 66 66 65 72 20 3d 20 this.buffer =
aefc0 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 null;.. t
aefd0 68 69 73 2e 5f 70 6c 61 79 65 72 2e 64 69 73 70 his._player.disp
aefe0 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 ose();..
aeff0 74 68 69 73 2e 5f 70 6c 61 79 65 72 20 3d 20 6e this._player = n
af000 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 74 68 ull;.. th
af010 69 73 2e 5f 63 6c 6f 63 6b 2e 64 69 73 70 6f 73 is._clock.dispos
af020 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
af030 69 73 2e 5f 63 6c 6f 63 6b 20 3d 20 6e 75 6c 6c is._clock = null
af040 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 ;.. retur
af050 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a n this;.. };.
af060 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 . return Tone
af070 2e 47 72 61 69 6e 50 6c 61 79 65 72 3b 0a 09 7d .GrainPlayer;..}
af080 29 3b 0a 09 4d 6f 64 75 6c 65 28 66 75 6e 63 74 );..Module(funct
af090 69 6f 6e 20 28 54 6f 6e 65 29 20 7b 0a 09 20 20 ion (Tone) {..
af0a0 20 20 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a .. /**... *
af0b0 20 20 40 63 6c 61 73 73 20 20 54 6f 6e 65 2e 55 @class Tone.U
af0c0 73 65 72 4d 65 64 69 61 20 75 73 65 73 20 4d 65 serMedia uses Me
af0d0 64 69 61 44 65 76 69 63 65 73 2e 67 65 74 55 73 diaDevices.getUs
af0e0 65 72 4d 65 64 69 61 20 74 6f 20 6f 70 65 6e 20 erMedia to open
af0f0 75 70 0a 09 09 20 2a 20 20 20 20 20 20 20 20 20 up... *
af100 20 61 6e 64 20 65 78 74 65 72 6e 61 6c 20 6d 69 and external mi
af110 63 72 6f 70 68 6f 6e 65 20 6f 72 20 61 75 64 69 crophone or audi
af120 6f 20 69 6e 70 75 74 2e 20 43 68 65 63 6b 20 0a o input. Check .
af130 09 09 20 2a 20 20 20 20 20 20 20 20 20 20 5b 4d .. * [M
af140 65 64 69 61 44 65 76 69 63 65 73 20 41 50 49 20 ediaDevices API
af150 53 75 70 70 6f 72 74 5d 28 68 74 74 70 73 3a 2f Support](https:/
af160 2f 64 65 76 65 6c 6f 70 65 72 2e 6d 6f 7a 69 6c /developer.mozil
af170 6c 61 2e 6f 72 67 2f 65 6e 2d 55 53 2f 64 6f 63 la.org/en-US/doc
af180 73 2f 57 65 62 2f 41 50 49 2f 4d 65 64 69 61 44 s/Web/API/MediaD
af190 65 76 69 63 65 73 2f 67 65 74 55 73 65 72 4d 65 evices/getUserMe
af1a0 64 69 61 29 0a 09 09 20 2a 20 20 20 20 20 20 20 dia)... *
af1b0 20 20 20 74 6f 20 73 65 65 20 77 68 69 63 68 20 to see which
af1c0 62 72 6f 77 73 65 72 73 20 61 72 65 20 73 75 70 browsers are sup
af1d0 70 6f 72 74 65 64 2e 20 41 63 63 65 73 73 20 74 ported. Access t
af1e0 6f 20 61 6e 20 65 78 74 65 72 6e 61 6c 20 69 6e o an external in
af1f0 70 75 74 0a 09 09 20 2a 20 20 20 20 20 20 20 20 put... *
af200 20 20 69 73 20 6c 69 6d 69 74 65 64 20 74 6f 20 is limited to
af210 73 65 63 75 72 65 20 28 48 54 54 50 53 29 20 63 secure (HTTPS) c
af220 6f 6e 6e 65 63 74 69 6f 6e 73 2e 0a 09 09 20 2a onnections.... *
af230 20 20 20 20 20 20 20 20 20 0a 09 09 20 2a 20 20 ... *
af240 40 63 6f 6e 73 74 72 75 63 74 6f 72 0a 09 09 20 @constructor...
af250 2a 20 20 40 65 78 74 65 6e 64 73 20 7b 54 6f 6e * @extends {Ton
af260 65 7d 0a 09 09 20 2a 20 20 40 70 61 72 61 6d 20 e}... * @param
af270 7b 44 65 63 69 62 65 6c 73 3d 7d 20 76 6f 6c 75 {Decibels=} volu
af280 6d 65 20 54 68 65 20 6c 65 76 65 6c 20 6f 66 20 me The level of
af290 74 68 65 20 69 6e 70 75 74 0a 09 09 20 2a 20 20 the input... *
af2a0 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f @example... * //
af2b0 6c 69 73 74 20 74 68 65 20 69 6e 70 75 74 73 20 list the inputs
af2c0 61 6e 64 20 6f 70 65 6e 20 74 68 65 20 74 68 69 and open the thi
af2d0 72 64 20 6f 6e 65 0a 09 09 20 2a 20 76 61 72 20 rd one... * var
af2e0 6d 6f 74 75 20 3d 20 6e 65 77 20 54 6f 6e 65 2e motu = new Tone.
af2f0 55 73 65 72 4d 65 64 69 61 28 29 3b 0a 09 09 20 UserMedia();...
af300 2a 20 0a 09 09 20 2a 20 2f 2f 6f 70 65 6e 69 6e * ... * //openin
af310 67 20 74 68 65 20 69 6e 70 75 74 20 61 73 6b 73 g the input asks
af320 20 74 68 65 20 75 73 65 72 20 74 6f 20 61 63 74 the user to act
af330 69 76 61 74 65 20 74 68 65 69 72 20 6d 69 63 0a ivate their mic.
af340 09 09 20 2a 20 6d 6f 74 75 2e 6f 70 65 6e 28 29 .. * motu.open()
af350 2e 74 68 65 6e 28 66 75 6e 63 74 69 6f 6e 28 29 .then(function()
af360 7b 0a 09 09 20 2a 20 09 2f 2f 6f 70 65 6e 69 6e {... * .//openin
af370 67 20 69 73 20 61 63 74 69 76 61 74 65 73 20 74 g is activates t
af380 68 65 20 6d 69 63 72 6f 70 68 6f 6e 65 0a 09 09 he microphone...
af390 20 2a 20 09 2f 2f 73 74 61 72 74 69 6e 67 20 6c * .//starting l
af3a0 65 74 73 20 61 75 64 69 6f 20 74 68 72 6f 75 67 ets audio throug
af3b0 68 0a 09 09 20 2a 20 09 6d 6f 74 75 2e 73 74 61 h... * .motu.sta
af3c0 72 74 28 31 30 29 3b 0a 09 09 20 2a 20 7d 29 3b rt(10);... * });
af3d0 0a 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 ... */.. Tone
af3e0 2e 55 73 65 72 4d 65 64 69 61 20 3d 20 66 75 6e .UserMedia = fun
af3f0 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 20 20 ction () {..
af400 20 20 20 20 76 61 72 20 6f 70 74 69 6f 6e 73 20 var options
af410 3d 20 74 68 69 73 2e 6f 70 74 69 6f 6e 73 4f 62 = this.optionsOb
af420 6a 65 63 74 28 61 72 67 75 6d 65 6e 74 73 2c 20 ject(arguments,
af430 5b 27 76 6f 6c 75 6d 65 27 5d 2c 20 54 6f 6e 65 ['volume'], Tone
af440 2e 55 73 65 72 4d 65 64 69 61 2e 64 65 66 61 75 .UserMedia.defau
af450 6c 74 73 29 3b 0a 09 20 20 20 20 20 20 20 20 2f lts);.. /
af460 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 4d 65 **.... * The Me
af470 64 69 61 53 74 72 65 61 6d 4e 6f 64 65 20 0a 09 diaStreamNode ..
af480 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4d 65 64 .. * @type {Med
af490 69 61 53 74 72 65 61 6d 41 75 64 69 6f 53 6f 75 iaStreamAudioSou
af4a0 72 63 65 4e 6f 64 65 7d 0a 09 09 09 20 2a 20 20 rceNode}.... *
af4b0 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a @private.... */.
af4c0 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d . this._m
af4d0 65 64 69 61 53 74 72 65 61 6d 20 3d 20 6e 75 6c ediaStream = nul
af4e0 6c 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a 0a l;.. /**.
af4f0 09 09 09 20 2a 20 20 54 68 65 20 6d 65 64 69 61 ... * The media
af500 20 73 74 72 65 61 6d 20 63 72 65 61 74 65 64 20 stream created
af510 62 79 20 67 65 74 55 73 65 72 4d 65 64 69 61 2e by getUserMedia.
af520 0a 09 09 09 20 2a 20 20 40 74 79 70 65 20 7b 4c .... * @type {L
af530 6f 63 61 6c 4d 65 64 69 61 53 74 72 65 61 6d 7d ocalMediaStream}
af540 0a 09 09 09 20 2a 20 20 40 70 72 69 76 61 74 65 .... * @private
af550 0a 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 .... */..
af560 20 74 68 69 73 2e 5f 73 74 72 65 61 6d 20 3d 20 this._stream =
af570 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 2f null;.. /
af580 2a 2a 0a 09 09 09 20 2a 20 20 54 68 65 20 6f 70 **.... * The op
af590 65 6e 20 64 65 76 69 63 65 0a 09 09 09 20 2a 20 en device.... *
af5a0 20 40 74 79 70 65 20 20 7b 4d 65 64 69 61 44 65 @type {MediaDe
af5b0 76 69 63 65 49 6e 66 6f 7d 0a 09 09 09 20 2a 20 viceInfo}.... *
af5c0 20 40 70 72 69 76 61 74 65 0a 09 09 09 20 2a 2f @private.... */
af5d0 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f .. this._
af5e0 64 65 76 69 63 65 20 3d 20 6e 75 6c 6c 3b 0a 09 device = null;..
af5f0 20 20 20 20 20 20 20 20 2f 2a 2a 0a 09 09 09 20 /**....
af600 2a 20 20 54 68 65 20 6f 75 74 70 75 74 20 76 6f * The output vo
af610 6c 75 6d 65 20 6e 6f 64 65 0a 09 09 09 20 2a 20 lume node.... *
af620 20 40 74 79 70 65 20 20 7b 54 6f 6e 65 2e 56 6f @type {Tone.Vo
af630 6c 75 6d 65 7d 0a 09 09 09 20 2a 20 20 40 70 72 lume}.... * @pr
af640 69 76 61 74 65 0a 09 09 09 20 2a 2f 0a 09 20 20 ivate.... */..
af650 20 20 20 20 20 20 74 68 69 73 2e 5f 76 6f 6c 75 this._volu
af660 6d 65 20 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 me = this.output
af670 20 3d 20 6e 65 77 20 54 6f 6e 65 2e 56 6f 6c 75 = new Tone.Volu
af680 6d 65 28 6f 70 74 69 6f 6e 73 2e 76 6f 6c 75 6d me(options.volum
af690 65 29 3b 0a 09 20 20 20 20 20 20 20 20 2f 2a 2a e);.. /**
af6a0 0a 09 09 09 20 2a 20 54 68 65 20 76 6f 6c 75 6d .... * The volum
af6b0 65 20 6f 66 20 74 68 65 20 6f 75 74 70 75 74 20 e of the output
af6c0 69 6e 20 64 65 63 69 62 65 6c 73 2e 0a 09 09 09 in decibels.....
af6d0 20 2a 20 40 74 79 70 65 20 7b 44 65 63 69 62 65 * @type {Decibe
af6e0 6c 73 7d 0a 09 09 09 20 2a 20 40 73 69 67 6e 61 ls}.... * @signa
af6f0 6c 0a 09 09 09 20 2a 20 40 65 78 61 6d 70 6c 65 l.... * @example
af700 0a 09 09 09 20 2a 20 69 6e 70 75 74 2e 76 6f 6c .... * input.vol
af710 75 6d 65 2e 76 61 6c 75 65 20 3d 20 2d 36 3b 0a ume.value = -6;.
af720 09 09 09 20 2a 2f 0a 09 20 20 20 20 20 20 20 20 ... */..
af730 74 68 69 73 2e 76 6f 6c 75 6d 65 20 3d 20 74 68 this.volume = th
af740 69 73 2e 5f 76 6f 6c 75 6d 65 2e 76 6f 6c 75 6d is._volume.volum
af750 65 3b 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 e;.. this
af760 2e 5f 72 65 61 64 4f 6e 6c 79 28 27 76 6f 6c 75 ._readOnly('volu
af770 6d 65 27 29 3b 0a 09 20 20 20 20 20 20 20 20 74 me');.. t
af780 68 69 73 2e 6d 75 74 65 20 3d 20 6f 70 74 69 6f his.mute = optio
af790 6e 73 2e 6d 75 74 65 3b 0a 09 20 20 20 20 7d 3b ns.mute;.. };
af7a0 0a 09 20 20 20 20 54 6f 6e 65 2e 65 78 74 65 6e .. Tone.exten
af7b0 64 28 54 6f 6e 65 2e 55 73 65 72 4d 65 64 69 61 d(Tone.UserMedia
af7c0 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a );.. /**... *
af7d0 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 61 72 the default par
af7e0 61 6d 65 74 65 72 73 0a 09 09 20 2a 20 40 74 79 ameters... * @ty
af7f0 70 65 20 7b 4f 62 6a 65 63 74 7d 0a 09 09 20 2a pe {Object}... *
af800 2f 0a 09 20 20 20 20 54 6f 6e 65 2e 55 73 65 72 /.. Tone.User
af810 4d 65 64 69 61 2e 64 65 66 61 75 6c 74 73 20 3d Media.defaults =
af820 20 7b 0a 09 20 20 20 20 20 20 20 20 27 76 6f 6c {.. 'vol
af830 75 6d 65 27 3a 20 30 2c 0a 09 20 20 20 20 20 20 ume': 0,..
af840 20 20 27 6d 75 74 65 27 3a 20 66 61 6c 73 65 0a 'mute': false.
af850 09 20 20 20 20 7d 3b 0a 09 20 20 20 20 2f 2a 2a . };.. /**
af860 0a 09 09 20 2a 20 20 4f 70 65 6e 20 74 68 65 20 ... * Open the
af870 6d 65 64 69 61 20 73 74 72 65 61 6d 2e 20 49 66 media stream. If
af880 20 61 20 73 74 72 69 6e 67 20 69 73 20 70 61 73 a string is pas
af890 73 65 64 20 69 6e 2c 20 69 74 20 69 73 20 61 73 sed in, it is as
af8a0 73 75 6d 65 64 0a 09 09 20 2a 20 20 74 6f 20 62 sumed... * to b
af8b0 65 20 74 68 65 20 6c 61 62 65 6c 20 6f 72 20 69 e the label or i
af8c0 64 20 6f 66 20 74 68 65 20 73 74 72 65 61 6d 2c d of the stream,
af8d0 20 69 66 20 61 20 6e 75 6d 62 65 72 20 69 73 20 if a number is
af8e0 70 61 73 73 65 64 20 69 6e 2c 0a 09 09 20 2a 20 passed in,... *
af8f0 20 69 74 20 69 73 20 74 68 65 20 69 6e 70 75 74 it is the input
af900 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20 73 number of the s
af910 74 72 65 61 6d 2e 0a 09 09 20 2a 20 20 40 70 61 tream.... * @pa
af920 72 61 6d 20 20 7b 53 74 72 69 6e 67 7c 4e 75 6d ram {String|Num
af930 62 65 72 7d 20 5b 6c 61 62 65 6c 4f 72 49 64 3d ber} [labelOrId=
af940 22 64 65 66 61 75 6c 74 22 5d 20 54 68 65 20 6c "default"] The l
af950 61 62 65 6c 20 6f 72 20 69 64 20 6f 66 20 74 68 abel or id of th
af960 65 20 61 75 64 69 6f 20 69 6e 70 75 74 20 6d 65 e audio input me
af970 64 69 61 20 64 65 76 69 63 65 2e 20 0a 09 09 20 dia device. ...
af980 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
af990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
af9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
af9b0 20 57 69 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e With no argumen
af9c0 74 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 t, the default s
af9d0 74 72 65 61 6d 20 69 73 20 6f 70 65 6e 65 64 2e tream is opened.
af9e0 0a 09 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b ... * @return {
af9f0 50 72 6f 6d 69 73 65 7d 20 54 68 65 20 70 72 6f Promise} The pro
afa00 6d 69 73 65 20 69 73 20 72 65 73 6f 6c 76 65 64 mise is resolved
afa10 20 77 68 65 6e 20 74 68 65 20 73 74 72 65 61 6d when the stream
afa20 20 69 73 20 6f 70 65 6e 2e 0a 09 09 20 2a 2f 0a is open.... */.
afa30 09 20 20 20 20 54 6f 6e 65 2e 55 73 65 72 4d 65 . Tone.UserMe
afa40 64 69 61 2e 70 72 6f 74 6f 74 79 70 65 2e 6f 70 dia.prototype.op
afa50 65 6e 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6c en = function (l
afa60 61 62 65 6c 4f 72 49 64 29 20 7b 0a 09 20 20 20 abelOrId) {..
afa70 20 20 20 20 20 6c 61 62 65 6c 4f 72 49 64 20 3d labelOrId =
afa80 20 74 68 69 73 2e 64 65 66 61 75 6c 74 41 72 67 this.defaultArg
afa90 28 6c 61 62 65 6c 4f 72 49 64 2c 20 27 64 65 66 (labelOrId, 'def
afaa0 61 75 6c 74 27 29 3b 0a 09 20 20 20 20 20 20 20 ault');..
afab0 20 72 65 74 75 72 6e 20 74 68 69 73 2e 65 6e 75 return this.enu
afac0 6d 65 72 61 74 65 44 65 76 69 63 65 73 28 29 2e merateDevices().
afad0 74 68 65 6e 28 66 75 6e 63 74 69 6f 6e 20 28 64 then(function (d
afae0 65 76 69 63 65 73 29 20 7b 0a 09 20 20 20 20 20 evices) {..
afaf0 20 20 20 20 20 20 20 76 61 72 20 64 65 76 69 63 var devic
afb00 65 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 e;..
afb10 69 66 20 28 74 68 69 73 2e 69 73 4e 75 6d 62 65 if (this.isNumbe
afb20 72 28 6c 61 62 65 6c 4f 72 49 64 29 29 20 7b 0a r(labelOrId)) {.
afb30 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
afb40 20 64 65 76 69 63 65 20 3d 20 64 65 76 69 63 65 device = device
afb50 73 5b 6c 61 62 65 6c 4f 72 49 64 5d 3b 0a 09 20 s[labelOrId];..
afb60 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 } els
afb70 65 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 e {..
afb80 20 20 20 20 20 64 65 76 69 63 65 20 3d 20 64 65 device = de
afb90 76 69 63 65 73 2e 66 69 6e 64 28 66 75 6e 63 74 vices.find(funct
afba0 69 6f 6e 20 28 64 65 76 69 63 65 29 20 7b 0a 09 ion (device) {..
afbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
afbc0 20 20 20 20 72 65 74 75 72 6e 20 64 65 76 69 63 return devic
afbd0 65 2e 6c 61 62 65 6c 20 3d 3d 3d 20 6c 61 62 65 e.label === labe
afbe0 6c 4f 72 49 64 20 7c 7c 20 64 65 76 69 63 65 2e lOrId || device.
afbf0 64 65 76 69 63 65 49 64 20 3d 3d 3d 20 6c 61 62 deviceId === lab
afc00 65 6c 4f 72 49 64 3b 0a 09 20 20 20 20 20 20 20 elOrId;..
afc10 20 20 20 20 20 20 20 20 20 7d 29 3b 0a 09 20 20 });..
afc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
afc30 20 28 21 64 65 76 69 63 65 29 20 7b 0a 09 20 20 (!device) {..
afc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
afc50 20 20 2f 2f 6f 74 68 65 72 77 69 73 65 20 6a 75 //otherwise ju
afc60 73 74 20 74 61 6b 65 20 74 68 65 20 66 69 72 73 st take the firs
afc70 74 20 6f 6e 65 0a 09 20 20 20 20 20 20 20 20 20 t one..
afc80 20 20 20 20 20 20 20 20 20 20 20 64 65 76 69 63 devic
afc90 65 20 3d 20 64 65 76 69 63 65 73 5b 30 5d 3b 0a e = devices[0];.
afca0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
afcb0 20 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 }..
afcc0 7d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 2f }.. /
afcd0 2f 64 69 64 6e 27 74 20 66 69 6e 64 20 61 20 6d /didn't find a m
afce0 61 74 63 68 69 6e 67 20 64 65 76 69 63 65 0a 09 atching device..
afcf0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if (
afd00 21 64 65 76 69 63 65 29 20 7b 0a 09 20 20 20 20 !device) {..
afd10 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f thro
afd20 77 20 6e 65 77 20 45 72 72 6f 72 28 27 54 6f 6e w new Error('Ton
afd30 65 2e 55 73 65 72 4d 65 64 69 61 3a 20 6e 6f 20 e.UserMedia: no
afd40 6d 61 74 63 68 69 6e 67 20 61 75 64 69 6f 20 69 matching audio i
afd50 6e 70 75 74 73 2e 27 29 3b 0a 09 20 20 20 20 20 nputs.');..
afd60 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 }..
afd70 20 20 20 20 20 20 74 68 69 73 2e 5f 64 65 76 69 this._devi
afd80 63 65 20 3d 20 64 65 76 69 63 65 3b 0a 09 20 20 ce = device;..
afd90 20 20 20 20 20 20 20 20 20 20 2f 2f 64 6f 20 67 //do g
afda0 65 74 55 73 65 72 4d 65 64 69 61 0a 09 20 20 20 etUserMedia..
afdb0 20 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 6e var con
afdc0 73 74 72 61 69 6e 74 73 20 3d 20 7b 0a 09 20 20 straints = {..
afdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 75 au
afde0 64 69 6f 3a 20 7b 0a 09 20 20 20 20 20 20 20 20 dio: {..
afdf0 20 20 20 20 20 20 20 20 20 20 20 20 27 64 65 76 'dev
afe00 69 63 65 49 64 27 3a 20 64 65 76 69 63 65 2e 64 iceId': device.d
afe10 65 76 69 63 65 49 64 2c 0a 09 20 20 20 20 20 20 eviceId,..
afe20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 65 'e
afe30 63 68 6f 43 61 6e 63 65 6c 6c 61 74 69 6f 6e 27 choCancellation'
afe40 3a 20 66 61 6c 73 65 2c 0a 09 20 20 20 20 20 20 : false,..
afe50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 73 's
afe60 61 6d 70 6c 65 52 61 74 65 27 3a 20 74 68 69 73 ampleRate': this
afe70 2e 63 6f 6e 74 65 78 74 2e 73 61 6d 70 6c 65 52 .context.sampleR
afe80 61 74 65 0a 09 20 20 20 20 20 20 20 20 20 20 20 ate..
afe90 20 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 }..
afea0 20 20 20 20 7d 3b 0a 09 20 20 20 20 20 20 20 20 };..
afeb0 20 20 20 20 72 65 74 75 72 6e 20 6e 61 76 69 67 return navig
afec0 61 74 6f 72 2e 6d 65 64 69 61 44 65 76 69 63 65 ator.mediaDevice
afed0 73 2e 67 65 74 55 73 65 72 4d 65 64 69 61 28 63 s.getUserMedia(c
afee0 6f 6e 73 74 72 61 69 6e 74 73 29 2e 74 68 65 6e onstraints).then
afef0 28 66 75 6e 63 74 69 6f 6e 20 28 73 74 72 65 61 (function (strea
aff00 6d 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 m) {..
aff10 20 20 20 20 20 20 2f 2f 73 74 61 72 74 20 61 20 //start a
aff20 6e 65 77 20 73 6f 75 72 63 65 20 6f 6e 6c 79 20 new source only
aff30 69 66 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 if the previous
aff40 6f 6e 65 20 69 73 20 63 6c 6f 73 65 64 0a 09 20 one is closed..
aff50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
aff60 66 20 28 21 74 68 69 73 2e 5f 73 74 72 65 61 6d f (!this._stream
aff70 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
aff80 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 this._s
aff90 74 72 65 61 6d 20 3d 20 73 74 72 65 61 6d 3b 0a tream = stream;.
affa0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
affb0 20 20 20 20 20 2f 2f 57 72 61 70 20 61 20 4d 65 //Wrap a Me
affc0 64 69 61 53 74 72 65 61 6d 53 6f 75 72 63 65 4e diaStreamSourceN
affd0 6f 64 65 20 61 72 6f 75 6e 64 20 74 68 65 20 6c ode around the l
affe0 69 76 65 20 69 6e 70 75 74 20 73 74 72 65 61 6d ive input stream
afff0 2e 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
b0000 20 20 20 20 20 20 20 74 68 69 73 2e 5f 6d 65 64 this._med
b0010 69 61 53 74 72 65 61 6d 20 3d 20 74 68 69 73 2e iaStream = this.
b0020 63 6f 6e 74 65 78 74 2e 63 72 65 61 74 65 4d 65 context.createMe
b0030 64 69 61 53 74 72 65 61 6d 53 6f 75 72 63 65 28 diaStreamSource(
b0040 73 74 72 65 61 6d 29 3b 0a 09 20 20 20 20 20 20 stream);..
b0050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f //
b0060 43 6f 6e 6e 65 63 74 20 74 68 65 20 4d 65 64 69 Connect the Medi
b0070 61 53 74 72 65 61 6d 53 6f 75 72 63 65 4e 6f 64 aStreamSourceNod
b0080 65 20 74 6f 20 61 20 67 61 74 65 20 67 61 69 6e e to a gate gain
b0090 20 6e 6f 64 65 0a 09 20 20 20 20 20 20 20 20 20 node..
b00a0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e this.
b00b0 5f 6d 65 64 69 61 53 74 72 65 61 6d 2e 63 6f 6e _mediaStream.con
b00c0 6e 65 63 74 28 74 68 69 73 2e 6f 75 74 70 75 74 nect(this.output
b00d0 29 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 );..
b00e0 20 20 20 20 7d 0a 09 20 20 20 20 20 20 20 20 20 }..
b00f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 return th
b0100 69 73 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 is;..
b0110 20 7d 2e 62 69 6e 64 28 74 68 69 73 29 29 3b 0a }.bind(this));.
b0120 09 20 20 20 20 20 20 20 20 7d 2e 62 69 6e 64 28 . }.bind(
b0130 74 68 69 73 29 29 3b 0a 09 20 20 20 20 7d 3b 0a this));.. };.
b0140 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 43 . /**... * C
b0150 6c 6f 73 65 20 74 68 65 20 6d 65 64 69 61 20 73 lose the media s
b0160 74 72 65 61 6d 0a 09 09 20 2a 20 20 40 72 65 74 tream... * @ret
b0170 75 72 6e 20 7b 54 6f 6e 65 2e 55 73 65 72 4d 65 urn {Tone.UserMe
b0180 64 69 61 7d 20 74 68 69 73 0a 09 09 20 2a 2f 0a dia} this... */.
b0190 09 20 20 20 20 54 6f 6e 65 2e 55 73 65 72 4d 65 . Tone.UserMe
b01a0 64 69 61 2e 70 72 6f 74 6f 74 79 70 65 2e 63 6c dia.prototype.cl
b01b0 6f 73 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 ose = function (
b01c0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 69 66 20 ) {.. if
b01d0 28 74 68 69 73 2e 5f 73 74 72 65 61 6d 29 20 7b (this._stream) {
b01e0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
b01f0 69 73 2e 5f 73 74 72 65 61 6d 2e 67 65 74 41 75 is._stream.getAu
b0200 64 69 6f 54 72 61 63 6b 73 28 29 2e 66 6f 72 45 dioTracks().forE
b0210 61 63 68 28 66 75 6e 63 74 69 6f 6e 20 28 74 72 ach(function (tr
b0220 61 63 6b 29 20 7b 0a 09 20 20 20 20 20 20 20 20 ack) {..
b0230 20 20 20 20 20 20 20 20 74 72 61 63 6b 2e 73 74 track.st
b0240 6f 70 28 29 3b 0a 09 20 20 20 20 20 20 20 20 20 op();..
b0250 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 });..
b0260 20 20 20 20 74 68 69 73 2e 5f 73 74 72 65 61 6d this._stream
b0270 20 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 = null;..
b0280 20 20 20 20 20 20 2f 2f 72 65 6d 6f 76 65 20 74 //remove t
b0290 68 65 20 6f 6c 64 20 6d 65 64 69 61 20 73 74 72 he old media str
b02a0 65 61 6d 0a 09 20 20 20 20 20 20 20 20 20 20 20 eam..
b02b0 20 74 68 69 73 2e 5f 6d 65 64 69 61 53 74 72 65 this._mediaStre
b02c0 61 6d 2e 64 69 73 63 6f 6e 6e 65 63 74 28 29 3b am.disconnect();
b02d0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 .. th
b02e0 69 73 2e 5f 6d 65 64 69 61 53 74 72 65 61 6d 20 is._mediaStream
b02f0 3d 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 = null;..
b0300 20 7d 0a 09 20 20 20 20 20 20 20 20 74 68 69 73 }.. this
b0310 2e 5f 64 65 76 69 63 65 20 3d 20 6e 75 6c 6c 3b ._device = null;
b0320 0a 09 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
b0330 20 74 68 69 73 3b 0a 09 20 20 20 20 7d 3b 0a 09 this;.. };..
b0340 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 /**... * Re
b0350 74 75 72 6e 73 20 61 20 70 72 6f 6d 69 73 65 20 turns a promise
b0360 77 68 69 63 68 20 72 65 73 6f 6c 76 65 73 20 77 which resolves w
b0370 69 74 68 20 74 68 65 20 6c 69 73 74 20 6f 66 20 ith the list of
b0380 61 75 64 69 6f 20 69 6e 70 75 74 20 64 65 76 69 audio input devi
b0390 63 65 73 20 61 76 61 69 6c 61 62 6c 65 2e 0a 09 ces available...
b03a0 09 20 2a 20 20 40 72 65 74 75 72 6e 20 7b 50 72 . * @return {Pr
b03b0 6f 6d 69 73 65 7d 20 54 68 65 20 70 72 6f 6d 69 omise} The promi
b03c0 73 65 20 74 68 61 74 20 69 73 20 72 65 73 6f 6c se that is resol
b03d0 76 65 64 20 77 69 74 68 20 74 68 65 20 64 65 76 ved with the dev
b03e0 69 63 65 73 0a 09 09 20 2a 20 20 40 65 78 61 6d ices... * @exam
b03f0 70 6c 65 0a 09 09 20 2a 20 65 78 74 49 6e 70 75 ple... * extInpu
b0400 74 2e 65 6e 75 6d 65 72 61 74 65 44 65 76 69 63 t.enumerateDevic
b0410 65 73 28 29 2e 74 68 65 6e 28 66 75 6e 63 74 69 es().then(functi
b0420 6f 6e 28 64 65 76 69 63 65 73 29 7b 0a 09 09 20 on(devices){...
b0430 2a 20 09 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 64 * .console.log(d
b0440 65 76 69 63 65 73 29 0a 09 09 20 2a 20 7d 29 0a evices)... * }).
b0450 09 09 20 2a 2f 0a 09 20 20 20 20 54 6f 6e 65 2e .. */.. Tone.
b0460 55 73 65 72 4d 65 64 69 61 2e 70 72 6f 74 6f 74 UserMedia.protot
b0470 79 70 65 2e 65 6e 75 6d 65 72 61 74 65 44 65 76 ype.enumerateDev
b0480 69 63 65 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 ices = function
b0490 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 () {.. re
b04a0 74 75 72 6e 20 6e 61 76 69 67 61 74 6f 72 2e 6d turn navigator.m
b04b0 65 64 69 61 44 65 76 69 63 65 73 2e 65 6e 75 6d ediaDevices.enum
b04c0 65 72 61 74 65 44 65 76 69 63 65 73 28 29 2e 74 erateDevices().t
b04d0 68 65 6e 28 66 75 6e 63 74 69 6f 6e 20 28 64 65 hen(function (de
b04e0 76 69 63 65 73 29 20 7b 0a 09 20 20 20 20 20 20 vices) {..
b04f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 76 return dev
b0500 69 63 65 73 2e 66 69 6c 74 65 72 28 66 75 6e 63 ices.filter(func
b0510 74 69 6f 6e 20 28 64 65 76 69 63 65 29 20 7b 0a tion (device) {.
b0520 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
b0530 20 72 65 74 75 72 6e 20 64 65 76 69 63 65 2e 6b return device.k
b0540 69 6e 64 20 3d 3d 3d 20 27 61 75 64 69 6f 69 6e ind === 'audioin
b0550 70 75 74 27 3b 0a 09 20 20 20 20 20 20 20 20 20 put';..
b0560 20 20 20 7d 29 3b 0a 09 20 20 20 20 20 20 20 20 });..
b0570 7d 29 3b 0a 09 20 20 20 20 7d 3b 0a 09 20 20 20 });.. };..
b0580 20 2f 2a 2a 0a 09 09 20 2a 20 20 52 65 74 75 72 /**... * Retur
b0590 6e 73 20 74 68 65 20 70 6c 61 79 62 61 63 6b 20 ns the playback
b05a0 73 74 61 74 65 20 6f 66 20 74 68 65 20 73 6f 75 state of the sou
b05b0 72 63 65 2c 20 22 73 74 61 72 74 65 64 22 20 77 rce, "started" w
b05c0 68 65 6e 20 74 68 65 20 6d 69 63 72 6f 70 68 6f hen the micropho
b05d0 6e 65 20 69 73 20 6f 70 65 6e 0a 09 09 20 2a 20 ne is open... *
b05e0 20 61 6e 64 20 22 73 74 6f 70 70 65 64 22 20 77 and "stopped" w
b05f0 68 65 6e 20 74 68 65 20 6d 69 63 20 69 73 20 63 hen the mic is c
b0600 6c 6f 73 65 64 2e 0a 09 09 20 2a 20 20 40 74 79 losed.... * @ty
b0610 70 65 20 7b 54 6f 6e 65 2e 53 74 61 74 65 7d 0a pe {Tone.State}.
b0620 09 09 20 2a 20 20 40 72 65 61 64 4f 6e 6c 79 0a .. * @readOnly.
b0630 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 20 .. * @memberOf
b0640 54 6f 6e 65 2e 55 73 65 72 4d 65 64 69 61 23 0a Tone.UserMedia#.
b0650 09 09 20 2a 20 20 40 6e 61 6d 65 20 73 74 61 74 .. * @name stat
b0660 65 0a 09 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a e... */.. Obj
b0670 65 63 74 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 ect.defineProper
b0680 74 79 28 54 6f 6e 65 2e 55 73 65 72 4d 65 64 69 ty(Tone.UserMedi
b0690 61 2e 70 72 6f 74 6f 74 79 70 65 2c 20 27 73 74 a.prototype, 'st
b06a0 61 74 65 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 ate', {..
b06b0 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
b06c0 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
b06d0 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 73 74 return this._st
b06e0 72 65 61 6d 20 26 26 20 74 68 69 73 2e 5f 73 74 ream && this._st
b06f0 72 65 61 6d 2e 61 63 74 69 76 65 20 3f 20 54 6f ream.active ? To
b0700 6e 65 2e 53 74 61 74 65 2e 53 74 61 72 74 65 64 ne.State.Started
b0710 20 3a 20 54 6f 6e 65 2e 53 74 61 74 65 2e 53 74 : Tone.State.St
b0720 6f 70 70 65 64 3b 0a 09 20 20 20 20 20 20 20 20 opped;..
b0730 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
b0740 2f 2a 2a 0a 09 09 20 2a 20 09 52 65 74 75 72 6e /**... * .Return
b0750 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 s an identifier
b0760 66 6f 72 20 74 68 65 20 72 65 70 72 65 73 65 6e for the represen
b0770 74 65 64 20 64 65 76 69 63 65 20 74 68 61 74 20 ted device that
b0780 69 73 20 0a 09 09 20 2a 20 09 70 65 72 73 69 73 is ... * .persis
b0790 74 65 64 20 61 63 72 6f 73 73 20 73 65 73 73 69 ted across sessi
b07a0 6f 6e 73 2e 20 49 74 20 69 73 20 75 6e 2d 67 75 ons. It is un-gu
b07b0 65 73 73 61 62 6c 65 20 62 79 20 6f 74 68 65 72 essable by other
b07c0 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 61 6e applications an
b07d0 64 20 0a 09 09 20 2a 20 09 75 6e 69 71 75 65 20 d ... * .unique
b07e0 74 6f 20 74 68 65 20 6f 72 69 67 69 6e 20 6f 66 to the origin of
b07f0 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 61 70 70 the calling app
b0800 6c 69 63 61 74 69 6f 6e 2e 20 49 74 20 69 73 20 lication. It is
b0810 72 65 73 65 74 20 77 68 65 6e 20 74 68 65 20 0a reset when the .
b0820 09 09 20 2a 20 09 75 73 65 72 20 63 6c 65 61 72 .. * .user clear
b0830 73 20 63 6f 6f 6b 69 65 73 20 28 66 6f 72 20 50 s cookies (for P
b0840 72 69 76 61 74 65 20 42 72 6f 77 73 69 6e 67 2c rivate Browsing,
b0850 20 61 20 64 69 66 66 65 72 65 6e 74 20 69 64 65 a different ide
b0860 6e 74 69 66 69 65 72 20 69 73 20 0a 09 09 20 2a ntifier is ... *
b0870 20 09 75 73 65 64 20 74 68 61 74 20 69 73 20 6e .used that is n
b0880 6f 74 20 70 65 72 73 69 73 74 65 64 20 61 63 72 ot persisted acr
b0890 6f 73 73 20 73 65 73 73 69 6f 6e 73 29 2e 20 52 oss sessions). R
b08a0 65 74 75 72 6e 73 20 75 6e 64 65 66 69 6e 65 64 eturns undefined
b08b0 20 77 68 65 6e 20 74 68 65 20 0a 09 09 20 2a 20 when the ... *
b08c0 09 64 65 76 69 63 65 20 69 73 20 6e 6f 74 20 6f .device is not o
b08d0 70 65 6e 2e 0a 09 09 20 2a 20 20 40 74 79 70 65 pen.... * @type
b08e0 20 7b 53 74 72 69 6e 67 7d 0a 09 09 20 2a 20 20 {String}... *
b08f0 40 72 65 61 64 4f 6e 6c 79 0a 09 09 20 2a 20 20 @readOnly... *
b0900 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 55 @memberOf Tone.U
b0910 73 65 72 4d 65 64 69 61 23 0a 09 09 20 2a 20 20 serMedia#... *
b0920 40 6e 61 6d 65 20 64 65 76 69 63 65 49 64 0a 09 @name deviceId..
b0930 09 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 . */.. Object
b0940 2e 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 .defineProperty(
b0950 54 6f 6e 65 2e 55 73 65 72 4d 65 64 69 61 2e 70 Tone.UserMedia.p
b0960 72 6f 74 6f 74 79 70 65 2c 20 27 64 65 76 69 63 rototype, 'devic
b0970 65 49 64 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 eId', {..
b0980 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 get: function (
b0990 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 ) {..
b09a0 20 69 66 20 28 74 68 69 73 2e 5f 64 65 76 69 63 if (this._devic
b09b0 65 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 e) {..
b09c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 return thi
b09d0 73 2e 5f 64 65 76 69 63 65 2e 64 65 76 69 63 65 s._device.device
b09e0 49 64 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 Id;..
b09f0 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 }.. }..
b0a00 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
b0a10 09 09 20 2a 20 09 52 65 74 75 72 6e 73 20 61 20 .. * .Returns a
b0a20 67 72 6f 75 70 20 69 64 65 6e 74 69 66 69 65 72 group identifier
b0a30 2e 20 54 77 6f 20 64 65 76 69 63 65 73 20 68 61 . Two devices ha
b0a40 76 65 20 74 68 65 20 0a 09 09 20 2a 20 09 73 61 ve the ... * .sa
b0a50 6d 65 20 67 72 6f 75 70 20 69 64 65 6e 74 69 66 me group identif
b0a60 69 65 72 20 69 66 20 74 68 65 79 20 62 65 6c 6f ier if they belo
b0a70 6e 67 20 74 6f 20 74 68 65 20 73 61 6d 65 20 70 ng to the same p
b0a80 68 79 73 69 63 61 6c 20 64 65 76 69 63 65 2e 0a hysical device..
b0a90 09 09 20 2a 20 09 52 65 74 75 72 6e 73 20 75 6e .. * .Returns un
b0aa0 64 65 66 69 6e 65 64 20 77 68 65 6e 20 74 68 65 defined when the
b0ab0 20 64 65 76 69 63 65 20 69 73 20 6e 6f 74 20 6f device is not o
b0ac0 70 65 6e 2e 0a 09 09 20 2a 20 20 40 74 79 70 65 pen.... * @type
b0ad0 20 7b 53 74 72 69 6e 67 7d 0a 09 09 20 2a 20 20 {String}... *
b0ae0 40 72 65 61 64 4f 6e 6c 79 0a 09 09 20 2a 20 20 @readOnly... *
b0af0 40 6d 65 6d 62 65 72 4f 66 20 54 6f 6e 65 2e 55 @memberOf Tone.U
b0b00 73 65 72 4d 65 64 69 61 23 0a 09 09 20 2a 20 20 serMedia#... *
b0b10 40 6e 61 6d 65 20 67 72 6f 75 70 49 64 0a 09 09 @name groupId...
b0b20 20 2a 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e */.. Object.
b0b30 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 defineProperty(T
b0b40 6f 6e 65 2e 55 73 65 72 4d 65 64 69 61 2e 70 72 one.UserMedia.pr
b0b50 6f 74 6f 74 79 70 65 2c 20 27 67 72 6f 75 70 49 ototype, 'groupI
b0b60 64 27 2c 20 7b 0a 09 20 20 20 20 20 20 20 20 67 d', {.. g
b0b70 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 et: function ()
b0b80 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 69 {.. i
b0b90 66 20 28 74 68 69 73 2e 5f 64 65 76 69 63 65 29 f (this._device)
b0ba0 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 {..
b0bb0 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e return this.
b0bc0 5f 64 65 76 69 63 65 2e 67 72 6f 75 70 49 64 3b _device.groupId;
b0bd0 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a .. }.
b0be0 09 20 20 20 20 20 20 20 20 7d 0a 09 20 20 20 20 . }..
b0bf0 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 });.. /**...
b0c00 2a 20 09 52 65 74 75 72 6e 73 20 61 20 6c 61 62 * .Returns a lab
b0c10 65 6c 20 64 65 73 63 72 69 62 69 6e 67 20 74 68 el describing th
b0c20 69 73 20 64 65 76 69 63 65 20 28 66 6f 72 20 65 is device (for e
b0c30 78 61 6d 70 6c 65 20 22 42 75 69 6c 74 2d 69 6e xample "Built-in
b0c40 20 4d 69 63 72 6f 70 68 6f 6e 65 22 29 2e 20 0a Microphone"). .
b0c50 09 09 20 2a 20 09 52 65 74 75 72 6e 73 20 75 6e .. * .Returns un
b0c60 64 65 66 69 6e 65 64 20 77 68 65 6e 20 74 68 65 defined when the
b0c70 20 64 65 76 69 63 65 20 69 73 20 6e 6f 74 20 6f device is not o
b0c80 70 65 6e 20 6f 72 20 6c 61 62 65 6c 20 69 73 20 pen or label is
b0c90 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 0a 09 09 not available...
b0ca0 20 2a 20 09 62 65 63 61 75 73 65 20 6f 66 20 70 * .because of p
b0cb0 65 72 6d 69 73 73 69 6f 6e 73 2e 0a 09 09 20 2a ermissions.... *
b0cc0 20 20 40 74 79 70 65 20 7b 53 74 72 69 6e 67 7d @type {String}
b0cd0 0a 09 09 20 2a 20 20 40 72 65 61 64 4f 6e 6c 79 ... * @readOnly
b0ce0 0a 09 09 20 2a 20 20 40 6d 65 6d 62 65 72 4f 66 ... * @memberOf
b0cf0 20 54 6f 6e 65 2e 55 73 65 72 4d 65 64 69 61 23 Tone.UserMedia#
b0d00 0a 09 09 20 2a 20 20 40 6e 61 6d 65 20 67 72 6f ... * @name gro
b0d10 75 70 49 64 0a 09 09 20 2a 2f 0a 09 20 20 20 20 upId... */..
b0d20 4f 62 6a 65 63 74 2e 64 65 66 69 6e 65 50 72 6f Object.definePro
b0d30 70 65 72 74 79 28 54 6f 6e 65 2e 55 73 65 72 4d perty(Tone.UserM
b0d40 65 64 69 61 2e 70 72 6f 74 6f 74 79 70 65 2c 20 edia.prototype,
b0d50 27 6c 61 62 65 6c 27 2c 20 7b 0a 09 20 20 20 20 'label', {..
b0d60 20 20 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f get: functio
b0d70 6e 20 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 n () {..
b0d80 20 20 20 20 69 66 20 28 74 68 69 73 2e 5f 64 65 if (this._de
b0d90 76 69 63 65 29 20 7b 0a 09 20 20 20 20 20 20 20 vice) {..
b0da0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
b0db0 74 68 69 73 2e 5f 64 65 76 69 63 65 2e 6c 61 62 this._device.lab
b0dc0 65 6c 3b 0a 09 20 20 20 20 20 20 20 20 20 20 20 el;..
b0dd0 20 7d 0a 09 20 20 20 20 20 20 20 20 7d 0a 09 20 }.. }..
b0de0 20 20 20 7d 29 3b 0a 09 20 20 20 20 2f 2a 2a 0a });.. /**.
b0df0 09 09 20 2a 20 4d 75 74 65 20 74 68 65 20 6f 75 .. * Mute the ou
b0e00 74 70 75 74 2e 20 0a 09 09 20 2a 20 40 6d 65 6d tput. ... * @mem
b0e10 62 65 72 4f 66 20 54 6f 6e 65 2e 55 73 65 72 4d berOf Tone.UserM
b0e20 65 64 69 61 23 0a 09 09 20 2a 20 40 74 79 70 65 edia#... * @type
b0e30 20 7b 62 6f 6f 6c 65 61 6e 7d 0a 09 09 20 2a 20 {boolean}... *
b0e40 40 6e 61 6d 65 20 6d 75 74 65 0a 09 09 20 2a 20 @name mute... *
b0e50 40 65 78 61 6d 70 6c 65 0a 09 09 20 2a 20 2f 2f @example... * //
b0e60 6d 75 74 65 20 74 68 65 20 6f 75 74 70 75 74 0a mute the output.
b0e70 09 09 20 2a 20 75 73 65 72 4d 65 64 69 61 2e 6d .. * userMedia.m
b0e80 75 74 65 20 3d 20 74 72 75 65 3b 0a 09 09 20 2a ute = true;... *
b0e90 2f 0a 09 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 /.. Object.de
b0ea0 66 69 6e 65 50 72 6f 70 65 72 74 79 28 54 6f 6e fineProperty(Ton
b0eb0 65 2e 55 73 65 72 4d 65 64 69 61 2e 70 72 6f 74 e.UserMedia.prot
b0ec0 6f 74 79 70 65 2c 20 27 6d 75 74 65 27 2c 20 7b otype, 'mute', {
b0ed0 0a 09 20 20 20 20 20 20 20 20 67 65 74 3a 20 66 .. get: f
b0ee0 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 09 20 20 unction () {..
b0ef0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
b0f00 20 74 68 69 73 2e 5f 76 6f 6c 75 6d 65 2e 6d 75 this._volume.mu
b0f10 74 65 3b 0a 09 20 20 20 20 20 20 20 20 7d 2c 0a te;.. },.
b0f20 09 20 20 20 20 20 20 20 20 73 65 74 3a 20 66 75 . set: fu
b0f30 6e 63 74 69 6f 6e 20 28 6d 75 74 65 29 20 7b 0a nction (mute) {.
b0f40 09 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 . thi
b0f50 73 2e 5f 76 6f 6c 75 6d 65 2e 6d 75 74 65 20 3d s._volume.mute =
b0f60 20 6d 75 74 65 3b 0a 09 20 20 20 20 20 20 20 20 mute;..
b0f70 7d 0a 09 20 20 20 20 7d 29 3b 0a 09 20 20 20 20 }.. });..
b0f80 2f 2a 2a 0a 09 09 20 2a 20 43 6c 65 61 6e 20 75 /**... * Clean u
b0f90 70 2e 0a 09 09 20 2a 20 40 72 65 74 75 72 6e 20 p.... * @return
b0fa0 7b 54 6f 6e 65 2e 55 73 65 72 4d 65 64 69 61 7d {Tone.UserMedia}
b0fb0 20 74 68 69 73 0a 09 09 20 2a 2f 0a 09 20 20 20 this... */..
b0fc0 20 54 6f 6e 65 2e 55 73 65 72 4d 65 64 69 61 2e Tone.UserMedia.
b0fd0 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
b0fe0 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 e = function ()
b0ff0 7b 0a 09 20 20 20 20 20 20 20 20 54 6f 6e 65 2e {.. Tone.
b1000 70 72 6f 74 6f 74 79 70 65 2e 64 69 73 70 6f 73 prototype.dispos
b1010 65 2e 63 61 6c 6c 28 74 68 69 73 29 3b 0a 09 20 e.call(this);..
b1020 20 20 20 20 20 20 20 74 68 69 73 2e 63 6c 6f 73 this.clos
b1030 65 28 29 3b 0a 09 20 20 20 20 20 20 20 20 74 68 e();.. th
b1040 69 73 2e 5f 77 72 69 74 61 62 6c 65 28 27 76 6f is._writable('vo
b1050 6c 75 6d 65 27 29 3b 0a 09 20 20 20 20 20 20 20 lume');..
b1060 20 74 68 69 73 2e 5f 76 6f 6c 75 6d 65 2e 64 69 this._volume.di
b1070 73 70 6f 73 65 28 29 3b 0a 09 20 20 20 20 20 20 spose();..
b1080 20 20 74 68 69 73 2e 5f 76 6f 6c 75 6d 65 20 3d this._volume =
b1090 20 6e 75 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 null;..
b10a0 74 68 69 73 2e 76 6f 6c 75 6d 65 20 3d 20 6e 75 this.volume = nu
b10b0 6c 6c 3b 0a 09 20 20 20 20 20 20 20 20 72 65 74 ll;.. ret
b10c0 75 72 6e 20 74 68 69 73 3b 0a 09 20 20 20 20 7d urn this;.. }
b10d0 3b 0a 09 20 20 20 20 2f 2a 2a 0a 09 09 20 2a 20 ;.. /**... *
b10e0 20 49 66 20 67 65 74 55 73 65 72 4d 65 64 69 61 If getUserMedia
b10f0 20 69 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 is supported by
b1100 20 74 68 65 20 62 72 6f 77 73 65 72 2e 0a 09 09 the browser....
b1110 20 2a 20 20 40 74 79 70 65 20 20 7b 42 6f 6f 6c * @type {Bool
b1120 65 61 6e 7d 0a 09 09 20 2a 20 20 40 6d 65 6d 62 ean}... * @memb
b1130 65 72 4f 66 20 54 6f 6e 65 2e 55 73 65 72 4d 65 erOf Tone.UserMe
b1140 64 69 61 23 0a 09 09 20 2a 20 20 40 6e 61 6d 65 dia#... * @name
b1150 20 73 75 70 70 6f 72 74 65 64 0a 09 09 20 2a 20 supported... *
b1160 20 40 73 74 61 74 69 63 0a 09 09 20 2a 20 20 40 @static... * @
b1170 72 65 61 64 4f 6e 6c 79 0a 09 09 20 2a 2f 0a 09 readOnly... */..
b1180 20 20 20 20 4f 62 6a 65 63 74 2e 64 65 66 69 6e Object.defin
b1190 65 50 72 6f 70 65 72 74 79 28 54 6f 6e 65 2e 55 eProperty(Tone.U
b11a0 73 65 72 4d 65 64 69 61 2c 20 27 73 75 70 70 6f serMedia, 'suppo
b11b0 72 74 65 64 27 2c 20 7b 0a 09 20 20 20 20 20 20 rted', {..
b11c0 20 20 67 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 get: function
b11d0 28 29 20 7b 0a 09 20 20 20 20 20 20 20 20 20 20 () {..
b11e0 20 20 72 65 74 75 72 6e 20 21 54 6f 6e 65 2e 70 return !Tone.p
b11f0 72 6f 74 6f 74 79 70 65 2e 69 73 55 6e 64 65 66 rototype.isUndef
b1200 28 6e 61 76 69 67 61 74 6f 72 2e 6d 65 64 69 61 (navigator.media
b1210 44 65 76 69 63 65 73 29 20 26 26 20 54 6f 6e 65 Devices) && Tone
b1220 2e 70 72 6f 74 6f 74 79 70 65 2e 69 73 46 75 6e .prototype.isFun
b1230 63 74 69 6f 6e 28 6e 61 76 69 67 61 74 6f 72 2e ction(navigator.
b1240 6d 65 64 69 61 44 65 76 69 63 65 73 2e 67 65 74 mediaDevices.get
b1250 55 73 65 72 4d 65 64 69 61 29 3b 0a 09 20 20 20 UserMedia);..
b1260 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 29 3b 0a }.. });.
b1270 09 20 20 20 20 72 65 74 75 72 6e 20 54 6f 6e 65 . return Tone
b1280 2e 55 73 65 72 4d 65 64 69 61 3b 0a 09 7d 29 3b .UserMedia;..});
b1290 0a 09 0a 09 72 65 74 75 72 6e 20 54 6f 6e 65 3b ....return Tone;
b12a0 0a 7d 29 29 3b .}));