diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 00000000..c35b8ef4 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,3 @@ +# examples + +This folder contains usage examples for different scenarios. diff --git a/examples/buildless/README.md b/examples/buildless/README.md new file mode 100644 index 00000000..0ecdd083 --- /dev/null +++ b/examples/buildless/README.md @@ -0,0 +1,5 @@ +# buildless examples + +These examples show you how strudel can be used in a regular html file, without the need for a build tool. + +Most examples are using [skypack](https://www.skypack.dev/) diff --git a/packages/core/examples/basic.html b/examples/buildless/basic.html similarity index 100% rename from packages/core/examples/basic.html rename to examples/buildless/basic.html diff --git a/packages/core/examples/canvas.html b/examples/buildless/canvas.html similarity index 100% rename from packages/core/examples/canvas.html rename to examples/buildless/canvas.html diff --git a/packages/web/examples/evaluate.html b/examples/buildless/headless-simple.html similarity index 100% rename from packages/web/examples/evaluate.html rename to examples/buildless/headless-simple.html diff --git a/packages/web/examples/headless-serverless-buildless.html b/examples/buildless/headless-with-samples.html similarity index 100% rename from packages/web/examples/headless-serverless-buildless.html rename to examples/buildless/headless-with-samples.html diff --git a/packages/core/examples/vanilla.html b/examples/buildless/minimal-repl.html similarity index 100% rename from packages/core/examples/vanilla.html rename to examples/buildless/minimal-repl.html diff --git a/packages/embed/example.html b/examples/buildless/web-component-iframe.html similarity index 100% rename from packages/embed/example.html rename to examples/buildless/web-component-iframe.html diff --git a/packages/repl/examples/simple.html b/examples/buildless/web-component-no-iframe.html similarity index 78% rename from packages/repl/examples/simple.html rename to examples/buildless/web-component-no-iframe.html index 849a6368..6c86d282 100644 --- a/packages/repl/examples/simple.html +++ b/examples/buildless/web-component-no-iframe.html @@ -1,6 +1,4 @@ - - - + `+i+` -`+l+` | -`+s.line+" | "+g+` -`+l+" | "+peg$padEnd("",s.column-1," ")+peg$padEnd("",y,"^")}else t+=` - at `+i}return t};peg$SyntaxError.buildMessage=function(r,t){var e={literal:function(w){return'"'+s(w.text)+'"'},class:function(w){var y=w.parts.map(function($){return Array.isArray($)?i($[0])+"-"+i($[1]):i($)});return"["+(w.inverted?"^":"")+y.join("")+"]"},any:function(){return"any character"},end:function(){return"end of input"},other:function(w){return w.description}};function o(w){return w.charCodeAt(0).toString(16).toUpperCase()}function s(w){return w.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(y){return"\\x0"+o(y)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(y){return"\\x"+o(y)})}function i(w){return w.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(y){return"\\x0"+o(y)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(y){return"\\x"+o(y)})}function f(w){return e[w.type](w)}function l(w){var y=w.map(f),$,S;if(y.sort(),y.length>0){for($=1,S=1;$",D="@",W="!",P="(",B=")",z="/",O="*",Z="%",L="?",fe="struct",we="target",be="euclid",te="slow",le="rotL",pe="rotR",he="fast",ve="scale",de="//",$e="cat",F="$",Q="setcps",ge="setbpm",me="hush",M=/^[1-9]/,U=/^[eE]/,ye=/^[0-9]/,J=/^[ \n\r\t]/,ee=/^[0-9a-zA-Z~]/,R=/^[^\n]/,X=He("number"),re=x(".",!1),Pe=ne([["1","9"]],!1,!1),Be=ne(["e","E"],!1,!1),Te=x("-",!1),Ze=x("+",!1),Le=x("0",!1),Je=ne([["0","9"]],!1,!1),Ke=He("whitespace"),Ge=ne([" ",` -`,"\r"," "],!1,!1),Ye=x(",",!1),Qe=x("|",!1),Ue=x('"',!1),et=x("'",!1),tt=ne([["0","9"],["a","z"],["A","Z"],"~"],!1,!1),rt=x("#",!1),nt=x("^",!1),st=x("_",!1),ot=x(":",!1),Re=x("[",!1),je=x("]",!1),it=x("<",!1),at=x(">",!1),ct=x("@",!1),ut=x("!",!1),ft=x("(",!1),lt=x(")",!1),pt=x("/",!1),ht=x("*",!1),dt=x("%",!1),gt=x("?",!1),mt=x("struct",!1),yt=x("target",!1),wt=x("euclid",!1),bt=x("slow",!1),vt=x("rotL",!1),$t=x("rotR",!1),_t=x("fast",!1),Ct=x("scale",!1),At=x("//",!1),Fe=ne([` -`],!0,!1),It=x("cat",!1),Pt=x("$",!1),Bt=x("setcps",!1),St=x("setbpm",!1),kt=x("hush",!1),Nt=function(){return parseFloat(ur())},xt=function(n){return n.join("")},qt=function(n){return n},Tt=function(n){return n.arguments_.alignment="t",n},Gt=function(n){return{weight:n}},Rt=function(n){return{replicate:n}},jt=function(n,c,u){return{operator:{type_:"bjorklund",arguments_:{pulse:n,step:c,rotation:u||0}}}},Ft=function(n){return{operator:{type_:"stretch",arguments_:{amount:n}}}},Mt=function(n){return{operator:{type_:"stretch",arguments_:{amount:"1/"+n}}}},Ht=function(n){return{operator:{type_:"fixed-step",arguments_:{amount:n}}}},Ot=function(n){return{operator:{type_:"degradeBy",arguments_:{amount:n||.5}}}},Wt=function(n,c){return new en(n,c)},Vt=function(n){return new xe(n,"h")},zt=function(n){return{alignment:"v",list:n}},Xt=function(n){return{alignment:"r",list:n}},Et=function(n,c){return c&&c.list.length>0?new xe([n,...c.list],c.alignment):n},Dt=function(n){return n},Zt=function(n){return{name:"struct",args:{sequence:n}}},Lt=function(n){return{name:"target",args:{name:n}}},Jt=function(n,c,u){return{name:"bjorklund",args:{pulse:parseInt(n),step:parseInt(c)}}},Kt=function(n){return{name:"stretch",args:{amount:n}}},Yt=function(n){return{name:"shift",args:{amount:"-"+n}}},Qt=function(n){return{name:"shift",args:{amount:n}}},Ut=function(n){return{name:"stretch",args:{amount:"1/"+n}}},er=function(n){return{name:"scale",args:{scale:n.join("")}}},Me=function(n,c){return c},tr=function(n,c){return c.unshift(n),new xe(c,"t")},rr=function(n){return n},nr=function(n,c){return new Ur(n.name,n.args,c)},sr=function(n){return n},or=function(n){return n},ir=function(n){return new qe("setcps",{value:n})},ar=function(n){return new qe("setcps",{value:n/120/2})},cr=function(){return new qe("hush")},a=0,q=0,_e=[{line:1,column:1}],E=0,Se=[],_=0,Ce;if("startRule"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');i=s[t.startRule]}function ur(){return r.substring(q,a)}function fr(){return ke(q,a)}function x(n,c){return{type:"literal",text:n,ignoreCase:c}}function ne(n,c,u){return{type:"class",parts:n,inverted:c,ignoreCase:u}}function lr(){return{type:"end"}}function He(n){return{type:"other",description:n}}function Oe(n){var c=_e[n],u;if(c)return c;for(u=n-1;!_e[u];)u--;for(c=_e[u],c={line:c.line,column:c.column};uE&&(E=a,Se=[]),Se.push(n))}function hr(n,c,u){return new peg$SyntaxError(peg$SyntaxError.buildMessage(n,c),n,c,u)}function We(){var n;return n=Qr(),n}function H(){var n,c;return _++,n=a,Ve(),c=Ae(),c!==e?(wr(),yr(),q=n,n=Nt()):(a=n,n=e),_--,n===e&&_===0&&A(X),n}function dr(){var n;return r.charCodeAt(a)===46?(n=f,a++):(n=e,_===0&&A(re)),n}function gr(){var n;return M.test(r.charAt(a))?(n=r.charAt(a),a++):(n=e,_===0&&A(Pe)),n}function mr(){var n;return U.test(r.charAt(a))?(n=r.charAt(a),a++):(n=e,_===0&&A(Be)),n}function yr(){var n,c,u,v,k;if(n=a,c=mr(),c!==e){if(u=Ve(),u===e&&(u=br()),u===e&&(u=null),v=[],k=se(),k!==e)for(;k!==e;)v.push(k),k=se();else v=e;v!==e?(c=[c,u,v],n=c):(a=n,n=e)}else a=n,n=e;return n}function wr(){var n,c,u,v;if(n=a,c=dr(),c!==e){if(u=[],v=se(),v!==e)for(;v!==e;)u.push(v),v=se();else u=e;u!==e?(c=[c,u],n=c):(a=n,n=e)}else a=n,n=e;return n}function Ae(){var n,c,u,v;if(n=vr(),n===e)if(n=a,c=gr(),c!==e){for(u=[],v=se();v!==e;)u.push(v),v=se();c=[c,u],n=c}else a=n,n=e;return n}function Ve(){var n;return r.charCodeAt(a)===45?(n=l,a++):(n=e,_===0&&A(Te)),n}function br(){var n;return r.charCodeAt(a)===43?(n=g,a++):(n=e,_===0&&A(Ze)),n}function vr(){var n;return r.charCodeAt(a)===48?(n=w,a++):(n=e,_===0&&A(Le)),n}function se(){var n;return ye.test(r.charAt(a))?(n=r.charAt(a),a++):(n=e,_===0&&A(Je)),n}function N(){var n,c;for(_++,n=[],J.test(r.charAt(a))?(c=r.charAt(a),a++):(c=e,_===0&&A(Ge));c!==e;)n.push(c),J.test(r.charAt(a))?(c=r.charAt(a),a++):(c=e,_===0&&A(Ge));return _--,c=e,_===0&&A(Ke),n}function oe(){var n,c,u,v;return n=a,c=N(),r.charCodeAt(a)===44?(u=y,a++):(u=e,_===0&&A(Ye)),u!==e?(v=N(),c=[c,u,v],n=c):(a=n,n=e),n}function ze(){var n,c,u,v;return n=a,c=N(),r.charCodeAt(a)===124?(u=$,a++):(u=e,_===0&&A(Qe)),u!==e?(v=N(),c=[c,u,v],n=c):(a=n,n=e),n}function ie(){var n;return r.charCodeAt(a)===34?(n=S,a++):(n=e,_===0&&A(Ue)),n===e&&(r.charCodeAt(a)===39?(n=C,a++):(n=e,_===0&&A(et))),n}function Ie(){var n;return ee.test(r.charAt(a))?(n=r.charAt(a),a++):(n=e,_===0&&A(tt)),n===e&&(r.charCodeAt(a)===45?(n=l,a++):(n=e,_===0&&A(Te)),n===e&&(r.charCodeAt(a)===35?(n=p,a++):(n=e,_===0&&A(rt)),n===e&&(r.charCodeAt(a)===46?(n=f,a++):(n=e,_===0&&A(re)),n===e&&(r.charCodeAt(a)===94?(n=d,a++):(n=e,_===0&&A(nt)),n===e&&(r.charCodeAt(a)===95?(n=m,a++):(n=e,_===0&&A(st)),n===e&&(r.charCodeAt(a)===58?(n=b,a++):(n=e,_===0&&A(ot)))))))),n}function Xe(){var n,c,u;if(n=a,N(),c=[],u=Ie(),u!==e)for(;u!==e;)c.push(u),u=Ie();else c=e;return c!==e?(u=N(),q=n,n=xt(c)):(a=n,n=e),n}function $r(){var n,c,u,v;return n=a,N(),r.charCodeAt(a)===91?(c=I,a++):(c=e,_===0&&A(Re)),c!==e?(N(),u=De(),u!==e?(N(),r.charCodeAt(a)===93?(v=T,a++):(v=e,_===0&&A(je)),v!==e?(N(),q=n,n=qt(u)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e),n}function _r(){var n,c,u,v;return n=a,N(),r.charCodeAt(a)===60?(c=G,a++):(c=e,_===0&&A(it)),c!==e?(N(),u=ae(),u!==e?(N(),r.charCodeAt(a)===62?(v=Y,a++):(v=e,_===0&&A(at)),v!==e?(N(),q=n,n=Tt(u)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e),n}function Cr(){var n;return n=Xe(),n===e&&(n=$r(),n===e&&(n=_r())),n}function Ar(){var n;return n=Ir(),n===e&&(n=Br(),n===e&&(n=Sr(),n===e&&(n=kr(),n===e&&(n=Nr(),n===e&&(n=Pr(),n===e&&(n=xr())))))),n}function Ir(){var n,c,u;return n=a,r.charCodeAt(a)===64?(c=D,a++):(c=e,_===0&&A(ct)),c!==e?(u=H(),u!==e?(q=n,n=Gt(u)):(a=n,n=e)):(a=n,n=e),n}function Pr(){var n,c,u;return n=a,r.charCodeAt(a)===33?(c=W,a++):(c=e,_===0&&A(ut)),c!==e?(u=H(),u!==e?(q=n,n=Rt(u)):(a=n,n=e)):(a=n,n=e),n}function Br(){var n,c,u,v,k,j,V;return n=a,r.charCodeAt(a)===40?(c=P,a++):(c=e,_===0&&A(ft)),c!==e?(N(),u=H(),u!==e?(N(),v=oe(),v!==e?(N(),k=H(),k!==e?(N(),oe(),N(),j=H(),j===e&&(j=null),N(),r.charCodeAt(a)===41?(V=B,a++):(V=e,_===0&&A(lt)),V!==e?(q=n,n=jt(u,k,j)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e),n}function Sr(){var n,c,u;return n=a,r.charCodeAt(a)===47?(c=z,a++):(c=e,_===0&&A(pt)),c!==e?(u=H(),u!==e?(q=n,n=Ft(u)):(a=n,n=e)):(a=n,n=e),n}function kr(){var n,c,u;return n=a,r.charCodeAt(a)===42?(c=O,a++):(c=e,_===0&&A(ht)),c!==e?(u=H(),u!==e?(q=n,n=Mt(u)):(a=n,n=e)):(a=n,n=e),n}function Nr(){var n,c,u;return n=a,r.charCodeAt(a)===37?(c=Z,a++):(c=e,_===0&&A(dt)),c!==e?(u=H(),u!==e?(q=n,n=Ht(u)):(a=n,n=e)):(a=n,n=e),n}function xr(){var n,c,u;return n=a,r.charCodeAt(a)===63?(c=L,a++):(c=e,_===0&&A(gt)),c!==e?(u=H(),u===e&&(u=null),q=n,n=Ot(u)):(a=n,n=e),n}function Ee(){var n,c,u;return n=a,c=Cr(),c!==e?(u=Ar(),u===e&&(u=null),q=n,n=Wt(c,u)):(a=n,n=e),n}function ae(){var n,c,u;if(n=a,c=[],u=Ee(),u!==e)for(;u!==e;)c.push(u),u=Ee();else c=e;return c!==e&&(q=n,c=Vt(c)),n=c,n}function qr(){var n,c,u,v,k;if(n=a,c=[],u=a,v=oe(),v!==e?(k=ae(),k!==e?u=k:(a=u,u=e)):(a=u,u=e),u!==e)for(;u!==e;)c.push(u),u=a,v=oe(),v!==e?(k=ae(),k!==e?u=k:(a=u,u=e)):(a=u,u=e);else c=e;return c!==e&&(q=n,c=zt(c)),n=c,n}function Tr(){var n,c,u,v,k;if(n=a,c=[],u=a,v=ze(),v!==e?(k=ae(),k!==e?u=k:(a=u,u=e)):(a=u,u=e),u!==e)for(;u!==e;)c.push(u),u=a,v=ze(),v!==e?(k=ae(),k!==e?u=k:(a=u,u=e)):(a=u,u=e);else c=e;return c!==e&&(q=n,c=Xt(c)),n=c,n}function De(){var n,c,u;return n=a,c=ae(),c!==e?(u=qr(),u===e&&(u=Tr()),u===e&&(u=null),q=n,n=Et(c,u)):(a=n,n=e),n}function Gr(){var n,c,u,v;return n=a,N(),c=ie(),c!==e?(u=De(),u!==e?(v=ie(),v!==e?(q=n,n=Dt(u)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e),n}function Rr(){var n;return n=zr(),n===e&&(n=Hr(),n===e&&(n=Vr(),n===e&&(n=Fr(),n===e&&(n=Mr(),n===e&&(n=jr(),n===e&&(n=Wr(),n===e&&(n=Or()))))))),n}function jr(){var n,c,u;return n=a,r.substr(a,6)===fe?(c=fe,a+=6):(c=e,_===0&&A(mt)),c!==e?(N(),u=ce(),u!==e?(q=n,n=Zt(u)):(a=n,n=e)):(a=n,n=e),n}function Fr(){var n,c,u,v,k;return n=a,r.substr(a,6)===we?(c=we,a+=6):(c=e,_===0&&A(yt)),c!==e?(N(),u=ie(),u!==e?(v=Xe(),v!==e?(k=ie(),k!==e?(q=n,n=Lt(v)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e),n}function Mr(){var n,c,u,v;return n=a,r.substr(a,6)===be?(c=be,a+=6):(c=e,_===0&&A(wt)),c!==e?(N(),u=Ae(),u!==e?(N(),v=Ae(),v!==e?(N(),Ae(),q=n,n=Jt(u,v)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e),n}function Hr(){var n,c,u;return n=a,r.substr(a,4)===te?(c=te,a+=4):(c=e,_===0&&A(bt)),c!==e?(N(),u=H(),u!==e?(q=n,n=Kt(u)):(a=n,n=e)):(a=n,n=e),n}function Or(){var n,c,u;return n=a,r.substr(a,4)===le?(c=le,a+=4):(c=e,_===0&&A(vt)),c!==e?(N(),u=H(),u!==e?(q=n,n=Yt(u)):(a=n,n=e)):(a=n,n=e),n}function Wr(){var n,c,u;return n=a,r.substr(a,4)===pe?(c=pe,a+=4):(c=e,_===0&&A($t)),c!==e?(N(),u=H(),u!==e?(q=n,n=Qt(u)):(a=n,n=e)):(a=n,n=e),n}function Vr(){var n,c,u;return n=a,r.substr(a,4)===he?(c=he,a+=4):(c=e,_===0&&A(_t)),c!==e?(N(),u=H(),u!==e?(q=n,n=Ut(u)):(a=n,n=e)):(a=n,n=e),n}function zr(){var n,c,u,v,k;if(n=a,r.substr(a,5)===ve?(c=ve,a+=5):(c=e,_===0&&A(Ct)),c!==e)if(N(),u=ie(),u!==e){if(v=[],k=Ie(),k!==e)for(;k!==e;)v.push(k),k=Ie();else v=e;v!==e?(k=ie(),k!==e?(q=n,n=er(v)):(a=n,n=e)):(a=n,n=e)}else a=n,n=e;else a=n,n=e;return n}function Ne(){var n,c,u,v;if(n=a,r.substr(a,2)===de?(c=de,a+=2):(c=e,_===0&&A(At)),c!==e){for(u=[],R.test(r.charAt(a))?(v=r.charAt(a),a++):(v=e,_===0&&A(Fe));v!==e;)u.push(v),R.test(r.charAt(a))?(v=r.charAt(a),a++):(v=e,_===0&&A(Fe));c=[c,u],n=c}else a=n,n=e;return n}function Xr(){var n,c,u,v,k,j,V,ue;if(n=a,r.substr(a,3)===$e?(c=$e,a+=3):(c=e,_===0&&A(It)),c!==e)if(N(),r.charCodeAt(a)===91?(u=I,a++):(u=e,_===0&&A(Re)),u!==e)if(N(),v=ce(),v!==e){for(k=[],j=a,V=oe(),V!==e?(ue=ce(),ue!==e?(q=j,j=Me(v,ue)):(a=j,j=e)):(a=j,j=e);j!==e;)k.push(j),j=a,V=oe(),V!==e?(ue=ce(),ue!==e?(q=j,j=Me(v,ue)):(a=j,j=e)):(a=j,j=e);j=N(),r.charCodeAt(a)===93?(V=T,a++):(V=e,_===0&&A(je)),V!==e?(q=n,n=tr(v,k)):(a=n,n=e)}else a=n,n=e;else a=n,n=e;else a=n,n=e;return n}function Er(){var n;return n=Xr(),n===e&&(n=Gr()),n}function ce(){var n,c,u,v,k;if(n=a,c=Er(),c!==e){for(N(),u=[],v=Ne();v!==e;)u.push(v),v=Ne();q=n,n=rr(c)}else a=n,n=e;return n===e&&(n=a,c=Rr(),c!==e?(N(),r.charCodeAt(a)===36?(u=F,a++):(u=e,_===0&&A(Pt)),u!==e?(v=N(),k=ce(),k!==e?(q=n,n=nr(c,k)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e)),n}function Dr(){var n,c;return n=a,c=ce(),c!==e&&(q=n,c=sr(c)),n=c,n===e&&(n=Ne()),n}function Zr(){var n;return n=Dr(),n}function Lr(){var n,c;return n=a,N(),c=Jr(),c===e&&(c=Kr(),c===e&&(c=Yr())),c!==e?(N(),q=n,n=or(c)):(a=n,n=e),n}function Jr(){var n,c,u;return n=a,r.substr(a,6)===Q?(c=Q,a+=6):(c=e,_===0&&A(Bt)),c!==e?(N(),u=H(),u!==e?(q=n,n=ir(u)):(a=n,n=e)):(a=n,n=e),n}function Kr(){var n,c,u;return n=a,r.substr(a,6)===ge?(c=ge,a+=6):(c=e,_===0&&A(St)),c!==e?(N(),u=H(),u!==e?(q=n,n=ar(u)):(a=n,n=e)):(a=n,n=e),n}function Yr(){var n,c;return n=a,r.substr(a,4)===me?(c=me,a+=4):(c=e,_===0&&A(kt)),c!==e&&(q=n,c=cr()),n=c,n}function Qr(){var n;return n=Zr(),n===e&&(n=Lr()),n}var xe=function(n,c){this.type_="pattern",this.arguments_={alignment:c},this.source_=n},Ur=function(n,c,u){this.type_=n,this.arguments_=c,this.source_=u},en=function(n,c){this.type_="element",this.source_=n,this.options_=c,this.location_=fr()},qe=function(n,c){this.type_="command",this.name_=n,this.options_=c};if(Ce=i(),Ce!==e&&a===r.length)return Ce;throw Ce!==e&&a(t,e)=>{const s=r.source_[e].options_,i=s==null?void 0:s.operator;if(i){switch(i.type_){case"stretch":const l=Fraction(i.arguments_.amount).inverse();return reify$1(t).fast(l);case"bjorklund":return t.euclid(i.arguments_.pulse,i.arguments_.step,i.arguments_.rotation);case"degradeBy":return reify$1(t)._degradeByWith(rand.early(randOffset*_nextSeed()).segment(1),i.arguments_.amount)}console.warn(`operator "${i.type_}" not implemented`)}if(s!=null&&s.weight)return t;const f=Object.keys(s||{}).filter(l=>l!=="operator");return f.length&&console.warn(`option${f.length>1?"s":""} ${f.map(l=>`"${l}"`).join(", ")} not implemented`),t};function resolveReplications(r){r.source_=r.source_.map(t=>{const{replicate:e,...o}=t.options_||{};return e?{...t,options_:{...o,weight:e},source_:{type_:"pattern",arguments_:{alignment:"h"},source_:[{type_:"element",source_:t.source_,location_:t.location_,options_:{operator:{type_:"stretch",arguments_:{amount:Fraction(e).inverse().toString()}}}}]}}:t})}function patternifyAST(r){switch(r.type_){case"pattern":resolveReplications(r);const t=r.source_.map(patternifyAST).map(applyOptions(r)),e=r.arguments_.alignment;if(e==="v")return stack(...t);if(e==="r")return chooseInWith(rand.early(randOffset*_nextSeed()).segment(1),t);const o=r.source_.some(s=>{var i;return!!((i=s.options_)!=null&&i.weight)});if(!o&&e==="t")return slowcat(...t);if(o){const s=timeCat(...r.source_.map((i,f)=>{var l;return[((l=i.options_)==null?void 0:l.weight)||1,t[f]]}));if(e==="t"){const i=r.source_.reduce((f,l)=>{var g;return f+(((g=l.options_)==null?void 0:g.weight)||1)},0);return s._slow(i)}return s}return sequence(...t);case"element":if(r.source_==="~")return silence;if(typeof r.source_!="object"){if(!r.location_)return console.warn("no location for",r),r.source_;const{start:s,end:i}=r.location_,f=isNaN(Number(r.source_))?r.source_:Number(r.source_);return pure(f).withLocation([s.line,s.column,s.offset],[i.line,i.column,i.offset])}return patternifyAST(r.source_);case"stretch":return patternifyAST(r.source_).slow(r.arguments_.amount);default:return console.warn(`node type "${r.type_}" not implemented -> returning silence`),silence}}const mini=(...r)=>{const t=r.map(e=>{const o=peg$parse(`"${e}"`);return patternifyAST(o)});return sequence(...t)},h=r=>{const t=peg$parse(r);return patternifyAST(t)};Pattern$1.prototype.define("mini",mini,{composable:!0});Pattern$1.prototype.define("m",mini,{composable:!0});Pattern$1.prototype.define("h",h,{composable:!0});function minify(r){return typeof r=="string"?mini(r):reify$1(r)}if(typeof DelayNode<"u"){class r extends DelayNode{constructor(e,o,s,i){super(e),o=Math.abs(o),this.delayTime.value=s;const f=e.createGain();f.gain.value=Math.min(Math.abs(i),.995),this.feedback=f.gain;const l=e.createGain();return l.gain.value=o,this.delayGain=l,this.connect(f),this.connect(l),f.connect(this),this.connect=g=>l.connect(g),this}start(e){this.delayGain.gain.setValueAtTime(this.delayGain.gain.value,e+this.delayTime.value)}}AudioContext.prototype.createFeedbackDelay=function(t,e,o){return new r(this,t,e,o)}}typeof AudioContext<"u"&&(AudioContext.prototype.impulseResponse=function(r,t=1){const e=this.sampleRate*r,o=this.createBuffer(t,e,this.sampleRate),s=o.getChannelData(0);for(let i=0;i(t.buffer=this.impulseResponse(e),t.duration=r,t),t.setDuration(r),t});const bufferCache={},loadCache={},getCachedBuffer=r=>bufferCache[r],loadBuffer=(r,t)=>(loadCache[r]||(loadCache[r]=fetch(r).then(e=>e.arrayBuffer()).then(async e=>{const o=await t.decodeAudioData(e);return bufferCache[r]=o,o})),loadCache[r]);function reverseBuffer(r){const t=getAudioContext(),e=t.createBuffer(r.numberOfChannels,r.length,t.sampleRate);for(let o=0;obufferCache[r],githubCache={};let sampleCache={current:void 0};const loadGithubSamples=async(r,t)=>{const e="loadGithubSamples "+r,o=localStorage.getItem(e);if(o&&(console.log("[sampler]: loaded sample list from localstorage",r),githubCache[r]=JSON.parse(o)),githubCache[r])return sampleCache.current=githubCache[r],githubCache[r];console.log("[sampler]: fetching sample list from github",r);try{const[s,i,...f]=r.split("/"),l=`https://api.github.com/repos/${s}/${i}/contents`,g=await fetch(`${l}/${f.join("/")}`).then(w=>w.json());githubCache[r]=(await Promise.all(g.map(async({name:w,path:y})=>({name:w,content:await fetch(`${l}/${y}`).then($=>$.json()).catch($=>{console.error("could not load path",$)})})))).filter(({content:w})=>!!w).reduce((w,{name:y,content:$})=>({...w,[(t==null?void 0:t(y))||y]:$.map(({download_url:S})=>S)}),{})}catch(s){console.error("[sampler]: failed to fetch sample list from github",s);return}return sampleCache.current=githubCache[r],localStorage.setItem(e,JSON.stringify(sampleCache.current)),console.log("[sampler]: loaded samples:",sampleCache.current),githubCache[r]},samples=async(r,t=r._base||"")=>{if(typeof r=="string"){if(r.startsWith("github:")){const[o,s]=r.split("github:");r=`https://raw.githubusercontent.com/${s}/strudel.json`}if(typeof fetch!="function")return;const e=r.split("/").slice(0,-1).join("/");return typeof fetch>"u"?void 0:fetch(r).then(o=>o.json()).then(o=>samples(o,t||o._base||e)).catch(o=>{throw console.error(o),new Error(`error loading "${r}"`)})}sampleCache.current={...sampleCache.current,...Object.fromEntries(Object.entries(r).map(([e,o])=>{if(typeof o=="string"&&(o=[o]),typeof o!="object")throw new Error("wrong sample map format for "+e);t=o._base||t;const s=i=>(t+i).replace("github:","https://raw.githubusercontent.com/");return Array.isArray(o)?[e,o.map(s)]:[e,Object.fromEntries(Object.entries(o).map(([i,f])=>[i,(typeof f=="string"?[f]:f).map(s)]))]}))}},resetLoadedSamples=()=>{sampleCache.current=void 0},getLoadedSamples$1=()=>sampleCache.current;var vowelFormant={a:{freqs:[660,1120,2750,3e3,3350],gains:[1,.5012,.0708,.0631,.0126],qs:[80,90,120,130,140]},e:{freqs:[440,1800,2700,3e3,3300],gains:[1,.1995,.1259,.1,.1],qs:[70,80,100,120,120]},i:{freqs:[270,1850,2900,3350,3590],gains:[1,.0631,.0631,.0158,.0158],qs:[40,90,100,120,120]},o:{freqs:[430,820,2700,3e3,3300],gains:[1,.3162,.0501,.0794,.01995],qs:[40,80,100,120,120]},u:{freqs:[370,630,2750,3e3,3400],gains:[1,.1,.0708,.0316,.01995],qs:[40,60,100,120,120]}};if(typeof GainNode<"u"){class r extends GainNode{constructor(e,o){if(super(e),!vowelFormant[o])throw new Error("vowel: unknown vowel "+o);const{gains:s,qs:i,freqs:f}=vowelFormant[o],l=e.createGain();for(let g=0;g<5;g++){const w=e.createGain();w.gain.value=s[g];const y=e.createBiquadFilter();y.type="bandpass",y.Q.value=i[g],y.frequency.value=f[g],this.connect(y),y.connect(w),w.connect(l)}return l.gain.value=8,this.connect=g=>l.connect(g),this}}AudioContext.prototype.createVowelFilter=function(t){return new r(this,t)}}const workletsUrl="data:application/javascript;base64,Ly8gTElDRU5TRSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2My4wIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZGt0cjAvV2ViRGlydC9ibG9iL21haW4vTElDRU5TRQovLyBhbGwgdGhlIGNyZWRpdCBnb2VzIHRvIGRrdHIwJ3Mgd2ViZGlydDogaHR0cHM6Ly9naXRodWIuY29tL2RrdHIwL1dlYkRpcnQvYmxvYi81Y2UzZDY5ODM2MmM1NGQ2ZTFiNjhhY2M0N2ViMjk1NWFjNjJjNzkzL2Rpc3QvQXVkaW9Xb3JrbGV0cy5qcwovLyA8MwoKY2xhc3MgQ29hcnNlUHJvY2Vzc29yIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICBzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCkgewogICAgcmV0dXJuIFt7IG5hbWU6ICdjb2Fyc2UnLCBkZWZhdWx0VmFsdWU6IDEgfV07CiAgfQoKICBjb25zdHJ1Y3RvcigpIHsKICAgIHN1cGVyKCk7CiAgICB0aGlzLm5vdFN0YXJ0ZWQgPSB0cnVlOwogIH0KCiAgcHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpIHsKICAgIGNvbnN0IGlucHV0ID0gaW5wdXRzWzBdOwogICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1swXTsKICAgIGNvbnN0IGNvYXJzZSA9IHBhcmFtZXRlcnMuY29hcnNlOwogICAgY29uc3QgYmxvY2tTaXplID0gMTI4OwogICAgY29uc3QgaGFzSW5wdXQgPSAhKGlucHV0WzBdID09PSB1bmRlZmluZWQpOwogICAgaWYgKGhhc0lucHV0KSB7CiAgICAgIHRoaXMubm90U3RhcnRlZCA9IGZhbHNlOwogICAgICBvdXRwdXRbMF1bMF0gPSBpbnB1dFswXVswXTsKICAgICAgZm9yIChsZXQgbiA9IDE7IG4gPCBibG9ja1NpemU7IG4rKykgewogICAgICAgIGZvciAobGV0IG8gPSAwOyBvIDwgb3V0cHV0Lmxlbmd0aDsgbysrKSB7CiAgICAgICAgICBvdXRwdXRbb11bbl0gPSBuICUgY29hcnNlID09IDAgPyBpbnB1dFswXVtuXSA6IG91dHB1dFtvXVtuIC0gMV07CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gdGhpcy5ub3RTdGFydGVkIHx8IGhhc0lucHV0OwogIH0KfQoKcmVnaXN0ZXJQcm9jZXNzb3IoJ2NvYXJzZS1wcm9jZXNzb3InLCBDb2Fyc2VQcm9jZXNzb3IpOwoKY2xhc3MgQ3J1c2hQcm9jZXNzb3IgZXh0ZW5kcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgewogIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICByZXR1cm4gW3sgbmFtZTogJ2NydXNoJywgZGVmYXVsdFZhbHVlOiAwIH1dOwogIH0KCiAgY29uc3RydWN0b3IoKSB7CiAgICBzdXBlcigpOwogICAgdGhpcy5ub3RTdGFydGVkID0gdHJ1ZTsKICB9CgogIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXTsKICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07CiAgICBjb25zdCBjcnVzaCA9IHBhcmFtZXRlcnMuY3J1c2g7CiAgICBjb25zdCBibG9ja1NpemUgPSAxMjg7CiAgICBjb25zdCBoYXNJbnB1dCA9ICEoaW5wdXRbMF0gPT09IHVuZGVmaW5lZCk7CiAgICBpZiAoaGFzSW5wdXQpIHsKICAgICAgdGhpcy5ub3RTdGFydGVkID0gZmFsc2U7CiAgICAgIGlmIChjcnVzaC5sZW5ndGggPT09IDEpIHsKICAgICAgICBjb25zdCB4ID0gTWF0aC5wb3coMiwgY3J1c2hbMF0gLSAxKTsKICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJsb2NrU2l6ZTsgbisrKSB7CiAgICAgICAgICBjb25zdCB2YWx1ZSA9IE1hdGgucm91bmQoaW5wdXRbMF1bbl0gKiB4KSAvIHg7CiAgICAgICAgICBmb3IgKGxldCBvID0gMDsgbyA8IG91dHB1dC5sZW5ndGg7IG8rKykgewogICAgICAgICAgICBvdXRwdXRbb11bbl0gPSB2YWx1ZTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBibG9ja1NpemU7IG4rKykgewogICAgICAgICAgbGV0IHggPSBNYXRoLnBvdygyLCBjcnVzaFtuXSAtIDEpOwogICAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLnJvdW5kKGlucHV0WzBdW25dICogeCkgLyB4OwogICAgICAgICAgZm9yIChsZXQgbyA9IDA7IG8gPCBvdXRwdXQubGVuZ3RoOyBvKyspIHsKICAgICAgICAgICAgb3V0cHV0W29dW25dID0gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gdGhpcy5ub3RTdGFydGVkIHx8IGhhc0lucHV0OwogIH0KfQpyZWdpc3RlclByb2Nlc3NvcignY3J1c2gtcHJvY2Vzc29yJywgQ3J1c2hQcm9jZXNzb3IpOwoKY2xhc3MgU2hhcGVQcm9jZXNzb3IgZXh0ZW5kcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgewogIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICByZXR1cm4gW3sgbmFtZTogJ3NoYXBlJywgZGVmYXVsdFZhbHVlOiAwIH1dOwogIH0KCiAgY29uc3RydWN0b3IoKSB7CiAgICBzdXBlcigpOwogICAgdGhpcy5ub3RTdGFydGVkID0gdHJ1ZTsKICB9CgogIHByb2Nlc3MoaW5wdXRzLCBvdXRwdXRzLCBwYXJhbWV0ZXJzKSB7CiAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXTsKICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07CiAgICBjb25zdCBzaGFwZTAgPSBwYXJhbWV0ZXJzLnNoYXBlWzBdOwogICAgY29uc3Qgc2hhcGUxID0gc2hhcGUwIDwgMSA/IHNoYXBlMCA6IDEuMCAtIDRlLTEwOwogICAgY29uc3Qgc2hhcGUgPSAoMi4wICogc2hhcGUxKSAvICgxLjAgLSBzaGFwZTEpOwogICAgY29uc3QgYmxvY2tTaXplID0gMTI4OwogICAgY29uc3QgaGFzSW5wdXQgPSAhKGlucHV0WzBdID09PSB1bmRlZmluZWQpOwogICAgaWYgKGhhc0lucHV0KSB7CiAgICAgIHRoaXMubm90U3RhcnRlZCA9IGZhbHNlOwogICAgICBmb3IgKGxldCBuID0gMDsgbiA8IGJsb2NrU2l6ZTsgbisrKSB7CiAgICAgICAgY29uc3QgdmFsdWUgPSAoKDEgKyBzaGFwZSkgKiBpbnB1dFswXVtuXSkgLyAoMSArIHNoYXBlICogTWF0aC5hYnMoaW5wdXRbMF1bbl0pKTsKICAgICAgICBmb3IgKGxldCBvID0gMDsgbyA8IG91dHB1dC5sZW5ndGg7IG8rKykgewogICAgICAgICAgb3V0cHV0W29dW25dID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gdGhpcy5ub3RTdGFydGVkIHx8IGhhc0lucHV0OwogIH0KfQoKcmVnaXN0ZXJQcm9jZXNzb3IoJ3NoYXBlLXByb2Nlc3NvcicsIFNoYXBlUHJvY2Vzc29yKTsK",{Pattern}=strudel;let audioContext;const getAudioContext$1=()=>(audioContext||(audioContext=new AudioContext),audioContext);let destination;const getDestination=()=>{const r=getAudioContext$1();return destination||(destination=r.createGain(),destination.connect(r.destination)),destination},panic=()=>{getDestination().gain.linearRampToValueAtTime(0,getAudioContext$1().currentTime+.01),destination=null},getFilter=(r,t,e)=>{const o=getAudioContext$1().createBiquadFilter();return o.type=r,o.frequency.value=t,o.Q.value=e,o},getADSR=(r,t,e,o,s,i,f)=>{const l=getAudioContext$1().createGain();return l.gain.setValueAtTime(0,i),l.gain.linearRampToValueAtTime(s,i+r),l.gain.linearRampToValueAtTime(e*s,i+r+t),l.gain.setValueAtTime(e*s,f),l.gain.linearRampToValueAtTime(0,f+o),l},getOscillator=({s:r,freq:t,t:e,duration:o,release:s})=>{const i=getAudioContext$1().createOscillator();return i.type=r||"triangle",i.frequency.value=Number(t),i.start(e),i.stop(e+o+s),i},getSoundfontKey=r=>{var o,s,i,f;if(!globalThis.soundfontList)return!1;if((s=(o=globalThis.soundfontList)==null?void 0:o.instruments)!=null&&s.includes(r))return r;const t=(f=(i=globalThis.soundfontList)==null?void 0:i.instrumentNames)==null?void 0:f.indexOf(r),e=t<10?`00${t}`:t<100?`0${t}`:t;if(t!==-1)return globalThis.soundfontList.instruments.find(l=>l.startsWith(e))},getSampleBufferSource=async(r,t,e,o)=>{let s=0,i=typeof e=="string"?toMidi(e):e||36;s=i-36;const f=getAudioContext$1(),l=getLoadedSamples();if(!l)throw new Error("no samples loaded");const g=l==null?void 0:l[r];if(!g)throw new Error(`sample not found: "${r}", try one of ${Object.keys(l).map(C=>`"${C}"`).join(", ")}.`);if(typeof g!="object")throw new Error("wrong format for sample bank:",r);let w;if(Array.isArray(g))w=g[t%g.length];else{const C=d=>toMidi(d)-i,p=Object.keys(g).filter(d=>!d.startsWith("_")).reduce((d,m,b)=>!d||Math.abs(C(m)){if(!r.includes(":"))return[r,t];let[e,o]=r.split(":");return isNaN(Number(o))?[r,t]:[e,o]};let workletsLoading;function loadWorklets(){return workletsLoading||(workletsLoading=getAudioContext$1().audioWorklet.addModule(workletsUrl),workletsLoading)}function getWorklet(r,t,e){const o=new AudioWorkletNode(r,t);return Object.entries(e).forEach(([s,i])=>{o.parameters.get(s).value=i}),o}if(typeof window<"u")try{loadWorklets()}catch(r){console.warn("could not load AudioWorklet effects coarse, crush and shape",r)}function gainNode(r){const t=getAudioContext$1().createGain();return t.gain.value=r,t}const cutGroups=[];let delays={};function getDelay(r,t,e,o){if(!delays[r]){const i=getAudioContext$1().createFeedbackDelay(1,t,e);i.start(o),i.connect(getDestination()),delays[r]=i}return delays[r].delayTime.value!==t&&delays[r].delayTime.setValueAtTime(t,o),delays[r].feedback.value!==e&&delays[r].feedback.setValueAtTime(e,o),delays[r]}let reverbs={};function getReverb(r,t=2){if(!reverbs[r]){const o=getAudioContext$1().createReverb(t);o.connect(getDestination()),reverbs[r]=o}return reverbs[r].duration!==t&&(reverbs[r]=reverbs[r].setDuration(t),reverbs[r].duration=t),reverbs[r]}function effectSend(r,t,e){const o=gainNode(e);return r.connect(o),o.connect(t),o}const webaudioOutput=async(r,t,e)=>{var o;try{const s=getAudioContext$1();if(typeof r.value!="object")throw new Error(`hap.value ${r.value} is not supported by webaudio output. Hint: append .note() or .s() to the end`);let i=s.currentTime+t,{freq:f,s:l,bank:g,sf:w,clip:y=0,n:$=0,note:S,gain:C=.8,cutoff:p,resonance:d=1,hcutoff:m,hresonance:b=1,bandf:I,bandq:T=1,coarse:G,crush:Y,shape:D,pan:W,speed:P=1,begin:B=0,end:z=1,vowel:O,delay:Z=0,delayfeedback:L=.5,delaytime:fe=.25,unit:we,nudge:be=0,cut:te,loop:le,orbit:pe=1,room:he,size:ve=2,roomsize:de=ve}=r.value;const{velocity:$e=1}=r.context;C*=$e;const F=[];if(g&&l&&(l=`${g}_${l}`),typeof l=="string"&&([l,$]=splitSN(l,$)),typeof S=="string"&&([S,$]=splitSN(S,$)),!l||["sine","square","triangle","sawtooth"].includes(l)){const{attack:M=.001,decay:U=.05,sustain:ye=.6,release:J=.01}=r.value;$=S||$||36,typeof $=="string"&&($=toMidi($)),!f&&typeof $=="number"&&(f=fromMidi($));const ee=getOscillator({t:i,s:l,freq:f,duration:e,release:J});F.push(ee),F.push(gainNode(.3));const R=getADSR(M,U,ye,J,1,i,i+e);F.push(R)}else{const{attack:M=.001,decay:U=.001,sustain:ye=1,release:J=.001}=r.value;if(P===0)return;if(!l){console.warn("no sample specified");return}const ee=getSoundfontKey(l);let R;try{ee?R=await globalThis.getFontBufferSource(ee,S||$,s):R=await getSampleBufferSource(l,$,S,P)}catch(Be){console.warn(Be);return}if(s.currentTime>i){console.warn("sample still loading:",l,$);return}if(!R){console.warn("no buffer source");return}R.playbackRate.value=Math.abs(P)*R.playbackRate.value,we==="c"&&(R.playbackRate.value=R.playbackRate.value*R.buffer.duration);let X=ee||y?e:R.buffer.duration/R.playbackRate.value;const re=B*X*R.playbackRate.value;X=(z-B)*X,le&&(R.loop=!0,R.loopStart=re,R.loopEnd=re+X,X=le*X),i+=be,R.start(i,re),te!==void 0&&((o=cutGroups[te])==null||o.stop(i),cutGroups[te]=R),F.push(R),R.stop(i+X+J);const Pe=getADSR(M,U,ye,J,1,i,i+X);F.push(Pe)}if(F.push(gainNode(C)),p!==void 0&&F.push(getFilter("lowpass",p,d)),m!==void 0&&F.push(getFilter("highpass",m,b)),I!==void 0&&F.push(getFilter("bandpass",I,T)),O!==void 0&&F.push(s.createVowelFilter(O)),G!==void 0&&F.push(getWorklet(s,"coarse-processor",{coarse:G})),Y!==void 0&&F.push(getWorklet(s,"crush-processor",{crush:Y})),D!==void 0&&F.push(getWorklet(s,"shape-processor",{shape:D})),W!==void 0){const M=s.createStereoPanner();M.pan.value=2*W-1,F.push(M)}const Q=gainNode(1);F.push(Q),Q.connect(getDestination());let ge;if(Z>0&&fe>0&&L>0){const M=getDelay(pe,fe,L,i);ge=effectSend(Q,M,Z)}let me;if(he>0&&de>0){const M=getReverb(pe,de);me=effectSend(Q,M,he)}F.slice(1).reduce((M,U)=>M.connect(U),F[0]),F[0].onended=()=>F.concat([ge,me]).forEach(M=>M==null?void 0:M.disconnect())}catch(s){console.warn(".out error:",s)}},webaudioOutputTrigger=(r,t,e,o)=>webaudioOutput(t,r-e,t.duration/o);Pattern.prototype.out=function(){return this.onTrigger(webaudioOutputTrigger)};const tune=`stack( - n("c3 [eb3,g3]") - .delay("<0 .5>") - .delaytime(".16 | .33") - .delayfeedback(".6 | .8") -).sometimes(x=>x.speed("-1"))`,ctx=getAudioContext$1(),input=document.getElementById("text");input.innerHTML=tune;evalScope(controls,__vitePreload(()=>Promise.resolve().then(()=>strudel),void 0),__vitePreload(()=>import("./index.211bbc68.js"),[]),__vitePreload(()=>import("./index.ecddf978.js"),[]),__vitePreload(()=>import("./index.63aa02b5.js"),[]));setStringParser(mini);const{evaluate}=repl({defaultOutput:webaudioOutput,getTime:()=>ctx.currentTime});document.getElementById("start").addEventListener("click",()=>{ctx.resume(),evaluate(input.value)});export{Hap as H,Pattern$3 as P,minify as a,peg$SyntaxError as b,peg$parse as c,panic as d,webaudioOutputTrigger as e,getCachedBuffer as f,getAudioContext$1 as g,h,getLoadedBuffer as i,loadGithubSamples as j,resetLoadedSamples as k,loadBuffer as l,mini as m,getLoadedSamples$1 as n,mod as o,patternifyAST as p,getAugmentedNamespace as q,reverseBuffer as r,samples as s,commonjsGlobal as t,getDefaultExportFromCjs as u,reify$2 as v,webaudioOutput as w,stack$1 as x}; diff --git a/packages/core/examples/vite-vanilla-repl/dist/assets/index.63aa02b5.js b/packages/core/examples/vite-vanilla-repl/dist/assets/index.63aa02b5.js deleted file mode 100644 index dfde3ae1..00000000 --- a/packages/core/examples/vite-vanilla-repl/dist/assets/index.63aa02b5.js +++ /dev/null @@ -1 +0,0 @@ -import{P as _,o as Lt,q as Ut,t as Y,u as Xt,v as Kt,H as Qt,x as Yt}from"./index.4cbc0a10.js";const C=(n,t)=>Array(Math.abs(t)+1).join(n);function g(n,t,e){return function(...o){return console.warn(`${n} is deprecated. Use ${t}.`),e.apply(this,o)}}function z(n){return n!==null&&typeof n=="object"&&typeof n.name=="string"}function q(n){return n!==null&&typeof n=="object"&&typeof n.step=="number"&&typeof n.alt=="number"}const Qn=[0,2,4,-1,1,3,5],Yn=Qn.map(n=>Math.floor(n*7/12));function en(n){const{step:t,alt:e,oct:o,dir:r=1}=n,i=Qn[t]+7*e;if(o===void 0)return[r*i];const a=o-Yn[t]-4*e;return[r*i,r*a]}const Zt=[3,0,4,1,5,2,6];function on(n){const[t,e,o]=n,r=Zt[Jt(t)],i=Math.floor((t+1)/7);if(e===void 0)return{step:r,alt:i,dir:o};const a=e+4*i+Yn[r];return{step:r,alt:i,oct:a,dir:o}}function Jt(n){const t=(n+1)%7;return t<0?7+t:t}const Zn={empty:!0,name:"",pc:"",acc:""},Dn=new Map,vn=n=>"CDEFGAB".charAt(n),E=n=>n<0?C("b",-n):C("#",n),G=n=>n[0]==="b"?-n.length:n.length;function m(n){const t=Dn.get(n);if(t)return t;const e=typeof n=="string"?te(n):q(n)?m(ee(n)):z(n)?m(n.name):Zn;return Dn.set(n,e),e}const Wt=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function rn(n){const t=Wt.exec(n);return[t[1].toUpperCase(),t[2].replace(/x/g,"##"),t[3],t[4]]}function F(n){return m(on(n))}const ne=(n,t)=>(n%t+t)%t,pn=[0,2,4,5,7,9,11];function te(n){const t=rn(n);if(t[0]===""||t[3]!=="")return Zn;const e=t[0],o=t[1],r=t[2],i=(e.charCodeAt(0)+3)%7,a=G(o),s=r.length?+r:void 0,c=en({step:i,alt:a,oct:s}),l=e+o+r,u=e+o,d=(pn[i]+a+120)%12,M=s===void 0?ne(pn[i]+a,12)-12*99:pn[i]+a+12*(s+1),h=M>=0&&M<=127?M:null,A=s===void 0?null:Math.pow(2,(M-69)/12)*440;return{empty:!1,acc:o,alt:a,chroma:d,coord:c,freq:A,height:M,letter:e,midi:h,name:l,oct:s,pc:u,step:i}}function ee(n){const{step:t,alt:e,oct:o}=n,r=vn(t);if(!r)return"";const i=r+E(e);return o||o===0?i+o:i}const yn={empty:!0,name:"",acc:""},oe="([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})",re="(AA|A|P|M|m|d|dd)([-+]?\\d+)",ie=new RegExp("^"+oe+"|"+re+"$");function $n(n){const t=ie.exec(`${n}`);return t===null?["",""]:t[1]?[t[1],t[2]]:[t[4],t[3]]}const Rn={};function f(n){return typeof n=="string"?Rn[n]||(Rn[n]=ae(n)):q(n)?f(ce(n)):z(n)?f(n.name):yn}const kn=[0,2,4,5,7,9,11],Jn="PMMPPMM";function ae(n){const t=$n(n);if(t[0]==="")return yn;const e=+t[0],o=t[1],r=(Math.abs(e)-1)%7,i=Jn[r];if(i==="M"&&o==="P")return yn;const a=i==="M"?"majorable":"perfectable",s=""+e+o,c=e<0?-1:1,l=e===8||e===-8?e:c*(r+1),u=se(a,o),d=Math.floor((Math.abs(e)-1)/7),M=c*(kn[r]+u+12*d),h=(c*(kn[r]+u)%12+12)%12,A=en({step:r,alt:u,oct:d,dir:c});return{empty:!1,name:s,num:e,q:o,step:r,alt:u,dir:c,type:a,simple:l,semitones:M,chroma:h,coord:A,oct:d}}function B(n,t){const[e,o=0]=n,r=e*7+o*12<0,i=t||r?[-e,-o,-1]:[e,o,1];return f(on(i))}function se(n,t){return t==="M"&&n==="majorable"||t==="P"&&n==="perfectable"?0:t==="m"&&n==="majorable"?-1:/^A+$/.test(t)?t.length:/^d+$/.test(t)?-1*(n==="perfectable"?t.length:t.length+1):0}function ce(n){const{step:t,alt:e,oct:o=0,dir:r}=n;if(!r)return"";const i=t+1+7*o,a=i===0?t+1:i,s=r<0?"-":"",c=Jn[t]==="M"?"majorable":"perfectable";return s+a+me(c,e)}function me(n,t){return t===0?n==="majorable"?"M":"P":t===-1&&n==="majorable"?"m":t>0?C("A",t):C("d",n==="perfectable"?t:t+1)}function P(n,t){const e=m(n),o=f(t);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,a=r.length===1?[r[0]+i[0]]:[r[0]+i[0],r[1]+i[1]];return F(a).name}function D(n,t){const e=m(n),o=m(t);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,a=i[0]-r[0],s=r.length===2&&i.length===2?i[1]-r[1]:-Math.floor(a*7/12),c=o.height===e.height&&o.midi!==null&&e.midi!==null&&e.step>o.step;return B([a,s],c).name}const Wn=Object.freeze(Object.defineProperty({__proto__:null,accToAlt:G,altToAcc:E,coordToInterval:B,coordToNote:F,decode:on,deprecate:g,distance:D,encode:en,fillStr:C,interval:f,isNamed:z,isPitch:q,note:m,stepToLetter:vn,tokenizeInterval:$n,tokenizeNote:rn,transpose:P},Symbol.toStringTag,{value:"Module"})),On=(n,t)=>Array(t+1).join(n),ue=/^(_{1,}|=|\^{1,}|)([abcdefgABCDEFG])([,']*)$/;function nt(n){const t=ue.exec(n);return t?[t[1],t[2],t[3]]:["","",""]}function W(n){const[t,e,o]=nt(n);if(e==="")return"";let r=4;for(let a=0;a96?e.toUpperCase()+i+(r+1):e+i+r}function tt(n){const t=m(n);if(t.empty||!t.oct&&t.oct!==0)return"";const{letter:e,acc:o,oct:r}=t,i=o[0]==="b"?o.replace(/b/g,"_"):o.replace(/#/g,"^"),a=r>4?e.toLowerCase():e,s=r===5?"":r>4?On("'",r-5):On(",",4-r);return i+a+s}function le(n,t){return tt(P(W(n),t))}function de(n,t){return D(W(n),W(t))}var Me={abcToScientificNotation:W,scientificToAbcNotation:tt,tokenize:nt,transpose:le,distance:de};function fe(n,t){const e=[];for(;t--;e[t]=t+n);return e}function Pe(n,t){const e=[];for(;t--;e[t]=n-t);return e}function pe(n,t){return nt===0||t)}function et(n){return n.map(e=>m(e)).filter(e=>!e.empty).sort((e,o)=>e.height-o.height).map(e=>e.name)}function ge(n){return et(n).filter((t,e,o)=>e===0||t!==o[e-1])}function be(n,t=Math.random){let e,o,r=n.length;for(;r;)e=Math.floor(t()*r--),o=n[r],n[r]=n[e],n[e]=o;return n}function ot(n){return n.length===0?[[]]:ot(n.slice(1)).reduce((t,e)=>t.concat(n.map((o,r)=>{const i=e.slice();return i.splice(r,0,n[0]),i})),[])}const Ae=Object.freeze(Object.defineProperty({__proto__:null,compact:ye,permutations:ot,range:pe,rotate:he,shuffle:be,sortedNoteNames:et,sortedUniqNoteNames:ge},Symbol.toStringTag,{value:"Module"}));function ve(n,t){const e=[];for(;t--;e[t]=t+n);return e}function $e(n,t){const e=[];for(;t--;e[t]=n-t);return e}function an(n,t){return nt===0||t)}function Ne(n,t=Math.random){let e,o,r=n.length;for(;r;)e=Math.floor(t()*r--),o=n[r],n[r]=n[e],n[e]=o;return n}function rt(n){return n.length===0?[[]]:rt(n.slice(1)).reduce((t,e)=>t.concat(n.map((o,r)=>{const i=e.slice();return i.splice(r,0,n[0]),i})),[])}var Ie={compact:Nn,permutations:rt,range:an,rotate:H,shuffle:Ne};const T={empty:!0,name:"",setNum:0,chroma:"000000000000",normalized:"000000000000",intervals:[]},In=n=>Number(n).toString(2),Fn=n=>parseInt(n,2),je=/^[01]{12}$/;function it(n){return je.test(n)}const Se=n=>typeof n=="number"&&n>=0&&n<=4095,Te=n=>n&&it(n.chroma),zn={[T.chroma]:T};function p(n){const t=it(n)?n:Se(n)?In(n):Array.isArray(n)?ze(n):Te(n)?n.chroma:T.chroma;return zn[t]=zn[t]||Fe(t)}const Ve=g("Pcset.pcset","Pcset.get",p),_e=n=>p(n).chroma,Ce=n=>p(n).intervals,we=n=>p(n).setNum,xe=["1P","2m","2M","3m","3M","4P","5d","5P","6m","6M","7m","7M"];function Ee(n){const t=[];for(let e=0;e<12;e++)n.charAt(e)==="1"&&t.push(xe[e]);return t}function De(){return an(2048,4095).map(In)}function jn(n,t=!0){const o=p(n).chroma.split("");return Nn(o.map((r,i)=>{const a=H(i,o);return t&&a[0]==="0"?null:a.join("")}))}function Re(n,t){return p(n).setNum===p(t).setNum}function sn(n){const t=p(n).setNum;return e=>{const o=p(e).setNum;return t&&t!==o&&(o&t)===o}}function cn(n){const t=p(n).setNum;return e=>{const o=p(e).setNum;return t&&t!==o&&(o|t)===o}}function at(n){const t=p(n);return e=>{const o=m(e);return t&&!o.empty&&t.chroma.charAt(o.chroma)==="1"}}function ke(n){const t=at(n);return e=>e.filter(t)}var st={get:p,chroma:_e,num:we,intervals:Ce,chromas:De,isSupersetOf:cn,isSubsetOf:sn,isNoteIncludedIn:at,isEqual:Re,filter:ke,modes:jn,pcset:Ve};function Oe(n){const t=n.split("");return t.map((e,o)=>H(o,t).join(""))}function Fe(n){const t=Fn(n),e=Oe(n).map(Fn).filter(i=>i>=2048).sort()[0],o=In(e),r=Ee(n);return{empty:!1,name:"",setNum:t,chroma:n,normalized:o,intervals:r}}function ze(n){if(n.length===0)return T.chroma;let t;const e=[0,0,0,0,0,0,0,0,0,0,0,0];for(let o=0;on.name).filter(n=>n)}function Le(){return R.map(n=>n.aliases[0]).filter(n=>n)}function Ue(){return Object.keys(j)}function k(){return R.slice()}const Xe=g("ChordType.entries","ChordType.all",k);function Ke(){R=[],j={}}function ct(n,t,e){const o=Ye(n),r={...p(n),name:e||"",quality:o,intervals:n,aliases:t};R.push(r),r.name&&(j[r.name]=r),j[r.setNum]=r,j[r.chroma]=r,r.aliases.forEach(i=>Qe(r,i))}function Qe(n,t){j[t]=n}function Ye(n){const t=e=>n.indexOf(e)!==-1;return t("5A")?"Augmented":t("3M")?"Major":t("5d")?"Diminished":t("3m")?"Minor":"Unknown"}qe.forEach(([n,t,e])=>ct(n.split(" "),e.split(" "),t));R.sort((n,t)=>n.setNum-t.setNum);var mt={names:He,symbols:Le,get:Sn,all:k,add:ct,removeAll:Ke,keys:Ue,entries:Xe,chordType:Be};const Ze=n=>{const t=n.reduce((e,o)=>{const r=m(o).chroma;return r!==void 0&&(e[r]=e[r]||m(o).name),e},{});return e=>t[e]};function Je(n){const t=n.map(o=>m(o).pc).filter(o=>o);return m.length===0?[]:We(t,1).filter(o=>o.weight).sort((o,r)=>r.weight-o.weight).map(o=>o.name)}function We(n,t){const e=n[0],o=m(e).chroma,r=Ze(n),i=jn(n,!1),a=[];return i.forEach((s,c)=>{k().filter(u=>u.chroma===s).forEach(u=>{const d=u.aliases[0],M=r(c);c!==o?a.push({weight:.5*t,name:`${M}${d}/${e}`}):a.push({weight:1*t,name:`${M}${d}`})})}),a}const no=[["1P 2M 3M 5P 6M","major pentatonic","pentatonic"],["1P 3M 4P 5P 7M","ionian pentatonic"],["1P 3M 4P 5P 7m","mixolydian pentatonic","indian"],["1P 2M 4P 5P 6M","ritusen"],["1P 2M 4P 5P 7m","egyptian"],["1P 3M 4P 5d 7m","neopolitan major pentatonic"],["1P 3m 4P 5P 6m","vietnamese 1"],["1P 2m 3m 5P 6m","pelog"],["1P 2m 4P 5P 6m","kumoijoshi"],["1P 2M 3m 5P 6m","hirajoshi"],["1P 2m 4P 5d 7m","iwato"],["1P 2m 4P 5P 7m","in-sen"],["1P 3M 4A 5P 7M","lydian pentatonic","chinese"],["1P 3m 4P 6m 7m","malkos raga"],["1P 3m 4P 5d 7m","locrian pentatonic","minor seven flat five pentatonic"],["1P 3m 4P 5P 7m","minor pentatonic","vietnamese 2"],["1P 3m 4P 5P 6M","minor six pentatonic"],["1P 2M 3m 5P 6M","flat three pentatonic","kumoi"],["1P 2M 3M 5P 6m","flat six pentatonic"],["1P 2m 3M 5P 6M","scriabin"],["1P 3M 5d 6m 7m","whole tone pentatonic"],["1P 3M 4A 5A 7M","lydian #5P pentatonic"],["1P 3M 4A 5P 7m","lydian dominant pentatonic"],["1P 3m 4P 5P 7M","minor #7M pentatonic"],["1P 3m 4d 5d 7m","super locrian pentatonic"],["1P 2M 3m 4P 5P 7M","minor hexatonic"],["1P 2A 3M 5P 5A 7M","augmented"],["1P 2M 3m 3M 5P 6M","major blues"],["1P 2M 4P 5P 6M 7m","piongio"],["1P 2m 3M 4A 6M 7m","prometheus neopolitan"],["1P 2M 3M 4A 6M 7m","prometheus"],["1P 2m 3M 5d 6m 7m","mystery #1"],["1P 2m 3M 4P 5A 6M","six tone symmetric"],["1P 2M 3M 4A 5A 7m","whole tone","messiaen's mode #1"],["1P 2m 4P 4A 5P 7M","messiaen's mode #5"],["1P 3m 4P 5d 5P 7m","minor blues","blues"],["1P 2M 3M 4P 5d 6m 7m","locrian major","arabian"],["1P 2m 3M 4A 5P 6m 7M","double harmonic lydian"],["1P 2M 3m 4P 5P 6m 7M","harmonic minor"],["1P 2m 2A 3M 4A 6m 7m","altered","super locrian","diminished whole tone","pomeroy"],["1P 2M 3m 4P 5d 6m 7m","locrian #2","half-diminished","aeolian b5"],["1P 2M 3M 4P 5P 6m 7m","mixolydian b6","melodic minor fifth mode","hindu"],["1P 2M 3M 4A 5P 6M 7m","lydian dominant","lydian b7","overtone"],["1P 2M 3M 4A 5P 6M 7M","lydian"],["1P 2M 3M 4A 5A 6M 7M","lydian augmented"],["1P 2m 3m 4P 5P 6M 7m","dorian b2","phrygian #6","melodic minor second mode"],["1P 2M 3m 4P 5P 6M 7M","melodic minor"],["1P 2m 3m 4P 5d 6m 7m","locrian"],["1P 2m 3m 4d 5d 6m 7d","ultralocrian","superlocrian bb7","superlocrian diminished"],["1P 2m 3m 4P 5d 6M 7m","locrian 6","locrian natural 6","locrian sharp 6"],["1P 2A 3M 4P 5P 5A 7M","augmented heptatonic"],["1P 2M 3m 4A 5P 6M 7m","dorian #4","ukrainian dorian","romanian minor","altered dorian"],["1P 2M 3m 4A 5P 6M 7M","lydian diminished"],["1P 2m 3m 4P 5P 6m 7m","phrygian"],["1P 2M 3M 4A 5A 7m 7M","leading whole tone"],["1P 2M 3M 4A 5P 6m 7m","lydian minor"],["1P 2m 3M 4P 5P 6m 7m","phrygian dominant","spanish","phrygian major"],["1P 2m 3m 4P 5P 6m 7M","balinese"],["1P 2m 3m 4P 5P 6M 7M","neopolitan major"],["1P 2M 3m 4P 5P 6m 7m","aeolian","minor"],["1P 2M 3M 4P 5P 6m 7M","harmonic major"],["1P 2m 3M 4P 5P 6m 7M","double harmonic major","gypsy"],["1P 2M 3m 4P 5P 6M 7m","dorian"],["1P 2M 3m 4A 5P 6m 7M","hungarian minor"],["1P 2A 3M 4A 5P 6M 7m","hungarian major"],["1P 2m 3M 4P 5d 6M 7m","oriental"],["1P 2m 3m 3M 4A 5P 7m","flamenco"],["1P 2m 3m 4A 5P 6m 7M","todi raga"],["1P 2M 3M 4P 5P 6M 7m","mixolydian","dominant"],["1P 2m 3M 4P 5d 6m 7M","persian"],["1P 2M 3M 4P 5P 6M 7M","major","ionian"],["1P 2m 3M 5d 6m 7m 7M","enigmatic"],["1P 2M 3M 4P 5A 6M 7M","major augmented","major #5","ionian augmented","ionian #5"],["1P 2A 3M 4A 5P 6M 7M","lydian #9"],["1P 2m 2M 4P 4A 5P 6m 7M","messiaen's mode #4"],["1P 2m 3M 4P 4A 5P 6m 7M","purvi raga"],["1P 2m 3m 3M 4P 5P 6m 7m","spanish heptatonic"],["1P 2M 3M 4P 5P 6M 7m 7M","bebop"],["1P 2M 3m 3M 4P 5P 6M 7m","bebop minor"],["1P 2M 3M 4P 5P 5A 6M 7M","bebop major"],["1P 2m 3m 4P 5d 5P 6m 7m","bebop locrian"],["1P 2M 3m 4P 5P 6m 7m 7M","minor bebop"],["1P 2M 3m 4P 5d 6m 6M 7M","diminished","whole-half diminished"],["1P 2M 3M 4P 5d 5P 6M 7M","ichikosucho"],["1P 2M 3m 4P 5P 6m 6M 7M","minor six diminished"],["1P 2m 3m 3M 4A 5P 6M 7m","half-whole diminished","dominant diminished","messiaen's mode #2"],["1P 3m 3M 4P 5P 6M 7m 7M","kafi raga"],["1P 2M 3M 4P 4A 5A 6A 7M","messiaen's mode #6"],["1P 2M 3m 3M 4P 5d 5P 6M 7m","composite blues"],["1P 2M 3m 3M 4A 5P 6m 7m 7M","messiaen's mode #3"],["1P 2m 2M 3m 4P 4A 5P 6m 6M 7M","messiaen's mode #7"],["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M","chromatic"]],to={...T,intervals:[],aliases:[]};let mn=[],S={};function ut(){return mn.map(n=>n.name)}function un(n){return S[n]||to}const eo=g("ScaleDictionary.scaleType","ScaleType.get",un);function L(){return mn.slice()}const oo=g("ScaleDictionary.entries","ScaleType.all",L);function ro(){return Object.keys(S)}function io(){mn=[],S={}}function lt(n,t,e=[]){const o={...p(n),name:t,intervals:n,aliases:e};return mn.push(o),S[o.name]=o,S[o.setNum]=o,S[o.chroma]=o,o.aliases.forEach(r=>ao(o,r)),o}function ao(n,t){S[t]=n}no.forEach(([n,t,...e])=>lt(n.split(" "),t,e));var dt={names:ut,get:un,all:L,add:lt,removeAll:io,keys:ro,entries:oo,scaleType:eo};const gn={empty:!0,name:"",symbol:"",root:"",rootDegree:0,type:"",tonic:null,setNum:NaN,quality:"Unknown",chroma:"",normalized:"",aliases:[],notes:[],intervals:[]},so=/^(6|64|7|9|11|13)$/;function ln(n){const[t,e,o,r]=rn(n);return t===""?["",n]:t==="A"&&r==="ug"?["","aug"]:!r&&(o==="4"||o==="5")?[t+e,o]:so.test(o)?[t+e,o+r]:[t+e+o,r]}function U(n){if(n==="")return gn;if(Array.isArray(n)&&n.length===2)return Z(n[1],n[0]);{const[t,e]=ln(n),o=Z(e,t);return o.empty?Z(n):o}}function Z(n,t,e){const o=Sn(n),r=m(t||""),i=m(e||"");if(o.empty||t&&r.empty||e&&i.empty)return gn;const a=D(r.pc,i.pc),s=o.intervals.indexOf(a)+1;if(!i.empty&&!s)return gn;const c=Array.from(o.intervals);for(let M=1;MP(r,M));n=o.aliases.indexOf(n)!==-1?n:o.aliases[0];const u=`${r.empty?"":r.pc}${n}${i.empty||s<=1?"":"/"+i.pc}`,d=`${t?r.pc+" ":""}${o.name}${s>1&&e?" over "+i.pc:""}`;return{...o,name:d,symbol:u,type:o.name,root:i.name,intervals:c,rootDegree:s,tonic:r.name,notes:l}}const co=g("Chord.chord","Chord.get",U);function mo(n,t){const[e,o]=ln(n);return e?P(e,t)+o:n}function uo(n){const t=U(n),e=cn(t.chroma);return L().filter(o=>e(o.chroma)).map(o=>o.name)}function lo(n){const t=U(n),e=cn(t.chroma);return k().filter(o=>e(o.chroma)).map(o=>t.tonic+o.aliases[0])}function Mo(n){const t=U(n),e=sn(t.chroma);return k().filter(o=>e(o.chroma)).map(o=>t.tonic+o.aliases[0])}var fo={getChord:Z,get:U,detect:Je,chordScales:uo,extended:lo,reduced:Mo,tokenize:ln,transpose:mo,chord:co};const Po=[[.125,"dl",["large","duplex longa","maxima","octuple","octuple whole"]],[.25,"l",["long","longa"]],[.5,"d",["double whole","double","breve"]],[1,"w",["whole","semibreve"]],[2,"h",["half","minim"]],[4,"q",["quarter","crotchet"]],[8,"e",["eighth","quaver"]],[16,"s",["sixteenth","semiquaver"]],[32,"t",["thirty-second","demisemiquaver"]],[64,"sf",["sixty-fourth","hemidemisemiquaver"]],[128,"h",["hundred twenty-eighth"]],[256,"th",["two hundred fifty-sixth"]]],dn=[];Po.forEach(([n,t,e])=>$o(n,t,e));const po={empty:!0,name:"",value:0,fraction:[0,0],shorthand:"",dots:"",names:[]};function ho(){return dn.reduce((n,t)=>(t.names.forEach(e=>n.push(e)),n),[])}function yo(){return dn.map(n=>n.shorthand)}const go=/^([^.]+)(\.*)$/;function Tn(n){const[t,e,o]=go.exec(n)||[],r=dn.find(s=>s.shorthand===e||s.names.includes(e));if(!r)return po;const i=No(r.fraction,o.length),a=i[0]/i[1];return{...r,name:n,dots:o,value:a,fraction:i}}const bo=n=>Tn(n).value,Ao=n=>Tn(n).fraction;var vo={names:ho,shorthands:yo,get:Tn,value:bo,fraction:Ao};function $o(n,t,e){dn.push({empty:!1,dots:"",name:"",value:1/n,fraction:n<1?[1/n,1]:[1,n],shorthand:t,names:e})}function No(n,t){const e=Math.pow(2,t);let o=n[0]*e,r=n[1]*e;const i=o;for(let a=0;af(n).name,So=n=>f(n).semitones,To=n=>f(n).q,Vo=n=>f(n).num;function ft(n){const t=f(n);return t.empty?"":t.simple+t.q}function _o(n){const t=f(n);if(t.empty)return"";const e=(7-t.step)%7,o=t.type==="perfectable"?-t.alt:-(t.alt+1);return f({step:e,alt:o,oct:t.oct,dir:t.dir}).name}const Co=[1,2,2,3,3,4,5,5,6,6,7,7],wo="P m M m M P d P m M m M".split(" ");function xo(n){const t=n<0?-1:1,e=Math.abs(n),o=e%12,r=Math.floor(e/12);return t*(Co[o]+7*r)+wo[o]}const Eo=D,Pt=ht((n,t)=>[n[0]+t[0],n[1]+t[1]]),Do=n=>t=>Pt(n,t),Ro=ht((n,t)=>[n[0]-t[0],n[1]-t[1]]);function pt(n,t){const e=Mt(n);if(e.empty)return"";const[o,r,i]=e.coord;return B([o+t,r,i]).name}var bn={names:Io,get:Mt,name:jo,num:Vo,semitones:So,quality:To,fromSemitones:xo,distance:Eo,invert:_o,simplify:ft,add:Pt,addTo:Do,substract:Ro,transposeFifths:pt};function ht(n){return(t,e)=>{const o=f(t).coord,r=f(e).coord;if(o&&r){const i=n(o,r);return B(i).name}}}function yt(n){return+n>=0&&+n<=127}function gt(n){if(yt(n))return+n;const t=m(n);return t.empty?null:t.midi}function ko(n,t=440){return Math.pow(2,(n-69)/12)*t}const Oo=Math.log(2),Fo=Math.log(440);function Vn(n){const t=12*(Math.log(n)-Fo)/Oo+69;return Math.round(t*100)/100}const zo="C C# D D# E F F# G G# A A# B".split(" "),qo="C Db D Eb E F Gb G Ab A Bb B".split(" ");function I(n,t={}){if(isNaN(n)||n===-1/0||n===1/0)return"";n=Math.round(n);const o=(t.sharps===!0?zo:qo)[n%12];if(t.pitchClass)return o;const r=Math.floor(n/12)-1;return o+r}var Go={isMidi:yt,toMidi:gt,midiToFreq:ko,midiToNoteName:I,freqToMidi:Vn};const Bo=["C","D","E","F","G","A","B"],bt=n=>n.name,At=n=>n.map(m).filter(t=>!t.empty);function Ho(n){return n===void 0?Bo.slice():Array.isArray(n)?At(n).map(bt):[]}const y=m,Lo=n=>y(n).name,Uo=n=>y(n).pc,Xo=n=>y(n).acc,Ko=n=>y(n).oct,Qo=n=>y(n).midi,Yo=n=>y(n).freq,Zo=n=>y(n).chroma;function vt(n){return I(n)}function Jo(n){return I(Vn(n))}function Wo(n){return I(Vn(n),{sharps:!0})}function nr(n){return I(n,{sharps:!0})}const _n=P,tr=P,$t=n=>t=>_n(t,n),er=$t,Nt=n=>t=>_n(n,t),or=Nt;function nn(n,t){const e=y(n);if(e.empty)return"";const[o,r]=e.coord;return F(r===void 0?[o+t]:[o+t,r]).name}const rr=nn,Cn=(n,t)=>n.height-t.height,ir=(n,t)=>t.height-n.height;function It(n,t){return t=t||Cn,At(n).sort(t).map(bt)}function jt(n){return It(n,Cn).filter((t,e,o)=>e===0||t!==o[e-1])}const ar=n=>{const t=y(n);return t.empty?"":I(t.midi||t.chroma,{sharps:t.alt>0,pitchClass:t.midi===null})};function St(n,t){const e=y(n);if(e.empty)return"";const o=y(t||I(e.midi||e.chroma,{sharps:e.alt<0,pitchClass:!0}));if(o.empty||o.chroma!==e.chroma)return"";if(e.oct===void 0)return o.pc;const r=e.chroma-e.alt,i=o.chroma-o.alt,a=r>11||i<0?-1:r<0||i>11?1:0,s=e.oct+a;return o.pc+s}var w={names:Ho,get:y,name:Lo,pitchClass:Uo,accidentals:Xo,octave:Ko,midi:Qo,ascending:Cn,descending:ir,sortedNames:It,sortedUniqNames:jt,fromMidi:vt,fromMidiSharps:nr,freq:Yo,fromFreq:Jo,fromFreqSharps:Wo,chroma:Zo,transpose:_n,tr,transposeBy:$t,trBy:er,transposeFrom:Nt,trFrom:or,transposeFifths:nn,trFifths:rr,simplify:ar,enharmonic:St};const Tt={empty:!0,name:"",chordType:""},qn={};function $(n){return typeof n=="string"?qn[n]||(qn[n]=Mr(n)):typeof n=="number"?$(Mn[n]||""):q(n)?mr(n):z(n)?$(n.name):Tt}const sr=g("RomanNumeral.romanNumeral","RomanNumeral.get",$);function cr(n=!0){return(n?Mn:dr).slice()}function mr(n){return $(E(n.alt)+Mn[n.step])}const ur=/^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;function lr(n){return ur.exec(n)||["","","",""]}const Vt="I II III IV V VI VII",Mn=Vt.split(" "),dr=Vt.toLowerCase().split(" ");function Mr(n){const[t,e,o,r]=lr(n);if(!o)return Tt;const i=o.toUpperCase(),a=Mn.indexOf(i),s=G(e),c=1;return{empty:!1,name:t,roman:o,interval:f({step:a,alt:s,dir:c}).name,acc:e,chordType:r,alt:s,step:a,major:o===i,oct:0,dir:c}}var fr={names:cr,get:$,romanNumeral:sr};const b=Object.freeze([]),_t={type:"major",tonic:"",alteration:0,keySignature:""},J={tonic:"",grades:b,intervals:b,scale:b,chords:b,chordsHarmonicFunction:b,chordScales:b},Pr={..._t,...J,type:"major",minorRelative:"",scale:b,secondaryDominants:b,secondaryDominantsMinorRelative:b,substituteDominants:b,substituteDominantsMinorRelative:b},pr={..._t,type:"minor",relativeMajor:"",natural:J,harmonic:J,melodic:J},Gn=(n,t,e="")=>t.map((o,r)=>`${n[r]}${e}${o}`);function fn(n,t,e,o){return r=>{const i=n.map(s=>$(s).interval||""),a=i.map(s=>P(r,s));return{tonic:r,grades:n,intervals:i,scale:a,chords:Gn(a,t),chordsHarmonicFunction:e.slice(),chordScales:Gn(a,o," ")}}}const Ct=(n,t)=>{const e=m(n),o=m(t);return e.empty||o.empty?0:o.coord[0]-e.coord[0]},hr=fn("I II III IV V VI VII".split(" "),"maj7 m7 m7 maj7 7 m7 m7b5".split(" "),"T SD T SD D T D".split(" "),"major,dorian,phrygian,lydian,mixolydian,minor,locrian".split(",")),yr=fn("I II bIII IV V bVI bVII".split(" "),"m7 m7b5 maj7 m7 m7 maj7 7".split(" "),"T SD T SD D SD SD".split(" "),"minor,locrian,major,dorian,phrygian,lydian,mixolydian".split(",")),gr=fn("I II bIII IV V bVI VII".split(" "),"mMaj7 m7b5 +maj7 m7 7 maj7 o7".split(" "),"T SD T SD D SD D".split(" "),"harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian".split(",")),br=fn("I II bIII IV V VI VII".split(" "),"m6 m7 +maj7 7 7 m7b5 m7b5".split(" "),"T SD T SD D ".split(" "),"melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered".split(","));function Ar(n){const t=m(n).pc;if(!t)return Pr;const e=hr(t),o=Ct("C",t),r=i=>{const a=$(i);return a.empty?"":P(n,a.interval)+a.chordType};return{...e,type:"major",minorRelative:P(t,"-3m"),alteration:o,keySignature:E(o),secondaryDominants:"- VI7 VII7 I7 II7 III7 -".split(" ").map(r),secondaryDominantsMinorRelative:"- IIIm7b5 IV#m7 Vm7 VIm7 VIIm7b5 -".split(" ").map(r),substituteDominants:"- bIII7 IV7 bV7 bVI7 bVII7 -".split(" ").map(r),substituteDominantsMinorRelative:"- IIIm7 Im7 IIbm7 VIm7 IVm7 -".split(" ").map(r)}}function vr(n){const t=m(n).pc;if(!t)return pr;const e=Ct("C",t)-3;return{type:"minor",tonic:t,relativeMajor:P(t,"3m"),alteration:e,keySignature:E(e),natural:yr(t),harmonic:gr(t),melodic:br(t)}}function $r(n){return typeof n=="number"?nn("C",n):typeof n=="string"&&/^b+|#+$/.test(n)?nn("C",G(n)):null}var Nr={majorKey:Ar,majorTonicFromKeySignature:$r,minorKey:vr};const wn=[[0,2773,0,"ionian","","Maj7","major"],[1,2902,2,"dorian","m","m7"],[2,3418,4,"phrygian","m","m7"],[3,2741,-1,"lydian","","Maj7"],[4,2774,1,"mixolydian","","7"],[5,2906,3,"aeolian","m","m7","minor"],[6,3434,5,"locrian","dim","m7b5"]],Bn={...T,name:"",alt:0,modeNum:NaN,triad:"",seventh:"",aliases:[]},xn=wn.map(Tr),An={};xn.forEach(n=>{An[n.name]=n,n.aliases.forEach(t=>{An[t]=n})});function V(n){return typeof n=="string"?An[n.toLowerCase()]||Bn:n&&n.name?V(n.name):Bn}const Ir=g("Mode.mode","Mode.get",V);function wt(){return xn.slice()}const jr=g("Mode.mode","Mode.all",wt);function Sr(){return xn.map(n=>n.name)}function Tr(n){const[t,e,o,r,i,a,s]=n,c=s?[s]:[],l=Number(e).toString(2);return{empty:!1,intervals:un(r).intervals,modeNum:t,chroma:l,normalized:l,name:r,setNum:e,alt:o,triad:i,seventh:a,aliases:c}}function Vr(n,t){return V(n).intervals.map(e=>P(t,e))}function xt(n){return(t,e)=>{const o=V(t);if(o.empty)return[];const r=H(o.modeNum,n),i=o.intervals.map(a=>P(e,a));return r.map((a,s)=>i[s]+a)}}const _r=xt(wn.map(n=>n[4])),Cr=xt(wn.map(n=>n[5]));function Et(n,t){const e=V(t),o=V(n);return e.empty||o.empty?"":ft(pt("1P",o.alt-e.alt))}function wr(n,t,e){return P(e,Et(n,t))}var xr={get:V,names:Sr,all:wt,distance:Et,relativeTonic:wr,notes:Vr,triads:_r,seventhChords:Cr,entries:jr,mode:Ir};function Er(n,t){return t.map($).map(o=>P(n,f(o))+o.chordType)}function Dr(n,t){return t.map(e=>{const[o,r]=ln(e),i=D(n,o);return $(f(i)).name+r})}var Rr={fromRomanNumerals:Er,toRomanNumerals:Dr};function Dt(n){const t=Nn(n.map(gt));return!n.length||t.length!==n.length?[]:t.reduce((e,o)=>{const r=e[e.length-1];return e.concat(an(r,o).slice(1))},[t[0]])}function kr(n,t){return Dt(n).map(e=>I(e,t))}var Or={numeric:Dt,chromatic:kr};const Fr={empty:!0,name:"",type:"",tonic:null,setNum:NaN,chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function Rt(n){if(typeof n!="string")return["",""];const t=n.indexOf(" "),e=m(n.substring(0,t));if(e.empty){const r=m(n);return r.empty?["",n]:[r.name,""]}const o=n.substring(e.name.length+1);return[e.name,o.length?o:""]}const zr=ut;function N(n){const t=Array.isArray(n)?n:Rt(n),e=m(t[0]).name,o=un(t[1]);if(o.empty)return Fr;const r=o.name,i=e?o.intervals.map(s=>P(e,s)):[],a=e?e+" "+r:r;return{...o,name:a,type:r,tonic:e,notes:i}}const qr=g("Scale.scale","Scale.get",N);function Gr(n){const t=N(n),e=sn(t.chroma);return k().filter(o=>e(o.chroma)).map(o=>o.aliases[0])}function Br(n){const t=N(n),e=cn(t.chroma);return L().filter(o=>e(o.chroma)).map(o=>o.name)}function Hr(n){const t=sn(N(n).chroma);return L().filter(e=>t(e.chroma)).map(e=>e.name)}function kt(n){const t=n.map(r=>m(r).pc).filter(r=>r),e=t[0],o=jt(t);return H(o.indexOf(e),o)}function Lr(n){const t=N(n);if(t.empty)return[];const e=t.tonic?t.notes:t.intervals;return jn(t.chroma).map((o,r)=>{const i=N(o).name;return i?[e[r],i]:["",""]}).filter(o=>o[0])}function Ur(n){const t=Array.isArray(n)?kt(n):N(n).notes,e=t.map(o=>m(o).chroma);return o=>{const r=m(typeof o=="number"?vt(o):o),i=r.height;if(i===void 0)return;const a=i%12,s=e.indexOf(a);if(s!==-1)return St(r.name,t[s])}}function Xr(n){const t=Ur(n);return(e,o)=>{const r=m(e).height,i=m(o).height;return r===void 0||i===void 0?[]:an(r,i).map(t).filter(a=>a)}}var tn={get:N,names:zr,extended:Br,modeNames:Lr,reduced:Hr,scaleChords:Gr,scaleNotes:kt,tokenize:Rt,rangeOf:Xr,scale:qr};const Kr={empty:!0,name:"",upper:void 0,lower:void 0,type:void 0,additive:[]},Qr=["4/4","3/4","2/4","2/2","12/8","9/8","6/8","3/8"];function Yr(){return Qr.slice()}const Zr=/^(\d?\d(?:\+\d)*)\/(\d)$/,Hn=new Map;function Jr(n){const t=Hn.get(n);if(t)return t;const e=ni(En(n));return Hn.set(n,e),e}function En(n){if(typeof n=="string"){const[i,a,s]=Zr.exec(n)||[];return En([a,s])}const[t,e]=n,o=+e;if(typeof t=="number")return[t,o];const r=t.split("+").map(i=>+i);return r.length===1?[r[0],o]:[r,o]}var Wr={names:Yr,parse:En,get:Jr};function ni([n,t]){const e=Array.isArray(n)?n.reduce((s,c)=>s+c,0):n,o=t;if(e===0||o===0)return Kr;const r=Array.isArray(n)?`${n.join("+")}/${t}`:`${n}/${t}`,i=Array.isArray(n)?n:[],a=o===4||o===2?"simple":o===8&&e%3===0?"compound":"irregular";return{empty:!1,name:r,type:a,upper:e,lower:o,additive:i}}const ti=Wn,ei=st,oi=mt,ri=dt,ii=Object.freeze(Object.defineProperty({__proto__:null,Array:Ae,Core:Wn,ChordDictionary:oi,PcSet:ei,ScaleDictionary:ri,Tonal:ti,AbcNotation:Me,Chord:fo,ChordType:mt,Collection:Ie,DurationValue:vo,Interval:bn,Key:Nr,Midi:Go,Mode:xr,Note:w,Pcset:st,Progression:Rr,Range:Or,RomanNumeral:fr,Scale:tn,ScaleType:dt,TimeSignature:Wr,accToAlt:G,altToAcc:E,coordToInterval:B,coordToNote:F,decode:on,deprecate:g,distance:D,encode:en,fillStr:C,interval:f,isNamed:z,isPitch:q,note:m,stepToLetter:vn,tokenizeInterval:$n,tokenizeNote:rn,transpose:P},Symbol.toStringTag,{value:"Module"}));function Ot(n,t,e){let[o,r]=tn.tokenize(n),{notes:i}=tn.get(`${o} ${r}`);if(i=i.map(h=>w.get(h).pc),t=Number(t),isNaN(t))throw new Error(`scale offset "${t}" not a number`);const{pc:a,oct:s=3}=w.get(e),c=i.indexOf(a);if(c===-1)throw new Error(`note "${e}" is not in scale "${n}"`);let l=c,u=s,d=a;const M=Math.sign(t);for(;Math.abs(l-c)0&&d[0]==="C"&&(u+=M)}return d+u}_.prototype._transpose=function(n){return this._withHap(t=>{const e=isNaN(Number(n))?String(n):bn.fromSemitones(n);if(typeof t.value=="number"){const o=typeof e=="string"?bn.semitones(e)||0:e;return t.withValue(()=>t.value+o)}return t.withValue(()=>w.simplify(w.transpose(t.value,e)))})};_.prototype._scaleTranspose=function(n){return this._withHap(t=>{if(!t.context.scale)throw new Error("can only use scaleTranspose after .scale");if(typeof t.value!="string")throw new Error("can only use scaleTranspose with notes");return t.withValue(()=>Ot(t.context.scale,Number(n),t.value))})};_.prototype._scale=function(n){return this._withHap(t=>{let e=t.value;const o=Number(e);if(!isNaN(o)){let[r,i]=tn.tokenize(n);const{pc:a,oct:s=3}=w.get(r);e=Ot(a+" "+i,o,a+s)}return t.withValue(()=>e).setContext({...t.context,scale:n})})};_.prototype.define("transpose",(n,t)=>t.transpose(n),{composable:!0,patternified:!0});_.prototype.define("scale",(n,t)=>t.scale(n),{composable:!0,patternified:!0});_.prototype.define("scaleTranspose",(n,t)=>t.scaleTranspose(n),{composable:!0,patternified:!0});var Ft={},hn={},X={};X.__esModule=!0;X.getBestVoicing=void 0;function ai(n){var t=n.chord,e=n.range,o=n.finder,r=n.picker,i=n.lastVoicing,a=o(t,e);return a.length?r(a,i):[]}X.getBestVoicing=ai;var O={};const zt=Ut(ii);var K={};K.__esModule=!0;K.tokenizeChord=void 0;function si(n){var t=(n||"").match(/^([A-G][b#]*)([^\/]*)[\/]?([A-G][b#]*)?$/);return t?t.slice(1):[]}K.tokenizeChord=si;var Ln;function ci(){if(Ln)return O;Ln=1,O.__esModule=!0,O.voicingsInRange=void 0;var n=zt,t=qt(),e=K;function o(r,i,a){i===void 0&&(i=t.lefthand),a===void 0&&(a=["D3","A4"]);var s=(0,e.tokenizeChord)(r),c=s[0],l=s[1];if(!i[l])return[];var u=i[l].map(function(M){return M.split(" ")}),d=n.Range.chromatic(a);return u.reduce(function(M,h){var A=h.map(function(v){return n.Interval.substract(v,h[0])}),Q=n.Note.transpose(c,h[0]),Gt=d.filter(function(v){return n.Note.chroma(v)===n.Note.chroma(Q)}).filter(function(v){return n.Note.midi(n.Note.transpose(v,A[A.length-1]))<=n.Note.midi(a[1])}).map(function(v){return n.Note.enharmonic(v,Q)}),Bt=Gt.map(function(v){return A.map(function(Ht){return n.Note.transpose(v,Ht)})});return M.concat(Bt)},[])}return O.voicingsInRange=o,O}var Un;function qt(){return Un||(Un=1,function(n){var t=Y&&Y.__assign||function(){return t=Object.assign||function(s){for(var c,l=1,u=arguments.length;lui({chord:n,dictionary:di,range:e,picker:li,lastVoicing:t}),x=_;x.prototype.fmapNested=function(n){return new x(t=>this.query(t).map(e=>Kt(n(e)).query(t).map(o=>new Qt(e.whole,e.part,o.value,o.context))).flat())};x.prototype.voicings=function(n){let t;return n!=null&&n.length||(n=["F3","A4"]),this.fmapNested(e=>(t=Mi(e.value,t,n),Yt(...t)._withContext(()=>({locations:e.context.locations||[]}))))};x.prototype._rootNotes=function(n=2){return this.fmap(t=>{const[e,o]=t.match(/^([a-gA-G][b#]?).*$/);return o+n})};x.prototype.define("voicings",(n,t)=>t.voicings(n),{composable:!0});x.prototype.define("rootNotes",(n,t)=>t.rootNotes(n),{composable:!0,patternified:!0}); diff --git a/packages/core/examples/vite-vanilla-repl/dist/assets/index.ecddf978.js b/packages/core/examples/vite-vanilla-repl/dist/assets/index.ecddf978.js deleted file mode 100644 index 7e53038e..00000000 --- a/packages/core/examples/vite-vanilla-repl/dist/assets/index.ecddf978.js +++ /dev/null @@ -1 +0,0 @@ -import{g as s,f as d,i as t,n as r,l as u,j as o,d as f,k as p,r as g,s as i,w as l,e as m}from"./index.4cbc0a10.js";export{s as getAudioContext,d as getCachedBuffer,t as getLoadedBuffer,r as getLoadedSamples,u as loadBuffer,o as loadGithubSamples,f as panic,p as resetLoadedSamples,g as reverseBuffer,i as samples,l as webaudioOutput,m as webaudioOutputTrigger}; diff --git a/packages/core/examples/vite-vanilla-repl/dist/index.html b/packages/core/examples/vite-vanilla-repl/dist/index.html deleted file mode 100644 index 614a6b6c..00000000 --- a/packages/core/examples/vite-vanilla-repl/dist/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - Vite Vanilla Strudel REPL - - - -
- -
- -
- - - diff --git a/packages/superdough/example/index.html b/packages/superdough/example/index.html deleted file mode 100644 index 806cb2f1..00000000 --- a/packages/superdough/example/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - Superdough Example - - - - - - - - diff --git a/packages/superdough/example/main.js b/packages/superdough/example/main.js deleted file mode 100644 index 7b74fb40..00000000 --- a/packages/superdough/example/main.js +++ /dev/null @@ -1,25 +0,0 @@ -import { superdough, samples, initAudioOnFirstClick, registerSynthSounds } from 'superdough'; - -const init = Promise.all([ - initAudioOnFirstClick(), - samples('github:tidalcycles/Dirt-Samples/master'), - registerSynthSounds(), -]); - -const loop = (t = 0) => { - // superdough(value, time, duration) - superdough({ s: 'bd', delay: 0.5 }, t); - superdough({ note: 'g1', s: 'sawtooth', cutoff: 600, resonance: 8 }, t, 0.125); - superdough({ note: 'g2', s: 'sawtooth', cutoff: 600, resonance: 8 }, t + 0.25, 0.125); - superdough({ s: 'hh' }, t + 0.25); - superdough({ s: 'sd', room: 0.5 }, t + 0.5); - superdough({ s: 'hh' }, t + 0.75); -}; - -document.getElementById('play').addEventListener('click', async () => { - await init; - let t = 0.1; - while (t < 16) { - loop(t++); - } -}); diff --git a/packages/web/examples/minimal.html b/packages/web/examples/minimal.html deleted file mode 100644 index 58487009..00000000 --- a/packages/web/examples/minimal.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/packages/web/examples/samples.html b/packages/web/examples/samples.html deleted file mode 100644 index 8b967ec2..00000000 --- a/packages/web/examples/samples.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f26dd289..5b724f74 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -73,6 +73,76 @@ importers: specifier: ^0.33.0 version: 0.33.0(@vitest/ui@0.28.0) + examples/codemirror-repl: + dependencies: + '@strudel.cycles/core': + specifier: workspace:* + version: link:../../packages/core + '@strudel.cycles/mini': + specifier: workspace:* + version: link:../../packages/mini + '@strudel.cycles/soundfonts': + specifier: workspace:* + version: link:../../packages/soundfonts + '@strudel.cycles/tonal': + specifier: workspace:* + version: link:../../packages/tonal + '@strudel.cycles/transpiler': + specifier: workspace:* + version: link:../../packages/transpiler + '@strudel.cycles/webaudio': + specifier: workspace:* + version: link:../../packages/webaudio + '@strudel/codemirror': + specifier: workspace:* + version: link:../../packages/codemirror + devDependencies: + vite: + specifier: ^4.3.2 + version: 4.5.0(@types/node@18.16.3) + + examples/headless-repl: + dependencies: + '@strudel/web': + specifier: workspace:* + version: link:../../packages/web + devDependencies: + vite: + specifier: ^4.3.2 + version: 4.5.0(@types/node@18.16.3) + + examples/minimal-repl: + dependencies: + '@strudel.cycles/core': + specifier: workspace:* + version: link:../../packages/core + '@strudel.cycles/mini': + specifier: workspace:* + version: link:../../packages/mini + '@strudel.cycles/tonal': + specifier: workspace:* + version: link:../../packages/tonal + '@strudel.cycles/transpiler': + specifier: workspace:* + version: link:../../packages/transpiler + '@strudel.cycles/webaudio': + specifier: workspace:* + version: link:../../packages/webaudio + devDependencies: + vite: + specifier: ^4.3.3 + version: 4.5.0(@types/node@18.16.3) + + examples/superdough: + dependencies: + superdough: + specifier: workspace:* + version: link:../../packages/superdough + devDependencies: + vite: + specifier: ^4.4.5 + version: 4.5.0(@types/node@18.16.3) + packages/codemirror: dependencies: '@codemirror/autocomplete': @@ -141,56 +211,6 @@ importers: specifier: ^0.33.0 version: 0.33.0(@vitest/ui@0.28.0) - packages/core/examples/vite-vanilla-repl: - dependencies: - '@strudel.cycles/core': - specifier: workspace:* - version: link:../.. - '@strudel.cycles/mini': - specifier: workspace:* - version: link:../../../mini - '@strudel.cycles/tonal': - specifier: workspace:* - version: link:../../../tonal - '@strudel.cycles/transpiler': - specifier: workspace:* - version: link:../../../transpiler - '@strudel.cycles/webaudio': - specifier: workspace:* - version: link:../../../webaudio - devDependencies: - vite: - specifier: ^4.3.3 - version: 4.3.3 - - packages/core/examples/vite-vanilla-repl-cm6: - dependencies: - '@strudel.cycles/core': - specifier: workspace:* - version: link:../.. - '@strudel.cycles/mini': - specifier: workspace:* - version: link:../../../mini - '@strudel.cycles/soundfonts': - specifier: workspace:* - version: link:../../../soundfonts - '@strudel.cycles/tonal': - specifier: workspace:* - version: link:../../../tonal - '@strudel.cycles/transpiler': - specifier: workspace:* - version: link:../../../transpiler - '@strudel.cycles/webaudio': - specifier: workspace:* - version: link:../../../webaudio - '@strudel/codemirror': - specifier: workspace:* - version: link:../../../codemirror - devDependencies: - vite: - specifier: ^4.3.2 - version: 4.3.3 - packages/csound: dependencies: '@csound/browser': @@ -320,7 +340,7 @@ importers: devDependencies: vite: specifier: ^4.3.3 - version: 4.5.0 + version: 4.5.0(@types/node@18.16.3) packages/serial: dependencies: @@ -364,16 +384,6 @@ importers: specifier: ^4.3.3 version: 4.3.3 - packages/superdough/example: - dependencies: - superdough: - specifier: workspace:* - version: link:.. - devDependencies: - vite: - specifier: ^4.4.5 - version: 4.4.5(@types/node@18.16.3) - packages/tonal: dependencies: '@strudel.cycles/core': @@ -443,16 +453,6 @@ importers: specifier: ^4.3.3 version: 4.3.3 - packages/web/examples/repl-example: - dependencies: - '@strudel/web': - specifier: workspace:* - version: link:../.. - devDependencies: - vite: - specifier: ^4.3.2 - version: 4.3.3 - packages/webaudio: dependencies: '@strudel.cycles/core': @@ -10201,12 +10201,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - /nanoid@4.0.2: resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} engines: {node: ^14 || ^16 || >=18} @@ -11355,7 +11349,6 @@ packages: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} @@ -11364,15 +11357,7 @@ packages: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - - /postcss@8.4.32: - resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true + dev: false /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} @@ -13807,41 +13792,6 @@ packages: fsevents: 2.3.3 dev: true - /vite@4.5.0: - resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.18.20 - postcss: 8.4.32 - rollup: 3.28.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /vite@4.5.0(@types/node@18.16.3): resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -13872,7 +13822,7 @@ packages: dependencies: '@types/node': 18.16.3 esbuild: 0.18.20 - postcss: 8.4.31 + postcss: 8.4.27 rollup: 3.28.0 optionalDependencies: fsevents: 2.3.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d60faf4e..ea7b6879 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,8 +1,5 @@ packages: # all packages in direct subdirs of packages/ - "packages/*" + - "examples/*" - "website/" - - "packages/core/examples/vite-vanilla-repl" - - "packages/core/examples/vite-vanilla-repl-cm6" - - "packages/web/examples/repl-example" - - "packages/superdough/example"