{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../node_modules/tone/Tone/core/Tone.js","webpack:///../node_modules/tone/Tone/signal/Multiply.js","webpack:///../node_modules/tone/Tone/signal/Signal.js","webpack:///./audiocontext.js","webpack:///../node_modules/tone/Tone/signal/Add.js","webpack:///./audioWorklet/processorNames.js","webpack:///../node_modules/tone/Tone/signal/WaveShaper.js","webpack:///../node_modules/tone/Tone/signal/TimelineSignal.js","webpack:///../node_modules/tone/Tone/signal/Scale.js","webpack:///../node_modules/tone/Tone/type/Type.js","webpack:///../node_modules/tone/Tone/core/Gain.js","webpack:///../node_modules/tone/Tone/core/Clock.js","webpack:///../node_modules/tone/Tone/core/Context.js","webpack:///../node_modules/tone/Tone/signal/Subtract.js","webpack:///../node_modules/tone/Tone/core/Emitter.js","webpack:///../node_modules/tone/Tone/signal/SignalBase.js","webpack:///../node_modules/tone/Tone/type/Time.js","webpack:///../node_modules/tone/Tone/type/TimeBase.js","webpack:///../node_modules/tone/Tone/core/Param.js","webpack:///../node_modules/tone/Tone/core/Timeline.js","webpack:///../node_modules/tone/Tone/signal/Negate.js","webpack:///../node_modules/tone/Tone/signal/GreaterThanZero.js","webpack:///../node_modules/startaudiocontext/StartAudioContext.js","webpack:///../node_modules/tone/Tone/component/CrossFade.js","webpack:///../node_modules/audioworklet-polyfill/dist/audioworklet-polyfill.js","webpack:///./shims.js","webpack:///../node_modules/webpack/buildin/global.js","webpack:///./audioWorklet/recorderProcessor.js","webpack:///./audioWorklet/soundFileProcessor.js","webpack:///./audioWorklet/amplitudeProcessor.js","webpack:///../node_modules/tone/Tone/type/Frequency.js","webpack:///../node_modules/tone/Tone/type/TransportTime.js","webpack:///../node_modules/tone/Tone/signal/Expr.js","webpack:///../node_modules/tone/Tone/signal/GreaterThan.js","webpack:///../node_modules/tone/Tone/signal/Abs.js","webpack:///../node_modules/tone/Tone/signal/Modulo.js","webpack:///../node_modules/tone/Tone/signal/Pow.js","webpack:///../node_modules/tone/Tone/signal/AudioToGain.js","webpack:///../node_modules/tone/Tone/signal/EqualPowerGain.js","webpack:///../node_modules/tone/Tone/core/TimelineState.js","webpack:///./main.js","webpack:///./helpers.js","webpack:///./errorHandler.js","webpack:///./audioWorklet/index.js","webpack:///./panner.js","webpack:///./soundfile.js","webpack:///./amplitude.js","webpack:///./fft.js","webpack:///./oscillator.js","webpack:///./envelope.js","webpack:///./noise.js","webpack:///./pulse.js","webpack:///./audioin.js","webpack:///./effect.js","webpack:///./filter.js","webpack:///./eqFilter.js","webpack:///./eq.js","webpack:///./listener3d.js","webpack:///./panner3d.js","webpack:///./delay.js","webpack:///./reverb.js","webpack:///./metro.js","webpack:///./looper.js","webpack:///./soundLoop.js","webpack:///./compressor.js","webpack:///./peakDetect.js","webpack:///./soundRecorder.js","webpack:///./distortion.js","webpack:///./gain.js","webpack:///./audioVoice.js","webpack:///./monosynth.js","webpack:///./onsetDetect.js","webpack:///./polysynth.js","webpack:///./deprecations/Signal.js","webpack:///./app.js"],"names":["define","Tone","inputs","outputs","this","isUndef","input","context","createGain","Array","output","audioContext","prototype","set","params","value","rampTime","isObject","isString","tmpObj","paramLoop","attr","parent","indexOf","attrSplit","split","i","length","splice","innerParam","join","param","Signal","Param","rampTo","AudioParam","get","_collectDefaults","constructor","ret","subRet","j","subAttr","isFunction","constr","defaults","Object","keys","_super","superDefs","push","toString","className","isLetter","match","sameConstructor","defineProperty","isArray","dispose","AudioNode","disconnect","connect","unit","outputNum","inputNum","defaultArg","destination","isNumber","apply","arguments","connectSeries","currentUnit","toUnit","chain","fan","given","fallback","givenProp","fallbackProp","optionsObject","values","options","val","arg","call","isBoolean","noOp","_readOnly","property","writable","enumerable","_writable","State","Started","Stopped","Paused","equalPowerScale","percent","piFactor","Math","PI","sin","dbToGain","db","pow","gainToDb","gain","log","LN10","intervalToFrequencyRatio","interval","now","extend","child","TempConstructor","Context","emit","setContext","ctx","sampleRate","hasAudioContext","window","hasOwnProperty","hasPromises","hasWorkers","version","TONE_SILENCE_VERSION_LOGGING","console","Multiply","createInsOuts","_mult","Gain","_param","_gain","getConstant","units","Type","Default","convert","SignalBase","global","audiocontext","AudioContext","getAudioContext","userStartAudio","elements","callback","elt","p5","Element","map","e","StartAudioContext","Add","_sum","module","exports","recorderProcessor","soundFileProcessor","amplitudeProcessor","WaveShaper","mapping","bufferLen","_shaper","createWaveShaper","_curve","curve","isFinite","Float32Array","setMap","len","normalized","oversample","oversampling","RangeError","TimelineSignal","_events","Timeline","_initial","_fromUnits","Linear","Exponential","Target","Curve","Set","getValueAtTime","_toUnits","convertedVal","cancelScheduledValues","setValueAtTime","startTime","toSeconds","add","type","time","linearRampToValueAtTime","endTime","exponentialRampToValueAtTime","beforeEvent","_searchBefore","_minOutput","setValue","max","sampleTime","setTargetAtTime","timeConstant","constant","setValueCurveAtTime","duration","scaling","floats","segmentTime","after","cancel","setRampPoint","before","_searchAfter","linearRampToValueBetween","start","finish","exponentialRampToValueBetween","getAfter","previouVal","previous","getBefore","_exponentialApproach","_curveInterpolate","_linearInterpolate","_exponentialInterpolate","t0","v0","v1","t","exp","t1","progress","lowerIndex","floor","upperIndex","ceil","lowerVal","upperVal","Scale","outputMin","outputMax","_outputMin","_outputMax","_scale","_add","_setRange","min","Time","Frequency","TransportTime","Ticks","NormalRange","AudioRange","Decibels","Interval","BPM","Positive","Cents","Degrees","MIDI","BarsBeatsSixteenths","Samples","Hertz","Note","Milliseconds","Seconds","Notation","TimeBase","toFrequency","freq","valueOf","toTicks","Transport","ticks","GainNode","createGainNode","_gainNode","Clock","Emitter","_nextTick","_lastState","frequency","_state","TimelineState","_boundLoop","_loop","bind","on","lookAhead","offset","state","stop","setStateAtTime","pause","loopInterval","updateInterval","lag","currentState","event","tickTime","getStateAtTime","off","Infinity","toneConnect","B","outNum","inNum","nativeConnect","Error","nativeDisconnect","webkitAudioContext","prop","_context","_defineProperty","_latencyHint","_lookAhead","_updateInterval","_computedUpdateInterval","_worker","_createWorker","_constants","mixin","currentTime","URL","webkitURL","blob","Blob","toFixed","blobUrl","createObjectURL","worker","Worker","addEventListener","_lastUpdate","diff","buffer","createBuffer","arr","getChannelData","createBufferSource","channelCount","channelCountMode","loop","lA","blockTime","postMessage","hint","latencyHint","supported","warn","Subtract","_neg","Negate","events","eventName","ev","eventList","args","slice","object","functions","func","emitterFunc","node","outputNumber","inputNumber","overridden","_plusNow","_unaryExpressions","create","quantize","regexp","method","rh","nextSubdivision","lh","subdiv","_expr","expr","subdivision","round","addNow","_defaultExpr","_noOp","copy","toNotation","retNotation","_toNotationHelper","retTripletNotation","testNotations","threshold","_notationToUnits","notationTime","multiple","notation","primaryExprs","_primaryExpressions","notationExprs","n","m","toBarsBeatsSixteenths","quarterTime","_beatsToUnits","quarters","measures","_timeSignature","sixteenths","parseFloat","PPQ","toSamples","toMilliseconds","_defaultUnits","exprString","_parseExprString","clone","instance","parseInt","_ticksToUnits","hz","_frequencyToUnits","tr","q","s","total","_secondsToUnits","samples","default","_binaryExpressions","+","precedence","-","*","/","neg","_syntaxGlue","(",")","_tokenize","position","tokens","token","getNextToken","trim","substr","expressions","group","opName","op","reg","SyntaxError","next","peek","_matchGroup","prec","test","_parseBinary","lexer","_parseUnary","_parsePrimary","matching","beats","bpm","seconds","timeSignature","_pushExpr","name","sub","mult","div","_lfo","lfo","undefined","LFO","currentVal","exponentialRampToValue","linearRampToValue","_timeline","_toRemove","_iterating","memory","index","_search","remove","shift","cancelBefore","beginning","end","midPoint","nextEvent","_iterate","lowerBound","upperBound","forEach","forEachBefore","forEachAfter","forEachFrom","forEachAtTime","_multiply","GreaterThanZero","_thresh","root","factory","amd","TapListener","element","_dragged","_element","_bindedMove","_moved","_bindedEnd","_ended","isStarted","source","resume","startContext","removeEventListener","promise","Promise","success","checkLoop","requestAnimationFrame","onStarted","tapListeners","bindTapListener","NodeList","document","querySelectorAll","jquery","toArray","tap","body","then","CrossFade","initialFade","a","b","fade","_equalPowerA","EqualPowerGain","_equalPowerB","_invert","Expr","r","parameters","o","bufferSize","fill","processor","realm","exec","inputBuffer","outputBuffer","process","numberOfChannels","$$processors","$$context","AudioWorkletNode","self","createScriptProcessor","outputChannelCount","Map","properties","u","c","l","defaultValue","p","MessageChannel","port2","f","Processor","port","port1","onaudioprocess","$$audioWorklet","AudioWorklet","addModule","fetch","ok","status","text","AudioWorkletProcessor","registerProcessor","parameterDescriptors","createElement","style","cssText","appendChild","contentWindow","createTextNode","$hook","documentElement","transpile","String","fixSetTarget","setTargetValueAtTime","createDelay","createDelayNode","createJavaScriptNode","createPeriodicWave","createWaveTable","internal_createGain","internal_createDelay","maxDelayTime","delayTime","internal_createBufferSource","when","noteGrainOn","noteOn","internal_start","noteOff","internal_stop","playbackRate","internal_createDynamicsCompressor","createDynamicsCompressor","knee","ratio","reduction","attack","release","internal_createBiquadFilter","createBiquadFilter","detune","Q","createOscillator","internal_createOscillator","setPeriodicWave","setWaveTable","OfflineAudioContext","webkitOfflineAudioContext","navigator","getUserMedia","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","el","isSupported","canPlayType","isOGGSupported","isMP3Supported","isWAVSupported","isAACSupported","isAIFSupported","isFileSupported","extension","toLowerCase","g","Function","midi","midiToFrequency","note","pitch","octave","noteNumber","noteToScaleIndex","transpose","harmonize","intervals","toMidi","frequencyToMidi","toNote","A4","LN2","scaleIndexToNote","cbb","cb","c#","cx","dbb","d","d#","dx","ebb","eb","e#","ex","fbb","fb","f#","fx","gbb","gb","g#","gx","abb","ab","a#","ax","bbb","bb","b#","bx","_secondsToTicks","applyBinary","Constructor","_eval","applyUnary","getNumber","literalNumber","_replacements","inputCount","_parseInputs","_nodes","result","tree","_parseTree","_disposeNodes","_Expressions","signal","glue",",","abs","Abs","mod","modulus","Modulo","Pow","a2g","AudioToGain","binary","unary","!","NOT","inputArray","inputMax","replace","matchSyntax","syn","matchGroup","groupName","parseExpression","parseUnary","operator","parsePrimary","parseArgumentList","parseFunctionCall","GreaterThan","_gtz","_abs","_subtract","_modSignal","_setWaveShaper","_exp","_expScaler","_expFunc","_norm","x","_eqPower","initial","Main","limiter","meter","fftMeter","soundArray","parts","extensions","p5sound","getOutputVolume","outputVolume","vol","tFromNow","currentVol","soundOut","_silentNode","freqToMidi","mathlog2","midiToFreq","noteToFreq","wholeNotes","A","C","D","E","F","G","toUpperCase","soundFormats","disposeSound","_checkFileFormats","paths","path","extTest","pop","pathSplit","pathCore","_mathChain","math","thisChain","nextChain","mathOps","convertToWav","audioBuffer","leftChannel","rightChannel","interleaved","interleave","ArrayBuffer","view","DataView","writeUTFBytes","setUint32","setUint16","lng","volume","setInt16","inputIndex","string","setUint8","charCodeAt","safeBufferSize","idealBufferSize","tempAudioWorkletNode","processorNames","ScriptProcessorNode","saveSound","soundFile","fileName","dataView","writeFile","CustomError","errorTrace","failedPath","err","tempStack","splitStack","originalStack","stack","filter","ln","moduleSources","require","ac","initializedAudioWorklets","loadAudioWorkletModules","all","moduleSrc","objectURL","audioWorklet","registerMethod","preload","_incrementPreload","onWorkletModulesLoad","_decrementPreload","panner","createStereoPanner","Panner","stereoPanner","pan","obj","numInputChannels","left","right","channelInterpretation","splitter","createChannelSplitter","createChannelMerger","v","rightVal","cos","leftVal","numChannels","_createCounterBuffer","audioBuf","arrayBuffer","Cue","id","_clearOnEnd","thisBufferSourceNode","target","_playing","_onended","bufferSourceNodes","_","reverse","SoundFile","onload","onerror","whileLoading","url","File","FileReader","FileList","file","_looping","_paused","_pauseTime","_cues","_cueIDCounter","_lastPos","_counterNode","_workletNode","bufferSourceNode","reversed","pauseTime","mode","startMillis","panPosition","load","_whileLoading","amp","setVolume","errorCallback","request","XMLHttpRequest","evt","_updateProgress","open","responseType","decodeAudioData","response","buff","inputChannels","msg","error","statusText","message","send","reader","readAsArrayBuffer","lengthComputable","percentComplete","loaded","rate","_cueStart","cueStart","cueEnd","isPlaying","_initSourceNode","_initCounterNode","_arrayIndex","loopStart","loopEnd","str","pTime","play","bool","timeFromNow","stopAll","_time","pval","reverseBuffer","num","newPlaybackRate","_rampTime","_tFromNow","cueTime","cTime","dur","width","sampleSize","sampleStep","channels","peaks","chan","currentPos","curVol","getVolume","jump","buf","size","newBuffer","channelNum","channel","cNode","workletBufferSize","processorOptions","onmessage","data","_onTimeUpdate","_initThreshold","_minThreshold","_minPeaks","cue","cueLength","playbackTime","callbackTime","leftLimit","_prevUpdateTime","rightLimit","loadSound","location","origin","cordova","alert","Amplitude","smoothing","parameterData","normalize","volNorm","stereoVol","stereoVolNorm","FFT","bins","analyser","createAnalyser","defineProperties","fftSize","configurable","smoothingTimeConstant","smooth","freqDomain","Uint8Array","frequencyBinCount","timeDomain","bass","lowMid","mid","highMid","treble","normalArray","_isSafari","timeToFloat","getFloatTimeDomainData","timeToInt","getByteTimeDomainData","scaled","freqToFloat","getFloatFrequencyData","freqToInt","getByteFrequencyData","frequency1","frequency2","nyquist","swap","lowIndex","highIndex","numFrequencies","toReturn","freq1","freq2","getEnergy","cumulative_sum","centroid_normalization","mean_freq_index","spec_centroid_freq","_N","N","spectrum","spectrumLength","spectrumStep","linearAverages","groupIndex","specIndex","octaveBands","logAverages","octaveIndex","specIndexFrequency","hi","_fCtr0","fCtr0","lastFrequencyBand","lo","ctr","newFrequencyBand","fft","sigChain","mathObj","chainSource","oscillator","Oscillator","started","phaseAmount","_freqMods","connection","freqNode","isNaN","phase","oscMods","osc2","delayAmt","dNode","Mult","inMin","inMax","outMin","outMax","mapOutMin","mapOutMax","scale","SinOsc","TriOsc","SawOsc","SqrOsc","Envelope","l1","t2","l2","t3","l3","aTime","aLevel","dTime","dLevel","rTime","rLevel","_rampHighPercentage","_rampLowPercentage","control","_init","isExponential","sourceToClear","wasTriggered","_setRampAD","setADSR","sPercent","setRange","_rampAttackTime","checkExpInput","_rampDecayTime","TCDenominator","_rampAttackTC","_rampDecayTC","setRampPercentages","p1","p2","setInput","setExp","isExp","secondsFromNow","susTime","triggerAttack","triggerRelease","lastAttack","valToSet","ramp","v2","destination1","destination2","AudioIn","Reverb","Noise","Filter","Delay","Env","_whiteNoiseBuffer","whiteBuffer","noiseData","random","_pinkNoiseBuffer","pinkBuffer","b0","b1","b2","b3","b4","b5","b6","white","_brownNoiseBuffer","brownBuffer","lastOut","assignType","noise","Pulse","w","dcOffset","createDCOffset","dcGain","mW","sig","mult1","mult2","mods","currentFreq","freqMod","bufferSource","inputSources","stream","mediaStream","currentSource","enabled","amplitude","MediaStreamTrack","mediaDevices","successCallback","audioSource","constraints","audio","echoCancellation","deviceId","createMediaStreamSource","getTracks","track","getLevel","onSuccess","onError","resolve","reject","enumerateDevices","devices","device","kind","active","Effect","_drywet","wet","biquad","setType","_on","_untoggledType","src","res","LowPass","HighPass","BandPass","EQFilter","EQ","_eqsize","factor","bands","_newBand","Listener3D","listener","xVal","yVal","zVal","positionX","positionY","positionZ","xValF","yValF","zValF","xValU","yValU","zValU","orientForward","orientUp","forwardX","forwardY","forwardZ","upX","upY","upZ","Panner3D","createPanner","panningModel","distanceModel","orientX","orientY","orientZ","orientationX","orientationY","orientationZ","maxDistance","rolloffFactor","maxDist","rolloff","_split","_merge","_leftGain","_rightGain","leftDelay","rightDelay","_leftFilter","_rightFilter","_maxDelay","maxValue","feedback","_delayTime","_feedback","_filter","_initConvolverNode","_seconds","_decay","_reverse","_buildImpulse","convolverNode","createConvolver","_teardownConvolverNode","decayRate","rebuild","decay","impulse","impulseL","impulseR","_setBuffer","Convolver","impulses","_loadBuffer","_path","chunks","cReverb","Metro","clock","ontick","syncedParts","prevTick","tatumTime","tickCallback","elapsedTime","thisPart","incrementStep","phrases","thisPhrase","phraseArray","sequence","bNum","metroTicks","looping","beatTime","tatums","getRate","part","setBPM","Phrase","phraseStep","Part","steps","bLength","partStep","noLoop","metro","beatLength","tempo","getBPM","resetSync","onended","array","Score","currentPart","thisScore","nextPart","resetPart","playNextPart","resetParts","scoreStep","aScore","SoundLoop","_bpm","musicalTimeMode","_update","timeSig","_interval","maxIterations","iterations","_calcFreq","otherLoop","_convertNotation","Number","_measure","_note","Compressor","compressor","number","PeakDetect","_framesPerPeak","framesPerPeak","framesSinceLastPeak","cutoff","cutoffMult","energy","penergy","currentValue","isDetected","f1","f2","_onPeak","fftObject","nrg","SoundRecorder","_inputChannels","_outputChannels","buffers","leftBuffer","rightBuffer","_callback","sFile","setBuffer","makeDistortionCurve","amount","k","numSamples","deg","Distortion","curveAmount","waveShaperNode","AudioVoice","velocity","sustime","DEFAULT_SUSTAIN","MonoSynth","env","sustain","vel","OnsetDetect","freqLow","freqHigh","treshold","sensitivity","setTimeout","PolySynth","audioVoice","maxVoices","audiovoices","notes","_newest","_oldest","_voicesInUse","_allocateVoices","noteAttack","noteRelease","voice","_velocity","acTime","currentVoice","oldestNote","previousVal","_updateAfter","maxRange","nextTime","registerPreloadMethod","listener3D","peakDetect"],"mappings":"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","file":"p5.sound.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 40);\n","/**\n * Tone.js\n * @author Yotam Mann\n * @license http://opensource.org/licenses/MIT MIT License\n * @copyright 2014-2017 Yotam Mann\n */\ndefine(function(){\n\n\t\"use strict\";\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tTONE\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * @class Tone is the base class of all other classes. It provides \n\t * a lot of methods and functionality to all classes that extend\n\t * it. \n\t * \n\t * @constructor\n\t * @alias Tone\n\t * @param {number} [inputs=1] the number of input nodes\n\t * @param {number} [outputs=1] the number of output nodes\n\t */\n\tvar Tone = function(inputs, outputs){\n\n\t\t/**\n\t\t * the input node(s)\n\t\t * @type {GainNode|Array}\n\t\t */\n\t\tif (this.isUndef(inputs) || inputs === 1){\n\t\t\tthis.input = this.context.createGain();\n\t\t} else if (inputs > 1){\n\t\t\tthis.input = new Array(inputs);\n\t\t}\n\n\t\t/**\n\t\t * the output node(s)\n\t\t * @type {GainNode|Array}\n\t\t */\n\t\tif (this.isUndef(outputs) || outputs === 1){\n\t\t\tthis.output = this.context.createGain();\n\t\t} else if (outputs > 1){\n\t\t\tthis.output = new Array(inputs);\n\t\t}\n\t};\n\n\t/**\n\t * Set the parameters at once. Either pass in an\n\t * object mapping parameters to values, or to set a\n\t * single parameter, by passing in a string and value.\n\t * The last argument is an optional ramp time which \n\t * will ramp any signal values to their destination value\n\t * over the duration of the rampTime.\n\t * @param {Object|string} params\n\t * @param {number=} value\n\t * @param {Time=} rampTime\n\t * @returns {Tone} this\n\t * @example\n\t * //set values using an object\n\t * filter.set({\n\t * \t\"frequency\" : 300,\n\t * \t\"type\" : highpass\n\t * });\n\t * @example\n\t * filter.set(\"type\", \"highpass\");\n\t * @example\n\t * //ramp to the value 220 over 3 seconds. \n\t * oscillator.set({\n\t * \t\"frequency\" : 220\n\t * }, 3);\n\t */\n\tTone.prototype.set = function(params, value, rampTime){\n\t\tif (this.isObject(params)){\n\t\t\trampTime = value;\n\t\t} else if (this.isString(params)){\n\t\t\tvar tmpObj = {};\n\t\t\ttmpObj[params] = value;\n\t\t\tparams = tmpObj;\n\t\t}\n\n\t\tparamLoop:\n\t\tfor (var attr in params){\n\t\t\tvalue = params[attr];\n\t\t\tvar parent = this;\n\t\t\tif (attr.indexOf(\".\") !== -1){\n\t\t\t\tvar attrSplit = attr.split(\".\");\n\t\t\t\tfor (var i = 0; i < attrSplit.length - 1; i++){\n\t\t\t\t\tparent = parent[attrSplit[i]];\n\t\t\t\t\tif (parent instanceof Tone) {\n\t\t\t\t\t\tattrSplit.splice(0,i+1);\n\t\t\t\t\t\tvar innerParam = attrSplit.join(\".\");\n\t\t\t\t\t\tparent.set(innerParam, value);\n\t\t\t\t\t\tcontinue paramLoop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tattr = attrSplit[attrSplit.length - 1];\n\t\t\t}\n\t\t\tvar param = parent[attr];\n\t\t\tif (this.isUndef(param)){\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif ((Tone.Signal && param instanceof Tone.Signal) || \n\t\t\t\t\t(Tone.Param && param instanceof Tone.Param)){\n\t\t\t\tif (param.value !== value){\n\t\t\t\t\tif (this.isUndef(rampTime)){\n\t\t\t\t\t\tparam.value = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparam.rampTo(value, rampTime);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (param instanceof AudioParam){\n\t\t\t\tif (param.value !== value){\n\t\t\t\t\tparam.value = value;\n\t\t\t\t}\t\t\t\t\n\t\t\t} else if (param instanceof Tone){\n\t\t\t\tparam.set(value);\n\t\t\t} else if (param !== value){\n\t\t\t\tparent[attr] = value;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Get the object's attributes. Given no arguments get\n\t * will return all available object properties and their corresponding\n\t * values. Pass in a single attribute to retrieve or an array\n\t * of attributes. The attribute strings can also include a \".\"\n\t * to access deeper properties.\n\t * @example\n\t * osc.get();\n\t * //returns {\"type\" : \"sine\", \"frequency\" : 440, ...etc}\n\t * @example\n\t * osc.get(\"type\");\n\t * //returns { \"type\" : \"sine\"}\n\t * @example\n\t * //use dot notation to access deep properties\n\t * synth.get([\"envelope.attack\", \"envelope.release\"]);\n\t * //returns {\"envelope\" : {\"attack\" : 0.2, \"release\" : 0.4}}\n\t * @param {Array=|string|undefined} params the parameters to get, otherwise will return \n\t * \t\t\t\t\t all available.\n\t * @returns {Object}\n\t */\n\tTone.prototype.get = function(params){\n\t\tif (this.isUndef(params)){\n\t\t\tparams = this._collectDefaults(this.constructor);\n\t\t} else if (this.isString(params)){\n\t\t\tparams = [params];\n\t\t} \n\t\tvar ret = {};\n\t\tfor (var i = 0; i < params.length; i++){\n\t\t\tvar attr = params[i];\n\t\t\tvar parent = this;\n\t\t\tvar subRet = ret;\n\t\t\tif (attr.indexOf(\".\") !== -1){\n\t\t\t\tvar attrSplit = attr.split(\".\");\n\t\t\t\tfor (var j = 0; j < attrSplit.length - 1; j++){\n\t\t\t\t\tvar subAttr = attrSplit[j];\n\t\t\t\t\tsubRet[subAttr] = subRet[subAttr] || {};\n\t\t\t\t\tsubRet = subRet[subAttr];\n\t\t\t\t\tparent = parent[subAttr];\n\t\t\t\t}\n\t\t\t\tattr = attrSplit[attrSplit.length - 1];\n\t\t\t}\n\t\t\tvar param = parent[attr];\n\t\t\tif (this.isObject(params[attr])){\n\t\t\t\tsubRet[attr] = param.get();\n\t\t\t} else if (Tone.Signal && param instanceof Tone.Signal){\n\t\t\t\tsubRet[attr] = param.value;\n\t\t\t} else if (Tone.Param && param instanceof Tone.Param){\n\t\t\t\tsubRet[attr] = param.value;\n\t\t\t} else if (param instanceof AudioParam){\n\t\t\t\tsubRet[attr] = param.value;\n\t\t\t} else if (param instanceof Tone){\n\t\t\t\tsubRet[attr] = param.get();\n\t\t\t} else if (!this.isFunction(param) && !this.isUndef(param)){\n\t\t\t\tsubRet[attr] = param;\n\t\t\t} \n\t\t}\n\t\treturn ret;\n\t};\n\n\t/**\n\t * collect all of the default attributes in one\n\t * @private\n\t * @param {function} constr the constructor to find the defaults from\n\t * @return {Array} all of the attributes which belong to the class\n\t */\n\tTone.prototype._collectDefaults = function(constr){\n\t\tvar ret = [];\n\t\tif (!this.isUndef(constr.defaults)){\n\t\t\tret = Object.keys(constr.defaults);\n\t\t}\n\t\tif (!this.isUndef(constr._super)){\n\t\t\tvar superDefs = this._collectDefaults(constr._super);\n\t\t\t//filter out repeats\n\t\t\tfor (var i = 0; i < superDefs.length; i++){\n\t\t\t\tif (ret.indexOf(superDefs[i]) === -1){\n\t\t\t\t\tret.push(superDefs[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t};\n\n\t/**\n\t * @returns {string} returns the name of the class as a string\n\t */\n\tTone.prototype.toString = function(){\n\t\tfor (var className in Tone){\n\t\t\tvar isLetter = className[0].match(/^[A-Z]$/);\n\t\t\tvar sameConstructor = Tone[className] === this.constructor;\n\t\t\tif (this.isFunction(Tone[className]) && isLetter && sameConstructor){\n\t\t\t\treturn className;\n\t\t\t}\n\t\t}\n\t\treturn \"Tone\";\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tCLASS VARS\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * The number of inputs feeding into the AudioNode. \n\t * For source nodes, this will be 0.\n\t * @memberOf Tone#\n\t * @name numberOfInputs\n\t * @readOnly\n\t */\n\tObject.defineProperty(Tone.prototype, \"numberOfInputs\", {\n\t\tget : function(){\n\t\t\tif (this.input){\n\t\t\t\tif (this.isArray(this.input)){\n\t\t\t\t\treturn this.input.length;\n\t\t\t\t} else {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * The number of outputs coming out of the AudioNode. \n\t * For source nodes, this will be 0.\n\t * @memberOf Tone#\n\t * @name numberOfInputs\n\t * @readOnly\n\t */\n\tObject.defineProperty(Tone.prototype, \"numberOfOutputs\", {\n\t\tget : function(){\n\t\t\tif (this.output){\n\t\t\t\tif (this.isArray(this.output)){\n\t\t\t\t\treturn this.output.length;\n\t\t\t\t} else {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\t\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tCONNECTIONS\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * disconnect and dispose\n\t * @returns {Tone} this\n\t */\n\tTone.prototype.dispose = function(){\n\t\tif (!this.isUndef(this.input)){\n\t\t\tif (this.input instanceof AudioNode){\n\t\t\t\tthis.input.disconnect();\n\t\t\t} \n\t\t\tthis.input = null;\n\t\t}\n\t\tif (!this.isUndef(this.output)){\n\t\t\tif (this.output instanceof AudioNode){\n\t\t\t\tthis.output.disconnect();\n\t\t\t} \n\t\t\tthis.output = null;\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * connect the output of a ToneNode to an AudioParam, AudioNode, or ToneNode\n\t * @param {Tone | AudioParam | AudioNode} unit \n\t * @param {number} [outputNum=0] optionally which output to connect from\n\t * @param {number} [inputNum=0] optionally which input to connect to\n\t * @returns {Tone} this\n\t */\n\tTone.prototype.connect = function(unit, outputNum, inputNum){\n\t\tif (Array.isArray(this.output)){\n\t\t\toutputNum = this.defaultArg(outputNum, 0);\n\t\t\tthis.output[outputNum].connect(unit, 0, inputNum);\n\t\t} else {\n\t\t\tthis.output.connect(unit, outputNum, inputNum);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * disconnect the output\n\t * @param {Number|AudioNode} output Either the output index to disconnect\n\t * if the output is an array, or the\n\t * node to disconnect from.\n\t * @returns {Tone} this\n\t */\n\tTone.prototype.disconnect = function(destination, outputNum, inputNum){\n\t\tif (this.isArray(this.output)){\n\t\t\tif (this.isNumber(destination)){\n\t\t\t\tthis.output[destination].disconnect();\n\t\t\t} else {\n\t\t\t\toutputNum = this.defaultArg(outputNum, 0);\n\t\t\t\tthis.output[outputNum].disconnect(destination, 0, inputNum);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.output.disconnect.apply(this.output, arguments);\n\t\t}\n\t};\n\n\t/**\n\t * connect together all of the arguments in series\n\t * @param {...AudioParam|Tone|AudioNode} nodes\n\t * @returns {Tone} this\n\t */\n\tTone.prototype.connectSeries = function(){\n\t\tif (arguments.length > 1){\n\t\t\tvar currentUnit = arguments[0];\n\t\t\tfor (var i = 1; i < arguments.length; i++){\n\t\t\t\tvar toUnit = arguments[i];\n\t\t\t\tcurrentUnit.connect(toUnit);\n\t\t\t\tcurrentUnit = toUnit;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Connect the output of this node to the rest of the nodes in series.\n\t * @example\n\t * //connect a node to an effect, panVol and then to the master output\n\t * node.chain(effect, panVol, Tone.Master);\n\t * @param {...AudioParam|Tone|AudioNode} nodes\n\t * @returns {Tone} this\n\t */\n\tTone.prototype.chain = function(){\n\t\tif (arguments.length > 0){\n\t\t\tvar currentUnit = this;\n\t\t\tfor (var i = 0; i < arguments.length; i++){\n\t\t\t\tvar toUnit = arguments[i];\n\t\t\t\tcurrentUnit.connect(toUnit);\n\t\t\t\tcurrentUnit = toUnit;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * connect the output of this node to the rest of the nodes in parallel.\n\t * @param {...AudioParam|Tone|AudioNode} nodes\n\t * @returns {Tone} this\n\t */\n\tTone.prototype.fan = function(){\n\t\tif (arguments.length > 0){\n\t\t\tfor (var i = 0; i < arguments.length; i++){\n\t\t\t\tthis.connect(arguments[i]);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t};\n\n\t//give native nodes chain and fan methods\n\tAudioNode.prototype.chain = Tone.prototype.chain;\n\tAudioNode.prototype.fan = Tone.prototype.fan;\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tUTILITIES / HELPERS / MATHS\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * If the `given` parameter is undefined, use the `fallback`. \n\t * If both `given` and `fallback` are object literals, it will\n\t * return a deep copy which includes all of the parameters from both \n\t * objects. If a parameter is undefined in given, it will return\n\t * the fallback property. \n\t *
\n\t * WARNING: if object is self referential, it will go into an an \n\t * infinite recursive loop.\n\t * \n\t * @param {*} given \n\t * @param {*} fallback \n\t * @return {*} \n\t */\n\tTone.prototype.defaultArg = function(given, fallback){\n\t\tif (this.isObject(given) && this.isObject(fallback)){\n\t\t\tvar ret = {};\n\t\t\t//make a deep copy of the given object\n\t\t\tfor (var givenProp in given) {\n\t\t\t\tret[givenProp] = this.defaultArg(fallback[givenProp], given[givenProp]);\n\t\t\t}\n\t\t\tfor (var fallbackProp in fallback) {\n\t\t\t\tret[fallbackProp] = this.defaultArg(given[fallbackProp], fallback[fallbackProp]);\n\t\t\t}\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn this.isUndef(given) ? fallback : given;\n\t\t}\n\t};\n\n\t/**\n\t * returns the args as an options object with given arguments\n\t * mapped to the names provided. \n\t *\n\t * if the args given is an array containing only one object, it is assumed\n\t * that that's already the options object and will just return it. \n\t * \n\t * @param {Array} values the 'arguments' object of the function\n\t * @param {Array} keys the names of the arguments as they\n\t * should appear in the options object\n\t * @param {Object=} defaults optional defaults to mixin to the returned \n\t * options object \n\t * @return {Object} the options object with the names mapped to the arguments\n\t */\n\tTone.prototype.optionsObject = function(values, keys, defaults){\n\t\tvar options = {};\n\t\tif (values.length === 1 && this.isObject(values[0])){\n\t\t\toptions = values[0];\n\t\t} else {\n\t\t\tfor (var i = 0; i < keys.length; i++){\n\t\t\t\toptions[keys[i]] = values[i];\n\t\t\t}\n\t\t}\n\t\tif (!this.isUndef(defaults)){\n\t\t\treturn this.defaultArg(options, defaults);\n\t\t} else {\n\t\t\treturn options;\n\t\t}\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t// TYPE CHECKING\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * test if the arg is undefined\n\t * @param {*} arg the argument to test\n\t * @returns {boolean} true if the arg is undefined\n\t * @function\n\t */\n\tTone.prototype.isUndef = function(val){\n\t\treturn typeof val === \"undefined\";\n\t};\n\n\t/**\n\t * test if the arg is a function\n\t * @param {*} arg the argument to test\n\t * @returns {boolean} true if the arg is a function\n\t * @function\n\t */\n\tTone.prototype.isFunction = function(val){\n\t\treturn typeof val === \"function\";\n\t};\n\n\t/**\n\t * Test if the argument is a number.\n\t * @param {*} arg the argument to test\n\t * @returns {boolean} true if the arg is a number\n\t */\n\tTone.prototype.isNumber = function(arg){\n\t\treturn (typeof arg === \"number\");\n\t};\n\n\t/**\n\t * Test if the given argument is an object literal (i.e. `{}`);\n\t * @param {*} arg the argument to test\n\t * @returns {boolean} true if the arg is an object literal.\n\t */\n\tTone.prototype.isObject = function(arg){\n\t\treturn (Object.prototype.toString.call(arg) === \"[object Object]\" && arg.constructor === Object);\n\t};\n\n\t/**\n\t * Test if the argument is a boolean.\n\t * @param {*} arg the argument to test\n\t * @returns {boolean} true if the arg is a boolean\n\t */\n\tTone.prototype.isBoolean = function(arg){\n\t\treturn (typeof arg === \"boolean\");\n\t};\n\n\t/**\n\t * Test if the argument is an Array\n\t * @param {*} arg the argument to test\n\t * @returns {boolean} true if the arg is an array\n\t */\n\tTone.prototype.isArray = function(arg){\n\t\treturn (Array.isArray(arg));\n\t};\n\n\t/**\n\t * Test if the argument is a string.\n\t * @param {*} arg the argument to test\n\t * @returns {boolean} true if the arg is a string\n\t */\n\tTone.prototype.isString = function(arg){\n\t\treturn (typeof arg === \"string\");\n\t};\n\n \t/**\n\t * An empty function.\n\t * @static\n\t */\n\tTone.noOp = function(){};\n\n\t/**\n\t * Make the property not writable. Internal use only. \n\t * @private\n\t * @param {string} property the property to make not writable\n\t */\n\tTone.prototype._readOnly = function(property){\n\t\tif (Array.isArray(property)){\n\t\t\tfor (var i = 0; i < property.length; i++){\n\t\t\t\tthis._readOnly(property[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tObject.defineProperty(this, property, { \n\t\t\t\twritable: false,\n\t\t\t\tenumerable : true,\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Make an attribute writeable. Interal use only. \n\t * @private\n\t * @param {string} property the property to make writable\n\t */\n\tTone.prototype._writable = function(property){\n\t\tif (Array.isArray(property)){\n\t\t\tfor (var i = 0; i < property.length; i++){\n\t\t\t\tthis._writable(property[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tObject.defineProperty(this, property, { \n\t\t\t\twritable: true,\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Possible play states. \n\t * @enum {string}\n\t */\n\tTone.State = {\n\t\tStarted : \"started\",\n\t\tStopped : \"stopped\",\n\t\tPaused : \"paused\",\n \t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t// CONVERSIONS\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * Equal power gain scale. Good for cross-fading.\n\t * @param {NormalRange} percent (0-1)\n\t * @return {Number} output gain (0-1)\n\t */\n\tTone.prototype.equalPowerScale = function(percent){\n\t\tvar piFactor = 0.5 * Math.PI;\n\t\treturn Math.sin(percent * piFactor);\n\t};\n\n\t/**\n\t * Convert decibels into gain.\n\t * @param {Decibels} db\n\t * @return {Number} \n\t */\n\tTone.prototype.dbToGain = function(db) {\n\t\treturn Math.pow(2, db / 6);\n\t};\n\n\t/**\n\t * Convert gain to decibels.\n\t * @param {Number} gain (0-1)\n\t * @return {Decibels} \n\t */\n\tTone.prototype.gainToDb = function(gain) {\n\t\treturn 20 * (Math.log(gain) / Math.LN10);\n\t};\n\n\t/**\n\t * Convert an interval (in semitones) to a frequency ratio.\n\t * @param {Interval} interval the number of semitones above the base note\n\t * @return {number} the frequency ratio\n\t * @example\n\t * tone.intervalToFrequencyRatio(0); // 1\n\t * tone.intervalToFrequencyRatio(12); // 2\n\t * tone.intervalToFrequencyRatio(-12); // 0.5\n\t */\n\tTone.prototype.intervalToFrequencyRatio = function(interval){\n\t\treturn Math.pow(2,(interval/12));\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tTIMING\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * Return the current time of the AudioContext clock.\n\t * @return {Number} the currentTime from the AudioContext\n\t */\n\tTone.prototype.now = function(){\n\t\treturn Tone.context.now();\n\t};\n\n\t/**\n\t * Return the current time of the AudioContext clock.\n\t * @return {Number} the currentTime from the AudioContext\n\t * @static\n\t */\n\tTone.now = function(){\n\t\treturn Tone.context.now();\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tINHERITANCE\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * have a child inherit all of Tone's (or a parent's) prototype\n\t * to inherit the parent's properties, make sure to call \n\t * Parent.call(this) in the child's constructor\n\t *\n\t * based on closure library's inherit function\n\t *\n\t * @static\n\t * @param {function} \tchild \n\t * @param {function=} parent (optional) parent to inherit from\n\t * if no parent is supplied, the child\n\t * will inherit from Tone\n\t */\n\tTone.extend = function(child, parent){\n\t\tif (Tone.prototype.isUndef(parent)){\n\t\t\tparent = Tone;\n\t\t}\n\t\tfunction TempConstructor(){}\n\t\tTempConstructor.prototype = parent.prototype;\n\t\tchild.prototype = new TempConstructor();\n\t\t/** @override */\n\t\tchild.prototype.constructor = child;\n\t\tchild._super = parent;\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tCONTEXT\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * The private audio context shared by all Tone Nodes. \n\t * @private\n\t * @type {Tone.Context|undefined}\n\t */\n\tvar audioContext;\n\n\t/**\n\t * A static pointer to the audio context accessible as Tone.context. \n\t * @type {Tone.Context}\n\t * @name context\n\t * @memberOf Tone\n\t */\n\tObject.defineProperty(Tone, \"context\", {\n\t\tget : function(){\n\t\t\treturn audioContext;\n\t\t},\n\t\tset : function(context){\n\t\t\tif (Tone.Context && context instanceof Tone.Context){\n\t\t\t\taudioContext = context;\n\t\t\t} else {\n\t\t\t\taudioContext = new Tone.Context(context);\n\t\t\t}\n\t\t\t//initialize the new audio context\n\t\t\tif (Tone.Context){\n\t\t\t\tTone.Context.emit(\"init\", audioContext);\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * The AudioContext\n\t * @type {Tone.Context}\n\t * @name context\n\t * @memberOf Tone#\n\t * @readOnly\n\t */\n\tObject.defineProperty(Tone.prototype, \"context\", {\n\t\tget : function(){\n\t\t\treturn Tone.context;\n\t\t}\n\t});\n\n\t/**\n\t * Tone automatically creates a context on init, but if you are working\n\t * with other libraries which also create an AudioContext, it can be\n\t * useful to set your own. If you are going to set your own context, \n\t * be sure to do it at the start of your code, before creating any objects.\n\t * @static\n\t * @param {AudioContext} ctx The new audio context to set\n\t */\n\tTone.setContext = function(ctx){\n\t\tTone.context = ctx;\n\t};\n\n\t/**\n\t * The number of seconds of 1 processing block (128 samples)\n\t * @type {Number}\n\t * @name blockTime\n\t * @memberOf Tone#\n\t * @readOnly\n\t */\n\tObject.defineProperty(Tone.prototype, \"blockTime\", {\n\t\tget : function(){\n\t\t\treturn 128 / this.context.sampleRate;\n\t\t}\n\t});\n\n\t/**\n\t * The duration in seconds of one sample.\n\t * @type {Number}\n\t * @name sampleTime\n\t * @memberOf Tone#\n\t * @readOnly\n\t */\n\tObject.defineProperty(Tone.prototype, \"sampleTime\", {\n\t\tget : function(){\n\t\t\treturn 1 / this.context.sampleRate;\n\t\t}\n\t});\n\n\t/**\n\t * Whether or not all the technologies that Tone.js relies on are supported by the current browser. \n\t * @type {Boolean}\n\t * @name supported\n\t * @memberOf Tone\n\t * @readOnly\n\t */\n\tObject.defineProperty(Tone, \"supported\", {\n\t\tget : function(){\n\t\t\tvar hasAudioContext = window.hasOwnProperty(\"AudioContext\") || window.hasOwnProperty(\"webkitAudioContext\");\n\t\t\tvar hasPromises = window.hasOwnProperty(\"Promise\");\n\t\t\tvar hasWorkers = window.hasOwnProperty(\"Worker\");\n\t\t\treturn hasAudioContext && hasPromises && hasWorkers;\n\t\t}\n\t});\n\n\tTone.version = \"r10\";\n\n\t// allow optional silencing of this log\n\tif (!window.TONE_SILENCE_VERSION_LOGGING) {\n\t\tconsole.log(\"%c * Tone.js \" + Tone.version + \" * \", \"background: #000; color: #fff\");\n\t}\n\n\treturn Tone;\n});\n","define([\"Tone/core/Tone\", \"Tone/signal/Signal\", \"Tone/core/Gain\"], function(Tone){\n\n\t\"use strict\";\n\n\t/**\n\t * @class Multiply two incoming signals. Or, if a number is given in the constructor, \n\t * multiplies the incoming signal by that value. \n\t *\n\t * @constructor\n\t * @extends {Tone.Signal}\n\t * @param {number=} value Constant value to multiple. If no value is provided,\n\t * it will return the product of the first and second inputs\n\t * @example\n\t * var mult = new Tone.Multiply();\n\t * var sigA = new Tone.Signal(3);\n\t * var sigB = new Tone.Signal(4);\n\t * sigA.connect(mult, 0, 0);\n\t * sigB.connect(mult, 0, 1);\n\t * //output of mult is 12.\n\t * @example\n\t * var mult = new Tone.Multiply(10);\n\t * var sig = new Tone.Signal(2).connect(mult);\n\t * //the output of mult is 20. \n\t */\n\tTone.Multiply = function(value){\n\n\t\tthis.createInsOuts(2, 0);\n\n\t\t/**\n\t\t * the input node is the same as the output node\n\t\t * it is also the GainNode which handles the scaling of incoming signal\n\t\t * \n\t\t * @type {GainNode}\n\t\t * @private\n\t\t */\n\t\tthis._mult = this.input[0] = this.output = new Tone.Gain();\n\n\t\t/**\n\t\t * the scaling parameter\n\t\t * @type {AudioParam}\n\t\t * @private\n\t\t */\n\t\tthis._param = this.input[1] = this.output.gain;\n\t\t\n\t\tthis._param.value = this.defaultArg(value, 0);\n\t};\n\n\tTone.extend(Tone.Multiply, Tone.Signal);\n\n\t/**\n\t * clean up\n\t * @returns {Tone.Multiply} this\n\t */\n\tTone.Multiply.prototype.dispose = function(){\n\t\tTone.prototype.dispose.call(this);\n\t\tthis._mult.dispose();\n\t\tthis._mult = null;\n\t\tthis._param = null;\n\t\treturn this;\n\t}; \n\n\treturn Tone.Multiply;\n});\n","define([\"Tone/core/Tone\", \"Tone/signal/WaveShaper\", \"Tone/type/Type\", \"Tone/core/Param\", \"Tone/core/Gain\"], function(Tone){\n\n\t\"use strict\";\n\n\t/**\n\t * @class A signal is an audio-rate value. Tone.Signal is a core component of the library.\n\t * Unlike a number, Signals can be scheduled with sample-level accuracy. Tone.Signal\n\t * has all of the methods available to native Web Audio \n\t * [AudioParam](http://webaudio.github.io/web-audio-api/#the-audioparam-interface)\n\t * as well as additional conveniences. Read more about working with signals \n\t * [here](https://github.com/Tonejs/Tone.js/wiki/Signals).\n\t *\n\t * @constructor\n\t * @extends {Tone.Param}\n\t * @param {Number|AudioParam} [value] Initial value of the signal. If an AudioParam\n\t * is passed in, that parameter will be wrapped\n\t * and controlled by the Signal. \n\t * @param {string} [units=Number] unit The units the signal is in. \n\t * @example\n\t * var signal = new Tone.Signal(10);\n\t */\n\tTone.Signal = function(){\n\n\t\tvar options = this.optionsObject(arguments, [\"value\", \"units\"], Tone.Signal.defaults);\n\n\t\t/**\n\t\t * The node where the constant signal value is scaled.\n\t\t * @type {GainNode}\n\t\t * @private\n\t\t */\n\t\tthis.output = this._gain = this.context.createGain();\n\n\t\toptions.param = this._gain.gain;\n\t\tTone.Param.call(this, options);\n\n\t\t/**\n\t\t * The node where the value is set.\n\t\t * @type {Tone.Param}\n\t\t * @private\n\t\t */\n\t\tthis.input = this._param = this._gain.gain;\n\n\t\t//connect the const output to the node output\n\t\tthis.context.getConstant(1).chain(this._gain);\n\t};\n\n\tTone.extend(Tone.Signal, Tone.Param);\n\n\t/**\n\t * The default values\n\t * @type {Object}\n\t * @static\n\t * @const\n\t */\n\tTone.Signal.defaults = {\n\t\t\"value\" : 0,\n\t\t\"units\" : Tone.Type.Default,\n\t\t\"convert\" : true,\n\t};\n\n\t/**\n\t * When signals connect to other signals or AudioParams, \n\t * they take over the output value of that signal or AudioParam. \n\t * For all other nodes, the behavior is the same as a default connect
. \n\t *\n\t * @override\n\t * @param {AudioParam|AudioNode|Tone.Signal|Tone} node \n\t * @param {number} [outputNumber=0] The output number to connect from.\n\t * @param {number} [inputNumber=0] The input number to connect to.\n\t * @returns {Tone.SignalBase} this\n\t * @method\n\t */\n\tTone.Signal.prototype.connect = Tone.SignalBase.prototype.connect;\n\n\t/**\n\t * dispose and disconnect\n\t * @returns {Tone.Signal} this\n\t */\n\tTone.Signal.prototype.dispose = function(){\n\t\tTone.Param.prototype.dispose.call(this);\n\t\tthis._param = null;\n\t\tthis._gain.disconnect();\n\t\tthis._gain = null;\n\t\treturn this;\n\t};\n\n\treturn Tone.Signal;\n});","global.TONE_SILENCE_VERSION_LOGGING = true;\n\nimport StartAudioContext from 'startaudiocontext';\nimport Tone from 'Tone/core/Tone';\nimport 'Tone/core/Context';\n\n// Create the Audio Context\nconst audiocontext = new window.AudioContext();\n\n// Tone and p5.sound share the same audio context\nTone.setContext(audiocontext);\n\n/**\n *
Returns the Audio Context for this sketch. Useful for users\n * who would like to dig deeper into the Web Audio API\n * .
\n *\n *Some browsers require users to startAudioContext\n * with a user gesture, such as touchStarted in the example below.
\n *\n * @for p5\n * @method getAudioContext\n * @return {Object} AudioContext for this sketch\n * @example\n *\n * function draw() {\n * background(255);\n * textAlign(CENTER);\n *\n * if (getAudioContext().state !== 'running') {\n * text('click to start audio', width/2, height/2);\n * } else {\n * text('audio is enabled', width/2, height/2);\n * }\n * }\n *\n * function touchStarted() {\n * if (getAudioContext().state !== 'running') {\n * getAudioContext().resume();\n * }\n * var synth = new p5.MonoSynth();\n * synth.play('A4', 0.5, 0, 0.2);\n * }\n *\n *
It is not only a good practice to give users control over starting\n * audio. This policy is enforced by many web browsers, including iOS and\n * Google Chrome, which create the Web Audio API's\n * Audio Context\n * in a suspended state.
\n *\n *In these browser-specific policies, sound will not play until a user\n * interaction event (i.e. mousePressed()
) explicitly resumes\n * the AudioContext, or starts an audio node. This can be accomplished by\n * calling start()
on a p5.Oscillator
,\n * play()
on a p5.SoundFile
, or simply\n * userStartAudio()
.
userStartAudio()
starts the AudioContext on a user\n * gesture. The default behavior will enable audio on any\n * mouseUp or touchEnd event. It can also be placed in a specific\n * interaction function, such as mousePressed()
as in the\n * example below. This method utilizes\n * StartAudioContext\n * , a library by Yotam Mann (MIT Licence, 2016).
\n * function setup() {\n * // mimics the autoplay policy\n * getAudioContext().suspend();\n *\n * let mySynth = new p5.MonoSynth();\n *\n * // This won't play until the context has resumed\n * mySynth.play('A6');\n * }\n * function draw() {\n * background(220);\n * textAlign(CENTER, CENTER);\n * text(getAudioContext().state, width/2, height/2);\n * }\n * function mousePressed() {\n * userStartAudio();\n * }\n *
input[0]
\n\t * and input[1]
. If a value is passed into the constructor, \n\t * the it will be added to the input.\n\t * \n\t * @constructor\n\t * @extends {Tone.Signal}\n\t * @param {number=} value If no value is provided, Tone.Add will sum the first\n\t * and second inputs. \n\t * @example\n\t * var signal = new Tone.Signal(2);\n\t * var add = new Tone.Add(2);\n\t * signal.connect(add);\n\t * //the output of add equals 4\n\t * @example\n\t * //if constructed with no arguments\n\t * //it will add the first and second inputs\n\t * var add = new Tone.Add();\n\t * var sig0 = new Tone.Signal(3).connect(add, 0, 0);\n\t * var sig1 = new Tone.Signal(4).connect(add, 0, 1);\n\t * //the output of add equals 7. \n\t */\n\tTone.Add = function(value){\n\n\t\tthis.createInsOuts(2, 0);\n\n\t\t/**\n\t\t * the summing node\n\t\t * @type {GainNode}\n\t\t * @private\n\t\t */\n\t\tthis._sum = this.input[0] = this.input[1] = this.output = new Tone.Gain();\n\n\t\t/**\n\t\t * @private\n\t\t * @type {Tone.Signal}\n\t\t */\n\t\tthis._param = this.input[1] = new Tone.Signal(value);\n\n\t\tthis._param.connect(this._sum);\n\t};\n\n\tTone.extend(Tone.Add, Tone.Signal);\n\t\n\t/**\n\t * Clean up.\n\t * @returns {Tone.Add} this\n\t */\n\tTone.Add.prototype.dispose = function(){\n\t\tTone.prototype.dispose.call(this);\n\t\tthis._sum.dispose();\n\t\tthis._sum = null;\n\t\tthis._param.dispose();\n\t\tthis._param = null;\n\t\treturn this;\n\t}; \n\n\treturn Tone.Add;\n});","module.exports = {\n recorderProcessor: 'recorder-processor',\n soundFileProcessor: 'sound-file-processor',\n amplitudeProcessor: 'amplitude-processor',\n};\n","define([\"Tone/core/Tone\", \"Tone/signal/SignalBase\"], function(Tone){\n\n\t\"use strict\";\n\n\t/**\n\t * @class Wraps the native Web Audio API \n\t * [WaveShaperNode](http://webaudio.github.io/web-audio-api/#the-waveshapernode-interface).\n\t *\n\t * @extends {Tone.SignalBase}\n\t * @constructor\n\t * @param {function|Array|Number} mapping The function used to define the values. \n\t * The mapping function should take two arguments: \n\t * the first is the value at the current position \n\t * and the second is the array position. \n\t * If the argument is an array, that array will be\n\t * set as the wave shaping function. The input\n\t * signal is an AudioRange [-1, 1] value and the output\n\t * signal can take on any numerical values. \n\t * \n\t * @param {Number} [bufferLen=1024] The length of the WaveShaperNode buffer.\n\t * @example\n\t * var timesTwo = new Tone.WaveShaper(function(val){\n\t * \treturn val * 2;\n\t * }, 2048);\n\t * @example\n\t * //a waveshaper can also be constructed with an array of values\n\t * var invert = new Tone.WaveShaper([1, -1]);\n\t */\n\tTone.WaveShaper = function(mapping, bufferLen){\n\n\t\t/**\n\t\t * the waveshaper\n\t\t * @type {WaveShaperNode}\n\t\t * @private\n\t\t */\n\t\tthis._shaper = this.input = this.output = this.context.createWaveShaper();\n\n\t\t/**\n\t\t * the waveshapers curve\n\t\t * @type {Float32Array}\n\t\t * @private\n\t\t */\n\t\tthis._curve = null;\n\n\t\tif (Array.isArray(mapping)){\n\t\t\tthis.curve = mapping;\n\t\t} else if (isFinite(mapping) || this.isUndef(mapping)){\n\t\t\tthis._curve = new Float32Array(this.defaultArg(mapping, 1024));\n\t\t} else if (this.isFunction(mapping)){\n\t\t\tthis._curve = new Float32Array(this.defaultArg(bufferLen, 1024));\n\t\t\tthis.setMap(mapping);\n\t\t} \n\t};\n\n\tTone.extend(Tone.WaveShaper, Tone.SignalBase);\n\n\t/**\n\t * Uses a mapping function to set the value of the curve. \n\t * @param {function} mapping The function used to define the values. \n\t * The mapping function take two arguments: \n\t * the first is the value at the current position \n\t * which goes from -1 to 1 over the number of elements\n\t * in the curve array. The second argument is the array position. \n\t * @returns {Tone.WaveShaper} this\n\t * @example\n\t * //map the input signal from [-1, 1] to [0, 10]\n\t * shaper.setMap(function(val, index){\n\t * \treturn (val + 1) * 5;\n\t * })\n\t */\n\tTone.WaveShaper.prototype.setMap = function(mapping){\n\t\tfor (var i = 0, len = this._curve.length; i < len; i++){\n\t\t\tvar normalized = (i / (len - 1)) * 2 - 1;\n\t\t\tthis._curve[i] = mapping(normalized, i);\n\t\t}\n\t\tthis._shaper.curve = this._curve;\n\t\treturn this;\n\t};\n\n\t/**\n\t * The array to set as the waveshaper curve. For linear curves\n\t * array length does not make much difference, but for complex curves\n\t * longer arrays will provide smoother interpolation. \n\t * @memberOf Tone.WaveShaper#\n\t * @type {Array}\n\t * @name curve\n\t */\n\tObject.defineProperty(Tone.WaveShaper.prototype, \"curve\", {\n\t\tget : function(){\n\t\t\treturn this._shaper.curve;\n\t\t},\n\t\tset : function(mapping){\n\t\t\tthis._curve = new Float32Array(mapping);\n\t\t\tthis._shaper.curve = this._curve;\n\t\t}\n\t});\n\n\t/**\n\t * Specifies what type of oversampling (if any) should be used when \n\t * applying the shaping curve. Can either be \"none\", \"2x\" or \"4x\". \n\t * @memberOf Tone.WaveShaper#\n\t * @type {string}\n\t * @name oversample\n\t */\n\tObject.defineProperty(Tone.WaveShaper.prototype, \"oversample\", {\n\t\tget : function(){\n\t\t\treturn this._shaper.oversample;\n\t\t},\n\t\tset : function(oversampling){\n\t\t\tif ([\"none\", \"2x\", \"4x\"].indexOf(oversampling) !== -1){\n\t\t\t\tthis._shaper.oversample = oversampling;\n\t\t\t} else {\n\t\t\t\tthrow new RangeError(\"Tone.WaveShaper: oversampling must be either 'none', '2x', or '4x'\");\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * Clean up.\n\t * @returns {Tone.WaveShaper} this\n\t */\n\tTone.WaveShaper.prototype.dispose = function(){\n\t\tTone.prototype.dispose.call(this);\n\t\tthis._shaper.disconnect();\n\t\tthis._shaper = null;\n\t\tthis._curve = null;\n\t\treturn this;\n\t};\n\n\treturn Tone.WaveShaper;\n});","define([\"Tone/core/Tone\", \"Tone/signal/Signal\", \"Tone/core/Timeline\"], function (Tone) {\n\n\t\"use strict\";\n\n\t/**\n\t * @class A signal which adds the method getValueAtTime. \n\t * Code and inspiration from https://github.com/jsantell/web-audio-automation-timeline\n\t * @extends {Tone.Param}\n\t * @param {Number=} value The initial value of the signal\n\t * @param {String=} units The conversion units of the signal.\n\t */\n\tTone.TimelineSignal = function(){\n\n\t\tvar options = this.optionsObject(arguments, [\"value\", \"units\"], Tone.Signal.defaults);\n\t\t\n\t\t/**\n\t\t * The scheduled events\n\t\t * @type {Tone.Timeline}\n\t\t * @private\n\t\t */\n\t\tthis._events = new Tone.Timeline(10);\n\n\t\t//constructors\n\t\tTone.Signal.apply(this, options);\n\t\toptions.param = this._param;\n\t\tTone.Param.call(this, options);\n\n\t\t/**\n\t\t * The initial scheduled value\n\t\t * @type {Number}\n\t\t * @private\n\t\t */\n\t\tthis._initial = this._fromUnits(this._param.value);\n\t};\n\n\tTone.extend(Tone.TimelineSignal, Tone.Param);\n\n\t/**\n\t * The event types of a schedulable signal.\n\t * @enum {String}\n\t * @private\n\t */\n\tTone.TimelineSignal.Type = {\n\t\tLinear : \"linear\",\n\t\tExponential : \"exponential\",\n\t\tTarget : \"target\",\n\t\tCurve : \"curve\",\n\t\tSet : \"set\"\n\t};\n\n\t/**\n\t * The current value of the signal. \n\t * @memberOf Tone.TimelineSignal#\n\t * @type {Number}\n\t * @name value\n\t */\n\tObject.defineProperty(Tone.TimelineSignal.prototype, \"value\", {\n\t\tget : function(){\n\t\t\tvar now = this.now();\n\t\t\tvar val = this.getValueAtTime(now);\n\t\t\treturn this._toUnits(val);\n\t\t},\n\t\tset : function(value){\n\t\t\tvar convertedVal = this._fromUnits(value);\n\t\t\tthis._initial = convertedVal;\n\t\t\tthis.cancelScheduledValues();\n\t\t\tthis._param.value = convertedVal;\n\t\t}\n\t});\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tSCHEDULING\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * Schedules a parameter value change at the given time.\n\t * @param {*}\tvalue The value to set the signal.\n\t * @param {Time} time The time when the change should occur.\n\t * @returns {Tone.TimelineSignal} this\n\t * @example\n\t * //set the frequency to \"G4\" in exactly 1 second from now. \n\t * freq.setValueAtTime(\"G4\", \"+1\");\n\t */\n\tTone.TimelineSignal.prototype.setValueAtTime = function (value, startTime) {\n\t\tvalue = this._fromUnits(value);\n\t\tstartTime = this.toSeconds(startTime);\n\t\tthis._events.add({\n\t\t\t\"type\" : Tone.TimelineSignal.Type.Set,\n\t\t\t\"value\" : value,\n\t\t\t\"time\" : startTime\n\t\t});\n\t\t//invoke the original event\n\t\tthis._param.setValueAtTime(value, startTime);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Schedules a linear continuous change in parameter value from the \n\t * previous scheduled parameter value to the given value.\n\t * \n\t * @param {number} value \n\t * @param {Time} endTime \n\t * @returns {Tone.TimelineSignal} this\n\t */\n\tTone.TimelineSignal.prototype.linearRampToValueAtTime = function (value, endTime) {\n\t\tvalue = this._fromUnits(value);\n\t\tendTime = this.toSeconds(endTime);\n\t\tthis._events.add({\n\t\t\t\"type\" : Tone.TimelineSignal.Type.Linear,\n\t\t\t\"value\" : value,\n\t\t\t\"time\" : endTime\n\t\t});\n\t\tthis._param.linearRampToValueAtTime(value, endTime);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Schedules an exponential continuous change in parameter value from \n\t * the previous scheduled parameter value to the given value.\n\t * \n\t * @param {number} value \n\t * @param {Time} endTime \n\t * @returns {Tone.TimelineSignal} this\n\t */\n\tTone.TimelineSignal.prototype.exponentialRampToValueAtTime = function (value, endTime) {\n\t\t//get the previous event and make sure it's not starting from 0\n\t\tendTime = this.toSeconds(endTime);\n\t\tvar beforeEvent = this._searchBefore(endTime);\n\t\tif (beforeEvent && beforeEvent.value === 0){\n\t\t\t//reschedule that event\n\t\t\tthis.setValueAtTime(this._minOutput, beforeEvent.time);\n\t\t}\n\t\tvalue = this._fromUnits(value);\n\t\tvar setValue = Math.max(value, this._minOutput);\n\t\tthis._events.add({\n\t\t\t\"type\" : Tone.TimelineSignal.Type.Exponential,\n\t\t\t\"value\" : setValue,\n\t\t\t\"time\" : endTime\n\t\t});\n\t\t//if the ramped to value is 0, make it go to the min output, and then set to 0.\n\t\tif (value < this._minOutput){\n\t\t\tthis._param.exponentialRampToValueAtTime(this._minOutput, endTime - this.sampleTime);\n\t\t\tthis.setValueAtTime(0, endTime);\n\t\t} else {\n\t\t\tthis._param.exponentialRampToValueAtTime(value, endTime);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Start exponentially approaching the target value at the given time with\n\t * a rate having the given time constant.\n\t * @param {number} value \n\t * @param {Time} startTime \n\t * @param {number} timeConstant \n\t * @returns {Tone.TimelineSignal} this \n\t */\n\tTone.TimelineSignal.prototype.setTargetAtTime = function (value, startTime, timeConstant) {\n\t\tvalue = this._fromUnits(value);\n\t\tvalue = Math.max(this._minOutput, value);\n\t\ttimeConstant = Math.max(this._minOutput, timeConstant);\n\t\tstartTime = this.toSeconds(startTime);\n\t\tthis._events.add({\n\t\t\t\"type\" : Tone.TimelineSignal.Type.Target,\n\t\t\t\"value\" : value,\n\t\t\t\"time\" : startTime,\n\t\t\t\"constant\" : timeConstant\n\t\t});\n\t\tthis._param.setTargetAtTime(value, startTime, timeConstant);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Set an array of arbitrary values starting at the given time for the given duration.\n\t * @param {Float32Array} values \n\t * @param {Time} startTime \n\t * @param {Time} duration\n\t * @param {NormalRange} [scaling=1] If the values in the curve should be scaled by some value\n\t * @returns {Tone.TimelineSignal} this \n\t */\n\tTone.TimelineSignal.prototype.setValueCurveAtTime = function (values, startTime, duration, scaling) {\n\t\tscaling = this.defaultArg(scaling, 1);\n\t\t//copy the array\n\t\tvar floats = new Array(values.length);\n\t\tfor (var i = 0; i < floats.length; i++){\n\t\t\tfloats[i] = this._fromUnits(values[i]) * scaling;\n\t\t}\n\t\tstartTime = this.toSeconds(startTime);\n\t\tduration = this.toSeconds(duration);\n\t\tthis._events.add({\n\t\t\t\"type\" : Tone.TimelineSignal.Type.Curve,\n\t\t\t\"value\" : floats,\n\t\t\t\"time\" : startTime,\n\t\t\t\"duration\" : duration\n\t\t});\n\t\t//set the first value\n\t\tthis._param.setValueAtTime(floats[0], startTime);\n\t\t//schedule a lienar ramp for each of the segments\n\t\tfor (var j = 1; j < floats.length; j++){\n\t\t\tvar segmentTime = startTime + (j / (floats.length - 1) * duration);\n\t\t\tthis._param.linearRampToValueAtTime(floats[j], segmentTime);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Cancels all scheduled parameter changes with times greater than or \n\t * equal to startTime.\n\t * \n\t * @param {Time} startTime\n\t * @returns {Tone.TimelineSignal} this\n\t */\n\tTone.TimelineSignal.prototype.cancelScheduledValues = function (after) {\n\t\tafter = this.toSeconds(after);\n\t\tthis._events.cancel(after);\n\t\tthis._param.cancelScheduledValues(after);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Sets the computed value at the given time. This provides\n\t * a point from which a linear or exponential curve\n\t * can be scheduled after. Will cancel events after \n\t * the given time and shorten the currently scheduled\n\t * linear or exponential ramp so that it ends at `time` .\n\t * This is to avoid discontinuities and clicks in envelopes. \n\t * @param {Time} time When to set the ramp point\n\t * @returns {Tone.TimelineSignal} this\n\t */\n\tTone.TimelineSignal.prototype.setRampPoint = function (time) {\n\t\ttime = this.toSeconds(time);\n\t\t//get the value at the given time\n\t\tvar val = this._toUnits(this.getValueAtTime(time));\n\t\t//if there is an event at the given time\n\t\t//and that even is not a \"set\"\n\t\tvar before = this._searchBefore(time);\n\t\tif (before && before.time === time){\n\t\t\t//remove everything after\n\t\t\tthis.cancelScheduledValues(time + this.sampleTime);\n\t\t} else if (before && \n\t\t\t\t before.type === Tone.TimelineSignal.Type.Curve &&\n\t\t\t\t before.time + before.duration > time){\n\t\t\t//if the curve is still playing\n\t\t\t//cancel the curve\n\t\t\tthis.cancelScheduledValues(time);\n\t\t\tthis.linearRampToValueAtTime(val, time);\n\t\t} else {\n\t\t\t//reschedule the next event to end at the given time\n\t\t\tvar after = this._searchAfter(time);\n\t\t\tif (after){\n\t\t\t\t//cancel the next event(s)\n\t\t\t\tthis.cancelScheduledValues(time);\n\t\t\t\tif (after.type === Tone.TimelineSignal.Type.Linear){\n\t\t\t\t\tthis.linearRampToValueAtTime(val, time);\n\t\t\t\t} else if (after.type === Tone.TimelineSignal.Type.Exponential){\n\t\t\t\t\tthis.exponentialRampToValueAtTime(val, time);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.setValueAtTime(val, time);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Do a linear ramp to the given value between the start and finish times.\n\t * @param {Number} value The value to ramp to.\n\t * @param {Time} start The beginning anchor point to do the linear ramp\n\t * @param {Time} finish The ending anchor point by which the value of\n\t * the signal will equal the given value.\n\t * @returns {Tone.TimelineSignal} this\n\t */\n\tTone.TimelineSignal.prototype.linearRampToValueBetween = function (value, start, finish) {\n\t\tthis.setRampPoint(start);\n\t\tthis.linearRampToValueAtTime(value, finish);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Do a exponential ramp to the given value between the start and finish times.\n\t * @param {Number} value The value to ramp to.\n\t * @param {Time} start The beginning anchor point to do the exponential ramp\n\t * @param {Time} finish The ending anchor point by which the value of\n\t * the signal will equal the given value.\n\t * @returns {Tone.TimelineSignal} this\n\t */\n\tTone.TimelineSignal.prototype.exponentialRampToValueBetween = function (value, start, finish) {\n\t\tthis.setRampPoint(start);\n\t\tthis.exponentialRampToValueAtTime(value, finish);\n\t\treturn this;\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tGETTING SCHEDULED VALUES\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * Returns the value before or equal to the given time\n\t * @param {Number} time The time to query\n\t * @return {Object} The event at or before the given time.\n\t * @private\n\t */\n\tTone.TimelineSignal.prototype._searchBefore = function(time){\n\t\treturn this._events.get(time);\n\t};\n\n\t/**\n\t * The event after the given time\n\t * @param {Number} time The time to query.\n\t * @return {Object} The next event after the given time\n\t * @private\n\t */\n\tTone.TimelineSignal.prototype._searchAfter = function(time){\n\t\treturn this._events.getAfter(time);\n\t};\n\n\t/**\n\t * Get the scheduled value at the given time. This will\n\t * return the unconverted (raw) value.\n\t * @param {Number} time The time in seconds.\n\t * @return {Number} The scheduled value at the given time.\n\t */\n\tTone.TimelineSignal.prototype.getValueAtTime = function(time){\n\t\ttime = this.toSeconds(time);\n\t\tvar after = this._searchAfter(time);\n\t\tvar before = this._searchBefore(time);\n\t\tvar value = this._initial;\n\t\t//if it was set by\n\t\tif (before === null){\n\t\t\tvalue = this._initial;\n\t\t} else if (before.type === Tone.TimelineSignal.Type.Target){\n\t\t\tvar previous = this._events.getBefore(before.time);\n\t\t\tvar previouVal;\n\t\t\tif (previous === null){\n\t\t\t\tpreviouVal = this._initial;\n\t\t\t} else {\n\t\t\t\tpreviouVal = previous.value;\n\t\t\t}\n\t\t\tvalue = this._exponentialApproach(before.time, previouVal, before.value, before.constant, time);\n\t\t} else if (before.type === Tone.TimelineSignal.Type.Curve){\n\t\t\tvalue = this._curveInterpolate(before.time, before.value, before.duration, time);\n\t\t} else if (after === null){\n\t\t\tvalue = before.value;\n\t\t} else if (after.type === Tone.TimelineSignal.Type.Linear){\n\t\t\tvalue = this._linearInterpolate(before.time, before.value, after.time, after.value, time);\n\t\t} else if (after.type === Tone.TimelineSignal.Type.Exponential){\n\t\t\tvalue = this._exponentialInterpolate(before.time, before.value, after.time, after.value, time);\n\t\t} else {\n\t\t\tvalue = before.value;\n\t\t}\n\t\treturn value;\n\t};\n\n\t/**\n\t * When signals connect to other signals or AudioParams, \n\t * they take over the output value of that signal or AudioParam. \n\t * For all other nodes, the behavior is the same as a default connect
. \n\t *\n\t * @override\n\t * @param {AudioParam|AudioNode|Tone.Signal|Tone} node \n\t * @param {number} [outputNumber=0] The output number to connect from.\n\t * @param {number} [inputNumber=0] The input number to connect to.\n\t * @returns {Tone.TimelineSignal} this\n\t * @method\n\t */\n\tTone.TimelineSignal.prototype.connect = Tone.SignalBase.prototype.connect;\n\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tAUTOMATION CURVE CALCULATIONS\n\t//\tMIT License, copyright (c) 2014 Jordan Santell\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * Calculates the the value along the curve produced by setTargetAtTime\n\t * @private\n\t */\n\tTone.TimelineSignal.prototype._exponentialApproach = function (t0, v0, v1, timeConstant, t) {\n\t\treturn v1 + (v0 - v1) * Math.exp(-(t - t0) / timeConstant);\n\t};\n\n\t/**\n\t * Calculates the the value along the curve produced by linearRampToValueAtTime\n\t * @private\n\t */\n\tTone.TimelineSignal.prototype._linearInterpolate = function (t0, v0, t1, v1, t) {\n\t\treturn v0 + (v1 - v0) * ((t - t0) / (t1 - t0));\n\t};\n\n\t/**\n\t * Calculates the the value along the curve produced by exponentialRampToValueAtTime\n\t * @private\n\t */\n\tTone.TimelineSignal.prototype._exponentialInterpolate = function (t0, v0, t1, v1, t) {\n\t\tv0 = Math.max(this._minOutput, v0);\n\t\treturn v0 * Math.pow(v1 / v0, (t - t0) / (t1 - t0));\n\t};\n\n\t/**\n\t * Calculates the the value along the curve produced by setValueCurveAtTime\n\t * @private\n\t */\n\tTone.TimelineSignal.prototype._curveInterpolate = function (start, curve, duration, time) {\n\t\tvar len = curve.length;\n\t\t// If time is after duration, return the last curve value\n\t\tif (time >= start + duration) {\n\t\t\treturn curve[len - 1];\n\t\t} else if (time <= start){\n\t\t\treturn curve[0];\n\t\t} else {\n\t\t\tvar progress = (time - start) / duration;\n\t\t\tvar lowerIndex = Math.floor((len - 1) * progress);\n\t\t\tvar upperIndex = Math.ceil((len - 1) * progress);\n\t\t\tvar lowerVal = curve[lowerIndex];\n\t\t\tvar upperVal = curve[upperIndex];\n\t\t\tif (upperIndex === lowerIndex){\n\t\t\t\treturn lowerVal;\n\t\t\t} else {\n\t\t\t\treturn this._linearInterpolate(lowerIndex, lowerVal, upperIndex, upperVal, progress * (len - 1));\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Clean up.\n\t * @return {Tone.TimelineSignal} this\n\t */\n\tTone.TimelineSignal.prototype.dispose = function(){\n\t\tTone.Signal.prototype.dispose.call(this);\n\t\tTone.Param.prototype.dispose.call(this);\n\t\tthis._events.dispose();\n\t\tthis._events = null;\n\t};\n\n\treturn Tone.TimelineSignal;\n});","define([\"Tone/core/Tone\", \"Tone/signal/Add\", \"Tone/signal/Multiply\", \"Tone/signal/Signal\"], function(Tone){\n\n\t\"use strict\";\n\t\n\t/**\n\t * @class Performs a linear scaling on an input signal.\n\t * Scales a NormalRange input to between\n\t * outputMin and outputMax.\n\t *\n\t * @constructor\n\t * @extends {Tone.SignalBase}\n\t * @param {number} [outputMin=0] The output value when the input is 0. \n\t * @param {number} [outputMax=1]\tThe output value when the input is 1. \n\t * @example\n\t * var scale = new Tone.Scale(50, 100);\n\t * var signal = new Tone.Signal(0.5).connect(scale);\n\t * //the output of scale equals 75\n\t */\n\tTone.Scale = function(outputMin, outputMax){\n\n\t\t/** \n\t\t * @private\n\t\t * @type {number}\n\t\t */\n\t\tthis._outputMin = this.defaultArg(outputMin, 0);\n\n\t\t/** \n\t\t * @private\n\t\t * @type {number}\n\t\t */\n\t\tthis._outputMax = this.defaultArg(outputMax, 1);\n\n\n\t\t/** \n\t\t * @private\n\t\t * @type {Tone.Multiply}\n\t\t * @private\n\t\t */\n\t\tthis._scale = this.input = new Tone.Multiply(1);\n\t\t\n\t\t/** \n\t\t * @private\n\t\t * @type {Tone.Add}\n\t\t * @private\n\t\t */\n\t\tthis._add = this.output = new Tone.Add(0);\n\n\t\tthis._scale.connect(this._add);\n\t\tthis._setRange();\n\t};\n\n\tTone.extend(Tone.Scale, Tone.SignalBase);\n\n\t/**\n\t * The minimum output value. This number is output when \n\t * the value input value is 0. \n\t * @memberOf Tone.Scale#\n\t * @type {number}\n\t * @name min\n\t */\n\tObject.defineProperty(Tone.Scale.prototype, \"min\", {\n\t\tget : function(){\n\t\t\treturn this._outputMin;\n\t\t},\n\t\tset : function(min){\n\t\t\tthis._outputMin = min;\n\t\t\tthis._setRange();\n\t\t}\n\t});\n\n\t/**\n\t * The maximum output value. This number is output when \n\t * the value input value is 1. \n\t * @memberOf Tone.Scale#\n\t * @type {number}\n\t * @name max\n\t */\n\tObject.defineProperty(Tone.Scale.prototype, \"max\", {\n\t\tget : function(){\n\t\t\treturn this._outputMax;\n\t\t},\n\t\tset : function(max){\n\t\t\tthis._outputMax = max;\n\t\t\tthis._setRange();\n\t\t}\n\t});\n\n\t/**\n\t * set the values\n\t * @private\n\t */\n\tTone.Scale.prototype._setRange = function() {\n\t\tthis._add.value = this._outputMin;\n\t\tthis._scale.value = this._outputMax - this._outputMin;\n\t};\n\n\t/**\n\t * Clean up.\n\t * @returns {Tone.Scale} this\n\t */\n\tTone.Scale.prototype.dispose = function(){\n\t\tTone.prototype.dispose.call(this);\n\t\tthis._add.dispose();\n\t\tthis._add = null;\n\t\tthis._scale.dispose();\n\t\tthis._scale = null;\n\t\treturn this;\n\t}; \n\n\treturn Tone.Scale;\n});\n","define([\"Tone/core/Tone\", \"Tone/type/Time\", \"Tone/type/Frequency\", \"Tone/type/TransportTime\", \"Tone/core/Context\"],\nfunction (Tone) {\t\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tTYPES\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * Units which a value can take on.\n\t * @enum {String}\n\t */\n\tTone.Type = {\n\t\t/** \n\t\t * Default units\n\t\t * @typedef {Default}\n\t\t */\n\t\tDefault : \"number\",\n\t\t/**\n\t\t * Time can be described in a number of ways. Read more [Time](https://github.com/Tonejs/Tone.js/wiki/Time).\n\t\t *\n\t\t * input[1]
from the signal connected \n\t * to input[0]
. If an argument is provided in the constructor, the \n\t * signals .value
will be subtracted from the incoming signal.\n\t *\n\t * @extends {Tone.Signal}\n\t * @constructor\n\t * @param {number=} value The value to subtract from the incoming signal. If the value\n\t * is omitted, it will subtract the second signal from the first.\n\t * @example\n\t * var sub = new Tone.Subtract(1);\n\t * var sig = new Tone.Signal(4).connect(sub);\n\t * //the output of sub is 3. \n\t * @example\n\t * var sub = new Tone.Subtract();\n\t * var sigA = new Tone.Signal(10);\n\t * var sigB = new Tone.Signal(2.5);\n\t * sigA.connect(sub, 0, 0);\n\t * sigB.connect(sub, 0, 1);\n\t * //output of sub is 7.5\n\t */\n\tTone.Subtract = function(value){\n\n\t\tthis.createInsOuts(2, 0);\n\n\t\t/**\n\t\t * the summing node\n\t\t * @type {GainNode}\n\t\t * @private\n\t\t */\n\t\tthis._sum = this.input[0] = this.output = new Tone.Gain();\n\n\t\t/**\n\t\t * negate the input of the second input before connecting it\n\t\t * to the summing node.\n\t\t * @type {Tone.Negate}\n\t\t * @private\n\t\t */\n\t\tthis._neg = new Tone.Negate();\n\n\t\t/**\n\t\t * the node where the value is set\n\t\t * @private\n\t\t * @type {Tone.Signal}\n\t\t */\n\t\tthis._param = this.input[1] = new Tone.Signal(value);\n\n\t\tthis._param.chain(this._neg, this._sum);\n\t};\n\n\tTone.extend(Tone.Subtract, Tone.Signal);\n\n\t/**\n\t * Clean up.\n\t * @returns {Tone.SignalBase} this\n\t */\n\tTone.Subtract.prototype.dispose = function(){\n\t\tTone.prototype.dispose.call(this);\n\t\tthis._neg.dispose();\n\t\tthis._neg = null;\n\t\tthis._sum.disconnect();\n\t\tthis._sum = null;\n\t\tthis._param.dispose();\n\t\tthis._param = null;\n\t\treturn this;\n\t};\n\n\treturn Tone.Subtract;\n});","define([\"Tone/core/Tone\"], function (Tone) {\n\n\t\"use strict\";\n\n\t/**\n\t * @class Tone.Emitter gives classes which extend it\n\t * the ability to listen for and emit events. \n\t * Inspiration and reference from Jerome Etienne's [MicroEvent](https://github.com/jeromeetienne/microevent.js).\n\t * MIT (c) 2011 Jerome Etienne.\n\t * \n\t * @extends {Tone}\n\t */\n\tTone.Emitter = function(){\n\t\t/**\n\t\t * Contains all of the events.\n\t\t * @private\n\t\t * @type {Object}\n\t\t */\n\t\tthis._events = {};\n\t};\n\n\tTone.extend(Tone.Emitter);\n\n\t/**\n\t * Bind a callback to a specific event.\n\t * @param {String} event The name of the event to listen for.\n\t * @param {Function} callback The callback to invoke when the\n\t * event is emitted\n\t * @return {Tone.Emitter} this\n\t */\n\tTone.Emitter.prototype.on = function(event, callback){\n\t\t//split the event\n\t\tvar events = event.split(/\\W+/);\n\t\tfor (var i = 0; i < events.length; i++){\n\t\t\tvar eventName = events[i];\n\t\t\tif (!this._events.hasOwnProperty(eventName)){\n\t\t\t\tthis._events[eventName] = [];\n\t\t\t}\n\t\t\tthis._events[eventName].push(callback);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Remove the event listener.\n\t * @param {String} event The event to stop listening to.\n\t * @param {Function=} callback The callback which was bound to \n\t * the event with Tone.Emitter.on.\n\t * If no callback is given, all callbacks\n\t * events are removed.\n\t * @return {Tone.Emitter} this\n\t */\n\tTone.Emitter.prototype.off = function(event, callback){\n\t\tvar events = event.split(/\\W+/);\n\t\tfor (var ev = 0; ev < events.length; ev++){\n\t\t\tevent = events[ev];\n\t\t\tif (this._events.hasOwnProperty(event)){\n\t\t\t\tif (Tone.prototype.isUndef(callback)){\n\t\t\t\t\tthis._events[event] = [];\n\t\t\t\t} else {\n\t\t\t\t\tvar eventList = this._events[event];\n\t\t\t\t\tfor (var i = 0; i < eventList.length; i++){\n\t\t\t\t\t\tif (eventList[i] === callback){\n\t\t\t\t\t\t\teventList.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Invoke all of the callbacks bound to the event\n\t * with any arguments passed in. \n\t * @param {String} event The name of the event.\n\t * @param {*...} args The arguments to pass to the functions listening.\n\t * @return {Tone.Emitter} this\n\t */\n\tTone.Emitter.prototype.emit = function(event){\n\t\tif (this._events){\n\t\t\tvar args = Array.apply(null, arguments).slice(1);\n\t\t\tif (this._events.hasOwnProperty(event)){\n\t\t\t\tvar eventList = this._events[event];\n\t\t\t\tfor (var i = 0, len = eventList.length; i < len; i++){\n\t\t\t\t\teventList[i].apply(this, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Add Emitter functions (on/off/emit) to the object\n\t * @param {Object|Function} object The object or class to extend.\n\t */\n\tTone.Emitter.mixin = function(object){\n\t\tvar functions = [\"on\", \"off\", \"emit\"];\n\t\tobject._events = {};\n\t\tfor (var i = 0; i < functions.length; i++){\n\t\t\tvar func = functions[i];\n\t\t\tvar emitterFunc = Tone.Emitter.prototype[func];\n\t\t\tobject[func] = emitterFunc;\n\t\t}\n\t};\n\n\t/**\n\t * Clean up\n\t * @return {Tone.Emitter} this\n\t */\n\tTone.Emitter.prototype.dispose = function(){\n\t\tTone.prototype.dispose.call(this);\n\t\tthis._events = null;\n\t\treturn this;\n\t};\n\n\treturn Tone.Emitter;\n});","define([\"Tone/core/Tone\"], function(Tone){\n\n\t\"use strict\";\n\n\t/**\n\t * @class Base class for all Signals. Used Internally. \n\t *\n\t * @constructor\n\t * @extends {Tone}\n\t */\n\tTone.SignalBase = function(){};\n\n\tTone.extend(Tone.SignalBase);\n\n\t/**\n\t * When signals connect to other signals or AudioParams, \n\t * they take over the output value of that signal or AudioParam. \n\t * For all other nodes, the behavior is the same as a default connect
. \n\t *\n\t * @override\n\t * @param {AudioParam|AudioNode|Tone.Signal|Tone} node \n\t * @param {number} [outputNumber=0] The output number to connect from.\n\t * @param {number} [inputNumber=0] The input number to connect to.\n\t * @returns {Tone.SignalBase} this\n\t */\n\tTone.SignalBase.prototype.connect = function(node, outputNumber, inputNumber){\n\t\t//zero it out so that the signal can have full control\n\t\tif ((Tone.Signal && Tone.Signal === node.constructor) || \n\t\t\t\t(Tone.Param && Tone.Param === node.constructor) || \n\t\t\t\t(Tone.TimelineSignal && Tone.TimelineSignal === node.constructor)){\n\t\t\t//cancel changes\n\t\t\tnode._param.cancelScheduledValues(0);\n\t\t\t//reset the value\n\t\t\tnode._param.value = 0;\n\t\t\t//mark the value as overridden\n\t\t\tnode.overridden = true;\n\t\t} else if (node instanceof AudioParam){\n\t\t\tnode.cancelScheduledValues(0);\n\t\t\tnode.value = 0;\n\t\t} \n\t\tTone.prototype.connect.call(this, node, outputNumber, inputNumber);\n\t\treturn this;\n\t};\n\n\treturn Tone.SignalBase;\n});","define([\"Tone/core/Tone\", \"Tone/type/TimeBase\"], function (Tone) {\n\n\t/**\n\t * @class Tone.Time is a primitive type for encoding Time values. \n\t * Eventually all time values are evaluated to seconds\n\t * using the `eval` method. Tone.Time can be constructed\n\t * with or without the `new` keyword. Tone.Time can be passed\n\t * into the parameter of any method which takes time as an argument. \n\t * @constructor\n\t * @extends {Tone.TimeBase}\n\t * @param {String|Number} val The time value.\n\t * @param {String=} units The units of the value.\n\t * @example\n\t * var t = Tone.Time(\"4n\");//encodes a quarter note\n\t * t.mult(4); // multiply that value by 4\n\t * t.toNotation(); //returns \"1m\"\n\t */\n\tTone.Time = function(val, units){\n\t\tif (this instanceof Tone.Time){\n\n\t\t\t/**\n\t\t\t * If the current clock time should\n\t\t\t * be added to the output\n\t\t\t * @type {Boolean}\n\t\t\t * @private\n\t\t\t */\n\t\t\tthis._plusNow = false;\n\t\t\t\n\t\t\tTone.TimeBase.call(this, val, units);\n\n\t\t} else {\n\t\t\treturn new Tone.Time(val, units);\n\t\t}\n\t};\n\n\tTone.extend(Tone.Time, Tone.TimeBase);\n\n\t//clone the expressions so that \n\t//we can add more without modifying the original\n\tTone.Time.prototype._unaryExpressions = Object.create(Tone.TimeBase.prototype._unaryExpressions);\n\n\t/*\n\t * Adds an additional unary expression\n\t * which quantizes values to the next subdivision\n\t * @type {Object}\n\t * @private\n\t */\n\tTone.Time.prototype._unaryExpressions.quantize = {\n\t\tregexp : /^@/,\n\t\tmethod : function(rh){\n\t\t\treturn Tone.Transport.nextSubdivision(rh());\n\t\t}\n\t};\n\n\t/*\n\t * Adds an additional unary expression\n\t * which adds the current clock time.\n\t * @type {Object}\n\t * @private\n\t */\n\tTone.Time.prototype._unaryExpressions.now = {\n\t\tregexp : /^\\+/,\n\t\tmethod : function(lh){\n\t\t\tthis._plusNow = true;\n\t\t\treturn lh();\n\t\t}\n\t};\n\n\t/**\n\t * Quantize the time by the given subdivision. Optionally add a\n\t * percentage which will move the time value towards the ideal\n\t * quantized value by that percentage. \n\t * @param {Number|Time} val The subdivision to quantize to\n\t * @param {NormalRange} [percent=1] Move the time value\n\t * towards the quantized value by\n\t * a percentage.\n\t * @return {Tone.Time} this\n\t * @example\n\t * Tone.Time(21).quantize(2) //returns 22\n\t * Tone.Time(0.6).quantize(\"4n\", 0.5) //returns 0.55\n\t */\n\tTone.Time.prototype.quantize = function(subdiv, percent){\n\t\tpercent = this.defaultArg(percent, 1);\n\t\tthis._expr = function(expr, subdivision, percent){\n\t\t\texpr = expr();\n\t\t\tsubdivision = subdivision.toSeconds();\n\t\t\tvar multiple = Math.round(expr / subdivision);\n\t\t\tvar ideal = multiple * subdivision;\n\t\t\tvar diff = ideal - expr;\n\t\t\treturn expr + diff * percent;\n\t\t}.bind(this, this._expr, new this.constructor(subdiv), percent);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Adds the clock time to the time expression at the \n\t * moment of evaluation. \n\t * @return {Tone.Time} this\n\t */\n\tTone.Time.prototype.addNow = function(){\n\t\tthis._plusNow = true;\n\t\treturn this;\n\t};\n\n\t/**\n\t * @override\n\t * Override the default value return when no arguments are passed in.\n\t * The default value is 'now'\n\t * @private\n\t */\n\tTone.Time.prototype._defaultExpr = function(){\n\t\tthis._plusNow = true;\n\t\treturn this._noOp;\n\t};\n\n\t/**\n\t * Copies the value of time to this Time\n\t * @param {Tone.Time} time\n\t * @return {Time}\n\t */\n\tTone.Time.prototype.copy = function(time){\n\t\tTone.TimeBase.prototype.copy.call(this, time);\n\t\tthis._plusNow = time._plusNow;\n\t\treturn this;\n\t};\n\n\t//CONVERSIONS//////////////////////////////////////////////////////////////\n\n\t/**\n\t * Convert a Time to Notation. Values will be thresholded to the nearest 128th note. \n\t * @return {Notation} \n\t * @example\n\t * //if the Transport is at 120bpm:\n\t * Tone.Time(2).toNotation();//returns \"1m\"\n\t */\n\tTone.Time.prototype.toNotation = function(){\n\t\tvar time = this.toSeconds();\n\t\tvar testNotations = [\"1m\", \"2n\", \"4n\", \"8n\", \"16n\", \"32n\", \"64n\", \"128n\"];\n\t\tvar retNotation = this._toNotationHelper(time, testNotations);\n\t\t//try the same thing but with tripelets\n\t\tvar testTripletNotations = [\"1m\", \"2n\", \"2t\", \"4n\", \"4t\", \"8n\", \"8t\", \"16n\", \"16t\", \"32n\", \"32t\", \"64n\", \"64t\", \"128n\"];\n\t\tvar retTripletNotation = this._toNotationHelper(time, testTripletNotations);\n\t\t//choose the simpler expression of the two\n\t\tif (retTripletNotation.split(\"+\").length < retNotation.split(\"+\").length){\n\t\t\treturn retTripletNotation;\n\t\t} else {\n\t\t\treturn retNotation;\n\t\t}\n\t};\n\n\t/**\n\t * Helper method for Tone.toNotation\n\t * @param {Number} units \n\t * @param {Array} testNotations\n\t * @return {String}\n\t * @private\n\t */\n\tTone.Time.prototype._toNotationHelper = function(units, testNotations){\n\t\t//the threshold is the last value in the array\n\t\tvar threshold = this._notationToUnits(testNotations[testNotations.length - 1]);\n\t\tvar retNotation = \"\";\n\t\tfor (var i = 0; i < testNotations.length; i++){\n\t\t\tvar notationTime = this._notationToUnits(testNotations[i]);\n\t\t\t//account for floating point errors (i.e. round up if the value is 0.999999)\n\t\t\tvar multiple = units / notationTime;\n\t\t\tvar floatingPointError = 0.000001;\n\t\t\tif (1 - multiple % 1 < floatingPointError){\n\t\t\t\tmultiple += floatingPointError;\n\t\t\t}\n\t\t\tmultiple = Math.floor(multiple);\n\t\t\tif (multiple > 0){\n\t\t\t\tif (multiple === 1){\n\t\t\t\t\tretNotation += testNotations[i];\n\t\t\t\t} else {\n\t\t\t\t\tretNotation += multiple.toString() + \"*\" + testNotations[i];\n\t\t\t\t}\n\t\t\t\tunits -= multiple * notationTime;\n\t\t\t\tif (units < threshold){\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tretNotation += \" + \";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (retNotation === \"\"){\n\t\t\tretNotation = \"0\";\n\t\t}\n\t\treturn retNotation;\n\t};\n\n\t/**\n\t * Convert a notation value to the current units\n\t * @param {Notation} notation \n\t * @return {Number} \n\t * @private\n\t */\n\tTone.Time.prototype._notationToUnits = function(notation){\n\t\tvar primaryExprs = this._primaryExpressions;\n\t\tvar notationExprs = [primaryExprs.n, primaryExprs.t, primaryExprs.m];\n\t\tfor (var i = 0; i < notationExprs.length; i++){\n\t\t\tvar expr = notationExprs[i];\n\t\t\tvar match = notation.match(expr.regexp);\n\t\t\tif (match){\n\t\t\t\treturn expr.method.call(this, match[1]);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Return the time encoded as Bars:Beats:Sixteenths.\n\t * @return {BarsBeatsSixteenths}\n\t */\n\tTone.Time.prototype.toBarsBeatsSixteenths = function(){\n\t\tvar quarterTime = this._beatsToUnits(1);\n\t\tvar quarters = this.toSeconds() / quarterTime;\n\t\tvar measures = Math.floor(quarters / this._timeSignature());\n\t\tvar sixteenths = (quarters % 1) * 4;\n\t\tquarters = Math.floor(quarters) % this._timeSignature();\n\t\tsixteenths = sixteenths.toString();\n\t\tif (sixteenths.length > 3){\n\t\t\tsixteenths = parseFloat(sixteenths).toFixed(3);\n\t\t}\n\t\tvar progress = [measures, quarters, sixteenths];\n\t\treturn progress.join(\":\");\n\t};\n\n\t/**\n\t * Return the time in ticks.\n\t * @return {Ticks}\n\t */\n\tTone.Time.prototype.toTicks = function(){\n\t\tvar quarterTime = this._beatsToUnits(1);\n\t\tvar quarters = this.valueOf() / quarterTime;\n\t\treturn Math.floor(quarters * Tone.Transport.PPQ);\n\t};\n\n\t/**\n\t * Return the time in samples\n\t * @return {Samples} \n\t */\n\tTone.Time.prototype.toSamples = function(){\n\t\treturn this.toSeconds() * this.context.sampleRate;\n\t};\n\n\t/**\n\t * Return the time as a frequency value\n\t * @return {Frequency} \n\t * @example\n\t * Tone.Time(2).toFrequency(); //0.5\n\t */\n\tTone.Time.prototype.toFrequency = function(){\n\t\treturn 1/this.toSeconds();\n\t};\n\n\t/**\n\t * Return the time in seconds.\n\t * @return {Seconds} \n\t */\n\tTone.Time.prototype.toSeconds = function(){\n\t\treturn this.valueOf();\n\t};\n\n\t/**\n\t * Return the time in milliseconds.\n\t * @return {Milliseconds} \n\t */\n\tTone.Time.prototype.toMilliseconds = function(){\n\t\treturn this.toSeconds() * 1000;\n\t};\n\n\t/**\n\t * Return the time in seconds.\n\t * @return {Seconds} \n\t */\n\tTone.Time.prototype.valueOf = function(){\n\t\tvar val = this._expr();\n\t\treturn val + (this._plusNow?this.now():0);\n\t};\n\n\treturn Tone.Time;\n});","define([\"Tone/core/Tone\"], function (Tone) {\n\n\t/**\n\t * @class Tone.TimeBase is a flexible encoding of time\n\t * which can be evaluated to and from a string.\n\t * Parsing code modified from https://code.google.com/p/tapdigit/\n\t * Copyright 2011 2012 Ariya Hidayat, New BSD License\n\t * @extends {Tone}\n\t * @param {Time} val The time value as a number or string\n\t * @param {String=} units Unit values\n\t * @example\n\t * Tone.TimeBase(4, \"n\")\n\t * Tone.TimeBase(2, \"t\")\n\t * Tone.TimeBase(\"2t\").add(\"1m\")\n\t * Tone.TimeBase(\"2t + 1m\");\n\t */\n\tTone.TimeBase = function(val, units){\n\n\t\t//allows it to be constructed with or without 'new'\n\t\tif (this instanceof Tone.TimeBase) {\n\n\t\t\t/**\n\t\t\t * Any expressions parsed from the Time\n\t\t\t * @type {Array}\n\t\t\t * @private\n\t\t\t */\n\t\t\tthis._expr = this._noOp;\n\n\t\t\tif (val instanceof Tone.TimeBase){\n\t\t\t\tthis.copy(val);\n\t\t\t} else if (!this.isUndef(units) || this.isNumber(val)){\n\t\t\t\t//default units\n\t\t\t\tunits = this.defaultArg(units, this._defaultUnits);\n\t\t\t\tvar method = this._primaryExpressions[units].method;\n\t\t\t\tthis._expr = method.bind(this, val);\n\t\t\t} else if (this.isString(val)){\n\t\t\t\tthis.set(val);\n\t\t\t} else if (this.isUndef(val)){\n\t\t\t\t//default expression\n\t\t\t\tthis._expr = this._defaultExpr();\n\t\t\t}\n\t\t} else {\n\n\t\t\treturn new Tone.TimeBase(val, units);\n\t\t}\n\t};\n\n\tTone.extend(Tone.TimeBase);\n\n\t/**\n\t * Repalce the current time value with the value\n\t * given by the expression string.\n\t * @param {String} exprString\n\t * @return {Tone.TimeBase} this\n\t */\n\tTone.TimeBase.prototype.set = function(exprString){\n\t\tthis._expr = this._parseExprString(exprString);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Return a clone of the TimeBase object.\n\t * @return {Tone.TimeBase} The new cloned Tone.TimeBase\n\t */\n\tTone.TimeBase.prototype.clone = function(){\n\t\tvar instance = new this.constructor();\n\t\tinstance.copy(this);\n\t\treturn instance;\n\t};\n\n\t/**\n\t * Copies the value of time to this Time\n\t * @param {Tone.TimeBase} time\n\t * @return {TimeBase}\n\t */\n\tTone.TimeBase.prototype.copy = function(time){\n\t\tvar val = time._expr();\n\t\treturn this.set(val);\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tABSTRACT SYNTAX TREE PARSER\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * All the primary expressions.\n\t * @private\n\t * @type {Object}\n\t */\n\tTone.TimeBase.prototype._primaryExpressions = {\n\t\t\"n\" : {\n\t\t\tregexp : /^(\\d+)n/i,\n\t\t\tmethod : function(value){\n\t\t\t\tvalue = parseInt(value);\n\t\t\t\tif (value === 1){\n\t\t\t\t\treturn this._beatsToUnits(this._timeSignature());\n\t\t\t\t} else {\n\t\t\t\t\treturn this._beatsToUnits(4 / value);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"t\" : {\n\t\t\tregexp : /^(\\d+)t/i,\n\t\t\tmethod : function(value){\n\t\t\t\tvalue = parseInt(value);\n\t\t\t\treturn this._beatsToUnits(8 / (parseInt(value) * 3));\n\t\t\t}\n\t\t},\n\t\t\"m\" : {\n\t\t\tregexp : /^(\\d+)m/i,\n\t\t\tmethod : function(value){\n\t\t\t\treturn this._beatsToUnits(parseInt(value) * this._timeSignature());\n\t\t\t}\n\t\t},\n\t\t\"i\" : {\n\t\t\tregexp : /^(\\d+)i/i,\n\t\t\tmethod : function(value){\n\t\t\t\treturn this._ticksToUnits(parseInt(value));\n\t\t\t}\n\t\t},\n\t\t\"hz\" : {\n\t\t\tregexp : /^(\\d+(?:\\.\\d+)?)hz/i,\n\t\t\tmethod : function(value){\n\t\t\t\treturn this._frequencyToUnits(parseFloat(value));\n\t\t\t}\n\t\t},\n\t\t\"tr\" : {\n\t\t\tregexp : /^(\\d+(?:\\.\\d+)?):(\\d+(?:\\.\\d+)?):?(\\d+(?:\\.\\d+)?)?/,\n\t\t\tmethod : function(m, q, s){\n\t\t\t\tvar total = 0;\n\t\t\t\tif (m && m !== \"0\"){\n\t\t\t\t\ttotal += this._beatsToUnits(this._timeSignature() * parseFloat(m));\n\t\t\t\t}\n\t\t\t\tif (q && q !== \"0\"){\n\t\t\t\t\ttotal += this._beatsToUnits(parseFloat(q));\n\t\t\t\t}\n\t\t\t\tif (s && s !== \"0\"){\n\t\t\t\t\ttotal += this._beatsToUnits(parseFloat(s) / 4);\n\t\t\t\t}\n\t\t\t\treturn total;\n\t\t\t}\n\t\t},\n\t\t\"s\" : {\n\t\t\tregexp : /^(\\d+(?:\\.\\d+)?s)/,\n\t\t\tmethod : function(value){\n\t\t\t\treturn this._secondsToUnits(parseFloat(value));\n\t\t\t}\n\t\t},\n\t\t\"samples\" : {\n\t\t\tregexp : /^(\\d+)samples/,\n\t\t\tmethod : function(value){\n\t\t\t\treturn parseInt(value) / this.context.sampleRate;\n\t\t\t}\n\t\t},\n\t\t\"default\" : {\n\t\t\tregexp : /^(\\d+(?:\\.\\d+)?)/,\n\t\t\tmethod : function(value){\n\t\t\t\treturn this._primaryExpressions[this._defaultUnits].method.call(this, value);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * All the binary expressions that TimeBase can accept.\n\t * @private\n\t * @type {Object}\n\t */\n\tTone.TimeBase.prototype._binaryExpressions = {\n\t\t\"+\" : {\n\t\t\tregexp : /^\\+/,\n\t\t\tprecedence : 2,\n\t\t\tmethod : function(lh, rh){\n\t\t\t\treturn lh() + rh();\n\t\t\t}\n\t\t},\n\t\t\"-\" : {\n\t\t\tregexp : /^\\-/,\n\t\t\tprecedence : 2,\n\t\t\tmethod : function(lh, rh){\n\t\t\t\treturn lh() - rh();\n\t\t\t}\n\t\t},\n\t\t\"*\" : {\n\t\t\tregexp : /^\\*/,\n\t\t\tprecedence : 1,\n\t\t\tmethod : function(lh, rh){\n\t\t\t\treturn lh() * rh();\n\t\t\t}\n\t\t},\n\t\t\"/\" : {\n\t\t\tregexp : /^\\//,\n\t\t\tprecedence : 1,\n\t\t\tmethod : function(lh, rh){\n\t\t\t\treturn lh() / rh();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * All the unary expressions.\n\t * @private\n\t * @type {Object}\n\t */\n\tTone.TimeBase.prototype._unaryExpressions = {\n\t\t\"neg\" : {\n\t\t\tregexp : /^\\-/,\n\t\t\tmethod : function(lh){\n\t\t\t\treturn -lh();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Syntactic glue which holds expressions together\n\t * @private\n\t * @type {Object}\n\t */\n\tTone.TimeBase.prototype._syntaxGlue = {\n\t\t\"(\" : {\n\t\t\tregexp : /^\\(/\n\t\t},\n\t\t\")\" : {\n\t\t\tregexp : /^\\)/\n\t\t}\n\t};\n\n\t/**\n\t * tokenize the expression based on the Expressions object\n\t * @param {string} expr \n\t * @return {Object} returns two methods on the tokenized list, next and peek\n\t * @private\n\t */\n\tTone.TimeBase.prototype._tokenize = function(expr){\n\t\tvar position = -1;\n\t\tvar tokens = [];\n\n\t\twhile(expr.length > 0){\n\t\t\texpr = expr.trim();\n\t\t\tvar token = getNextToken(expr, this);\n\t\t\ttokens.push(token);\n\t\t\texpr = expr.substr(token.value.length);\n\t\t}\n\n\t\tfunction getNextToken(expr, context){\n\t\t\tvar expressions = [\"_binaryExpressions\", \"_unaryExpressions\", \"_primaryExpressions\", \"_syntaxGlue\"];\n\t\t\tfor (var i = 0; i < expressions.length; i++){\n\t\t\t\tvar group = context[expressions[i]];\n\t\t\t\tfor (var opName in group){\n\t\t\t\t\tvar op = group[opName];\n\t\t\t\t\tvar reg = op.regexp;\n\t\t\t\t\tvar match = expr.match(reg);\n\t\t\t\t\tif (match !== null){\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tmethod : op.method,\n\t\t\t\t\t\t\tprecedence : op.precedence,\n\t\t\t\t\t\t\tregexp : op.regexp,\n\t\t\t\t\t\t\tvalue : match[0],\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new SyntaxError(\"Tone.TimeBase: Unexpected token \"+expr);\n\t\t}\n\n\t\treturn {\n\t\t\tnext : function(){\n\t\t\t\treturn tokens[++position];\n\t\t\t},\n\t\t\tpeek : function(){\n\t\t\t\treturn tokens[position + 1];\n\t\t\t}\n\t\t};\n\t};\n\n\t/**\n\t * Given a token, find the value within the groupName\n\t * @param {Object} token\n\t * @param {String} groupName\n\t * @param {Number} precedence\n\t * @private\n\t */\n\tTone.TimeBase.prototype._matchGroup = function(token, group, prec) {\n\t\tvar ret = false;\n\t\tif (!this.isUndef(token)){\n\t\t\tfor (var opName in group){\n\t\t\t\tvar op = group[opName];\n\t\t\t\tif (op.regexp.test(token.value)){\n\t\t\t\t\tif (!this.isUndef(prec)){\n\t\t\t\t\t\tif(op.precedence === prec){\t\n\t\t\t\t\t\t\treturn op;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn op;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t};\n\n\t/**\n\t * Match a binary expression given the token and the precedence\n\t * @param {Lexer} lexer\n\t * @param {Number} precedence\n\t * @private\n\t */\n\tTone.TimeBase.prototype._parseBinary = function(lexer, precedence){\n\t\tif (this.isUndef(precedence)){\n\t\t\tprecedence = 2;\n\t\t}\n\t\tvar expr;\n\t\tif (precedence < 0){\n\t\t\texpr = this._parseUnary(lexer);\n\t\t} else {\n\t\t\texpr = this._parseBinary(lexer, precedence - 1);\n\t\t}\n\t\tvar token = lexer.peek();\n\t\twhile (token && this._matchGroup(token, this._binaryExpressions, precedence)){\n\t\t\ttoken = lexer.next();\n\t\t\texpr = token.method.bind(this, expr, this._parseBinary(lexer, precedence - 1));\n\t\t\ttoken = lexer.peek();\n\t\t}\n\t\treturn expr;\n\t};\n\n\t/**\n\t * Match a unary expression.\n\t * @param {Lexer} lexer\n\t * @private\n\t */\n\tTone.TimeBase.prototype._parseUnary = function(lexer){\n\t\tvar token, expr;\n\t\ttoken = lexer.peek();\n\t\tvar op = this._matchGroup(token, this._unaryExpressions);\n\t\tif (op) {\n\t\t\ttoken = lexer.next();\n\t\t\texpr = this._parseUnary(lexer);\n\t\t\treturn op.method.bind(this, expr);\n\t\t}\n\t\treturn this._parsePrimary(lexer);\n\t};\n\n\t/**\n\t * Match a primary expression (a value).\n\t * @param {Lexer} lexer\n\t * @private\n\t */\n\tTone.TimeBase.prototype._parsePrimary = function(lexer){\n\t\tvar token, expr;\n\t\ttoken = lexer.peek();\n\t\tif (this.isUndef(token)) {\n\t\t\tthrow new SyntaxError(\"Tone.TimeBase: Unexpected end of expression\");\n\t\t}\n\t\tif (this._matchGroup(token, this._primaryExpressions)) {\n\t\t\ttoken = lexer.next();\n\t\t\tvar matching = token.value.match(token.regexp);\n\t\t\treturn token.method.bind(this, matching[1], matching[2], matching[3]);\n\t\t}\n\t\tif (token && token.value === \"(\"){\n\t\t\tlexer.next();\n\t\t\texpr = this._parseBinary(lexer);\n\t\t\ttoken = lexer.next();\n\t\t\tif (!(token && token.value === \")\")) {\n\t\t\t\tthrow new SyntaxError(\"Expected )\");\n\t\t\t}\n\t\t\treturn expr;\n\t\t}\n\t\tthrow new SyntaxError(\"Tone.TimeBase: Cannot process token \" + token.value);\n\t};\n\n\t/**\n\t * Recursively parse the string expression into a syntax tree.\n\t * @param {string} expr \n\t * @return {Function} the bound method to be evaluated later\n\t * @private\n\t */\n\tTone.TimeBase.prototype._parseExprString = function(exprString){\n\t\tif (!this.isString(exprString)){\n\t\t\texprString = exprString.toString();\n\t\t}\n\t\tvar lexer = this._tokenize(exprString);\n\t\tvar tree = this._parseBinary(lexer);\n\t\treturn tree;\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tDEFAULTS\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * The initial expression value\n\t * @return {Number} The initial value 0\n\t * @private\n\t */\n\tTone.TimeBase.prototype._noOp = function(){\n\t\treturn 0;\n\t};\n\n\t/**\n\t * The default expression value if no arguments are given\n\t * @private\n\t */\n\tTone.TimeBase.prototype._defaultExpr = function(){\n\t\treturn this._noOp;\n\t};\n\n\t/**\n\t * The default units if none are given.\n\t * @private\n\t */\n\tTone.TimeBase.prototype._defaultUnits = \"s\";\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tUNIT CONVERSIONS\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * Returns the value of a frequency in the current units\n\t * @param {Frequency} freq\n\t * @return {Number}\n\t * @private\n\t */\n\tTone.TimeBase.prototype._frequencyToUnits = function(freq){\n\t\treturn 1/freq;\n\t};\n\n\t/**\n\t * Return the value of the beats in the current units\n\t * @param {Number} beats\n\t * @return {Number}\n\t * @private\n\t */\n\tTone.TimeBase.prototype._beatsToUnits = function(beats){\n\t\treturn (60 / Tone.Transport.bpm.value) * beats;\n\t};\n\n\t/**\n\t * Returns the value of a second in the current units\n\t * @param {Seconds} seconds\n\t * @return {Number}\n\t * @private\n\t */\n\tTone.TimeBase.prototype._secondsToUnits = function(seconds){\n\t\treturn seconds;\n\t};\n\n\t/**\n\t * Returns the value of a tick in the current time units\n\t * @param {Ticks} ticks\n\t * @return {Number}\n\t * @private\n\t */\n\tTone.TimeBase.prototype._ticksToUnits = function(ticks){\n\t\treturn ticks * (this._beatsToUnits(1) / Tone.Transport.PPQ);\n\t};\n\n\t/**\n\t * Return the time signature.\n\t * @return {Number}\n\t * @private\n\t */\n\tTone.TimeBase.prototype._timeSignature = function(){\n\t\treturn Tone.Transport.timeSignature;\n\t};\n\n\t///////////////////////////////////////////////////////////////////////////\n\t//\tEXPRESSIONS\n\t///////////////////////////////////////////////////////////////////////////\n\n\t/**\n\t * Push an expression onto the expression list\n\t * @param {Time} val\n\t * @param {String} type\n\t * @param {String} units\n\t * @return {Tone.TimeBase} \n\t * @private\n\t */\n\tTone.TimeBase.prototype._pushExpr = function(val, name, units){\n\t\t//create the expression\n\t\tif (!(val instanceof Tone.TimeBase)){\n\t\t\tval = new this.constructor(val, units);\n\t\t}\n\t\tthis._expr = this._binaryExpressions[name].method.bind(this, this._expr, val._expr);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Add to the current value.\n\t * @param {Time} val The value to add\n\t * @param {String=} units Optional units to use with the value.\n\t * @return {Tone.TimeBase} this\n\t * @example\n\t * Tone.TimeBase(\"2m\").add(\"1m\"); //\"3m\"\n\t */\n\tTone.TimeBase.prototype.add = function(val, units){\n\t\treturn this._pushExpr(val, \"+\", units);\n\t};\n\n\t/**\n\t * Subtract the value from the current time.\n\t * @param {Time} val The value to subtract\n\t * @param {String=} units Optional units to use with the value.\n\t * @return {Tone.TimeBase} this\n\t * @example\n\t * Tone.TimeBase(\"2m\").sub(\"1m\"); //\"1m\"\n\t */\n\tTone.TimeBase.prototype.sub = function(val, units){\n\t\treturn this._pushExpr(val, \"-\", units);\n\t};\n\n\t/**\n\t * Multiply the current value by the given time.\n\t * @param {Time} val The value to multiply\n\t * @param {String=} units Optional units to use with the value.\n\t * @return {Tone.TimeBase} this\n\t * @example\n\t * Tone.TimeBase(\"2m\").mult(\"2\"); //\"4m\"\n\t */\n\tTone.TimeBase.prototype.mult = function(val, units){\n\t\treturn this._pushExpr(val, \"*\", units);\n\t};\n\n\t/**\n\t * Divide the current value by the given time.\n\t * @param {Time} val The value to divide by\n\t * @param {String=} units Optional units to use with the value.\n\t * @return {Tone.TimeBase} this\n\t * @example\n\t * Tone.TimeBase(\"2m\").div(2); //\"1m\"\n\t */\n\tTone.TimeBase.prototype.div = function(val, units){\n\t\treturn this._pushExpr(val, \"/\", units);\n\t};\n\n\t/**\n\t * Evaluate the time value. Returns the time\n\t * in seconds.\n\t * @return {Seconds} \n\t */\n\tTone.TimeBase.prototype.valueOf = function(){\n\t\treturn this._expr();\n\t};\n\n\t/**\n\t * Clean up\n\t * @return {Tone.TimeBase} this\n\t */\n\tTone.TimeBase.prototype.dispose = function(){\n\t\tthis._expr = null;\n\t};\n\n\treturn Tone.TimeBase;\n});","define([\"Tone/core/Tone\", \"Tone/type/Type\"], function(Tone){\n\n\t\"use strict\";\n\n\t/**\n\t * @class Tone.Param wraps the native Web Audio's AudioParam to provide\n\t * additional unit conversion functionality. It also\n\t * serves as a base-class for classes which have a single,\n\t * automatable parameter. \n\t * @extends {Tone}\n\t * @param {AudioParam} param The parameter to wrap.\n\t * @param {Tone.Type} units The units of the audio param.\n\t * @param {Boolean} convert If the param should be converted.\n\t */\n\tTone.Param = function(){\n\n\t\tvar options = this.optionsObject(arguments, [\"param\", \"units\", \"convert\"], Tone.Param.defaults);\n\n\t\t/**\n\t\t * The native parameter to control\n\t\t * @type {AudioParam}\n\t\t * @private\n\t\t */\n\t\tthis._param = this.input = options.param;\n\n\t\t/**\n\t\t * The units of the parameter\n\t\t * @type {Tone.Type}\n\t\t */\n\t\tthis.units = options.units;\n\n\t\t/**\n\t\t * If the value should be converted or not\n\t\t * @type {Boolean}\n\t\t */\n\t\tthis.convert = options.convert;\n\n\t\t/**\n\t\t * True if the signal value is being overridden by \n\t\t * a connected signal.\n\t\t * @readOnly\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tthis.overridden = false;\n\n\t\t/**\n\t\t * If there is an LFO, this is where it is held.\n\t\t * @type {Tone.LFO}\n\t\t * @private\n\t\t */\n\t\tthis._lfo = null;\n\n\t\tif (this.isObject(options.lfo)){\n\t\t\tthis.value = options.lfo;\n\t\t} else if (!this.isUndef(options.value)){\n\t\t\tthis.value = options.value;\n\t\t}\n\t};\n\n\tTone.extend(Tone.Param);\n\t\n\t/**\n\t * Defaults\n\t * @type {Object}\n\t * @const\n\t */\n\tTone.Param.defaults = {\n\t\t\"units\" : Tone.Type.Default,\n\t\t\"convert\" : true,\n\t\t\"param\" : undefined\n\t};\n\n\t/**\n\t * The current value of the parameter. \n\t * @memberOf Tone.Param#\n\t * @type {Number}\n\t * @name value\n\t */\n\tObject.defineProperty(Tone.Param.prototype, \"value\", {\n\t\tget : function(){\n\t\t\treturn this._toUnits(this._param.value);\n\t\t},\n\t\tset : function(value){\n\t\t\tif (this.isObject(value)){\n\t\t\t\t//throw an error if the LFO needs to be included\n\t\t\t\tif (this.isUndef(Tone.LFO)){\n\t\t\t\t\tthrow new Error(\"Include 'Tone.LFO' to use an LFO as a Param value.\");\n\t\t\t\t}\n\t\t\t\t//remove the old one\n\t\t\t\tif (this._lfo){\n\t\t\t\t\tthis._lfo.dispose();\n\t\t\t\t}\n\t\t\t\tthis._lfo = new Tone.LFO(value).start();\n\t\t\t\tthis._lfo.connect(this.input);\n\t\t\t} else {\n\t\t\t\tvar convertedVal = this._fromUnits(value);\n\t\t\t\tthis._param.cancelScheduledValues(0);\n\t\t\t\tthis._param.value = convertedVal;\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * Convert the given value from the type specified by Tone.Param.units\n\t * into the destination value (such as Gain or Frequency).\n\t * @private\n\t * @param {*} val the value to convert\n\t * @return {number} the number which the value should be set to\n\t */\n\tTone.Param.prototype._fromUnits = function(val){\n\t\tif (this.convert || this.isUndef(this.convert)){\n\t\t\tswitch(this.units){\n\t\t\t\tcase Tone.Type.Time: \n\t\t\t\t\treturn this.toSeconds(val);\n\t\t\t\tcase Tone.Type.Frequency: \n\t\t\t\t\treturn this.toFrequency(val);\n\t\t\t\tcase Tone.Type.Decibels: \n\t\t\t\t\treturn this.dbToGain(val);\n\t\t\t\tcase Tone.Type.NormalRange: \n\t\t\t\t\treturn Math.min(Math.max(val, 0), 1);\n\t\t\t\tcase Tone.Type.AudioRange: \n\t\t\t\t\treturn Math.min(Math.max(val, -1), 1);\n\t\t\t\tcase Tone.Type.Positive: \n\t\t\t\t\treturn Math.max(val, 0);\n\t\t\t\tdefault:\n\t\t\t\t\treturn val;\n\t\t\t}\n\t\t} else {\n\t\t\treturn val;\n\t\t}\n\t};\n\n\t/**\n\t * Convert the parameters value into the units specified by Tone.Param.units.\n\t * @private\n\t * @param {number} val the value to convert\n\t * @return {number}\n\t */\n\tTone.Param.prototype._toUnits = function(val){\n\t\tif (this.convert || this.isUndef(this.convert)){\n\t\t\tswitch(this.units){\n\t\t\t\tcase Tone.Type.Decibels: \n\t\t\t\t\treturn this.gainToDb(val);\n\t\t\t\tdefault:\n\t\t\t\t\treturn val;\n\t\t\t}\n\t\t} else {\n\t\t\treturn val;\n\t\t}\n\t};\n\n\t/**\n\t * the minimum output value\n\t * @type {Number}\n\t * @private\n\t */\n\tTone.Param.prototype._minOutput = 0.00001;\n\n\t/**\n\t * Schedules a parameter value change at the given time.\n\t * @param {*}\tvalue The value to set the signal.\n\t * @param {Time} time The time when the change should occur.\n\t * @returns {Tone.Param} this\n\t * @example\n\t * //set the frequency to \"G4\" in exactly 1 second from now. \n\t * freq.setValueAtTime(\"G4\", \"+1\");\n\t */\n\tTone.Param.prototype.setValueAtTime = function(value, time){\n\t\tvalue = this._fromUnits(value);\n\t\ttime = this.toSeconds(time);\n\t\tif (time <= this.now() + this.blockTime){\n\t\t\tthis._param.value = value;\n\t\t} else {\n\t\t\tthis._param.setValueAtTime(value, time);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Creates a schedule point with the current value at the current time.\n\t * This is useful for creating an automation anchor point in order to \n\t * schedule changes from the current value. \n\t *\n\t * @param {number=} now (Optionally) pass the now value in. \n\t * @returns {Tone.Param} this\n\t */\n\tTone.Param.prototype.setRampPoint = function(now){\n\t\tnow = this.defaultArg(now, this.now());\n\t\tvar currentVal = this._param.value;\n\t\t// exponentialRampToValueAt cannot ever ramp from or to 0\n\t\t// More info: https://bugzilla.mozilla.org/show_bug.cgi?id=1125600#c2\n\t\tif (currentVal === 0){\n\t\t\tcurrentVal = this._minOutput;\n\t\t}\n\t\tthis._param.setValueAtTime(currentVal, now);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Schedules a linear continuous change in parameter value from the \n\t * previous scheduled parameter value to the given value.\n\t * \n\t * @param {number} value \n\t * @param {Time} endTime \n\t * @returns {Tone.Param} this\n\t */\n\tTone.Param.prototype.linearRampToValueAtTime = function(value, endTime){\n\t\tvalue = this._fromUnits(value);\n\t\tthis._param.linearRampToValueAtTime(value, this.toSeconds(endTime));\n\t\treturn this;\n\t};\n\n\t/**\n\t * Schedules an exponential continuous change in parameter value from \n\t * the previous scheduled parameter value to the given value.\n\t * \n\t * @param {number} value \n\t * @param {Time} endTime \n\t * @returns {Tone.Param} this\n\t */\n\tTone.Param.prototype.exponentialRampToValueAtTime = function(value, endTime){\n\t\tvalue = this._fromUnits(value);\n\t\tvalue = Math.max(this._minOutput, value);\n\t\tthis._param.exponentialRampToValueAtTime(value, this.toSeconds(endTime));\n\t\treturn this;\n\t};\n\n\t/**\n\t * Schedules an exponential continuous change in parameter value from \n\t * the current time and current value to the given value over the \n\t * duration of the rampTime.\n\t * \n\t * @param {number} value The value to ramp to.\n\t * @param {Time} rampTime the time that it takes the \n\t * value to ramp from it's current value\n\t * @param {Time}\t[startTime=now] \tWhen the ramp should start. \n\t * @returns {Tone.Param} this\n\t * @example\n\t * //exponentially ramp to the value 2 over 4 seconds. \n\t * signal.exponentialRampToValue(2, 4);\n\t */\n\tTone.Param.prototype.exponentialRampToValue = function(value, rampTime, startTime){\n\t\tstartTime = this.toSeconds(startTime);\n\t\tthis.setRampPoint(startTime);\n\t\tthis.exponentialRampToValueAtTime(value, startTime + this.toSeconds(rampTime));\n\t\treturn this;\n\t};\n\n\t/**\n\t * Schedules an linear continuous change in parameter value from \n\t * the current time and current value to the given value over the \n\t * duration of the rampTime.\n\t * \n\t * @param {number} value The value to ramp to.\n\t * @param {Time} rampTime the time that it takes the \n\t * value to ramp from it's current value\n\t * @param {Time}\t[startTime=now] \tWhen the ramp should start. \n\t * @returns {Tone.Param} this\n\t * @example\n\t * //linearly ramp to the value 4 over 3 seconds. \n\t * signal.linearRampToValue(4, 3);\n\t */\n\tTone.Param.prototype.linearRampToValue = function(value, rampTime, startTime){\n\t\tstartTime = this.toSeconds(startTime);\n\t\tthis.setRampPoint(startTime);\n\t\tthis.linearRampToValueAtTime(value, startTime + this.toSeconds(rampTime));\n\t\treturn this;\n\t};\n\n\t/**\n\t * Start exponentially approaching the target value at the given time with\n\t * a rate having the given time constant.\n\t * @param {number} value \n\t * @param {Time} startTime \n\t * @param {number} timeConstant \n\t * @returns {Tone.Param} this \n\t */\n\tTone.Param.prototype.setTargetAtTime = function(value, startTime, timeConstant){\n\t\tvalue = this._fromUnits(value);\n\t\t// The value will never be able to approach without timeConstant > 0.\n\t\t// http://www.w3.org/TR/webaudio/#dfn-setTargetAtTime, where the equation\n\t\t// is described. 0 results in a division by 0.\n\t\tvalue = Math.max(this._minOutput, value);\n\t\ttimeConstant = Math.max(this._minOutput, timeConstant);\n\t\tthis._param.setTargetAtTime(value, this.toSeconds(startTime), timeConstant);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Sets an array of arbitrary parameter values starting at the given time\n\t * for the given duration.\n\t * \t\n\t * @param {Array} values \n\t * @param {Time} startTime \n\t * @param {Time} duration \n\t * @returns {Tone.Param} this\n\t */\n\tTone.Param.prototype.setValueCurveAtTime = function(values, startTime, duration){\n\t\tfor (var i = 0; i < values.length; i++){\n\t\t\tvalues[i] = this._fromUnits(values[i]);\n\t\t}\n\t\tthis._param.setValueCurveAtTime(values, this.toSeconds(startTime), this.toSeconds(duration));\n\t\treturn this;\n\t};\n\n\t/**\n\t * Cancels all scheduled parameter changes with times greater than or \n\t * equal to startTime.\n\t * \n\t * @param {Time} startTime\n\t * @returns {Tone.Param} this\n\t */\n\tTone.Param.prototype.cancelScheduledValues = function(startTime){\n\t\tthis._param.cancelScheduledValues(this.toSeconds(startTime));\n\t\treturn this;\n\t};\n\n\t/**\n\t * Ramps to the given value over the duration of the rampTime. \n\t * Automatically selects the best ramp type (exponential or linear)\n\t * depending on the `units` of the signal\n\t * \n\t * @param {number} value \n\t * @param {Time} rampTime \tThe time that it takes the \n\t * value to ramp from it's current value\n\t * @param {Time}\t[startTime=now] \tWhen the ramp should start. \n\t * @returns {Tone.Param} this\n\t * @example\n\t * //ramp to the value either linearly or exponentially \n\t * //depending on the \"units\" value of the signal\n\t * signal.rampTo(0, 10);\n\t * @example\n\t * //schedule it to ramp starting at a specific time\n\t * signal.rampTo(0, 10, 5)\n\t */\n\tTone.Param.prototype.rampTo = function(value, rampTime, startTime){\n\t\trampTime = this.defaultArg(rampTime, 0);\n\t\tif (this.units === Tone.Type.Frequency || this.units === Tone.Type.BPM || this.units === Tone.Type.Decibels){\n\t\t\tthis.exponentialRampToValue(value, rampTime, startTime);\n\t\t} else {\n\t\t\tthis.linearRampToValue(value, rampTime, startTime);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * The LFO created by the signal instance. If none\n\t * was created, this is null.\n\t * @type {Tone.LFO}\n\t * @readOnly\n\t * @memberOf Tone.Param#\n\t * @name lfo\n\t */\n\tObject.defineProperty(Tone.Param.prototype, \"lfo\", {\n\t\tget : function(){\n\t\t\treturn this._lfo;\n\t\t}\n\t});\n\n\t/**\n\t * Clean up\n\t * @returns {Tone.Param} this\n\t */\n\tTone.Param.prototype.dispose = function(){\n\t\tTone.prototype.dispose.call(this);\n\t\tthis._param = null;\n\t\tif (this._lfo){\n\t\t\tthis._lfo.dispose();\n\t\t\tthis._lfo = null;\n\t\t}\n\t\treturn this;\n\t};\n\n\treturn Tone.Param;\n});","define([\"Tone/core/Tone\", \"Tone/type/Type\"], function (Tone) {\n\n\t\"use strict\";\n\n\t/**\n\t * @class A Timeline class for scheduling and maintaining state\n\t * along a timeline. All events must have a \"time\" property. \n\t * Internally, events are stored in time order for fast \n\t * retrieval.\n\t * @extends {Tone}\n\t * @param {Positive} [memory=Infinity] The number of previous events that are retained.\n\t */\n\tTone.Timeline = function(){\n\n\t\tvar options = this.optionsObject(arguments, [\"memory\"], Tone.Timeline.defaults);\n\n\t\t/**\n\t\t * The array of scheduled timeline events\n\t\t * @type {Array}\n\t\t * @private\n\t\t */\n\t\tthis._timeline = [];\n\n\t\t/**\n\t\t * An array of items to remove from the list. \n\t\t * @type {Array}\n\t\t * @private\n\t\t */\n\t\tthis._toRemove = [];\n\n\t\t/**\n\t\t * Flag if the tieline is mid iteration\n\t\t * @private\n\t\t * @type {Boolean}\n\t\t */\n\t\tthis._iterating = false;\n\n\t\t/**\n\t\t * The memory of the timeline, i.e.\n\t\t * how many events in the past it will retain\n\t\t * @type {Positive}\n\t\t */\n\t\tthis.memory = options.memory;\n\t};\n\n\tTone.extend(Tone.Timeline);\n\n\t/**\n\t * the default parameters\n\t * @static\n\t * @const\n\t */\n\tTone.Timeline.defaults = {\n\t\t\"memory\" : Infinity\n\t};\n\n\t/**\n\t * The number of items in the timeline.\n\t * @type {Number}\n\t * @memberOf Tone.Timeline#\n\t * @name length\n\t * @readOnly\n\t */\n\tObject.defineProperty(Tone.Timeline.prototype, \"length\", {\n\t\tget : function(){\n\t\t\treturn this._timeline.length;\n\t\t}\n\t});\n\n\t/**\n\t * Insert an event object onto the timeline. Events must have a \"time\" attribute.\n\t * @param {Object} event The event object to insert into the \n\t * timeline. \n\t * @returns {Tone.Timeline} this\n\t */\n\tTone.Timeline.prototype.add = function(event){\n\t\t//the event needs to have a time attribute\n\t\tif (this.isUndef(event.time)){\n\t\t\tthrow new Error(\"Tone.Timeline: events must have a time attribute\");\n\t\t}\n\t\tif (this._timeline.length){\n\t\t\tvar index = this._search(event.time);\n\t\t\tthis._timeline.splice(index + 1, 0, event);\n\t\t} else {\n\t\t\tthis._timeline.push(event);\t\t\t\n\t\t}\n\t\t//if the length is more than the memory, remove the previous ones\n\t\tif (this.length > this.memory){\n\t\t\tvar diff = this.length - this.memory;\n\t\t\tthis._timeline.splice(0, diff);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Remove an event from the timeline.\n\t * @param {Object} event The event object to remove from the list.\n\t * @returns {Tone.Timeline} this\n\t */\n\tTone.Timeline.prototype.remove = function(event){\n\t\tif (this._iterating){\n\t\t\tthis._toRemove.push(event);\n\t\t} else {\n\t\t\tvar index = this._timeline.indexOf(event);\n\t\t\tif (index !== -1){\n\t\t\t\tthis._timeline.splice(index, 1);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Get the nearest event whose time is less than or equal to the given time.\n\t * @param {Number} time The time to query.\n\t * @returns {Object} The event object set after that time.\n\t */\n\tTone.Timeline.prototype.get = function(time){\n\t\tvar index = this._search(time);\n\t\tif (index !== -1){\n\t\t\treturn this._timeline[index];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t};\n\n\t/**\n\t * Return the first event in the timeline without removing it\n\t * @returns {Object} The first event object\n\t */\n\tTone.Timeline.prototype.peek = function(){\n\t\treturn this._timeline[0];\n\t};\n\n\t/**\n\t * Return the first event in the timeline and remove it\n\t * @returns {Object} The first event object\n\t */\n\tTone.Timeline.prototype.shift = function(){\n\t\treturn this._timeline.shift();\n\t};\n\n\t/**\n\t * Get the event which is scheduled after the given time.\n\t * @param {Number} time The time to query.\n\t * @returns {Object} The event object after the given time\n\t */\n\tTone.Timeline.prototype.getAfter = function(time){\n\t\tvar index = this._search(time);\n\t\tif (index + 1 < this._timeline.length){\n\t\t\treturn this._timeline[index + 1];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t};\n\n\t/**\n\t * Get the event before the event at the given time.\n\t * @param {Number} time The time to query.\n\t * @returns {Object} The event object before the given time\n\t */\n\tTone.Timeline.prototype.getBefore = function(time){\n\t\tvar len = this._timeline.length;\n\t\t//if it's after the last item, return the last item\n\t\tif (len > 0 && this._timeline[len - 1].time < time){\n\t\t\treturn this._timeline[len - 1];\n\t\t}\n\t\tvar index = this._search(time);\n\t\tif (index - 1 >= 0){\n\t\t\treturn this._timeline[index - 1];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t};\n\n\t/**\n\t * Cancel events after the given time\n\t * @param {Number} time The time to query.\n\t * @returns {Tone.Timeline} this\n\t */\n\tTone.Timeline.prototype.cancel = function(after){\n\t\tif (this._timeline.length > 1){\n\t\t\tvar index = this._search(after);\n\t\t\tif (index >= 0){\n\t\t\t\tif (this._timeline[index].time === after){\n\t\t\t\t\t//get the first item with that time\n\t\t\t\t\tfor (var i = index; i >= 0; i--){\n\t\t\t\t\t\tif (this._timeline[i].time === after){\n\t\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis._timeline = this._timeline.slice(0, index);\n\t\t\t\t} else {\n\t\t\t\t\tthis._timeline = this._timeline.slice(0, index + 1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._timeline = [];\n\t\t\t}\n\t\t} else if (this._timeline.length === 1){\n\t\t\t//the first item's time\n\t\t\tif (this._timeline[0].time >= after){\n\t\t\t\tthis._timeline = [];\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Cancel events before or equal to the given time.\n\t * @param {Number} time The time to cancel before.\n\t * @returns {Tone.Timeline} this\n\t */\n\tTone.Timeline.prototype.cancelBefore = function(time){\n\t\tif (this._timeline.length){\n\t\t\tvar index = this._search(time);\n\t\t\tif (index >= 0){\n\t\t\t\tthis._timeline = this._timeline.slice(index + 1);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Does a binary serach on the timeline array and returns the \n\t * nearest event index whose time is after or equal to the given time.\n\t * If a time is searched before the first index in the timeline, -1 is returned.\n\t * If the time is after the end, the index of the last item is returned.\n\t * @param {Number} time \n\t * @return {Number} the index in the timeline array \n\t * @private\n\t */\n\tTone.Timeline.prototype._search = function(time){\n\t\tvar beginning = 0;\n\t\tvar len = this._timeline.length;\n\t\tvar end = len;\n\t\tif (len > 0 && this._timeline[len - 1].time <= time){\n\t\t\treturn len - 1;\n\t\t}\n\t\twhile (beginning < end){\n\t\t\t// calculate the midpoint for roughly equal partition\n\t\t\tvar midPoint = Math.floor(beginning + (end - beginning) / 2);\n\t\t\tvar event = this._timeline[midPoint];\n\t\t\tvar nextEvent = this._timeline[midPoint + 1];\n\t\t\tif (event.time === time){\n\t\t\t\t//choose the last one that has the same time\n\t\t\t\tfor (var i = midPoint; i < this._timeline.length; i++){\n\t\t\t\t\tvar testEvent = this._timeline[i];\n\t\t\t\t\tif (testEvent.time === time){\n\t\t\t\t\t\tmidPoint = i;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn midPoint;\n\t\t\t} else if (event.time < time && nextEvent.time > time){\n\t\t\t\treturn midPoint;\n\t\t\t} else if (event.time > time){\n\t\t\t\t//search lower\n\t\t\t\tend = midPoint;\n\t\t\t} else if (event.time < time){\n\t\t\t\t//search upper\n\t\t\t\tbeginning = midPoint + 1;\n\t\t\t} \n\t\t}\n\t\treturn -1;\n\t};\n\n\t/**\n\t * Internal iterator. Applies extra safety checks for \n\t * removing items from the array. \n\t * @param {Function} callback \n\t * @param {Number=} lowerBound \n\t * @param {Number=} upperBound \n\t * @private\n\t */\n\tTone.Timeline.prototype._iterate = function(callback, lowerBound, upperBound){\n\t\tthis._iterating = true;\n\t\tlowerBound = this.defaultArg(lowerBound, 0);\n\t\tupperBound = this.defaultArg(upperBound, this._timeline.length - 1);\n\t\tfor (var i = lowerBound; i <= upperBound; i++){\n\t\t\tcallback(this._timeline[i]);\n\t\t}\n\t\tthis._iterating = false;\n\t\tif (this._toRemove.length > 0){\n\t\t\tfor (var j = 0; j < this._toRemove.length; j++){\n\t\t\t\tvar index = this._timeline.indexOf(this._toRemove[j]);\n\t\t\t\tif (index !== -1){\n\t\t\t\t\tthis._timeline.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._toRemove = [];\n\t\t}\n\t};\n\n\t/**\n\t * Iterate over everything in the array\n\t * @param {Function} callback The callback to invoke with every item\n\t * @returns {Tone.Timeline} this\n\t */\n\tTone.Timeline.prototype.forEach = function(callback){\n\t\tthis._iterate(callback);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Iterate over everything in the array at or before the given time.\n\t * @param {Number} time The time to check if items are before\n\t * @param {Function} callback The callback to invoke with every item\n\t * @returns {Tone.Timeline} this\n\t */\n\tTone.Timeline.prototype.forEachBefore = function(time, callback){\n\t\t//iterate over the items in reverse so that removing an item doesn't break things\n\t\tvar upperBound = this._search(time);\n\t\tif (upperBound !== -1){\n\t\t\tthis._iterate(callback, 0, upperBound);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Iterate over everything in the array after the given time.\n\t * @param {Number} time The time to check if items are before\n\t * @param {Function} callback The callback to invoke with every item\n\t * @returns {Tone.Timeline} this\n\t */\n\tTone.Timeline.prototype.forEachAfter = function(time, callback){\n\t\t//iterate over the items in reverse so that removing an item doesn't break things\n\t\tvar lowerBound = this._search(time);\n\t\tthis._iterate(callback, lowerBound + 1);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Iterate over everything in the array at or after the given time. Similar to \n\t * forEachAfter, but includes the item(s) at the given time.\n\t * @param {Number} time The time to check if items are before\n\t * @param {Function} callback The callback to invoke with every item\n\t * @returns {Tone.Timeline} this\n\t */\n\tTone.Timeline.prototype.forEachFrom = function(time, callback){\n\t\t//iterate over the items in reverse so that removing an item doesn't break things\n\t\tvar lowerBound = this._search(time);\n\t\t//work backwards until the event time is less than time\n\t\twhile (lowerBound >= 0 && this._timeline[lowerBound].time >= time){\n\t\t\tlowerBound--;\n\t\t}\n\t\tthis._iterate(callback, lowerBound + 1);\n\t\treturn this;\n\t};\n\n\t/**\n\t * Iterate over everything in the array at the given time\n\t * @param {Number} time The time to check if items are before\n\t * @param {Function} callback The callback to invoke with every item\n\t * @returns {Tone.Timeline} this\n\t */\n\tTone.Timeline.prototype.forEachAtTime = function(time, callback){\n\t\t//iterate over the items in reverse so that removing an item doesn't break things\n\t\tvar upperBound = this._search(time);\n\t\tif (upperBound !== -1){\n\t\t\tthis._iterate(function(event){\n\t\t\t\tif (event.time === time){\n\t\t\t\t\tcallback(event);\n\t\t\t\t} \n\t\t\t}, 0, upperBound);\n\t\t}\n\t\treturn this;\n\t};\n\n\t/**\n\t * Clean up.\n\t * @return {Tone.Timeline} this\n\t */\n\tTone.Timeline.prototype.dispose = function(){\n\t\tTone.prototype.dispose.call(this);\n\t\tthis._timeline = null;\n\t\tthis._toRemove = null;\n\t};\n\n\treturn Tone.Timeline;\n});","define([\"Tone/core/Tone\", \"Tone/signal/Multiply\", \"Tone/signal/Signal\"], function(Tone){\n\n\t\"use strict\";\n\n\t/**\n\t * @class Negate the incoming signal. i.e. an input signal of 10 will output -10\n\t *\n\t * @constructor\n\t * @extends {Tone.SignalBase}\n\t * @example\n\t * var neg = new Tone.Negate();\n\t * var sig = new Tone.Signal(-2).connect(neg);\n\t * //output of neg is positive 2. \n\t */\n\tTone.Negate = function(){\n\t\t/**\n\t\t * negation is done by multiplying by -1\n\t\t * @type {Tone.Multiply}\n\t\t * @private\n\t\t */\n\t\tthis._multiply = this.input = this.output = new Tone.Multiply(-1);\n\t};\n\n\tTone.extend(Tone.Negate, Tone.SignalBase);\n\n\t/**\n\t * clean up\n\t * @returns {Tone.Negate} this\n\t */\n\tTone.Negate.prototype.dispose = function(){\n\t\tTone.prototype.dispose.call(this);\n\t\tthis._multiply.dispose();\n\t\tthis._multiply = null;\n\t\treturn this;\n\t}; \n\n\treturn Tone.Negate;\n});","define([\"Tone/core/Tone\", \"Tone/signal/Signal\", \"Tone/signal/Multiply\", \"Tone/signal/WaveShaper\"], \nfunction(Tone){\n\n\t\"use strict\";\n\n\t/**\n\t * @class GreaterThanZero outputs 1 when the input is strictly greater than zero\n\t * \n\t * @constructor\n\t * @extends {Tone.SignalBase}\n\t * @example\n\t * var gt0 = new Tone.GreaterThanZero();\n\t * var sig = new Tone.Signal(0.01).connect(gt0);\n\t * //the output of gt0 is 1. \n\t * sig.value = 0;\n\t * //the output of gt0 is 0. \n\t */\n\tTone.GreaterThanZero = function(){\n\t\t\n\t\t/**\n\t\t * @type {Tone.WaveShaper}\n\t\t * @private\n\t\t */\n\t\tthis._thresh = this.output = new Tone.WaveShaper(function(val){\n\t\t\tif (val <= 0){\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}, 127);\n\n\t\t/**\n\t\t * scale the first thresholded signal by a large value.\n\t\t * this will help with values which are very close to 0\n\t\t * @type {Tone.Multiply}\n\t\t * @private\n\t\t */\n\t\tthis._scale = this.input = new Tone.Multiply(10000);\n\n\t\t//connections\n\t\tthis._scale.connect(this._thresh);\n\t};\n\n\tTone.extend(Tone.GreaterThanZero, Tone.SignalBase);\n\n\t/**\n\t * dispose method\n\t * @returns {Tone.GreaterThanZero} this\n\t */\n\tTone.GreaterThanZero.prototype.dispose = function(){\n\t\tTone.prototype.dispose.call(this);\n\t\tthis._scale.dispose();\n\t\tthis._scale = null;\n\t\tthis._thresh.dispose();\n\t\tthis._thresh = null;\n\t\treturn this;\n\t};\n\n\treturn Tone.GreaterThanZero;\n});","/**\n * StartAudioContext.js\n * @author Yotam Mann\n * @license http://opensource.org/licenses/MIT MIT License\n * @copyright 2016 Yotam Mann\n */\n(function (root, factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\tdefine([], factory)\n\t } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory()\n\t} else {\n\t\troot.StartAudioContext = factory()\n }\n}(this, function () {\n\n\t//TAP LISTENER/////////////////////////////////////////////////////////////\n\n\t/**\n\t * @class Listens for non-dragging tap ends on the given element\n\t * @param {Element} element\n\t * @internal\n\t */\n\tvar TapListener = function(element, context){\n\n\t\tthis._dragged = false\n\n\t\tthis._element = element\n\n\t\tthis._bindedMove = this._moved.bind(this)\n\t\tthis._bindedEnd = this._ended.bind(this, context)\n\n\t\telement.addEventListener(\"touchstart\", this._bindedEnd)\n\t\telement.addEventListener(\"touchmove\", this._bindedMove)\n\t\telement.addEventListener(\"touchend\", this._bindedEnd)\n\t\telement.addEventListener(\"mouseup\", this._bindedEnd)\n\t}\n\n\t/**\n\t * drag move event\n\t */\n\tTapListener.prototype._moved = function(e){\n\t\tthis._dragged = true\n\t};\n\n\t/**\n\t * tap ended listener\n\t */\n\tTapListener.prototype._ended = function(context){\n\t\tif (!this._dragged){\n\t\t\tstartContext(context)\n\t\t}\n\t\tthis._dragged = false\n\t};\n\n\t/**\n\t * remove all the bound events\n\t */\n\tTapListener.prototype.dispose = function(){\n\t\tthis._element.removeEventListener(\"touchstart\", this._bindedEnd)\n\t\tthis._element.removeEventListener(\"touchmove\", this._bindedMove)\n\t\tthis._element.removeEventListener(\"touchend\", this._bindedEnd)\n\t\tthis._element.removeEventListener(\"mouseup\", this._bindedEnd)\n\t\tthis._bindedMove = null\n\t\tthis._bindedEnd = null\n\t\tthis._element = null\n\t};\n\n\t//END TAP LISTENER/////////////////////////////////////////////////////////\n\n\t/**\n\t * Plays a silent sound and also invoke the \"resume\" method\n\t * @param {AudioContext} context\n\t * @private\n\t */\n\tfunction startContext(context){\n\t\t// this accomplishes the iOS specific requirement\n\t\tvar buffer = context.createBuffer(1, 1, context.sampleRate)\n\t\tvar source = context.createBufferSource()\n\t\tsource.buffer = buffer\n\t\tsource.connect(context.destination)\n\t\tsource.start(0)\n\n\t\t// resume the audio context\n\t\tif (context.resume){\n\t\t\tcontext.resume()\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if the audio context is started\n\t * @param {AudioContext} context\n\t * @return {Boolean}\n\t * @private\n\t */\n\tfunction isStarted(context){\n\t\t return context.state === \"running\"\n\t}\n\n\t/**\n\t * Invokes the callback as soon as the AudioContext\n\t * is started\n\t * @param {AudioContext} context\n\t * @param {Function} callback\n\t */\n\tfunction onStarted(context, callback){\n\n\t\tfunction checkLoop(){\n\t\t\tif (isStarted(context)){\n\t\t\t\tcallback()\n\t\t\t} else {\n\t\t\t\trequestAnimationFrame(checkLoop)\n\t\t\t\tif (context.resume){\n\t\t\t\t\tcontext.resume()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (isStarted(context)){\n\t\t\tcallback()\n\t\t} else {\n\t\t\tcheckLoop()\n\t\t}\n\t}\n\n\t/**\n\t * Add a tap listener to the audio context\n\t * @param {Array|Element|String|jQuery} element\n\t * @param {Array} tapListeners\n\t */\n\tfunction bindTapListener(element, tapListeners, context){\n\t\tif (Array.isArray(element) || (NodeList && element instanceof NodeList)){\n\t\t\tfor (var i = 0; i < element.length; i++){\n\t\t\t\tbindTapListener(element[i], tapListeners, context)\n\t\t\t}\n\t\t} else if (typeof element === \"string\"){\n\t\t\tbindTapListener(document.querySelectorAll(element), tapListeners, context)\n\t\t} else if (element.jquery && typeof element.toArray === \"function\"){\n\t\t\tbindTapListener(element.toArray(), tapListeners, context)\n\t\t} else if (Element && element instanceof Element){\n\t\t\t//if it's an element, create a TapListener\n\t\t\tvar tap = new TapListener(element, context)\n\t\t\ttapListeners.push(tap)\n\t\t} \n\t}\n\n\t/**\n\t * @param {AudioContext} context The AudioContext to start.\n\t * @param {Array|String|Element|jQuery=} elements For iOS, the list of elements\n\t * to bind tap event listeners\n\t * which will start the AudioContext. If\n\t * no elements are given, it will bind\n\t * to the document.body.\n\t * @param {Function=} callback The callback to invoke when the AudioContext is started.\n\t * @return {Promise} The promise is invoked when the AudioContext\n\t * is started.\n\t */\n\tfunction StartAudioContext(context, elements, callback){\n\n\t\t//the promise is invoked when the AudioContext is started\n\t\tvar promise = new Promise(function(success) {\n\t\t\tonStarted(context, success)\n\t\t})\n\n\t\t// The TapListeners bound to the elements\n\t\tvar tapListeners = []\n\n\t\t// add all the tap listeners\n\t\tif (!elements){\n\t\t\telements = document.body\n\t\t}\n\t\tbindTapListener(elements, tapListeners, context)\n\n\t\t//dispose all these tap listeners when the context is started\n\t\tpromise.then(function(){\n\t\t\tfor (var i = 0; i < tapListeners.length; i++){\n\t\t\t\ttapListeners[i].dispose()\n\t\t\t}\n\t\t\ttapListeners = null\n\n\t\t\tif (callback){\n\t\t\t\tcallback()\n\t\t\t}\n\t\t})\n\n\t\treturn promise\n\t}\n\n\treturn StartAudioContext\n}))","define([\"Tone/core/Tone\", \"Tone/signal/Signal\", \"Tone/signal/Expr\", \n\t\"Tone/signal/EqualPowerGain\", \"Tone/core/Gain\"], function(Tone){\n\n\t\"use strict\";\n\n\t/**\n\t * @class Tone.Crossfade provides equal power fading between two inputs. \n\t * More on crossfading technique [here](https://en.wikipedia.org/wiki/Fade_(audio_engineering)#Crossfading).\n\t *\n\t * @constructor\n\t * @extends {Tone}\n\t * @param {NormalRange} [initialFade=0.5]\n\t * @example\n\t * var crossFade = new Tone.CrossFade(0.5);\n\t * //connect effect A to crossfade from\n\t * //effect output 0 to crossfade input 0\n\t * effectA.connect(crossFade, 0, 0);\n\t * //connect effect B to crossfade from\n\t * //effect output 0 to crossfade input 1\n\t * effectB.connect(crossFade, 0, 1);\n\t * crossFade.fade.value = 0;\n\t * // ^ only effectA is output\n\t * crossFade.fade.value = 1;\n\t * // ^ only effectB is output\n\t * crossFade.fade.value = 0.5;\n\t * // ^ the two signals are mixed equally. \n\t */\t\t\n\tTone.CrossFade = function(initialFade){\n\n\t\tthis.createInsOuts(2, 1);\n\n\t\t/**\n\t\t * Alias for input[0]
. \n\t\t * @type {Tone.Gain}\n\t\t */\n\t\tthis.a = this.input[0] = new Tone.Gain();\n\n\t\t/**\n\t\t * Alias for input[1]
. \n\t\t * @type {Tone.Gain}\n\t\t */\n\t\tthis.b = this.input[1] = new Tone.Gain();\n\n\t\t/**\n\t\t * \tThe mix between the two inputs. A fade value of 0\n\t\t * \twill output 100% input[0]
and \n\t\t * \ta value of 1 will output 100% input[1]
. \n\t\t * @type {NormalRange}\n\t\t * @signal\n\t\t */\n\t\tthis.fade = new Tone.Signal(this.defaultArg(initialFade, 0.5), Tone.Type.NormalRange);\n\n\t\t/**\n\t\t * equal power gain cross fade\n\t\t * @private\n\t\t * @type {Tone.EqualPowerGain}\n\t\t */\n\t\tthis._equalPowerA = new Tone.EqualPowerGain();\n\n\t\t/**\n\t\t * equal power gain cross fade\n\t\t * @private\n\t\t * @type {Tone.EqualPowerGain}\n\t\t */\n\t\tthis._equalPowerB = new Tone.EqualPowerGain();\n\t\t\n\t\t/**\n\t\t * invert the incoming signal\n\t\t * @private\n\t\t * @type {Tone}\n\t\t */\n\t\tthis._invert = new Tone.Expr(\"1 - $0\");\n\n\t\t//connections\n\t\tthis.a.connect(this.output);\n\t\tthis.b.connect(this.output);\n\t\tthis.fade.chain(this._equalPowerB, this.b.gain);\n\t\tthis.fade.chain(this._invert, this._equalPowerA, this.a.gain);\n\t\tthis._readOnly(\"fade\");\n\t};\n\n\tTone.extend(Tone.CrossFade);\n\n\t/**\n\t * clean up\n\t * @returns {Tone.CrossFade} this\n\t */\n\tTone.CrossFade.prototype.dispose = function(){\n\t\tTone.prototype.dispose.call(this);\n\t\tthis._writable(\"fade\");\n\t\tthis._equalPowerA.dispose();\n\t\tthis._equalPowerA = null;\n\t\tthis._equalPowerB.dispose();\n\t\tthis._equalPowerB = null;\n\t\tthis.fade.dispose();\n\t\tthis.fade = null;\n\t\tthis._invert.dispose();\n\t\tthis._invert = null;\n\t\tthis.a.dispose();\n\t\tthis.a = null;\n\t\tthis.b.dispose();\n\t\tthis.b = null;\n\t\treturn this;\n\t};\n\n\treturn Tone.CrossFade;\n});\n","!function(){var e,t=[];function r(e){var r=this,n={},i=-1;this.parameters.forEach(function(e,o){var s=t[++i]||(t[i]=new Float32Array(r.bufferSize));s.fill(e.value),n[o]=s}),this.processor.realm.exec(\"self.sampleRate=sampleRate=\"+this.context.sampleRate+\";self.currentTime=currentTime=\"+this.context.currentTime);var s=o(e.inputBuffer),a=o(e.outputBuffer);this.instance.process([s],[a],n)}function o(e){for(var t=[],r=0;rsetStateAtTime(\"state\", time)
\n\t * and getValueAtTime(time)
.\n\t *\n\t * @extends {Tone.Timeline}\n\t * @param {String} initial The initial state of the TimelineState. \n\t * Defaults to undefined
\n\t */\n\tTone.TimelineState = function(initial){\n\n\t\tTone.Timeline.call(this);\n\n\t\t/**\n\t\t * The initial state\n\t\t * @private\n\t\t * @type {String}\n\t\t */\n\t\tthis._initial = initial;\n\t};\n\n\tTone.extend(Tone.TimelineState, Tone.Timeline);\n\n\t/**\n\t * Returns the scheduled state scheduled before or at\n\t * the given time.\n\t * @param {Number} time The time to query.\n\t * @return {String} The name of the state input in setStateAtTime.\n\t */\n\tTone.TimelineState.prototype.getValueAtTime = function(time){\n\t\tvar event = this.get(time);\n\t\tif (event !== null){\n\t\t\treturn event.state;\n\t\t} else {\n\t\t\treturn this._initial;\n\t\t}\n\t};\n\n\t/**\n\t * Returns the scheduled state scheduled before or at\n\t * the given time.\n\t * @param {String} state The name of the state to set.\n\t * @param {Number} time The time to query.\n\t */\n\tTone.TimelineState.prototype.setStateAtTime = function(state, time){\n\t\tthis.add({\n\t\t\t\"state\" : state,\n\t\t\t\"time\" : time\n\t\t});\n\t};\n\n\treturn Tone.TimelineState;\n});","import audiocontext from './audiocontext.js';\n\n// P5Sound contains the final sound output bus.\nclass Main {\n constructor() {\n this.input = audiocontext.createGain();\n this.output = audiocontext.createGain();\n\n //put a hard limiter on the output\n this.limiter = audiocontext.createDynamicsCompressor();\n this.limiter.threshold.value = -3;\n this.limiter.ratio.value = 20;\n this.limiter.knee.value = 1;\n\n this.audiocontext = audiocontext;\n\n this.output.disconnect();\n\n // connect input to limiter\n this.input.connect(this.limiter);\n\n // connect limiter to output\n this.limiter.connect(this.output);\n\n // meter is just for global Amplitude / FFT analysis\n this.meter = audiocontext.createGain();\n this.fftMeter = audiocontext.createGain();\n this.output.connect(this.meter);\n this.output.connect(this.fftMeter);\n\n // connect output to destination\n this.output.connect(this.audiocontext.destination);\n\n // an array of all sounds in the sketch\n this.soundArray = [];\n // an array of all musical parts in the sketch\n this.parts = [];\n\n // file extensions to search for\n this.extensions = [];\n }\n}\n\n// create a single instance of the p5Sound main output for use within this sketch\nconst p5sound = new Main();\n\n/**\n * Returns a number representing the output volume for sound\n * in this sketch.\n *\n * @method getOutputVolume\n * @return {Number} Output volume for sound in this sketch.\n * Should be between 0.0 (silence) and 1.0.\n */\np5.prototype.getOutputVolume = function () {\n return p5sound.output.gain.value;\n};\n\n/**\n * Scale the output of all sound in this sketch
\n * Scaled between 0.0 (silence) and 1.0 (full volume).\n * 1.0 is the maximum amplitude of a digital sound, so multiplying\n * by greater than 1.0 may cause digital distortion. To\n * fade, provide arampTime
parameter. For more\n * complex fades, see the Envelope class.\n *\n * Alternately, you can pass in a signal source such as an\n * oscillator to modulate the amplitude with an audio signal.\n *\n * How This Works: When you load the p5.sound module, it\n * creates a single instance of p5sound. All sound objects in this\n * module output to p5sound before reaching your computer's output.\n * So if you change the amplitude of p5sound, it impacts all of the\n * sound in this module.
\n *\n *If no value is provided, returns a Web Audio API Gain Node
\n *\n * @method outputVolume\n * @param {Number|Object} volume Volume (amplitude) between 0.0\n * and 1.0 or modulating signal/oscillator\n * @param {Number} [rampTime] Fade for t seconds\n * @param {Number} [timeFromNow] Schedule this event to happen at\n * t seconds in the future\n */\np5.prototype.outputVolume = function (vol, rampTime = 0, tFromNow = 0) {\n if (typeof vol === 'number') {\n var now = p5sound.audiocontext.currentTime;\n var currentVol = p5sound.output.gain.value;\n p5sound.output.gain.cancelScheduledValues(now + tFromNow);\n p5sound.output.gain.linearRampToValueAtTime(currentVol, now + tFromNow);\n p5sound.output.gain.linearRampToValueAtTime(vol, now + tFromNow + rampTime);\n } else if (vol) {\n vol.connect(p5sound.output.gain);\n } else {\n // return the Gain Node\n return p5sound.output.gain;\n }\n};\n\n/**\n * `p5.soundOut` is the p5.sound final output bus. It sends output to\n * the destination of this window's web audio context. It contains\n * Web Audio API nodes including a dyanmicsCompressor (.limiter
),\n * and Gain Nodes for .input
and .output
.\n *\n * @property {Object} soundOut\n */\np5.prototype.soundOut = p5.soundOut = p5sound;\n\n// a silent connection to the DesinationNode\n// which will ensure that anything connected to it\n// will not be garbage collected\np5.soundOut._silentNode = p5sound.audiocontext.createGain();\np5.soundOut._silentNode.gain.value = 0;\np5.soundOut._silentNode.connect(p5sound.audiocontext.destination);\n\nexport default p5sound;\n","import p5sound from './main';\nimport processorNames from './audioWorklet/processorNames';\n/**\n * @for p5\n */\n\n/**\n * Returns a number representing the sample rate, in samples per second,\n * of all sound objects in this audio context. It is determined by the\n * sampling rate of your operating system's sound card, and it is not\n * currently possile to change.\n * It is often 44100, or twice the range of human hearing.\n *\n * @method sampleRate\n * @return {Number} samplerate samples per second\n */\nfunction sampleRate() {\n return p5sound.audiocontext.sampleRate;\n}\n\n/**\n * Returns the closest MIDI note value for\n * a given frequency.\n *\n * @method freqToMidi\n * @param {Number} frequency A freqeuncy, for example, the \"A\"\n * above Middle C is 440Hz\n * @return {Number} MIDI note value\n */\nfunction freqToMidi(f) {\n var mathlog2 = Math.log(f / 440) / Math.log(2);\n var m = Math.round(12 * mathlog2) + 69;\n return m;\n}\n\n/**\n * Returns the frequency value of a MIDI note value.\n * General MIDI treats notes as integers where middle C\n * is 60, C# is 61, D is 62 etc. Useful for generating\n * musical frequencies with oscillators.\n *\n * @method midiToFreq\n * @param {Number} midiNote The number of a MIDI note\n * @return {Number} Frequency value of the given MIDI note\n * @example\n * \n * let midiNotes = [60, 64, 67, 72];\n * let noteIndex = 0;\n * let midiVal, freq;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(startSound);\n * osc = new p5.TriOsc();\n * env = new p5.Envelope();\n * }\n *\n * function draw() {\n * background(220);\n * text('tap to play', 10, 20);\n * if (midiVal) {\n * text('MIDI: ' + midiVal, 10, 40);\n * text('Freq: ' + freq, 10, 60);\n * }\n * }\n *\n * function startSound() {\n * // see also: userStartAudio();\n * osc.start();\n *\n * midiVal = midiNotes[noteIndex % midiNotes.length];\n * freq = midiToFreq(midiVal);\n * osc.freq(freq);\n * env.ramp(osc, 0, 1.0, 0);\n *\n * noteIndex++;\n * }\n *
\n * function preload() {\n * // set the global sound formats\n * soundFormats('mp3', 'ogg');\n *\n * // load either beatbox.mp3, or .ogg, depending on browser\n * mySound = loadSound('assets/beatbox.mp3');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * background(220);\n * text('sound loaded! tap to play', 10, 20, width - 20);\n * cnv.mousePressed(function() {\n * mySound.play();\n * });\n * }\n *
SoundFile object with a path to a file.
\n *\n *The p5.SoundFile may not be available immediately because\n * it loads the file information asynchronously.
\n *\n *To do something with the sound as soon as it loads\n * pass the name of a function as the second parameter.
\n *\n *Only one file path is required. However, audio file formats\n * (i.e. mp3, ogg, wav and m4a/aac) are not supported by all\n * web browsers. If you want to ensure compatability, instead of a single\n * file path, you may include an Array of filepaths, and the browser will\n * choose a format that works.
\n *\n * @class p5.SoundFile\n * @constructor\n * @param {String|Array} path path to a sound file (String). Optionally,\n * you may include multiple file formats in\n * an array. Alternately, accepts an object\n * from the HTML5 File API, or a p5.File.\n * @param {Function} [successCallback] Name of a function to call once file loads\n * @param {Function} [errorCallback] Name of a function to call if file fails to\n * load. This function will receive an error or\n * XMLHttpRequest object with information\n * about what went wrong.\n * @param {Function} [whileLoadingCallback] Name of a function to call while file\n * is loading. That function will\n * receive progress of the request to\n * load the sound file\n * (between 0 and 1) as its first\n * parameter. This progress\n * does not account for the additional\n * time needed to decode the audio data.\n *\n * @example\n *\n * let mySound;\n * function preload() {\n * soundFormats('mp3', 'ogg');\n * mySound = loadSound('assets/doorbell');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(canvasPressed);\n * background(220);\n * text('tap here to play', 10, 20);\n * }\n *\n * function canvasPressed() {\n * // playing a sound file on a user gesture\n * // is equivalent to `userStartAudio()`\n * mySound.play();\n * }\n *
restart
and\n * sustain
. Play Mode determines what happens to a\n * p5.SoundFile if it is triggered while in the middle of playback.\n * In sustain mode, playback will continue simultaneous to the\n * new playback. In restart mode, play() will stop playback\n * and start over. With untilDone, a sound will play only if it's\n * not already playing. Sustain is the default mode.\n *\n * @method playMode\n * @for p5.SoundFile\n * @param {String} str 'restart' or 'sustain' or 'untilDone'\n * @example\n * \n * let mySound;\n * function preload(){\n * mySound = loadSound('assets/Damscray_DancingTiger.mp3');\n * }\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(canvasPressed);\n * noFill();\n * rect(0, height/2, width - 1, height/2 - 1);\n * rect(0, 0, width - 1, height/2);\n * textAlign(CENTER, CENTER);\n * fill(20);\n * text('restart', width/2, 1 * height/4);\n * text('sustain', width/2, 3 * height/4);\n * }\n * function canvasPressed() {\n * if (mouseX < height/2) {\n * mySound.playMode('restart');\n * } else {\n * mySound.playMode('sustain');\n * }\n * mySound.play();\n * }\n *\n *
\n * let soundFile;\n * function preload() {\n * soundFormats('ogg', 'mp3');\n * soundFile = loadSound('assets/Damscray_-_Dancing_Tiger_02.mp3');\n * }\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(canvasPressed);\n * background(220);\n * text('tap to play, release to pause', 10, 20, width - 20);\n * }\n * function canvasPressed() {\n * soundFile.loop();\n * background(0, 200, 50);\n * }\n * function mouseReleased() {\n * soundFile.pause();\n * background(220);\n * }\n *
\n * \n * let soundFile;\n * let loopStart = 0.5;\n * let loopDuration = 0.2;\n * function preload() {\n * soundFormats('ogg', 'mp3');\n * soundFile = loadSound('assets/Damscray_-_Dancing_Tiger_02.mp3');\n * }\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(canvasPressed);\n * background(220);\n * text('tap to play, release to pause', 10, 20, width - 20);\n * }\n * function canvasPressed() {\n * soundFile.loop();\n * background(0, 200, 50);\n * }\n * function mouseReleased() {\n * soundFile.pause();\n * background(220);\n * }\n *
\n * \n * let ballX = 0;\n * let soundFile;\n *\n * function preload() {\n * soundFormats('ogg', 'mp3');\n * soundFile = loadSound('assets/beatbox.mp3');\n * }\n *\n * function draw() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(canvasPressed);\n * background(220);\n * ballX = constrain(mouseX, 0, width);\n * ellipse(ballX, height/2, 20, 20);\n * }\n *\n * function canvasPressed(){\n * // map the ball's x location to a panning degree\n * // between -1.0 (left) and 1.0 (right)\n * let panning = map(ballX, 0., width,-1.0, 1.0);\n * soundFile.pan(panning);\n * soundFile.play();\n * }\n *
\n * let mySound;\n *\n * function preload() {\n * mySound = loadSound('assets/Damscray_DancingTiger.mp3');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(canvasPressed);\n * }\n * function canvasPressed() {\n * mySound.loop();\n * }\n * function mouseReleased() {\n * mySound.pause();\n * }\n * function draw() {\n * background(220);\n *\n * // Set the rate to a range between 0.1 and 4\n * // Changing the rate also alters the pitch\n * let playbackRate = map(mouseY, 0.1, height, 2, 0);\n * playbackRate = constrain(playbackRate, 0.01, 4);\n * mySound.rate(playbackRate);\n *\n * line(0, mouseY, width, mouseY);\n * text('rate: ' + round(playbackRate * 100) + '%', 10, 20);\n * }\n *\n *
\n * rampTime
parameter. For more\n * complex fades, see the Envelope class.\n *\n * Alternately, you can pass in a signal source such as an\n * oscillator to modulate the amplitude with an audio signal.\n *\n * @method setVolume\n * @for p5.SoundFile\n * @param {Number|Object} volume Volume (amplitude) between 0.0\n * and 1.0 or modulating signal/oscillator\n * @param {Number} [rampTime] Fade for t seconds\n * @param {Number} [timeFromNow] Schedule this event to happen at\n * t seconds in the future\n */\n setVolume(vol, _rampTime, _tFromNow) {\n if (typeof vol === 'number') {\n var rampTime = _rampTime || 0;\n var tFromNow = _tFromNow || 0;\n var now = p5sound.audiocontext.currentTime;\n var currentVol = this.output.gain.value;\n this.output.gain.cancelScheduledValues(now + tFromNow);\n this.output.gain.linearRampToValueAtTime(currentVol, now + tFromNow);\n this.output.gain.linearRampToValueAtTime(vol, now + tFromNow + rampTime);\n } else if (vol) {\n vol.connect(this.output.gain);\n } else {\n // return the Gain Node\n return this.output.gain;\n }\n }\n /**\n * Returns the duration of a sound file in seconds.\n *\n * @method duration\n * @for p5.SoundFile\n * @return {Number} The duration of the soundFile in seconds.\n */\n duration() {\n // Return Duration\n if (this.buffer) {\n return this.buffer.duration;\n } else {\n return 0;\n }\n }\n\n /**\n * Return the current position of the p5.SoundFile playhead, in seconds.\n * Time is relative to the normal buffer direction, so if `reverseBuffer`\n * has been called, currentTime will count backwards.\n *\n * @method currentTime\n * @for p5.SoundFile\n * @return {Number} currentTime of the soundFile in seconds.\n */\n currentTime() {\n return this.reversed\n ? Math.abs(this._lastPos - this.buffer.length) / ac.sampleRate\n : this._lastPos / ac.sampleRate;\n }\n\n /**\n * Move the playhead of a soundfile that is currently playing to a\n * new position and a new duration, in seconds.\n * If none are given, will reset the file to play entire duration\n * from start to finish. To set the position of a soundfile that is\n * not currently playing, use the `play` or `loop` methods.\n *\n * @method jump\n * @for p5.SoundFile\n * @param {Number} cueTime cueTime of the soundFile in seconds.\n * @param {Number} duration duration in seconds.\n */\n jump(cueTime, duration) {\n if (cueTime < 0 || cueTime > this.buffer.duration) {\n throw 'jump time out of range';\n }\n if (duration > this.buffer.duration - cueTime) {\n throw 'end time out of range';\n }\n\n var cTime = cueTime || 0;\n var dur = duration || undefined;\n if (this.isPlaying()) {\n this.stop(0);\n this.play(0, this.playbackRate, this.output.gain.value, cTime, dur);\n }\n }\n\n /**\n * Return the number of channels in a sound file.\n * For example, Mono = 1, Stereo = 2.\n *\n * @method channels\n * @for p5.SoundFile\n * @return {Number} [channels]\n */\n channels() {\n return this.buffer.numberOfChannels;\n }\n\n /**\n * Return the sample rate of the sound file.\n *\n * @method sampleRate\n * @for p5.SoundFile\n * @return {Number} [sampleRate]\n */\n sampleRate() {\n return this.buffer.sampleRate;\n }\n\n /**\n * Return the number of samples in a sound file.\n * Equal to sampleRate * duration.\n *\n * @method frames\n * @for p5.SoundFile\n * @return {Number} [sampleCount]\n */\n frames() {\n return this.buffer.length;\n }\n\n /**\n * Returns an array of amplitude peaks in a p5.SoundFile that can be\n * used to draw a static waveform. Scans through the p5.SoundFile's\n * audio buffer to find the greatest amplitudes. Accepts one\n * parameter, 'length', which determines size of the array.\n * Larger arrays result in more precise waveform visualizations.\n *\n * Inspired by Wavesurfer.js.\n *\n * @method getPeaks\n * @for p5.SoundFile\n * @params {Number} [length] length is the size of the returned array.\n * Larger length results in more precision.\n * Defaults to 5*width of the browser window.\n * @returns {Float32Array} Array of peaks.\n */\n getPeaks(length) {\n if (this.buffer) {\n // set length to window's width if no length is provided\n if (!length) {\n length = window.width * 5;\n }\n if (this.buffer) {\n var buffer = this.buffer;\n var sampleSize = buffer.length / length;\n var sampleStep = ~~(sampleSize / 10) || 1;\n var channels = buffer.numberOfChannels;\n var peaks = new Float32Array(Math.round(length));\n\n for (var c = 0; c < channels; c++) {\n var chan = buffer.getChannelData(c);\n for (var i = 0; i < length; i++) {\n var start = ~~(i * sampleSize);\n var end = ~~(start + sampleSize);\n var max = 0;\n for (var j = start; j < end; j += sampleStep) {\n var value = chan[j];\n if (value > max) {\n max = value;\n // faster than Math.abs\n } else if (-value > max) {\n max = value;\n }\n }\n if (c === 0 || Math.abs(max) > peaks[i]) {\n peaks[i] = max;\n }\n }\n }\n\n return peaks;\n }\n } else {\n throw 'Cannot load peaks yet, buffer is not loaded';\n }\n }\n\n /**\n * Reverses the p5.SoundFile's buffer source.\n * Playback must be handled separately (see example).\n *\n * @method reverseBuffer\n * @for p5.SoundFile\n * @example\n * \n * let drum;\n * function preload() {\n * drum = loadSound('assets/drum.mp3');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(canvasPressed);\n * background(220);\n * text('tap to play', 20, 20);\n * }\n *\n * function canvasPressed() {\n * drum.stop();\n * drum.reverseBuffer();\n * drum.play();\n * }\n *
\n * \n * let mySound;\n * function preload() {\n * mySound = loadSound('assets/Damscray_DancingTiger.mp3');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(canvasPressed);\n * background(220);\n * text('tap to play', 10, 20);\n *\n * // schedule calls to changeText\n * mySound.addCue(0, changeText, \"hello\" );\n * mySound.addCue(0.5, changeText, \"hello,\" );\n * mySound.addCue(1, changeText, \"hello, p5!\");\n * mySound.addCue(1.5, changeText, \"hello, p5!!\");\n * mySound.addCue(2, changeText, \"hello, p5!!!!!\");\n * }\n *\n * function changeText(val) {\n * background(220);\n * text(val, 10, 20);\n * }\n *\n * function canvasPressed() {\n * mySound.play();\n * }\n *
\n * let mySound;\n * function preload() {\n * mySound = loadSound('assets/doorbell.mp3');\n * }\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(canvasPressed);\n * background(220);\n * text('tap to download', 10, 20);\n * }\n *\n * function canvasPressed() {\n * mySound.save('my cool filename');\n * }\n *
\n * function preload() {\n * mySound = loadSound('assets/doorbell.mp3');\n * }\n *\n * function setup() {\n * noCanvas();\n * let soundBlob = mySound.getBlob();\n *\n * // Now we can send the blob to a server...\n * let serverUrl = 'https://jsonplaceholder.typicode.com/posts';\n * let httpRequestOptions = {\n * method: 'POST',\n * body: new FormData().append('soundBlob', soundBlob),\n * headers: new Headers({\n * 'Content-Type': 'multipart/form-data'\n * })\n * };\n * httpDo(serverUrl, httpRequestOptions);\n *\n * // We can also create an `ObjectURL` pointing to the Blob\n * let blobUrl = URL.createObjectURL(soundBlob);\n *\n * // The `
\n * let mySound;\n * function preload() {\n * soundFormats('mp3', 'ogg');\n * mySound = loadSound('assets/doorbell');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(canvasPressed);\n * background(220);\n * text('tap here to play', 10, 20);\n * }\n *\n * function canvasPressed() {\n * // playing a sound file on a user gesture\n * // is equivalent to `userStartAudio()`\n * mySound.play();\n * }\n *
\n * let sound, amplitude;\n *\n * function preload(){\n * sound = loadSound('assets/beat.mp3');\n * }\n * function setup() {\n * let cnv = createCanvas(100,100);\n * cnv.mouseClicked(togglePlay);\n * amplitude = new p5.Amplitude();\n * }\n *\n * function draw() {\n * background(220);\n * text('tap to play', 20, 20);\n *\n * let level = amplitude.getLevel();\n * let size = map(level, 0, 1, 0, 200);\n * ellipse(width/2, height/2, size, size);\n * }\n *\n * function togglePlay() {\n * if (sound.isPlaying() ){\n * sound.pause();\n * } else {\n * sound.loop();\n *\t\tamplitude = new p5.Amplitude();\n *\t\tamplitude.setInput(sound);\n * }\n * }\n *\n *
\n * function preload(){\n * sound1 = loadSound('assets/beat.mp3');\n * sound2 = loadSound('assets/drum.mp3');\n * }\n * function setup(){\n * cnv = createCanvas(100, 100);\n * cnv.mouseClicked(toggleSound);\n *\n * amplitude = new p5.Amplitude();\n * amplitude.setInput(sound2);\n * }\n *\n * function draw() {\n * background(220);\n * text('tap to play', 20, 20);\n *\n * let level = amplitude.getLevel();\n * let size = map(level, 0, 1, 0, 200);\n * ellipse(width/2, height/2, size, size);\n * }\n *\n * function toggleSound(){\n * if (sound1.isPlaying() && sound2.isPlaying()) {\n * sound1.stop();\n * sound2.stop();\n * } else {\n * sound1.play();\n * sound2.play();\n * }\n * }\n *
\n * function preload(){\n * sound = loadSound('assets/beat.mp3');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mouseClicked(toggleSound);\n * amplitude = new p5.Amplitude();\n * }\n *\n * function draw() {\n * background(220, 150);\n * textAlign(CENTER);\n * text('tap to play', width/2, 20);\n *\n * let level = amplitude.getLevel();\n * let size = map(level, 0, 1, 0, 200);\n * ellipse(width/2, height/2, size, size);\n * }\n *\n * function toggleSound(){\n * if (sound.isPlaying()) {\n * sound.stop();\n * } else {\n * sound.play();\n * }\n * }\n *
FFT (Fast Fourier Transform) is an analysis algorithm that\n * isolates individual\n * \n * audio frequencies within a waveform.
\n *\n *Once instantiated, a p5.FFT object can return an array based on\n * two types of analyses:
• FFT.waveform()
computes\n * amplitude values along the time domain. The array indices correspond\n * to samples across a brief moment in time. Each value represents\n * amplitude of the waveform at that sample of time.
\n * • FFT.analyze()
computes amplitude values along the\n * frequency domain. The array indices correspond to frequencies (i.e.\n * pitches), from the lowest to the highest that humans can hear. Each\n * value represents amplitude at that slice of the frequency spectrum.\n * Use with getEnergy()
to measure amplitude at specific\n * frequencies, or within a range of frequencies.
FFT analyzes a very short snapshot of sound called a sample\n * buffer. It returns an array of amplitude measurements, referred\n * to as bins
. The array is 1024 bins long by default.\n * You can change the bin array length, but it must be a power of 2\n * between 16 and 1024 in order for the FFT algorithm to function\n * correctly. The actual size of the FFT buffer is twice the\n * number of bins, so given a standard sample rate, the buffer is\n * 2048/44100 seconds long.
\n * function preload(){\n * sound = loadSound('assets/Damscray_DancingTiger.mp3');\n * }\n *\n * function setup(){\n * let cnv = createCanvas(100,100);\n * cnv.mouseClicked(togglePlay);\n * fft = new p5.FFT();\n * sound.amp(0.2);\n * }\n *\n * function draw(){\n * background(220);\n *\n * let spectrum = fft.analyze();\n * noStroke();\n * fill(255, 0, 255);\n * for (let i = 0; i< spectrum.length; i++){\n * let x = map(i, 0, spectrum.length, 0, width);\n * let h = -height + map(spectrum[i], 0, 255, height, 0);\n * rect(x, height, width / spectrum.length, h )\n * }\n *\n * let waveform = fft.waveform();\n * noFill();\n * beginShape();\n * stroke(20);\n * for (let i = 0; i < waveform.length; i++){\n * let x = map(i, 0, waveform.length, 0, width);\n * let y = map( waveform[i], -1, 1, 0, height);\n * vertex(x,y);\n * }\n * endShape();\n *\n * text('tap to play', 20, 20);\n * }\n *\n * function togglePlay() {\n * if (sound.isPlaying()) {\n * sound.pause();\n * } else {\n * sound.loop();\n * }\n * }\n *
getEnergy()
.\n *\n * @method analyze\n * @for p5.FFT\n * @param {Number} [bins] Must be a power of two between\n * 16 and 1024. Defaults to 1024.\n * @param {Number} [scale] If \"dB,\" returns decibel\n * float measurements between\n * -140 and 0 (max).\n * Otherwise returns integers from 0-255.\n * @return {Array} spectrum Array of energy (amplitude/volume)\n * values across the frequency spectrum.\n * Lowest energy (silence) = 0, highest\n * possible is 255.\n * @example\n * \n * let osc, fft;\n *\n * function setup(){\n * let cnv = createCanvas(100,100);\n * cnv.mousePressed(startSound);\n * osc = new p5.Oscillator();\n * osc.amp(0);\n * fft = new p5.FFT();\n * }\n *\n * function draw(){\n * background(220);\n *\n * let freq = map(mouseX, 0, windowWidth, 20, 10000);\n * freq = constrain(freq, 1, 20000);\n * osc.freq(freq);\n *\n * let spectrum = fft.analyze();\n * noStroke();\n * fill(255, 0, 255);\n * for (let i = 0; i< spectrum.length; i++){\n * let x = map(i, 0, spectrum.length, 0, width);\n * let h = -height + map(spectrum[i], 0, 255, height, 0);\n * rect(x, height, width / spectrum.length, h );\n * }\n *\n * stroke(255);\n * if (!osc.started) {\n * text('tap here and drag to change frequency', 10, 20, width - 20);\n * } else {\n * text(round(freq)+'Hz', 10, 20);\n * }\n * }\n *\n * function startSound() {\n * osc.start();\n * osc.amp(0.5, 0.2);\n * }\n *\n * function mouseReleased() {\n * osc.amp(0, 0.2);\n * }\n *
\n * function setup(){\n * cnv = createCanvas(100,100);\n * cnv.mousePressed(userStartAudio);\n * sound = new p5.AudioIn();\n * sound.start();\n * fft = new p5.FFT();\n * sound.connect(fft);\n *}\n *\n *function draw() {\n * if (getAudioContext().state !== 'running') {\n * background(220);\n * text('tap here and enable mic to begin', 10, 20, width - 20);\n * return;\n * }\n * let centroidplot = 0.0;\n * let spectralCentroid = 0;\n *\n * background(0);\n * stroke(0,255,0);\n * let spectrum = fft.analyze();\n * fill(0,255,0); // spectrum is green\n *\n * //draw the spectrum\n * for (let i = 0; i < spectrum.length; i++){\n * let x = map(log(i), 0, log(spectrum.length), 0, width);\n * let h = map(spectrum[i], 0, 255, 0, height);\n * let rectangle_width = (log(i+1)-log(i))*(width/log(spectrum.length));\n * rect(x, height, rectangle_width, -h )\n * }\n * let nyquist = 22050;\n *\n * // get the centroid\n * spectralCentroid = fft.getCentroid();\n *\n * // the mean_freq_index calculation is for the display.\n * let mean_freq_index = spectralCentroid/(nyquist/spectrum.length);\n *\n * centroidplot = map(log(mean_freq_index), 0, log(spectrum.length), 0, width);\n *\n * stroke(255,0,0); // the line showing where the centroid is will be red\n *\n * rect(centroidplot, 0, width / spectrum.length, height)\n * noStroke();\n * fill(255,255,255); // text is white\n * text('centroid: ', 10, 20);\n * text(round(spectralCentroid)+' Hz', 10, 40);\n *}\n *
Creates a signal that oscillates between -1.0 and 1.0.\n * By default, the oscillation takes the form of a sinusoidal\n * shape ('sine'). Additional types include 'triangle',\n * 'sawtooth' and 'square'. The frequency defaults to\n * 440 oscillations per second (440Hz, equal to the pitch of an\n * 'A' note).
\n *\n *Set the type of oscillation with setType(), or by instantiating a\n * specific oscillator: p5.SinOsc, p5.TriOsc, p5.SqrOsc, or p5.SawOsc.\n *
\n *\n * @class p5.Oscillator\n * @constructor\n * @param {Number} [freq] frequency defaults to 440Hz\n * @param {String} [type] type of oscillator. Options:\n * 'sine' (default), 'triangle',\n * 'sawtooth', 'square'\n * @example\n *\n * let osc, playing, freq, amp;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playOscillator);\n * osc = new p5.Oscillator('sine');\n * }\n *\n * function draw() {\n * background(220)\n * freq = constrain(map(mouseX, 0, width, 100, 500), 100, 500);\n * amp = constrain(map(mouseY, height, 0, 0, 1), 0, 1);\n *\n * text('tap to play', 20, 20);\n * text('freq: ' + freq, 20, 40);\n * text('amp: ' + amp, 20, 60);\n *\n * if (playing) {\n * // smooth the transitions by 0.1 seconds\n * osc.freq(freq, 0.1);\n * osc.amp(amp, 0.1);\n * }\n * }\n *\n * function playOscillator() {\n * // starting an oscillator on a user gesture will enable audio\n * // in browsers that have a strict autoplay policy.\n * // See also: userStartAudio();\n * osc.start();\n * playing = true;\n * }\n *\n * function mouseReleased() {\n * // ramp amplitude to 0 over 0.5 seconds\n * osc.amp(0, 0.5);\n * playing = false;\n * }\n *
\n * let osc;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playOscillator);\n * osc = new p5.Oscillator(300);\n * background(220);\n * text('tap to play', 20, 20);\n * }\n *\n * function playOscillator() {\n * osc.start();\n * osc.amp(0.5);\n * // start at 700Hz\n * osc.freq(700);\n * // ramp to 60Hz over 0.7 seconds\n * osc.freq(60, 0.7);\n * osc.amp(0, 0.1, 0.7);\n * }\n *
new p5.SinOsc()
.\n * This creates a Sine Wave Oscillator and is\n * equivalent to new p5.Oscillator('sine')\n *
or creating a p5.Oscillator and then calling\n * its method setType('sine')
.\n * See p5.Oscillator for methods.\n *\n * @class p5.SinOsc\n * @constructor\n * @extends p5.Oscillator\n * @param {Number} [freq] Set the frequency\n */\nclass SinOsc extends Oscillator {\n constructor(freq) {\n super(freq, 'sine');\n }\n}\n\n/**\n * Constructor: new p5.TriOsc()
.\n * This creates a Triangle Wave Oscillator and is\n * equivalent to new p5.Oscillator('triangle')\n *
or creating a p5.Oscillator and then calling\n * its method setType('triangle')
.\n * See p5.Oscillator for methods.\n *\n * @class p5.TriOsc\n * @constructor\n * @extends p5.Oscillator\n * @param {Number} [freq] Set the frequency\n */\nclass TriOsc extends Oscillator {\n constructor(freq) {\n super(freq, 'triangle');\n }\n}\n\n/**\n * Constructor: new p5.SawOsc()
.\n * This creates a SawTooth Wave Oscillator and is\n * equivalent to new p5.Oscillator('sawtooth')\n *
or creating a p5.Oscillator and then calling\n * its method setType('sawtooth')
.\n * See p5.Oscillator for methods.\n *\n * @class p5.SawOsc\n * @constructor\n * @extends p5.Oscillator\n * @param {Number} [freq] Set the frequency\n */\nclass SawOsc extends Oscillator {\n constructor(freq) {\n super(freq, 'sawtooth');\n }\n}\n\n/**\n * Constructor: new p5.SqrOsc()
.\n * This creates a Square Wave Oscillator and is\n * equivalent to new p5.Oscillator('square')\n *
or creating a p5.Oscillator and then calling\n * its method setType('square')
.\n * See p5.Oscillator for methods.\n *\n * @class p5.SqrOsc\n * @constructor\n * @extends p5.Oscillator\n * @param {Number} [freq] Set the frequency\n */\nclass SqrOsc extends Oscillator {\n constructor(freq) {\n super(freq, 'square');\n }\n}\n\nexport default Oscillator;\nexport { SinOsc, TriOsc, SawOsc, SqrOsc };\n","import p5sound from './main';\nimport Add from 'Tone/signal/Add';\nimport Mult from 'Tone/signal/Multiply';\nimport Scale from 'Tone/signal/Scale';\nimport TimelineSignal from 'Tone/signal/TimelineSignal.js';\n\n/**\n * Envelopes are pre-defined amplitude distribution over time.\n * Typically, envelopes are used to control the output volume\n * of an object, a series of fades referred to as Attack, Decay,\n * Sustain and Release (\n * ADSR\n * ). Envelopes can also control other Web Audio Parameters—for example, a p5.Envelope can\n * control an Oscillator's frequency like this: osc.freq(env)
.
Use setRange
to change the attack/release level.\n * Use setADSR
to change attackTime, decayTime, sustainPercent and releaseTime.
Use the play
method to play the entire envelope,\n * the ramp
method for a pingable trigger,\n * or triggerAttack
/\n * triggerRelease
to trigger noteOn/noteOff.
\n * let t1 = 0.1; // attack time in seconds\n * let l1 = 0.7; // attack level 0.0 to 1.0\n * let t2 = 0.3; // decay time in seconds\n * let l2 = 0.1; // decay level 0.0 to 1.0\n *\n * let env;\n * let triOsc;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * background(220);\n * text('tap to play', 20, 20);\n * cnv.mousePressed(playSound);\n *\n * env = new p5.Envelope(t1, l1, t2, l2);\n * triOsc = new p5.Oscillator('triangle');\n * }\n *\n * function playSound() {\n * // starting the oscillator ensures that audio is enabled.\n * triOsc.start();\n * env.play(triOsc);\n * }\n *
\n * let attackTime;\n * let l1 = 0.7; // attack level 0.0 to 1.0\n * let t2 = 0.3; // decay time in seconds\n * let l2 = 0.1; // decay level 0.0 to 1.0\n * let l3 = 0.2; // release time in seconds\n *\n * let env, triOsc;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playSound);\n *\n * env = new p5.Envelope();\n * triOsc = new p5.Oscillator('triangle');\n * }\n *\n * function draw() {\n * background(220);\n * text('tap here to play', 5, 20);\n *\n * attackTime = map(mouseX, 0, width, 0.0, 1.0);\n * text('attack time: ' + attackTime, 5, height - 20);\n * }\n *\n * // mouseClick triggers envelope if over canvas\n * function playSound() {\n * env.set(attackTime, l1, t2, l2, l3);\n *\n * triOsc.start();\n * env.play(triOsc);\n * }\n *
setRange
),\n * then decayLevel would increase proportionally, to become 0.5.\n * @param {Number} [releaseTime] Time in seconds from now (defaults to 0)\n * @example\n * \n * let attackLevel = 1.0;\n * let releaseLevel = 0;\n *\n * let attackTime = 0.001;\n * let decayTime = 0.2;\n * let susPercent = 0.2;\n * let releaseTime = 0.5;\n *\n * let env, triOsc;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playEnv);\n *\n * env = new p5.Envelope();\n * triOsc = new p5.Oscillator('triangle');\n * triOsc.amp(env);\n * triOsc.freq(220);\n * }\n *\n * function draw() {\n * background(220);\n * text('tap here to play', 5, 20);\n * attackTime = map(mouseX, 0, width, 0, 1.0);\n * text('attack time: ' + attackTime, 5, height - 40);\n * }\n *\n * function playEnv() {\n * triOsc.start();\n * env.setADSR(attackTime, decayTime, susPercent, releaseTime);\n * env.play();\n * }\n *
\n * let attackLevel = 1.0;\n * let releaseLevel = 0;\n *\n * let attackTime = 0.001;\n * let decayTime = 0.2;\n * let susPercent = 0.2;\n * let releaseTime = 0.5;\n *\n * let env, triOsc;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playEnv);\n *\n * env = new p5.Envelope();\n * triOsc = new p5.Oscillator('triangle');\n * triOsc.amp(env);\n * triOsc.freq(220);\n * }\n *\n * function draw() {\n * background(220);\n * text('tap here to play', 5, 20);\n * attackLevel = map(mouseY, height, 0, 0, 1.0);\n * text('attack level: ' + attackLevel, 5, height - 20);\n * }\n *\n * function playEnv() {\n * triOsc.start();\n * env.setRange(attackLevel, releaseLevel);\n * env.play();\n * }\n *
Play tells the envelope to start acting on a given input.\n * If the input is a p5.sound object (i.e. AudioIn, Oscillator,\n * SoundFile), then Envelope will control its output volume.\n * Envelopes can also be used to control any \n * Web Audio Audio Param.
\n *\n * @method play\n * @for p5.Envelope\n * @param {Object} unit A p5.sound object or\n * Web Audio Param.\n * @param {Number} [startTime] time from now (in seconds) at which to play\n * @param {Number} [sustainTime] time to sustain before releasing the envelope\n * @example\n *\n * let attackLevel = 1.0;\n * let releaseLevel = 0;\n *\n * let attackTime = 0.001;\n * let decayTime = 0.2;\n * let susPercent = 0.2;\n * let releaseTime = 0.5;\n *\n * let env, triOsc;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playEnv);\n *\n * env = new p5.Envelope();\n * triOsc = new p5.Oscillator('triangle');\n * triOsc.amp(env);\n * triOsc.freq(220);\n * triOsc.start();\n * }\n *\n * function draw() {\n * background(220);\n * text('tap here to play', 5, 20);\n * attackTime = map(mouseX, 0, width, 0, 1.0);\n * attackLevel = map(mouseY, height, 0, 0, 1.0);\n * text('attack time: ' + attackTime, 5, height - 40);\n * text('attack level: ' + attackLevel, 5, height - 20);\n * }\n *\n * function playEnv() {\n * // ensure that audio is enabled\n * userStartAudio();\n *\n * env.setADSR(attackTime, decayTime, susPercent, releaseTime);\n * env.setRange(attackLevel, releaseLevel);\n * env.play();\n * }\n *
\n * let attackTime = 0.001;\n * let decayTime = 0.2;\n * let susPercent = 0.3;\n * let releaseTime = 0.4;\n * let env, triOsc;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * background(220);\n * textAlign(CENTER);\n * textSize(10);\n * text('tap to triggerAttack', width/2, height/2);\n *\n * env = new p5.Envelope();\n * env.setADSR(attackTime, decayTime, susPercent, releaseTime);\n * env.setRange(1.0, 0.0);\n * triOsc = new p5.Oscillator('triangle');\n * triOsc.freq(220);\n *\n * cnv.mousePressed(envAttack);\n * }\n *\n * function envAttack() {\n * background(0, 255, 255);\n * text('release to release', width/2, height/2);\n *\n * // ensures audio is enabled. See also: `userStartAudio`\n * triOsc.start();\n *\n * env.triggerAttack(triOsc);\n * }\n *\n * function mouseReleased() {\n * background(220);\n * text('tap to triggerAttack', width/2, height/2);\n *\n * env.triggerRelease(triOsc);\n * }\n *
\n * let attackTime = 0.001;\n * let decayTime = 0.2;\n * let susPercent = 0.3;\n * let releaseTime = 0.4;\n * let env, triOsc;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * background(220);\n * textAlign(CENTER);\n * textSize(10);\n * text('tap to triggerAttack', width/2, height/2);\n *\n * env = new p5.Envelope();\n * env.setADSR(attackTime, decayTime, susPercent, releaseTime);\n * env.setRange(1.0, 0.0);\n * triOsc = new p5.Oscillator('triangle');\n * triOsc.freq(220);\n *\n * cnv.mousePressed(envAttack);\n * }\n *\n * function envAttack() {\n * background(0, 255, 255);\n * text('release to release', width/2, height/2);\n *\n * // ensures audio is enabled. See also: `userStartAudio`\n * triOsc.start();\n *\n * env.triggerAttack(triOsc);\n * }\n *\n * function mouseReleased() {\n * background(220);\n * text('tap to triggerAttack', width/2, height/2);\n *\n * env.triggerRelease(triOsc);\n * }\n *
setADSR(attackTime, decayTime)
\n * as \n * time constants for simple exponential ramps.\n * If the value is higher than current value, it uses attackTime,\n * while a decrease uses decayTime.\n *\n * @method ramp\n * @for p5.Envelope\n * @param {Object} unit p5.sound Object or Web Audio Param\n * @param {Number} secondsFromNow When to trigger the ramp\n * @param {Number} v Target value\n * @param {Number} [v2] Second target value\n * @example\n * \n * let env, osc, amp;\n *\n * let attackTime = 0.001;\n * let decayTime = 0.2;\n * let attackLevel = 1;\n * let decayLevel = 0;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * fill(0,255,0);\n * noStroke();\n *\n * env = new p5.Envelope();\n * env.setADSR(attackTime, decayTime);\n * osc = new p5.Oscillator();\n * osc.amp(env);\n * amp = new p5.Amplitude();\n *\n * cnv.mousePressed(triggerRamp);\n * }\n *\n * function triggerRamp() {\n * // ensures audio is enabled. See also: `userStartAudio`\n * osc.start();\n *\n * env.ramp(osc, 0, attackLevel, decayLevel);\n * }\n *\n * function draw() {\n * background(20);\n * text('tap to play', 10, 20);\n * let h = map(amp.getLevel(), 0, 0.4, 0, height);;\n * rect(0, height, width, -h);\n * }\n *
p5.Oscillator
for a full list of methods.\n *\n * @class p5.Pulse\n * @extends p5.Oscillator\n * @constructor\n * @param {Number} [freq] Frequency in oscillations per second (Hz)\n * @param {Number} [w] Width between the pulses (0 to 1.0,\n * defaults to 0)\n * @example\n * \n * let pulse;\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(startPulse);\n * background(220);\n *\n * pulse = new p5.Pulse();\n * pulse.amp(0.5);\n * pulse.freq(220);\n * }\n * function startPulse() {\n * pulse.start();\n * pulse.amp(0.5, 0.02);\n * }\n * function mouseReleased() {\n * pulse.amp(0, 0.2);\n * }\n * function draw() {\n * background(220);\n * text('tap to play', 5, 20, width - 20);\n * let w = map(mouseX, 0, width, 0, 1);\n * w = constrain(w, 0, 1);\n * pulse.width(w);\n * text('pulse width: ' + w, 5, height - 20);\n * }\n *
Get audio from an input, i.e. your computer's microphone.
\n *\n *Turn the mic on/off with the start() and stop() methods. When the mic\n * is on, its volume can be measured with getLevel or by connecting an\n * FFT object.
\n *\n *If you want to hear the AudioIn, use the .connect() method.\n * AudioIn does not connect to p5.sound output by default to prevent\n * feedback.
\n *\n *Note: This uses the getUserMedia/\n * Stream API, which is not supported by certain browsers. Access in Chrome browser\n * is limited to localhost and https, but access over http may be limited.
\n *\n * @class p5.AudioIn\n * @constructor\n * @param {Function} [errorCallback] A function to call if there is an error\n * accessing the AudioIn. For example,\n * Safari and iOS devices do not\n * currently allow microphone access.\n * @example\n *\n * let mic;\n *\n * function setup(){\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(userStartAudio);\n * textAlign(CENTER);\n * mic = new p5.AudioIn();\n * mic.start();\n * }\n *\n * function draw(){\n * background(0);\n * fill(255);\n * text('tap to start', width/2, 20);\n *\n * micLevel = mic.getLevel();\n * let y = height - micLevel * height;\n * ellipse(width/2, y, 10, 10);\n * }\n *
\n * let audioIn;\n *\n * function setup(){\n * text('getting sources...', 0, 20);\n * audioIn = new p5.AudioIn();\n * audioIn.getSources(gotSources);\n * }\n *\n * function gotSources(deviceList) {\n * if (deviceList.length > 0) {\n * //set the source to the first item in the deviceList array\n * audioIn.setSource(0);\n * let currentSource = deviceList[audioIn.currentSource];\n * text('set source to: ' + currentSource.deviceId, 5, 20, width);\n * }\n * }\n *
\n * let audioIn;\n *\n * function setup(){\n * text('getting sources...', 0, 20);\n * audioIn = new p5.AudioIn();\n * audioIn.getSources(gotSources);\n * }\n *\n * function gotSources(deviceList) {\n * if (deviceList.length > 0) {\n * //set the source to the first item in the deviceList array\n * audioIn.setSource(0);\n * let currentSource = deviceList[audioIn.currentSource];\n * text('set source to: ' + currentSource.deviceId, 5, 20, width);\n * }\n * }\n *
A p5.Filter uses a Web Audio Biquad Filter to filter\n * the frequency response of an input source. Subclasses\n * include:
\n *p5.LowPass
:\n * Allows frequencies below the cutoff frequency to pass through,\n * and attenuates frequencies above the cutoff.p5.HighPass
:\n * The opposite of a lowpass filter. p5.BandPass
:\n * Allows a range of frequencies to pass through and attenuates\n * the frequencies below and above this frequency range..res()
method controls either width of the\n * bandpass, or resonance of the low/highpass cutoff frequency.\n *\n * This class extends p5.Effect.\n * Methods amp(), chain(),\n * drywet(), connect(), and\n * disconnect() are available.\n *\n * @class p5.Filter\n * @extends p5.Effect\n * @constructor\n * @param {String} [type] 'lowpass' (default), 'highpass', 'bandpass'\n * @example\n * \n * let fft, noise, filter;\n *\n * function setup() {\n * let cnv = createCanvas(100,100);\n * cnv.mousePressed(makeNoise);\n * fill(255, 0, 255);\n *\n * filter = new p5.BandPass();\n * noise = new p5.Noise();\n * noise.disconnect();\n * noise.connect(filter);\n *\n * fft = new p5.FFT();\n * }\n *\n * function draw() {\n * background(220);\n *\n * // set the BandPass frequency based on mouseX\n * let freq = map(mouseX, 0, width, 20, 10000);\n * freq = constrain(freq, 0, 22050);\n * filter.freq(freq);\n * // give the filter a narrow band (lower res = wider bandpass)\n * filter.res(50);\n *\n * // draw filtered spectrum\n * let spectrum = fft.analyze();\n * noStroke();\n * for (let i = 0; i < spectrum.length; i++) {\n * let x = map(i, 0, spectrum.length, 0, width);\n * let h = -height + map(spectrum[i], 0, 255, height, 0);\n * rect(x, height, width/spectrum.length, h);\n * }\n * if (!noise.started) {\n * text('tap here and drag to change frequency', 10, 20, width - 20);\n * } else {\n * text('Frequency: ' + round(freq)+'Hz', 20, 20, width - 20);\n * }\n * }\n *\n * function makeNoise() {\n * // see also: `userStartAudio()`\n * noise.start();\n * noise.amp(0.5, 0.2);\n * }\n *\n * function mouseReleased() {\n * noise.amp(0, 0.2);\n * }\n *\n *
new p5.LowPass()
Filter.\n * This is the same as creating a p5.Filter and then calling\n * its method setType('lowpass')
.\n * See p5.Filter for methods.\n *\n * @class p5.LowPass\n * @constructor\n * @extends p5.Filter\n */\nclass LowPass extends Filter {\n constructor() {\n super('lowpass');\n }\n}\n\n/**\n * Constructor: new p5.HighPass()
Filter.\n * This is the same as creating a p5.Filter and then calling\n * its method setType('highpass')
.\n * See p5.Filter for methods.\n *\n * @class p5.HighPass\n * @constructor\n * @extends p5.Filter\n */\nclass HighPass extends Filter {\n constructor() {\n super('highpass');\n }\n}\n\n/**\n * Constructor: new p5.BandPass()
Filter.\n * This is the same as creating a p5.Filter and then calling\n * its method setType('bandpass')
.\n * See p5.Filter for methods.\n *\n * @class p5.BandPass\n * @constructor\n * @extends p5.Filter\n */\nclass BandPass extends Filter {\n constructor() {\n super('bandpass');\n }\n}\nexport default Filter;\nexport { LowPass, HighPass, BandPass };\n","import Filter from './filter';\nimport p5sound from './main';\n\n/**\n * EQFilter extends p5.Filter with constraints\n * necessary for the p5.EQ\n *\n * @private\n */\nclass EQFilter extends Filter {\n constructor(freq, res) {\n super('peaking');\n\n this.disconnect();\n this.set(freq, res);\n this.biquad.gain.value = 0;\n delete this.input;\n delete this.output;\n delete this._drywet;\n delete this.wet;\n }\n\n amp() {\n console.warn('`amp()` is not available for p5.EQ bands. Use `.gain()`');\n }\n\n drywet() {\n console.warn('`drywet()` is not available for p5.EQ bands.');\n }\n\n connect(unit) {\n var u = unit || p5.soundOut.input;\n if (this.biquad) {\n this.biquad.connect(u.input ? u.input : u);\n } else {\n this.output.connect(u.input ? u.input : u);\n }\n }\n disconnect() {\n if (this.biquad) {\n this.biquad.disconnect();\n }\n }\n\n dispose() {\n // remove reference form soundArray\n const index = p5sound.soundArray.indexOf(this);\n p5sound.soundArray.splice(index, 1);\n this.disconnect();\n delete this.biquad;\n }\n}\n\nexport default EQFilter;\n","import Effect from './effect';\nimport EQFilter from './eqFilter';\n\n/**\n * p5.EQ is an audio effect that performs the function of a multiband\n * audio equalizer. Equalization is used to adjust the balance of\n * frequency compoenents of an audio signal. This process is commonly used\n * in sound production and recording to change the waveform before it reaches\n * a sound output device. EQ can also be used as an audio effect to create\n * interesting distortions by filtering out parts of the spectrum. p5.EQ is\n * built using a chain of Web Audio Biquad Filter Nodes and can be\n * instantiated with 3 or 8 bands. Bands can be added or removed from\n * the EQ by directly modifying p5.EQ.bands (the array that stores filters).\n *\n * This class extends p5.Effect.\n * Methods amp(), chain(),\n * drywet(), connect(), and\n * disconnect() are available.\n *\n * @class p5.EQ\n * @constructor\n * @extends p5.Effect\n * @param {Number} [_eqsize] Constructor will accept 3 or 8, defaults to 3\n * @return {Object} p5.EQ object\n *\n * @example\n * \n * let eq, soundFile\n * let eqBandIndex = 0;\n * let eqBandNames = ['lows', 'mids', 'highs'];\n *\n * function preload() {\n * soundFormats('mp3', 'ogg');\n * soundFile = loadSound('assets/beat');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(toggleSound);\n *\n * eq = new p5.EQ(eqBandNames.length);\n * soundFile.disconnect();\n * eq.process(soundFile);\n * }\n *\n * function draw() {\n * background(30);\n * noStroke();\n * fill(255);\n * textAlign(CENTER);\n * text('filtering ', 50, 25);\n *\n * fill(255, 40, 255);\n * textSize(26);\n * text(eqBandNames[eqBandIndex], 50, 55);\n *\n * fill(255);\n * textSize(9);\n *\n * if (!soundFile.isPlaying()) {\n * text('tap to play', 50, 80);\n * } else {\n * text('tap to filter next band', 50, 80)\n * }\n * }\n *\n * function toggleSound() {\n * if (!soundFile.isPlaying()) {\n * soundFile.play();\n * } else {\n * eqBandIndex = (eqBandIndex + 1) % eq.bands.length;\n * }\n *\n * for (let i = 0; i < eq.bands.length; i++) {\n * eq.bands[i].gain(0);\n * }\n * // filter the band we want to filter\n * eq.bands[eqBandIndex].gain(-40);\n * }\n *
p5.Panner3D
- Constructs a Spatial Pannerp5.Listener3D
- Constructs a Spatial Listenerp5.soundOut.audiocontext.listener
\n *\n *\n * @class p5.Panner3D\n * @constructor\n */\n\nclass Panner3D extends Effect {\n constructor() {\n super();\n /**\n * \n * Web Audio Spatial Panner Node\n *\n * Properties include\n * let osc;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * background(220);\n * textAlign(CENTER);\n * text('tap to play', width/2, height/2);\n *\n * osc = new p5.Oscillator('square');\n * osc.amp(0.5);\n * delay = new p5.Delay();\n *\n * // delay.process() accepts 4 parameters:\n * // source, delayTime (in seconds), feedback, filter frequency\n * delay.process(osc, 0.12, .7, 2300);\n *\n * cnv.mousePressed(oscStart);\n * }\n *\n * function oscStart() {\n * osc.start();\n * }\n *\n * function mouseReleased() {\n * osc.stop();\n * }\n *
\n * let soundFile, reverb;\n * function preload() {\n * soundFile = loadSound('assets/Damscray_DancingTiger.mp3');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playSound);\n *\n * reverb = new p5.Reverb();\n * soundFile.disconnect(); // so we'll only hear reverb...\n *\n * // connect soundFile to reverb, process w/\n * // 3 second reverbTime, decayRate of 2%\n * reverb.process(soundFile, 3, 2);\n * }\n *\n * function draw() {\n * let dryWet = constrain(map(mouseX, 0, width, 0, 1), 0, 1);\n * // 1 = all reverb, 0 = no reverb\n * reverb.drywet(dryWet);\n *\n * background(220);\n * text('tap to play', 10, 20);\n * text('dry/wet: ' + round(dryWet * 100) + '%', 10, height - 20);\n * }\n *\n * function playSound() {\n * soundFile.play();\n * }\n *
p5.Convolver extends p5.Reverb. It can emulate the sound of real\n * physical spaces through a process called \n * convolution.
\n *\n *Convolution multiplies any audio input by an \"impulse response\"\n * to simulate the dispersion of sound over time. The impulse response is\n * generated from an audio file that you provide. One way to\n * generate an impulse response is to pop a balloon in a reverberant space\n * and record the echo. Convolution can also be used to experiment with\n * sound.
\n *\n *Use the method createConvolution(path)
to instantiate a\n * p5.Convolver with a path to your impulse response audio file.
\n * let cVerb, sound;\n * function preload() {\n * // We have both MP3 and OGG versions of all sound assets\n * soundFormats('ogg', 'mp3');\n *\n * // Try replacing 'bx-spring' with other soundfiles like\n * // 'concrete-tunnel' 'small-plate' 'drum' 'beatbox'\n * cVerb = createConvolver('assets/bx-spring.mp3');\n *\n * // Try replacing 'Damscray_DancingTiger' with\n * // 'beat', 'doorbell', lucky_dragons_-_power_melody'\n * sound = loadSound('assets/Damscray_DancingTiger.mp3');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playSound);\n * background(220);\n * text('tap to play', 20, 20);\n *\n * // disconnect from main output...\n * sound.disconnect();\n *\n * // ...and process with cVerb\n * // so that we only hear the convolution\n * cVerb.process(sound);\n * }\n *\n * function playSound() {\n * sound.play();\n * }\n *
toggleImpulse(id)
method.\n *\n * @property {Array} impulses\n * @for p5.Convolver\n */\n this.impulses = [];\n this.set = null;\n }\n\n /**\n * Private method to load a buffer as an Impulse Response,\n * assign it to the convolverNode, and add to the Array of .impulses.\n *\n * @param {String} path\n * @param {Function} callback\n * @param {Function} errorCallback\n * @private\n */\n _loadBuffer(_path, callback, errorCallback) {\n var path = p5.prototype._checkFileFormats(_path);\n var self = this;\n var errorTrace = new Error().stack;\n var ac = getAudioContext();\n\n var request = new XMLHttpRequest();\n request.open('GET', path, true);\n request.responseType = 'arraybuffer';\n\n request.onload = function () {\n if (request.status === 200) {\n // on success loading file:\n ac.decodeAudioData(\n request.response,\n function (buff) {\n var buffer = {};\n var chunks = path.split('/');\n buffer.name = chunks[chunks.length - 1];\n buffer.audioBuffer = buff;\n self.impulses.push(buffer);\n self._setBuffer(buffer.audioBuffer);\n if (callback) {\n callback(buffer);\n }\n },\n // error decoding buffer. \"e\" is undefined in Chrome 11/22/2015\n function () {\n var err = new CustomError('decodeAudioData', errorTrace, self.url);\n var msg = 'AudioContext error at decodeAudioData for ' + self.url;\n if (errorCallback) {\n err.msg = msg;\n errorCallback(err);\n } else {\n console.error(\n msg + '\\n The error stack trace includes: \\n' + err.stack\n );\n }\n }\n );\n }\n // if request status != 200, it failed\n else {\n var err = new CustomError('loadConvolver', errorTrace, self.url);\n var msg =\n 'Unable to load ' +\n self.url +\n '. The request status was: ' +\n request.status +\n ' (' +\n request.statusText +\n ')';\n\n if (errorCallback) {\n err.message = msg;\n errorCallback(err);\n } else {\n console.error(\n msg + '\\n The error stack trace includes: \\n' + err.stack\n );\n }\n }\n };\n\n // if there is another error, aside from 404...\n request.onerror = function () {\n var err = new CustomError('loadConvolver', errorTrace, self.url);\n var msg =\n 'There was no response from the server at ' +\n self.url +\n '. Check the url and internet connectivity.';\n\n if (errorCallback) {\n err.message = msg;\n errorCallback(err);\n } else {\n console.error(\n msg + '\\n The error stack trace includes: \\n' + err.stack\n );\n }\n };\n request.send();\n }\n\n /**\n * Connect a source to the convolver.\n *\n * @method process\n * @for p5.Convolver\n * @param {Object} src p5.sound / Web Audio object with a sound\n * output.\n * @example\n * \n * let cVerb, sound;\n * function preload() {\n * // We have both MP3 and OGG versions of all sound assets\n * soundFormats('ogg', 'mp3');\n *\n * // Try replacing 'bx-spring' with other soundfiles like\n * // 'concrete-tunnel' 'small-plate' 'drum' 'beatbox'\n * cVerb = createConvolver('assets/bx-spring.mp3');\n *\n * // Try replacing 'Damscray_DancingTiger' with\n * // 'beat', 'doorbell', lucky_dragons_-_power_melody'\n * sound = loadSound('assets/Damscray_DancingTiger.mp3');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playSound);\n * background(220);\n * text('tap to play', 20, 20);\n *\n * // disconnect from main output...\n * sound.disconnect();\n *\n * // ...and process with cVerb\n * // so that we only hear the convolution\n * cVerb.process(sound);\n * }\n *\n * function playSound() {\n * sound.play();\n * }\n *\n *
.impulses
array. Previous\n * impulses can be accessed with the .toggleImpulse(id)
\n * method.\n *\n * @method addImpulse\n * @for p5.Convolver\n * @param {String} path path to a sound file\n * @param {Function} callback function (optional)\n * @param {Function} errorCallback function (optional)\n */\n addImpulse(path, callback, errorCallback) {\n // if loading locally without a server\n if (\n window.location.origin.indexOf('file://') > -1 &&\n window.cordova === 'undefined'\n ) {\n alert(\n 'This sketch may require a server to load external files. Please see http://bit.ly/1qcInwS'\n );\n }\n this._loadBuffer(path, callback, errorCallback);\n }\n\n /**\n * Similar to .addImpulse, except that the .impulses
\n * Array is reset to save memory. A new .impulses
\n * array is created with this impulse as the only item.\n *\n * @method resetImpulse\n * @for p5.Convolver\n * @param {String} path path to a sound file\n * @param {Function} callback function (optional)\n * @param {Function} errorCallback function (optional)\n */\n resetImpulse(path, callback, errorCallback) {\n // if loading locally without a server\n if (\n window.location.origin.indexOf('file://') > -1 &&\n window.cordova === 'undefined'\n ) {\n alert(\n 'This sketch may require a server to load external files. Please see http://bit.ly/1qcInwS'\n );\n }\n this.impulses = [];\n this._loadBuffer(path, callback, errorCallback);\n }\n\n /**\n * If you have used .addImpulse()
to add multiple impulses\n * to a p5.Convolver, then you can use this method to toggle between\n * the items in the .impulses
Array. Accepts a parameter\n * to identify which impulse you wish to use, identified either by its\n * original filename (String) or by its position in the .impulses\n *
Array (Number)..audioBuffer
(type:\n * Web Audio \n * AudioBuffer) and a .name
, a String that corresponds\n * with the original filename.\n *\n * @method toggleImpulse\n * @for p5.Convolver\n * @param {String|Number} id Identify the impulse by its original filename\n * (String), or by its position in the\n * .impulses
Array (Number).\n */\n toggleImpulse(id) {\n if (typeof id === 'number' && id < this.impulses.length) {\n this._setBuffer(this.impulses[id].audioBuffer);\n }\n if (typeof id === 'string') {\n for (var i = 0; i < this.impulses.length; i++) {\n if (this.impulses[i].name === id) {\n this._setBuffer(this.impulses[i].audioBuffer);\n break;\n }\n }\n }\n }\n\n dispose() {\n super.dispose();\n\n // remove all the Impulse Response buffers\n for (var i in this.impulses) {\n if (this.impulses[i]) {\n this.impulses[i] = null;\n }\n }\n }\n}\n\n/**\n * Create a p5.Convolver. Accepts a path to a soundfile\n * that will be used to generate an impulse response.\n *\n * @method createConvolver\n * @for p5\n * @param {String} path path to a sound file\n * @param {Function} [callback] function to call if loading is successful.\n * The object will be passed in as the argument\n * to the callback function.\n * @param {Function} [errorCallback] function to call if loading is not successful.\n * A custom error will be passed in as the argument\n * to the callback function.\n * @return {p5.Convolver}\n * @example\n * \n * let cVerb, sound;\n * function preload() {\n * // We have both MP3 and OGG versions of all sound assets\n * soundFormats('ogg', 'mp3');\n *\n * // Try replacing 'bx-spring' with other soundfiles like\n * // 'concrete-tunnel' 'small-plate' 'drum' 'beatbox'\n * cVerb = createConvolver('assets/bx-spring.mp3');\n *\n * // Try replacing 'Damscray_DancingTiger' with\n * // 'beat', 'doorbell', lucky_dragons_-_power_melody'\n * sound = loadSound('assets/Damscray_DancingTiger.mp3');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playSound);\n * background(220);\n * text('tap to play', 20, 20);\n *\n * // disconnect from main output...\n * sound.disconnect();\n *\n * // ...and process with cVerb\n * // so that we only hear the convolution\n * cVerb.process(sound);\n * }\n *\n * function playSound() {\n * sound.play();\n * }\n *
A phrase is a pattern of musical events over time, i.e.\n * a series of notes and rests.
\n *\n *Phrases must be added to a p5.Part for playback, and\n * each part can play multiple phrases at the same time.\n * For example, one Phrase might be a kick drum, another\n * could be a snare, and another could be the bassline.
\n *\n *The first parameter is a name so that the phrase can be\n * modified or deleted later. The callback is a a function that\n * this phrase will call at every step—for example it might be\n * called playNote(value){}
. The array determines\n * which value is passed into the callback at each step of the\n * phrase. It can be numbers, an object with multiple numbers,\n * or a zero (0) indicates a rest so the callback won't be called).
\n * let mySound, myPhrase, myPart;\n * let pattern = [1,0,0,2,0,2,0,0];\n *\n * function preload() {\n * mySound = loadSound('assets/beatbox.mp3');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playMyPart);\n * background(220);\n * text('tap to play', width/2, height/2);\n * textAlign(CENTER, CENTER);\n *\n * myPhrase = new p5.Phrase('bbox', onEachStep, pattern);\n * myPart = new p5.Part();\n * myPart.addPhrase(myPhrase);\n * myPart.setBPM(60);\n * }\n *\n * function onEachStep(time, playbackRate) {\n * mySound.rate(playbackRate);\n * mySound.play(time);\n * }\n *\n * function playMyPart() {\n * userStartAudio();\n * myPart.start();\n * }\n *
A p5.Part plays back one or more p5.Phrases. Instantiate a part\n * with steps and tatums. By default, each step represents a 1/16th note.
\n *\n *See p5.Phrase for more about musical timing.
\n *\n * @class p5.Part\n * @constructor\n * @param {Number} [steps] Steps in the part\n * @param {Number} [tatums] Divisions of a beat, e.g. use 1/4, or 0.25 for a quater note (default is 1/16, a sixteenth note)\n * @example\n *\n * let box, drum, myPart;\n * let boxPat = [1,0,0,2,0,2,0,0];\n * let drumPat = [0,1,1,0,2,0,1,0];\n *\n * function preload() {\n * box = loadSound('assets/beatbox.mp3');\n * drum = loadSound('assets/drum.mp3');\n * }\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playMyPart);\n * background(220);\n * textAlign(CENTER, CENTER);\n * text('tap to play', width/2, height/2);\n *\n * let boxPhrase = new p5.Phrase('box', playBox, boxPat);\n * let drumPhrase = new p5.Phrase('drum', playDrum, drumPat);\n * myPart = new p5.Part();\n * myPart.addPhrase(boxPhrase);\n * myPart.addPhrase(drumPhrase);\n * myPart.setBPM(60);\n * }\n *\n * function playBox(time, playbackRate) {\n * box.rate(playbackRate);\n * box.play(time);\n * }\n *\n * function playDrum(time, playbackRate) {\n * drum.rate(playbackRate);\n * drum.play(time);\n * }\n *\n * function playMyPart() {\n * userStartAudio();\n *\n * myPart.start();\n * }\n *
new p5.Score(a, a, b, a, c)
\n *\n * @class p5.Score\n * @constructor\n * @param {p5.Part} [...parts] One or multiple parts, to be played in sequence.\n */\nclass Score {\n constructor() {\n // for all of the arguments\n this.parts = [];\n this.currentPart = new Array(arguments.length);;\n\n var thisScore = this;\n for (var i in arguments) {\n this.parts[i] = arguments[i];\n this.parts[i].nextPart = this.parts[i + 1];\n this.parts[i].onended = function () {\n thisScore.resetPart(i);\n playNextPart(thisScore);\n }; \n }\n this.looping = false;\n }\n\n onended() {\n if (this.looping) {\n // this.resetParts();\n this.parts[0].start();\n } else {\n this.parts[this.parts.length - 1].onended = function () {\n this.stop();\n this.resetParts();\n };\n }\n this.currentPart = 0;\n }\n\n /**\n * Start playback of the score.\n *\n * @method start\n * @for p5.Score\n */\n start() {\n this.parts[this.currentPart].start();\n this.scoreStep = 0;\n }\n\n /**\n * Stop playback of the score.\n *\n * @method stop\n * @for p5.Score\n */\n stop() {\n this.parts[this.currentPart].stop();\n this.currentPart = 0;\n this.scoreStep = 0;\n }\n\n /**\n * Pause playback of the score.\n *\n * @method pause\n * @for p5.Score\n */\n pause() {\n this.parts[this.currentPart].stop();\n }\n\n /**\n * Loop playback of the score.\n *\n * @method loop\n * @for p5.Score\n */\n loop() {\n this.looping = true;\n this.start();\n }\n\n /**\n * Stop looping playback of the score. If it\n * is currently playing, this will go into effect\n * after the current round of playback completes.\n *\n * @method noLoop\n * @for p5.Score\n */\n noLoop() {\n this.looping = false;\n }\n\n resetParts() {\n var self = this;\n this.parts.forEach(function (part) {\n self.resetParts[part];\n });\n }\n\n resetPart(i) {\n this.parts[i].stop();\n this.parts[i].partStep = 0;\n for (var p in this.parts[i].phrases) {\n if (this.parts[i]) {\n this.parts[i].phrases[p].phraseStep = 0;\n }\n }\n }\n\n /**\n * Set the tempo for all parts in the score\n *\n * @method setBPM\n * @for p5.Score\n * @param {Number} BPM Beats Per Minute\n * @param {Number} rampTime Seconds from now\n */\n setBPM(bpm, rampTime) {\n for (var i in this.parts) {\n if (this.parts[i]) {\n this.parts[i].setBPM(bpm, rampTime);\n }\n }\n }\n}\n\nfunction playNextPart(aScore) {\n aScore.currentPart++;\n if (aScore.currentPart >= aScore.parts.length) {\n aScore.scoreStep = 0;\n aScore.onended();\n } else {\n aScore.scoreStep = 0;\n aScore.parts[aScore.currentPart - 1].stop();\n aScore.parts[aScore.currentPart].start();\n }\n}\n\nexport { Phrase, Part, Score };\n","import p5sound from './main';\nimport Clock from 'Tone/core/Clock';\n\n/**\n * SoundLoop\n *\n * @class p5.SoundLoop\n * @constructor\n *\n * @param {Function} callback this function will be called on each iteration of theloop\n * @param {Number|String} [interval] amount of time (if a number) or beats (if a string, following Tone.Time convention) for each iteration of the loop. Defaults to 1 second.\n *\n * @example\n * \n * let synth, soundLoop;\n * let notePattern = [60, 62, 64, 67, 69, 72];\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(canvasPressed);\n * colorMode(HSB);\n * background(0, 0, 86);\n * text('tap to start/stop', 10, 20);\n *\n * //the looper's callback is passed the timeFromNow\n * //this value should be used as a reference point from\n * //which to schedule sounds\n * let intervalInSeconds = 0.2;\n * soundLoop = new p5.SoundLoop(onSoundLoop, intervalInSeconds);\n *\n * synth = new p5.MonoSynth();\n * }\n *\n * function canvasPressed() {\n * // ensure audio is enabled\n * userStartAudio();\n *\n * if (soundLoop.isPlaying) {\n * soundLoop.stop();\n * } else {\n * // start the loop\n * soundLoop.start();\n * }\n * }\n *\n * function onSoundLoop(timeFromNow) {\n * let noteIndex = (soundLoop.iterations - 1) % notePattern.length;\n * let note = midiToFreq(notePattern[noteIndex]);\n * synth.play(note, 0.5, timeFromNow);\n * background(noteIndex * 360 / notePattern.length, 50, 100);\n * }\n *
PeakDetect works in conjunction with p5.FFT to\n * look for onsets in some or all of the frequency spectrum.\n *
\n *\n * To use p5.PeakDetect, call update
in the draw loop\n * and pass in a p5.FFT object.\n *
\n * You can listen for a specific part of the frequency spectrum by\n * setting the range between freq1
and freq2
.\n *
threshold
is the threshold for detecting a peak,\n * scaled between 0 and 1. It is logarithmic, so 0.1 is half as loud\n * as 1.0.
\n * The update method is meant to be run in the draw loop, and\n * frames determines how many loops must pass before\n * another peak can be detected.\n * For example, if the frameRate() = 60, you could detect the beat of a\n * 120 beat-per-minute song with this equation:\n * framesPerPeak = 60 / (estimatedBPM / 60 );
\n *
\n * Based on example contribtued by @b2renger, and a simple beat detection\n * explanation by Felix Turner.\n *
\n *\n * @class p5.PeakDetect\n * @constructor\n * @param {Number} [freq1] lowFrequency - defaults to 20Hz\n * @param {Number} [freq2] highFrequency - defaults to 20000 Hz\n * @param {Number} [threshold] Threshold for detecting a beat between 0 and 1\n * scaled logarithmically where 0.1 is 1/2 the loudness\n * of 1.0. Defaults to 0.35.\n * @param {Number} [framesPerPeak] Defaults to 20.\n * @example\n *\n *\n * var cnv, soundFile, fft, peakDetect;\n * var ellipseWidth = 10;\n *\n * function preload() {\n * soundFile = loadSound('assets/beat.mp3');\n * }\n *\n * function setup() {\n * background(0);\n * noStroke();\n * fill(255);\n * textAlign(CENTER);\n *\n * // p5.PeakDetect requires a p5.FFT\n * fft = new p5.FFT();\n * peakDetect = new p5.PeakDetect();\n * }\n *\n * function draw() {\n * background(0);\n * text('click to play/pause', width/2, height/2);\n *\n * // peakDetect accepts an fft post-analysis\n * fft.analyze();\n * peakDetect.update(fft);\n *\n * if ( peakDetect.isDetected ) {\n * ellipseWidth = 50;\n * } else {\n * ellipseWidth *= 0.95;\n * }\n *\n * ellipse(width/2, height/2, ellipseWidth, ellipseWidth);\n * }\n *\n * // toggle play/stop when canvas is clicked\n * function mouseClicked() {\n * if (mouseX > 0 && mouseX < width && mouseY > 0 && mouseY < height) {\n * if (soundFile.isPlaying() ) {\n * soundFile.stop();\n * } else {\n * soundFile.play();\n * }\n * }\n * }\n *
\n * var cnv, soundFile, fft, peakDetect;\n * var ellipseWidth = 0;\n *\n * function preload() {\n * soundFile = loadSound('assets/beat.mp3');\n * }\n *\n * function setup() {\n * cnv = createCanvas(100,100);\n * textAlign(CENTER);\n *\n * fft = new p5.FFT();\n * peakDetect = new p5.PeakDetect();\n *\n * setupSound();\n *\n * // when a beat is detected, call triggerBeat()\n * peakDetect.onPeak(triggerBeat);\n * }\n *\n * function draw() {\n * background(0);\n * fill(255);\n * text('click to play', width/2, height/2);\n *\n * fft.analyze();\n * peakDetect.update(fft);\n *\n * ellipseWidth *= 0.95;\n * ellipse(width/2, height/2, ellipseWidth, ellipseWidth);\n * }\n *\n * // this function is called by peakDetect.onPeak\n * function triggerBeat() {\n * ellipseWidth = 50;\n * }\n *\n * // mouseclick starts/stops sound\n * function setupSound() {\n * cnv.mouseClicked( function() {\n * if (soundFile.isPlaying() ) {\n * soundFile.stop();\n * } else {\n * soundFile.play();\n * }\n * });\n * }\n *
Record sounds for playback and/or to save as a .wav file.\n * The p5.SoundRecorder records all sound output from your sketch,\n * or can be assigned a specific source with setInput().
\n *The record() method accepts a p5.SoundFile as a parameter.\n * When playback is stopped (either after the given amount of time,\n * or with the stop() method), the p5.SoundRecorder will send its\n * recording to that p5.SoundFile for playback.
\n *\n * @class p5.SoundRecorder\n * @constructor\n * @example\n *\n * let mic, recorder, soundFile;\n * let state = 0;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(canvasPressed);\n * background(220);\n * textAlign(CENTER, CENTER);\n *\n * // create an audio in\n * mic = new p5.AudioIn();\n *\n * // prompts user to enable their browser mic\n * mic.start();\n *\n * // create a sound recorder\n * recorder = new p5.SoundRecorder();\n *\n * // connect the mic to the recorder\n * recorder.setInput(mic);\n *\n * // this sound file will be used to\n * // playback & save the recording\n * soundFile = new p5.SoundFile();\n *\n * text('tap to record', width/2, height/2);\n * }\n *\n * function canvasPressed() {\n * // ensure audio is enabled\n * userStartAudio();\n *\n * // make sure user enabled the mic\n * if (state === 0 && mic.enabled) {\n *\n * // record to our p5.SoundFile\n * recorder.record(soundFile);\n *\n * background(255,0,0);\n * text('Recording!', width/2, height/2);\n * state++;\n * }\n * else if (state === 1) {\n * background(0,255,0);\n *\n * // stop recorder and\n * // send result to soundFile\n * recorder.stop();\n *\n * text('Done! Tap to play and download', width/2, height/2, width - 20);\n * state++;\n * }\n *\n * else if (state === 2) {\n * soundFile.play(); // play the result!\n * save(soundFile, 'mySound.wav');\n * state++;\n * }\n * }\n *
\n *\n * // load two soundfile and crossfade beetween them\n * let sound1,sound2;\n * let sound1Gain, sound2Gain, mixGain;\n * function preload(){\n * soundFormats('ogg', 'mp3');\n * sound1 = loadSound('assets/Damscray_-_Dancing_Tiger_01');\n * sound2 = loadSound('assets/beat');\n * }\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(startSound);\n * // create a 'mix' gain bus to which we will connect both soundfiles\n * mixGain = new p5.Gain();\n * mixGain.connect();\n * sound1.disconnect(); // diconnect from p5 output\n * sound1Gain = new p5.Gain(); // setup a gain node\n * sound1Gain.setInput(sound1); // connect the first sound to its input\n * sound1Gain.connect(mixGain); // connect its output to the final mix bus\n * sound2.disconnect();\n * sound2Gain = new p5.Gain();\n * sound2Gain.setInput(sound2);\n * sound2Gain.connect(mixGain);\n * }\n * function startSound() {\n * sound1.loop();\n * sound2.loop();\n * loop();\n * }\n * function mouseReleased() {\n * sound1.stop();\n * sound2.stop();\n * }\n * function draw(){\n * background(220);\n * textAlign(CENTER);\n * textSize(11);\n * fill(0);\n * if (!sound1.isPlaying()) {\n * text('tap and drag to play', width/2, height/2);\n * return;\n * }\n * // map the horizontal position of the mouse to values useable for volume * control of sound1\n * var sound1Volume = constrain(map(mouseX,width,0,0,1), 0, 1);\n * var sound2Volume = 1-sound1Volume;\n * sound1Gain.amp(sound1Volume);\n * sound2Gain.amp(sound2Volume);\n * // map the vertical position of the mouse to values useable for 'output * volume control'\n * var outputVolume = constrain(map(mouseY,height,0,0,1), 0, 1);\n * mixGain.amp(outputVolume);\n * text('output', width/2, height - outputVolume * height * 0.9)\n * fill(255, 0, 255);\n * textAlign(LEFT);\n * text('sound1', 5, height - sound1Volume * height * 0.9);\n * textAlign(RIGHT);\n * text('sound2', width - 5, height - sound2Volume * height * 0.9);\n * }\n *
\n * let monoSynth;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playSynth);\n * background(220);\n * textAlign(CENTER);\n * text('tap to play', width/2, height/2);\n *\n * monoSynth = new p5.MonoSynth();\n * }\n *\n * function playSynth() {\n * userStartAudio();\n *\n * let note = random(['Fb4', 'G4']);\n * // note velocity (volume, from 0 to 1)\n * let velocity = random();\n * // time from now (in seconds)\n * let time = 0;\n * // note duration (in seconds)\n * let dur = 1/6;\n *\n * monoSynth.play(note, velocity, time, dur);\n * }\n *
\n * let monoSynth;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playSynth);\n * background(220);\n * textAlign(CENTER);\n * text('tap to play', width/2, height/2);\n *\n * monoSynth = new p5.MonoSynth();\n * }\n *\n * function playSynth() {\n * userStartAudio();\n *\n * let note = random(['Fb4', 'G4']);\n * // note velocity (volume, from 0 to 1)\n * let velocity = random();\n * // time from now (in seconds)\n * let time = 0;\n * // note duration (in seconds)\n * let dur = 1/6;\n *\n * monoSynth.play(note, velocity, time, dur);\n * }\n *
\n * let monoSynth;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(triggerAttack);\n * background(220);\n * text('tap here for attack, let go to release', 5, 20, width - 20);\n * monoSynth = new p5.MonoSynth();\n * }\n *\n * function triggerAttack() {\n * userStartAudio();\n *\n * monoSynth.triggerAttack(\"E3\");\n * }\n *\n * function mouseReleased() {\n * monoSynth.triggerRelease();\n * }\n *
\n * let monoSynth;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(triggerAttack);\n * background(220);\n * text('tap here for attack, let go to release', 5, 20, width - 20);\n * monoSynth = new p5.MonoSynth();\n * }\n *\n * function triggerAttack() {\n * userStartAudio();\n *\n * monoSynth.triggerAttack(\"E3\");\n * }\n *\n * function mouseReleased() {\n * monoSynth.triggerRelease();\n * }\n *
setRange
),\n * then decayLevel would increase proportionally, to become 0.5.\n * @param {Number} [releaseTime] Time in seconds from now (defaults to 0)\n */\n setADSR(attack, decay, sustain, release) {\n this.env.setADSR(attack, decay, sustain, release);\n }\n\n /**\n * MonoSynth amp\n * @method amp\n * @for p5.MonoSynth\n * @param {Number} vol desired volume\n * @param {Number} [rampTime] Time to reach new volume\n * @return {Number} new volume value\n */\n amp(vol, rampTime) {\n var t = rampTime || 0;\n if (typeof vol !== 'undefined') {\n this.oscillator.amp(vol, t);\n }\n return this.oscillator.amp().value;\n }\n\n /**\n * Connect to a p5.sound / Web Audio object.\n *\n * @method connect\n * @for p5.MonoSynth\n * @param {Object} unit A p5.sound or Web Audio object\n */\n\n connect(unit) {\n var u = unit || p5sound.input;\n this.output.connect(u.input ? u.input : u);\n }\n\n /**\n * Disconnect all outputs\n *\n * @method disconnect\n * @for p5.MonoSynth\n */\n disconnect() {\n if (this.output) {\n this.output.disconnect();\n }\n }\n\n /**\n * Get rid of the MonoSynth and free up its resources / memory.\n *\n * @method dispose\n * @for p5.MonoSynth\n */\n dispose() {\n super.dispose();\n\n if (this.env) {\n this.env.dispose();\n }\n if (this.oscillator) {\n this.oscillator.dispose();\n }\n }\n}\n\nexport default MonoSynth;\n","/**\n * Listen for onsets (a sharp increase in volume) within a given\n * frequency range.\n *\n * @class p5.OnsetDetect\n * @constructor\n * @param {Number} freqLow Low frequency\n * @param {Number} freqHigh High frequency\n * @param {Number} threshold Amplitude threshold between 0 (no energy) and 1 (maximum)\n * @param {Function} callback Function to call when an onset is detected\n */\nclass OnsetDetect {\n constructor(freqLow, freqHigh, threshold, callback) {\n this.isDetected = false;\n this.freqLow = freqLow;\n this.freqHigh = freqHigh;\n this.treshold = threshold;\n this.energy = 0;\n this.penergy = 0;\n\n // speed of decay\n this.sensitivity = 500;\n\n this.callback = callback;\n }\n\n // callback here too?\n update(fftObject, callback) {\n this.energy = fftObject.getEnergy(this.freqLow, this.freqHigh) / 255;\n\n if (this.isDetected === false) {\n if (this.energy - this.penergy > this.treshold) {\n this.isDetected = true;\n\n if (this.callback) {\n this.callback(this.energy);\n } else if (callback) {\n callback(this.energy);\n }\n\n var self = this;\n setTimeout(function () {\n self.isDetected = false;\n }, this.sensitivity);\n }\n }\n\n this.penergy = this.energy;\n }\n}\n\nexport default OnsetDetect;\n","import p5sound from './main';\nimport TimelineSignal from 'Tone/signal/TimelineSignal.js';\nimport { noteToFreq, freqToMidi } from './helpers';\n\n/**\n * An AudioVoice is used as a single voice for sound synthesis.\n * The PolySynth class holds an array of AudioVoice, and deals\n * with voices allocations, with setting notes to be played, and\n * parameters to be set.\n *\n * @class p5.PolySynth\n * @constructor\n *\n * @param {Number} [synthVoice] A monophonic synth voice inheriting\n * the AudioVoice class. Defaults to p5.MonoSynth\n * @param {Number} [maxVoices] Number of voices, defaults to 8;\n * @example\n * \n * let polySynth;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playSynth);\n * background(220);\n * text('click to play', 20, 20);\n *\n * polySynth = new p5.PolySynth();\n * }\n *\n * function playSynth() {\n * userStartAudio();\n *\n * // note duration (in seconds)\n * let dur = 1.5;\n *\n * // time from now (in seconds)\n * let time = 0;\n *\n * // velocity (volume, from 0 to 1)\n * let vel = 0.1;\n *\n * // notes can overlap with each other\n * polySynth.play('G2', vel, 0, dur);\n * polySynth.play('C3', vel, time += 1/3, dur);\n * polySynth.play('G3', vel, time += 1/3, dur);\n * }\n *
\n * let polySynth;\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playSynth);\n * background(220);\n * text('click to play', 20, 20);\n *\n * polySynth = new p5.PolySynth();\n * }\n *\n * function playSynth() {\n * userStartAudio();\n *\n * // note duration (in seconds)\n * let dur = 1.5;\n *\n * // time from now (in seconds)\n * let time = 0;\n *\n * // velocity (volume, from 0 to 1)\n * let vel = 0.1;\n *\n * // notes can overlap with each other\n * polySynth.play('G2', vel, 0, dur);\n * polySynth.play('C3', vel, time += 1/3, dur);\n * polySynth.play('G3', vel, time += 1/3, dur);\n * }\n *
setRange
),\n * then decayLevel would increase proportionally, to become 0.5.\n * @param {Number} [releaseTime] Time in seconds from now (defaults to 0)\n **/\n\n noteADSR(note, a, d, s, r, timeFromNow = 0) {\n var now = p5sound.audiocontext.currentTime;\n var t = now + timeFromNow;\n this.audiovoices[this.notes[note].getValueAtTime(t)].setADSR(a, d, s, r);\n }\n\n /**\n * Set the PolySynths global envelope. This method modifies the envelopes of each\n * monosynth so that all notes are played with this envelope.\n *\n * @method setADSR\n * @for p5.PolySynth\n * @param {Number} [attackTime] Time (in seconds before envelope\n * reaches Attack Level\n * @param {Number} [decayTime] Time (in seconds) before envelope\n * reaches Decay/Sustain Level\n * @param {Number} [susRatio] Ratio between attackLevel and releaseLevel, on a scale from 0 to 1,\n * where 1.0 = attackLevel, 0.0 = releaseLevel.\n * The susRatio determines the decayLevel and the level at which the\n * sustain portion of the envelope will sustain.\n * For example, if attackLevel is 0.4, releaseLevel is 0,\n * and susAmt is 0.5, the decayLevel would be 0.2. If attackLevel is\n * increased to 1.0 (using setRange
),\n * then decayLevel would increase proportionally, to become 0.5.\n * @param {Number} [releaseTime] Time in seconds from now (defaults to 0)\n **/\n setADSR(a, d, s, r) {\n this.audiovoices.forEach(function (voice) {\n voice.setADSR(a, d, s, r);\n });\n }\n\n /**\n * Trigger the Attack, and Decay portion of a MonoSynth.\n * Similar to holding down a key on a piano, but it will\n * hold the sustain level until you let go.\n *\n * @method noteAttack\n * @for p5.PolySynth\n * @param {Number} [note] midi note on which attack should be triggered.\n * @param {Number} [velocity] velocity of the note to play (ranging from 0 to 1)/\n * @param {Number} [secondsFromNow] time from now (in seconds)\n * @example\n * \n * let polySynth = new p5.PolySynth();\n * let pitches = ['G', 'D', 'G', 'C'];\n * let octaves = [2, 3, 4];\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playChord);\n * background(220);\n * text('tap to play', 20, 20);\n * }\n *\n * function playChord() {\n * userStartAudio();\n *\n * // play a chord: multiple notes at the same time\n * for (let i = 0; i < 4; i++) {\n * let note = random(pitches) + random(octaves);\n * polySynth.noteAttack(note, 0.1);\n * }\n * }\n *\n * function mouseReleased() {\n * // release all voices\n * polySynth.noteRelease();\n * }\n *
\n * let polySynth = new p5.PolySynth();\n * let pitches = ['G', 'D', 'G', 'C'];\n * let octaves = [2, 3, 4];\n *\n * function setup() {\n * let cnv = createCanvas(100, 100);\n * cnv.mousePressed(playChord);\n * background(220);\n * text('tap to play', 20, 20);\n * }\n *\n * function playChord() {\n * userStartAudio();\n *\n * // play a chord: multiple notes at the same time\n * for (let i = 0; i < 4; i++) {\n * let note = random(pitches) + random(octaves);\n * polySynth.noteAttack(note, 0.1);\n * }\n * }\n *\n * function mouseReleased() {\n * // release all voices\n * polySynth.noteRelease();\n * }\n *