1var ne=Object.defineProperty,se=Object.defineProperties,oe=Object.getOwnPropertyDescriptors,Ct=Object.getOwnPropertySymbols,re=Object.prototype.hasOwnProperty,ae=Object.prototype.propertyIsEnumerable,Gt=t=>{throw TypeError(t)},It=(t,e,n)=>e in t?ne(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,B=(t,e)=>{for(var n in e||(e={}))re.call(e,n)&&It(t,n,e[n]);if(Ct)for(var n of Ct(e))ae.call(e,n)&&It(t,n,e[n]);return t},jt=(t,e)=>se(t,oe(e)),At=(t,e,n)=>e.has(t)||Gt("Cannot "+n),r=(t,e,n)=>(At(t,e,"read from private field"),n?n.call(t):e.get(t)),f=(t,e,n)=>e.has(t)?Gt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),d=(t,e,n,s)=>(At(t,e,"write to private field"),e.set(t,n),n),w=(t,e,n)=>(At(t,e,"access private method"),n),ie=(t,e,n,s)=>({set _(o){d(t,e,o)},get _(){return r(t,e,s)}}),A=(t,e,n)=>new Promise((s,o)=>{var i=u=>{try{l(n.next(u))}catch(c){o(c)}},a=u=>{try{l(n.throw(u))}catch(c){o(c)}},l=u=>u.done?s(u.value):Promise.resolve(u.value).then(i,a);l((n=n.apply(t,e)).next())});function zt(t){function e(...n){return new t(...n)}return e}var xt={fetch(t){return fetch(t)}};function St(t){const e=t.filter(n=>!!n);return e.reduce((n,s)=>{const o="output"in n?n.output:n,i="input"in s?s.input:s;return o.connect(i),s}),()=>{e.reduce((n,s)=>{const o="output"in n?n.output:n,i="input"in s?s.input:s;return o.disconnect(i),s})}}function le(t){let e=t;const n=new Set;function s(a){return n.add(a),a(e),()=>{n.delete(a)}}function o(a){e=a,n.forEach(l=>l(e))}function i(){return e}return{subscribe:s,set:o,get:i}}function Ft(t){return t*t/16129}function ce(t){return Math.pow(10,t/20)}var U,C,I,D,N,pt,T,V,P,ue=class{constructor(t,e){this.context=t,f(this,U),f(this,C),f(this,I),f(this,D),f(this,N),f(this,pt),f(this,T),f(this,V),f(this,P,!1);var n,s,o,i;d(this,T,{destination:(n=e==null?void 0:e.destination)!=null?n:t.destination,volume:(s=e==null?void 0:e.volume)!=null?s:100,volumeToGain:(o=e==null?void 0:e.volumeToGain)!=null?o:Ft,pan:(i=e==null?void 0:e.pan)!=null?i:0}),this.input=t.createGain(),d(this,U,t.createGain()),d(this,C,t.createStereoPanner()),r(this,C).pan.value=r(this,T).pan,d(this,N,St([this.input,r(this,U),r(this,C),r(this,T).destination]));const a=le(r(this,T).volume);d(this,V,a),this.setVolume=a.set,d(this,pt,a.subscribe(l=>{r(this,U).gain.value=r(this,T).volumeToGain(l)}))}get volume(){return r(this,V).get()}set volume(t){r(this,V).set(t)}get pan(){return r(this,C).pan.value}set pan(t){r(this,C).pan.value=t}addInsert(t){var e;if(r(this,P))throw Error("Can't add insert to disconnected channel");(e=r(this,D))!=null||d(this,D,[]),r(this,D).push(t),r(this,N).call(this),d(this,N,St([this.input,...r(this,D),r(this,U),r(this,C),r(this,T).destination]))}addEffect(t,e,n){var s;if(r(this,P))throw Error("Can't add effect to disconnected channel");const o=this.context.createGain();o.gain.value=n;const i="input"in e?e.input:e,a=St([r(this,U),o,i]);(s=r(this,I))!=null||d(this,I,[]),r(this,I).push({name:t,mix:o,disconnect:a})}setEffectMix(t,e){var n;if(r(this,P))throw Error("Can't send effect to disconnected channel");const s=(n=r(this,I))==null?void 0:n.find(o=>o.name===t);s?s.mix.gain.value=e:console.warn("Send bus not found: "+t)}sendEffect(t,e){this.setEffectMix(t,e)}disconnect(){var t;r(this,P)||(d(this,P,!0),r(this,N).call(this),r(this,pt).call(this),(t=r(this,I))==null||t.forEach(e=>e.disconnect()),d(this,I,void 0))}};U=new WeakMap;C=new WeakMap;I=new WeakMap;D=new WeakMap;N=new WeakMap;pt=new WeakMap;T=new WeakMap;V=new WeakMap;P=new WeakMap;function he(t){const n=/^([a-gA-G]?)(#{1,}|b{1,}|)(-?\d+)$/.exec(t);if(!n)return;const s=n[1].toUpperCase();if(!s)return;const o=n[2],i=o[0]==="b"?-o.length:o.length,a=n[3]?+n[3]:4,l=(s.charCodeAt(0)+3)%7;return[0,2,4,5,7,9,11][l]+i+12*(a+1)}function lt(t){return t===void 0?void 0:typeof t=="number"?t:he(t)}var qt={volume:0,tune:0,detune:0,ampRelease:.3,ampAttack:0,lpfCutoffHz:2e4,offset:0,loop:!1,loopStart:0,loopEnd:0,reverse:!1},de=Object.keys(qt);function Tt(t){const e={};for(const n of de){const s=t[n];s!==void 0&&(e[n]=s)}return e}function fe(t,e,n,s,o,i){var a,l,u,c,h,p;
1const m=B(B(B(B({},qt),t),Tt(e)),Tt(n)),_=(l=(a=n.pitch)!=null?a:n.key)!=null?l:s;let M=(s-_+m.tune)*100+m.detune;return(i==null?void 0:i.detune)!==void 0&&(M+=i.detune),{detune:M,velocity:o,volume:m.volume,ampRelease:(u=i==null?void 0:i.ampRelease)!=null?u:m.ampRelease,ampAttack:m.ampAttack,lpfCutoffHz:(c=i==null?void 0:i.lpfCutoffHz)!=null?c:m.lpfCutoffHz,offset:m.offset,loop:(h=i==null?void 0:i.loop)!=null?h:m.loop,loopStart:m.loopStart,loopEnd:m.loopEnd,ampVelCurve:n.ampVelCurve,loopAuto:n.loopAuto,reverse:(p=i==null?void 0:i.reverse)!=null?p:m.reverse}}function pe(t){var e,n,s,o,i;let a,l,u;return t.key!==void 0?(a=l=t.key,u=t.key):t.keyRange?([a,l]=t.keyRange,u=t.pitch):(a=0,l=127,u=t.pitch),{keyLow:a,keyHigh:l,pitch:u,velLow:(n=(e=t.velRange)==null?void 0:e[0])!=null?n:0,velHigh:(o=(s=t.velRange)==null?void 0:s[1])!=null?o:127,ccRange:t.ccRange,seqPosition:(i=t.seqPosition)!=null?i:1,group:t.group,offBy:t.offBy,sample:t.sample,ref:t}}function me(t){var e,n,s,o,i,a,l,u;return{keyLow:(n=(e=t.keyRange)==null?void 0:e[0])!=null?n:0,keyHigh:(o=(s=t.keyRange)==null?void 0:s[1])!=null?o:127,velLow:(a=(i=t.velRange)==null?void 0:i[0])!=null?a:0,velHigh:(u=(l=t.velRange)==null?void 0:l[1])!=null?u:127,ccRange:t.ccRange,seqLength:t.seqLength,group:t.group,offBy:t.offBy,regions:t.regions.map(pe),ref:t}}function Wt(t,e){var n;if(!e)return!0;for(const[s,[o,i]]of Object.entries(e)){const a=parseInt(s,10),l=(n=t.get(a))!=null?n:0;if(l<o||l>i)return!1}return!0}var $,K,Ut=class{constructor(t){f(this,$),f(this,K),d(this,$,t.groups.map(me)),d(this,K,new Map)}match(t,e,n){var s,o,i,a;const l=[];for(let u=0;u<r(this,$).length;u++){const c=r(this,$)[u];if(t<c.keyLow||t>c.keyHigh||e<c.velLow||e>c.velHigh||!Wt(n,c.ccRange))continue;const h=(s=r(this,K).get(u))!=null?s:0;for(const p of c.regions)if(!(t<p.keyLow||t>p.keyHigh)&&!(e<p.velLow||e>p.velHigh)&&Wt(n,p.ccRange)){if(c.seqLength!==void 0){const m=p.seqPosition-1;if(h%c.seqLength!==m)continue}l.push({sample:p.sample,pitch:(o=p.pitch)!=null?o:t,group:(i=p.group)!=null?i:c.group,offBy:(a=p.offBy)!=null?a:c.offBy,groupRef:c.ref,regionRef:p.ref})}c.seqLength!==void 0&&r(this,K).set(u,h+1)}return l}};$=new WeakMap;K=new WeakMap;function _e(t,e,n){return A(this,null,function*(){e=e.replace(/#/g,"%23").replace(/ /g,"%20").replace(/([^:]\/)\/+/g,"$1");const s=yield n.fetch(e);if(s.status!==200){console.warn("Error loading buffer. Invalid status: ",s.status,e);return}try{const o=yield s.arrayBuffer();return yield t.decodeAudioData(o)}catch(o){console.warn("Error loading buffer",o,e)}})}function ve(){if(typeof navigator>"u")return!1;const t=navigator.userAgent;return t.includes("Safari")&&!t.includes("Chrome")&&!t.includes("Chromium")}function Ht(t){if(typeof document>"u")return null;const e=ve(),n=document.createElement("audio");for(let s=0;s<t.length;s++){const o=t[s];if(e&&o==="ogg")continue;const i=n.canPlayType(`audio/${o}`);if(i==="probably"||i==="maybe")return o;if(o==="m4a"){const a=n.canPlayType("audio/aac");if(a==="probably"||a==="maybe")return o}}return null}var mt,_t,vt,ge=class{constructor(t,e){f(this,mt),f(this,_t),f(this,vt,new Map);var n;d(this,mt,t),d(this,_t,(n=e==null?void 0:e.storage)!=null?n:xt)}load(t,e){return A(this,null,function*(){var n,s;const o=typeof e=="object"?e.buffers:void 0,i=typeof e=="function"?e:e==null?void 0:e.onProgress,a=(s=(n=Ht(t.samples.formats))!=null?n:t.samples.formats[0])!=null?s:"ogg",l=t.samples.baseUrl.replace(/\/$/,""),u=ye(t),c=u.length;let h=0;const p=new Map;return yield Promise.all(u.map(m=>A(this,null,function*(){var _,y;const M=o==null?void 0:o.get(m);if(M){p.set(m,M),h++,i==null||i(h,c);return}const x=(y=(_=t.samples.map)==null?void 0:_[m])!=null?y:m,q=`${l}/${x}.${a}`;let v=r(this,vt).get(q);if(!v){const H=yield _e(r(this,mt),q,r(this,_t));H&&(v=H,r(this,vt).set(q,v))}v&&p.set(m,v),h++,i==null||i(h,c)}))),p})}};mt=new WeakMap;_t=new WeakMap;vt=new WeakMap;function ye(t){const e=new Set;for(const n of t.groups)for(const s of n.regions)e.add(s.sample);return[...e]}var ke=zt(ge),g,we=class{constructor(t){this.compare=t,f(this,g,[])}push(t){const e=r(this,g).length;let n=0,s=e-1,o=e;for(;n<=s;){const i=Math.floor((n+s)/2);this.compare(t,r(this,g)[i])<0?(o=i,s=i-1):n=i+1}r(this,g).splice(o,0,t)}pop(){return r(this,g).shift()}peek(){return r(this,g)[0]}removeAll(t){const e=r(this,g).length;return d(this,g,r(this,g).filter(n=>!t(n))),r(this,g).length!==e}clear(){d(this,g,[])}size(){return r(this,g).length}};g=new WeakMap;var be=200,Me=50,et,nt,bt,E,R,Et,Vt,Se=class{constructor(t,e){f(this,Et),f(this,et),f(this,nt),f(this,bt),f(this,E),f(this,R);var n,s;d(this,et,t),d(this,nt,((n=e==null?void 0:e.lookaheadMs)!=null?n:be)/1e3),d(this,bt,(s=e==null?void 0:e.intervalMs)!=null?s:Me),d(this,E,new we((o,i)=>o.time-i.time))}schedule(t,e){var n;const s=r(this,et).currentTime,o=(n=Ee(t))!=null?n:s;
1if(o<=s+r(this,nt))return e(t),Re;const i={time:o,event:t,callback:e};return r(this,E).push(i),w(this,Et,Vt).call(this),()=>{r(this,E).removeAll(a=>a===i)}}stop(){r(this,E).clear(),r(this,R)!==void 0&&(clearInterval(r(this,R)),d(this,R,void 0))}};et=new WeakMap;nt=new WeakMap;bt=new WeakMap;E=new WeakMap;R=new WeakMap;Et=new WeakSet;Vt=function(){r(this,R)===void 0&&d(this,R,setInterval(()=>{const t=r(this,et).currentTime+r(this,nt);for(;r(this,E).size()>0&&r(this,E).peek().time<=t;){const e=r(this,E).pop();e.callback(e.event)}r(this,E).size()===0&&(clearInterval(r(this,R)),d(this,R,void 0))},r(this,bt)))};function Ee(t){return typeof t=="object"?t.time:void 0}var Re=()=>{},Ae=zt(Se),gt,Y,O,yt,kt,L,J,xe=class{constructor(t,e,n,s,o,i,a){f(this,gt),f(this,Y),f(this,O),f(this,yt),f(this,kt),f(this,L,"playing"),f(this,J,[]),d(this,gt,t),this.stopId=o,this.group=i,d(this,kt,n.ampRelease);const l=t.createBufferSource();l.buffer=e;const u=n.detune;l.detune?l.detune.value=u:l.playbackRate.value=Math.pow(2,u/1200),n.loopAuto?(l.loop=!0,l.loopStart=e.duration*n.loopAuto.startRatio,l.loopEnd=e.duration*n.loopAuto.endRatio):n.loop&&(l.loop=!0,l.loopStart=n.loopStart,l.loopEnd=n.loopEnd||e.duration);let c;n.lpfCutoffHz<2e4&&(c=t.createBiquadFilter(),c.type="lowpass",c.frequency.value=n.lpfCutoffHz);const h=t.createGain();h.gain.value=Ft(n.velocity)*ce(n.volume);const p=t.createGain();p.gain.value=1,c?(l.connect(c),c.connect(h)):l.connect(h),h.connect(p),p.connect(s);const m=a??t.currentTime;d(this,yt,m);let _=0;n.offset>0&&(_=n.reverse?(e.length-n.offset)/e.sampleRate:n.offset/e.sampleRate),l.start(m,_),d(this,Y,l),d(this,O,p),l.onended=()=>{d(this,L,"stopped"),p.disconnect(),h.disconnect(),c==null||c.disconnect(),l.disconnect();for(const y of r(this,J))y();d(this,J,[])}}stop(t){if(r(this,L)!=="playing")return;d(this,L,"stopping");const e=t??r(this,gt).currentTime;if(e<=r(this,yt))r(this,Y).stop(e);else{const n=e+r(this,kt);r(this,O).gain.cancelScheduledValues(e),r(this,O).gain.setValueAtTime(1,e),r(this,O).gain.linearRampToValueAtTime(0,n),r(this,Y).stop(n)}}onEnded(t){r(this,L)==="stopped"?t():r(this,J).push(t)}get isActive(){return r(this,L)!=="stopped"}};gt=new WeakMap;Y=new WeakMap;O=new WeakMap;yt=new WeakMap;kt=new WeakMap;L=new WeakMap;J=new WeakMap;var G,st,ot,Rt,$t,Ce=class{constructor(){f(this,Rt),f(this,G,new Set),f(this,st,new Map),f(this,ot,new Map)}add(t){r(this,G).add(t),Pt(r(this,st),t.stopId).add(t),t.group!==void 0&&Pt(r(this,ot),t.group).add(t),t.onEnded(()=>w(this,Rt,$t).call(this,t))}stopAll(t){for(const e of[...r(this,G)])e.stop(t)}stopById(t,e){const n=r(this,st).get(t);if(n)for(const s of[...n])s.stop(e)}stopGroup(t,e){const n=r(this,ot).get(t);if(n)for(const s of[...n])s.stop(e)}get activeCount(){return r(this,G).size}};G=new WeakMap;st=new WeakMap;ot=new WeakMap;Rt=new WeakSet;$t=function(t){var e,n;r(this,G).delete(t),(e=r(this,st).get(t.stopId))==null||e.delete(t),t.group!==void 0&&((n=r(this,ot).get(t.group))==null||n.delete(t))};function Pt(t,e){let n=t.get(e);return n||(n=new Set,t.set(e,n)),n}function Lt(t,e){return t&&e?n=>{t(n),e(n)}:t??e}var Ie={samples:{baseUrl:"",formats:[]},groups:[]};function Dt(t){return typeof t=="object"&&t!==null&&"groups"in t&&Array.isArray(t.groups)}var X,wt,z,ct,b,ut,F,rt,S,j,Z,ht,dt,at,it,k,W,Kt,Yt,Jt,Te=class{constructor(t,e,n){f(this,k),f(this,X,{loaded:0,total:0}),f(this,wt,0),f(this,z,new Map),f(this,ct,new Map),f(this,b),f(this,ut),f(this,F),f(this,rt),f(this,S),f(this,j),f(this,Z),f(this,ht),f(this,dt),f(this,at,new Map),f(this,it,!1);var s,o,i;const a=Dt(e)?e:void 0,l=Dt(e)?n:e;this.context=t,d(this,b,a==null?void 0:a.defaults),d(this,ut,(s=l==null?void 0:l.velocity)!=null?s:100),d(this,Z,l==null?void 0:l.onLoadProgress),d(this,ht,l==null?void 0:l.onStart),d(this,dt,l==null?void 0:l.onEnded),a!=null&&a.aliases&&d(this,F,new Map(Object.entries(a.aliases))),d(this,j,new ue(t,{destination:l==null?void 0:l.destination,volume:l==null?void 0:l.volume,volumeToGain:l==null?void 0:l.volumeToGain,pan:l==null?void 0:l.pan})),this.scheduler=(o=l==null?void 0:l.scheduler)!=null?o:Ae(t),d(this,rt,new Ut(a??Ie)),d(this,S,new Ce),this.loader=(i=l==null?void 0:l.loader)!=null?i:ke(t,{storage:l==null?void 0:l.storage}),a?this.ready=this.loader.load(a,{onProgress:(u,c)=>{var h;d(this,X,{loaded:u,total:c}),(h=r(this,Z))==null||h.call(this,{loaded:u,total:c})}}).then(u=>{d(this,z,u)}
1):this.ready=Promise.resolve()}get load(){return this.ready.then(()=>this)}_setReady(t){this.ready=t}loadInstrument(t,e){w(this,k,W).call(this,"load an instrument");const n=++ie(this,wt)._;return this.loader.load(t,{buffers:e,onProgress:(s,o)=>{var i;d(this,X,{loaded:s,total:o}),(i=r(this,Z))==null||i.call(this,{loaded:s,total:o})}}).then(s=>{n===r(this,wt)&&(d(this,b,t.defaults),d(this,F,t.aliases?new Map(Object.entries(t.aliases)):void 0),d(this,rt,new Ut(t)),d(this,ct,new Map),d(this,z,s))})}get loadProgress(){return r(this,X)}get output(){return r(this,j)}setCC(t,e){w(this,k,W).call(this,"set CC"),r(this,at).set(t,e)}getCC(t){var e;return w(this,k,W).call(this,"read CC"),(e=r(this,at).get(t))!=null?e:0}setDetune(t){w(this,k,W).call(this,"set detune"),r(this,b)||d(this,b,{}),r(this,b).detune=t}setReverse(t){w(this,k,W).call(this,"set reverse"),r(this,b)||d(this,b,{}),r(this,b).reverse=t}start(t){w(this,k,W).call(this,"start a note");const e=w(this,k,Jt).call(this,t),n=this.scheduler.schedule(e,s=>w(this,k,Yt).call(this,s));return s=>{n(),r(this,S).stopById(e.stopId,s)}}stop(t){w(this,k,W).call(this,"stop voices"),t===void 0?r(this,S).stopAll():typeof t=="string"||typeof t=="number"?r(this,S).stopById(t):t.stopId!==void 0?r(this,S).stopById(t.stopId,t.time):r(this,S).stopAll(t.time)}dispose(){r(this,it)||(d(this,it,!0),r(this,S).stopAll(),r(this,j).disconnect(),this.scheduler.stop())}disconnect(){this.dispose()}};X=new WeakMap;wt=new WeakMap;z=new WeakMap;ct=new WeakMap;b=new WeakMap;ut=new WeakMap;F=new WeakMap;rt=new WeakMap;S=new WeakMap;j=new WeakMap;Z=new WeakMap;ht=new WeakMap;dt=new WeakMap;at=new WeakMap;it=new WeakMap;k=new WeakSet;W=function(t){if(r(this,it))throw Error(`Cannot ${t} on a disposed Smplr instance.`)};Kt=function(t,e){if(!e)return r(this,z).get(t);const n=r(this,ct).get(t);if(n)return n;const s=r(this,z).get(t);if(!s)return;const o=this.context.createBuffer(s.numberOfChannels,s.length,s.sampleRate);for(let i=0;i<s.numberOfChannels;i++){const a=s.getChannelData(i).slice().reverse();o.copyToChannel(a,i)}return r(this,ct).set(t,o),o};Yt=function(t){var e,n;const{midi:s,velocity:o,time:i,stopId:a,duration:l,detune:u,lpfCutoffHz:c,loop:h,ampRelease:p,reverse:m,onStart:_,onEnded:y}=t,M=r(this,rt).match(s,o,r(this,at));for(const v of M)v.offBy!==void 0&&r(this,S).stopGroup(v.offBy,i);let x=!1;const q=(n=m??((e=r(this,b))==null?void 0:e.reverse))!=null?n:!1;for(const v of M){const H=w(this,k,Kt).call(this,v.sample,q);if(!H)continue;const te=fe(r(this,b),v.groupRef,v.regionRef,s,o,{detune:u,lpfCutoffHz:c,loop:h,ampRelease:p,reverse:m}),Mt=new xe(this.context,H,te,r(this,j).input,a,v.group,i);if(r(this,S).add(Mt),x||(_==null||_(t),x=!0),y&&Mt.onEnded(()=>y(t)),l!=null){const ee=(i??this.context.currentTime)+l;Mt.stop(ee)}}};Jt=function(t){var e,n,s,o,i,a,l,u;if(typeof t=="string"||typeof t=="number"){const h=(s=(n=lt(t))!=null?n:(e=r(this,F))==null?void 0:e.get(String(t)))!=null?s:0;return{note:t,midi:h,velocity:r(this,ut),stopId:t,onStart:r(this,ht),onEnded:r(this,dt)}}const c=(a=(i=lt(t.note))!=null?i:(o=r(this,F))==null?void 0:o.get(String(t.note)))!=null?a:0;return jt(B({},t),{midi:c,velocity:(l=t.velocity)!=null?l:r(this,ut),stopId:(u=t.stopId)!=null?u:t.note,onStart:Lt(r(this,ht),t.onStart),onEnded:Lt(r(this,dt),t.onEnded)})};var We=["storage","destination","volume","volumeToGain","pan","velocity","loader","scheduler","onLoadProgress","onStart","onEnded"];function Ue(t){const e=t??{},n={};for(const s of We)s in e&&(n[s]=e[s]);return{smplrOpts:n,pluginOpts:t}}function Nt(t){return typeof t=="object"&&t!==null&&typeof t.then=="function"}function Pe(t,e){for(const n of Object.getOwnPropertyNames(e)){const s=Object.getOwnPropertyDescriptor(e,n);s&&Object.defineProperty(t,n,s)}}function Xt(t){function e(n,s){const{smplrOpts:o,pluginOpts:i}=Ue(s??{}),a=new Te(n,o),l=t(n,i,a);let u=Promise.resolve();if(l!=null){if(Nt(l))u=l;else if(typeof l=="object"){const c=l;c.extras&&Pe(a,c.extras),Nt(c.ready)&&(u=c.ready)}}return a._setReady(u),a}return e}function Zt(t){return typeof t=="object"&&typeof t.baseUrl=="string"&&typeof t.name=="string"&&Array.isArray(t.samples)&&Array.isArray(t.groupNames)&&typeof t.nameToSampleName=="object"&&typeof t.sampleGroupVariations=="object"}var Le={samples:[],groupNames:[],sampleGroupVariations:{}};function De(t,e){return A(this,null,function*(){var n,s,o,i;const l=yield(yield e.fetch(t)).json();l.baseUrl=t.replace("/dm.json",""),l.groupNames=[],l.nameToSampleName={},l.sampleGroupVariations={};for(const u of l.samples){l.nameToSampleName[u]=u;const c=u.indexOf("/")!==-1?"/":"-",[h,p]=u.split(c);l.groupNames.includes(h)||l.groupNames.push(h),(s=(n=l.nameToSampleName)[h])!=null||(n[h]=u),(i=(o=l.sampleGroupVariations)[h])!=null||(o[h]=[]),p&&l.sampleGroupVariations[h].push(`${h}${c}${p}`)}return l})}var Ne={"TR-808":"https://smpldsnds.github.io/drum-machines/TR-808/dm.json","Casio-RZ1":"https://smpldsnds.github.io/drum-machines/Casio-RZ1/dm.json","LM-2":"https://smpldsnds.github.io/drum-machines/LM-2/dm.json","MFB-512":"https://smpldsnds.github.io/drum-machines/MFB-512/dm.json","Roland CR-8000":"https://smpldsnds.github.io/drum-machines/Roland-CR-8000/dm.json"};function Oe(t){var e,n,s;const o={instrument:(e=t==null?void 0:t.instrument)!=null?e:"TR-808",storage:(n=t==null?void 0:t.storage)!=null?n:xt,url:(s=t==null?void 0:t.url)!=null?s:""};if(typeof o.instrument=="string"){if(o.url||(o.url=Ne[o.instrument]),!o.url)throw new Error("Invalid instrument: "+o.instrument)}else if(!Zt(o.instrument))throw new Error("Invalid instrument: "+o.instrument);return o}var hn=Xt((t,e={},n)=>{const s=Oe(e);let o=Le;const i=n.start.bind(n),a={getSampleNames:()=>o.samples.slice(),getGroupNames:()=>o.groupNames.slice(),getSampleNamesForGroup:c=>{var h;
1return(h=o.sampleGroupVariations[c])!=null?h:[]},start:c=>{var h;const p=typeof c=="object"?c:{note:c};return i(jt(B({},p),{stopId:(h=p.stopId)!=null?h:p.note}))}},u=(Zt(s.instrument)?Promise.resolve(s.instrument):De(s.url,s.storage)).then(c=>(o=c,n.loadInstrument(Be(c))));return{extras:a,ready:u}});function Be(t){const e={},n=[];t.samples.forEach((o,i)=>{const a=36+i;e[o]=a,n.push({sample:o,keyRange:[a,a],pitch:a})});for(const[o,i]of Object.entries(t.nameToSampleName))if(i){const a=t.samples.indexOf(i);a>=0&&(e[o]=36+a)}return{samples:{baseUrl:t.baseUrl,formats:["ogg","m4a"]},groups:[{regions:n}],aliases:e}}var Ge=["vol1","vol2","vol3","vol4","vol5"],je={vol1:["4-inthefloor-percussioncombo","ace-tone-rhythm-ace-fr-1","ace-tone-rhythm-ace-fr-7l","ace-tone-rhythm-ace-fr6","ace-tone-rhythm-king","ace-tone-rhythm-master","antonelli-2377","arp-axxe","conn-min-o-matic","eko-compu-rhythm","eko-ritmo-12","eko-ritmo-20","elgam-carousel","emu-modular","farfisa-pro","farfisa-rhythm-10","farfisa-rhythm-maker-16","gibson-maestro-g-2","gibson-maestro-rhythm-jester","gibson-maestro-rhythm-king-mrk-1","gulbransen-organ","hammond-rhythm","hammond-rhythm-ii","hohner-automatic-rhythm-player","jen-sx-1000","kay-r-8","keio-checkmate","kent-k-200","kent-rhythm-master","korg-kr-33","korg-krz","korg-minipops-series","korg-s-3","korg-univox-micro-rhythmer-12","korg-univox-sr-120","korg-univox-sr-95","luxor-passat","moog-modular-55","roland-arr","roland-edp-1","roland-sh-3a","roland-system-100","roland-tr-1-prototype","roland-tr-33","roland-tr-41-prototype","roland-tr-66","roland-tr-77","seeburg-rhythm-prince","seeburg-select-a-rhythm","solton-disco-64","sonor-mini-mammut-module","video-tech-rythmic-10","vox-percussion-king","whippany-melo-sonic-350","wurlitzer-swinging-rhythm","yamaha-cs-15d","yamaha-cs-5","yamaha-cs-6","yamaha-ps-1","yamaha-ps-2","yamaha-ps-3"],vol2:["bontempi-hf222","boss-dr-55","casio-mt-18","casio-pt-30","casio-vl-1","chaser-computer-drum-pr-80","crb-rhythmboy-480","eko-musicbox-12","electro-harmonix-drm-15","electro-harmonix-drm-16","electro-harmonix-spacedrum","elka-drumstar-80","elka-x-1000","emu-e-drum","gem-drum-15","hammond-autovari-64","hohner-rhythm-80k","korg-kpr-77","korg-kr-55","korg-kr-mini","korg-monopoly","korg-ms-10","korg-trident","linn-lm-1","monacor-rhythmical-choice","mti-auto-orchestra-ao-1","multi-moog","mxr-185","new-england-digital-synclavier","oberheim-dmx","pearl-drum-x","pollard-syndrum-178","roland-cr-1000","roland-cr-68","roland-cr-78","roland-cr-80","roland-cr-8000","roland-dr-55","roland-jupiter-8","roland-pb-300-rhythm-plus","roland-rhy-33","roland-rhy-55","roland-sh-09","roland-tr-55","roland-tr-606","roland-tr-808","simmons-drum","simmons-sds-1","simmons-sds-5","solton-programmer-24","star-instruments-synare-3","star-instruments-synare-ps-1","visco-space-drum","watford-electronics-rhythm-generator","yamaha-cs-40m","yamaha-mr-10","yamaha-ps-55"],vol3:["amdek-pck-100","austin-arb-6","bme-rattlesnake-parametric-percussion-system","boss-dr-110","casio-mt-100","coron-drumsynce-ds-7","coron-rds","denon-crb-90","drumfire-df-2000","drumfire-df-500","electro-harmonix-drm-32","emu-drumulator","kay-drm-1","korg-ddm-110","korg-ddm-220","korg-poly-800","linn-linndrum-lm-1-vinyl","linn-lm-2","mattel-electronics-synsonics-drm","mattel-electronics-synsonics-pro","panasonic-rd-9844","pearl-drx-1","roland-ddr-30","roland-mc-202","roland-rhy-77","roland-tr-909","rsf-dd-30","sakata-dpm-48","sequential-circuits-drumtraks","simmons-clap-trap","simmons-sds-200","simmons-sds-400","soundmaster-sm-8","soundmaster-sr-88","tama-ts-206","tama-ts-305","wersi-wm-24","yamaha-dx7"],vol4:["atlantex-mpc-1","boss-hc-2","boss-pc-2","casio-ct-310","casio-mt-500","casio-mt-800","casio-pt-68","casio-pt-82","casio-sk-1","dr-b-hm-digital-drums","emu-sp-12","ensoniq-mirage","hing-hon-ek-001","kawai-acr-20","kawai-sx-240","klone-dual-percussion-synthesiser","korg-ddd-1","korg-pss-50","kurzweil-electrodrum-prototype","linn-9000","linn-linndrum-lm-2-vinyl","nasta-hitstix-2","oberheim-dx","pearl-sc-40","rhodes-polaris","roland-juno-106","roland-super-quartet-mks-7","roland-tr-707","roland-tr-727","siel-mdp-40","simmons-sds-1000","simmons-sds-7","simmons-sds-8","simmons-sds-9","sony-drp-1","soundmaster-stix-st-305","suzuki-rpm-40","tama-ts-500","technics-ax-5","technics-pcm-dp-50","wersi-prisma-dx-5","yamaha-dd-5","yamaha-rx-11","yamaha-rx-15","yamaha-rx-21","yamaha-rx-5"],vol5:["boss-dr-pad-drp-i","casio-ct-403","casio-cz-230s","casio-ht-700","casio-rz-1","cheetah-spec-drum","forat-f-9000","korg-ddd-5","korg-dss-1","m-p-c-electronics-dsm-1","pearl-sy-1","roland-tr-505","sequential-circuits-studio-440","simmons-sds-2000","simmons-sdx","yamaha-pss-130","yamaha-ptx8","yamaha-rx-21l"]};(()=>{const t=new Map;for(const e of Ge)for(const n of je[e])t.set(n,e);return t})();function ze(t){return Qt(t,32)}function Fe(t){return Qt(t,16)}function Qt(t,e){const n=t.numberOfChannels,s=t.sampleRate,o=t.length,i=e/8,a=n*i,l=o*a,u=44,c=new ArrayBuffer(u+l),h=new DataView(c);ft(h,0,"RIFF"),h.setUint32(4,36+l,!0),ft(h,8,"WAVE"),ft(h,12,"fmt "),h.setUint32(16,16,!0),h.setUint16(20,e===32?3:1,!0),h.setUint16(22,n,!0),h.setUint32(24,s,!0),h.setUint32(28,s*a,!0),h.setUint16(32,a,!0),h.setUint16(34,e,!0),ft(h,36,"data"),h.setUint32(40,l,!0);const p=[];for(let _=0;_<n;_++)p.push(t.getChannelData(_));let m=u;for(let _=0;_<o;_++)for(let y=0;y<n;y++){const M=p[y][_];if(e===32)h.setFloat32(m,M,!0);else{const x=Math.max(-1,Math.min(1,M));h.setInt16(m,x<0?x*32768:x*32767,!0)}m+=i}
1return new Blob([c],{type:"audio/wav"})}function ft(t,e,n){for(let s=0;s<n.length;s++)t.setUint8(e+s,n.charCodeAt(s))}var Q,tt,qe=class{constructor(t){f(this,Q),f(this,tt),this.audioBuffer=t,this.duration=t.duration,this.sampleRate=t.sampleRate}toWav(){return r(this,Q)||d(this,Q,ze(this.audioBuffer)),r(this,Q)}toWav16(){return r(this,tt)||d(this,tt,Fe(this.audioBuffer)),r(this,tt)}downloadWav(t="render.wav"){Ot(this.toWav(),t)}downloadWav16(t="render.wav"){Ot(this.toWav16(),t)}};Q=new WeakMap;tt=new WeakMap;function Ot(t,e){const n=URL.createObjectURL(t),s=document.createElement("a");s.href=n,s.download=e,s.click(),URL.revokeObjectURL(n)}var He=1e-4;function Ve(t){const{numberOfChannels:e,sampleRate:n,length:s}=t;let o=0;for(let l=0;l<e;l++){const u=t.getChannelData(l);for(let c=s-1;c>=0;c--)if(Math.abs(u[c])>He){c>o&&(o=c);break}}const i=Math.max(1,o+1);if(i===s)return t;const a=new AudioBuffer({numberOfChannels:e,length:i,sampleRate:n});for(let l=0;l<e;l++){const u=t.getChannelData(l);a.copyToChannel(u.subarray(0,i),l)}return a}var $e=48e3,Ke=2,Ye=60;function dn(t,e){return A(this,null,function*(){var n,s;const o=(n=e==null?void 0:e.sampleRate)!=null?n:$e,i=(s=e==null?void 0:e.channels)!=null?s:Ke,a=e==null?void 0:e.duration,u=Math.ceil((a??Ye)*o),c=new OfflineAudioContext(i,u,o);yield t(c);let h=yield c.startRendering();return a===void 0&&(h=Ve(h)),new qe(h)})}function Je(t){if(t.length===0)return[];const e=[...t].sort(([n],[s])=>n-s);return e.map(([n,s],o)=>{const i=o===0?0:Math.floor((e[o-1][0]+n)/2)+1,a=o===e.length-1?127:Math.floor((n+e[o+1][0])/2);return{keyRange:[i,a],pitch:n,sample:s}})}function Xe(t,e){var n;const s=(n=Ht(["ogg","mp3"]))!=null?n:"mp3";return console.debug(`Soundfont: using ${s} format for ${t}`),`https://gleitz.github.io/midi-js-soundfonts/${e}/${t}-${s}.js`}var Ze=["MusyngKite","FluidR3_GM"],Bt=Ze[0],Qe=["accordion","acoustic_bass","acoustic_grand_piano","acoustic_guitar_nylon","acoustic_guitar_steel","agogo","alto_sax","applause","bagpipe","banjo","baritone_sax","bassoon","bird_tweet","blown_bottle","brass_section","breath_noise","bright_acoustic_piano","celesta","cello","choir_aahs","church_organ","clarinet","clavinet","contrabass","distortion_guitar","drawbar_organ","dulcimer","electric_bass_finger","electric_bass_pick","electric_grand_piano","electric_guitar_clean","electric_guitar_jazz","electric_guitar_muted","electric_piano_1","electric_piano_2","english_horn","fiddle","flute","french_horn","fretless_bass","fx_1_rain","fx_2_soundtrack","fx_3_crystal","fx_4_atmosphere","fx_5_brightness","fx_6_goblins","fx_7_echoes","fx_8_scifi","glockenspiel","guitar_fret_noise","guitar_harmonics","gunshot","harmonica","harpsichord","helicopter","honkytonk_piano","kalimba","koto","lead_1_square","lead_2_sawtooth","lead_3_calliope","lead_4_chiff","lead_5_charang","lead_6_voice","lead_7_fifths","lead_8_bass__lead","marimba","melodic_tom","music_box","muted_trumpet","oboe","ocarina","orchestra_hit","orchestral_harp","overdriven_guitar","pad_1_new_age","pad_2_warm","pad_3_polysynth","pad_4_choir","pad_5_bowed","pad_6_metallic","pad_7_halo","pad_8_sweep","pan_flute","percussive_organ","piccolo","pizzicato_strings","recorder","reed_organ","reverse_cymbal","rock_organ","seashore","shakuhachi","shamisen","shanai","sitar","slap_bass_1","slap_bass_2","soprano_sax","steel_drums","string_ensemble_1","string_ensemble_2","synth_bass_1","synth_bass_2","synth_brass_1","synth_brass_2","synth_choir","synth_drum","synth_strings_1","synth_strings_2","taiko_drum","tango_accordion","telephone_ring","tenor_sax","timpani","tinkle_bell","tremolo_strings","trombone","trumpet","tuba","tubular_bells","vibraphone","viola","violin","voice_oohs","whistle","woodblock","xylophone"];function tn(t,e){if(!t.startsWith("http"))return`https://goldst.dev/midi-js-soundfonts/${e}/${t}-loop.json`}function en(t,e=44100){return A(this,null,function*(){if(t)try{const n=yield fetch(t);if(n.status!==200)return;const s=yield n.json(),o={};return Object.keys(s).forEach(i=>{const a=lt(i);if(a===void 0)return;const l=s[i];o[a]=[l[0]/e,l[1]/e]}),o}catch{return}})}function fn(){return Qe}var pn=Xt((t,e={},n)=>{const s=rn(e),o=t.createGain();return o.gain.value=s.extraGain,n.output.addInsert(o),nn(t,s).then(({buffers:i,noteNames:a,loopData:l})=>n.loadInstrument(on(a,l),i))});function nn(t,e){return A(this,null,function*(){const[{buffers:n,noteNames:s},o]=yield Promise.all([sn(t,e),en(e.loopDataUrl)]);return{buffers:n,noteNames:s,loopData:o}})}function sn(t,e){return A(this,null,function*(){const n=yield(yield e.storage.fetch(e.instrumentUrl)).text(),s=an(n),o=Object.keys(s),i=new Map;return yield Promise.all(o.map(a=>
1A(null,null,function*(){if(lt(a)!==void 0)try{const u=cn(ln(s[a])),c=yield t.decodeAudioData(u);i.set(a,c)}catch(u){console.warn(`Soundfont: failed to decode note ${a}`,u instanceof Error?u.message:u)}}))),{buffers:i,noteNames:[...i.keys()]}})}function on(t,e){const n=[];for(const i of t){const a=lt(i);a!==void 0&&n.push([a,i])}const o=Je(n).map(({keyRange:i,pitch:a,sample:l})=>{const u={sample:l,keyRange:i,pitch:a};if(e){const c=e[a];c&&(u.loop=!0,u.loopStart=c[0],u.loopEnd=c[1])}return u});return{samples:{baseUrl:"",formats:["ogg"]},groups:[{regions:o}]}}function rn(t){var e,n,s,o,i;if(!t.instrument&&!t.instrumentUrl)throw Error("Soundfont: instrument or instrumentUrl is required");const a={kit:(e=t.kit)!=null?e:Bt,instrument:t.instrument,storage:(n=t.storage)!=null?n:xt,extraGain:(s=t.extraGain)!=null?s:5,loadLoopData:(o=t.loadLoopData)!=null?o:!1,loopDataUrl:t.loopDataUrl,instrumentUrl:(i=t.instrumentUrl)!=null?i:""};if(a.instrument&&a.instrument.startsWith("http")&&(console.warn("Use 'instrumentUrl' instead of 'instrument' to load from a URL"),a.instrumentUrl=a.instrument,a.instrument=void 0),a.instrumentUrl)(a.kit!==Bt||a.instrument)&&console.warn("Soundfont: 'kit' and 'instrument' config parameters are ignored because 'instrumentUrl' is explicitly set.");else if(a.instrument)a.instrumentUrl=Xe(a.instrument,a.kit);else throw Error("Soundfont: 'instrument' or 'instrumentUrl' configuration parameter is required");return a.loadLoopData&&a.instrument&&!a.loopDataUrl&&(a.loopDataUrl=tn(a.instrument,a.kit)),a}function an(t){const e=t.indexOf("MIDI.Soundfont.");if(e<0)throw Error("Invalid MIDI.js Soundfont format");const n=t.indexOf("=",e)+2,s=t.lastIndexOf(",");return JSON.parse(t.slice(n,s)+"}")}function ln(t){return t.slice(t.indexOf(",")+1)}function cn(t){const e=window.atob(t),n=e.length,s=new Uint8Array(n);for(let o=0;o<n;o++)s[o]=e.charCodeAt(o);return s.buffer}export{Ge as DRUM_ABUSE_PACKS,hn as DrumMachine,xt as HttpStorage,Xt as Instrument,ke as SampleLoader,Ae as Scheduler,pn as Soundfont,ze as audioBufferToWav,Fe as audioBufferToWav16,Be as drumMachineToPreset,fn as getSoundfontNames,dn as renderOffline,on as soundfontToPreset,Ve as trimSilence};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.