Files
strudel/tutorial/assets/index.4c424933.js
T
Felix Roos 5db72e8a03 Updates
2022-06-28 22:03:36 +02:00

2 lines
1.9 KiB
JavaScript

var h=Object.defineProperty;var p=(e,t,s)=>t in e?h(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var l=(e,t,s)=>(p(e,typeof t!="symbol"?t+"":t,s),s);import{S as f,E as u}from"./index.3f08eb84.js";import{F as v,G as L,J as M,N as T,I as B,K as I,M as y,L as F}from"./index.3f08eb84.js";const d=e=>"("+e+")();",g=e=>URL.createObjectURL(new Blob([d(e)],{type:"text/javascript"})),w=e=>new Worker(g(e));class k{constructor(t,s,i=this.interval){l(this,"worker");l(this,"audioContext");l(this,"interval",.2);l(this,"lastEnd",0);this.audioContext=t,this.interval=i,this.worker=w(()=>{let o,a=null;const n=()=>{a&&(clearInterval(a),a=null)},r=()=>{if(n(),!o)throw new Error("no interval set! call worker.postMessage({interval}) before starting.");a=setInterval(()=>postMessage("tick"),o*1e3)};self.onmessage=function(c){c.data=="start"?r():c.data.interval?(o=c.data.interval,a&&r()):c.data=="stop"&&n()}}),this.worker.postMessage({interval:i}),this.worker.onmessage=o=>{if(o.data==="tick"){const a=this.lastEnd||this.audioContext.currentTime,n=this.audioContext.currentTime+this.interval;this.lastEnd=n,s(a,n)}}}start(){console.log("start..."),this.audioContext.resume(),this.worker.postMessage("start")}stop(){console.log("stop..."),this.worker.postMessage("stop")}}class b{constructor({audioContext:t,interval:s=.2,onEvent:i,latency:o=.2}){l(this,"worker");l(this,"pattern");this.worker=new k(t,(a,n)=>{this.pattern.query(new f(new u(a+o,n+o))).forEach(r=>{!r.part.begin.equals(r.whole.begin)||(r.context.onTrigger&&r.context.onTrigger(r.whole.begin,r,t.currentTime,1),i&&(i==null||i(r)))})},s)}start(){if(!this.pattern)throw new Error("Scheduler: no pattern set! call .setPattern first.");this.worker.start()}stop(){this.worker.stop()}setPattern(t){this.pattern=t}}export{k as ClockWorker,b as Scheduler,v as getAudioContext,L as getCachedBuffer,M as getLoadedBuffer,T as getLoadedSamples,B as loadBuffer,I as loadGithubSamples,y as resetLoadedSamples,F as samples};