driftdetect-dashboard 0.7.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/client/assets/{GalaxyTab-Bc9PKsMk.js → GalaxyTab-BsAmWarF.js} +4 -4
  2. package/dist/client/assets/{GalaxyTab-Bc9PKsMk.js.map → GalaxyTab-BsAmWarF.js.map} +1 -1
  3. package/dist/client/assets/main-CVl-4C5E.css +2 -0
  4. package/dist/client/assets/main-QuEZvA3i.js +59 -0
  5. package/dist/client/assets/main-QuEZvA3i.js.map +1 -0
  6. package/dist/client/assets/{sfxr-CO3_Kukg.js → sfxr-Cr89uVKo.js} +2 -2
  7. package/dist/client/assets/{sfxr-CO3_Kukg.js.map → sfxr-Cr89uVKo.js.map} +1 -1
  8. package/dist/client/index.html +2 -2
  9. package/dist/server/api-routes.d.ts.map +1 -1
  10. package/dist/server/quality-gates-api.d.ts.map +1 -0
  11. package/package.json +21 -21
  12. package/LICENSE +0 -21
  13. package/dist/client/assets/main-BdVQNGtK.js +0 -59
  14. package/dist/client/assets/main-BdVQNGtK.js.map +0 -1
  15. package/dist/client/assets/main-NejYwKFb.css +0 -2
  16. package/dist/server/api-routes.d.ts +0 -50
  17. package/dist/server/api-routes.js +0 -634
  18. package/dist/server/api-routes.js.map +0 -1
  19. package/dist/server/dashboard-server.d.ts +0 -64
  20. package/dist/server/dashboard-server.js +0 -154
  21. package/dist/server/dashboard-server.js.map +0 -1
  22. package/dist/server/drift-data-reader.d.ts +0 -522
  23. package/dist/server/drift-data-reader.js +0 -1550
  24. package/dist/server/drift-data-reader.js.map +0 -1
  25. package/dist/server/express-app.d.ts +0 -24
  26. package/dist/server/express-app.js +0 -74
  27. package/dist/server/express-app.js.map +0 -1
  28. package/dist/server/galaxy-data-transformer.d.ts +0 -178
  29. package/dist/server/galaxy-data-transformer.js +0 -562
  30. package/dist/server/galaxy-data-transformer.js.map +0 -1
  31. package/dist/server/index.d.ts +0 -20
  32. package/dist/server/index.js +0 -14
  33. package/dist/server/index.js.map +0 -1
  34. package/dist/server/pattern-watcher.d.ts +0 -55
  35. package/dist/server/pattern-watcher.d.ts.map +0 -1
  36. package/dist/server/pattern-watcher.js +0 -157
  37. package/dist/server/pattern-watcher.js.map +0 -1
  38. package/dist/server/websocket-server.d.ts +0 -83
  39. package/dist/server/websocket-server.js +0 -189
  40. package/dist/server/websocket-server.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{o as Q,g as _t}from"./main-BdVQNGtK.js";function st(S,M){for(var b=0;b<M.length;b++){const a=M[b];if(typeof a!="string"&&!Array.isArray(a)){for(const s in a)if(s!=="default"&&!(s in S)){const l=Object.getOwnPropertyDescriptor(a,s);l&&Object.defineProperty(S,s,l.get?l:{enumerable:!0,get:()=>a[s]})}}}return Object.freeze(Object.defineProperty(S,Symbol.toStringTag,{value:"Module"}))}var Y={exports:{}},V={exports:{}},J;function ht(){return J||(J=1,function(S){var M={chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encLookup:[],Init:function(){for(var a=0;a<4096;a++)this.encLookup[a]=this.chars[a>>6]+this.chars[a&63]},Encode:function(a){for(var s=a.length,l="",f=0;s>2;)n=a[f]<<16|a[f+1]<<8|a[f+2],l+=this.encLookup[n>>12]+this.encLookup[n&4095],s-=3,f+=3;if(s>0){var c=(a[f]&252)>>2,C=(a[f]&3)<<4;if(s>1&&(C|=(a[++f]&240)>>4),l+=this.chars[c],l+=this.chars[C],s==2){var A=(a[f++]&15)<<2;A|=(a[f]&192)>>6,l+=this.chars[A]}s==1&&(l+="="),l+="="}return l}};M.Init();var b=function(a){this.data=[],this.wav=[],this.dataURI="",this.header={chunkId:[82,73,70,70],chunkSize:0,format:[87,65,86,69],subChunk1Id:[102,109,116,32],subChunk1Size:16,audioFormat:1,numChannels:1,sampleRate:8e3,byteRate:0,blockAlign:0,bitsPerSample:8,subChunk2Id:[100,97,116,97],subChunk2Size:0};function s(f){return[f&255,f>>8&255,f>>16&255,f>>24&255]}function l(f){return[f&255,f>>8&255]}this.Make=function(f){f instanceof Array&&(this.data=f),this.header.byteRate=this.header.sampleRate*this.header.numChannels*this.header.bitsPerSample>>3,this.header.blockAlign=this.header.numChannels*this.header.bitsPerSample>>3,this.header.subChunk2Size=this.data.length,this.header.chunkSize=36+this.header.subChunk2Size,this.wav=this.header.chunkId.concat(s(this.header.chunkSize),this.header.format,this.header.subChunk1Id,s(this.header.subChunk1Size),l(this.header.audioFormat),l(this.header.numChannels),s(this.header.sampleRate),s(this.header.byteRate),l(this.header.blockAlign),l(this.header.bitsPerSample),this.header.subChunk2Id,s(this.header.subChunk2Size),this.data),this.dataURI="data:audio/wav;base64,"+M.Encode(this.wav)},a instanceof Array&&this.Make(a)};(function(a,s){S.exports?S.exports=a.RIFFWAVE=s():a.RIFFWAVE=s()})(Q,function(){return b})}(V)),V.exports}(function(S){var M=0,b=1,a=2,s=3,l=1,f=8;function c(){this.oldParams=!0,this.wave_type=M,this.p_env_attack=0,this.p_env_sustain=.3,this.p_env_punch=0,this.p_env_decay=.4,this.p_base_freq=.3,this.p_freq_limit=0,this.p_freq_ramp=0,this.p_freq_dramp=0,this.p_vib_strength=0,this.p_vib_speed=0,this.p_arp_mod=0,this.p_arp_speed=0,this.p_duty=0,this.p_duty_ramp=0,this.p_repeat_speed=0,this.p_pha_offset=0,this.p_pha_ramp=0,this.p_lpf_freq=1,this.p_lpf_ramp=0,this.p_lpf_resonance=0,this.p_hpf_freq=0,this.p_hpf_ramp=0,this.sound_vol=.5,this.sample_rate=44100,this.sample_size=8}function C(t){return t*t}function A(t){return t*t*t}function e(t){return Math.random()*t}function O(t,r){return Math.random()*(r-t)+t}function i(t){return Math.floor(Math.random()*(t+1))}function z(t,r,p){return t<<31|r<<23|p}function K(t){if(isNaN(t))return z(0,255,4919);var r=t<0?1:0;if(t=Math.abs(t),t==0)return z(r,0,0);var p=Math.floor(Math.log(t)/Math.LN2);if(p>127||p<-126)return z(r,255,0);var _=t/Math.pow(2,p);return z(r,p+127,_*Math.pow(2,23)&8388607)}function X(t){var r=t&2147483648?-1:1,p=(t>>23&255)-127,_=t&8388607;if(p==128)return r*(_?Number.NaN:Number.POSITIVE_INFINITY);if(p==-127){if(_==0)return r*0;p=-126,_/=1<<22}else _=(_|1<<23)/(1<<23);return r*_*Math.pow(2,p)}var L="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",I=["wave_type","p_env_attack","p_env_sustain","p_env_punch","p_env_decay","p_base_freq","p_freq_limit","p_freq_ramp","p_freq_dramp","p_vib_strength","p_vib_speed","p_arp_mod","p_arp_speed","p_duty","p_duty_ramp","p_repeat_speed","p_pha_offset","p_pha_ramp","p_lpf_freq","p_lpf_ramp","p_lpf_resonance","p_hpf_freq","p_hpf_ramp"],Z=["p_freq_ramp","p_freq_dramp","p_arp_mod","p_duty_ramp","p_pha_offset","p_pha_ramp","p_lpf_ramp","p_hpf_ramp"];c.prototype.toB58=function(){var t=[];for(var r in I){var p=I[r];if(p=="wave_type")t.push(this[p]);else if(p.indexOf("p_")==0){var _=this[p];_=K(_),t.push(255&_),t.push(255&_>>8),t.push(255&_>>16),t.push(255&_>>24)}}return function(h,m){var v=[],q="",o,d,w,y;for(o in h)for(d=0,w=h[o],q+=w||q.length^o?"":1;d in v||w;)y=v[d],y=y?y*256+w:w,w=y/58|0,v[d]=y%58,d++;for(;d--;)q+=m[v[d]];return q}(t,L)},c.prototype.fromB58=function(t){return this.fromJSON(sfxr.b58decode(t)),this},c.prototype.fromJSON=function(t){for(var r in t)t.hasOwnProperty(r)&&(this[r]=t[r]);return this},c.prototype.pickupCoin=function(){return this.wave_type=b,this.p_base_freq=.4+e(.5),this.p_env_attack=0,this.p_env_sustain=e(.1),this.p_env_decay=.1+e(.4),this.p_env_punch=.3+e(.3),i(1)&&(this.p_arp_speed=.5+e(.2),this.p_arp_mod=.2+e(.4)),this},c.prototype.laserShoot=function(){return this.wave_type=i(2),this.wave_type===a&&i(1)&&(this.wave_type=i(1)),i(2)===0?(this.p_base_freq=.3+e(.6),this.p_freq_limit=e(.1),this.p_freq_ramp=-.35-e(.3)):(this.p_base_freq=.5+e(.5),this.p_freq_limit=this.p_base_freq-.2-e(.6),this.p_freq_limit<.2&&(this.p_freq_limit=.2),this.p_freq_ramp=-.15-e(.2)),this.wave_type===b&&(this.p_duty=1),i(1)?(this.p_duty=e(.5),this.p_duty_ramp=e(.2)):(this.p_duty=.4+e(.5),this.p_duty_ramp=-e(.7)),this.p_env_attack=0,this.p_env_sustain=.1+e(.2),this.p_env_decay=e(.4),i(1)&&(this.p_env_punch=e(.3)),i(2)===0&&(this.p_pha_offset=e(.2),this.p_pha_ramp=-e(.2)),this.p_hpf_freq=e(.3),this},c.prototype.explosion=function(){return this.wave_type=s,i(1)?(this.p_base_freq=C(.1+e(.4)),this.p_freq_ramp=-.1+e(.4)):(this.p_base_freq=C(.2+e(.7)),this.p_freq_ramp=-.2-e(.2)),i(4)===0&&(this.p_freq_ramp=0),i(2)===0&&(this.p_repeat_speed=.3+e(.5)),this.p_env_attack=0,this.p_env_sustain=.1+e(.3),this.p_env_decay=e(.5),i(1)&&(this.p_pha_offset=-.3+e(.9),this.p_pha_ramp=-e(.3)),this.p_env_punch=.2+e(.6),i(1)&&(this.p_vib_strength=e(.7),this.p_vib_speed=e(.6)),i(2)===0&&(this.p_arp_speed=.6+e(.3),this.p_arp_mod=.8-e(1.6)),this},c.prototype.powerUp=function(){return i(1)?(this.wave_type=b,this.p_duty=1):this.p_duty=e(.6),this.p_base_freq=.2+e(.3),i(1)?(this.p_freq_ramp=.1+e(.4),this.p_repeat_speed=.4+e(.4)):(this.p_freq_ramp=.05+e(.2),i(1)&&(this.p_vib_strength=e(.7),this.p_vib_speed=e(.6))),this.p_env_attack=0,this.p_env_sustain=e(.4),this.p_env_decay=.1+e(.4),this},c.prototype.hitHurt=function(){return this.wave_type=i(2),this.wave_type===a&&(this.wave_type=s),this.wave_type===M&&(this.p_duty=e(.6)),this.wave_type===b&&(this.p_duty=1),this.p_base_freq=.2+e(.6),this.p_freq_ramp=-.3-e(.4),this.p_env_attack=0,this.p_env_sustain=e(.1),this.p_env_decay=.1+e(.2),i(1)&&(this.p_hpf_freq=e(.3)),this},c.prototype.jump=function(){return this.wave_type=M,this.p_duty=e(.6),this.p_base_freq=.3+e(.3),this.p_freq_ramp=.1+e(.2),this.p_env_attack=0,this.p_env_sustain=.1+e(.3),this.p_env_decay=.1+e(.2),i(1)&&(this.p_hpf_freq=e(.3)),i(1)&&(this.p_lpf_freq=1-e(.6)),this},c.prototype.blipSelect=function(){return this.wave_type=i(1),this.wave_type===M?this.p_duty=e(.6):this.p_duty=1,this.p_base_freq=.2+e(.4),this.p_env_attack=0,this.p_env_sustain=.1+e(.1),this.p_env_decay=e(.2),this.p_hpf_freq=.1,this},c.prototype.synth=function(){return this.wave_type=i(1),this.p_base_freq=[.2723171360931539,.19255692561524382,.13615778746815113][i(2)],this.p_env_attack=i(4)>3?e(.5):0,this.p_env_sustain=e(1),this.p_env_punch=e(1),this.p_env_decay=e(.9)+.1,this.p_arp_mod=[0,0,0,0,-.3162,.7454,.7454][i(6)],this.p_arp_speed=e(.5)+.4,this.p_duty=e(1),this.p_duty_ramp=i(2)==2?e(1):0,this.p_lpf_freq=[1,.9*e(1)*e(1)+.1][i(1)],this.p_lpf_ramp=O(-1,1),this.p_lpf_resonance=e(1),this.p_hpf_freq=i(3)==3?e(1):0,this.p_hpf_ramp=i(3)==3?e(1):0,this},c.prototype.tone=function(){return this.wave_type=a,this.p_base_freq=.35173364,this.p_env_attack=0,this.p_env_sustain=.6641,this.p_env_decay=0,this.p_env_punch=0,this},c.prototype.click=function(){const t=["explosion","hitHurt"][i(1)];return this[t](),i(1)&&(this.p_freq_ramp=-.5+e(1)),i(1)&&(this.p_env_sustain=(e(.4)+.2)*this.p_env_sustain,this.p_env_decay=(e(.4)+.2)*this.p_env_decay),i(3)==0&&(this.p_env_attack=e(.3)),this.p_base_freq=1-e(.25),this.p_hpf_freq=1-e(.1),this},c.prototype.random=function(){return this.wave_type=i(3),i(1)?this.p_base_freq=A(e(2)-1)+.5:this.p_base_freq=C(e(1)),this.p_freq_limit=0,this.p_freq_ramp=Math.pow(e(2)-1,5),this.p_base_freq>.7&&this.p_freq_ramp>.2&&(this.p_freq_ramp=-this.p_freq_ramp),this.p_base_freq<.2&&this.p_freq_ramp<-.05&&(this.p_freq_ramp=-this.p_freq_ramp),this.p_freq_dramp=Math.pow(e(2)-1,3),this.p_duty=e(2)-1,this.p_duty_ramp=Math.pow(e(2)-1,3),this.p_vib_strength=Math.pow(e(2)-1,3),this.p_vib_speed=O(-1,1),this.p_env_attack=A(O(-1,1)),this.p_env_sustain=C(O(-1,1)),this.p_env_decay=O(-1,1),this.p_env_punch=Math.pow(e(.8),2),this.p_env_attack+this.p_env_sustain+this.p_env_decay<.2&&(this.p_env_sustain+=.2+e(.3),this.p_env_decay+=.2+e(.3)),this.p_lpf_resonance=O(-1,1),this.p_lpf_freq=1-Math.pow(e(1),3),this.p_lpf_ramp=Math.pow(e(2)-1,3),this.p_lpf_freq<.1&&this.p_lpf_ramp<-.05&&(this.p_lpf_ramp=-this.p_lpf_ramp),this.p_hpf_freq=Math.pow(e(1),5),this.p_hpf_ramp=Math.pow(e(2)-1,5),this.p_pha_offset=Math.pow(e(2)-1,3),this.p_pha_ramp=Math.pow(e(2)-1,3),this.p_repeat_speed=e(2)-1,this.p_arp_speed=e(2)-1,this.p_arp_mod=e(2)-1,this},c.prototype.mutate=function(){return i(1)&&(this.p_base_freq+=e(.1)-.05),i(1)&&(this.p_freq_ramp+=e(.1)-.05),i(1)&&(this.p_freq_dramp+=e(.1)-.05),i(1)&&(this.p_duty+=e(.1)-.05),i(1)&&(this.p_duty_ramp+=e(.1)-.05),i(1)&&(this.p_vib_strength+=e(.1)-.05),i(1)&&(this.p_vib_speed+=e(.1)-.05),i(1)&&(this.p_vib_delay+=e(.1)-.05),i(1)&&(this.p_env_attack+=e(.1)-.05),i(1)&&(this.p_env_sustain+=e(.1)-.05),i(1)&&(this.p_env_decay+=e(.1)-.05),i(1)&&(this.p_env_punch+=e(.1)-.05),i(1)&&(this.p_lpf_resonance+=e(.1)-.05),i(1)&&(this.p_lpf_freq+=e(.1)-.05),i(1)&&(this.p_lpf_ramp+=e(.1)-.05),i(1)&&(this.p_hpf_freq+=e(.1)-.05),i(1)&&(this.p_hpf_ramp+=e(.1)-.05),i(1)&&(this.p_pha_offset+=e(.1)-.05),i(1)&&(this.p_pha_ramp+=e(.1)-.05),i(1)&&(this.p_repeat_speed+=e(.1)-.05),i(1)&&(this.p_arp_speed+=e(.1)-.05),i(1)&&(this.p_arp_mod+=e(.1)-.05),this},sfxr={},sfxr.toBuffer=function(t){return new P(t).getRawBuffer().buffer},sfxr.toWebAudio=function(t,r){var p=new P(t),_=p.getRawBuffer().normalized;if(r){for(var h=r.createBuffer(1,_.length,p.sampleRate),m=h.getChannelData(0),v=0;v<_.length;v++)m[v]=_[v];var q=r.createBufferSource();return q.buffer=h,q}},sfxr.toWave=function(t){return new P(t).generate()},sfxr.toAudio=function(t){return sfxr.toWave(t).getAudio()},sfxr.play=function(t){return sfxr.toAudio(t).play()},sfxr.b58decode=function(t){var r=function(q,o){var d=[],w=[],y,g,F,k;for(y in q){if(g=0,F=o.indexOf(q[y]),F<0)return;for(F||w.length^y||w.push(0);g in d||F;)k=d[g],k=k?k*58+F:F,F=k>>8,d[g]=k%256,g++}for(;g--;)w.push(d[g]);return new Uint8Array(w)}(t,L),p={};for(var _ in I){var h=I[_],m=(_-1)*4+1;if(h=="wave_type")p[h]=r[0];else{var v=r[m]|r[m+1]<<8|r[m+2]<<16|r[m+3]<<24;p[h]=X(v)}}return p},sfxr.b58encode=function(t){var r=new c;return r.fromJSON(t),r.toB58()},sfxr.generate=function(t,r){const p=new c,_=r||{};return p.sound_vol=_.sound_vol||.25,p.sample_rate=_.sample_rate||44100,p.sample_size=_.sample_size||8,p[t]()};function P(t){if(typeof t=="string"){var r=new c;t.indexOf("#")==0&&(t=t.slice(1)),t=r.fromB58(t)}this.init(t)}P.prototype.init=function(t){this.parameters=t,this.initForRepeat(),this.waveShape=parseInt(t.wave_type),this.fltw=Math.pow(t.p_lpf_freq,3)*.1,this.enableLowPassFilter=t.p_lpf_freq!=1,this.fltw_d=1+t.p_lpf_ramp*1e-4,this.fltdmp=5/(1+Math.pow(t.p_lpf_resonance,2)*20)*(.01+this.fltw),this.fltdmp>.8&&(this.fltdmp=.8),this.flthp=Math.pow(t.p_hpf_freq,2)*.1,this.flthp_d=1+t.p_hpf_ramp*3e-4,this.vibratoSpeed=Math.pow(t.p_vib_speed,2)*.01,this.vibratoAmplitude=t.p_vib_strength*.5,this.envelopeLength=[Math.floor(t.p_env_attack*t.p_env_attack*1e5),Math.floor(t.p_env_sustain*t.p_env_sustain*1e5),Math.floor(t.p_env_decay*t.p_env_decay*1e5)],this.envelopePunch=t.p_env_punch,this.flangerOffset=Math.pow(t.p_pha_offset,2)*1020,t.p_pha_offset<0&&(this.flangerOffset=-this.flangerOffset),this.flangerOffsetSlide=Math.pow(t.p_pha_ramp,2)*1,t.p_pha_ramp<0&&(this.flangerOffsetSlide=-this.flangerOffsetSlide),this.repeatTime=Math.floor(Math.pow(1-t.p_repeat_speed,2)*2e4+32),t.p_repeat_speed===0&&(this.repeatTime=0),this.gain=Math.exp(t.sound_vol)-1,this.sampleRate=t.sample_rate,this.bitsPerChannel=t.sample_size},P.prototype.initForRepeat=function(){var t=this.parameters;this.elapsedSinceRepeat=0,this.period=100/(t.p_base_freq*t.p_base_freq+.001),this.periodMax=100/(t.p_freq_limit*t.p_freq_limit+.001),this.enableFrequencyCutoff=t.p_freq_limit>0,this.periodMult=1-Math.pow(t.p_freq_ramp,3)*.01,this.periodMultSlide=-Math.pow(t.p_freq_dramp,3)*1e-6,this.dutyCycle=.5-t.p_duty*.5,this.dutyCycleSlide=-t.p_duty_ramp*5e-5,t.p_arp_mod>=0?this.arpeggioMultiplier=1-Math.pow(t.p_arp_mod,2)*.9:this.arpeggioMultiplier=1+Math.pow(t.p_arp_mod,2)*10,this.arpeggioTime=Math.floor(Math.pow(1-t.p_arp_speed,2)*2e4+32),t.p_arp_speed===1&&(this.arpeggioTime=0)},P.prototype.getRawBuffer=function(){for(var t=0,r=0,p=0,_=Array(32),h=0;h<32;++h)_[h]=Math.random()*2-1;for(var m=0,v=0,q=0,o=0,d=0,w=Array(1024),h=0;h<1024;++h)w[h]=0;for(var y=0,g=[],F=[],k=0,j=0,H=Math.floor(44100/this.sampleRate),U=0;this.repeatTime!=0&&++this.elapsedSinceRepeat>=this.repeatTime&&this.initForRepeat(),this.arpeggioTime!=0&&U>=this.arpeggioTime&&(this.arpeggioTime=0,this.period*=this.arpeggioMultiplier),this.periodMult+=this.periodMultSlide,this.period*=this.periodMult,!(this.period>this.periodMax&&(this.period=this.periodMax,this.enableFrequencyCutoff));++U){var D=this.period;this.vibratoAmplitude>0&&(q+=this.vibratoSpeed,D=this.period*(1+Math.sin(q)*this.vibratoAmplitude));var R=Math.floor(D);if(R<f&&(R=f),this.dutyCycle+=this.dutyCycleSlide,this.dutyCycle<0&&(this.dutyCycle=0),this.dutyCycle>.5&&(this.dutyCycle=.5),++v>this.envelopeLength[m]&&(v=0,++m>2))break;var T,B=v/this.envelopeLength[m];m===0?T=B:m===1?T=1+(1-B)*2*this.envelopePunch:T=1-B,this.flangerOffset+=this.flangerOffsetSlide;var W=Math.abs(Math.floor(this.flangerOffset));W>1023&&(W=1023),this.flthp_d!=0&&(this.flthp*=this.flthp_d,this.flthp<1e-5&&(this.flthp=1e-5),this.flthp>.1&&(this.flthp=.1));for(var u=0,G=0;G<f;++G){var x=0;if(o++,o>=R&&(o%=R,this.waveShape===s))for(var h=0;h<32;++h)_[h]=Math.random()*2-1;var E=o/R;if(this.waveShape===M)E<this.dutyCycle?x=.5:x=-.5;else if(this.waveShape===b)E<this.dutyCycle?x=-1+2*E/this.dutyCycle:x=1-2*(E-this.dutyCycle)/(1-this.dutyCycle);else if(this.waveShape===a)x=Math.sin(E*2*Math.PI);else if(this.waveShape===s)x=_[Math.floor(o*32/R)];else throw"ERROR: Bad wave type: "+this.waveShape;var at=t;this.fltw*=this.fltw_d,this.fltw<0&&(this.fltw=0),this.fltw>.1&&(this.fltw=.1),this.enableLowPassFilter?(r+=(x-t)*this.fltw,r-=r*this.fltdmp):(t=x,r=0),t+=r,p+=t-at,p-=p*this.flthp,x=p,w[d&1023]=x,x+=w[d-W+1024&1023],d=d+1&1023,u+=x*T}if(k+=u,++j>=H)j=0,u=k/H,k=0;else continue;u=u/f*l,u*=this.gain,F.push(u),this.bitsPerChannel===8?(u=Math.floor((u+1)*128),u>255?(u=255,++y):u<0&&(u=0,++y),g.push(u)):(u=Math.floor(u*32768),u>=32768?(u=32767,++y):u<-32768&&(u=-32768,++y),g.push(u&255),g.push(u>>8&255))}return{buffer:g,normalized:F,clipped:y}},P.prototype.generate=function(){var t=this.getRawBuffer(),r=new RIFFWAVE;return r.header.sampleRate=this.sampleRate,r.header.bitsPerSample=this.bitsPerChannel,r.Make(t.buffer),r.clipping=t.clipped,r.buffer=t.normalized,r.getAudio=tt(r),r};var N=null,tt=function(t){return function(){var r=null;if(N||("AudioContext"in window?N=new AudioContext:"webkitAudioContext"in window&&(N=new webkitAudioContext)),r=N,r){for(var p=r.createBuffer(1,t.buffer.length,t.header.sampleRate),_=p.getChannelData(0),h=0;h<t.buffer.length;h++)_[h]=t.buffer[h];var m=1,v={channels:[],setVolume:function(o){return m=o,v},play:function(){var o=r.createBufferSource();o.buffer=p;var d=r.createGain();return d.gain.value=m,d.connect(r.destination),o.connect(d),o.start?o.start():o.noteOn&&o.noteOn(0),this.channels.push(o),o}};return v}else{var q=new Audio;return q.src=t.dataURI,q}}},et={p_env_attack:function(t){return t*t*1e5},p_env_sustain:function(t){return t*t*1e5},p_env_punch:function(t){return t},p_env_decay:function(t){return t*t*1e5},p_base_freq:function(t){return 8*44100*(t*t+.001)/100},p_freq_limit:function(t){return 8*44100*(t*t+.001)/100},p_freq_ramp:function(t){return 1-Math.pow(t,3)*.01},p_freq_dramp:function(t){return-Math.pow(t,3)*1e-6},p_vib_speed:function(t){return Math.pow(t,2)*.01},p_vib_strength:function(t){return t*.5},p_arp_mod:function(t){return t>=0?1-Math.pow(t,2)*.9:1+Math.pow(t,2)*10},p_arp_speed:function(t){return t===1?0:Math.floor(Math.pow(1-t,2)*2e4+32)},p_duty:function(t){return .5-t*.5},p_duty_ramp:function(t){return-t*5e-5},p_repeat_speed:function(t){return t===0?0:Math.floor(Math.pow(1-t,2)*2e4)+32},p_pha_offset:function(t){return(t<0?-1:1)*Math.pow(t,2)*1020},p_pha_ramp:function(t){return(t<0?-1:1)*Math.pow(t,2)},p_lpf_freq:function(t){return Math.pow(t,3)*.1},p_lpf_ramp:function(t){return 1+t*1e-4},p_lpf_resonance:function(t){return 5/(1+Math.pow(t,2)*20)},p_hpf_freq:function(t){return Math.pow(t,2)*.1},p_hpf_ramp:function(t){return 1+t*3e-4},sound_vol:function(t){return Math.exp(t)-1}},rt={p_env_attack:function(t){return Math.sqrt(t/1e5)},p_env_sustain:function(t){return Math.sqrt(t/1e5)},p_env_punch:function(t){return t},p_env_decay:function(t){return Math.sqrt(t/1e5)},p_base_freq:function(t){return Math.sqrt(t*100/8/44100-.001)},p_freq_limit:function(t){return Math.sqrt(t*100/8/44100-.001)},p_freq_ramp:function(t){return Math.cbrt((1-t)/.01)},p_freq_dramp:function(t){return Math.cbrt(t/-1e-6)},p_vib_speed:function(t){return Math.sqrt(t/.01)},p_vib_strength:function(t){return t/.5},p_arp_mod:function(t){return t<1?Math.sqrt((1-t)/.9):-Math.sqrt((t-1)/10)},p_arp_speed:function(t){return t===0?1:1-Math.sqrt((t-(t<100?30:32))/2e4)},p_duty:function(t){return(t-.5)/-.5},p_duty_ramp:function(t){return t/-5e-5},p_repeat_speed:function(t){return t===0?0:-(Math.sqrt((t-32)/2e4)-1)},p_pha_offset:function(t){return(t<0?-1:1)*Math.sqrt(Math.abs(t)/1020)},p_pha_ramp:function(t){return(t<0?-1:1)*Math.sqrt(Math.abs(t))},p_lpf_freq:function(t){return Math.cbrt(t/.1)},p_lpf_ramp:function(t){return(t-1)/1e-4},p_lpf_resonance:function(t){return Math.sqrt((1/(t/5)-1)/20)},p_hpf_freq:function(t){return Math.sqrt(t/.1)},p_hpf_ramp:function(t){return(t-1)/3e-4},sound_vol:function(t){return Math.log(t+1)}},it={p_env_attack:function(t){return t/44100},p_env_sustain:function(t){return t/44100},p_env_punch:function(t){return t*100},p_env_decay:function(t){return t/44100},p_base_freq:function(t){return t},p_freq_limit:function(t){return t},p_freq_ramp:function(t){return 44100*Math.log(t)/Math.log(.5)},p_freq_dramp:function(t){return t*44100/Math.pow(2,-44101/44100)},p_vib_speed:function(t){return 441e3/64*t},p_vib_strength:function(t){return t*100},p_arp_mod:function(t){return 1/t},p_arp_speed:function(t){return t/44100},p_duty:function(t){return 100*t},p_duty_ramp:function(t){return 8*44100*t},p_repeat_speed:function(t){return t===0?0:44100/t},p_pha_offset:function(t){return 1e3*t/44100},p_pha_ramp:function(t){return 1e3*t},p_lpf_freq:function(t){return t===.1?0:8*44100*t/(1-t)},p_lpf_ramp:function(t){return Math.pow(t,44100)},p_lpf_resonance:function(t){return 100*(1-t*.11)},p_hpf_freq:function(t){return 8*44100*t/(1-t)},p_hpf_ramp:function(t){return Math.pow(t,44100)},sound_vol:function(t){return 10*Math.log(t*t)/Math.log(10)}},nt={p_env_attack:function(t){return t*44100},p_env_sustain:function(t){return t*44100},p_env_punch:function(t){return t/100},p_env_decay:function(t){return t*44100},p_base_freq:function(t){return t},p_freq_limit:function(t){return t},p_freq_ramp:function(t){return Math.exp(Math.log(.5)*t/44100)},p_freq_dramp:function(t){return t*Math.pow(2,-44101/44100)/44100},p_vib_speed:function(t){return 64/441e3*t},p_vib_strength:function(t){return t/100},p_arp_mod:function(t){return 1/t},p_arp_speed:function(t){return t*44100},p_duty:function(t){return t/100},p_duty_ramp:function(t){return t/(8*44100)},p_repeat_speed:function(t){return t<=0?0:t>1378?32:44100/t},p_pha_offset:function(t){return t/1e3*44100},p_pha_ramp:function(t){return t/1e3},p_lpf_freq:function(t){return t/(t+8*44100)},p_lpf_ramp:function(t){return Math.pow(t,1/44100)},p_lpf_resonance:function(t){return(1-t/100)/.11},p_hpf_freq:function(t){return t/(t+8*44100)},p_hpf_ramp:function(t){return Math.pow(t,1/44100)},sound_vol:function(t){return Math.sqrt(Math.pow(10,t/10))}},pt={p_env_attack:function(t){return(t/44100).toPrecision(4)+" sec"},p_env_sustain:function(t){return(t/44100).toPrecision(4)+" sec"},p_env_punch:function(t){return"+"+(t*100).toPrecision(4)+"%"},p_env_decay:function(t){return(t/44100).toPrecision(4)+" sec"},p_base_freq:function(t){return t.toPrecision(4)+"Hz"},p_freq_limit:function(t){return t.toPrecision(4)+"Hz"},p_freq_ramp:function(t){return(44100*Math.log(t)/Math.log(.5)).toPrecision(4)+" 8va/sec"},p_freq_dramp:function(t){return(t*44100/Math.pow(2,-44101/44100)).toExponential(3)+" 8va/s^2"},p_vib_speed:function(t){return t===0?"OFF":(441e3/64*t).toPrecision(4)+" Hz"},p_vib_strength:function(t){return t===0?"OFF":"&plusmn; "+(t*100).toPrecision(4)+"%"},p_arp_mod:function(t){return t===1?"OFF":"x "+(1/t).toPrecision(4)},p_arp_speed:function(t){return t===0?"OFF":(t/44100).toPrecision(4)+" sec"},p_duty:function(t){return(100*t).toPrecision(4)+"%"},p_duty_ramp:function(t){return(8*44100*t).toPrecision(4)+"%/sec"},p_repeat_speed:function(t){return t===0?"OFF":(44100/t).toPrecision(4)+" Hz"},p_pha_offset:function(t){return t===0?"OFF":(1e3*t/44100).toPrecision(4)+" msec"},p_pha_ramp:function(t){return t===0?"OFF":(1e3*t).toPrecision(4)+" msec/sec"},p_lpf_freq:function(t){return t===.1?"OFF":Math.round(8*44100*t/(1-t))+" Hz"},p_lpf_ramp:function(t){return t===1?"OFF":Math.pow(t,44100).toPrecision(4)+" ^sec"},p_lpf_resonance:function(t){return(100*(1-t*.11)).toPrecision(4)+"%"},p_hpf_freq:function(t){return t===0?"OFF":Math.round(8*44100*t/(1-t))+" Hz"},p_hpf_ramp:function(t){return t===1?"OFF":Math.pow(t,44100).toPrecision(4)+" ^sec"},sound_vol:function(t){t=10*Math.log(t*t)/Math.log(10);var r=t>=0?"+":"";return r+t.toPrecision(4)+" dB"}};(function(t,r){S.exports?(RIFFWAVE=ht(),S.exports=t.jsfxr=r(RIFFWAVE)):t.jsfxr=r(t.RIFFWAVE)})(Q,function(t){return{sfxr,convert:{sliders:et,domain:it,sliders_inverse:rt,domain_inverse:nt,units:pt},parameters:{order:I,signed:Z},Params:c,SoundEffect:P,waveforms:{SQUARE:M,SAWTOOTH:b,SINE:a,NOISE:s}}})})(Y);var $=Y.exports;const ft=_t($),ut=st({__proto__:null,default:ft},[$]);export{ut as s};
2
- //# sourceMappingURL=sfxr-CO3_Kukg.js.map
1
+ import{o as Q,g as _t}from"./main-QuEZvA3i.js";function st(S,M){for(var b=0;b<M.length;b++){const a=M[b];if(typeof a!="string"&&!Array.isArray(a)){for(const s in a)if(s!=="default"&&!(s in S)){const l=Object.getOwnPropertyDescriptor(a,s);l&&Object.defineProperty(S,s,l.get?l:{enumerable:!0,get:()=>a[s]})}}}return Object.freeze(Object.defineProperty(S,Symbol.toStringTag,{value:"Module"}))}var Y={exports:{}},V={exports:{}},J;function ht(){return J||(J=1,function(S){var M={chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encLookup:[],Init:function(){for(var a=0;a<4096;a++)this.encLookup[a]=this.chars[a>>6]+this.chars[a&63]},Encode:function(a){for(var s=a.length,l="",f=0;s>2;)n=a[f]<<16|a[f+1]<<8|a[f+2],l+=this.encLookup[n>>12]+this.encLookup[n&4095],s-=3,f+=3;if(s>0){var c=(a[f]&252)>>2,C=(a[f]&3)<<4;if(s>1&&(C|=(a[++f]&240)>>4),l+=this.chars[c],l+=this.chars[C],s==2){var A=(a[f++]&15)<<2;A|=(a[f]&192)>>6,l+=this.chars[A]}s==1&&(l+="="),l+="="}return l}};M.Init();var b=function(a){this.data=[],this.wav=[],this.dataURI="",this.header={chunkId:[82,73,70,70],chunkSize:0,format:[87,65,86,69],subChunk1Id:[102,109,116,32],subChunk1Size:16,audioFormat:1,numChannels:1,sampleRate:8e3,byteRate:0,blockAlign:0,bitsPerSample:8,subChunk2Id:[100,97,116,97],subChunk2Size:0};function s(f){return[f&255,f>>8&255,f>>16&255,f>>24&255]}function l(f){return[f&255,f>>8&255]}this.Make=function(f){f instanceof Array&&(this.data=f),this.header.byteRate=this.header.sampleRate*this.header.numChannels*this.header.bitsPerSample>>3,this.header.blockAlign=this.header.numChannels*this.header.bitsPerSample>>3,this.header.subChunk2Size=this.data.length,this.header.chunkSize=36+this.header.subChunk2Size,this.wav=this.header.chunkId.concat(s(this.header.chunkSize),this.header.format,this.header.subChunk1Id,s(this.header.subChunk1Size),l(this.header.audioFormat),l(this.header.numChannels),s(this.header.sampleRate),s(this.header.byteRate),l(this.header.blockAlign),l(this.header.bitsPerSample),this.header.subChunk2Id,s(this.header.subChunk2Size),this.data),this.dataURI="data:audio/wav;base64,"+M.Encode(this.wav)},a instanceof Array&&this.Make(a)};(function(a,s){S.exports?S.exports=a.RIFFWAVE=s():a.RIFFWAVE=s()})(Q,function(){return b})}(V)),V.exports}(function(S){var M=0,b=1,a=2,s=3,l=1,f=8;function c(){this.oldParams=!0,this.wave_type=M,this.p_env_attack=0,this.p_env_sustain=.3,this.p_env_punch=0,this.p_env_decay=.4,this.p_base_freq=.3,this.p_freq_limit=0,this.p_freq_ramp=0,this.p_freq_dramp=0,this.p_vib_strength=0,this.p_vib_speed=0,this.p_arp_mod=0,this.p_arp_speed=0,this.p_duty=0,this.p_duty_ramp=0,this.p_repeat_speed=0,this.p_pha_offset=0,this.p_pha_ramp=0,this.p_lpf_freq=1,this.p_lpf_ramp=0,this.p_lpf_resonance=0,this.p_hpf_freq=0,this.p_hpf_ramp=0,this.sound_vol=.5,this.sample_rate=44100,this.sample_size=8}function C(t){return t*t}function A(t){return t*t*t}function e(t){return Math.random()*t}function O(t,r){return Math.random()*(r-t)+t}function i(t){return Math.floor(Math.random()*(t+1))}function z(t,r,p){return t<<31|r<<23|p}function K(t){if(isNaN(t))return z(0,255,4919);var r=t<0?1:0;if(t=Math.abs(t),t==0)return z(r,0,0);var p=Math.floor(Math.log(t)/Math.LN2);if(p>127||p<-126)return z(r,255,0);var _=t/Math.pow(2,p);return z(r,p+127,_*Math.pow(2,23)&8388607)}function X(t){var r=t&2147483648?-1:1,p=(t>>23&255)-127,_=t&8388607;if(p==128)return r*(_?Number.NaN:Number.POSITIVE_INFINITY);if(p==-127){if(_==0)return r*0;p=-126,_/=1<<22}else _=(_|1<<23)/(1<<23);return r*_*Math.pow(2,p)}var L="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",I=["wave_type","p_env_attack","p_env_sustain","p_env_punch","p_env_decay","p_base_freq","p_freq_limit","p_freq_ramp","p_freq_dramp","p_vib_strength","p_vib_speed","p_arp_mod","p_arp_speed","p_duty","p_duty_ramp","p_repeat_speed","p_pha_offset","p_pha_ramp","p_lpf_freq","p_lpf_ramp","p_lpf_resonance","p_hpf_freq","p_hpf_ramp"],Z=["p_freq_ramp","p_freq_dramp","p_arp_mod","p_duty_ramp","p_pha_offset","p_pha_ramp","p_lpf_ramp","p_hpf_ramp"];c.prototype.toB58=function(){var t=[];for(var r in I){var p=I[r];if(p=="wave_type")t.push(this[p]);else if(p.indexOf("p_")==0){var _=this[p];_=K(_),t.push(255&_),t.push(255&_>>8),t.push(255&_>>16),t.push(255&_>>24)}}return function(h,m){var v=[],q="",o,d,w,y;for(o in h)for(d=0,w=h[o],q+=w||q.length^o?"":1;d in v||w;)y=v[d],y=y?y*256+w:w,w=y/58|0,v[d]=y%58,d++;for(;d--;)q+=m[v[d]];return q}(t,L)},c.prototype.fromB58=function(t){return this.fromJSON(sfxr.b58decode(t)),this},c.prototype.fromJSON=function(t){for(var r in t)t.hasOwnProperty(r)&&(this[r]=t[r]);return this},c.prototype.pickupCoin=function(){return this.wave_type=b,this.p_base_freq=.4+e(.5),this.p_env_attack=0,this.p_env_sustain=e(.1),this.p_env_decay=.1+e(.4),this.p_env_punch=.3+e(.3),i(1)&&(this.p_arp_speed=.5+e(.2),this.p_arp_mod=.2+e(.4)),this},c.prototype.laserShoot=function(){return this.wave_type=i(2),this.wave_type===a&&i(1)&&(this.wave_type=i(1)),i(2)===0?(this.p_base_freq=.3+e(.6),this.p_freq_limit=e(.1),this.p_freq_ramp=-.35-e(.3)):(this.p_base_freq=.5+e(.5),this.p_freq_limit=this.p_base_freq-.2-e(.6),this.p_freq_limit<.2&&(this.p_freq_limit=.2),this.p_freq_ramp=-.15-e(.2)),this.wave_type===b&&(this.p_duty=1),i(1)?(this.p_duty=e(.5),this.p_duty_ramp=e(.2)):(this.p_duty=.4+e(.5),this.p_duty_ramp=-e(.7)),this.p_env_attack=0,this.p_env_sustain=.1+e(.2),this.p_env_decay=e(.4),i(1)&&(this.p_env_punch=e(.3)),i(2)===0&&(this.p_pha_offset=e(.2),this.p_pha_ramp=-e(.2)),this.p_hpf_freq=e(.3),this},c.prototype.explosion=function(){return this.wave_type=s,i(1)?(this.p_base_freq=C(.1+e(.4)),this.p_freq_ramp=-.1+e(.4)):(this.p_base_freq=C(.2+e(.7)),this.p_freq_ramp=-.2-e(.2)),i(4)===0&&(this.p_freq_ramp=0),i(2)===0&&(this.p_repeat_speed=.3+e(.5)),this.p_env_attack=0,this.p_env_sustain=.1+e(.3),this.p_env_decay=e(.5),i(1)&&(this.p_pha_offset=-.3+e(.9),this.p_pha_ramp=-e(.3)),this.p_env_punch=.2+e(.6),i(1)&&(this.p_vib_strength=e(.7),this.p_vib_speed=e(.6)),i(2)===0&&(this.p_arp_speed=.6+e(.3),this.p_arp_mod=.8-e(1.6)),this},c.prototype.powerUp=function(){return i(1)?(this.wave_type=b,this.p_duty=1):this.p_duty=e(.6),this.p_base_freq=.2+e(.3),i(1)?(this.p_freq_ramp=.1+e(.4),this.p_repeat_speed=.4+e(.4)):(this.p_freq_ramp=.05+e(.2),i(1)&&(this.p_vib_strength=e(.7),this.p_vib_speed=e(.6))),this.p_env_attack=0,this.p_env_sustain=e(.4),this.p_env_decay=.1+e(.4),this},c.prototype.hitHurt=function(){return this.wave_type=i(2),this.wave_type===a&&(this.wave_type=s),this.wave_type===M&&(this.p_duty=e(.6)),this.wave_type===b&&(this.p_duty=1),this.p_base_freq=.2+e(.6),this.p_freq_ramp=-.3-e(.4),this.p_env_attack=0,this.p_env_sustain=e(.1),this.p_env_decay=.1+e(.2),i(1)&&(this.p_hpf_freq=e(.3)),this},c.prototype.jump=function(){return this.wave_type=M,this.p_duty=e(.6),this.p_base_freq=.3+e(.3),this.p_freq_ramp=.1+e(.2),this.p_env_attack=0,this.p_env_sustain=.1+e(.3),this.p_env_decay=.1+e(.2),i(1)&&(this.p_hpf_freq=e(.3)),i(1)&&(this.p_lpf_freq=1-e(.6)),this},c.prototype.blipSelect=function(){return this.wave_type=i(1),this.wave_type===M?this.p_duty=e(.6):this.p_duty=1,this.p_base_freq=.2+e(.4),this.p_env_attack=0,this.p_env_sustain=.1+e(.1),this.p_env_decay=e(.2),this.p_hpf_freq=.1,this},c.prototype.synth=function(){return this.wave_type=i(1),this.p_base_freq=[.2723171360931539,.19255692561524382,.13615778746815113][i(2)],this.p_env_attack=i(4)>3?e(.5):0,this.p_env_sustain=e(1),this.p_env_punch=e(1),this.p_env_decay=e(.9)+.1,this.p_arp_mod=[0,0,0,0,-.3162,.7454,.7454][i(6)],this.p_arp_speed=e(.5)+.4,this.p_duty=e(1),this.p_duty_ramp=i(2)==2?e(1):0,this.p_lpf_freq=[1,.9*e(1)*e(1)+.1][i(1)],this.p_lpf_ramp=O(-1,1),this.p_lpf_resonance=e(1),this.p_hpf_freq=i(3)==3?e(1):0,this.p_hpf_ramp=i(3)==3?e(1):0,this},c.prototype.tone=function(){return this.wave_type=a,this.p_base_freq=.35173364,this.p_env_attack=0,this.p_env_sustain=.6641,this.p_env_decay=0,this.p_env_punch=0,this},c.prototype.click=function(){const t=["explosion","hitHurt"][i(1)];return this[t](),i(1)&&(this.p_freq_ramp=-.5+e(1)),i(1)&&(this.p_env_sustain=(e(.4)+.2)*this.p_env_sustain,this.p_env_decay=(e(.4)+.2)*this.p_env_decay),i(3)==0&&(this.p_env_attack=e(.3)),this.p_base_freq=1-e(.25),this.p_hpf_freq=1-e(.1),this},c.prototype.random=function(){return this.wave_type=i(3),i(1)?this.p_base_freq=A(e(2)-1)+.5:this.p_base_freq=C(e(1)),this.p_freq_limit=0,this.p_freq_ramp=Math.pow(e(2)-1,5),this.p_base_freq>.7&&this.p_freq_ramp>.2&&(this.p_freq_ramp=-this.p_freq_ramp),this.p_base_freq<.2&&this.p_freq_ramp<-.05&&(this.p_freq_ramp=-this.p_freq_ramp),this.p_freq_dramp=Math.pow(e(2)-1,3),this.p_duty=e(2)-1,this.p_duty_ramp=Math.pow(e(2)-1,3),this.p_vib_strength=Math.pow(e(2)-1,3),this.p_vib_speed=O(-1,1),this.p_env_attack=A(O(-1,1)),this.p_env_sustain=C(O(-1,1)),this.p_env_decay=O(-1,1),this.p_env_punch=Math.pow(e(.8),2),this.p_env_attack+this.p_env_sustain+this.p_env_decay<.2&&(this.p_env_sustain+=.2+e(.3),this.p_env_decay+=.2+e(.3)),this.p_lpf_resonance=O(-1,1),this.p_lpf_freq=1-Math.pow(e(1),3),this.p_lpf_ramp=Math.pow(e(2)-1,3),this.p_lpf_freq<.1&&this.p_lpf_ramp<-.05&&(this.p_lpf_ramp=-this.p_lpf_ramp),this.p_hpf_freq=Math.pow(e(1),5),this.p_hpf_ramp=Math.pow(e(2)-1,5),this.p_pha_offset=Math.pow(e(2)-1,3),this.p_pha_ramp=Math.pow(e(2)-1,3),this.p_repeat_speed=e(2)-1,this.p_arp_speed=e(2)-1,this.p_arp_mod=e(2)-1,this},c.prototype.mutate=function(){return i(1)&&(this.p_base_freq+=e(.1)-.05),i(1)&&(this.p_freq_ramp+=e(.1)-.05),i(1)&&(this.p_freq_dramp+=e(.1)-.05),i(1)&&(this.p_duty+=e(.1)-.05),i(1)&&(this.p_duty_ramp+=e(.1)-.05),i(1)&&(this.p_vib_strength+=e(.1)-.05),i(1)&&(this.p_vib_speed+=e(.1)-.05),i(1)&&(this.p_vib_delay+=e(.1)-.05),i(1)&&(this.p_env_attack+=e(.1)-.05),i(1)&&(this.p_env_sustain+=e(.1)-.05),i(1)&&(this.p_env_decay+=e(.1)-.05),i(1)&&(this.p_env_punch+=e(.1)-.05),i(1)&&(this.p_lpf_resonance+=e(.1)-.05),i(1)&&(this.p_lpf_freq+=e(.1)-.05),i(1)&&(this.p_lpf_ramp+=e(.1)-.05),i(1)&&(this.p_hpf_freq+=e(.1)-.05),i(1)&&(this.p_hpf_ramp+=e(.1)-.05),i(1)&&(this.p_pha_offset+=e(.1)-.05),i(1)&&(this.p_pha_ramp+=e(.1)-.05),i(1)&&(this.p_repeat_speed+=e(.1)-.05),i(1)&&(this.p_arp_speed+=e(.1)-.05),i(1)&&(this.p_arp_mod+=e(.1)-.05),this},sfxr={},sfxr.toBuffer=function(t){return new P(t).getRawBuffer().buffer},sfxr.toWebAudio=function(t,r){var p=new P(t),_=p.getRawBuffer().normalized;if(r){for(var h=r.createBuffer(1,_.length,p.sampleRate),m=h.getChannelData(0),v=0;v<_.length;v++)m[v]=_[v];var q=r.createBufferSource();return q.buffer=h,q}},sfxr.toWave=function(t){return new P(t).generate()},sfxr.toAudio=function(t){return sfxr.toWave(t).getAudio()},sfxr.play=function(t){return sfxr.toAudio(t).play()},sfxr.b58decode=function(t){var r=function(q,o){var d=[],w=[],y,g,F,k;for(y in q){if(g=0,F=o.indexOf(q[y]),F<0)return;for(F||w.length^y||w.push(0);g in d||F;)k=d[g],k=k?k*58+F:F,F=k>>8,d[g]=k%256,g++}for(;g--;)w.push(d[g]);return new Uint8Array(w)}(t,L),p={};for(var _ in I){var h=I[_],m=(_-1)*4+1;if(h=="wave_type")p[h]=r[0];else{var v=r[m]|r[m+1]<<8|r[m+2]<<16|r[m+3]<<24;p[h]=X(v)}}return p},sfxr.b58encode=function(t){var r=new c;return r.fromJSON(t),r.toB58()},sfxr.generate=function(t,r){const p=new c,_=r||{};return p.sound_vol=_.sound_vol||.25,p.sample_rate=_.sample_rate||44100,p.sample_size=_.sample_size||8,p[t]()};function P(t){if(typeof t=="string"){var r=new c;t.indexOf("#")==0&&(t=t.slice(1)),t=r.fromB58(t)}this.init(t)}P.prototype.init=function(t){this.parameters=t,this.initForRepeat(),this.waveShape=parseInt(t.wave_type),this.fltw=Math.pow(t.p_lpf_freq,3)*.1,this.enableLowPassFilter=t.p_lpf_freq!=1,this.fltw_d=1+t.p_lpf_ramp*1e-4,this.fltdmp=5/(1+Math.pow(t.p_lpf_resonance,2)*20)*(.01+this.fltw),this.fltdmp>.8&&(this.fltdmp=.8),this.flthp=Math.pow(t.p_hpf_freq,2)*.1,this.flthp_d=1+t.p_hpf_ramp*3e-4,this.vibratoSpeed=Math.pow(t.p_vib_speed,2)*.01,this.vibratoAmplitude=t.p_vib_strength*.5,this.envelopeLength=[Math.floor(t.p_env_attack*t.p_env_attack*1e5),Math.floor(t.p_env_sustain*t.p_env_sustain*1e5),Math.floor(t.p_env_decay*t.p_env_decay*1e5)],this.envelopePunch=t.p_env_punch,this.flangerOffset=Math.pow(t.p_pha_offset,2)*1020,t.p_pha_offset<0&&(this.flangerOffset=-this.flangerOffset),this.flangerOffsetSlide=Math.pow(t.p_pha_ramp,2)*1,t.p_pha_ramp<0&&(this.flangerOffsetSlide=-this.flangerOffsetSlide),this.repeatTime=Math.floor(Math.pow(1-t.p_repeat_speed,2)*2e4+32),t.p_repeat_speed===0&&(this.repeatTime=0),this.gain=Math.exp(t.sound_vol)-1,this.sampleRate=t.sample_rate,this.bitsPerChannel=t.sample_size},P.prototype.initForRepeat=function(){var t=this.parameters;this.elapsedSinceRepeat=0,this.period=100/(t.p_base_freq*t.p_base_freq+.001),this.periodMax=100/(t.p_freq_limit*t.p_freq_limit+.001),this.enableFrequencyCutoff=t.p_freq_limit>0,this.periodMult=1-Math.pow(t.p_freq_ramp,3)*.01,this.periodMultSlide=-Math.pow(t.p_freq_dramp,3)*1e-6,this.dutyCycle=.5-t.p_duty*.5,this.dutyCycleSlide=-t.p_duty_ramp*5e-5,t.p_arp_mod>=0?this.arpeggioMultiplier=1-Math.pow(t.p_arp_mod,2)*.9:this.arpeggioMultiplier=1+Math.pow(t.p_arp_mod,2)*10,this.arpeggioTime=Math.floor(Math.pow(1-t.p_arp_speed,2)*2e4+32),t.p_arp_speed===1&&(this.arpeggioTime=0)},P.prototype.getRawBuffer=function(){for(var t=0,r=0,p=0,_=Array(32),h=0;h<32;++h)_[h]=Math.random()*2-1;for(var m=0,v=0,q=0,o=0,d=0,w=Array(1024),h=0;h<1024;++h)w[h]=0;for(var y=0,g=[],F=[],k=0,j=0,H=Math.floor(44100/this.sampleRate),U=0;this.repeatTime!=0&&++this.elapsedSinceRepeat>=this.repeatTime&&this.initForRepeat(),this.arpeggioTime!=0&&U>=this.arpeggioTime&&(this.arpeggioTime=0,this.period*=this.arpeggioMultiplier),this.periodMult+=this.periodMultSlide,this.period*=this.periodMult,!(this.period>this.periodMax&&(this.period=this.periodMax,this.enableFrequencyCutoff));++U){var D=this.period;this.vibratoAmplitude>0&&(q+=this.vibratoSpeed,D=this.period*(1+Math.sin(q)*this.vibratoAmplitude));var R=Math.floor(D);if(R<f&&(R=f),this.dutyCycle+=this.dutyCycleSlide,this.dutyCycle<0&&(this.dutyCycle=0),this.dutyCycle>.5&&(this.dutyCycle=.5),++v>this.envelopeLength[m]&&(v=0,++m>2))break;var T,B=v/this.envelopeLength[m];m===0?T=B:m===1?T=1+(1-B)*2*this.envelopePunch:T=1-B,this.flangerOffset+=this.flangerOffsetSlide;var W=Math.abs(Math.floor(this.flangerOffset));W>1023&&(W=1023),this.flthp_d!=0&&(this.flthp*=this.flthp_d,this.flthp<1e-5&&(this.flthp=1e-5),this.flthp>.1&&(this.flthp=.1));for(var u=0,G=0;G<f;++G){var x=0;if(o++,o>=R&&(o%=R,this.waveShape===s))for(var h=0;h<32;++h)_[h]=Math.random()*2-1;var E=o/R;if(this.waveShape===M)E<this.dutyCycle?x=.5:x=-.5;else if(this.waveShape===b)E<this.dutyCycle?x=-1+2*E/this.dutyCycle:x=1-2*(E-this.dutyCycle)/(1-this.dutyCycle);else if(this.waveShape===a)x=Math.sin(E*2*Math.PI);else if(this.waveShape===s)x=_[Math.floor(o*32/R)];else throw"ERROR: Bad wave type: "+this.waveShape;var at=t;this.fltw*=this.fltw_d,this.fltw<0&&(this.fltw=0),this.fltw>.1&&(this.fltw=.1),this.enableLowPassFilter?(r+=(x-t)*this.fltw,r-=r*this.fltdmp):(t=x,r=0),t+=r,p+=t-at,p-=p*this.flthp,x=p,w[d&1023]=x,x+=w[d-W+1024&1023],d=d+1&1023,u+=x*T}if(k+=u,++j>=H)j=0,u=k/H,k=0;else continue;u=u/f*l,u*=this.gain,F.push(u),this.bitsPerChannel===8?(u=Math.floor((u+1)*128),u>255?(u=255,++y):u<0&&(u=0,++y),g.push(u)):(u=Math.floor(u*32768),u>=32768?(u=32767,++y):u<-32768&&(u=-32768,++y),g.push(u&255),g.push(u>>8&255))}return{buffer:g,normalized:F,clipped:y}},P.prototype.generate=function(){var t=this.getRawBuffer(),r=new RIFFWAVE;return r.header.sampleRate=this.sampleRate,r.header.bitsPerSample=this.bitsPerChannel,r.Make(t.buffer),r.clipping=t.clipped,r.buffer=t.normalized,r.getAudio=tt(r),r};var N=null,tt=function(t){return function(){var r=null;if(N||("AudioContext"in window?N=new AudioContext:"webkitAudioContext"in window&&(N=new webkitAudioContext)),r=N,r){for(var p=r.createBuffer(1,t.buffer.length,t.header.sampleRate),_=p.getChannelData(0),h=0;h<t.buffer.length;h++)_[h]=t.buffer[h];var m=1,v={channels:[],setVolume:function(o){return m=o,v},play:function(){var o=r.createBufferSource();o.buffer=p;var d=r.createGain();return d.gain.value=m,d.connect(r.destination),o.connect(d),o.start?o.start():o.noteOn&&o.noteOn(0),this.channels.push(o),o}};return v}else{var q=new Audio;return q.src=t.dataURI,q}}},et={p_env_attack:function(t){return t*t*1e5},p_env_sustain:function(t){return t*t*1e5},p_env_punch:function(t){return t},p_env_decay:function(t){return t*t*1e5},p_base_freq:function(t){return 8*44100*(t*t+.001)/100},p_freq_limit:function(t){return 8*44100*(t*t+.001)/100},p_freq_ramp:function(t){return 1-Math.pow(t,3)*.01},p_freq_dramp:function(t){return-Math.pow(t,3)*1e-6},p_vib_speed:function(t){return Math.pow(t,2)*.01},p_vib_strength:function(t){return t*.5},p_arp_mod:function(t){return t>=0?1-Math.pow(t,2)*.9:1+Math.pow(t,2)*10},p_arp_speed:function(t){return t===1?0:Math.floor(Math.pow(1-t,2)*2e4+32)},p_duty:function(t){return .5-t*.5},p_duty_ramp:function(t){return-t*5e-5},p_repeat_speed:function(t){return t===0?0:Math.floor(Math.pow(1-t,2)*2e4)+32},p_pha_offset:function(t){return(t<0?-1:1)*Math.pow(t,2)*1020},p_pha_ramp:function(t){return(t<0?-1:1)*Math.pow(t,2)},p_lpf_freq:function(t){return Math.pow(t,3)*.1},p_lpf_ramp:function(t){return 1+t*1e-4},p_lpf_resonance:function(t){return 5/(1+Math.pow(t,2)*20)},p_hpf_freq:function(t){return Math.pow(t,2)*.1},p_hpf_ramp:function(t){return 1+t*3e-4},sound_vol:function(t){return Math.exp(t)-1}},rt={p_env_attack:function(t){return Math.sqrt(t/1e5)},p_env_sustain:function(t){return Math.sqrt(t/1e5)},p_env_punch:function(t){return t},p_env_decay:function(t){return Math.sqrt(t/1e5)},p_base_freq:function(t){return Math.sqrt(t*100/8/44100-.001)},p_freq_limit:function(t){return Math.sqrt(t*100/8/44100-.001)},p_freq_ramp:function(t){return Math.cbrt((1-t)/.01)},p_freq_dramp:function(t){return Math.cbrt(t/-1e-6)},p_vib_speed:function(t){return Math.sqrt(t/.01)},p_vib_strength:function(t){return t/.5},p_arp_mod:function(t){return t<1?Math.sqrt((1-t)/.9):-Math.sqrt((t-1)/10)},p_arp_speed:function(t){return t===0?1:1-Math.sqrt((t-(t<100?30:32))/2e4)},p_duty:function(t){return(t-.5)/-.5},p_duty_ramp:function(t){return t/-5e-5},p_repeat_speed:function(t){return t===0?0:-(Math.sqrt((t-32)/2e4)-1)},p_pha_offset:function(t){return(t<0?-1:1)*Math.sqrt(Math.abs(t)/1020)},p_pha_ramp:function(t){return(t<0?-1:1)*Math.sqrt(Math.abs(t))},p_lpf_freq:function(t){return Math.cbrt(t/.1)},p_lpf_ramp:function(t){return(t-1)/1e-4},p_lpf_resonance:function(t){return Math.sqrt((1/(t/5)-1)/20)},p_hpf_freq:function(t){return Math.sqrt(t/.1)},p_hpf_ramp:function(t){return(t-1)/3e-4},sound_vol:function(t){return Math.log(t+1)}},it={p_env_attack:function(t){return t/44100},p_env_sustain:function(t){return t/44100},p_env_punch:function(t){return t*100},p_env_decay:function(t){return t/44100},p_base_freq:function(t){return t},p_freq_limit:function(t){return t},p_freq_ramp:function(t){return 44100*Math.log(t)/Math.log(.5)},p_freq_dramp:function(t){return t*44100/Math.pow(2,-44101/44100)},p_vib_speed:function(t){return 441e3/64*t},p_vib_strength:function(t){return t*100},p_arp_mod:function(t){return 1/t},p_arp_speed:function(t){return t/44100},p_duty:function(t){return 100*t},p_duty_ramp:function(t){return 8*44100*t},p_repeat_speed:function(t){return t===0?0:44100/t},p_pha_offset:function(t){return 1e3*t/44100},p_pha_ramp:function(t){return 1e3*t},p_lpf_freq:function(t){return t===.1?0:8*44100*t/(1-t)},p_lpf_ramp:function(t){return Math.pow(t,44100)},p_lpf_resonance:function(t){return 100*(1-t*.11)},p_hpf_freq:function(t){return 8*44100*t/(1-t)},p_hpf_ramp:function(t){return Math.pow(t,44100)},sound_vol:function(t){return 10*Math.log(t*t)/Math.log(10)}},nt={p_env_attack:function(t){return t*44100},p_env_sustain:function(t){return t*44100},p_env_punch:function(t){return t/100},p_env_decay:function(t){return t*44100},p_base_freq:function(t){return t},p_freq_limit:function(t){return t},p_freq_ramp:function(t){return Math.exp(Math.log(.5)*t/44100)},p_freq_dramp:function(t){return t*Math.pow(2,-44101/44100)/44100},p_vib_speed:function(t){return 64/441e3*t},p_vib_strength:function(t){return t/100},p_arp_mod:function(t){return 1/t},p_arp_speed:function(t){return t*44100},p_duty:function(t){return t/100},p_duty_ramp:function(t){return t/(8*44100)},p_repeat_speed:function(t){return t<=0?0:t>1378?32:44100/t},p_pha_offset:function(t){return t/1e3*44100},p_pha_ramp:function(t){return t/1e3},p_lpf_freq:function(t){return t/(t+8*44100)},p_lpf_ramp:function(t){return Math.pow(t,1/44100)},p_lpf_resonance:function(t){return(1-t/100)/.11},p_hpf_freq:function(t){return t/(t+8*44100)},p_hpf_ramp:function(t){return Math.pow(t,1/44100)},sound_vol:function(t){return Math.sqrt(Math.pow(10,t/10))}},pt={p_env_attack:function(t){return(t/44100).toPrecision(4)+" sec"},p_env_sustain:function(t){return(t/44100).toPrecision(4)+" sec"},p_env_punch:function(t){return"+"+(t*100).toPrecision(4)+"%"},p_env_decay:function(t){return(t/44100).toPrecision(4)+" sec"},p_base_freq:function(t){return t.toPrecision(4)+"Hz"},p_freq_limit:function(t){return t.toPrecision(4)+"Hz"},p_freq_ramp:function(t){return(44100*Math.log(t)/Math.log(.5)).toPrecision(4)+" 8va/sec"},p_freq_dramp:function(t){return(t*44100/Math.pow(2,-44101/44100)).toExponential(3)+" 8va/s^2"},p_vib_speed:function(t){return t===0?"OFF":(441e3/64*t).toPrecision(4)+" Hz"},p_vib_strength:function(t){return t===0?"OFF":"&plusmn; "+(t*100).toPrecision(4)+"%"},p_arp_mod:function(t){return t===1?"OFF":"x "+(1/t).toPrecision(4)},p_arp_speed:function(t){return t===0?"OFF":(t/44100).toPrecision(4)+" sec"},p_duty:function(t){return(100*t).toPrecision(4)+"%"},p_duty_ramp:function(t){return(8*44100*t).toPrecision(4)+"%/sec"},p_repeat_speed:function(t){return t===0?"OFF":(44100/t).toPrecision(4)+" Hz"},p_pha_offset:function(t){return t===0?"OFF":(1e3*t/44100).toPrecision(4)+" msec"},p_pha_ramp:function(t){return t===0?"OFF":(1e3*t).toPrecision(4)+" msec/sec"},p_lpf_freq:function(t){return t===.1?"OFF":Math.round(8*44100*t/(1-t))+" Hz"},p_lpf_ramp:function(t){return t===1?"OFF":Math.pow(t,44100).toPrecision(4)+" ^sec"},p_lpf_resonance:function(t){return(100*(1-t*.11)).toPrecision(4)+"%"},p_hpf_freq:function(t){return t===0?"OFF":Math.round(8*44100*t/(1-t))+" Hz"},p_hpf_ramp:function(t){return t===1?"OFF":Math.pow(t,44100).toPrecision(4)+" ^sec"},sound_vol:function(t){t=10*Math.log(t*t)/Math.log(10);var r=t>=0?"+":"";return r+t.toPrecision(4)+" dB"}};(function(t,r){S.exports?(RIFFWAVE=ht(),S.exports=t.jsfxr=r(RIFFWAVE)):t.jsfxr=r(t.RIFFWAVE)})(Q,function(t){return{sfxr,convert:{sliders:et,domain:it,sliders_inverse:rt,domain_inverse:nt,units:pt},parameters:{order:I,signed:Z},Params:c,SoundEffect:P,waveforms:{SQUARE:M,SAWTOOTH:b,SINE:a,NOISE:s}}})})(Y);var $=Y.exports;const ft=_t($),ut=st({__proto__:null,default:ft},[$]);export{ut as s};
2
+ //# sourceMappingURL=sfxr-Cr89uVKo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sfxr-CO3_Kukg.js","sources":["../../../../../node_modules/.pnpm/jsfxr@1.3.0/node_modules/jsfxr/riffwave.js","../../../../../node_modules/.pnpm/jsfxr@1.3.0/node_modules/jsfxr/sfxr.js"],"sourcesContent":["/*\n * RIFFWAVE.js v0.03 - Audio encoder for HTML5 <audio> elements.\n * Copyleft 2011 by Pedro Ladaria <pedro.ladaria at Gmail dot com>\n *\n * Public Domain\n *\n * Changelog:\n *\n * 0.01 - First release\n * 0.02 - New faster base64 encoding\n * 0.03 - Support for 16bit samples\n *\n * Notes:\n *\n * 8 bit data is unsigned: 0..255\n * 16 bit data is signed: -32,768..32,767\n *\n */\n\nvar FastBase64 = {\n\n chars: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",\n encLookup: [],\n\n Init: function() {\n for (var i=0; i<4096; i++) {\n this.encLookup[i] = this.chars[i >> 6] + this.chars[i & 0x3F];\n }\n },\n\n Encode: function(src) {\n var len = src.length;\n var dst = '';\n var i = 0;\n while (len > 2) {\n n = (src[i] << 16) | (src[i+1]<<8) | src[i+2];\n dst+= this.encLookup[n >> 12] + this.encLookup[n & 0xFFF];\n len-= 3;\n i+= 3;\n }\n if (len > 0) {\n var n1= (src[i] & 0xFC) >> 2;\n var n2= (src[i] & 0x03) << 4;\n if (len > 1) n2 |= (src[++i] & 0xF0) >> 4;\n dst+= this.chars[n1];\n dst+= this.chars[n2];\n if (len == 2) {\n var n3= (src[i++] & 0x0F) << 2;\n n3 |= (src[i] & 0xC0) >> 6;\n dst+= this.chars[n3];\n }\n if (len == 1) dst+= '=';\n dst+= '=';\n }\n return dst;\n } // end Encode\n\n}\n\nFastBase64.Init();\n\nvar RIFFWAVE = function(data) {\n\n this.data = []; // Array containing audio samples\n this.wav = []; // Array containing the generated wave file\n this.dataURI = ''; // http://en.wikipedia.org/wiki/Data_URI_scheme\n\n this.header = { // OFFS SIZE NOTES\n chunkId : [0x52,0x49,0x46,0x46], // 0 4 \"RIFF\" = 0x52494646\n chunkSize : 0, // 4 4 36+SubChunk2Size = 4+(8+SubChunk1Size)+(8+SubChunk2Size)\n format : [0x57,0x41,0x56,0x45], // 8 4 \"WAVE\" = 0x57415645\n subChunk1Id : [0x66,0x6d,0x74,0x20], // 12 4 \"fmt \" = 0x666d7420\n subChunk1Size: 16, // 16 4 16 for PCM\n audioFormat : 1, // 20 2 PCM = 1\n numChannels : 1, // 22 2 Mono = 1, Stereo = 2...\n sampleRate : 8000, // 24 4 8000, 44100...\n byteRate : 0, // 28 4 SampleRate*NumChannels*BitsPerSample/8\n blockAlign : 0, // 32 2 NumChannels*BitsPerSample/8\n bitsPerSample: 8, // 34 2 8 bits = 8, 16 bits = 16\n subChunk2Id : [0x64,0x61,0x74,0x61], // 36 4 \"data\" = 0x64617461\n subChunk2Size: 0 // 40 4 data size = NumSamples*NumChannels*BitsPerSample/8\n };\n\n function u32ToArray(i) {\n return [i&0xFF, (i>>8)&0xFF, (i>>16)&0xFF, (i>>24)&0xFF];\n }\n\n function u16ToArray(i) {\n return [i&0xFF, (i>>8)&0xFF];\n }\n\n function split16bitArray(data) {\n var r = [];\n var j = 0;\n var len = data.length;\n for (var i=0; i<len; i++) {\n r[j++] = data[i] & 0xFF;\n r[j++] = (data[i]>>8) & 0xFF;\n }\n return r;\n }\n\n this.Make = function(data) {\n if (data instanceof Array) this.data = data;\n this.header.byteRate = (this.header.sampleRate * this.header.numChannels * this.header.bitsPerSample) >> 3;\n this.header.blockAlign = (this.header.numChannels * this.header.bitsPerSample) >> 3;\n this.header.subChunk2Size = this.data.length;\n this.header.chunkSize = 36 + this.header.subChunk2Size;\n\n this.wav = this.header.chunkId.concat(\n u32ToArray(this.header.chunkSize),\n this.header.format,\n this.header.subChunk1Id,\n u32ToArray(this.header.subChunk1Size),\n u16ToArray(this.header.audioFormat),\n u16ToArray(this.header.numChannels),\n u32ToArray(this.header.sampleRate),\n u32ToArray(this.header.byteRate),\n u16ToArray(this.header.blockAlign),\n u16ToArray(this.header.bitsPerSample),\n this.header.subChunk2Id,\n u32ToArray(this.header.subChunk2Size),\n this.data\n );\n this.dataURI = 'data:audio/wav;base64,'+FastBase64.Encode(this.wav);\n };\n\n if (data instanceof Array) this.Make(data);\n\n}; // end RIFFWAVE\n\n(function (root, factory) {\n if(typeof define === \"function\" && define.amd) {\n // Now we're wrapping the factory and assigning the return\n // value to the root (window) and returning it as well to\n // the AMD loader.\n define([], function(){\n return (root.RIFFWAVE = factory());\n });\n } else if(typeof module === \"object\" && module.exports) {\n // I've not encountered a need for this yet, since I haven't\n // run into a scenario where plain modules depend on CommonJS\n // *and* I happen to be loading in a CJS browser environment\n // but I'm including it for the sake of being thorough\n module.exports = (root.RIFFWAVE = factory());\n } else {\n root.RIFFWAVE = factory();\n }\n}(this, function() {\n // module code here....\n return RIFFWAVE;\n}));\n","// Wave shapes\nvar SQUARE = 0;\nvar SAWTOOTH = 1;\nvar SINE = 2;\nvar NOISE = 3;\n\n// Playback volume\nvar masterVolume = 1;\n\nvar OVERSAMPLING = 8;\n\n/*** Core data structure ***/\n\n// Sound generation parameters are on [0,1] unless noted SIGNED & thus\n// on [-1,1]\nfunction Params() {\n this.oldParams = true; // Note what structure this is\n\n // Wave shape\n this.wave_type = SQUARE;\n\n // Envelope\n this.p_env_attack = 0; // Attack time\n this.p_env_sustain = 0.3; // Sustain time\n this.p_env_punch = 0; // Sustain punch\n this.p_env_decay = 0.4; // Decay time\n\n // Tone\n this.p_base_freq = 0.3; // Start frequency\n this.p_freq_limit = 0; // Min frequency cutoff\n this.p_freq_ramp = 0; // Slide (SIGNED)\n this.p_freq_dramp = 0; // Delta slide (SIGNED)\n // Vibrato\n this.p_vib_strength = 0; // Vibrato depth\n this.p_vib_speed = 0; // Vibrato speed\n\n // Tonal change\n this.p_arp_mod = 0; // Change amount (SIGNED)\n this.p_arp_speed = 0; // Change speed\n\n // Square wave duty (proportion of time signal is high vs. low)\n this.p_duty = 0; // Square duty\n this.p_duty_ramp = 0; // Duty sweep (SIGNED)\n\n // Repeat\n this.p_repeat_speed = 0; // Repeat speed\n\n // Flanger\n this.p_pha_offset = 0; // Flanger offset (SIGNED)\n this.p_pha_ramp = 0; // Flanger sweep (SIGNED)\n\n // Low-pass filter\n this.p_lpf_freq = 1; // Low-pass filter cutoff\n this.p_lpf_ramp = 0; // Low-pass filter cutoff sweep (SIGNED)\n this.p_lpf_resonance = 0;// Low-pass filter resonance\n // High-pass filter\n this.p_hpf_freq = 0; // High-pass filter cutoff\n this.p_hpf_ramp = 0; // High-pass filter cutoff sweep (SIGNED)\n\n // Sample parameters\n this.sound_vol = 0.5;\n this.sample_rate = 44100;\n this.sample_size = 8;\n}\n\n/*** Helper functions ***/\n\nfunction sqr(x) { return x * x }\nfunction cube(x) { return x * x * x }\nfunction sign(x) { return x < 0 ? -1 : 1 }\nfunction log(x, b) { return Math.log(x) / Math.log(b); }\nvar pow = Math.pow;\n\nfunction frnd(range) {\n return Math.random() * range;\n}\n\nfunction rndr(from, to) {\n return Math.random() * (to - from) + from;\n}\n\nfunction rnd(max) {\n return Math.floor(Math.random() * (max + 1));\n}\n\n/*** Import/export functions ***/\n\n// http://stackoverflow.com/questions/3096646/how-to-convert-a-floating-point-number-to-its-binary-representation-ieee-754-i\nfunction assembleFloat(sign, exponent, mantissa)\n{\n return (sign << 31) | (exponent << 23) | (mantissa);\n}\n\nfunction floatToNumber(flt)\n{\n if (isNaN(flt)) // Special case: NaN\n return assembleFloat(0, 0xFF, 0x1337); // Mantissa is nonzero for NaN\n\n var sign = (flt < 0) ? 1 : 0;\n flt = Math.abs(flt);\n if (flt == 0.0) // Special case: +-0\n return assembleFloat(sign, 0, 0);\n\n var exponent = Math.floor(Math.log(flt) / Math.LN2);\n if (exponent > 127 || exponent < -126) // Special case: +-Infinity (and huge numbers)\n return assembleFloat(sign, 0xFF, 0); // Mantissa is zero for +-Infinity\n\n var mantissa = flt / Math.pow(2, exponent);\n return assembleFloat(sign, exponent + 127, (mantissa * Math.pow(2, 23)) & 0x7FFFFF);\n}\n\n// http://stackoverflow.com/a/16001019\nfunction numberToFloat(bytes) {\n var sign = (bytes & 0x80000000) ? -1 : 1;\n var exponent = ((bytes >> 23) & 0xFF) - 127;\n var significand = (bytes & ~(-1 << 23));\n\n if (exponent == 128) \n return sign * ((significand) ? Number.NaN : Number.POSITIVE_INFINITY);\n\n if (exponent == -127) {\n if (significand == 0) return sign * 0.0;\n exponent = -126;\n significand /= (1 << 22);\n } else significand = (significand | (1 << 23)) / (1 << 23);\n\n return sign * significand * Math.pow(2, exponent);\n}\n\n// export parameter list to URL friendly base58 string\n// https://gist.github.com/diafygi/90a3e80ca1c2793220e5/\nvar b58alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nvar params_order = [\n \"wave_type\",\n \"p_env_attack\",\n \"p_env_sustain\",\n \"p_env_punch\",\n \"p_env_decay\",\n \"p_base_freq\",\n \"p_freq_limit\",\n \"p_freq_ramp\",\n \"p_freq_dramp\",\n \"p_vib_strength\",\n \"p_vib_speed\",\n \"p_arp_mod\",\n \"p_arp_speed\",\n \"p_duty\",\n \"p_duty_ramp\",\n \"p_repeat_speed\",\n \"p_pha_offset\",\n \"p_pha_ramp\",\n \"p_lpf_freq\",\n \"p_lpf_ramp\",\n \"p_lpf_resonance\",\n \"p_hpf_freq\",\n \"p_hpf_ramp\"\n];\n\nvar params_signed = [\"p_freq_ramp\", \"p_freq_dramp\", \"p_arp_mod\", \"p_duty_ramp\", \"p_pha_offset\", \"p_pha_ramp\", \"p_lpf_ramp\", \"p_hpf_ramp\"];\n\nParams.prototype.toB58 = function() {\n var convert = [];\n for (var pi in params_order) {\n var p = params_order[pi];\n if (p == \"wave_type\") {\n convert.push(this[p]);\n } else if (p.indexOf(\"p_\") == 0) {\n var val = this[p];\n val = floatToNumber(val);\n convert.push(0xff & val);\n convert.push(0xff & (val >> 8))\n convert.push(0xff & (val >> 16))\n convert.push(0xff & (val >> 24))\n }\n }\n return function(B,A){var d=[],s=\"\",i,j,c,n;for(i in B){j=0,c=B[i];s+=c||s.length^i?\"\":1;while(j in d||c){n=d[j];n=n?n*256+c:c;c=n/58|0;d[j]=n%58;j++}}while(j--)s+=A[d[j]];return s}(convert, b58alphabet);\n}\n\nParams.prototype.fromB58 = function(b58encoded) {\n this.fromJSON(sfxr.b58decode(b58encoded));\n return this;\n}\n\nParams.prototype.fromJSON = function(struct) {\n for (var p in struct) {\n if (struct.hasOwnProperty(p)) {\n this[p] = struct[p];\n }\n }\n return this;\n}\n\n/*** Presets ***/\n\n// These functions roll up random sounds appropriate to various\n// typical game events:\n\nParams.prototype.pickupCoin = function () {\n this.wave_type = SAWTOOTH;\n this.p_base_freq = 0.4 + frnd(0.5);\n this.p_env_attack = 0;\n this.p_env_sustain = frnd(0.1);\n this.p_env_decay = 0.1 + frnd(0.4);\n this.p_env_punch = 0.3 + frnd(0.3);\n if (rnd(1)) {\n this.p_arp_speed = 0.5 + frnd(0.2);\n this.p_arp_mod = 0.2 + frnd(0.4);\n }\n return this;\n}\n\nParams.prototype.laserShoot = function () {\n this.wave_type = rnd(2);\n if(this.wave_type === SINE && rnd(1))\n this.wave_type = rnd(1);\n if (rnd(2) === 0) {\n this.p_base_freq = 0.3 + frnd(0.6);\n this.p_freq_limit = frnd(0.1);\n this.p_freq_ramp = -0.35 - frnd(0.3);\n } else {\n this.p_base_freq = 0.5 + frnd(0.5);\n this.p_freq_limit = this.p_base_freq - 0.2 - frnd(0.6);\n if (this.p_freq_limit < 0.2) this.p_freq_limit = 0.2;\n this.p_freq_ramp = -0.15 - frnd(0.2);\n }\n if (this.wave_type === SAWTOOTH)\n this.p_duty = 1;\n if (rnd(1)) {\n this.p_duty = frnd(0.5);\n this.p_duty_ramp = frnd(0.2);\n } else {\n this.p_duty = 0.4 + frnd(0.5);\n this.p_duty_ramp = -frnd(0.7);\n }\n this.p_env_attack = 0;\n this.p_env_sustain = 0.1 + frnd(0.2);\n this.p_env_decay = frnd(0.4);\n if (rnd(1))\n this.p_env_punch = frnd(0.3);\n if (rnd(2) === 0) {\n this.p_pha_offset = frnd(0.2);\n this.p_pha_ramp = -frnd(0.2);\n }\n //if (rnd(1))\n this.p_hpf_freq = frnd(0.3);\n\n return this;\n}\n\nParams.prototype.explosion = function () {\n this.wave_type = NOISE;\n if (rnd(1)) {\n this.p_base_freq = sqr(0.1 + frnd(0.4));\n this.p_freq_ramp = -0.1 + frnd(0.4);\n } else {\n this.p_base_freq = sqr(0.2 + frnd(0.7));\n this.p_freq_ramp = -0.2 - frnd(0.2);\n }\n if (rnd(4) === 0)\n this.p_freq_ramp = 0;\n if (rnd(2) === 0)\n this.p_repeat_speed = 0.3 + frnd(0.5);\n this.p_env_attack = 0;\n this.p_env_sustain = 0.1 + frnd(0.3);\n this.p_env_decay = frnd(0.5);\n if (rnd(1)) {\n this.p_pha_offset = -0.3 + frnd(0.9);\n this.p_pha_ramp = -frnd(0.3);\n }\n this.p_env_punch = 0.2 + frnd(0.6);\n if (rnd(1)) {\n this.p_vib_strength = frnd(0.7);\n this.p_vib_speed = frnd(0.6);\n }\n if (rnd(2) === 0) {\n this.p_arp_speed = 0.6 + frnd(0.3);\n this.p_arp_mod = 0.8 - frnd(1.6);\n }\n\n return this;\n}\n\nParams.prototype.powerUp = function () {\n if (rnd(1)) {\n this.wave_type = SAWTOOTH;\n this.p_duty = 1;\n } else {\n this.p_duty = frnd(0.6);\n }\n this.p_base_freq = 0.2 + frnd(0.3);\n if (rnd(1)) {\n this.p_freq_ramp = 0.1 + frnd(0.4);\n this.p_repeat_speed = 0.4 + frnd(0.4);\n } else {\n this.p_freq_ramp = 0.05 + frnd(0.2);\n if (rnd(1)) {\n this.p_vib_strength = frnd(0.7);\n this.p_vib_speed = frnd(0.6);\n }\n }\n this.p_env_attack = 0;\n this.p_env_sustain = frnd(0.4);\n this.p_env_decay = 0.1 + frnd(0.4);\n\n return this;\n}\n\nParams.prototype.hitHurt = function () {\n this.wave_type = rnd(2);\n if (this.wave_type === SINE)\n this.wave_type = NOISE;\n if (this.wave_type === SQUARE)\n this.p_duty = frnd(0.6);\n if (this.wave_type === SAWTOOTH)\n this.p_duty = 1;\n this.p_base_freq = 0.2 + frnd(0.6);\n this.p_freq_ramp = -0.3 - frnd(0.4);\n this.p_env_attack = 0;\n this.p_env_sustain = frnd(0.1);\n this.p_env_decay = 0.1 + frnd(0.2);\n if (rnd(1))\n this.p_hpf_freq = frnd(0.3);\n return this;\n}\n\nParams.prototype.jump = function () {\n this.wave_type = SQUARE;\n this.p_duty = frnd(0.6);\n this.p_base_freq = 0.3 + frnd(0.3);\n this.p_freq_ramp = 0.1 + frnd(0.2);\n this.p_env_attack = 0;\n this.p_env_sustain = 0.1 + frnd(0.3);\n this.p_env_decay = 0.1 + frnd(0.2);\n if (rnd(1))\n this.p_hpf_freq = frnd(0.3);\n if (rnd(1))\n this.p_lpf_freq = 1 - frnd(0.6);\n return this;\n}\n\nParams.prototype.blipSelect = function () {\n this.wave_type = rnd(1);\n if (this.wave_type === SQUARE)\n this.p_duty = frnd(0.6);\n else\n this.p_duty = 1;\n this.p_base_freq = 0.2 + frnd(0.4);\n this.p_env_attack = 0;\n this.p_env_sustain = 0.1 + frnd(0.1);\n this.p_env_decay = frnd(0.2);\n this.p_hpf_freq = 0.1;\n return this;\n}\n\nParams.prototype.synth = function () {\n this.wave_type = rnd(1);\n this.p_base_freq = [0.2723171360931539, 0.19255692561524382, 0.13615778746815113][rnd(2)];\n this.p_env_attack = rnd(4) > 3 ? frnd(0.5) : 0;\n this.p_env_sustain = frnd(1);\n this.p_env_punch = frnd(1);\n this.p_env_decay = frnd(0.9) + 0.1;\n this.p_arp_mod = [0, 0, 0, 0, -0.3162, 0.7454, 0.7454][rnd(6)];\n this.p_arp_speed = frnd(0.5) + 0.4;\n this.p_duty = frnd(1);\n this.p_duty_ramp = rnd(2) == 2 ? frnd(1) : 0;\n this.p_lpf_freq = [1, 0.9 * frnd(1) * frnd(1) + 0.1][rnd(1)];\n this.p_lpf_ramp = rndr(-1, 1);\n this.p_lpf_resonance = frnd(1);\n this.p_hpf_freq = rnd(3) == 3 ? frnd(1) : 0;\n this.p_hpf_ramp = rnd(3) == 3 ? frnd(1) : 0;\n return this;\n}\n\nParams.prototype.tone = function () {\n this.wave_type = SINE;\n this.p_base_freq = 0.35173364; // 440 Hz\n this.p_env_attack = 0;\n this.p_env_sustain = 0.6641; // 1 sec\n this.p_env_decay = 0;\n this.p_env_punch = 0;\n return this;\n}\n\nParams.prototype.click = function() {\n const base = [\"explosion\", \"hitHurt\"][rnd(1)];\n this[base]();\n if (rnd(1)) {\n this.p_freq_ramp = -0.5 + frnd(1.0);\n }\n if (rnd(1)) {\n this.p_env_sustain = (frnd(0.4) + 0.2) * this.p_env_sustain;\n this.p_env_decay = (frnd(0.4) + 0.2) * this.p_env_decay;\n }\n if (rnd(3) == 0) {\n this.p_env_attack = frnd(0.3);\n }\n this.p_base_freq = 1 - frnd(0.25);\n this.p_hpf_freq = 1 - frnd(0.1);\n return this;\n}\n\nParams.prototype.random = function () {\n this.wave_type = rnd(3);\n if (rnd(1))\n this.p_base_freq = cube(frnd(2) - 1) + 0.5;\n else\n this.p_base_freq = sqr(frnd(1));\n this.p_freq_limit = 0;\n this.p_freq_ramp = Math.pow(frnd(2) - 1, 5);\n if (this.p_base_freq > 0.7 && this.p_freq_ramp > 0.2)\n this.p_freq_ramp = -this.p_freq_ramp;\n if (this.p_base_freq < 0.2 && this.p_freq_ramp < -0.05)\n this.p_freq_ramp = -this.p_freq_ramp;\n this.p_freq_dramp = Math.pow(frnd(2) - 1, 3);\n this.p_duty = frnd(2) - 1;\n this.p_duty_ramp = Math.pow(frnd(2) - 1, 3);\n this.p_vib_strength = Math.pow(frnd(2) - 1, 3);\n this.p_vib_speed = rndr(-1, 1);\n this.p_env_attack = cube(rndr(-1, 1));\n this.p_env_sustain = sqr(rndr(-1, 1));\n this.p_env_decay = rndr(-1, 1);\n this.p_env_punch = Math.pow(frnd(0.8), 2);\n if (this.p_env_attack + this.p_env_sustain + this.p_env_decay < 0.2) {\n this.p_env_sustain += 0.2 + frnd(0.3);\n this.p_env_decay += 0.2 + frnd(0.3);\n }\n this.p_lpf_resonance = rndr(-1, 1);\n this.p_lpf_freq = 1 - Math.pow(frnd(1), 3);\n this.p_lpf_ramp = Math.pow(frnd(2) - 1, 3);\n if (this.p_lpf_freq < 0.1 && this.p_lpf_ramp < -0.05)\n this.p_lpf_ramp = -this.p_lpf_ramp;\n this.p_hpf_freq = Math.pow(frnd(1), 5);\n this.p_hpf_ramp = Math.pow(frnd(2) - 1, 5);\n this.p_pha_offset = Math.pow(frnd(2) - 1, 3);\n this.p_pha_ramp = Math.pow(frnd(2) - 1, 3);\n this.p_repeat_speed = frnd(2) - 1;\n this.p_arp_speed = frnd(2) - 1;\n this.p_arp_mod = frnd(2) - 1;\n return this;\n}\n\nParams.prototype.mutate = function () {\n if (rnd(1)) this.p_base_freq += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_freq_ramp += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_freq_dramp += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_duty += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_duty_ramp += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_vib_strength += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_vib_speed += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_vib_delay += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_env_attack += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_env_sustain += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_env_decay += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_env_punch += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_lpf_resonance += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_lpf_freq += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_lpf_ramp += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_hpf_freq += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_hpf_ramp += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_pha_offset += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_pha_ramp += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_repeat_speed += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_arp_speed += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_arp_mod += frnd(0.1) - 0.05;\n return this;\n}\n\n/*** Simpler namespaced functional API ***/\n\nsfxr = {};\n\nsfxr.toBuffer = function(synthdef) {\n return (new SoundEffect(synthdef)).getRawBuffer()[\"buffer\"];\n};\n\nsfxr.toWebAudio = function(synthdef, audiocontext) {\n var sfx = new SoundEffect(synthdef);\n var buffer = sfx.getRawBuffer()[\"normalized\"];\n if (audiocontext) {\n var buff = audiocontext.createBuffer(1, buffer.length, sfx.sampleRate);\n var nowBuffering = buff.getChannelData(0);\n for (var i = 0; i < buffer.length; i++) {\n nowBuffering[i] = buffer[i];\n }\n var proc = audiocontext.createBufferSource();\n proc.buffer = buff;\n return proc;\n }\n};\n\nsfxr.toWave = function(synthdef) {\n return (new SoundEffect(synthdef)).generate();\n};\n\nsfxr.toAudio = function(synthdef) {\n return sfxr.toWave(synthdef).getAudio();\n}\n\nsfxr.play = function(synthdef) {\n return sfxr.toAudio(synthdef).play();\n}\n\nsfxr.b58decode = function(b58encoded) {\n var decoded = function(S,A){var d=[],b=[],i,j,c,n;for(i in S){j=0,c=A.indexOf(S[i]);if(c<0)return undefined;c||b.length^i?i:b.push(0);while(j in d||c){n=d[j];n=n?n*58+c:c;c=n>>8;d[j]=n%256;j++}}while(j--)b.push(d[j]);return new Uint8Array(b)}(b58encoded,b58alphabet);\n var result = {};\n for (var pi in params_order) {\n var p = params_order[pi];\n var offset = (pi - 1) * 4 + 1;\n if (p == \"wave_type\") {\n result[p] = decoded[0];\n } else {\n var val = (decoded[offset] | (decoded[offset + 1] << 8) | (decoded[offset + 2] << 16) | (decoded[offset + 3] << 24));\n result[p] = numberToFloat(val);\n }\n }\n return result;\n}\n\nsfxr.b58encode = function(synthdef) {\n var p = new Params();\n p.fromJSON(synthdef);\n return p.toB58();\n}\n\nsfxr.generate = function(algorithm, options) {\n const p = new Params();\n const opts = options || {};\n p.sound_vol = opts[\"sound_vol\"] || 0.25;\n p.sample_rate = opts[\"sample_rate\"] || 44100;\n p.sample_size = opts[\"sample_size\"] || 8;\n return p[algorithm]();\n}\n\n/*** Main entry point ***/\n\nfunction SoundEffect(ps) {\n if (typeof(ps) == \"string\") {\n var PARAMS = new Params();\n if (ps.indexOf(\"#\") == 0) {\n ps = ps.slice(1);\n }\n ps = PARAMS.fromB58(ps);\n }\n this.init(ps);\n}\n\nSoundEffect.prototype.init = function (ps) {\n this.parameters = ps;\n this.initForRepeat(); // First time through, this is a bit of a misnomer\n\n // Waveform shape\n this.waveShape = parseInt(ps.wave_type);\n\n // Filter\n this.fltw = Math.pow(ps.p_lpf_freq, 3) * 0.1;\n this.enableLowPassFilter = (ps.p_lpf_freq != 1);\n this.fltw_d = 1 + ps.p_lpf_ramp * 0.0001;\n this.fltdmp = 5 / (1 + Math.pow(ps.p_lpf_resonance, 2) * 20) *\n (0.01 + this.fltw);\n if (this.fltdmp > 0.8) this.fltdmp=0.8;\n this.flthp = Math.pow(ps.p_hpf_freq, 2) * 0.1;\n this.flthp_d = 1 + ps.p_hpf_ramp * 0.0003;\n\n // Vibrato\n this.vibratoSpeed = Math.pow(ps.p_vib_speed, 2) * 0.01;\n this.vibratoAmplitude = ps.p_vib_strength * 0.5;\n\n // Envelope\n this.envelopeLength = [\n Math.floor(ps.p_env_attack * ps.p_env_attack * 100000),\n Math.floor(ps.p_env_sustain * ps.p_env_sustain * 100000),\n Math.floor(ps.p_env_decay * ps.p_env_decay * 100000)\n ];\n this.envelopePunch = ps.p_env_punch;\n\n // Flanger\n this.flangerOffset = Math.pow(ps.p_pha_offset, 2) * 1020;\n if (ps.p_pha_offset < 0) this.flangerOffset = -this.flangerOffset;\n this.flangerOffsetSlide = Math.pow(ps.p_pha_ramp, 2) * 1;\n if (ps.p_pha_ramp < 0) this.flangerOffsetSlide = -this.flangerOffsetSlide;\n\n // Repeat\n this.repeatTime = Math.floor(Math.pow(1 - ps.p_repeat_speed, 2) * 20000\n + 32);\n if (ps.p_repeat_speed === 0)\n this.repeatTime = 0;\n\n this.gain = Math.exp(ps.sound_vol) - 1;\n\n this.sampleRate = ps.sample_rate;\n this.bitsPerChannel = ps.sample_size;\n}\n\nSoundEffect.prototype.initForRepeat = function() {\n var ps = this.parameters;\n this.elapsedSinceRepeat = 0;\n\n this.period = 100 / (ps.p_base_freq * ps.p_base_freq + 0.001);\n this.periodMax = 100 / (ps.p_freq_limit * ps.p_freq_limit + 0.001);\n this.enableFrequencyCutoff = (ps.p_freq_limit > 0);\n this.periodMult = 1 - Math.pow(ps.p_freq_ramp, 3) * 0.01;\n this.periodMultSlide = -Math.pow(ps.p_freq_dramp, 3) * 0.000001;\n\n this.dutyCycle = 0.5 - ps.p_duty * 0.5;\n this.dutyCycleSlide = -ps.p_duty_ramp * 0.00005;\n\n if (ps.p_arp_mod >= 0)\n this.arpeggioMultiplier = 1 - Math.pow(ps.p_arp_mod, 2) * .9;\n else\n this.arpeggioMultiplier = 1 + Math.pow(ps.p_arp_mod, 2) * 10;\n this.arpeggioTime = Math.floor(Math.pow(1 - ps.p_arp_speed, 2) * 20000 + 32);\n if (ps.p_arp_speed === 1)\n this.arpeggioTime = 0;\n}\n\nSoundEffect.prototype.getRawBuffer = function () {\n var fltp = 0;\n var fltdp = 0;\n var fltphp = 0;\n\n var noise_buffer = Array(32);\n for (var i = 0; i < 32; ++i)\n noise_buffer[i] = Math.random() * 2 - 1;\n\n var envelopeStage = 0;\n var envelopeElapsed = 0;\n\n var vibratoPhase = 0;\n\n var phase = 0;\n var ipp = 0;\n var flanger_buffer = Array(1024);\n for (var i = 0; i < 1024; ++i)\n flanger_buffer[i] = 0;\n\n var num_clipped = 0;\n\n var buffer = [];\n var normalized = [];\n\n var sample_sum = 0;\n var num_summed = 0;\n var summands = Math.floor(44100 / this.sampleRate);\n\n for(var t = 0; ; ++t) {\n\n // Repeats\n if (this.repeatTime != 0 && ++this.elapsedSinceRepeat >= this.repeatTime)\n this.initForRepeat();\n\n // Arpeggio (single)\n if(this.arpeggioTime != 0 && t >= this.arpeggioTime) {\n this.arpeggioTime = 0;\n this.period *= this.arpeggioMultiplier;\n }\n\n // Frequency slide, and frequency slide slide!\n this.periodMult += this.periodMultSlide;\n this.period *= this.periodMult;\n if(this.period > this.periodMax) {\n this.period = this.periodMax;\n if (this.enableFrequencyCutoff)\n break;\n }\n\n // Vibrato\n var rfperiod = this.period;\n if (this.vibratoAmplitude > 0) {\n vibratoPhase += this.vibratoSpeed;\n rfperiod = this.period * (1 + Math.sin(vibratoPhase) * this.vibratoAmplitude);\n }\n var iperiod = Math.floor(rfperiod);\n if (iperiod < OVERSAMPLING) iperiod = OVERSAMPLING;\n\n // Square wave duty cycle\n this.dutyCycle += this.dutyCycleSlide;\n if (this.dutyCycle < 0) this.dutyCycle = 0;\n if (this.dutyCycle > 0.5) this.dutyCycle = 0.5;\n\n // Volume envelope\n if (++envelopeElapsed > this.envelopeLength[envelopeStage]) {\n envelopeElapsed = 0;\n if (++envelopeStage > 2)\n break;\n }\n var env_vol;\n var envf = envelopeElapsed / this.envelopeLength[envelopeStage];\n if (envelopeStage === 0) { // Attack\n env_vol = envf;\n } else if (envelopeStage === 1) { // Sustain\n env_vol = 1 + (1 - envf) * 2 * this.envelopePunch;\n } else { // Decay\n env_vol = 1 - envf;\n }\n\n // Flanger step\n this.flangerOffset += this.flangerOffsetSlide;\n var iphase = Math.abs(Math.floor(this.flangerOffset));\n if (iphase > 1023) iphase = 1023;\n\n if (this.flthp_d != 0) {\n this.flthp *= this.flthp_d;\n if (this.flthp < 0.00001)\n this.flthp = 0.00001;\n if (this.flthp > 0.1)\n this.flthp = 0.1;\n }\n\n // 8x oversampling\n var sample = 0;\n for (var si = 0; si < OVERSAMPLING; ++si) {\n var sub_sample = 0;\n phase++;\n if (phase >= iperiod) {\n phase %= iperiod;\n if (this.waveShape === NOISE)\n for(var i = 0; i < 32; ++i)\n noise_buffer[i] = Math.random() * 2 - 1;\n }\n\n // Base waveform\n var fp = phase / iperiod;\n if (this.waveShape === SQUARE) {\n if (fp < this.dutyCycle)\n sub_sample=0.5;\n else\n sub_sample=-0.5;\n } else if (this.waveShape === SAWTOOTH) {\n if (fp < this.dutyCycle)\n sub_sample = -1 + 2 * fp/this.dutyCycle;\n else\n sub_sample = 1 - 2 * (fp-this.dutyCycle)/(1-this.dutyCycle);\n } else if (this.waveShape === SINE) {\n sub_sample = Math.sin(fp * 2 * Math.PI);\n } else if (this.waveShape === NOISE) {\n sub_sample = noise_buffer[Math.floor(phase * 32 / iperiod)];\n } else {\n throw \"ERROR: Bad wave type: \" + this.waveShape;\n }\n\n // Low-pass filter\n var pp = fltp;\n this.fltw *= this.fltw_d;\n if (this.fltw < 0) this.fltw = 0;\n if (this.fltw > 0.1) this.fltw = 0.1;\n if (this.enableLowPassFilter) {\n fltdp += (sub_sample - fltp) * this.fltw;\n fltdp -= fltdp * this.fltdmp;\n } else {\n fltp = sub_sample;\n fltdp = 0;\n }\n fltp += fltdp;\n\n // High-pass filter\n fltphp += fltp - pp;\n fltphp -= fltphp * this.flthp;\n sub_sample = fltphp;\n\n // Flanger\n flanger_buffer[ipp & 1023] = sub_sample;\n sub_sample += flanger_buffer[(ipp - iphase + 1024) & 1023];\n ipp = (ipp + 1) & 1023;\n\n // final accumulation and envelope application\n sample += sub_sample * env_vol;\n }\n\n // Accumulate samples appropriately for sample rate\n sample_sum += sample;\n if (++num_summed >= summands) {\n num_summed = 0;\n sample = sample_sum / summands;\n sample_sum = 0;\n } else {\n continue;\n }\n\n sample = sample / OVERSAMPLING * masterVolume;\n sample *= this.gain;\n\n // store the original normalized floating point sample\n normalized.push(sample);\n\n if (this.bitsPerChannel === 8) {\n // Rescale [-1, 1) to [0, 256)\n sample = Math.floor((sample + 1) * 128);\n if (sample > 255) {\n sample = 255;\n ++num_clipped;\n } else if (sample < 0) {\n sample = 0;\n ++num_clipped;\n }\n buffer.push(sample);\n } else {\n // Rescale [-1, 1) to [-32768, 32768)\n sample = Math.floor(sample * (1<<15));\n if (sample >= (1<<15)) {\n sample = (1 << 15)-1;\n ++num_clipped;\n } else if (sample < -(1<<15)) {\n sample = -(1 << 15);\n ++num_clipped;\n }\n buffer.push(sample & 0xFF);\n buffer.push((sample >> 8) & 0xFF);\n }\n }\n \n return {\n \"buffer\": buffer,\n \"normalized\": normalized,\n \"clipped\": num_clipped,\n }\n}\n\nSoundEffect.prototype.generate = function() {\n var rendered = this.getRawBuffer();\n var wave = new RIFFWAVE();\n wave.header.sampleRate = this.sampleRate;\n wave.header.bitsPerSample = this.bitsPerChannel;\n wave.Make(rendered.buffer);\n wave.clipping = rendered.clipped;\n wave.buffer = rendered.normalized;\n wave.getAudio = _sfxr_getAudioFn(wave);\n return wave;\n}\n\nvar _actx = null;\nvar _sfxr_getAudioFn = function(wave) {\n return function() {\n // check for procedural audio\n var actx = null;\n if (!_actx) {\n if ('AudioContext' in window) {\n _actx = new AudioContext();\n } else if ('webkitAudioContext' in window) {\n _actx = new webkitAudioContext();\n }\n }\n actx = _actx;\n \n if (actx) {\n var buff = actx.createBuffer(1, wave.buffer.length, wave.header.sampleRate);\n var nowBuffering = buff.getChannelData(0);\n for (var i=0;i<wave.buffer.length;i++) {\n nowBuffering[i] = wave.buffer[i];\n }\n var volume = 1.0;\n var obj = {\n \"channels\": [],\n \"setVolume\": function(v) { volume = v; return obj; },\n \"play\": function() {\n var proc = actx.createBufferSource();\n proc.buffer = buff;\n var gainNode = actx.createGain()\n gainNode.gain.value = volume;\n gainNode.connect(actx.destination)\n proc.connect(gainNode);\n if (proc[\"start\"]) {\n proc.start();\n } else if (proc[\"noteOn\"]) {\n proc.noteOn(0);\n }\n this.channels.push(proc);\n return proc;\n }\n };\n return obj;\n } else {\n var audio = new Audio();\n audio.src = wave.dataURI;\n return audio;\n }\n };\n};\n\n/*** conversions from slider values, internal, and units ***/\n\n// convert from slider values to internal representation\n\nvar sliders = {\n p_env_attack: function (v) { return v * v * 100000.0 },\n p_env_sustain: function (v) { return v * v * 100000.0 },\n p_env_punch: function (v) { return v },\n p_env_decay: function (v) { return v * v * 100000.0 },\n\n p_base_freq: function (v) { return 8 * 44100 * (v * v + 0.001) / 100 },\n p_freq_limit: function (v) { return 8 * 44100 * (v * v + 0.001) / 100 },\n p_freq_ramp: function (v) { return 1.0 - Math.pow(v, 3.0) * 0.01 },\n p_freq_dramp: function (v) { return -Math.pow(v, 3.0) * 0.000001 },\n\n p_vib_speed: function (v) { return Math.pow(v, 2.0) * 0.01 },\n p_vib_strength: function (v) { return v * 0.5 },\n\n p_arp_mod: function (v) { \n return v >= 0 ? 1.0 - Math.pow(v, 2) * 0.9 : 1.0 + Math.pow(v, 2) * 10; },\n p_arp_speed: function (v) { return (v === 1.0) ? 0 :\n Math.floor(Math.pow(1.0 - v, 2.0) * 20000 + 32)},\n\n p_duty: function (v) { return 0.5 - v * 0.5; },\n p_duty_ramp: function (v) { return -v * 0.00005 },\n\n p_repeat_speed: function (v) { return (v === 0) ? 0 :\n Math.floor(Math.pow(1-v, 2) * 20000) + 32 },\n\n p_pha_offset: function (v) { return (v < 0 ? -1 : 1) * Math.pow(v,2)*1020 },\n p_pha_ramp: function (v) { return (v < 0 ? -1 : 1) * Math.pow(v,2) },\n\n p_lpf_freq: function (v) { return Math.pow(v, 3) * 0.1 },\n p_lpf_ramp: function (v) { return 1.0 + v * 0.0001 },\n p_lpf_resonance: function (v) { return 5.0 / (1.0 + Math.pow(v, 2) * 20) }, // * (0.01 + fltw);\n\n p_hpf_freq: function (v) { return Math.pow(v, 2) * 0.1 },\n p_hpf_ramp: function (v) { return 1.0 + v * 0.0003 },\n\n sound_vol: function (v) { return Math.exp(v) - 1; }\n};\n\nvar sliders_inverse = {\n p_env_attack: function (v) { return Math.sqrt(v / 100000.0); },\n p_env_sustain: function (v) { return Math.sqrt(v / 100000.0); },\n p_env_punch: function (v) { return v; },\n p_env_decay: function (v) { return Math.sqrt(v / 100000.0); },\n\n p_base_freq: function (v) { return Math.sqrt(v * 100 / 8 / 44100 - 0.001); },\n p_freq_limit: function (v) { return Math.sqrt(v * 100 / 8 / 44100 - 0.001); },\n p_freq_ramp: function (v) { return Math.cbrt((1.0 - v) / 0.01); },\n p_freq_dramp: function (v) { return Math.cbrt(v / -0.000001); },\n\n p_vib_speed: function (v) { return Math.sqrt(v / 0.01); },\n p_vib_strength: function (v) { return v / 0.5; },\n\n p_arp_mod: function (v) {\n return v < 1 ? Math.sqrt((1.0 - v) / 0.9) : -Math.sqrt((v - 1.0) / 10.0);\n },\n p_arp_speed: function (v) { return (v === 0) ? 1.0 :\n ( (1.0 - Math.sqrt((v - (v < 100 ? 30 : 32)) / 20000)))},\n\n p_duty: function (v) { return (v - 0.5) / -0.5; },\n p_duty_ramp: function (v) { return v / -0.00005 },\n\n p_repeat_speed: function (v) { return v === 0 ? 0 : -(Math.sqrt((v - 32) / 20000) - 1.0) },\n\n p_pha_offset: function (v) { return (v < 0 ? -1 : 1) * Math.sqrt(Math.abs(v) / 1020) },\n p_pha_ramp: function (v) { return (v < 0 ? -1 : 1) * Math.sqrt(Math.abs(v)) },\n\n p_lpf_freq: function (v) { return Math.cbrt(v / 0.1); },\n p_lpf_ramp: function (v) { return (v - 1.0) / 0.0001; },\n p_lpf_resonance: function (v) { return Math.sqrt((1.0 / (v / 5.0) - 1) / 20) },\n\n p_hpf_freq: function (v) { return Math.sqrt(v / 0.1); },\n p_hpf_ramp: function (v) { return (v - 1.0) / 0.0003; },\n sound_vol: function (v) { return Math.log(v + 1);; }\n}\n\n// convert from internal representation to domain value without units\n\nvar domain = {\n p_env_attack: function (v) { return (v / 44100); },\n p_env_sustain: function (v) { return (v / 44100); },\n p_env_punch: function (v) { return (v * 100); },\n p_env_decay: function (v) { return (v / 44100); },\n\n p_base_freq: function (v) { return v; },\n p_freq_limit: function (v) { return v; },\n p_freq_ramp: function (v) { return (44100*Math.log(v)/Math.log(0.5)); },\n p_freq_dramp: function (v) { return (v*44100 / Math.pow(2, -44101./44100)); },\n\n p_vib_speed: function (v) { return (441000/64. * v); },\n p_vib_strength: function (v) { return (v*100); },\n\n p_arp_mod: function (v) { return (1./v); },\n p_arp_speed: function (v) { return (v / 44100); },\n\n p_duty: function (v) { return (100 * v); },\n p_duty_ramp: function (v) { return (8 * 44100 * v); },\n\n p_repeat_speed: function (v) { return v === 0 ? 0 : (44100./v); },\n\n p_pha_offset: function (v) { return (1000*v/44100); },\n p_pha_ramp: function (v) { return (1000*v); },\n\n p_lpf_freq: function (v) { return (v === .1) ? 0 : 8 * 44100 * v / (1-v); },\n p_lpf_ramp: function (v) { return Math.pow(v, 44100); },\n p_lpf_resonance: function (v) { return (100*(1-v*.11));},\n\n p_hpf_freq: function (v) { return 8 * 44100 * v / (1-v); },\n p_hpf_ramp: function (v) { return Math.pow(v, 44100); },\n\n sound_vol: function (v) { return 10 * Math.log(v*v) / Math.log(10); }\n}\n\nvar domain_inverse = {\n p_env_attack: function (v) { return (v * 44100); },\n p_env_sustain: function (v) { return (v * 44100); },\n p_env_punch: function (v) { return (v / 100); },\n p_env_decay: function (v) { return (v * 44100); },\n\n p_base_freq: function (v) { return v; },\n p_freq_limit: function (v) { return v; },\n p_freq_ramp: function (v) { return Math.exp(Math.log(0.5) * v / 44100); },\n p_freq_dramp: function (v) { return v * Math.pow(2, -44101./44100) / 44100; },\n\n p_vib_speed: function (v) { return (64. / 441000) * v; },\n p_vib_strength: function (v) { return (v / 100); },\n\n p_arp_mod: function (v) { return (1. / v); },\n p_arp_speed: function (v) { return (v * 44100); },\n\n p_duty: function (v) { return (v / 100); },\n p_duty_ramp: function (v) { return (v / (8 * 44100)); },\n\n p_repeat_speed: function (v) { return v <= 0 ? 0 : v > 1378 ? 32 : (44100 / v); },\n\n p_pha_offset: function (v) { return (v / 1000) * 44100; },\n p_pha_ramp: function (v) { return (v / 1000); },\n\n p_lpf_freq: function (v) { return (v / (v + 8 * 44100)); },\n p_lpf_ramp: function (v) { return Math.pow(v, 1 / 44100); },\n p_lpf_resonance: function (v) { return (1 - v / 100) / .11; },\n\n p_hpf_freq: function (v) { return (v / (v + 8 * 44100)); },\n p_hpf_ramp: function (v) { return Math.pow(v, 1 / 44100); },\n\n sound_vol: function (v) { return Math.sqrt(Math.pow(10, v / 10)); }\n}\n\n// convert from internal representation to printable units\n\nvar units = {\n p_env_attack: function (v) { return (v / 44100).toPrecision(4) + ' sec' },\n p_env_sustain: function (v) { return (v / 44100).toPrecision(4) + ' sec' },\n p_env_punch: function (v) { return '+' + (v * 100).toPrecision(4) + '%'},\n p_env_decay: function (v) { return (v / 44100).toPrecision(4) + ' sec' },\n \n p_base_freq: function (v) { return v.toPrecision(4) + 'Hz' },\n p_freq_limit: function (v) { return v.toPrecision(4) + 'Hz' },\n p_freq_ramp: function (v) { \n return (44100*Math.log(v)/Math.log(0.5)).toPrecision(4) + ' 8va/sec'; },\n p_freq_dramp: function (v) { \n return (v*44100 / Math.pow(2, -44101./44100)).toExponential(3) +\n ' 8va/s^2'; },\n\n p_vib_speed: function (v) { return v === 0 ? 'OFF' : \n (441000/64. * v).toPrecision(4) + ' Hz'},\n p_vib_strength: function (v) { return v === 0 ? 'OFF' : \n '&plusmn; ' + (v*100).toPrecision(4) + '%' },\n\n p_arp_mod: function (v) { return ((v === 1) ? 'OFF' : \n 'x ' + (1./v).toPrecision(4)) },\n p_arp_speed: function (v) { return (v === 0 ? 'OFF' :\n (v / 44100).toPrecision(4) +' sec') },\n\n p_duty: function (v) { return (100 * v).toPrecision(4) + '%'; },\n p_duty_ramp: function (v) { return (8 * 44100 * v).toPrecision(4) +'%/sec'},\n\n p_repeat_speed: function (v) { return v === 0 ? 'OFF' : \n (44100/v).toPrecision(4) + ' Hz' },\n\n p_pha_offset: function (v) { return v === 0 ? 'OFF' :\n (1000*v/44100).toPrecision(4) + ' msec' },\n // Not so sure about this:\n p_pha_ramp: function (v) { return v === 0 ? 'OFF' :\n (1000*v).toPrecision(4) + ' msec/sec' },\n\n p_lpf_freq: function (v) { \n return (v === .1) ? 'OFF' : Math.round(8 * 44100 * v / (1-v)) + ' Hz'; },\n p_lpf_ramp: function (v) { if (v === 1) return 'OFF';\n return Math.pow(v, 44100).toPrecision(4) + ' ^sec'; },\n p_lpf_resonance: function (v) { return (100*(1-v*.11)).toPrecision(4)+'%';},\n\n p_hpf_freq: function (v) { \n return (v === 0) ? 'OFF' : Math.round(8 * 44100 * v / (1-v)) + ' Hz'; },\n p_hpf_ramp: function (v) { if (v === 1) return 'OFF';\n return Math.pow(v, 44100).toPrecision(4) + ' ^sec'; },\n\n sound_vol: function (v) { \n v = 10 * Math.log(v*v) / Math.log(10);\n var sign = v >= 0 ? '+' : '';\n return sign + v.toPrecision(4) + ' dB'; \n }\n};\n\n/*** Plumbing ***/\n\n(function (root, factory) {\n if(typeof define === \"function\" && define.amd) {\n // Now we're wrapping the factory and assigning the return\n // value to the root (window) and returning it as well to\n // the AMD loader.\n define([\"./riffwave\"], function(RIFFWAVE){\n return (root.jsfxr = factory(RIFFWAVE));\n });\n } else if(typeof module === \"object\" && module.exports) {\n // I've not encountered a need for this yet, since I haven't\n // run into a scenario where plain modules depend on CommonJS\n // *and* I happen to be loading in a CJS browser environment\n // but I'm including it for the sake of being thorough\n RIFFWAVE = require(\"./riffwave.js\");\n module.exports = (root.jsfxr = factory(RIFFWAVE));\n } else {\n root.jsfxr = factory(root.RIFFWAVE);\n }\n}(this, function(RIFFWAVE) {\n // module code here....\n return {\n \"sfxr\": sfxr,\n \"convert\": {\n \"sliders\": sliders,\n \"domain\": domain,\n \"sliders_inverse\": sliders_inverse,\n \"domain_inverse\": domain_inverse,\n \"units\": units,\n },\n \"parameters\": {\n \"order\": params_order,\n \"signed\": params_signed,\n },\n \"Params\": Params,\n \"SoundEffect\": SoundEffect,\n \"waveforms\": {\n \"SQUARE\": SQUARE,\n \"SAWTOOTH\": SAWTOOTH,\n \"SINE\": SINE,\n \"NOISE\": NOISE\n }\n };\n}));\n"],"names":["FastBase64","i","src","len","dst","n1","n2","n3","RIFFWAVE","data","u32ToArray","u16ToArray","root","factory","module","this","SQUARE","SAWTOOTH","SINE","NOISE","masterVolume","OVERSAMPLING","Params","sqr","x","cube","frnd","range","rndr","from","to","rnd","max","assembleFloat","sign","exponent","mantissa","floatToNumber","flt","numberToFloat","bytes","significand","b58alphabet","params_order","params_signed","convert","pi","val","B","A","d","s","j","c","n","b58encoded","struct","p","base","synthdef","SoundEffect","audiocontext","sfx","buffer","buff","nowBuffering","proc","decoded","S","b","result","offset","algorithm","options","opts","ps","PARAMS","fltp","fltdp","fltphp","noise_buffer","envelopeStage","envelopeElapsed","vibratoPhase","phase","ipp","flanger_buffer","num_clipped","normalized","sample_sum","num_summed","summands","t","rfperiod","iperiod","env_vol","envf","iphase","sample","si","sub_sample","fp","pp","rendered","wave","_sfxr_getAudioFn","_actx","actx","volume","obj","v","gainNode","audio","sliders","sliders_inverse","domain","domain_inverse","units","require$$0"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"sfxr-Cr89uVKo.js","sources":["../../../../../node_modules/.pnpm/jsfxr@1.3.0/node_modules/jsfxr/riffwave.js","../../../../../node_modules/.pnpm/jsfxr@1.3.0/node_modules/jsfxr/sfxr.js"],"sourcesContent":["/*\n * RIFFWAVE.js v0.03 - Audio encoder for HTML5 <audio> elements.\n * Copyleft 2011 by Pedro Ladaria <pedro.ladaria at Gmail dot com>\n *\n * Public Domain\n *\n * Changelog:\n *\n * 0.01 - First release\n * 0.02 - New faster base64 encoding\n * 0.03 - Support for 16bit samples\n *\n * Notes:\n *\n * 8 bit data is unsigned: 0..255\n * 16 bit data is signed: -32,768..32,767\n *\n */\n\nvar FastBase64 = {\n\n chars: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",\n encLookup: [],\n\n Init: function() {\n for (var i=0; i<4096; i++) {\n this.encLookup[i] = this.chars[i >> 6] + this.chars[i & 0x3F];\n }\n },\n\n Encode: function(src) {\n var len = src.length;\n var dst = '';\n var i = 0;\n while (len > 2) {\n n = (src[i] << 16) | (src[i+1]<<8) | src[i+2];\n dst+= this.encLookup[n >> 12] + this.encLookup[n & 0xFFF];\n len-= 3;\n i+= 3;\n }\n if (len > 0) {\n var n1= (src[i] & 0xFC) >> 2;\n var n2= (src[i] & 0x03) << 4;\n if (len > 1) n2 |= (src[++i] & 0xF0) >> 4;\n dst+= this.chars[n1];\n dst+= this.chars[n2];\n if (len == 2) {\n var n3= (src[i++] & 0x0F) << 2;\n n3 |= (src[i] & 0xC0) >> 6;\n dst+= this.chars[n3];\n }\n if (len == 1) dst+= '=';\n dst+= '=';\n }\n return dst;\n } // end Encode\n\n}\n\nFastBase64.Init();\n\nvar RIFFWAVE = function(data) {\n\n this.data = []; // Array containing audio samples\n this.wav = []; // Array containing the generated wave file\n this.dataURI = ''; // http://en.wikipedia.org/wiki/Data_URI_scheme\n\n this.header = { // OFFS SIZE NOTES\n chunkId : [0x52,0x49,0x46,0x46], // 0 4 \"RIFF\" = 0x52494646\n chunkSize : 0, // 4 4 36+SubChunk2Size = 4+(8+SubChunk1Size)+(8+SubChunk2Size)\n format : [0x57,0x41,0x56,0x45], // 8 4 \"WAVE\" = 0x57415645\n subChunk1Id : [0x66,0x6d,0x74,0x20], // 12 4 \"fmt \" = 0x666d7420\n subChunk1Size: 16, // 16 4 16 for PCM\n audioFormat : 1, // 20 2 PCM = 1\n numChannels : 1, // 22 2 Mono = 1, Stereo = 2...\n sampleRate : 8000, // 24 4 8000, 44100...\n byteRate : 0, // 28 4 SampleRate*NumChannels*BitsPerSample/8\n blockAlign : 0, // 32 2 NumChannels*BitsPerSample/8\n bitsPerSample: 8, // 34 2 8 bits = 8, 16 bits = 16\n subChunk2Id : [0x64,0x61,0x74,0x61], // 36 4 \"data\" = 0x64617461\n subChunk2Size: 0 // 40 4 data size = NumSamples*NumChannels*BitsPerSample/8\n };\n\n function u32ToArray(i) {\n return [i&0xFF, (i>>8)&0xFF, (i>>16)&0xFF, (i>>24)&0xFF];\n }\n\n function u16ToArray(i) {\n return [i&0xFF, (i>>8)&0xFF];\n }\n\n function split16bitArray(data) {\n var r = [];\n var j = 0;\n var len = data.length;\n for (var i=0; i<len; i++) {\n r[j++] = data[i] & 0xFF;\n r[j++] = (data[i]>>8) & 0xFF;\n }\n return r;\n }\n\n this.Make = function(data) {\n if (data instanceof Array) this.data = data;\n this.header.byteRate = (this.header.sampleRate * this.header.numChannels * this.header.bitsPerSample) >> 3;\n this.header.blockAlign = (this.header.numChannels * this.header.bitsPerSample) >> 3;\n this.header.subChunk2Size = this.data.length;\n this.header.chunkSize = 36 + this.header.subChunk2Size;\n\n this.wav = this.header.chunkId.concat(\n u32ToArray(this.header.chunkSize),\n this.header.format,\n this.header.subChunk1Id,\n u32ToArray(this.header.subChunk1Size),\n u16ToArray(this.header.audioFormat),\n u16ToArray(this.header.numChannels),\n u32ToArray(this.header.sampleRate),\n u32ToArray(this.header.byteRate),\n u16ToArray(this.header.blockAlign),\n u16ToArray(this.header.bitsPerSample),\n this.header.subChunk2Id,\n u32ToArray(this.header.subChunk2Size),\n this.data\n );\n this.dataURI = 'data:audio/wav;base64,'+FastBase64.Encode(this.wav);\n };\n\n if (data instanceof Array) this.Make(data);\n\n}; // end RIFFWAVE\n\n(function (root, factory) {\n if(typeof define === \"function\" && define.amd) {\n // Now we're wrapping the factory and assigning the return\n // value to the root (window) and returning it as well to\n // the AMD loader.\n define([], function(){\n return (root.RIFFWAVE = factory());\n });\n } else if(typeof module === \"object\" && module.exports) {\n // I've not encountered a need for this yet, since I haven't\n // run into a scenario where plain modules depend on CommonJS\n // *and* I happen to be loading in a CJS browser environment\n // but I'm including it for the sake of being thorough\n module.exports = (root.RIFFWAVE = factory());\n } else {\n root.RIFFWAVE = factory();\n }\n}(this, function() {\n // module code here....\n return RIFFWAVE;\n}));\n","// Wave shapes\nvar SQUARE = 0;\nvar SAWTOOTH = 1;\nvar SINE = 2;\nvar NOISE = 3;\n\n// Playback volume\nvar masterVolume = 1;\n\nvar OVERSAMPLING = 8;\n\n/*** Core data structure ***/\n\n// Sound generation parameters are on [0,1] unless noted SIGNED & thus\n// on [-1,1]\nfunction Params() {\n this.oldParams = true; // Note what structure this is\n\n // Wave shape\n this.wave_type = SQUARE;\n\n // Envelope\n this.p_env_attack = 0; // Attack time\n this.p_env_sustain = 0.3; // Sustain time\n this.p_env_punch = 0; // Sustain punch\n this.p_env_decay = 0.4; // Decay time\n\n // Tone\n this.p_base_freq = 0.3; // Start frequency\n this.p_freq_limit = 0; // Min frequency cutoff\n this.p_freq_ramp = 0; // Slide (SIGNED)\n this.p_freq_dramp = 0; // Delta slide (SIGNED)\n // Vibrato\n this.p_vib_strength = 0; // Vibrato depth\n this.p_vib_speed = 0; // Vibrato speed\n\n // Tonal change\n this.p_arp_mod = 0; // Change amount (SIGNED)\n this.p_arp_speed = 0; // Change speed\n\n // Square wave duty (proportion of time signal is high vs. low)\n this.p_duty = 0; // Square duty\n this.p_duty_ramp = 0; // Duty sweep (SIGNED)\n\n // Repeat\n this.p_repeat_speed = 0; // Repeat speed\n\n // Flanger\n this.p_pha_offset = 0; // Flanger offset (SIGNED)\n this.p_pha_ramp = 0; // Flanger sweep (SIGNED)\n\n // Low-pass filter\n this.p_lpf_freq = 1; // Low-pass filter cutoff\n this.p_lpf_ramp = 0; // Low-pass filter cutoff sweep (SIGNED)\n this.p_lpf_resonance = 0;// Low-pass filter resonance\n // High-pass filter\n this.p_hpf_freq = 0; // High-pass filter cutoff\n this.p_hpf_ramp = 0; // High-pass filter cutoff sweep (SIGNED)\n\n // Sample parameters\n this.sound_vol = 0.5;\n this.sample_rate = 44100;\n this.sample_size = 8;\n}\n\n/*** Helper functions ***/\n\nfunction sqr(x) { return x * x }\nfunction cube(x) { return x * x * x }\nfunction sign(x) { return x < 0 ? -1 : 1 }\nfunction log(x, b) { return Math.log(x) / Math.log(b); }\nvar pow = Math.pow;\n\nfunction frnd(range) {\n return Math.random() * range;\n}\n\nfunction rndr(from, to) {\n return Math.random() * (to - from) + from;\n}\n\nfunction rnd(max) {\n return Math.floor(Math.random() * (max + 1));\n}\n\n/*** Import/export functions ***/\n\n// http://stackoverflow.com/questions/3096646/how-to-convert-a-floating-point-number-to-its-binary-representation-ieee-754-i\nfunction assembleFloat(sign, exponent, mantissa)\n{\n return (sign << 31) | (exponent << 23) | (mantissa);\n}\n\nfunction floatToNumber(flt)\n{\n if (isNaN(flt)) // Special case: NaN\n return assembleFloat(0, 0xFF, 0x1337); // Mantissa is nonzero for NaN\n\n var sign = (flt < 0) ? 1 : 0;\n flt = Math.abs(flt);\n if (flt == 0.0) // Special case: +-0\n return assembleFloat(sign, 0, 0);\n\n var exponent = Math.floor(Math.log(flt) / Math.LN2);\n if (exponent > 127 || exponent < -126) // Special case: +-Infinity (and huge numbers)\n return assembleFloat(sign, 0xFF, 0); // Mantissa is zero for +-Infinity\n\n var mantissa = flt / Math.pow(2, exponent);\n return assembleFloat(sign, exponent + 127, (mantissa * Math.pow(2, 23)) & 0x7FFFFF);\n}\n\n// http://stackoverflow.com/a/16001019\nfunction numberToFloat(bytes) {\n var sign = (bytes & 0x80000000) ? -1 : 1;\n var exponent = ((bytes >> 23) & 0xFF) - 127;\n var significand = (bytes & ~(-1 << 23));\n\n if (exponent == 128) \n return sign * ((significand) ? Number.NaN : Number.POSITIVE_INFINITY);\n\n if (exponent == -127) {\n if (significand == 0) return sign * 0.0;\n exponent = -126;\n significand /= (1 << 22);\n } else significand = (significand | (1 << 23)) / (1 << 23);\n\n return sign * significand * Math.pow(2, exponent);\n}\n\n// export parameter list to URL friendly base58 string\n// https://gist.github.com/diafygi/90a3e80ca1c2793220e5/\nvar b58alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nvar params_order = [\n \"wave_type\",\n \"p_env_attack\",\n \"p_env_sustain\",\n \"p_env_punch\",\n \"p_env_decay\",\n \"p_base_freq\",\n \"p_freq_limit\",\n \"p_freq_ramp\",\n \"p_freq_dramp\",\n \"p_vib_strength\",\n \"p_vib_speed\",\n \"p_arp_mod\",\n \"p_arp_speed\",\n \"p_duty\",\n \"p_duty_ramp\",\n \"p_repeat_speed\",\n \"p_pha_offset\",\n \"p_pha_ramp\",\n \"p_lpf_freq\",\n \"p_lpf_ramp\",\n \"p_lpf_resonance\",\n \"p_hpf_freq\",\n \"p_hpf_ramp\"\n];\n\nvar params_signed = [\"p_freq_ramp\", \"p_freq_dramp\", \"p_arp_mod\", \"p_duty_ramp\", \"p_pha_offset\", \"p_pha_ramp\", \"p_lpf_ramp\", \"p_hpf_ramp\"];\n\nParams.prototype.toB58 = function() {\n var convert = [];\n for (var pi in params_order) {\n var p = params_order[pi];\n if (p == \"wave_type\") {\n convert.push(this[p]);\n } else if (p.indexOf(\"p_\") == 0) {\n var val = this[p];\n val = floatToNumber(val);\n convert.push(0xff & val);\n convert.push(0xff & (val >> 8))\n convert.push(0xff & (val >> 16))\n convert.push(0xff & (val >> 24))\n }\n }\n return function(B,A){var d=[],s=\"\",i,j,c,n;for(i in B){j=0,c=B[i];s+=c||s.length^i?\"\":1;while(j in d||c){n=d[j];n=n?n*256+c:c;c=n/58|0;d[j]=n%58;j++}}while(j--)s+=A[d[j]];return s}(convert, b58alphabet);\n}\n\nParams.prototype.fromB58 = function(b58encoded) {\n this.fromJSON(sfxr.b58decode(b58encoded));\n return this;\n}\n\nParams.prototype.fromJSON = function(struct) {\n for (var p in struct) {\n if (struct.hasOwnProperty(p)) {\n this[p] = struct[p];\n }\n }\n return this;\n}\n\n/*** Presets ***/\n\n// These functions roll up random sounds appropriate to various\n// typical game events:\n\nParams.prototype.pickupCoin = function () {\n this.wave_type = SAWTOOTH;\n this.p_base_freq = 0.4 + frnd(0.5);\n this.p_env_attack = 0;\n this.p_env_sustain = frnd(0.1);\n this.p_env_decay = 0.1 + frnd(0.4);\n this.p_env_punch = 0.3 + frnd(0.3);\n if (rnd(1)) {\n this.p_arp_speed = 0.5 + frnd(0.2);\n this.p_arp_mod = 0.2 + frnd(0.4);\n }\n return this;\n}\n\nParams.prototype.laserShoot = function () {\n this.wave_type = rnd(2);\n if(this.wave_type === SINE && rnd(1))\n this.wave_type = rnd(1);\n if (rnd(2) === 0) {\n this.p_base_freq = 0.3 + frnd(0.6);\n this.p_freq_limit = frnd(0.1);\n this.p_freq_ramp = -0.35 - frnd(0.3);\n } else {\n this.p_base_freq = 0.5 + frnd(0.5);\n this.p_freq_limit = this.p_base_freq - 0.2 - frnd(0.6);\n if (this.p_freq_limit < 0.2) this.p_freq_limit = 0.2;\n this.p_freq_ramp = -0.15 - frnd(0.2);\n }\n if (this.wave_type === SAWTOOTH)\n this.p_duty = 1;\n if (rnd(1)) {\n this.p_duty = frnd(0.5);\n this.p_duty_ramp = frnd(0.2);\n } else {\n this.p_duty = 0.4 + frnd(0.5);\n this.p_duty_ramp = -frnd(0.7);\n }\n this.p_env_attack = 0;\n this.p_env_sustain = 0.1 + frnd(0.2);\n this.p_env_decay = frnd(0.4);\n if (rnd(1))\n this.p_env_punch = frnd(0.3);\n if (rnd(2) === 0) {\n this.p_pha_offset = frnd(0.2);\n this.p_pha_ramp = -frnd(0.2);\n }\n //if (rnd(1))\n this.p_hpf_freq = frnd(0.3);\n\n return this;\n}\n\nParams.prototype.explosion = function () {\n this.wave_type = NOISE;\n if (rnd(1)) {\n this.p_base_freq = sqr(0.1 + frnd(0.4));\n this.p_freq_ramp = -0.1 + frnd(0.4);\n } else {\n this.p_base_freq = sqr(0.2 + frnd(0.7));\n this.p_freq_ramp = -0.2 - frnd(0.2);\n }\n if (rnd(4) === 0)\n this.p_freq_ramp = 0;\n if (rnd(2) === 0)\n this.p_repeat_speed = 0.3 + frnd(0.5);\n this.p_env_attack = 0;\n this.p_env_sustain = 0.1 + frnd(0.3);\n this.p_env_decay = frnd(0.5);\n if (rnd(1)) {\n this.p_pha_offset = -0.3 + frnd(0.9);\n this.p_pha_ramp = -frnd(0.3);\n }\n this.p_env_punch = 0.2 + frnd(0.6);\n if (rnd(1)) {\n this.p_vib_strength = frnd(0.7);\n this.p_vib_speed = frnd(0.6);\n }\n if (rnd(2) === 0) {\n this.p_arp_speed = 0.6 + frnd(0.3);\n this.p_arp_mod = 0.8 - frnd(1.6);\n }\n\n return this;\n}\n\nParams.prototype.powerUp = function () {\n if (rnd(1)) {\n this.wave_type = SAWTOOTH;\n this.p_duty = 1;\n } else {\n this.p_duty = frnd(0.6);\n }\n this.p_base_freq = 0.2 + frnd(0.3);\n if (rnd(1)) {\n this.p_freq_ramp = 0.1 + frnd(0.4);\n this.p_repeat_speed = 0.4 + frnd(0.4);\n } else {\n this.p_freq_ramp = 0.05 + frnd(0.2);\n if (rnd(1)) {\n this.p_vib_strength = frnd(0.7);\n this.p_vib_speed = frnd(0.6);\n }\n }\n this.p_env_attack = 0;\n this.p_env_sustain = frnd(0.4);\n this.p_env_decay = 0.1 + frnd(0.4);\n\n return this;\n}\n\nParams.prototype.hitHurt = function () {\n this.wave_type = rnd(2);\n if (this.wave_type === SINE)\n this.wave_type = NOISE;\n if (this.wave_type === SQUARE)\n this.p_duty = frnd(0.6);\n if (this.wave_type === SAWTOOTH)\n this.p_duty = 1;\n this.p_base_freq = 0.2 + frnd(0.6);\n this.p_freq_ramp = -0.3 - frnd(0.4);\n this.p_env_attack = 0;\n this.p_env_sustain = frnd(0.1);\n this.p_env_decay = 0.1 + frnd(0.2);\n if (rnd(1))\n this.p_hpf_freq = frnd(0.3);\n return this;\n}\n\nParams.prototype.jump = function () {\n this.wave_type = SQUARE;\n this.p_duty = frnd(0.6);\n this.p_base_freq = 0.3 + frnd(0.3);\n this.p_freq_ramp = 0.1 + frnd(0.2);\n this.p_env_attack = 0;\n this.p_env_sustain = 0.1 + frnd(0.3);\n this.p_env_decay = 0.1 + frnd(0.2);\n if (rnd(1))\n this.p_hpf_freq = frnd(0.3);\n if (rnd(1))\n this.p_lpf_freq = 1 - frnd(0.6);\n return this;\n}\n\nParams.prototype.blipSelect = function () {\n this.wave_type = rnd(1);\n if (this.wave_type === SQUARE)\n this.p_duty = frnd(0.6);\n else\n this.p_duty = 1;\n this.p_base_freq = 0.2 + frnd(0.4);\n this.p_env_attack = 0;\n this.p_env_sustain = 0.1 + frnd(0.1);\n this.p_env_decay = frnd(0.2);\n this.p_hpf_freq = 0.1;\n return this;\n}\n\nParams.prototype.synth = function () {\n this.wave_type = rnd(1);\n this.p_base_freq = [0.2723171360931539, 0.19255692561524382, 0.13615778746815113][rnd(2)];\n this.p_env_attack = rnd(4) > 3 ? frnd(0.5) : 0;\n this.p_env_sustain = frnd(1);\n this.p_env_punch = frnd(1);\n this.p_env_decay = frnd(0.9) + 0.1;\n this.p_arp_mod = [0, 0, 0, 0, -0.3162, 0.7454, 0.7454][rnd(6)];\n this.p_arp_speed = frnd(0.5) + 0.4;\n this.p_duty = frnd(1);\n this.p_duty_ramp = rnd(2) == 2 ? frnd(1) : 0;\n this.p_lpf_freq = [1, 0.9 * frnd(1) * frnd(1) + 0.1][rnd(1)];\n this.p_lpf_ramp = rndr(-1, 1);\n this.p_lpf_resonance = frnd(1);\n this.p_hpf_freq = rnd(3) == 3 ? frnd(1) : 0;\n this.p_hpf_ramp = rnd(3) == 3 ? frnd(1) : 0;\n return this;\n}\n\nParams.prototype.tone = function () {\n this.wave_type = SINE;\n this.p_base_freq = 0.35173364; // 440 Hz\n this.p_env_attack = 0;\n this.p_env_sustain = 0.6641; // 1 sec\n this.p_env_decay = 0;\n this.p_env_punch = 0;\n return this;\n}\n\nParams.prototype.click = function() {\n const base = [\"explosion\", \"hitHurt\"][rnd(1)];\n this[base]();\n if (rnd(1)) {\n this.p_freq_ramp = -0.5 + frnd(1.0);\n }\n if (rnd(1)) {\n this.p_env_sustain = (frnd(0.4) + 0.2) * this.p_env_sustain;\n this.p_env_decay = (frnd(0.4) + 0.2) * this.p_env_decay;\n }\n if (rnd(3) == 0) {\n this.p_env_attack = frnd(0.3);\n }\n this.p_base_freq = 1 - frnd(0.25);\n this.p_hpf_freq = 1 - frnd(0.1);\n return this;\n}\n\nParams.prototype.random = function () {\n this.wave_type = rnd(3);\n if (rnd(1))\n this.p_base_freq = cube(frnd(2) - 1) + 0.5;\n else\n this.p_base_freq = sqr(frnd(1));\n this.p_freq_limit = 0;\n this.p_freq_ramp = Math.pow(frnd(2) - 1, 5);\n if (this.p_base_freq > 0.7 && this.p_freq_ramp > 0.2)\n this.p_freq_ramp = -this.p_freq_ramp;\n if (this.p_base_freq < 0.2 && this.p_freq_ramp < -0.05)\n this.p_freq_ramp = -this.p_freq_ramp;\n this.p_freq_dramp = Math.pow(frnd(2) - 1, 3);\n this.p_duty = frnd(2) - 1;\n this.p_duty_ramp = Math.pow(frnd(2) - 1, 3);\n this.p_vib_strength = Math.pow(frnd(2) - 1, 3);\n this.p_vib_speed = rndr(-1, 1);\n this.p_env_attack = cube(rndr(-1, 1));\n this.p_env_sustain = sqr(rndr(-1, 1));\n this.p_env_decay = rndr(-1, 1);\n this.p_env_punch = Math.pow(frnd(0.8), 2);\n if (this.p_env_attack + this.p_env_sustain + this.p_env_decay < 0.2) {\n this.p_env_sustain += 0.2 + frnd(0.3);\n this.p_env_decay += 0.2 + frnd(0.3);\n }\n this.p_lpf_resonance = rndr(-1, 1);\n this.p_lpf_freq = 1 - Math.pow(frnd(1), 3);\n this.p_lpf_ramp = Math.pow(frnd(2) - 1, 3);\n if (this.p_lpf_freq < 0.1 && this.p_lpf_ramp < -0.05)\n this.p_lpf_ramp = -this.p_lpf_ramp;\n this.p_hpf_freq = Math.pow(frnd(1), 5);\n this.p_hpf_ramp = Math.pow(frnd(2) - 1, 5);\n this.p_pha_offset = Math.pow(frnd(2) - 1, 3);\n this.p_pha_ramp = Math.pow(frnd(2) - 1, 3);\n this.p_repeat_speed = frnd(2) - 1;\n this.p_arp_speed = frnd(2) - 1;\n this.p_arp_mod = frnd(2) - 1;\n return this;\n}\n\nParams.prototype.mutate = function () {\n if (rnd(1)) this.p_base_freq += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_freq_ramp += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_freq_dramp += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_duty += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_duty_ramp += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_vib_strength += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_vib_speed += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_vib_delay += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_env_attack += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_env_sustain += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_env_decay += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_env_punch += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_lpf_resonance += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_lpf_freq += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_lpf_ramp += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_hpf_freq += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_hpf_ramp += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_pha_offset += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_pha_ramp += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_repeat_speed += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_arp_speed += frnd(0.1) - 0.05;\n if (rnd(1)) this.p_arp_mod += frnd(0.1) - 0.05;\n return this;\n}\n\n/*** Simpler namespaced functional API ***/\n\nsfxr = {};\n\nsfxr.toBuffer = function(synthdef) {\n return (new SoundEffect(synthdef)).getRawBuffer()[\"buffer\"];\n};\n\nsfxr.toWebAudio = function(synthdef, audiocontext) {\n var sfx = new SoundEffect(synthdef);\n var buffer = sfx.getRawBuffer()[\"normalized\"];\n if (audiocontext) {\n var buff = audiocontext.createBuffer(1, buffer.length, sfx.sampleRate);\n var nowBuffering = buff.getChannelData(0);\n for (var i = 0; i < buffer.length; i++) {\n nowBuffering[i] = buffer[i];\n }\n var proc = audiocontext.createBufferSource();\n proc.buffer = buff;\n return proc;\n }\n};\n\nsfxr.toWave = function(synthdef) {\n return (new SoundEffect(synthdef)).generate();\n};\n\nsfxr.toAudio = function(synthdef) {\n return sfxr.toWave(synthdef).getAudio();\n}\n\nsfxr.play = function(synthdef) {\n return sfxr.toAudio(synthdef).play();\n}\n\nsfxr.b58decode = function(b58encoded) {\n var decoded = function(S,A){var d=[],b=[],i,j,c,n;for(i in S){j=0,c=A.indexOf(S[i]);if(c<0)return undefined;c||b.length^i?i:b.push(0);while(j in d||c){n=d[j];n=n?n*58+c:c;c=n>>8;d[j]=n%256;j++}}while(j--)b.push(d[j]);return new Uint8Array(b)}(b58encoded,b58alphabet);\n var result = {};\n for (var pi in params_order) {\n var p = params_order[pi];\n var offset = (pi - 1) * 4 + 1;\n if (p == \"wave_type\") {\n result[p] = decoded[0];\n } else {\n var val = (decoded[offset] | (decoded[offset + 1] << 8) | (decoded[offset + 2] << 16) | (decoded[offset + 3] << 24));\n result[p] = numberToFloat(val);\n }\n }\n return result;\n}\n\nsfxr.b58encode = function(synthdef) {\n var p = new Params();\n p.fromJSON(synthdef);\n return p.toB58();\n}\n\nsfxr.generate = function(algorithm, options) {\n const p = new Params();\n const opts = options || {};\n p.sound_vol = opts[\"sound_vol\"] || 0.25;\n p.sample_rate = opts[\"sample_rate\"] || 44100;\n p.sample_size = opts[\"sample_size\"] || 8;\n return p[algorithm]();\n}\n\n/*** Main entry point ***/\n\nfunction SoundEffect(ps) {\n if (typeof(ps) == \"string\") {\n var PARAMS = new Params();\n if (ps.indexOf(\"#\") == 0) {\n ps = ps.slice(1);\n }\n ps = PARAMS.fromB58(ps);\n }\n this.init(ps);\n}\n\nSoundEffect.prototype.init = function (ps) {\n this.parameters = ps;\n this.initForRepeat(); // First time through, this is a bit of a misnomer\n\n // Waveform shape\n this.waveShape = parseInt(ps.wave_type);\n\n // Filter\n this.fltw = Math.pow(ps.p_lpf_freq, 3) * 0.1;\n this.enableLowPassFilter = (ps.p_lpf_freq != 1);\n this.fltw_d = 1 + ps.p_lpf_ramp * 0.0001;\n this.fltdmp = 5 / (1 + Math.pow(ps.p_lpf_resonance, 2) * 20) *\n (0.01 + this.fltw);\n if (this.fltdmp > 0.8) this.fltdmp=0.8;\n this.flthp = Math.pow(ps.p_hpf_freq, 2) * 0.1;\n this.flthp_d = 1 + ps.p_hpf_ramp * 0.0003;\n\n // Vibrato\n this.vibratoSpeed = Math.pow(ps.p_vib_speed, 2) * 0.01;\n this.vibratoAmplitude = ps.p_vib_strength * 0.5;\n\n // Envelope\n this.envelopeLength = [\n Math.floor(ps.p_env_attack * ps.p_env_attack * 100000),\n Math.floor(ps.p_env_sustain * ps.p_env_sustain * 100000),\n Math.floor(ps.p_env_decay * ps.p_env_decay * 100000)\n ];\n this.envelopePunch = ps.p_env_punch;\n\n // Flanger\n this.flangerOffset = Math.pow(ps.p_pha_offset, 2) * 1020;\n if (ps.p_pha_offset < 0) this.flangerOffset = -this.flangerOffset;\n this.flangerOffsetSlide = Math.pow(ps.p_pha_ramp, 2) * 1;\n if (ps.p_pha_ramp < 0) this.flangerOffsetSlide = -this.flangerOffsetSlide;\n\n // Repeat\n this.repeatTime = Math.floor(Math.pow(1 - ps.p_repeat_speed, 2) * 20000\n + 32);\n if (ps.p_repeat_speed === 0)\n this.repeatTime = 0;\n\n this.gain = Math.exp(ps.sound_vol) - 1;\n\n this.sampleRate = ps.sample_rate;\n this.bitsPerChannel = ps.sample_size;\n}\n\nSoundEffect.prototype.initForRepeat = function() {\n var ps = this.parameters;\n this.elapsedSinceRepeat = 0;\n\n this.period = 100 / (ps.p_base_freq * ps.p_base_freq + 0.001);\n this.periodMax = 100 / (ps.p_freq_limit * ps.p_freq_limit + 0.001);\n this.enableFrequencyCutoff = (ps.p_freq_limit > 0);\n this.periodMult = 1 - Math.pow(ps.p_freq_ramp, 3) * 0.01;\n this.periodMultSlide = -Math.pow(ps.p_freq_dramp, 3) * 0.000001;\n\n this.dutyCycle = 0.5 - ps.p_duty * 0.5;\n this.dutyCycleSlide = -ps.p_duty_ramp * 0.00005;\n\n if (ps.p_arp_mod >= 0)\n this.arpeggioMultiplier = 1 - Math.pow(ps.p_arp_mod, 2) * .9;\n else\n this.arpeggioMultiplier = 1 + Math.pow(ps.p_arp_mod, 2) * 10;\n this.arpeggioTime = Math.floor(Math.pow(1 - ps.p_arp_speed, 2) * 20000 + 32);\n if (ps.p_arp_speed === 1)\n this.arpeggioTime = 0;\n}\n\nSoundEffect.prototype.getRawBuffer = function () {\n var fltp = 0;\n var fltdp = 0;\n var fltphp = 0;\n\n var noise_buffer = Array(32);\n for (var i = 0; i < 32; ++i)\n noise_buffer[i] = Math.random() * 2 - 1;\n\n var envelopeStage = 0;\n var envelopeElapsed = 0;\n\n var vibratoPhase = 0;\n\n var phase = 0;\n var ipp = 0;\n var flanger_buffer = Array(1024);\n for (var i = 0; i < 1024; ++i)\n flanger_buffer[i] = 0;\n\n var num_clipped = 0;\n\n var buffer = [];\n var normalized = [];\n\n var sample_sum = 0;\n var num_summed = 0;\n var summands = Math.floor(44100 / this.sampleRate);\n\n for(var t = 0; ; ++t) {\n\n // Repeats\n if (this.repeatTime != 0 && ++this.elapsedSinceRepeat >= this.repeatTime)\n this.initForRepeat();\n\n // Arpeggio (single)\n if(this.arpeggioTime != 0 && t >= this.arpeggioTime) {\n this.arpeggioTime = 0;\n this.period *= this.arpeggioMultiplier;\n }\n\n // Frequency slide, and frequency slide slide!\n this.periodMult += this.periodMultSlide;\n this.period *= this.periodMult;\n if(this.period > this.periodMax) {\n this.period = this.periodMax;\n if (this.enableFrequencyCutoff)\n break;\n }\n\n // Vibrato\n var rfperiod = this.period;\n if (this.vibratoAmplitude > 0) {\n vibratoPhase += this.vibratoSpeed;\n rfperiod = this.period * (1 + Math.sin(vibratoPhase) * this.vibratoAmplitude);\n }\n var iperiod = Math.floor(rfperiod);\n if (iperiod < OVERSAMPLING) iperiod = OVERSAMPLING;\n\n // Square wave duty cycle\n this.dutyCycle += this.dutyCycleSlide;\n if (this.dutyCycle < 0) this.dutyCycle = 0;\n if (this.dutyCycle > 0.5) this.dutyCycle = 0.5;\n\n // Volume envelope\n if (++envelopeElapsed > this.envelopeLength[envelopeStage]) {\n envelopeElapsed = 0;\n if (++envelopeStage > 2)\n break;\n }\n var env_vol;\n var envf = envelopeElapsed / this.envelopeLength[envelopeStage];\n if (envelopeStage === 0) { // Attack\n env_vol = envf;\n } else if (envelopeStage === 1) { // Sustain\n env_vol = 1 + (1 - envf) * 2 * this.envelopePunch;\n } else { // Decay\n env_vol = 1 - envf;\n }\n\n // Flanger step\n this.flangerOffset += this.flangerOffsetSlide;\n var iphase = Math.abs(Math.floor(this.flangerOffset));\n if (iphase > 1023) iphase = 1023;\n\n if (this.flthp_d != 0) {\n this.flthp *= this.flthp_d;\n if (this.flthp < 0.00001)\n this.flthp = 0.00001;\n if (this.flthp > 0.1)\n this.flthp = 0.1;\n }\n\n // 8x oversampling\n var sample = 0;\n for (var si = 0; si < OVERSAMPLING; ++si) {\n var sub_sample = 0;\n phase++;\n if (phase >= iperiod) {\n phase %= iperiod;\n if (this.waveShape === NOISE)\n for(var i = 0; i < 32; ++i)\n noise_buffer[i] = Math.random() * 2 - 1;\n }\n\n // Base waveform\n var fp = phase / iperiod;\n if (this.waveShape === SQUARE) {\n if (fp < this.dutyCycle)\n sub_sample=0.5;\n else\n sub_sample=-0.5;\n } else if (this.waveShape === SAWTOOTH) {\n if (fp < this.dutyCycle)\n sub_sample = -1 + 2 * fp/this.dutyCycle;\n else\n sub_sample = 1 - 2 * (fp-this.dutyCycle)/(1-this.dutyCycle);\n } else if (this.waveShape === SINE) {\n sub_sample = Math.sin(fp * 2 * Math.PI);\n } else if (this.waveShape === NOISE) {\n sub_sample = noise_buffer[Math.floor(phase * 32 / iperiod)];\n } else {\n throw \"ERROR: Bad wave type: \" + this.waveShape;\n }\n\n // Low-pass filter\n var pp = fltp;\n this.fltw *= this.fltw_d;\n if (this.fltw < 0) this.fltw = 0;\n if (this.fltw > 0.1) this.fltw = 0.1;\n if (this.enableLowPassFilter) {\n fltdp += (sub_sample - fltp) * this.fltw;\n fltdp -= fltdp * this.fltdmp;\n } else {\n fltp = sub_sample;\n fltdp = 0;\n }\n fltp += fltdp;\n\n // High-pass filter\n fltphp += fltp - pp;\n fltphp -= fltphp * this.flthp;\n sub_sample = fltphp;\n\n // Flanger\n flanger_buffer[ipp & 1023] = sub_sample;\n sub_sample += flanger_buffer[(ipp - iphase + 1024) & 1023];\n ipp = (ipp + 1) & 1023;\n\n // final accumulation and envelope application\n sample += sub_sample * env_vol;\n }\n\n // Accumulate samples appropriately for sample rate\n sample_sum += sample;\n if (++num_summed >= summands) {\n num_summed = 0;\n sample = sample_sum / summands;\n sample_sum = 0;\n } else {\n continue;\n }\n\n sample = sample / OVERSAMPLING * masterVolume;\n sample *= this.gain;\n\n // store the original normalized floating point sample\n normalized.push(sample);\n\n if (this.bitsPerChannel === 8) {\n // Rescale [-1, 1) to [0, 256)\n sample = Math.floor((sample + 1) * 128);\n if (sample > 255) {\n sample = 255;\n ++num_clipped;\n } else if (sample < 0) {\n sample = 0;\n ++num_clipped;\n }\n buffer.push(sample);\n } else {\n // Rescale [-1, 1) to [-32768, 32768)\n sample = Math.floor(sample * (1<<15));\n if (sample >= (1<<15)) {\n sample = (1 << 15)-1;\n ++num_clipped;\n } else if (sample < -(1<<15)) {\n sample = -(1 << 15);\n ++num_clipped;\n }\n buffer.push(sample & 0xFF);\n buffer.push((sample >> 8) & 0xFF);\n }\n }\n \n return {\n \"buffer\": buffer,\n \"normalized\": normalized,\n \"clipped\": num_clipped,\n }\n}\n\nSoundEffect.prototype.generate = function() {\n var rendered = this.getRawBuffer();\n var wave = new RIFFWAVE();\n wave.header.sampleRate = this.sampleRate;\n wave.header.bitsPerSample = this.bitsPerChannel;\n wave.Make(rendered.buffer);\n wave.clipping = rendered.clipped;\n wave.buffer = rendered.normalized;\n wave.getAudio = _sfxr_getAudioFn(wave);\n return wave;\n}\n\nvar _actx = null;\nvar _sfxr_getAudioFn = function(wave) {\n return function() {\n // check for procedural audio\n var actx = null;\n if (!_actx) {\n if ('AudioContext' in window) {\n _actx = new AudioContext();\n } else if ('webkitAudioContext' in window) {\n _actx = new webkitAudioContext();\n }\n }\n actx = _actx;\n \n if (actx) {\n var buff = actx.createBuffer(1, wave.buffer.length, wave.header.sampleRate);\n var nowBuffering = buff.getChannelData(0);\n for (var i=0;i<wave.buffer.length;i++) {\n nowBuffering[i] = wave.buffer[i];\n }\n var volume = 1.0;\n var obj = {\n \"channels\": [],\n \"setVolume\": function(v) { volume = v; return obj; },\n \"play\": function() {\n var proc = actx.createBufferSource();\n proc.buffer = buff;\n var gainNode = actx.createGain()\n gainNode.gain.value = volume;\n gainNode.connect(actx.destination)\n proc.connect(gainNode);\n if (proc[\"start\"]) {\n proc.start();\n } else if (proc[\"noteOn\"]) {\n proc.noteOn(0);\n }\n this.channels.push(proc);\n return proc;\n }\n };\n return obj;\n } else {\n var audio = new Audio();\n audio.src = wave.dataURI;\n return audio;\n }\n };\n};\n\n/*** conversions from slider values, internal, and units ***/\n\n// convert from slider values to internal representation\n\nvar sliders = {\n p_env_attack: function (v) { return v * v * 100000.0 },\n p_env_sustain: function (v) { return v * v * 100000.0 },\n p_env_punch: function (v) { return v },\n p_env_decay: function (v) { return v * v * 100000.0 },\n\n p_base_freq: function (v) { return 8 * 44100 * (v * v + 0.001) / 100 },\n p_freq_limit: function (v) { return 8 * 44100 * (v * v + 0.001) / 100 },\n p_freq_ramp: function (v) { return 1.0 - Math.pow(v, 3.0) * 0.01 },\n p_freq_dramp: function (v) { return -Math.pow(v, 3.0) * 0.000001 },\n\n p_vib_speed: function (v) { return Math.pow(v, 2.0) * 0.01 },\n p_vib_strength: function (v) { return v * 0.5 },\n\n p_arp_mod: function (v) { \n return v >= 0 ? 1.0 - Math.pow(v, 2) * 0.9 : 1.0 + Math.pow(v, 2) * 10; },\n p_arp_speed: function (v) { return (v === 1.0) ? 0 :\n Math.floor(Math.pow(1.0 - v, 2.0) * 20000 + 32)},\n\n p_duty: function (v) { return 0.5 - v * 0.5; },\n p_duty_ramp: function (v) { return -v * 0.00005 },\n\n p_repeat_speed: function (v) { return (v === 0) ? 0 :\n Math.floor(Math.pow(1-v, 2) * 20000) + 32 },\n\n p_pha_offset: function (v) { return (v < 0 ? -1 : 1) * Math.pow(v,2)*1020 },\n p_pha_ramp: function (v) { return (v < 0 ? -1 : 1) * Math.pow(v,2) },\n\n p_lpf_freq: function (v) { return Math.pow(v, 3) * 0.1 },\n p_lpf_ramp: function (v) { return 1.0 + v * 0.0001 },\n p_lpf_resonance: function (v) { return 5.0 / (1.0 + Math.pow(v, 2) * 20) }, // * (0.01 + fltw);\n\n p_hpf_freq: function (v) { return Math.pow(v, 2) * 0.1 },\n p_hpf_ramp: function (v) { return 1.0 + v * 0.0003 },\n\n sound_vol: function (v) { return Math.exp(v) - 1; }\n};\n\nvar sliders_inverse = {\n p_env_attack: function (v) { return Math.sqrt(v / 100000.0); },\n p_env_sustain: function (v) { return Math.sqrt(v / 100000.0); },\n p_env_punch: function (v) { return v; },\n p_env_decay: function (v) { return Math.sqrt(v / 100000.0); },\n\n p_base_freq: function (v) { return Math.sqrt(v * 100 / 8 / 44100 - 0.001); },\n p_freq_limit: function (v) { return Math.sqrt(v * 100 / 8 / 44100 - 0.001); },\n p_freq_ramp: function (v) { return Math.cbrt((1.0 - v) / 0.01); },\n p_freq_dramp: function (v) { return Math.cbrt(v / -0.000001); },\n\n p_vib_speed: function (v) { return Math.sqrt(v / 0.01); },\n p_vib_strength: function (v) { return v / 0.5; },\n\n p_arp_mod: function (v) {\n return v < 1 ? Math.sqrt((1.0 - v) / 0.9) : -Math.sqrt((v - 1.0) / 10.0);\n },\n p_arp_speed: function (v) { return (v === 0) ? 1.0 :\n ( (1.0 - Math.sqrt((v - (v < 100 ? 30 : 32)) / 20000)))},\n\n p_duty: function (v) { return (v - 0.5) / -0.5; },\n p_duty_ramp: function (v) { return v / -0.00005 },\n\n p_repeat_speed: function (v) { return v === 0 ? 0 : -(Math.sqrt((v - 32) / 20000) - 1.0) },\n\n p_pha_offset: function (v) { return (v < 0 ? -1 : 1) * Math.sqrt(Math.abs(v) / 1020) },\n p_pha_ramp: function (v) { return (v < 0 ? -1 : 1) * Math.sqrt(Math.abs(v)) },\n\n p_lpf_freq: function (v) { return Math.cbrt(v / 0.1); },\n p_lpf_ramp: function (v) { return (v - 1.0) / 0.0001; },\n p_lpf_resonance: function (v) { return Math.sqrt((1.0 / (v / 5.0) - 1) / 20) },\n\n p_hpf_freq: function (v) { return Math.sqrt(v / 0.1); },\n p_hpf_ramp: function (v) { return (v - 1.0) / 0.0003; },\n sound_vol: function (v) { return Math.log(v + 1);; }\n}\n\n// convert from internal representation to domain value without units\n\nvar domain = {\n p_env_attack: function (v) { return (v / 44100); },\n p_env_sustain: function (v) { return (v / 44100); },\n p_env_punch: function (v) { return (v * 100); },\n p_env_decay: function (v) { return (v / 44100); },\n\n p_base_freq: function (v) { return v; },\n p_freq_limit: function (v) { return v; },\n p_freq_ramp: function (v) { return (44100*Math.log(v)/Math.log(0.5)); },\n p_freq_dramp: function (v) { return (v*44100 / Math.pow(2, -44101./44100)); },\n\n p_vib_speed: function (v) { return (441000/64. * v); },\n p_vib_strength: function (v) { return (v*100); },\n\n p_arp_mod: function (v) { return (1./v); },\n p_arp_speed: function (v) { return (v / 44100); },\n\n p_duty: function (v) { return (100 * v); },\n p_duty_ramp: function (v) { return (8 * 44100 * v); },\n\n p_repeat_speed: function (v) { return v === 0 ? 0 : (44100./v); },\n\n p_pha_offset: function (v) { return (1000*v/44100); },\n p_pha_ramp: function (v) { return (1000*v); },\n\n p_lpf_freq: function (v) { return (v === .1) ? 0 : 8 * 44100 * v / (1-v); },\n p_lpf_ramp: function (v) { return Math.pow(v, 44100); },\n p_lpf_resonance: function (v) { return (100*(1-v*.11));},\n\n p_hpf_freq: function (v) { return 8 * 44100 * v / (1-v); },\n p_hpf_ramp: function (v) { return Math.pow(v, 44100); },\n\n sound_vol: function (v) { return 10 * Math.log(v*v) / Math.log(10); }\n}\n\nvar domain_inverse = {\n p_env_attack: function (v) { return (v * 44100); },\n p_env_sustain: function (v) { return (v * 44100); },\n p_env_punch: function (v) { return (v / 100); },\n p_env_decay: function (v) { return (v * 44100); },\n\n p_base_freq: function (v) { return v; },\n p_freq_limit: function (v) { return v; },\n p_freq_ramp: function (v) { return Math.exp(Math.log(0.5) * v / 44100); },\n p_freq_dramp: function (v) { return v * Math.pow(2, -44101./44100) / 44100; },\n\n p_vib_speed: function (v) { return (64. / 441000) * v; },\n p_vib_strength: function (v) { return (v / 100); },\n\n p_arp_mod: function (v) { return (1. / v); },\n p_arp_speed: function (v) { return (v * 44100); },\n\n p_duty: function (v) { return (v / 100); },\n p_duty_ramp: function (v) { return (v / (8 * 44100)); },\n\n p_repeat_speed: function (v) { return v <= 0 ? 0 : v > 1378 ? 32 : (44100 / v); },\n\n p_pha_offset: function (v) { return (v / 1000) * 44100; },\n p_pha_ramp: function (v) { return (v / 1000); },\n\n p_lpf_freq: function (v) { return (v / (v + 8 * 44100)); },\n p_lpf_ramp: function (v) { return Math.pow(v, 1 / 44100); },\n p_lpf_resonance: function (v) { return (1 - v / 100) / .11; },\n\n p_hpf_freq: function (v) { return (v / (v + 8 * 44100)); },\n p_hpf_ramp: function (v) { return Math.pow(v, 1 / 44100); },\n\n sound_vol: function (v) { return Math.sqrt(Math.pow(10, v / 10)); }\n}\n\n// convert from internal representation to printable units\n\nvar units = {\n p_env_attack: function (v) { return (v / 44100).toPrecision(4) + ' sec' },\n p_env_sustain: function (v) { return (v / 44100).toPrecision(4) + ' sec' },\n p_env_punch: function (v) { return '+' + (v * 100).toPrecision(4) + '%'},\n p_env_decay: function (v) { return (v / 44100).toPrecision(4) + ' sec' },\n \n p_base_freq: function (v) { return v.toPrecision(4) + 'Hz' },\n p_freq_limit: function (v) { return v.toPrecision(4) + 'Hz' },\n p_freq_ramp: function (v) { \n return (44100*Math.log(v)/Math.log(0.5)).toPrecision(4) + ' 8va/sec'; },\n p_freq_dramp: function (v) { \n return (v*44100 / Math.pow(2, -44101./44100)).toExponential(3) +\n ' 8va/s^2'; },\n\n p_vib_speed: function (v) { return v === 0 ? 'OFF' : \n (441000/64. * v).toPrecision(4) + ' Hz'},\n p_vib_strength: function (v) { return v === 0 ? 'OFF' : \n '&plusmn; ' + (v*100).toPrecision(4) + '%' },\n\n p_arp_mod: function (v) { return ((v === 1) ? 'OFF' : \n 'x ' + (1./v).toPrecision(4)) },\n p_arp_speed: function (v) { return (v === 0 ? 'OFF' :\n (v / 44100).toPrecision(4) +' sec') },\n\n p_duty: function (v) { return (100 * v).toPrecision(4) + '%'; },\n p_duty_ramp: function (v) { return (8 * 44100 * v).toPrecision(4) +'%/sec'},\n\n p_repeat_speed: function (v) { return v === 0 ? 'OFF' : \n (44100/v).toPrecision(4) + ' Hz' },\n\n p_pha_offset: function (v) { return v === 0 ? 'OFF' :\n (1000*v/44100).toPrecision(4) + ' msec' },\n // Not so sure about this:\n p_pha_ramp: function (v) { return v === 0 ? 'OFF' :\n (1000*v).toPrecision(4) + ' msec/sec' },\n\n p_lpf_freq: function (v) { \n return (v === .1) ? 'OFF' : Math.round(8 * 44100 * v / (1-v)) + ' Hz'; },\n p_lpf_ramp: function (v) { if (v === 1) return 'OFF';\n return Math.pow(v, 44100).toPrecision(4) + ' ^sec'; },\n p_lpf_resonance: function (v) { return (100*(1-v*.11)).toPrecision(4)+'%';},\n\n p_hpf_freq: function (v) { \n return (v === 0) ? 'OFF' : Math.round(8 * 44100 * v / (1-v)) + ' Hz'; },\n p_hpf_ramp: function (v) { if (v === 1) return 'OFF';\n return Math.pow(v, 44100).toPrecision(4) + ' ^sec'; },\n\n sound_vol: function (v) { \n v = 10 * Math.log(v*v) / Math.log(10);\n var sign = v >= 0 ? '+' : '';\n return sign + v.toPrecision(4) + ' dB'; \n }\n};\n\n/*** Plumbing ***/\n\n(function (root, factory) {\n if(typeof define === \"function\" && define.amd) {\n // Now we're wrapping the factory and assigning the return\n // value to the root (window) and returning it as well to\n // the AMD loader.\n define([\"./riffwave\"], function(RIFFWAVE){\n return (root.jsfxr = factory(RIFFWAVE));\n });\n } else if(typeof module === \"object\" && module.exports) {\n // I've not encountered a need for this yet, since I haven't\n // run into a scenario where plain modules depend on CommonJS\n // *and* I happen to be loading in a CJS browser environment\n // but I'm including it for the sake of being thorough\n RIFFWAVE = require(\"./riffwave.js\");\n module.exports = (root.jsfxr = factory(RIFFWAVE));\n } else {\n root.jsfxr = factory(root.RIFFWAVE);\n }\n}(this, function(RIFFWAVE) {\n // module code here....\n return {\n \"sfxr\": sfxr,\n \"convert\": {\n \"sliders\": sliders,\n \"domain\": domain,\n \"sliders_inverse\": sliders_inverse,\n \"domain_inverse\": domain_inverse,\n \"units\": units,\n },\n \"parameters\": {\n \"order\": params_order,\n \"signed\": params_signed,\n },\n \"Params\": Params,\n \"SoundEffect\": SoundEffect,\n \"waveforms\": {\n \"SQUARE\": SQUARE,\n \"SAWTOOTH\": SAWTOOTH,\n \"SINE\": SINE,\n \"NOISE\": NOISE\n }\n };\n}));\n"],"names":["FastBase64","i","src","len","dst","n1","n2","n3","RIFFWAVE","data","u32ToArray","u16ToArray","root","factory","module","this","SQUARE","SAWTOOTH","SINE","NOISE","masterVolume","OVERSAMPLING","Params","sqr","x","cube","frnd","range","rndr","from","to","rnd","max","assembleFloat","sign","exponent","mantissa","floatToNumber","flt","numberToFloat","bytes","significand","b58alphabet","params_order","params_signed","convert","pi","val","B","A","d","s","j","c","n","b58encoded","struct","p","base","synthdef","SoundEffect","audiocontext","sfx","buffer","buff","nowBuffering","proc","decoded","S","b","result","offset","algorithm","options","opts","ps","PARAMS","fltp","fltdp","fltphp","noise_buffer","envelopeStage","envelopeElapsed","vibratoPhase","phase","ipp","flanger_buffer","num_clipped","normalized","sample_sum","num_summed","summands","t","rfperiod","iperiod","env_vol","envf","iphase","sample","si","sub_sample","fp","pp","rendered","wave","_sfxr_getAudioFn","_actx","actx","volume","obj","v","gainNode","audio","sliders","sliders_inverse","domain","domain_inverse","units","require$$0"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -10,8 +10,8 @@
10
10
  href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
11
11
  rel="stylesheet"
12
12
  />
13
- <script type="module" crossorigin src="/assets/main-BdVQNGtK.js"></script>
14
- <link rel="stylesheet" crossorigin href="/assets/main-NejYwKFb.css">
13
+ <script type="module" crossorigin src="/assets/main-QuEZvA3i.js"></script>
14
+ <link rel="stylesheet" crossorigin href="/assets/main-CVl-4C5E.css">
15
15
  </head>
16
16
  <body class="bg-dark-bg text-dark-text">
17
17
  <div id="root"></div>
@@ -1 +1 @@
1
- {"version":3,"file":"api-routes.d.ts","sourceRoot":"","sources":["../../src/server/api-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,EAAE,eAAe,EAA4D,MAAM,wBAAwB,CAAC;AAQnH,MAAM,WAAW,QAAS,SAAQ,KAAK;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,qBAAa,aAAc,SAAQ,KAAM,YAAW,QAAQ;IAC1D,UAAU,SAAO;gBACL,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,KAAM,YAAW,QAAQ;IAC5D,UAAU,SAAO;gBACL,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,SAAQ,KAAM,YAAW,QAAQ;IAChE,UAAU,SAAO;gBACL,OAAO,EAAE,MAAM;CAI5B;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAimB/D;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,KAAK,GAAG,QAAQ,EACrB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,YAAY,GAClB,IAAI,CAeN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAMjE"}
1
+ {"version":3,"file":"api-routes.d.ts","sourceRoot":"","sources":["../../src/server/api-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,EAAE,eAAe,EAA4D,MAAM,wBAAwB,CAAC;AASnH,MAAM,WAAW,QAAS,SAAQ,KAAK;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,qBAAa,aAAc,SAAQ,KAAM,YAAW,QAAQ;IAC1D,UAAU,SAAO;gBACL,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,KAAM,YAAW,QAAQ;IAC5D,UAAU,SAAO;gBACL,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,SAAQ,KAAM,YAAW,QAAQ;IAChE,UAAU,SAAO;gBACL,OAAO,EAAE,MAAM;CAI5B;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAqnB/D;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,KAAK,GAAG,QAAQ,EACrB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,YAAY,GAClB,IAAI,CAeN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAMjE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-gates-api.d.ts","sourceRoot":"","sources":["../../src/server/quality-gates-api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA2BjD,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAiCf;AA6ND,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAYpE"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "driftdetect-dashboard",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
4
4
  "description": "Local web dashboard for Drift architectural drift detection",
5
- "license": "MIT",
5
+ "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/dadbodgeoff/drift"
@@ -34,9 +34,25 @@
34
34
  "files": [
35
35
  "dist"
36
36
  ],
37
+ "scripts": {
38
+ "build": "pnpm run build:server && pnpm run build:client",
39
+ "build:server": "tsc -p tsconfig.server.json",
40
+ "build:client": "vite build",
41
+ "clean": "rm -rf dist",
42
+ "dev": "pnpm run build:server && concurrently -n server,client -c blue,green \"pnpm run dev:backend\" \"pnpm run dev:client\"",
43
+ "dev:backend": "node --import tsx scripts/dev-server.ts",
44
+ "dev:server": "tsc -p tsconfig.server.json --watch",
45
+ "dev:client": "vite",
46
+ "lint": "eslint src --ext .ts,.tsx",
47
+ "lint:fix": "eslint src --ext .ts,.tsx --fix",
48
+ "test": "vitest run",
49
+ "test:watch": "vitest",
50
+ "test:coverage": "vitest run --coverage",
51
+ "typecheck": "tsc --noEmit -p tsconfig.server.json && tsc --noEmit -p tsconfig.client.json"
52
+ },
37
53
  "dependencies": {
38
- "driftdetect-core": "^0.7.0",
39
- "driftdetect-galaxy": "^0.7.0",
54
+ "driftdetect-core": "^0.8.1",
55
+ "driftdetect-galaxy": "^0.8.1",
40
56
  "express": "^4.18.2",
41
57
  "open": "^10.0.0",
42
58
  "ws": "^8.16.0"
@@ -75,21 +91,5 @@
75
91
  "peerDependencies": {
76
92
  "react": "^18.2.0",
77
93
  "react-dom": "^18.2.0"
78
- },
79
- "scripts": {
80
- "build": "pnpm run build:server && pnpm run build:client",
81
- "build:server": "tsc -p tsconfig.server.json",
82
- "build:client": "vite build",
83
- "clean": "rm -rf dist",
84
- "dev": "pnpm run build:server && concurrently -n server,client -c blue,green \"pnpm run dev:backend\" \"pnpm run dev:client\"",
85
- "dev:backend": "node --import tsx scripts/dev-server.ts",
86
- "dev:server": "tsc -p tsconfig.server.json --watch",
87
- "dev:client": "vite",
88
- "lint": "eslint src --ext .ts,.tsx",
89
- "lint:fix": "eslint src --ext .ts,.tsx --fix",
90
- "test": "vitest run",
91
- "test:watch": "vitest",
92
- "test:coverage": "vitest run --coverage",
93
- "typecheck": "tsc --noEmit -p tsconfig.server.json && tsc --noEmit -p tsconfig.client.json"
94
94
  }
95
- }
95
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Geoffrey Fernald
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.