From 84c215626496615601eaadebcfd58f0a315bb2c2 Mon Sep 17 00:00:00 2001 From: davay Date: Mon, 21 Aug 2023 21:35:03 +0700 Subject: [PATCH] deploy --- 404.html | 2 +- README.html | 2 +- assets/index.md.41cab868.js | 1 - assets/index.md.41cab868.lean.js | 1 - assets/index.md.be2b63f2.js | 1 + assets/index.md.be2b63f2.lean.js | 1 + cover/fluoresynth-by-electric-telepathy.webp | Bin 0 -> 33856 bytes cover/online-sequencer.webp | Bin 17682 -> 28852 bytes .../sympathetic-synthesizer-system-mk-1.webp | Bin 0 -> 29666 bytes cover/virtualpiano.eu.webp | Bin 0 -> 37014 bytes hashmap.json | 2 +- index.html | 6 +++--- 12 files changed, 8 insertions(+), 8 deletions(-) delete mode 100644 assets/index.md.41cab868.js delete mode 100644 assets/index.md.41cab868.lean.js create mode 100644 assets/index.md.be2b63f2.js create mode 100644 assets/index.md.be2b63f2.lean.js create mode 100644 cover/fluoresynth-by-electric-telepathy.webp create mode 100644 cover/sympathetic-synthesizer-system-mk-1.webp create mode 100644 cover/virtualpiano.eu.webp diff --git a/404.html b/404.html index bb28642f..358a658f 100644 --- a/404.html +++ b/404.html @@ -43,7 +43,7 @@
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
With ❤️ by Chromatone and Playtronica
- + \ No newline at end of file diff --git a/README.html b/README.html index b995a81b..74da89b4 100644 --- a/README.html +++ b/README.html @@ -46,7 +46,7 @@
Skip to content
On this page

WEB SYNTHS

TO DO

  • SEO proof texts
  • Logos
  • save state
  • favourites
  • ranks + reviews

Last updated:

With ❤️ by Chromatone and Playtronica
- + \ No newline at end of file diff --git a/assets/index.md.41cab868.js b/assets/index.md.41cab868.js deleted file mode 100644 index f50f6ea9..00000000 --- a/assets/index.md.41cab868.js +++ /dev/null @@ -1 +0,0 @@ -import{u as at,a as ut,b as pt,c as gt,d as mt}from"./chunks/theme.10ba8259.js";import{r as x,b as ot,w as rt,f as ht,h as I,a2 as k,i as g,j as b,u,a0 as bt,I as yt,B as h,p as L,l as z,x as M,M as C,v as w,C as xt,D as vt,_ as wt,q as W,J as _t,K as Tt,S as St,a3 as R,a4 as It,m as T,k as A,a5 as Y,a6 as X,Z as q,T as $t}from"./chunks/framework.7c22cbc0.js";const O=x(!1),U=x(!1),Ct=x(!1),B=at("storedEmail",""),V=at("storedName",""),Z=x(!1),$=x(""),H=x(""),kt=ot(()=>dt($.value)),J=x(!1);function dt(t){return/^[^@]+@\w+(\.\w+)+\w$/.test(t)}function Ot(){B.value="",V.value="",Z.value=!1,O.value=!1}function K(){return J.value||(rt(O,t=>{t&&(U.value=!1)}),ht(()=>{B.value&&(O.value=!0)}),J.value=!0),{isAccessGranted:O,isValidEmail:kt,email:$,name:H,grantAccess:Lt,isSent:Z,isFormOpen:U,checkAvailability:Ct,storedEmail:B,storedName:V,resetEmail:Ot}}const Et="https://db.chromatone.center/flows/trigger/f36a3461-c476-4ce5-88c9-eba2216083b0";async function Lt(){if(!(!$.value&&!dt($.value))&&(O.value=!0,!Z.value)){Z.value=!0;try{const t={email:$.value,name:H.value.slice(0,30)};B.value=$.value,V.value=H.value;const e=await fetch(Et,{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(t)});console.log(e==null?void 0:e.json())}catch(t){console.error(t)}}}const Dt=JSON.parse('[{"id":1,"status":"published","sort":1,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.730Z","title":"Dotpiano","url":"https://dotpiano.com/","content":null,"cover":"fd81d5c3-4cb6-41eb-9689-d5f7aba2b8a6","tags":null},{"id":3,"status":"published","sort":3,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.748Z","title":"TouchME by Chromatone","url":"https://touchme.chromatone.center/","content":null,"cover":"6e97f4ab-c2f7-4e90-9c26-7518dbfddb3a","tags":null},{"id":14,"status":"published","sort":4,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.765Z","title":"Juno-106","url":"http://juno-106.js.org/","content":null,"cover":"d4fad441-c1a0-4ccc-9c0d-d8bfb79f9094","tags":null},{"id":26,"status":"published","sort":5,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.816Z","title":"Learning synths with Ableton","url":"https://learningsynths.ableton.com/","content":null,"cover":"f5c81f00-fc0e-40ad-96ce-a1834709253a","tags":null},{"id":30,"status":"published","sort":5,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.800Z","title":"DX7 Synth","url":"https://mmontag.github.io/dx7-synth-js/","content":null,"cover":"01eacfd8-892d-41de-b928-50b686a87400","tags":null},{"id":32,"status":"published","sort":5,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.784Z","title":"Sampler synth","url":"https://play.playtronica.com/","content":null,"cover":"749cb332-eb5e-40c6-bb36-fb87bb25a834","tags":null},{"id":10,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.837Z","title":"Websynths","url":"http://websynths.com/","content":null,"cover":"072cf912-9966-4d3f-9823-36e75fb8ada9","tags":null},{"id":19,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.859Z","title":"Theremin","url":"https://www.femurdesign.com/theremin/","content":null,"cover":"f4ca5ef9-132a-4e56-80fb-21bd0fd0b3f6","tags":null},{"id":29,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.891Z","title":"Elementary synth","url":"https://chromatone.center/practice/synth/elementary/","content":null,"cover":"14f5d908-fba2-451f-8bec-a922cc5672c7","tags":null},{"id":22,"status":"published","sort":7,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.875Z","title":"Disco-computer","url":"http://www.disco-computer.com/synthesizer/synth.html","content":null,"cover":"1ac14701-0530-4ca6-b516-45d5f9523819","tags":null},{"id":31,"status":"published","sort":12,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.906Z","title":"Video Sampler","url":"https://seeing-sound.netlify.app/","content":null,"cover":"a4e5d9b7-1b64-4c31-aed4-467e2c6cba32","tags":null},{"id":27,"status":"published","sort":14,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.918Z","title":"Viktor NV-1","url":"http://nicroto.github.io/viktor/","content":null,"cover":"1c104eeb-dc14-4d3b-bb8e-14accb2184c3","tags":null},{"id":17,"status":"published","sort":30,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.930Z","title":"Sound Trap","url":"https://www.soundtrap.com/","content":null,"cover":"328c8c51-e7d4-48bd-9c3d-6dea5184cad5","tags":null},{"id":6,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.181Z","title":"MIDI–driven Web Audio","url":"https://webaudiodemos.appspot.com/midi-synth/index.html","content":null,"cover":"f268f0dc-b091-4799-885b-0a5eecfdcbec","tags":null},{"id":8,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.088Z","title":"Meet the Heisenberg","url":"https://www.audiotool.com/product/device/heisenberg/","content":null,"cover":"88c6fe9d-033c-4aac-a946-278e729e5f05","tags":null},{"id":9,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.141Z","title":"Cardboard Synth","url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","content":null,"cover":"3406a3fa-5e4d-4efc-a5ac-c6c8ee3abf72","tags":null},{"id":11,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.126Z","title":"Tanguy synth","url":"http://tanguysynth.com/","content":null,"cover":"16a499c4-661f-48b5-b308-dd7ea77f335d","tags":null},{"id":12,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.109Z","title":"MOD synth","url":"http://mod-synth.io/","content":null,"cover":"dd13c72f-d1ee-4197-b8a2-f24c162d5858","tags":null},{"id":13,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.076Z","title":"OLIF SY1K","url":"http://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","content":null,"cover":"44234157-4872-4e35-baec-a7d073a7258d","tags":null},{"id":15,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.059Z","title":"Note Sculptor","url":"http://www.noisesculptor.com/","content":null,"cover":"3b9d921b-79da-4923-9cd2-bbc826561a93","tags":null},{"id":16,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.159Z","title":"WebAudioSynth V2","url":"http://aikelab.net/websynthv2/","content":null,"cover":"7980d0af-e534-4383-a36c-0b116a06499e","tags":null},{"id":18,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.944Z","title":"Samplestich","url":"http://samplestitch.com.s3-website-us-east-1.amazonaws.com/","content":null,"cover":"0f272d97-7882-4797-9890-97c3b75149a4","tags":null},{"id":20,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.032Z","title":"Omni","url":"https://femurdesign.com/omni/","content":null,"cover":"82c94f42-0449-45ea-924d-7365ba51af20","tags":null},{"id":21,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.016Z","title":"Web Modular","url":"https://www.g200kg.com/docs/webmodular/","content":null,"cover":"5bb158d2-cfcc-46d9-acd5-6cf3312d7678","tags":null},{"id":23,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.000Z","title":"Online sequencer","url":"https://onlinesequencer.net/369477","content":null,"cover":"efdc67a4-4cfc-4a4b-a704-1b939fbe7fc4","tags":null},{"id":24,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.987Z","title":"PixelSynth","url":"https://ojack.github.io/PIXELSYNTH/","content":null,"cover":"59ec0d0b-6bcf-4c50-8d76-5fe624105c0c","tags":null},{"id":25,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.970Z","title":"Acid Machine 2","url":"http://errozero.co.uk/acid-machine/","content":null,"cover":"380cdb0d-4a68-44a7-b24c-2b655f26ebcd","tags":null},{"id":28,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.958Z","title":"WebSID Commodore 64","url":"http://www.igorski.nl/experiment/websid","content":null,"cover":"e39565a0-15fa-4c3a-9bc7-aa5a613dd19f","tags":null}]'),Nt=I({inject:["manager"],props:{index:{type:Number,required:!0},disabled:{type:Boolean,default:!1}},data(){return{}},watch:{index(t){this.$el&&this.$el.sortableInfo&&(this.$el.sortableInfo.index=t)},disabled(t){t?this.removeDraggable():this.setDraggable(this.index)}},mounted(){const{disabled:t,index:e}=this.$props;t||this.setDraggable(e)},beforeUnmount(){this.disabled||this.removeDraggable()},methods:{setDraggable(t){const e=this.$el;e.sortableInfo={index:t,manager:this.manager},this.ref={node:e},this.manager.add(this.ref)},removeDraggable(){this.manager.remove(this.ref)}}});class Mt{constructor(){this.refs=[],this.active=null}add(e){this.refs||(this.refs=[]),this.refs.push(e)}remove(e){const s=this.getIndex(e);s!==-1&&this.refs.splice(s,1)}isActive(){return!!this.active}getActive(){return this.refs.find(({node:e})=>{var s,i;return((s=e==null?void 0:e.sortableInfo)===null||s===void 0?void 0:s.index)==((i=this===null||this===void 0?void 0:this.active)===null||i===void 0?void 0:i.index)})||null}getIndex(e){return this.refs.indexOf(e)}getRefs(){return this.refs}getOrderedRefs(){return this.refs.sort((e,s)=>e.node.sortableInfo.index-s.node.sortableInfo.index)}}const E=t=>t.touches!=null;function j(t,e){return!!t&&Object.prototype.hasOwnProperty.call(t,e)}function Wt(t,e,s){const i=t.slice(0);if(s>=i.length){let n=s-i.length;for(;n--+1;)i.push(void 0)}return i.splice(s,0,i.splice(e,1)[0]),i}function At(t,e){const s=t.slice(0);return e>=s.length||s.splice(e,1),s}function Bt(t,e,s){const i=t.slice(0);return e===i.length?i.push(s):i.splice(e,0,s),i}const _={start:["touchstart","mousedown"],move:["touchmove","mousemove"],end:["touchend","mouseup"],cancel:["touchcancel","keyup"]};function Q(t,e){for(;t;){if(e(t))return t;t=t.parentNode}}function tt(t,e,s){return se?e:s}function D(t){return t.substr(-2)==="px"?parseFloat(t):0}function et(t){const e=window.getComputedStyle(t);return{top:D(e.marginTop),right:D(e.marginRight),bottom:D(e.marginBottom),left:D(e.marginLeft)}}function N(t,e="page"){const s=`${e}X`,i=`${e}Y`;return{x:E(t)?t.touches[0][s]:t[s],y:E(t)?t.touches[0][i]:t[i]}}function st(t){const e=[t];for(;t;t=t.offsetParent)e.unshift(t);return e}function Zt(t,e){const s=st(t),i=st(e);if(s[0]!=i[0])throw"No common ancestor!";for(let n=0;n{n.type!=="file"&&e[a]&&(n.value=e[a].value)}),s}function Pt(t,e,s){if(typeof t=="string"&&(t=+t),Array.isArray(t)||(t=[t,t]),t.length!==2)throw new Error(`lockOffset prop of SortableContainer should be a single value or an array of exactly two values. Given ${t}`);const[i,n]=t;return[nt(i,e,s),nt(n,e,s)]}function nt(t,e,s){let i=t,n=t,a="px";if(typeof t=="string"){const l=/^[+-]?\d*(?:\.\d*)?(px|%)$/.exec(t);if(l===null)throw new Error(`lockOffset value should be a number or a string of a number followed by "px" or "%". Given ${t}`);i=n=parseFloat(t),a=l[1]}if(!isFinite(i)||!isFinite(n))throw new Error(`lockOffset value should be a finite. Given ${t}`);return a==="%"&&(i=i*e/100,n=n*s/100),{x:i,y:n}}function lt(t=[]){for(let e=0,s=t.length;e[]},lockAxis:{type:String,default:""},helperClass:{type:String,default:""},contentWindow:{type:Object,default:null},shouldCancelStart:{type:Function,default:t=>["input","textarea","select","option","button"].indexOf(t.target.tagName.toLowerCase())!==-1},getHelperDimensions:{type:Function,default:({node:t})=>({width:t.offsetWidth,height:t.offsetHeight})}},emits:["sort-start","sort-move","sort-end","sort-cancel","sort-insert","sort-remove","update:list"],data(){let t=!1;return this.group&&this.SlicksortHub&&(t=!0),{sorting:!1,hub:t?this.SlicksortHub:null,manager:new Mt}},mounted(){this.hub&&(this.id=this.hub.getId()),this.container=this.$el,this.document=this.container.ownerDocument||document,this._window=this.contentWindow||window,this.scrollContainer=this.useWindowAsScrollContainer?{scrollLeft:0,scrollTop:0}:this.container,this.events={start:this.handleStart,move:this.handleMove,end:this.handleEnd};for(const t in this.events)j(this.events,t)&&_[t].forEach(e=>this.container.addEventListener(e,this.events[t]));this.hub&&this.hub.addContainer(this)},beforeUnmount(){for(const t in this.events)j(this.events,t)&&_[t].forEach(e=>this.container.removeEventListener(e,this.events[t]));this.hub&&this.hub.removeContainer(this),this.dragendTimer&&clearTimeout(this.dragendTimer),this.cancelTimer&&clearTimeout(this.cancelTimer),this.pressTimer&&clearTimeout(this.pressTimer),this.autoscrollInterval&&clearInterval(this.autoscrollInterval)},methods:{handleStart(t){const{distance:e,shouldCancelStart:s}=this.$props;if(!E(t)&&t.button===2||s(t))return!1;this._touched=!0,this._pos=N(t);const i=t.target,n=Q(i,a=>a.sortableInfo!=null);if(n&&n.sortableInfo&&this.nodeIsChild(n)&&!this.sorting){const{useDragHandle:a}=this.$props,{index:l}=n.sortableInfo;if(a&&!Q(i,c=>c.sortableHandle!=null))return;this.manager.active={index:l},i.tagName.toLowerCase()==="a"&&t.preventDefault(),e||(this.pressDelay===0?this.handlePress(t):this.pressTimer=G(()=>this.handlePress(t),this.pressDelay))}},nodeIsChild(t){return t.sortableInfo.manager===this.manager},handleMove(t){const{distance:e,pressThreshold:s}=this.$props;if(!this.sorting&&this._touched){const i=N(t);this._delta={x:this._pos.x-i.x,y:this._pos.y-i.y};const n=Math.abs(this._delta.x)+Math.abs(this._delta.y);!e&&(!s||s&&n>=s)?(this.cancelTimer&&clearTimeout(this.cancelTimer),this.cancelTimer=G(this.cancel,0)):e&&n>=e&&this.manager.isActive()&&this.handlePress(t)}},handleEnd(){if(!this._touched)return;const{distance:t}=this.$props;this._touched=!1,t||this.cancel()},cancel(){this.sorting||(this.pressTimer&&clearTimeout(this.pressTimer),this.manager.active=null,this.hub&&this.hub.cancel())},handleSortCancel(t){(E(t)||t.key===this.cancelKey)&&(this.newIndex=this.index,this.canceling=!0,this.translate={x:0,y:0},this.animateNodes(),this.handleSortEnd(t))},handlePress(t){t.stopPropagation();const e=this.manager.getActive();if(e){const{getHelperDimensions:s,helperClass:i,hideSortableGhost:n,appendTo:a}=this.$props,{node:l}=e,{index:c}=l.sortableInfo,f=et(l),o=this.container.getBoundingClientRect(),m=s({index:c,node:l});this.node=l,this.margin=f,this.width=m.width,this.height=m.height,this.marginOffset={x:this.margin.left+this.margin.right,y:Math.max(this.margin.top,this.margin.bottom)},this.boundingClientRect=l.getBoundingClientRect(),this.containerBoundingRect=o,this.index=c,this.newIndex=c;const y=it(l);this.helper=this.document.querySelector(a).appendChild(y),this.helper.style.position="fixed",this.helper.style.top=`${this.boundingClientRect.top-f.top}px`,this.helper.style.left=`${this.boundingClientRect.left-f.left}px`,this.helper.style.width=`${this.width}px`,this.helper.style.height=`${this.height}px`,this.helper.style.boxSizing="border-box",this.helper.style.pointerEvents="none",n&&(this.sortableGhost=l,l.style.visibility="hidden",l.style.opacity="0"),this.hub&&(this.hub.sortStart(this),this.hub.helper=this.helper,this.hub.ghost=this.sortableGhost),this.intializeOffsets(t,this.boundingClientRect),this.offsetEdge=S(l,this.container),i&&this.helper.classList.add(...i.split(" ")),this.listenerNode=E(t)?l:this._window,_.move.forEach(r=>this.listenerNode.addEventListener(r,this.handleSortMove)),_.end.forEach(r=>this.listenerNode.addEventListener(r,this.handleSortEnd)),_.cancel.forEach(r=>this.listenerNode.addEventListener(r,this.handleSortCancel)),this.sorting=!0,this.$emit("sort-start",{event:t,node:l,index:c})}},handleSortMove(t){if(t.preventDefault(),this.updatePosition(t),this.hub){const e=this.list[this.index];this.hub.handleSortMove(t,e)}(!this.hub||this.hub.isDest(this))&&(this.animateNodes(),this.autoscroll()),this.$emit("sort-move",{event:t})},handleDropOut(){const t=this.list[this.index],e=At(this.list,this.index);return this.$emit("sort-remove",{oldIndex:this.index}),this.$emit("update:list",e),t},handleDropIn(t){const e=Bt(this.list,this.newIndex,t);this.$emit("sort-insert",{newIndex:this.newIndex,value:t}),this.$emit("update:list",e),this.handleDragEnd()},handleDragOut(){this.autoscrollInterval&&(clearInterval(this.autoscrollInterval),this.autoscrollInterval=null),this.hub.isSource(this)?(this.translate={x:1e4,y:1e4},this.animateNodes()):(this.manager.getRefs().forEach(t=>{t.node.style.transform=""}),this.dragendTimer=G(this.handleDragEnd,this.transitionDuration||0))},handleDragEnd(){this.autoscrollInterval&&(clearInterval(this.autoscrollInterval),this.autoscrollInterval=null),lt(this.manager.getRefs()),this.sortableGhost&&(this.sortableGhost.remove(),this.sortableGhost=null),this.dragendTimer&&(clearTimeout(this.dragendTimer),this.dragendTimer=null),this.manager.active=null,this._touched=!1,this.sorting=!1},intializeOffsets(t,e){const{useWindowAsScrollContainer:s,containerBoundingRect:i,_window:n}=this;this.marginOffset={x:this.margin.left+this.margin.right,y:Math.max(this.margin.top,this.margin.bottom)},this._axis={x:this.axis.indexOf("x")>=0,y:this.axis.indexOf("y")>=0},this.initialOffset=N(t),this.initialScroll={top:this.scrollContainer.scrollTop,left:this.scrollContainer.scrollLeft},this.initialWindowScroll={top:window.pageYOffset,left:window.pageXOffset},this.translate={x:0,y:0},this.minTranslate={},this.maxTranslate={},this._axis.x&&(this.minTranslate.x=(s?0:i.left)-e.left-this.width/2,this.maxTranslate.x=(s?n.innerWidth:i.left+i.width)-e.left-this.width/2),this._axis.y&&(this.minTranslate.y=(s?0:i.top)-e.top-this.height/2,this.maxTranslate.y=(s?n.innerHeight:i.top+i.height)-e.top-this.height/2)},handleDragIn(t,e,s){if(this.hub.isSource(this))return;this.dragendTimer&&(this.handleDragEnd(),clearTimeout(this.dragendTimer),this.dragendTimer=null);const i=this.manager.getRefs();this.index=i.length,this.manager.active={index:this.index};const n=this.container.getBoundingClientRect(),a=s.getBoundingClientRect();this.containerBoundingRect=n,this.sortableGhost=it(e),this.container.appendChild(this.sortableGhost);const l=this.sortableGhost.getBoundingClientRect();this.boundingClientRect=l,this.margin=et(this.sortableGhost),this.width=l.width,this.height=l.height,this.offsetEdge=S(this.sortableGhost,this.container),this.intializeOffsets(t,l),this.initialOffset.x+=l.x-a.x,this.initialOffset.y+=l.y-a.y,this.sorting=!0},handleSortEnd(t){this.listenerNode&&(_.move.forEach(i=>this.listenerNode.removeEventListener(i,this.handleSortMove)),_.end.forEach(i=>this.listenerNode.removeEventListener(i,this.handleSortEnd)),_.cancel.forEach(i=>this.listenerNode.removeEventListener(i,this.handleSortCancel)));const e=this.manager.getRefs();this.helper&&this.helperClass&&this.helper.classList.remove(...this.helperClass.split(" ")),this.autoscrollInterval&&clearInterval(this.autoscrollInterval),this.autoscrollInterval=null;const s=()=>{this.helper&&(this.helper.remove(),this.helper=null),this.hideSortableGhost&&this.sortableGhost&&(this.sortableGhost.style.visibility="",this.sortableGhost.style.opacity=""),lt(e),this.hub&&!this.hub.isDest(this)?this.canceling?this.hub.cancel():this.hub.handleSortEnd():this.canceling?this.$emit("sort-cancel",{event:t}):(this.$emit("sort-end",{event:t,oldIndex:this.index,newIndex:this.newIndex}),this.$emit("update:list",Wt(this.list,this.index,this.newIndex))),this.manager.active=null,this._touched=!1,this.canceling=!1,this.sorting=!1};this.transitionDuration||this.draggedSettlingDuration?this.transitionHelperIntoPlace(e,s):s()},transitionHelperIntoPlace(t,e){if(this.draggedSettlingDuration===0||t.length===0||!this.helper)return Promise.resolve();const s=t[this.index].node;let i=0,n=0;const a={top:window.pageYOffset-this.initialWindowScroll.top,left:window.pageXOffset-this.initialWindowScroll.left};if(this.hub&&!this.hub.isDest(this)&&!this.canceling){const o=this.hub.getDest();if(!o)return;const m=o.newIndex,y=o.manager.getOrderedRefs(),r=m0?i+=o.offsetLeft+o.offsetWidth-(s.offsetLeft+s.offsetWidth):i+=o.offsetLeft-s.offsetLeft,n=-m.top,this.translate&&this.translate.y>0?n+=o.offsetTop+o.offsetHeight-(s.offsetTop+s.offsetHeight):n+=o.offsetTop-s.offsetTop}const l=this.draggedSettlingDuration!==null?this.draggedSettlingDuration:this.transitionDuration;F(this.helper,`translate3d(${i}px,${n}px, 0)`,`${l}ms`);const c=o=>{(!o||o.propertyName==="transform")&&(clearTimeout(f),F(this.helper),e())},f=setTimeout(c,l+10);this.helper.addEventListener("transitionend",c)},updatePosition(t){const{lockAxis:e,lockToContainerEdges:s}=this.$props,i=N(t),n={x:i.x-this.initialOffset.x,y:i.y-this.initialOffset.y};if(n.y-=window.pageYOffset-this.initialWindowScroll.top,n.x-=window.pageXOffset-this.initialWindowScroll.left,this.translate=n,s){const[a,l]=Pt(this.lockOffset,this.height,this.width),c={x:this.width/2-a.x,y:this.height/2-a.y},f={x:this.width/2-l.x,y:this.height/2-l.y};this.minTranslate.x&&this.maxTranslate.x&&(n.x=tt(this.minTranslate.x+c.x,this.maxTranslate.x-f.x,n.x)),this.minTranslate.y&&this.maxTranslate.y&&(n.y=tt(this.minTranslate.y+c.y,this.maxTranslate.y-f.y,n.y))}e==="x"?n.y=0:e==="y"&&(n.x=0),this.helper&&(this.helper.style.transform=`translate3d(${n.x}px,${n.y}px, 0)`)},animateNodes(){const{transitionDuration:t,hideSortableGhost:e}=this.$props,s=this.manager.getOrderedRefs(),i={left:this.scrollContainer.scrollLeft-this.initialScroll.left,top:this.scrollContainer.scrollTop-this.initialScroll.top},n={left:this.offsetEdge.left+this.translate.x+i.left,top:this.offsetEdge.top+this.translate.y+i.top},a={top:window.pageYOffset-this.initialWindowScroll.top,left:window.pageXOffset-this.initialWindowScroll.left};this.newIndex=null;for(let l=0,c=s.length;lm?m/2:this.width/2,height:this.height>y?y/2:this.height/2},d={x:0,y:0};let{edgeOffset:p}=s[l];p||(s[l].edgeOffset=p=S(f,this.container));const v=l0&&s[l-1];if(v&&!v.edgeOffset&&(v.edgeOffset=S(v.node,this.container)),o===this.index){e&&(this.sortableGhost=f,f.style.visibility="hidden",f.style.opacity="0");continue}t&&(f.style.transitionDuration=`${t}ms`),this._axis.x?this._axis.y?othis.containerBoundingRect.width-r.width&&v&&(d.x=v.edgeOffset.left-p.left,d.y=v.edgeOffset.top-p.top),this.newIndex===null&&(this.newIndex=o)):o>this.index&&(n.left+a.left+r.width>=p.left&&n.top+a.top+r.height>=p.top||n.top+a.top+r.height>=p.top+y)&&(d.x=-(this.width+this.marginOffset.x),p.left+d.xthis.index&&n.left+a.left+r.width>=p.left?(d.x=-(this.width+this.marginOffset.x),this.newIndex=o):othis.index&&n.top+a.top+r.height>=p.top?(d.y=-(this.height+this.marginOffset.y),this.newIndex=o):o=this.maxTranslate.y-this.height/2?(e.y=1,s.y=i.y*Math.abs((this.maxTranslate.y-this.height/2-t.y)/this.height)):t.x>=this.maxTranslate.x-this.width/2?(e.x=1,s.x=i.x*Math.abs((this.maxTranslate.x-this.width/2-t.x)/this.width)):t.y<=this.minTranslate.y+this.height/2?(e.y=-1,s.y=i.y*Math.abs((t.y-this.height/2-this.minTranslate.y)/this.height)):t.x<=this.minTranslate.x+this.width/2&&(e.x=-1,s.x=i.x*Math.abs((t.x-this.width/2-this.minTranslate.x)/this.width)),this.autoscrollInterval&&(clearInterval(this.autoscrollInterval),this.autoscrollInterval=null),(e.x!==0||e.y!==0)&&(this.autoscrollInterval=window.setInterval(()=>{const n={left:1*s.x*e.x,top:1*s.y*e.y};this.useWindowAsScrollContainer?this._window.scrollBy(n.left,n.top):(this.scrollContainer.scrollTop+=n.top,this.scrollContainer.scrollLeft+=n.left),this.translate.x+=n.left,this.translate.y+=n.top,this.animateNodes()},5))}}}),ct=I({name:"SlickItem",mixins:[Nt],props:{tag:{type:String,default:"div"}},render(){var t,e;return k(this.tag,(e=(t=this.$slots).default)===null||e===void 0?void 0:e.call(t))}}),Gt=I({name:"SlickList",mixins:[Rt],props:{tag:{type:String,default:"div"},itemKey:{type:[String,Function],default:"id"}},render(){var t,e;return this.$slots.item?k(this.tag,this.list.map((s,i)=>{let n;if(s!=null){if(typeof this.itemKey=="function")n=this.itemKey(s);else if(typeof s=="object"&&j(s,this.itemKey)&&typeof s[this.itemKey]=="string")n=s[this.itemKey];else if(typeof s=="string")n=s;else throw new Error("Cannot find key for item, use the item-key prop and pass a function or string");return k(ct,{key:n,index:i},{default:()=>{var a,l;return(l=(a=this.$slots).item)===null||l===void 0?void 0:l.call(a,{item:s,index:i})}})}})):k(this.tag,(e=(t=this.$slots).default)===null||e===void 0?void 0:e.call(t))}}),zt=I({props:{tag:{type:String,default:"span"}},mounted(){this.$el.sortableHandle=!0},render(){var t,e;return k(this.tag,(e=(t=this.$slots).default)===null||e===void 0?void 0:e.call(t))}}),Ht={key:0,d:"M30.336 12.547l-10.172-1.074L16 2.133l-4.164 9.34l-10.172 1.074l7.598 6.848L7.14 29.398L16 24.29l8.86 5.11l-2.122-10.004z",fill:"#ffaa00"},jt={key:1,d:"M16 2.125l-.906 2.063l-3.25 7.28l-7.938.845l-2.25.25l1.688 1.5l5.906 5.343l-1.656 7.813l-.469 2.187l1.969-1.125l6.906-4l6.906 4l1.969 1.125l-.469-2.187l-1.656-7.813l5.906-5.343l1.688-1.5l-2.25-.25l-7.938-.844l-3.25-7.281zm0 4.906l2.563 5.782l.25.53l.562.063l6.281.656l-4.687 4.22l-.438.405l.125.563l1.313 6.156l-5.469-3.125l-.5-.312l-.5.312l-5.469 3.125l1.313-6.156l.125-.563l-.438-.406l-4.687-4.218l6.281-.657l.563-.062l.25-.531z",fill:"#888888"},Ft=I({__name:"SynthFav",props:{url:{type:String,default:""}},setup(t){const s=ut("fav:"+t.url,!1);function i(n){s.value=!s.value,console.log(s.value)}return(n,a)=>(g(),b("svg",{onClick:a[0]||(a[0]=bt(l=>i(t.url),["stop","prevent"])),xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",viewBox:"0 0 32 32"},[u(s)?(g(),b("path",Ht)):(g(),b("path",jt))]))}}),ft=t=>(xt("data-v-2d995d47"),t=t(),vt(),t),Vt=["src","alt"],Kt=ft(()=>h("div",{class:"flex-1"},null,-1)),Yt={class:"p-4 flex items-center justify-between w-full"},Xt={class:"text-md font-bold flex items-center gap-2 flex-1"},qt={class:"flex-1"},Ut=ft(()=>h("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",viewBox:"0 0 32 32"},[h("path",{d:"M4 7v2h24V7zm0 8v2h24v-2zm0 8v2h24v-2z",fill:"#888888"})],-1)),Jt=I({__name:"SynthCard",props:{off:{type:Boolean,default:!1},title:{type:String,default:""},description:{type:String,default:""},cover:{type:String,default:""},url:{type:String,default:""}},setup(t){const e=t,{checkAvailability:s,isFormOpen:i}=K(),n=x(null);rt(s,async l=>{try{(await fetch("https://corsproxy.io/?"+e.url)).status==200?n.value=!0:n.value=!1}catch{n.value=!1}});function a(){e.off?i.value=!i.value:window.open(e.url,"_blank")}return(l,c)=>{const f=yt("ClientOnly");return g(),b("button",{class:"flex flex-col text-left relative min-h-50 card p-0 bg-light-300 shadow-lg flex flex-col dark-bg-dark-300 -hover-translate-y-2px transition hover-shadow-xl rounded-xl overflow-hidden relative",onClick:a},[(g(),b("img",{key:t.title,height:"200",width:"1000",src:`/cover/${t.title.toLowerCase().split(" ").join("-")}.webp`,alt:`${t.title} illustration`},null,8,Vt)),Kt,h("div",Yt,[h("div",Xt,[h("div",qt,L(t.title),1),u(s)?(g(),b("div",{key:0,class:z(["w-2 h-2 rounded-full shadow-inset",{"bg-green-500":n.value===!0,"bg-red-500":n.value===!1}])},null,2)):M("",!0),C(f,null,{default:w(()=>[C(Ft,{class:"scale-70 w-10",url:t.url},null,8,["url"])]),_:1}),C(u(zt),{class:"scale-80 opacity-40 cursor-grab absolute top-2 right-2"},{default:w(()=>[Ut]),_:1})])])])}}});const Qt=wt(Jt,[["__scopeId","data-v-2d995d47"]]);const te={__name:"SynthList",setup(t){const{isAccessGranted:e}=K(),s=x(Dt);function i(n){return!e.value&&n>5}return(n,a)=>(g(),W(u(Gt),{class:"flex flex-wrap items-stretch gap-4 md-gap-6 m-2 lg-m-8",list:s.value,"onUpdate:list":a[0]||(a[0]=l=>s.value=l),axis:"xy","use-drag-handle":""},{default:w(()=>[(g(!0),b(_t,null,Tt(s.value,(l,c)=>(g(),W(u(ct),{class:"flex",style:{flex:"1 1 240px"},key:l.id,index:c},{default:w(()=>[(g(),W(Qt,{style:St({opacity:i(c)?.8:1}),title:l.title,description:l.description,cover:l.cover,url:l.url,key:l.id,off:i(c)},null,8,["style","title","description","cover","url","off"]))]),_:2},1032,["index"]))),128))]),_:1},8,["list"]))}};const ee=h("path",{d:"M7.219 5.781L5.78 7.22L14.563 16L5.78 24.781L7.22 26.22L16 17.437l8.781 8.782l1.438-1.438L17.437 16l8.782-8.781L24.78 5.78L16 14.563z",fill:"#888888"},null,-1),se=[ee],ie={key:0,class:"flex flex-col gap-4 max-w-45ch text-center"},ne={class:"text-3xl font-bold"},le=h("div",{class:"text-xl"},"Enjoy your web-synthesizers hub",-1),ae={class:"text-sm flex gap-2 justify-center"},oe=h("svg",{class:"absolute",xmlns:"http://www.w3.org/2000/svg",width:"100",height:"100",viewBox:"0 0 32 32"},[h("path",{d:"M16 4.688L3.781 16.905l1.438 1.407L16 7.53l10.781 10.782l1.438-1.407zm0 7L3.781 23.905l1.438 1.407L16 14.53l10.781 10.781l1.438-1.406z",fill:"#888888"})],-1),re=[oe],he={key:1,class:"flex flex-col gap-8 relative pt-8 items-center"},de={class:"text-center max-w-45ch",for:"email"},ce={class:"flex gap-4 flex-col w-full"},fe={class:"flex items-center gap-2"},ue=h("div",{class:"p-2 w-20 font-bold text-right"},"E-mail*",-1),pe={class:"flex items-center gap-2"},ge=h("div",{class:"p-2 w-20 font-bold text-right"},"Name",-1),me=["disabled"],be={class:"text-xs opacity-60 text-center max-w-45ch mx-auto"},ye={__name:"TheForm",setup(t){const{name:e,email:s,isValidEmail:i,isFormOpen:n,grantAccess:a,storedEmail:l,storedName:c,resetEmail:f,isAccessGranted:o}=K();function m(){window.scrollTo({top:0,left:0,behavior:"smooth"})}return(y,r)=>(g(),W($t,{name:"slide"},{default:w(()=>[h("div",{class:z(["z-10 min-h-40dvh bottom-0 right-0 left-0 bg-light-800 bg-opacity-80 backdrop-blur flex flex-col items-center gap-4 justify-center dark-bg-dark-200 dark-bg-opacity-80 p-8 shadow",{sticky:u(n)}])},[R((g(),b("svg",{class:"absolute top-4 right-4 text-4xl cursor-pointer",onClick:r[0]||(r[0]=d=>n.value=!1),xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 32 32"},se,512)),[[It,u(n)]]),u(o)?(g(),b("div",ie,[h("div",ne,"Hello, "+L(u(c))+"!",1),le,h("div",ae,[T(L(u(l)),1),h("span",{class:"opacity-20 hover-opacity-50 transition cursor-pointer",onClick:r[1]||(r[1]=(...d)=>u(f)&&u(f)(...d))},"Log out")]),h("div",{class:"flex justify-center cursor-pointer p-2 opacity-50 hover-opacity-100 transition",onClick:r[2]||(r[2]=d=>m())},re)])):(g(),b("div",he,[h("label",de,[A(y.$slots,"default")]),h("div",ce,[h("label",fe,[ue,R(h("input",{class:"flex-1 p-4 md-p-4 rounded-xl bg-light-200 shadow-md dark-bg-dark-400 flex-1",ref:"target",maxlength:"30","onUpdate:modelValue":r[3]||(r[3]=d=>X(s)?s.value=d:null),id:"email",name:"email",type:"email",onKeydown:r[4]||(r[4]=q(d=>u(a)(),["enter"])),placeholder:"your@gmail.com"},null,544),[[Y,u(s)]])]),h("label",pe,[ge,R(h("input",{class:"flex-1 p-4 md-p-4 rounded-xl bg-light-200 shadow-md dark-bg-dark-400","onUpdate:modelValue":r[5]||(r[5]=d=>X(e)?e.value=d:null),id:"name",name:"name",type:"text",onKeydown:r[6]||(r[6]=q(d=>u(a)(),["enter"])),placeholder:"optional"},null,544),[[Y,u(e)]])]),h("button",{class:z(["text-sm md-text-md p-4 font-bold md-p-4 rounded-xl shadow-xl hover-shadow-2xl transition -hover-translate-y-2px active-translate-y-0 active-shadow-md bg-green-400 dark-bg-green-700",{"grayscale-50":!u(i)}]),onClick:r[7]||(r[7]=d=>u(a)()),disabled:!u(i)},[A(y.$slots,"button",{},()=>[T("GET ACCESS")])],10,me)]),h("div",be,[A(y.$slots,"notice",{},()=>[T("Your access status will be saved per device and you won't need to enter your e-mail again.")])])]))],2)]),_:3}))}},xe={class:"bg-light-300 dark-bg-dark-700 dark-text-light-200 text-center line-height-loose text-md py-16"},ve={class:"mx-auto max-w-75ch intro md-text-lg"},we={key:0,class:"p-2 flex flex-col mt-8"},_e={class:"text-4xl font-bold"},Te=h("div",{class:"text-lg"},"web synths",-1),Se={key:1,class:"p-2 flex flex-col mt-8"},Ie={class:"text-4xl font-bold"},$e=h("div",{class:"text-lg"},"web musicians",-1),Ce={__name:"AboutUs",props:{synths:{type:Number,default:30}},setup(t){const e=x(),s=x([]),i=ot(()=>s.value.length),n=pt(i);ht(()=>{fetch("https://corsproxy.io/?https://db.chromatone.center/items/players?limit=-1").then(o=>o.json()).then(({data:o})=>s.value=o)});const a=gt(e),{share:l,isSupported:c}=mt();function f(){l({title:"Web synths collection",text:"Look at this online synthesizer collection. No need to install anything - just your browser and any MIDI controller will do.",url:location.href})}return(o,m)=>(g(),b("div",xe,[h("div",ve,[A(o.$slots,"default"),h("div",{class:"flex justify-center",ref_key:"counters",ref:e},[u(a)?(g(),b("div",we,[h("div",_e,L(t.synths),1),Te])):M("",!0),u(a)&&i.value>0?(g(),b("div",Se,[h("div",Ie,L(u(n).toFixed())+"+",1),$e])):M("",!0)],512),u(c)?(g(),b("button",{key:0,class:"text-white py-2 px-4 mt-6 shadow-lg rounded-lg cursor-pointer bg-green-600 -hover-translate-y-2px transition",onClick:m[0]||(m[0]=y=>f())},"Share now to save for later")):M("",!0)])]))}},ke=h("h2",{class:"text-lg font-bold"},"Welcome to our free web synth collection!",-1),Oe=h("p",null,[h("a",{href:"https://playtronica.com",target:"_blank",rel:"noopener"},"Playtronica"),T(" is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. "),h("a",{href:"https://chromatone.center",target:"_blank",rel:"noopener"},"Chromatone"),T(" is a visual language for music education, research, and performance. We share our passion for web-based music instruments. Welcome to the community!")],-1),Ne=JSON.parse('{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","frontmatter":{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","date":"2023-06-22T00:00:00.000Z","layout":"home"},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1692108519000}'),Ee={name:"index.md"},Me=Object.assign(Ee,{setup(t){return(e,s)=>(g(),b("div",null,[C(te),C(Ce,null,{default:w(()=>[ke,Oe]),_:1}),C(ye,null,{button:w(()=>[T("JOIN THE COMMUNITY")]),notice:w(()=>[T("Your access status will be saved per device and you won't need to enter your e-mail again.")]),default:w(()=>[T(" We are building a community of web-based musicians. Type in your e-mail to instantly get full access to the collection and occasionally receive community updates. ")]),_:1})]))}});export{Ne as __pageData,Me as default}; diff --git a/assets/index.md.41cab868.lean.js b/assets/index.md.41cab868.lean.js deleted file mode 100644 index f50f6ea9..00000000 --- a/assets/index.md.41cab868.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{u as at,a as ut,b as pt,c as gt,d as mt}from"./chunks/theme.10ba8259.js";import{r as x,b as ot,w as rt,f as ht,h as I,a2 as k,i as g,j as b,u,a0 as bt,I as yt,B as h,p as L,l as z,x as M,M as C,v as w,C as xt,D as vt,_ as wt,q as W,J as _t,K as Tt,S as St,a3 as R,a4 as It,m as T,k as A,a5 as Y,a6 as X,Z as q,T as $t}from"./chunks/framework.7c22cbc0.js";const O=x(!1),U=x(!1),Ct=x(!1),B=at("storedEmail",""),V=at("storedName",""),Z=x(!1),$=x(""),H=x(""),kt=ot(()=>dt($.value)),J=x(!1);function dt(t){return/^[^@]+@\w+(\.\w+)+\w$/.test(t)}function Ot(){B.value="",V.value="",Z.value=!1,O.value=!1}function K(){return J.value||(rt(O,t=>{t&&(U.value=!1)}),ht(()=>{B.value&&(O.value=!0)}),J.value=!0),{isAccessGranted:O,isValidEmail:kt,email:$,name:H,grantAccess:Lt,isSent:Z,isFormOpen:U,checkAvailability:Ct,storedEmail:B,storedName:V,resetEmail:Ot}}const Et="https://db.chromatone.center/flows/trigger/f36a3461-c476-4ce5-88c9-eba2216083b0";async function Lt(){if(!(!$.value&&!dt($.value))&&(O.value=!0,!Z.value)){Z.value=!0;try{const t={email:$.value,name:H.value.slice(0,30)};B.value=$.value,V.value=H.value;const e=await fetch(Et,{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(t)});console.log(e==null?void 0:e.json())}catch(t){console.error(t)}}}const Dt=JSON.parse('[{"id":1,"status":"published","sort":1,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.730Z","title":"Dotpiano","url":"https://dotpiano.com/","content":null,"cover":"fd81d5c3-4cb6-41eb-9689-d5f7aba2b8a6","tags":null},{"id":3,"status":"published","sort":3,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.748Z","title":"TouchME by Chromatone","url":"https://touchme.chromatone.center/","content":null,"cover":"6e97f4ab-c2f7-4e90-9c26-7518dbfddb3a","tags":null},{"id":14,"status":"published","sort":4,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.765Z","title":"Juno-106","url":"http://juno-106.js.org/","content":null,"cover":"d4fad441-c1a0-4ccc-9c0d-d8bfb79f9094","tags":null},{"id":26,"status":"published","sort":5,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.816Z","title":"Learning synths with Ableton","url":"https://learningsynths.ableton.com/","content":null,"cover":"f5c81f00-fc0e-40ad-96ce-a1834709253a","tags":null},{"id":30,"status":"published","sort":5,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.800Z","title":"DX7 Synth","url":"https://mmontag.github.io/dx7-synth-js/","content":null,"cover":"01eacfd8-892d-41de-b928-50b686a87400","tags":null},{"id":32,"status":"published","sort":5,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.784Z","title":"Sampler synth","url":"https://play.playtronica.com/","content":null,"cover":"749cb332-eb5e-40c6-bb36-fb87bb25a834","tags":null},{"id":10,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.837Z","title":"Websynths","url":"http://websynths.com/","content":null,"cover":"072cf912-9966-4d3f-9823-36e75fb8ada9","tags":null},{"id":19,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.859Z","title":"Theremin","url":"https://www.femurdesign.com/theremin/","content":null,"cover":"f4ca5ef9-132a-4e56-80fb-21bd0fd0b3f6","tags":null},{"id":29,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.891Z","title":"Elementary synth","url":"https://chromatone.center/practice/synth/elementary/","content":null,"cover":"14f5d908-fba2-451f-8bec-a922cc5672c7","tags":null},{"id":22,"status":"published","sort":7,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.875Z","title":"Disco-computer","url":"http://www.disco-computer.com/synthesizer/synth.html","content":null,"cover":"1ac14701-0530-4ca6-b516-45d5f9523819","tags":null},{"id":31,"status":"published","sort":12,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.906Z","title":"Video Sampler","url":"https://seeing-sound.netlify.app/","content":null,"cover":"a4e5d9b7-1b64-4c31-aed4-467e2c6cba32","tags":null},{"id":27,"status":"published","sort":14,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.918Z","title":"Viktor NV-1","url":"http://nicroto.github.io/viktor/","content":null,"cover":"1c104eeb-dc14-4d3b-bb8e-14accb2184c3","tags":null},{"id":17,"status":"published","sort":30,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.930Z","title":"Sound Trap","url":"https://www.soundtrap.com/","content":null,"cover":"328c8c51-e7d4-48bd-9c3d-6dea5184cad5","tags":null},{"id":6,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.181Z","title":"MIDI–driven Web Audio","url":"https://webaudiodemos.appspot.com/midi-synth/index.html","content":null,"cover":"f268f0dc-b091-4799-885b-0a5eecfdcbec","tags":null},{"id":8,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.088Z","title":"Meet the Heisenberg","url":"https://www.audiotool.com/product/device/heisenberg/","content":null,"cover":"88c6fe9d-033c-4aac-a946-278e729e5f05","tags":null},{"id":9,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.141Z","title":"Cardboard Synth","url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","content":null,"cover":"3406a3fa-5e4d-4efc-a5ac-c6c8ee3abf72","tags":null},{"id":11,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.126Z","title":"Tanguy synth","url":"http://tanguysynth.com/","content":null,"cover":"16a499c4-661f-48b5-b308-dd7ea77f335d","tags":null},{"id":12,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.109Z","title":"MOD synth","url":"http://mod-synth.io/","content":null,"cover":"dd13c72f-d1ee-4197-b8a2-f24c162d5858","tags":null},{"id":13,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.076Z","title":"OLIF SY1K","url":"http://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","content":null,"cover":"44234157-4872-4e35-baec-a7d073a7258d","tags":null},{"id":15,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.059Z","title":"Note Sculptor","url":"http://www.noisesculptor.com/","content":null,"cover":"3b9d921b-79da-4923-9cd2-bbc826561a93","tags":null},{"id":16,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.159Z","title":"WebAudioSynth V2","url":"http://aikelab.net/websynthv2/","content":null,"cover":"7980d0af-e534-4383-a36c-0b116a06499e","tags":null},{"id":18,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.944Z","title":"Samplestich","url":"http://samplestitch.com.s3-website-us-east-1.amazonaws.com/","content":null,"cover":"0f272d97-7882-4797-9890-97c3b75149a4","tags":null},{"id":20,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.032Z","title":"Omni","url":"https://femurdesign.com/omni/","content":null,"cover":"82c94f42-0449-45ea-924d-7365ba51af20","tags":null},{"id":21,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.016Z","title":"Web Modular","url":"https://www.g200kg.com/docs/webmodular/","content":null,"cover":"5bb158d2-cfcc-46d9-acd5-6cf3312d7678","tags":null},{"id":23,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.000Z","title":"Online sequencer","url":"https://onlinesequencer.net/369477","content":null,"cover":"efdc67a4-4cfc-4a4b-a704-1b939fbe7fc4","tags":null},{"id":24,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.987Z","title":"PixelSynth","url":"https://ojack.github.io/PIXELSYNTH/","content":null,"cover":"59ec0d0b-6bcf-4c50-8d76-5fe624105c0c","tags":null},{"id":25,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.970Z","title":"Acid Machine 2","url":"http://errozero.co.uk/acid-machine/","content":null,"cover":"380cdb0d-4a68-44a7-b24c-2b655f26ebcd","tags":null},{"id":28,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.958Z","title":"WebSID Commodore 64","url":"http://www.igorski.nl/experiment/websid","content":null,"cover":"e39565a0-15fa-4c3a-9bc7-aa5a613dd19f","tags":null}]'),Nt=I({inject:["manager"],props:{index:{type:Number,required:!0},disabled:{type:Boolean,default:!1}},data(){return{}},watch:{index(t){this.$el&&this.$el.sortableInfo&&(this.$el.sortableInfo.index=t)},disabled(t){t?this.removeDraggable():this.setDraggable(this.index)}},mounted(){const{disabled:t,index:e}=this.$props;t||this.setDraggable(e)},beforeUnmount(){this.disabled||this.removeDraggable()},methods:{setDraggable(t){const e=this.$el;e.sortableInfo={index:t,manager:this.manager},this.ref={node:e},this.manager.add(this.ref)},removeDraggable(){this.manager.remove(this.ref)}}});class Mt{constructor(){this.refs=[],this.active=null}add(e){this.refs||(this.refs=[]),this.refs.push(e)}remove(e){const s=this.getIndex(e);s!==-1&&this.refs.splice(s,1)}isActive(){return!!this.active}getActive(){return this.refs.find(({node:e})=>{var s,i;return((s=e==null?void 0:e.sortableInfo)===null||s===void 0?void 0:s.index)==((i=this===null||this===void 0?void 0:this.active)===null||i===void 0?void 0:i.index)})||null}getIndex(e){return this.refs.indexOf(e)}getRefs(){return this.refs}getOrderedRefs(){return this.refs.sort((e,s)=>e.node.sortableInfo.index-s.node.sortableInfo.index)}}const E=t=>t.touches!=null;function j(t,e){return!!t&&Object.prototype.hasOwnProperty.call(t,e)}function Wt(t,e,s){const i=t.slice(0);if(s>=i.length){let n=s-i.length;for(;n--+1;)i.push(void 0)}return i.splice(s,0,i.splice(e,1)[0]),i}function At(t,e){const s=t.slice(0);return e>=s.length||s.splice(e,1),s}function Bt(t,e,s){const i=t.slice(0);return e===i.length?i.push(s):i.splice(e,0,s),i}const _={start:["touchstart","mousedown"],move:["touchmove","mousemove"],end:["touchend","mouseup"],cancel:["touchcancel","keyup"]};function Q(t,e){for(;t;){if(e(t))return t;t=t.parentNode}}function tt(t,e,s){return se?e:s}function D(t){return t.substr(-2)==="px"?parseFloat(t):0}function et(t){const e=window.getComputedStyle(t);return{top:D(e.marginTop),right:D(e.marginRight),bottom:D(e.marginBottom),left:D(e.marginLeft)}}function N(t,e="page"){const s=`${e}X`,i=`${e}Y`;return{x:E(t)?t.touches[0][s]:t[s],y:E(t)?t.touches[0][i]:t[i]}}function st(t){const e=[t];for(;t;t=t.offsetParent)e.unshift(t);return e}function Zt(t,e){const s=st(t),i=st(e);if(s[0]!=i[0])throw"No common ancestor!";for(let n=0;n{n.type!=="file"&&e[a]&&(n.value=e[a].value)}),s}function Pt(t,e,s){if(typeof t=="string"&&(t=+t),Array.isArray(t)||(t=[t,t]),t.length!==2)throw new Error(`lockOffset prop of SortableContainer should be a single value or an array of exactly two values. Given ${t}`);const[i,n]=t;return[nt(i,e,s),nt(n,e,s)]}function nt(t,e,s){let i=t,n=t,a="px";if(typeof t=="string"){const l=/^[+-]?\d*(?:\.\d*)?(px|%)$/.exec(t);if(l===null)throw new Error(`lockOffset value should be a number or a string of a number followed by "px" or "%". Given ${t}`);i=n=parseFloat(t),a=l[1]}if(!isFinite(i)||!isFinite(n))throw new Error(`lockOffset value should be a finite. Given ${t}`);return a==="%"&&(i=i*e/100,n=n*s/100),{x:i,y:n}}function lt(t=[]){for(let e=0,s=t.length;e[]},lockAxis:{type:String,default:""},helperClass:{type:String,default:""},contentWindow:{type:Object,default:null},shouldCancelStart:{type:Function,default:t=>["input","textarea","select","option","button"].indexOf(t.target.tagName.toLowerCase())!==-1},getHelperDimensions:{type:Function,default:({node:t})=>({width:t.offsetWidth,height:t.offsetHeight})}},emits:["sort-start","sort-move","sort-end","sort-cancel","sort-insert","sort-remove","update:list"],data(){let t=!1;return this.group&&this.SlicksortHub&&(t=!0),{sorting:!1,hub:t?this.SlicksortHub:null,manager:new Mt}},mounted(){this.hub&&(this.id=this.hub.getId()),this.container=this.$el,this.document=this.container.ownerDocument||document,this._window=this.contentWindow||window,this.scrollContainer=this.useWindowAsScrollContainer?{scrollLeft:0,scrollTop:0}:this.container,this.events={start:this.handleStart,move:this.handleMove,end:this.handleEnd};for(const t in this.events)j(this.events,t)&&_[t].forEach(e=>this.container.addEventListener(e,this.events[t]));this.hub&&this.hub.addContainer(this)},beforeUnmount(){for(const t in this.events)j(this.events,t)&&_[t].forEach(e=>this.container.removeEventListener(e,this.events[t]));this.hub&&this.hub.removeContainer(this),this.dragendTimer&&clearTimeout(this.dragendTimer),this.cancelTimer&&clearTimeout(this.cancelTimer),this.pressTimer&&clearTimeout(this.pressTimer),this.autoscrollInterval&&clearInterval(this.autoscrollInterval)},methods:{handleStart(t){const{distance:e,shouldCancelStart:s}=this.$props;if(!E(t)&&t.button===2||s(t))return!1;this._touched=!0,this._pos=N(t);const i=t.target,n=Q(i,a=>a.sortableInfo!=null);if(n&&n.sortableInfo&&this.nodeIsChild(n)&&!this.sorting){const{useDragHandle:a}=this.$props,{index:l}=n.sortableInfo;if(a&&!Q(i,c=>c.sortableHandle!=null))return;this.manager.active={index:l},i.tagName.toLowerCase()==="a"&&t.preventDefault(),e||(this.pressDelay===0?this.handlePress(t):this.pressTimer=G(()=>this.handlePress(t),this.pressDelay))}},nodeIsChild(t){return t.sortableInfo.manager===this.manager},handleMove(t){const{distance:e,pressThreshold:s}=this.$props;if(!this.sorting&&this._touched){const i=N(t);this._delta={x:this._pos.x-i.x,y:this._pos.y-i.y};const n=Math.abs(this._delta.x)+Math.abs(this._delta.y);!e&&(!s||s&&n>=s)?(this.cancelTimer&&clearTimeout(this.cancelTimer),this.cancelTimer=G(this.cancel,0)):e&&n>=e&&this.manager.isActive()&&this.handlePress(t)}},handleEnd(){if(!this._touched)return;const{distance:t}=this.$props;this._touched=!1,t||this.cancel()},cancel(){this.sorting||(this.pressTimer&&clearTimeout(this.pressTimer),this.manager.active=null,this.hub&&this.hub.cancel())},handleSortCancel(t){(E(t)||t.key===this.cancelKey)&&(this.newIndex=this.index,this.canceling=!0,this.translate={x:0,y:0},this.animateNodes(),this.handleSortEnd(t))},handlePress(t){t.stopPropagation();const e=this.manager.getActive();if(e){const{getHelperDimensions:s,helperClass:i,hideSortableGhost:n,appendTo:a}=this.$props,{node:l}=e,{index:c}=l.sortableInfo,f=et(l),o=this.container.getBoundingClientRect(),m=s({index:c,node:l});this.node=l,this.margin=f,this.width=m.width,this.height=m.height,this.marginOffset={x:this.margin.left+this.margin.right,y:Math.max(this.margin.top,this.margin.bottom)},this.boundingClientRect=l.getBoundingClientRect(),this.containerBoundingRect=o,this.index=c,this.newIndex=c;const y=it(l);this.helper=this.document.querySelector(a).appendChild(y),this.helper.style.position="fixed",this.helper.style.top=`${this.boundingClientRect.top-f.top}px`,this.helper.style.left=`${this.boundingClientRect.left-f.left}px`,this.helper.style.width=`${this.width}px`,this.helper.style.height=`${this.height}px`,this.helper.style.boxSizing="border-box",this.helper.style.pointerEvents="none",n&&(this.sortableGhost=l,l.style.visibility="hidden",l.style.opacity="0"),this.hub&&(this.hub.sortStart(this),this.hub.helper=this.helper,this.hub.ghost=this.sortableGhost),this.intializeOffsets(t,this.boundingClientRect),this.offsetEdge=S(l,this.container),i&&this.helper.classList.add(...i.split(" ")),this.listenerNode=E(t)?l:this._window,_.move.forEach(r=>this.listenerNode.addEventListener(r,this.handleSortMove)),_.end.forEach(r=>this.listenerNode.addEventListener(r,this.handleSortEnd)),_.cancel.forEach(r=>this.listenerNode.addEventListener(r,this.handleSortCancel)),this.sorting=!0,this.$emit("sort-start",{event:t,node:l,index:c})}},handleSortMove(t){if(t.preventDefault(),this.updatePosition(t),this.hub){const e=this.list[this.index];this.hub.handleSortMove(t,e)}(!this.hub||this.hub.isDest(this))&&(this.animateNodes(),this.autoscroll()),this.$emit("sort-move",{event:t})},handleDropOut(){const t=this.list[this.index],e=At(this.list,this.index);return this.$emit("sort-remove",{oldIndex:this.index}),this.$emit("update:list",e),t},handleDropIn(t){const e=Bt(this.list,this.newIndex,t);this.$emit("sort-insert",{newIndex:this.newIndex,value:t}),this.$emit("update:list",e),this.handleDragEnd()},handleDragOut(){this.autoscrollInterval&&(clearInterval(this.autoscrollInterval),this.autoscrollInterval=null),this.hub.isSource(this)?(this.translate={x:1e4,y:1e4},this.animateNodes()):(this.manager.getRefs().forEach(t=>{t.node.style.transform=""}),this.dragendTimer=G(this.handleDragEnd,this.transitionDuration||0))},handleDragEnd(){this.autoscrollInterval&&(clearInterval(this.autoscrollInterval),this.autoscrollInterval=null),lt(this.manager.getRefs()),this.sortableGhost&&(this.sortableGhost.remove(),this.sortableGhost=null),this.dragendTimer&&(clearTimeout(this.dragendTimer),this.dragendTimer=null),this.manager.active=null,this._touched=!1,this.sorting=!1},intializeOffsets(t,e){const{useWindowAsScrollContainer:s,containerBoundingRect:i,_window:n}=this;this.marginOffset={x:this.margin.left+this.margin.right,y:Math.max(this.margin.top,this.margin.bottom)},this._axis={x:this.axis.indexOf("x")>=0,y:this.axis.indexOf("y")>=0},this.initialOffset=N(t),this.initialScroll={top:this.scrollContainer.scrollTop,left:this.scrollContainer.scrollLeft},this.initialWindowScroll={top:window.pageYOffset,left:window.pageXOffset},this.translate={x:0,y:0},this.minTranslate={},this.maxTranslate={},this._axis.x&&(this.minTranslate.x=(s?0:i.left)-e.left-this.width/2,this.maxTranslate.x=(s?n.innerWidth:i.left+i.width)-e.left-this.width/2),this._axis.y&&(this.minTranslate.y=(s?0:i.top)-e.top-this.height/2,this.maxTranslate.y=(s?n.innerHeight:i.top+i.height)-e.top-this.height/2)},handleDragIn(t,e,s){if(this.hub.isSource(this))return;this.dragendTimer&&(this.handleDragEnd(),clearTimeout(this.dragendTimer),this.dragendTimer=null);const i=this.manager.getRefs();this.index=i.length,this.manager.active={index:this.index};const n=this.container.getBoundingClientRect(),a=s.getBoundingClientRect();this.containerBoundingRect=n,this.sortableGhost=it(e),this.container.appendChild(this.sortableGhost);const l=this.sortableGhost.getBoundingClientRect();this.boundingClientRect=l,this.margin=et(this.sortableGhost),this.width=l.width,this.height=l.height,this.offsetEdge=S(this.sortableGhost,this.container),this.intializeOffsets(t,l),this.initialOffset.x+=l.x-a.x,this.initialOffset.y+=l.y-a.y,this.sorting=!0},handleSortEnd(t){this.listenerNode&&(_.move.forEach(i=>this.listenerNode.removeEventListener(i,this.handleSortMove)),_.end.forEach(i=>this.listenerNode.removeEventListener(i,this.handleSortEnd)),_.cancel.forEach(i=>this.listenerNode.removeEventListener(i,this.handleSortCancel)));const e=this.manager.getRefs();this.helper&&this.helperClass&&this.helper.classList.remove(...this.helperClass.split(" ")),this.autoscrollInterval&&clearInterval(this.autoscrollInterval),this.autoscrollInterval=null;const s=()=>{this.helper&&(this.helper.remove(),this.helper=null),this.hideSortableGhost&&this.sortableGhost&&(this.sortableGhost.style.visibility="",this.sortableGhost.style.opacity=""),lt(e),this.hub&&!this.hub.isDest(this)?this.canceling?this.hub.cancel():this.hub.handleSortEnd():this.canceling?this.$emit("sort-cancel",{event:t}):(this.$emit("sort-end",{event:t,oldIndex:this.index,newIndex:this.newIndex}),this.$emit("update:list",Wt(this.list,this.index,this.newIndex))),this.manager.active=null,this._touched=!1,this.canceling=!1,this.sorting=!1};this.transitionDuration||this.draggedSettlingDuration?this.transitionHelperIntoPlace(e,s):s()},transitionHelperIntoPlace(t,e){if(this.draggedSettlingDuration===0||t.length===0||!this.helper)return Promise.resolve();const s=t[this.index].node;let i=0,n=0;const a={top:window.pageYOffset-this.initialWindowScroll.top,left:window.pageXOffset-this.initialWindowScroll.left};if(this.hub&&!this.hub.isDest(this)&&!this.canceling){const o=this.hub.getDest();if(!o)return;const m=o.newIndex,y=o.manager.getOrderedRefs(),r=m0?i+=o.offsetLeft+o.offsetWidth-(s.offsetLeft+s.offsetWidth):i+=o.offsetLeft-s.offsetLeft,n=-m.top,this.translate&&this.translate.y>0?n+=o.offsetTop+o.offsetHeight-(s.offsetTop+s.offsetHeight):n+=o.offsetTop-s.offsetTop}const l=this.draggedSettlingDuration!==null?this.draggedSettlingDuration:this.transitionDuration;F(this.helper,`translate3d(${i}px,${n}px, 0)`,`${l}ms`);const c=o=>{(!o||o.propertyName==="transform")&&(clearTimeout(f),F(this.helper),e())},f=setTimeout(c,l+10);this.helper.addEventListener("transitionend",c)},updatePosition(t){const{lockAxis:e,lockToContainerEdges:s}=this.$props,i=N(t),n={x:i.x-this.initialOffset.x,y:i.y-this.initialOffset.y};if(n.y-=window.pageYOffset-this.initialWindowScroll.top,n.x-=window.pageXOffset-this.initialWindowScroll.left,this.translate=n,s){const[a,l]=Pt(this.lockOffset,this.height,this.width),c={x:this.width/2-a.x,y:this.height/2-a.y},f={x:this.width/2-l.x,y:this.height/2-l.y};this.minTranslate.x&&this.maxTranslate.x&&(n.x=tt(this.minTranslate.x+c.x,this.maxTranslate.x-f.x,n.x)),this.minTranslate.y&&this.maxTranslate.y&&(n.y=tt(this.minTranslate.y+c.y,this.maxTranslate.y-f.y,n.y))}e==="x"?n.y=0:e==="y"&&(n.x=0),this.helper&&(this.helper.style.transform=`translate3d(${n.x}px,${n.y}px, 0)`)},animateNodes(){const{transitionDuration:t,hideSortableGhost:e}=this.$props,s=this.manager.getOrderedRefs(),i={left:this.scrollContainer.scrollLeft-this.initialScroll.left,top:this.scrollContainer.scrollTop-this.initialScroll.top},n={left:this.offsetEdge.left+this.translate.x+i.left,top:this.offsetEdge.top+this.translate.y+i.top},a={top:window.pageYOffset-this.initialWindowScroll.top,left:window.pageXOffset-this.initialWindowScroll.left};this.newIndex=null;for(let l=0,c=s.length;lm?m/2:this.width/2,height:this.height>y?y/2:this.height/2},d={x:0,y:0};let{edgeOffset:p}=s[l];p||(s[l].edgeOffset=p=S(f,this.container));const v=l0&&s[l-1];if(v&&!v.edgeOffset&&(v.edgeOffset=S(v.node,this.container)),o===this.index){e&&(this.sortableGhost=f,f.style.visibility="hidden",f.style.opacity="0");continue}t&&(f.style.transitionDuration=`${t}ms`),this._axis.x?this._axis.y?othis.containerBoundingRect.width-r.width&&v&&(d.x=v.edgeOffset.left-p.left,d.y=v.edgeOffset.top-p.top),this.newIndex===null&&(this.newIndex=o)):o>this.index&&(n.left+a.left+r.width>=p.left&&n.top+a.top+r.height>=p.top||n.top+a.top+r.height>=p.top+y)&&(d.x=-(this.width+this.marginOffset.x),p.left+d.xthis.index&&n.left+a.left+r.width>=p.left?(d.x=-(this.width+this.marginOffset.x),this.newIndex=o):othis.index&&n.top+a.top+r.height>=p.top?(d.y=-(this.height+this.marginOffset.y),this.newIndex=o):o=this.maxTranslate.y-this.height/2?(e.y=1,s.y=i.y*Math.abs((this.maxTranslate.y-this.height/2-t.y)/this.height)):t.x>=this.maxTranslate.x-this.width/2?(e.x=1,s.x=i.x*Math.abs((this.maxTranslate.x-this.width/2-t.x)/this.width)):t.y<=this.minTranslate.y+this.height/2?(e.y=-1,s.y=i.y*Math.abs((t.y-this.height/2-this.minTranslate.y)/this.height)):t.x<=this.minTranslate.x+this.width/2&&(e.x=-1,s.x=i.x*Math.abs((t.x-this.width/2-this.minTranslate.x)/this.width)),this.autoscrollInterval&&(clearInterval(this.autoscrollInterval),this.autoscrollInterval=null),(e.x!==0||e.y!==0)&&(this.autoscrollInterval=window.setInterval(()=>{const n={left:1*s.x*e.x,top:1*s.y*e.y};this.useWindowAsScrollContainer?this._window.scrollBy(n.left,n.top):(this.scrollContainer.scrollTop+=n.top,this.scrollContainer.scrollLeft+=n.left),this.translate.x+=n.left,this.translate.y+=n.top,this.animateNodes()},5))}}}),ct=I({name:"SlickItem",mixins:[Nt],props:{tag:{type:String,default:"div"}},render(){var t,e;return k(this.tag,(e=(t=this.$slots).default)===null||e===void 0?void 0:e.call(t))}}),Gt=I({name:"SlickList",mixins:[Rt],props:{tag:{type:String,default:"div"},itemKey:{type:[String,Function],default:"id"}},render(){var t,e;return this.$slots.item?k(this.tag,this.list.map((s,i)=>{let n;if(s!=null){if(typeof this.itemKey=="function")n=this.itemKey(s);else if(typeof s=="object"&&j(s,this.itemKey)&&typeof s[this.itemKey]=="string")n=s[this.itemKey];else if(typeof s=="string")n=s;else throw new Error("Cannot find key for item, use the item-key prop and pass a function or string");return k(ct,{key:n,index:i},{default:()=>{var a,l;return(l=(a=this.$slots).item)===null||l===void 0?void 0:l.call(a,{item:s,index:i})}})}})):k(this.tag,(e=(t=this.$slots).default)===null||e===void 0?void 0:e.call(t))}}),zt=I({props:{tag:{type:String,default:"span"}},mounted(){this.$el.sortableHandle=!0},render(){var t,e;return k(this.tag,(e=(t=this.$slots).default)===null||e===void 0?void 0:e.call(t))}}),Ht={key:0,d:"M30.336 12.547l-10.172-1.074L16 2.133l-4.164 9.34l-10.172 1.074l7.598 6.848L7.14 29.398L16 24.29l8.86 5.11l-2.122-10.004z",fill:"#ffaa00"},jt={key:1,d:"M16 2.125l-.906 2.063l-3.25 7.28l-7.938.845l-2.25.25l1.688 1.5l5.906 5.343l-1.656 7.813l-.469 2.187l1.969-1.125l6.906-4l6.906 4l1.969 1.125l-.469-2.187l-1.656-7.813l5.906-5.343l1.688-1.5l-2.25-.25l-7.938-.844l-3.25-7.281zm0 4.906l2.563 5.782l.25.53l.562.063l6.281.656l-4.687 4.22l-.438.405l.125.563l1.313 6.156l-5.469-3.125l-.5-.312l-.5.312l-5.469 3.125l1.313-6.156l.125-.563l-.438-.406l-4.687-4.218l6.281-.657l.563-.062l.25-.531z",fill:"#888888"},Ft=I({__name:"SynthFav",props:{url:{type:String,default:""}},setup(t){const s=ut("fav:"+t.url,!1);function i(n){s.value=!s.value,console.log(s.value)}return(n,a)=>(g(),b("svg",{onClick:a[0]||(a[0]=bt(l=>i(t.url),["stop","prevent"])),xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",viewBox:"0 0 32 32"},[u(s)?(g(),b("path",Ht)):(g(),b("path",jt))]))}}),ft=t=>(xt("data-v-2d995d47"),t=t(),vt(),t),Vt=["src","alt"],Kt=ft(()=>h("div",{class:"flex-1"},null,-1)),Yt={class:"p-4 flex items-center justify-between w-full"},Xt={class:"text-md font-bold flex items-center gap-2 flex-1"},qt={class:"flex-1"},Ut=ft(()=>h("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",viewBox:"0 0 32 32"},[h("path",{d:"M4 7v2h24V7zm0 8v2h24v-2zm0 8v2h24v-2z",fill:"#888888"})],-1)),Jt=I({__name:"SynthCard",props:{off:{type:Boolean,default:!1},title:{type:String,default:""},description:{type:String,default:""},cover:{type:String,default:""},url:{type:String,default:""}},setup(t){const e=t,{checkAvailability:s,isFormOpen:i}=K(),n=x(null);rt(s,async l=>{try{(await fetch("https://corsproxy.io/?"+e.url)).status==200?n.value=!0:n.value=!1}catch{n.value=!1}});function a(){e.off?i.value=!i.value:window.open(e.url,"_blank")}return(l,c)=>{const f=yt("ClientOnly");return g(),b("button",{class:"flex flex-col text-left relative min-h-50 card p-0 bg-light-300 shadow-lg flex flex-col dark-bg-dark-300 -hover-translate-y-2px transition hover-shadow-xl rounded-xl overflow-hidden relative",onClick:a},[(g(),b("img",{key:t.title,height:"200",width:"1000",src:`/cover/${t.title.toLowerCase().split(" ").join("-")}.webp`,alt:`${t.title} illustration`},null,8,Vt)),Kt,h("div",Yt,[h("div",Xt,[h("div",qt,L(t.title),1),u(s)?(g(),b("div",{key:0,class:z(["w-2 h-2 rounded-full shadow-inset",{"bg-green-500":n.value===!0,"bg-red-500":n.value===!1}])},null,2)):M("",!0),C(f,null,{default:w(()=>[C(Ft,{class:"scale-70 w-10",url:t.url},null,8,["url"])]),_:1}),C(u(zt),{class:"scale-80 opacity-40 cursor-grab absolute top-2 right-2"},{default:w(()=>[Ut]),_:1})])])])}}});const Qt=wt(Jt,[["__scopeId","data-v-2d995d47"]]);const te={__name:"SynthList",setup(t){const{isAccessGranted:e}=K(),s=x(Dt);function i(n){return!e.value&&n>5}return(n,a)=>(g(),W(u(Gt),{class:"flex flex-wrap items-stretch gap-4 md-gap-6 m-2 lg-m-8",list:s.value,"onUpdate:list":a[0]||(a[0]=l=>s.value=l),axis:"xy","use-drag-handle":""},{default:w(()=>[(g(!0),b(_t,null,Tt(s.value,(l,c)=>(g(),W(u(ct),{class:"flex",style:{flex:"1 1 240px"},key:l.id,index:c},{default:w(()=>[(g(),W(Qt,{style:St({opacity:i(c)?.8:1}),title:l.title,description:l.description,cover:l.cover,url:l.url,key:l.id,off:i(c)},null,8,["style","title","description","cover","url","off"]))]),_:2},1032,["index"]))),128))]),_:1},8,["list"]))}};const ee=h("path",{d:"M7.219 5.781L5.78 7.22L14.563 16L5.78 24.781L7.22 26.22L16 17.437l8.781 8.782l1.438-1.438L17.437 16l8.782-8.781L24.78 5.78L16 14.563z",fill:"#888888"},null,-1),se=[ee],ie={key:0,class:"flex flex-col gap-4 max-w-45ch text-center"},ne={class:"text-3xl font-bold"},le=h("div",{class:"text-xl"},"Enjoy your web-synthesizers hub",-1),ae={class:"text-sm flex gap-2 justify-center"},oe=h("svg",{class:"absolute",xmlns:"http://www.w3.org/2000/svg",width:"100",height:"100",viewBox:"0 0 32 32"},[h("path",{d:"M16 4.688L3.781 16.905l1.438 1.407L16 7.53l10.781 10.782l1.438-1.407zm0 7L3.781 23.905l1.438 1.407L16 14.53l10.781 10.781l1.438-1.406z",fill:"#888888"})],-1),re=[oe],he={key:1,class:"flex flex-col gap-8 relative pt-8 items-center"},de={class:"text-center max-w-45ch",for:"email"},ce={class:"flex gap-4 flex-col w-full"},fe={class:"flex items-center gap-2"},ue=h("div",{class:"p-2 w-20 font-bold text-right"},"E-mail*",-1),pe={class:"flex items-center gap-2"},ge=h("div",{class:"p-2 w-20 font-bold text-right"},"Name",-1),me=["disabled"],be={class:"text-xs opacity-60 text-center max-w-45ch mx-auto"},ye={__name:"TheForm",setup(t){const{name:e,email:s,isValidEmail:i,isFormOpen:n,grantAccess:a,storedEmail:l,storedName:c,resetEmail:f,isAccessGranted:o}=K();function m(){window.scrollTo({top:0,left:0,behavior:"smooth"})}return(y,r)=>(g(),W($t,{name:"slide"},{default:w(()=>[h("div",{class:z(["z-10 min-h-40dvh bottom-0 right-0 left-0 bg-light-800 bg-opacity-80 backdrop-blur flex flex-col items-center gap-4 justify-center dark-bg-dark-200 dark-bg-opacity-80 p-8 shadow",{sticky:u(n)}])},[R((g(),b("svg",{class:"absolute top-4 right-4 text-4xl cursor-pointer",onClick:r[0]||(r[0]=d=>n.value=!1),xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 32 32"},se,512)),[[It,u(n)]]),u(o)?(g(),b("div",ie,[h("div",ne,"Hello, "+L(u(c))+"!",1),le,h("div",ae,[T(L(u(l)),1),h("span",{class:"opacity-20 hover-opacity-50 transition cursor-pointer",onClick:r[1]||(r[1]=(...d)=>u(f)&&u(f)(...d))},"Log out")]),h("div",{class:"flex justify-center cursor-pointer p-2 opacity-50 hover-opacity-100 transition",onClick:r[2]||(r[2]=d=>m())},re)])):(g(),b("div",he,[h("label",de,[A(y.$slots,"default")]),h("div",ce,[h("label",fe,[ue,R(h("input",{class:"flex-1 p-4 md-p-4 rounded-xl bg-light-200 shadow-md dark-bg-dark-400 flex-1",ref:"target",maxlength:"30","onUpdate:modelValue":r[3]||(r[3]=d=>X(s)?s.value=d:null),id:"email",name:"email",type:"email",onKeydown:r[4]||(r[4]=q(d=>u(a)(),["enter"])),placeholder:"your@gmail.com"},null,544),[[Y,u(s)]])]),h("label",pe,[ge,R(h("input",{class:"flex-1 p-4 md-p-4 rounded-xl bg-light-200 shadow-md dark-bg-dark-400","onUpdate:modelValue":r[5]||(r[5]=d=>X(e)?e.value=d:null),id:"name",name:"name",type:"text",onKeydown:r[6]||(r[6]=q(d=>u(a)(),["enter"])),placeholder:"optional"},null,544),[[Y,u(e)]])]),h("button",{class:z(["text-sm md-text-md p-4 font-bold md-p-4 rounded-xl shadow-xl hover-shadow-2xl transition -hover-translate-y-2px active-translate-y-0 active-shadow-md bg-green-400 dark-bg-green-700",{"grayscale-50":!u(i)}]),onClick:r[7]||(r[7]=d=>u(a)()),disabled:!u(i)},[A(y.$slots,"button",{},()=>[T("GET ACCESS")])],10,me)]),h("div",be,[A(y.$slots,"notice",{},()=>[T("Your access status will be saved per device and you won't need to enter your e-mail again.")])])]))],2)]),_:3}))}},xe={class:"bg-light-300 dark-bg-dark-700 dark-text-light-200 text-center line-height-loose text-md py-16"},ve={class:"mx-auto max-w-75ch intro md-text-lg"},we={key:0,class:"p-2 flex flex-col mt-8"},_e={class:"text-4xl font-bold"},Te=h("div",{class:"text-lg"},"web synths",-1),Se={key:1,class:"p-2 flex flex-col mt-8"},Ie={class:"text-4xl font-bold"},$e=h("div",{class:"text-lg"},"web musicians",-1),Ce={__name:"AboutUs",props:{synths:{type:Number,default:30}},setup(t){const e=x(),s=x([]),i=ot(()=>s.value.length),n=pt(i);ht(()=>{fetch("https://corsproxy.io/?https://db.chromatone.center/items/players?limit=-1").then(o=>o.json()).then(({data:o})=>s.value=o)});const a=gt(e),{share:l,isSupported:c}=mt();function f(){l({title:"Web synths collection",text:"Look at this online synthesizer collection. No need to install anything - just your browser and any MIDI controller will do.",url:location.href})}return(o,m)=>(g(),b("div",xe,[h("div",ve,[A(o.$slots,"default"),h("div",{class:"flex justify-center",ref_key:"counters",ref:e},[u(a)?(g(),b("div",we,[h("div",_e,L(t.synths),1),Te])):M("",!0),u(a)&&i.value>0?(g(),b("div",Se,[h("div",Ie,L(u(n).toFixed())+"+",1),$e])):M("",!0)],512),u(c)?(g(),b("button",{key:0,class:"text-white py-2 px-4 mt-6 shadow-lg rounded-lg cursor-pointer bg-green-600 -hover-translate-y-2px transition",onClick:m[0]||(m[0]=y=>f())},"Share now to save for later")):M("",!0)])]))}},ke=h("h2",{class:"text-lg font-bold"},"Welcome to our free web synth collection!",-1),Oe=h("p",null,[h("a",{href:"https://playtronica.com",target:"_blank",rel:"noopener"},"Playtronica"),T(" is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. "),h("a",{href:"https://chromatone.center",target:"_blank",rel:"noopener"},"Chromatone"),T(" is a visual language for music education, research, and performance. We share our passion for web-based music instruments. Welcome to the community!")],-1),Ne=JSON.parse('{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","frontmatter":{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","date":"2023-06-22T00:00:00.000Z","layout":"home"},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1692108519000}'),Ee={name:"index.md"},Me=Object.assign(Ee,{setup(t){return(e,s)=>(g(),b("div",null,[C(te),C(Ce,null,{default:w(()=>[ke,Oe]),_:1}),C(ye,null,{button:w(()=>[T("JOIN THE COMMUNITY")]),notice:w(()=>[T("Your access status will be saved per device and you won't need to enter your e-mail again.")]),default:w(()=>[T(" We are building a community of web-based musicians. Type in your e-mail to instantly get full access to the collection and occasionally receive community updates. ")]),_:1})]))}});export{Ne as __pageData,Me as default}; diff --git a/assets/index.md.be2b63f2.js b/assets/index.md.be2b63f2.js new file mode 100644 index 00000000..f91810df --- /dev/null +++ b/assets/index.md.be2b63f2.js @@ -0,0 +1 @@ +import{u as oe,a as fe,b as pe,c as me,d as ge}from"./chunks/theme.10ba8259.js";import{r as v,b as le,w as re,f as de,h as I,a2 as O,i as m,j as b,u as f,a0 as be,I as ye,B as d,p as D,l as G,x as N,M as C,v as w,C as ve,D as xe,_ as we,q as P,J as _e,K as Te,S as Se,a3 as q,a4 as Ie,m as T,k as A,a5 as K,a6 as U,Z as Y,T as ke}from"./chunks/framework.7c22cbc0.js";const $=v(!1),X=v(!1),Ce=v(!1),W=oe("storedEmail",""),j=oe("storedName",""),B=v(!1),k=v(""),R=v(""),Oe=le(()=>he(k.value)),J=v(!1);function he(e){return/^[^@]+@\w+(\.\w+)+\w$/.test(e)}function $e(){W.value="",j.value="",B.value=!1,$.value=!1}function V(){return J.value||(re($,e=>{e&&(X.value=!1)}),de(()=>{W.value&&($.value=!0)}),J.value=!0),{isAccessGranted:$,isValidEmail:Oe,email:k,name:R,grantAccess:Ee,isSent:B,isFormOpen:X,checkAvailability:Ce,storedEmail:W,storedName:j,resetEmail:$e}}async function Ee(){if(!(!k.value&&!he(k.value))&&($.value=!0,!B.value)){B.value=!0;try{const e={email:k.value,name:R.value.slice(0,30)};W.value=k.value,j.value=R.value;const t=await fetch("https://db.chromatone.center/flows/trigger/f36a3461-c476-4ce5-88c9-eba2216083b0",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(e)});console.log(t==null?void 0:t.json())}catch(e){console.error(e)}}}const De=JSON.parse(`[{"id":1,"status":"published","sort":1,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.730Z","title":"Dotpiano","url":"https://dotpiano.com/","cover":"fd81d5c3-4cb6-41eb-9689-d5f7aba2b8a6","tags":null,"content":null,"decription":null},{"id":3,"status":"published","sort":3,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.748Z","title":"TouchME by Chromatone","url":"https://touchme.chromatone.center/","cover":"6e97f4ab-c2f7-4e90-9c26-7518dbfddb3a","tags":null,"content":null,"decription":null},{"id":14,"status":"published","sort":4,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.765Z","title":"Juno-106","url":"http://juno-106.js.org/","cover":"d4fad441-c1a0-4ccc-9c0d-d8bfb79f9094","tags":null,"content":null,"decription":null},{"id":26,"status":"published","sort":5,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.816Z","title":"Learning synths with Ableton","url":"https://learningsynths.ableton.com/","cover":"f5c81f00-fc0e-40ad-96ce-a1834709253a","tags":null,"content":null,"decription":null},{"id":30,"status":"published","sort":5,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.800Z","title":"DX7 Synth","url":"https://mmontag.github.io/dx7-synth-js/","cover":"01eacfd8-892d-41de-b928-50b686a87400","tags":null,"content":null,"decription":null},{"id":32,"status":"published","sort":5,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.784Z","title":"Sampler synth","url":"https://play.playtronica.com/","cover":"749cb332-eb5e-40c6-bb36-fb87bb25a834","tags":null,"content":null,"decription":null},{"id":10,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.837Z","title":"Websynths","url":"http://websynths.com/","cover":"072cf912-9966-4d3f-9823-36e75fb8ada9","tags":null,"content":null,"decription":null},{"id":19,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.859Z","title":"Theremin","url":"https://www.femurdesign.com/theremin/","cover":"f4ca5ef9-132a-4e56-80fb-21bd0fd0b3f6","tags":null,"content":null,"decription":null},{"id":29,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.891Z","title":"Elementary synth","url":"https://chromatone.center/practice/synth/elementary/","cover":"14f5d908-fba2-451f-8bec-a922cc5672c7","tags":null,"content":null,"decription":null},{"id":37,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-21T14:18:48.099Z","title":"Sympathetic Synthesizer System Mk 1","url":"https://stuartmemo.com/synth/","cover":"9186b1e4-9929-492e-94eb-32a04aa523c8","tags":["keyboard","midi","additive"],"content":null,"decription":null},{"id":22,"status":"published","sort":7,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.875Z","title":"Disco-computer","url":"http://www.disco-computer.com/synthesizer/synth.html","cover":"1ac14701-0530-4ca6-b516-45d5f9523819","tags":null,"content":null,"decription":null},{"id":31,"status":"published","sort":12,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.906Z","title":"Video Sampler","url":"https://seeing-sound.netlify.app/","cover":"a4e5d9b7-1b64-4c31-aed4-467e2c6cba32","tags":null,"content":null,"decription":null},{"id":34,"status":"published","sort":12,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-21T14:00:50.309Z","title":"Fluoresynth by Electric Telepathy","url":"https://electrictelepathy.com/web-apps/fluoresynth/","cover":"d9c0dc12-ede0-49df-aef2-2517fd6ed961","tags":["midi","keyboard"],"content":"## How to play Fluoresynth\\n\\nThere are 3 ways to play notes with Fluoresynth:\\n\\n- Click or tap the onscreen keyboard.\\n- Play with the bottom two rows of keys on your computer keyboard (z, s, x, d, c, v, g, b, h, n, j, m, etc.)\\n- Plug in a MIDI keyboard/device to your computer. MIDI supported in Chrome and Opera.\\n\\nThis app may not load or play sound in older web browsers and operating systems. Audio may sound choppy on low-performance devices.","decription":null},{"id":27,"status":"published","sort":14,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.918Z","title":"Viktor NV-1","url":"http://nicroto.github.io/viktor/","cover":"1c104eeb-dc14-4d3b-bb8e-14accb2184c3","tags":null,"content":null,"decription":null},{"id":35,"status":"published","sort":18,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-21T14:05:27.437Z","title":"VirtualPiano.eu","url":"https://virtualpiano.eu/","cover":"e3f86bf5-68a9-4e0c-bb67-d0f31c26365b","tags":["midi","keyboard"],"content":"VirtualPiano.eu is the online synthesizer that allows you to play 128 musical instruments for free using your PC keyboard, the mouse or by connecting an external MIDI keyboard.\\n\\nYou can adjust Volume, Reverb, Loop and quality. Use the sustain and adjust the octaves, you can also select and set different channels including the one for the drums.\\n\\nCreate your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own. ","decription":"Professional GM mapped WebAudio Piano Synthesizer Engine / MIDI Player"},{"id":36,"status":"published","sort":20,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-21T14:14:48.036Z","title":"Online sequencer","url":"https://onlinesequencer.net/","cover":"d55b5de1-f912-432f-a4e5-8c601643ecb9","tags":["sequencer"],"content":"**Online Sequencer** is a web-based music sequencer that allows users to create music saved online, or on their computer. The piano roll is essential to the sequencer, which is on the left of the screen, with 72 notes from C2-B7 (labelled differently from a piano, C2 on the sequencer corresponds to C1 on a piano). In addition to several parameters which can be modified to change the sound of the music, additional functionality can be accessed via the console.\\n\\nUpon opening the site, users can begin composing and \\"drawing\\" notes on the grid, with the default instrument being Electric Piano. By default, a sequence's time signature is set to 4/4, and the grid spacing is set to 1/4 (16 notes per measure). The note lengths can be adjusted by dragging the dark tab on the right of each note, and precision can be afforded by changing the 'Grid' option to other note divisions. \\n\\n## History\\n\\nOnline Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.\\n\\nBeginning in the fall of 2013, accounts were available but were separate from the music portion of the site. They were only used in the forum and the website chat.\\n\\nIn 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.\\n\\nThe World Update in 2018 added several new instruments and changed the landscape of sound design on the site. The \\"World Update Contest\\" was held for the update.\\n\\nStarting in late 2020, OS began to receive a variety of updates which vastly improved the functionality of the site. These updates introduced features like custom grid sizes, automation with markers, extra reverb options, detune, and distortion. In 2021, the \\"Space Race\\" contest was held, as to see who could work best with the changes.\\n\\nIn late 2022, newer, higher-quality instruments were added. Some of the instruments, such as Electric Piano, Grand Piano, Violin, and Cello got an updated sustained version, while the original versions still exist under the \\"classic\\" designation.\\n\\nCurrently, the 10-Year Anniversary Contest is being held.\\n\\n## Features\\n\\nWithin the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.\\n\\n### Basic features\\n\\nUI features include:\\n\\n- Tempo (10-999 BPM)\\n- Measure count or Time count (MM: SS.ssss)\\n- Time signature (2/4, 3/4, 4/4, 5/4)\\n- Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)\\n- Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)\\n- Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)\\n- Title input\\n- Draw, select, and erase\\n- Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)\\n- Select all, Cut, Copy, and Paste\\n- Zoom options\\n- Export options\\n- Help\\n- Fullscreen\\n- Tooltips\\n\\n### Advanced features\\n\\nUsers can access more advanced features for use in their sequences by clicking the advanced tab on the instrument they wish to change. This menu contains options to change volume, panning, detune (-1200 to +1200), reverb, distortion, and an equalizer. This array lets users configure specific instruments to create specific sounds, and textures, or to accompany other instruments as a layer or development of the original sound.\\n\\nOS also allows for commands to be entered in the browser console to manipulate different options in specific ways, such as setting custom to detune values (0-infinity), custom grid sizes, note divisions, and sequence ID amongst other things. These options bring OS closer to that of classic Digital Audio Workstations (DAWs) but are still limited in terms of accessibility and availability.\\n\\n### Browser and device support\\n\\nOnline Sequencer supports Chrome and other Chromium-based browsers, such as Microsoft Edge, Opera, and Brave. Firefox is also supported, but often with limited functionality. Safari and Internet Explorer are not supported, due to engine issues.\\n\\nOther mobile browsers support sequence playback, but not editing. However, iOS users have the same problem with WebKit on macOS. However, unlike in macOS, all browsers (even Chromium-based browsers) use WebKit as the engine for iOS due to Apple prohibiting other engines for security reasons; iOS does not support Online Sequencer, other than chat and forums.\\n\\nThe website's user interface is formatted for proper use on desktops, but some pages such as the chat page, playlists, and forums should be formatted well on mobile devices. ","decription":"OnlineSequencer.net is an online music sequencer. Make tunes in your browser and share "},{"id":17,"status":"published","sort":30,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.930Z","title":"Sound Trap","url":"https://www.soundtrap.com/","cover":"328c8c51-e7d4-48bd-9c3d-6dea5184cad5","tags":null,"content":null,"decription":null},{"id":6,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.181Z","title":"MIDI–driven Web Audio","url":"https://webaudiodemos.appspot.com/midi-synth/index.html","cover":"f268f0dc-b091-4799-885b-0a5eecfdcbec","tags":null,"content":null,"decription":null},{"id":8,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.088Z","title":"Meet the Heisenberg","url":"https://www.audiotool.com/product/device/heisenberg/","cover":"88c6fe9d-033c-4aac-a946-278e729e5f05","tags":null,"content":null,"decription":null},{"id":9,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.141Z","title":"Cardboard Synth","url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","cover":"3406a3fa-5e4d-4efc-a5ac-c6c8ee3abf72","tags":null,"content":null,"decription":null},{"id":11,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.126Z","title":"Tanguy synth","url":"http://tanguysynth.com/","cover":"16a499c4-661f-48b5-b308-dd7ea77f335d","tags":null,"content":null,"decription":null},{"id":12,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.109Z","title":"MOD synth","url":"http://mod-synth.io/","cover":"dd13c72f-d1ee-4197-b8a2-f24c162d5858","tags":null,"content":null,"decription":null},{"id":13,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.076Z","title":"OLIF SY1K","url":"http://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","cover":"44234157-4872-4e35-baec-a7d073a7258d","tags":null,"content":null,"decription":null},{"id":15,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.059Z","title":"Note Sculptor","url":"http://www.noisesculptor.com/","cover":"3b9d921b-79da-4923-9cd2-bbc826561a93","tags":null,"content":null,"decription":null},{"id":16,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.159Z","title":"WebAudioSynth V2","url":"http://aikelab.net/websynthv2/","cover":"7980d0af-e534-4383-a36c-0b116a06499e","tags":null,"content":null,"decription":null},{"id":18,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.944Z","title":"Samplestich","url":"http://samplestitch.com.s3-website-us-east-1.amazonaws.com/","cover":"0f272d97-7882-4797-9890-97c3b75149a4","tags":null,"content":null,"decription":null},{"id":20,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.032Z","title":"Omni","url":"https://femurdesign.com/omni/","cover":"82c94f42-0449-45ea-924d-7365ba51af20","tags":null,"content":null,"decription":null},{"id":21,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.016Z","title":"Web Modular","url":"https://www.g200kg.com/docs/webmodular/","cover":"5bb158d2-cfcc-46d9-acd5-6cf3312d7678","tags":null,"content":null,"decription":null},{"id":23,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.000Z","title":"Online sequencer","url":"https://onlinesequencer.net/369477","cover":"efdc67a4-4cfc-4a4b-a704-1b939fbe7fc4","tags":null,"content":null,"decription":null},{"id":24,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.987Z","title":"PixelSynth","url":"https://ojack.github.io/PIXELSYNTH/","cover":"59ec0d0b-6bcf-4c50-8d76-5fe624105c0c","tags":null,"content":null,"decription":null},{"id":25,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.970Z","title":"Acid Machine 2","url":"http://errozero.co.uk/acid-machine/","cover":"380cdb0d-4a68-44a7-b24c-2b655f26ebcd","tags":null,"content":null,"decription":null},{"id":28,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.958Z","title":"WebSID Commodore 64","url":"http://www.igorski.nl/experiment/websid","cover":"e39565a0-15fa-4c3a-9bc7-aa5a613dd19f","tags":null,"content":null,"decription":null}]`),Le=I({inject:["manager"],props:{index:{type:Number,required:!0},disabled:{type:Boolean,default:!1}},data(){return{}},watch:{index(e){this.$el&&this.$el.sortableInfo&&(this.$el.sortableInfo.index=e)},disabled(e){e?this.removeDraggable():this.setDraggable(this.index)}},mounted(){const{disabled:e,index:t}=this.$props;e||this.setDraggable(t)},beforeUnmount(){this.disabled||this.removeDraggable()},methods:{setDraggable(e){const t=this.$el;t.sortableInfo={index:e,manager:this.manager},this.ref={node:t},this.manager.add(this.ref)},removeDraggable(){this.manager.remove(this.ref)}}});class Me{constructor(){this.refs=[],this.active=null}add(t){this.refs||(this.refs=[]),this.refs.push(t)}remove(t){const s=this.getIndex(t);s!==-1&&this.refs.splice(s,1)}isActive(){return!!this.active}getActive(){return this.refs.find(({node:t})=>{var s,i;return((s=t==null?void 0:t.sortableInfo)===null||s===void 0?void 0:s.index)==((i=this===null||this===void 0?void 0:this.active)===null||i===void 0?void 0:i.index)})||null}getIndex(t){return this.refs.indexOf(t)}getRefs(){return this.refs}getOrderedRefs(){return this.refs.sort((t,s)=>t.node.sortableInfo.index-s.node.sortableInfo.index)}}const E=e=>e.touches!=null;function F(e,t){return!!e&&Object.prototype.hasOwnProperty.call(e,t)}function Ne(e,t,s){const i=e.slice(0);if(s>=i.length){let n=s-i.length;for(;n--+1;)i.push(void 0)}return i.splice(s,0,i.splice(t,1)[0]),i}function Pe(e,t){const s=e.slice(0);return t>=s.length||s.splice(t,1),s}function Ae(e,t,s){const i=e.slice(0);return t===i.length?i.push(s):i.splice(t,0,s),i}const _={start:["touchstart","mousedown"],move:["touchmove","mousemove"],end:["touchend","mouseup"],cancel:["touchcancel","keyup"]};function Q(e,t){for(;e;){if(t(e))return e;e=e.parentNode}}function ee(e,t,s){return st?t:s}function L(e){return e.substr(-2)==="px"?parseFloat(e):0}function te(e){const t=window.getComputedStyle(e);return{top:L(t.marginTop),right:L(t.marginRight),bottom:L(t.marginBottom),left:L(t.marginLeft)}}function M(e,t="page"){const s=`${t}X`,i=`${t}Y`;return{x:E(e)?e.touches[0][s]:e[s],y:E(e)?e.touches[0][i]:e[i]}}function se(e){const t=[e];for(;e;e=e.offsetParent)t.unshift(e);return t}function We(e,t){const s=se(e),i=se(t);if(s[0]!=i[0])throw"No common ancestor!";for(let n=0;n{n.type!=="file"&&t[o]&&(n.value=t[o].value)}),s}function Be(e,t,s){if(typeof e=="string"&&(e=+e),Array.isArray(e)||(e=[e,e]),e.length!==2)throw new Error(`lockOffset prop of SortableContainer should be a single value or an array of exactly two values. Given ${e}`);const[i,n]=e;return[ne(i,t,s),ne(n,t,s)]}function ne(e,t,s){let i=e,n=e,o="px";if(typeof e=="string"){const a=/^[+-]?\d*(?:\.\d*)?(px|%)$/.exec(e);if(a===null)throw new Error(`lockOffset value should be a number or a string of a number followed by "px" or "%". Given ${e}`);i=n=parseFloat(e),o=a[1]}if(!isFinite(i)||!isFinite(n))throw new Error(`lockOffset value should be a finite. Given ${e}`);return o==="%"&&(i=i*t/100,n=n*s/100),{x:i,y:n}}function ae(e=[]){for(let t=0,s=e.length;t[]},lockAxis:{type:String,default:""},helperClass:{type:String,default:""},contentWindow:{type:Object,default:null},shouldCancelStart:{type:Function,default:e=>["input","textarea","select","option","button"].indexOf(e.target.tagName.toLowerCase())!==-1},getHelperDimensions:{type:Function,default:({node:e})=>({width:e.offsetWidth,height:e.offsetHeight})}},emits:["sort-start","sort-move","sort-end","sort-cancel","sort-insert","sort-remove","update:list"],data(){let e=!1;return this.group&&this.SlicksortHub&&(e=!0),{sorting:!1,hub:e?this.SlicksortHub:null,manager:new Me}},mounted(){this.hub&&(this.id=this.hub.getId()),this.container=this.$el,this.document=this.container.ownerDocument||document,this._window=this.contentWindow||window,this.scrollContainer=this.useWindowAsScrollContainer?{scrollLeft:0,scrollTop:0}:this.container,this.events={start:this.handleStart,move:this.handleMove,end:this.handleEnd};for(const e in this.events)F(this.events,e)&&_[e].forEach(t=>this.container.addEventListener(t,this.events[e]));this.hub&&this.hub.addContainer(this)},beforeUnmount(){for(const e in this.events)F(this.events,e)&&_[e].forEach(t=>this.container.removeEventListener(t,this.events[e]));this.hub&&this.hub.removeContainer(this),this.dragendTimer&&clearTimeout(this.dragendTimer),this.cancelTimer&&clearTimeout(this.cancelTimer),this.pressTimer&&clearTimeout(this.pressTimer),this.autoscrollInterval&&clearInterval(this.autoscrollInterval)},methods:{handleStart(e){const{distance:t,shouldCancelStart:s}=this.$props;if(!E(e)&&e.button===2||s(e))return!1;this._touched=!0,this._pos=M(e);const i=e.target,n=Q(i,o=>o.sortableInfo!=null);if(n&&n.sortableInfo&&this.nodeIsChild(n)&&!this.sorting){const{useDragHandle:o}=this.$props,{index:a}=n.sortableInfo;if(o&&!Q(i,c=>c.sortableHandle!=null))return;this.manager.active={index:a},i.tagName.toLowerCase()==="a"&&e.preventDefault(),t||(this.pressDelay===0?this.handlePress(e):this.pressTimer=z(()=>this.handlePress(e),this.pressDelay))}},nodeIsChild(e){return e.sortableInfo.manager===this.manager},handleMove(e){const{distance:t,pressThreshold:s}=this.$props;if(!this.sorting&&this._touched){const i=M(e);this._delta={x:this._pos.x-i.x,y:this._pos.y-i.y};const n=Math.abs(this._delta.x)+Math.abs(this._delta.y);!t&&(!s||s&&n>=s)?(this.cancelTimer&&clearTimeout(this.cancelTimer),this.cancelTimer=z(this.cancel,0)):t&&n>=t&&this.manager.isActive()&&this.handlePress(e)}},handleEnd(){if(!this._touched)return;const{distance:e}=this.$props;this._touched=!1,e||this.cancel()},cancel(){this.sorting||(this.pressTimer&&clearTimeout(this.pressTimer),this.manager.active=null,this.hub&&this.hub.cancel())},handleSortCancel(e){(E(e)||e.key===this.cancelKey)&&(this.newIndex=this.index,this.canceling=!0,this.translate={x:0,y:0},this.animateNodes(),this.handleSortEnd(e))},handlePress(e){e.stopPropagation();const t=this.manager.getActive();if(t){const{getHelperDimensions:s,helperClass:i,hideSortableGhost:n,appendTo:o}=this.$props,{node:a}=t,{index:c}=a.sortableInfo,u=te(a),l=this.container.getBoundingClientRect(),g=s({index:c,node:a});this.node=a,this.margin=u,this.width=g.width,this.height=g.height,this.marginOffset={x:this.margin.left+this.margin.right,y:Math.max(this.margin.top,this.margin.bottom)},this.boundingClientRect=a.getBoundingClientRect(),this.containerBoundingRect=l,this.index=c,this.newIndex=c;const y=ie(a);this.helper=this.document.querySelector(o).appendChild(y),this.helper.style.position="fixed",this.helper.style.top=`${this.boundingClientRect.top-u.top}px`,this.helper.style.left=`${this.boundingClientRect.left-u.left}px`,this.helper.style.width=`${this.width}px`,this.helper.style.height=`${this.height}px`,this.helper.style.boxSizing="border-box",this.helper.style.pointerEvents="none",n&&(this.sortableGhost=a,a.style.visibility="hidden",a.style.opacity="0"),this.hub&&(this.hub.sortStart(this),this.hub.helper=this.helper,this.hub.ghost=this.sortableGhost),this.intializeOffsets(e,this.boundingClientRect),this.offsetEdge=S(a,this.container),i&&this.helper.classList.add(...i.split(" ")),this.listenerNode=E(e)?a:this._window,_.move.forEach(r=>this.listenerNode.addEventListener(r,this.handleSortMove)),_.end.forEach(r=>this.listenerNode.addEventListener(r,this.handleSortEnd)),_.cancel.forEach(r=>this.listenerNode.addEventListener(r,this.handleSortCancel)),this.sorting=!0,this.$emit("sort-start",{event:e,node:a,index:c})}},handleSortMove(e){if(e.preventDefault(),this.updatePosition(e),this.hub){const t=this.list[this.index];this.hub.handleSortMove(e,t)}(!this.hub||this.hub.isDest(this))&&(this.animateNodes(),this.autoscroll()),this.$emit("sort-move",{event:e})},handleDropOut(){const e=this.list[this.index],t=Pe(this.list,this.index);return this.$emit("sort-remove",{oldIndex:this.index}),this.$emit("update:list",t),e},handleDropIn(e){const t=Ae(this.list,this.newIndex,e);this.$emit("sort-insert",{newIndex:this.newIndex,value:e}),this.$emit("update:list",t),this.handleDragEnd()},handleDragOut(){this.autoscrollInterval&&(clearInterval(this.autoscrollInterval),this.autoscrollInterval=null),this.hub.isSource(this)?(this.translate={x:1e4,y:1e4},this.animateNodes()):(this.manager.getRefs().forEach(e=>{e.node.style.transform=""}),this.dragendTimer=z(this.handleDragEnd,this.transitionDuration||0))},handleDragEnd(){this.autoscrollInterval&&(clearInterval(this.autoscrollInterval),this.autoscrollInterval=null),ae(this.manager.getRefs()),this.sortableGhost&&(this.sortableGhost.remove(),this.sortableGhost=null),this.dragendTimer&&(clearTimeout(this.dragendTimer),this.dragendTimer=null),this.manager.active=null,this._touched=!1,this.sorting=!1},intializeOffsets(e,t){const{useWindowAsScrollContainer:s,containerBoundingRect:i,_window:n}=this;this.marginOffset={x:this.margin.left+this.margin.right,y:Math.max(this.margin.top,this.margin.bottom)},this._axis={x:this.axis.indexOf("x")>=0,y:this.axis.indexOf("y")>=0},this.initialOffset=M(e),this.initialScroll={top:this.scrollContainer.scrollTop,left:this.scrollContainer.scrollLeft},this.initialWindowScroll={top:window.pageYOffset,left:window.pageXOffset},this.translate={x:0,y:0},this.minTranslate={},this.maxTranslate={},this._axis.x&&(this.minTranslate.x=(s?0:i.left)-t.left-this.width/2,this.maxTranslate.x=(s?n.innerWidth:i.left+i.width)-t.left-this.width/2),this._axis.y&&(this.minTranslate.y=(s?0:i.top)-t.top-this.height/2,this.maxTranslate.y=(s?n.innerHeight:i.top+i.height)-t.top-this.height/2)},handleDragIn(e,t,s){if(this.hub.isSource(this))return;this.dragendTimer&&(this.handleDragEnd(),clearTimeout(this.dragendTimer),this.dragendTimer=null);const i=this.manager.getRefs();this.index=i.length,this.manager.active={index:this.index};const n=this.container.getBoundingClientRect(),o=s.getBoundingClientRect();this.containerBoundingRect=n,this.sortableGhost=ie(t),this.container.appendChild(this.sortableGhost);const a=this.sortableGhost.getBoundingClientRect();this.boundingClientRect=a,this.margin=te(this.sortableGhost),this.width=a.width,this.height=a.height,this.offsetEdge=S(this.sortableGhost,this.container),this.intializeOffsets(e,a),this.initialOffset.x+=a.x-o.x,this.initialOffset.y+=a.y-o.y,this.sorting=!0},handleSortEnd(e){this.listenerNode&&(_.move.forEach(i=>this.listenerNode.removeEventListener(i,this.handleSortMove)),_.end.forEach(i=>this.listenerNode.removeEventListener(i,this.handleSortEnd)),_.cancel.forEach(i=>this.listenerNode.removeEventListener(i,this.handleSortCancel)));const t=this.manager.getRefs();this.helper&&this.helperClass&&this.helper.classList.remove(...this.helperClass.split(" ")),this.autoscrollInterval&&clearInterval(this.autoscrollInterval),this.autoscrollInterval=null;const s=()=>{this.helper&&(this.helper.remove(),this.helper=null),this.hideSortableGhost&&this.sortableGhost&&(this.sortableGhost.style.visibility="",this.sortableGhost.style.opacity=""),ae(t),this.hub&&!this.hub.isDest(this)?this.canceling?this.hub.cancel():this.hub.handleSortEnd():this.canceling?this.$emit("sort-cancel",{event:e}):(this.$emit("sort-end",{event:e,oldIndex:this.index,newIndex:this.newIndex}),this.$emit("update:list",Ne(this.list,this.index,this.newIndex))),this.manager.active=null,this._touched=!1,this.canceling=!1,this.sorting=!1};this.transitionDuration||this.draggedSettlingDuration?this.transitionHelperIntoPlace(t,s):s()},transitionHelperIntoPlace(e,t){if(this.draggedSettlingDuration===0||e.length===0||!this.helper)return Promise.resolve();const s=e[this.index].node;let i=0,n=0;const o={top:window.pageYOffset-this.initialWindowScroll.top,left:window.pageXOffset-this.initialWindowScroll.left};if(this.hub&&!this.hub.isDest(this)&&!this.canceling){const l=this.hub.getDest();if(!l)return;const g=l.newIndex,y=l.manager.getOrderedRefs(),r=g0?i+=l.offsetLeft+l.offsetWidth-(s.offsetLeft+s.offsetWidth):i+=l.offsetLeft-s.offsetLeft,n=-g.top,this.translate&&this.translate.y>0?n+=l.offsetTop+l.offsetHeight-(s.offsetTop+s.offsetHeight):n+=l.offsetTop-s.offsetTop}const a=this.draggedSettlingDuration!==null?this.draggedSettlingDuration:this.transitionDuration;H(this.helper,`translate3d(${i}px,${n}px, 0)`,`${a}ms`);const c=l=>{(!l||l.propertyName==="transform")&&(clearTimeout(u),H(this.helper),t())},u=setTimeout(c,a+10);this.helper.addEventListener("transitionend",c)},updatePosition(e){const{lockAxis:t,lockToContainerEdges:s}=this.$props,i=M(e),n={x:i.x-this.initialOffset.x,y:i.y-this.initialOffset.y};if(n.y-=window.pageYOffset-this.initialWindowScroll.top,n.x-=window.pageXOffset-this.initialWindowScroll.left,this.translate=n,s){const[o,a]=Be(this.lockOffset,this.height,this.width),c={x:this.width/2-o.x,y:this.height/2-o.y},u={x:this.width/2-a.x,y:this.height/2-a.y};this.minTranslate.x&&this.maxTranslate.x&&(n.x=ee(this.minTranslate.x+c.x,this.maxTranslate.x-u.x,n.x)),this.minTranslate.y&&this.maxTranslate.y&&(n.y=ee(this.minTranslate.y+c.y,this.maxTranslate.y-u.y,n.y))}t==="x"?n.y=0:t==="y"&&(n.x=0),this.helper&&(this.helper.style.transform=`translate3d(${n.x}px,${n.y}px, 0)`)},animateNodes(){const{transitionDuration:e,hideSortableGhost:t}=this.$props,s=this.manager.getOrderedRefs(),i={left:this.scrollContainer.scrollLeft-this.initialScroll.left,top:this.scrollContainer.scrollTop-this.initialScroll.top},n={left:this.offsetEdge.left+this.translate.x+i.left,top:this.offsetEdge.top+this.translate.y+i.top},o={top:window.pageYOffset-this.initialWindowScroll.top,left:window.pageXOffset-this.initialWindowScroll.left};this.newIndex=null;for(let a=0,c=s.length;ag?g/2:this.width/2,height:this.height>y?y/2:this.height/2},h={x:0,y:0};let{edgeOffset:p}=s[a];p||(s[a].edgeOffset=p=S(u,this.container));const x=a0&&s[a-1];if(x&&!x.edgeOffset&&(x.edgeOffset=S(x.node,this.container)),l===this.index){t&&(this.sortableGhost=u,u.style.visibility="hidden",u.style.opacity="0");continue}e&&(u.style.transitionDuration=`${e}ms`),this._axis.x?this._axis.y?lthis.containerBoundingRect.width-r.width&&x&&(h.x=x.edgeOffset.left-p.left,h.y=x.edgeOffset.top-p.top),this.newIndex===null&&(this.newIndex=l)):l>this.index&&(n.left+o.left+r.width>=p.left&&n.top+o.top+r.height>=p.top||n.top+o.top+r.height>=p.top+y)&&(h.x=-(this.width+this.marginOffset.x),p.left+h.xthis.index&&n.left+o.left+r.width>=p.left?(h.x=-(this.width+this.marginOffset.x),this.newIndex=l):lthis.index&&n.top+o.top+r.height>=p.top?(h.y=-(this.height+this.marginOffset.y),this.newIndex=l):l=this.maxTranslate.y-this.height/2?(t.y=1,s.y=i.y*Math.abs((this.maxTranslate.y-this.height/2-e.y)/this.height)):e.x>=this.maxTranslate.x-this.width/2?(t.x=1,s.x=i.x*Math.abs((this.maxTranslate.x-this.width/2-e.x)/this.width)):e.y<=this.minTranslate.y+this.height/2?(t.y=-1,s.y=i.y*Math.abs((e.y-this.height/2-this.minTranslate.y)/this.height)):e.x<=this.minTranslate.x+this.width/2&&(t.x=-1,s.x=i.x*Math.abs((e.x-this.width/2-this.minTranslate.x)/this.width)),this.autoscrollInterval&&(clearInterval(this.autoscrollInterval),this.autoscrollInterval=null),(t.x!==0||t.y!==0)&&(this.autoscrollInterval=window.setInterval(()=>{const n={left:1*s.x*t.x,top:1*s.y*t.y};this.useWindowAsScrollContainer?this._window.scrollBy(n.left,n.top):(this.scrollContainer.scrollTop+=n.top,this.scrollContainer.scrollLeft+=n.left),this.translate.x+=n.left,this.translate.y+=n.top,this.animateNodes()},5))}}}),ce=I({name:"SlickItem",mixins:[Le],props:{tag:{type:String,default:"div"}},render(){var e,t;return O(this.tag,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),qe=I({name:"SlickList",mixins:[Ze],props:{tag:{type:String,default:"div"},itemKey:{type:[String,Function],default:"id"}},render(){var e,t;return this.$slots.item?O(this.tag,this.list.map((s,i)=>{let n;if(s!=null){if(typeof this.itemKey=="function")n=this.itemKey(s);else if(typeof s=="object"&&F(s,this.itemKey)&&typeof s[this.itemKey]=="string")n=s[this.itemKey];else if(typeof s=="string")n=s;else throw new Error("Cannot find key for item, use the item-key prop and pass a function or string");return O(ce,{key:n,index:i},{default:()=>{var o,a;return(a=(o=this.$slots).item)===null||a===void 0?void 0:a.call(o,{item:s,index:i})}})}})):O(this.tag,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),ze=I({props:{tag:{type:String,default:"span"}},mounted(){this.$el.sortableHandle=!0},render(){var e,t;return O(this.tag,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),Ge={key:0,d:"M30.336 12.547l-10.172-1.074L16 2.133l-4.164 9.34l-10.172 1.074l7.598 6.848L7.14 29.398L16 24.29l8.86 5.11l-2.122-10.004z",fill:"#ffaa00"},Re={key:1,d:"M16 2.125l-.906 2.063l-3.25 7.28l-7.938.845l-2.25.25l1.688 1.5l5.906 5.343l-1.656 7.813l-.469 2.187l1.969-1.125l6.906-4l6.906 4l1.969 1.125l-.469-2.187l-1.656-7.813l5.906-5.343l1.688-1.5l-2.25-.25l-7.938-.844l-3.25-7.281zm0 4.906l2.563 5.782l.25.53l.562.063l6.281.656l-4.687 4.22l-.438.405l.125.563l1.313 6.156l-5.469-3.125l-.5-.312l-.5.312l-5.469 3.125l1.313-6.156l.125-.563l-.438-.406l-4.687-4.218l6.281-.657l.563-.062l.25-.531z",fill:"#888888"},Fe=I({__name:"SynthFav",props:{url:{type:String,default:""}},setup(e){const s=fe("fav:"+e.url,!1);function i(n){s.value=!s.value,console.log(s.value)}return(n,o)=>(m(),b("svg",{onClick:o[0]||(o[0]=be(a=>i(e.url),["stop","prevent"])),xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",viewBox:"0 0 32 32"},[f(s)?(m(),b("path",Ge)):(m(),b("path",Re))]))}}),ue=e=>(ve("data-v-2d995d47"),e=e(),xe(),e),He=["src","alt"],je=ue(()=>d("div",{class:"flex-1"},null,-1)),Ve={class:"p-4 flex items-center justify-between w-full"},Ke={class:"text-md font-bold flex items-center gap-2 flex-1"},Ue={class:"flex-1"},Ye=ue(()=>d("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",viewBox:"0 0 32 32"},[d("path",{d:"M4 7v2h24V7zm0 8v2h24v-2zm0 8v2h24v-2z",fill:"#888888"})],-1)),Xe=I({__name:"SynthCard",props:{off:{type:Boolean,default:!1},title:{type:String,default:""},description:{type:String,default:""},cover:{type:String,default:""},url:{type:String,default:""}},setup(e){const t=e,{checkAvailability:s,isFormOpen:i}=V(),n=v(null);re(s,async a=>{try{(await fetch("https://corsproxy.io/?"+t.url)).status==200?n.value=!0:n.value=!1}catch{n.value=!1}});function o(){t.off?i.value=!i.value:window.open(t.url,"_blank")}return(a,c)=>{const u=ye("ClientOnly");return m(),b("button",{class:"flex flex-col text-left relative min-h-50 card p-0 bg-light-300 shadow-lg flex flex-col dark-bg-dark-300 -hover-translate-y-2px transition hover-shadow-xl rounded-xl overflow-hidden relative",onClick:o},[(m(),b("img",{key:e.title,height:"200",width:"1000",src:`/cover/${e.title.toLowerCase().split(" ").join("-")}.webp`,alt:`${e.title} illustration`},null,8,He)),je,d("div",Ve,[d("div",Ke,[d("div",Ue,D(e.title),1),f(s)?(m(),b("div",{key:0,class:G(["w-2 h-2 rounded-full shadow-inset",{"bg-green-500":n.value===!0,"bg-red-500":n.value===!1}])},null,2)):N("",!0),C(u,null,{default:w(()=>[C(Fe,{class:"scale-70 w-10",url:e.url},null,8,["url"])]),_:1}),C(f(ze),{class:"scale-80 opacity-40 cursor-grab absolute top-2 right-2"},{default:w(()=>[Ye]),_:1})])])])}}});const Je=we(Xe,[["__scopeId","data-v-2d995d47"]]);const Qe={__name:"SynthList",setup(e){const{isAccessGranted:t}=V(),s=v(De);function i(n){return!t.value&&n>5}return(n,o)=>(m(),P(f(qe),{class:"flex flex-wrap items-stretch gap-4 md-gap-6 m-2 lg-m-8",list:s.value,"onUpdate:list":o[0]||(o[0]=a=>s.value=a),axis:"xy","use-drag-handle":""},{default:w(()=>[(m(!0),b(_e,null,Te(s.value,(a,c)=>(m(),P(f(ce),{class:"flex",style:{flex:"1 1 240px"},key:a.id,index:c},{default:w(()=>[(m(),P(Je,{style:Se({opacity:i(c)?.8:1}),title:a.title,description:a.description,cover:a.cover,url:a.url,key:a.id,off:i(c)},null,8,["style","title","description","cover","url","off"]))]),_:2},1032,["index"]))),128))]),_:1},8,["list"]))}};const et=d("path",{d:"M7.219 5.781L5.78 7.22L14.563 16L5.78 24.781L7.22 26.22L16 17.437l8.781 8.782l1.438-1.438L17.437 16l8.782-8.781L24.78 5.78L16 14.563z",fill:"#888888"},null,-1),tt=[et],st={key:0,class:"flex flex-col gap-4 max-w-45ch text-center"},it={class:"text-3xl font-bold"},nt=d("div",{class:"text-xl"},"Enjoy your web-synthesizers hub",-1),at={class:"text-sm flex gap-2 justify-center"},ot=d("svg",{class:"absolute",xmlns:"http://www.w3.org/2000/svg",width:"100",height:"100",viewBox:"0 0 32 32"},[d("path",{d:"M16 4.688L3.781 16.905l1.438 1.407L16 7.53l10.781 10.782l1.438-1.407zm0 7L3.781 23.905l1.438 1.407L16 14.53l10.781 10.781l1.438-1.406z",fill:"#888888"})],-1),lt=[ot],rt={key:1,class:"flex flex-col gap-8 relative pt-8 items-center"},dt={class:"text-center max-w-45ch",for:"email"},ht={class:"flex gap-4 flex-col w-full"},ct={class:"flex items-center gap-2"},ut=d("div",{class:"p-2 w-20 font-bold text-right"},"E-mail*",-1),ft={class:"flex items-center gap-2"},pt=d("div",{class:"p-2 w-20 font-bold text-right"},"Name",-1),mt=["disabled"],gt={class:"text-xs opacity-60 text-center max-w-45ch mx-auto"},bt={__name:"TheForm",setup(e){const{name:t,email:s,isValidEmail:i,isFormOpen:n,grantAccess:o,storedEmail:a,storedName:c,resetEmail:u,isAccessGranted:l}=V();function g(){window.scrollTo({top:0,left:0,behavior:"smooth"})}return(y,r)=>(m(),P(ke,{name:"slide"},{default:w(()=>[d("div",{class:G(["z-10 min-h-40dvh bottom-0 right-0 left-0 bg-light-800 bg-opacity-80 backdrop-blur flex flex-col items-center gap-4 justify-center dark-bg-dark-200 dark-bg-opacity-80 p-8 shadow",{sticky:f(n)}])},[q((m(),b("svg",{class:"absolute top-4 right-4 text-4xl cursor-pointer",onClick:r[0]||(r[0]=h=>n.value=!1),xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 32 32"},tt,512)),[[Ie,f(n)]]),f(l)?(m(),b("div",st,[d("div",it,"Hello, "+D(f(c))+"!",1),nt,d("div",at,[T(D(f(a)),1),d("span",{class:"opacity-20 hover-opacity-50 transition cursor-pointer",onClick:r[1]||(r[1]=(...h)=>f(u)&&f(u)(...h))},"Log out")]),d("div",{class:"flex justify-center cursor-pointer p-2 opacity-50 hover-opacity-100 transition",onClick:r[2]||(r[2]=h=>g())},lt)])):(m(),b("div",rt,[d("label",dt,[A(y.$slots,"default")]),d("div",ht,[d("label",ct,[ut,q(d("input",{class:"flex-1 p-4 md-p-4 rounded-xl bg-light-200 shadow-md dark-bg-dark-400 flex-1",ref:"target",maxlength:"30","onUpdate:modelValue":r[3]||(r[3]=h=>U(s)?s.value=h:null),id:"email",name:"email",type:"email",onKeydown:r[4]||(r[4]=Y(h=>f(o)(),["enter"])),placeholder:"your@gmail.com"},null,544),[[K,f(s)]])]),d("label",ft,[pt,q(d("input",{class:"flex-1 p-4 md-p-4 rounded-xl bg-light-200 shadow-md dark-bg-dark-400","onUpdate:modelValue":r[5]||(r[5]=h=>U(t)?t.value=h:null),id:"name",name:"name",type:"text",onKeydown:r[6]||(r[6]=Y(h=>f(o)(),["enter"])),placeholder:"optional"},null,544),[[K,f(t)]])]),d("button",{class:G(["text-sm md-text-md p-4 font-bold md-p-4 rounded-xl shadow-xl hover-shadow-2xl transition -hover-translate-y-2px active-translate-y-0 active-shadow-md bg-green-400 dark-bg-green-700",{"grayscale-50":!f(i)}]),onClick:r[7]||(r[7]=h=>f(o)()),disabled:!f(i)},[A(y.$slots,"button",{},()=>[T("GET ACCESS")])],10,mt)]),d("div",gt,[A(y.$slots,"notice",{},()=>[T("Your access status will be saved per device and you won't need to enter your e-mail again.")])])]))],2)]),_:3}))}},yt={class:"bg-light-300 dark-bg-dark-700 dark-text-light-200 text-center line-height-loose text-md py-16"},vt={class:"mx-auto max-w-75ch intro md-text-lg"},xt={key:0,class:"p-2 flex flex-col mt-8"},wt={class:"text-4xl font-bold"},_t=d("div",{class:"text-lg"},"web synths",-1),Tt={key:1,class:"p-2 flex flex-col mt-8"},St={class:"text-4xl font-bold"},It=d("div",{class:"text-lg"},"web musicians",-1),kt={__name:"AboutUs",props:{synths:{type:Number,default:30}},setup(e){const t=v(),s=v([]),i=le(()=>s.value.length),n=pe(i);de(()=>{fetch("https://corsproxy.io/?https://db.chromatone.center/items/players?limit=-1").then(l=>l.json()).then(({data:l})=>s.value=l)});const o=me(t),{share:a,isSupported:c}=ge();function u(){a({title:"Web synths collection",text:"Look at this online synthesizer collection. No need to install anything - just your browser and any MIDI controller will do.",url:location.href})}return(l,g)=>(m(),b("div",yt,[d("div",vt,[A(l.$slots,"default"),d("div",{class:"flex justify-center",ref_key:"counters",ref:t},[f(o)?(m(),b("div",xt,[d("div",wt,D(e.synths),1),_t])):N("",!0),f(o)&&i.value>0?(m(),b("div",Tt,[d("div",St,D(f(n).toFixed())+"+",1),It])):N("",!0)],512),f(c)?(m(),b("button",{key:0,class:"text-white py-2 px-4 mt-6 shadow-lg rounded-lg cursor-pointer bg-green-600 -hover-translate-y-2px transition",onClick:g[0]||(g[0]=y=>u())},"Share now to save for later")):N("",!0)])]))}},Ct=d("h2",{class:"text-lg font-bold"},"Welcome to our free web synth collection!",-1),Ot=d("p",null,[d("a",{href:"https://playtronica.com",target:"_blank",rel:"noopener"},"Playtronica"),T(" is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. "),d("a",{href:"https://chromatone.center",target:"_blank",rel:"noopener"},"Chromatone"),T(" is a visual language for music education, research, and performance. We share our passion for web-based music instruments. Welcome to the community!")],-1),Lt=JSON.parse('{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","frontmatter":{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","date":"2023-06-22T00:00:00.000Z","layout":"home"},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1692108519000}'),$t={name:"index.md"},Mt=Object.assign($t,{setup(e){return(t,s)=>(m(),b("div",null,[C(Qe),C(kt,null,{default:w(()=>[Ct,Ot]),_:1}),C(bt,null,{button:w(()=>[T("JOIN THE COMMUNITY")]),notice:w(()=>[T("Your access status will be saved per device and you won't need to enter your e-mail again.")]),default:w(()=>[T(" We are building a community of web-based musicians. Type in your e-mail to instantly get full access to the collection and occasionally receive community updates. ")]),_:1})]))}});export{Lt as __pageData,Mt as default}; diff --git a/assets/index.md.be2b63f2.lean.js b/assets/index.md.be2b63f2.lean.js new file mode 100644 index 00000000..f91810df --- /dev/null +++ b/assets/index.md.be2b63f2.lean.js @@ -0,0 +1 @@ +import{u as oe,a as fe,b as pe,c as me,d as ge}from"./chunks/theme.10ba8259.js";import{r as v,b as le,w as re,f as de,h as I,a2 as O,i as m,j as b,u as f,a0 as be,I as ye,B as d,p as D,l as G,x as N,M as C,v as w,C as ve,D as xe,_ as we,q as P,J as _e,K as Te,S as Se,a3 as q,a4 as Ie,m as T,k as A,a5 as K,a6 as U,Z as Y,T as ke}from"./chunks/framework.7c22cbc0.js";const $=v(!1),X=v(!1),Ce=v(!1),W=oe("storedEmail",""),j=oe("storedName",""),B=v(!1),k=v(""),R=v(""),Oe=le(()=>he(k.value)),J=v(!1);function he(e){return/^[^@]+@\w+(\.\w+)+\w$/.test(e)}function $e(){W.value="",j.value="",B.value=!1,$.value=!1}function V(){return J.value||(re($,e=>{e&&(X.value=!1)}),de(()=>{W.value&&($.value=!0)}),J.value=!0),{isAccessGranted:$,isValidEmail:Oe,email:k,name:R,grantAccess:Ee,isSent:B,isFormOpen:X,checkAvailability:Ce,storedEmail:W,storedName:j,resetEmail:$e}}async function Ee(){if(!(!k.value&&!he(k.value))&&($.value=!0,!B.value)){B.value=!0;try{const e={email:k.value,name:R.value.slice(0,30)};W.value=k.value,j.value=R.value;const t=await fetch("https://db.chromatone.center/flows/trigger/f36a3461-c476-4ce5-88c9-eba2216083b0",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(e)});console.log(t==null?void 0:t.json())}catch(e){console.error(e)}}}const De=JSON.parse(`[{"id":1,"status":"published","sort":1,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.730Z","title":"Dotpiano","url":"https://dotpiano.com/","cover":"fd81d5c3-4cb6-41eb-9689-d5f7aba2b8a6","tags":null,"content":null,"decription":null},{"id":3,"status":"published","sort":3,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.748Z","title":"TouchME by Chromatone","url":"https://touchme.chromatone.center/","cover":"6e97f4ab-c2f7-4e90-9c26-7518dbfddb3a","tags":null,"content":null,"decription":null},{"id":14,"status":"published","sort":4,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.765Z","title":"Juno-106","url":"http://juno-106.js.org/","cover":"d4fad441-c1a0-4ccc-9c0d-d8bfb79f9094","tags":null,"content":null,"decription":null},{"id":26,"status":"published","sort":5,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.816Z","title":"Learning synths with Ableton","url":"https://learningsynths.ableton.com/","cover":"f5c81f00-fc0e-40ad-96ce-a1834709253a","tags":null,"content":null,"decription":null},{"id":30,"status":"published","sort":5,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.800Z","title":"DX7 Synth","url":"https://mmontag.github.io/dx7-synth-js/","cover":"01eacfd8-892d-41de-b928-50b686a87400","tags":null,"content":null,"decription":null},{"id":32,"status":"published","sort":5,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.784Z","title":"Sampler synth","url":"https://play.playtronica.com/","cover":"749cb332-eb5e-40c6-bb36-fb87bb25a834","tags":null,"content":null,"decription":null},{"id":10,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.837Z","title":"Websynths","url":"http://websynths.com/","cover":"072cf912-9966-4d3f-9823-36e75fb8ada9","tags":null,"content":null,"decription":null},{"id":19,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.859Z","title":"Theremin","url":"https://www.femurdesign.com/theremin/","cover":"f4ca5ef9-132a-4e56-80fb-21bd0fd0b3f6","tags":null,"content":null,"decription":null},{"id":29,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.891Z","title":"Elementary synth","url":"https://chromatone.center/practice/synth/elementary/","cover":"14f5d908-fba2-451f-8bec-a922cc5672c7","tags":null,"content":null,"decription":null},{"id":37,"status":"published","sort":6,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-21T14:18:48.099Z","title":"Sympathetic Synthesizer System Mk 1","url":"https://stuartmemo.com/synth/","cover":"9186b1e4-9929-492e-94eb-32a04aa523c8","tags":["keyboard","midi","additive"],"content":null,"decription":null},{"id":22,"status":"published","sort":7,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.875Z","title":"Disco-computer","url":"http://www.disco-computer.com/synthesizer/synth.html","cover":"1ac14701-0530-4ca6-b516-45d5f9523819","tags":null,"content":null,"decription":null},{"id":31,"status":"published","sort":12,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.906Z","title":"Video Sampler","url":"https://seeing-sound.netlify.app/","cover":"a4e5d9b7-1b64-4c31-aed4-467e2c6cba32","tags":null,"content":null,"decription":null},{"id":34,"status":"published","sort":12,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-21T14:00:50.309Z","title":"Fluoresynth by Electric Telepathy","url":"https://electrictelepathy.com/web-apps/fluoresynth/","cover":"d9c0dc12-ede0-49df-aef2-2517fd6ed961","tags":["midi","keyboard"],"content":"## How to play Fluoresynth\\n\\nThere are 3 ways to play notes with Fluoresynth:\\n\\n- Click or tap the onscreen keyboard.\\n- Play with the bottom two rows of keys on your computer keyboard (z, s, x, d, c, v, g, b, h, n, j, m, etc.)\\n- Plug in a MIDI keyboard/device to your computer. MIDI supported in Chrome and Opera.\\n\\nThis app may not load or play sound in older web browsers and operating systems. Audio may sound choppy on low-performance devices.","decription":null},{"id":27,"status":"published","sort":14,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.918Z","title":"Viktor NV-1","url":"http://nicroto.github.io/viktor/","cover":"1c104eeb-dc14-4d3b-bb8e-14accb2184c3","tags":null,"content":null,"decription":null},{"id":35,"status":"published","sort":18,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-21T14:05:27.437Z","title":"VirtualPiano.eu","url":"https://virtualpiano.eu/","cover":"e3f86bf5-68a9-4e0c-bb67-d0f31c26365b","tags":["midi","keyboard"],"content":"VirtualPiano.eu is the online synthesizer that allows you to play 128 musical instruments for free using your PC keyboard, the mouse or by connecting an external MIDI keyboard.\\n\\nYou can adjust Volume, Reverb, Loop and quality. Use the sustain and adjust the octaves, you can also select and set different channels including the one for the drums.\\n\\nCreate your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own. ","decription":"Professional GM mapped WebAudio Piano Synthesizer Engine / MIDI Player"},{"id":36,"status":"published","sort":20,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-21T14:14:48.036Z","title":"Online sequencer","url":"https://onlinesequencer.net/","cover":"d55b5de1-f912-432f-a4e5-8c601643ecb9","tags":["sequencer"],"content":"**Online Sequencer** is a web-based music sequencer that allows users to create music saved online, or on their computer. The piano roll is essential to the sequencer, which is on the left of the screen, with 72 notes from C2-B7 (labelled differently from a piano, C2 on the sequencer corresponds to C1 on a piano). In addition to several parameters which can be modified to change the sound of the music, additional functionality can be accessed via the console.\\n\\nUpon opening the site, users can begin composing and \\"drawing\\" notes on the grid, with the default instrument being Electric Piano. By default, a sequence's time signature is set to 4/4, and the grid spacing is set to 1/4 (16 notes per measure). The note lengths can be adjusted by dragging the dark tab on the right of each note, and precision can be afforded by changing the 'Grid' option to other note divisions. \\n\\n## History\\n\\nOnline Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.\\n\\nBeginning in the fall of 2013, accounts were available but were separate from the music portion of the site. They were only used in the forum and the website chat.\\n\\nIn 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.\\n\\nThe World Update in 2018 added several new instruments and changed the landscape of sound design on the site. The \\"World Update Contest\\" was held for the update.\\n\\nStarting in late 2020, OS began to receive a variety of updates which vastly improved the functionality of the site. These updates introduced features like custom grid sizes, automation with markers, extra reverb options, detune, and distortion. In 2021, the \\"Space Race\\" contest was held, as to see who could work best with the changes.\\n\\nIn late 2022, newer, higher-quality instruments were added. Some of the instruments, such as Electric Piano, Grand Piano, Violin, and Cello got an updated sustained version, while the original versions still exist under the \\"classic\\" designation.\\n\\nCurrently, the 10-Year Anniversary Contest is being held.\\n\\n## Features\\n\\nWithin the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.\\n\\n### Basic features\\n\\nUI features include:\\n\\n- Tempo (10-999 BPM)\\n- Measure count or Time count (MM: SS.ssss)\\n- Time signature (2/4, 3/4, 4/4, 5/4)\\n- Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)\\n- Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)\\n- Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)\\n- Title input\\n- Draw, select, and erase\\n- Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)\\n- Select all, Cut, Copy, and Paste\\n- Zoom options\\n- Export options\\n- Help\\n- Fullscreen\\n- Tooltips\\n\\n### Advanced features\\n\\nUsers can access more advanced features for use in their sequences by clicking the advanced tab on the instrument they wish to change. This menu contains options to change volume, panning, detune (-1200 to +1200), reverb, distortion, and an equalizer. This array lets users configure specific instruments to create specific sounds, and textures, or to accompany other instruments as a layer or development of the original sound.\\n\\nOS also allows for commands to be entered in the browser console to manipulate different options in specific ways, such as setting custom to detune values (0-infinity), custom grid sizes, note divisions, and sequence ID amongst other things. These options bring OS closer to that of classic Digital Audio Workstations (DAWs) but are still limited in terms of accessibility and availability.\\n\\n### Browser and device support\\n\\nOnline Sequencer supports Chrome and other Chromium-based browsers, such as Microsoft Edge, Opera, and Brave. Firefox is also supported, but often with limited functionality. Safari and Internet Explorer are not supported, due to engine issues.\\n\\nOther mobile browsers support sequence playback, but not editing. However, iOS users have the same problem with WebKit on macOS. However, unlike in macOS, all browsers (even Chromium-based browsers) use WebKit as the engine for iOS due to Apple prohibiting other engines for security reasons; iOS does not support Online Sequencer, other than chat and forums.\\n\\nThe website's user interface is formatted for proper use on desktops, but some pages such as the chat page, playlists, and forums should be formatted well on mobile devices. ","decription":"OnlineSequencer.net is an online music sequencer. Make tunes in your browser and share "},{"id":17,"status":"published","sort":30,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.930Z","title":"Sound Trap","url":"https://www.soundtrap.com/","cover":"328c8c51-e7d4-48bd-9c3d-6dea5184cad5","tags":null,"content":null,"decription":null},{"id":6,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.181Z","title":"MIDI–driven Web Audio","url":"https://webaudiodemos.appspot.com/midi-synth/index.html","cover":"f268f0dc-b091-4799-885b-0a5eecfdcbec","tags":null,"content":null,"decription":null},{"id":8,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.088Z","title":"Meet the Heisenberg","url":"https://www.audiotool.com/product/device/heisenberg/","cover":"88c6fe9d-033c-4aac-a946-278e729e5f05","tags":null,"content":null,"decription":null},{"id":9,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.141Z","title":"Cardboard Synth","url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","cover":"3406a3fa-5e4d-4efc-a5ac-c6c8ee3abf72","tags":null,"content":null,"decription":null},{"id":11,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.126Z","title":"Tanguy synth","url":"http://tanguysynth.com/","cover":"16a499c4-661f-48b5-b308-dd7ea77f335d","tags":null,"content":null,"decription":null},{"id":12,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.109Z","title":"MOD synth","url":"http://mod-synth.io/","cover":"dd13c72f-d1ee-4197-b8a2-f24c162d5858","tags":null,"content":null,"decription":null},{"id":13,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.076Z","title":"OLIF SY1K","url":"http://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","cover":"44234157-4872-4e35-baec-a7d073a7258d","tags":null,"content":null,"decription":null},{"id":15,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.059Z","title":"Note Sculptor","url":"http://www.noisesculptor.com/","cover":"3b9d921b-79da-4923-9cd2-bbc826561a93","tags":null,"content":null,"decription":null},{"id":16,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.159Z","title":"WebAudioSynth V2","url":"http://aikelab.net/websynthv2/","cover":"7980d0af-e534-4383-a36c-0b116a06499e","tags":null,"content":null,"decription":null},{"id":18,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.944Z","title":"Samplestich","url":"http://samplestitch.com.s3-website-us-east-1.amazonaws.com/","cover":"0f272d97-7882-4797-9890-97c3b75149a4","tags":null,"content":null,"decription":null},{"id":20,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.032Z","title":"Omni","url":"https://femurdesign.com/omni/","cover":"82c94f42-0449-45ea-924d-7365ba51af20","tags":null,"content":null,"decription":null},{"id":21,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.016Z","title":"Web Modular","url":"https://www.g200kg.com/docs/webmodular/","cover":"5bb158d2-cfcc-46d9-acd5-6cf3312d7678","tags":null,"content":null,"decription":null},{"id":23,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:11.000Z","title":"Online sequencer","url":"https://onlinesequencer.net/369477","cover":"efdc67a4-4cfc-4a4b-a704-1b939fbe7fc4","tags":null,"content":null,"decription":null},{"id":24,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.987Z","title":"PixelSynth","url":"https://ojack.github.io/PIXELSYNTH/","cover":"59ec0d0b-6bcf-4c50-8d76-5fe624105c0c","tags":null,"content":null,"decription":null},{"id":25,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.970Z","title":"Acid Machine 2","url":"http://errozero.co.uk/acid-machine/","cover":"380cdb0d-4a68-44a7-b24c-2b655f26ebcd","tags":null,"content":null,"decription":null},{"id":28,"status":"published","sort":null,"user_created":"796b4fbf-a0d9-4eac-998a-49bf3f9ffe65","date_created":"2023-08-09T08:02:10.958Z","title":"WebSID Commodore 64","url":"http://www.igorski.nl/experiment/websid","cover":"e39565a0-15fa-4c3a-9bc7-aa5a613dd19f","tags":null,"content":null,"decription":null}]`),Le=I({inject:["manager"],props:{index:{type:Number,required:!0},disabled:{type:Boolean,default:!1}},data(){return{}},watch:{index(e){this.$el&&this.$el.sortableInfo&&(this.$el.sortableInfo.index=e)},disabled(e){e?this.removeDraggable():this.setDraggable(this.index)}},mounted(){const{disabled:e,index:t}=this.$props;e||this.setDraggable(t)},beforeUnmount(){this.disabled||this.removeDraggable()},methods:{setDraggable(e){const t=this.$el;t.sortableInfo={index:e,manager:this.manager},this.ref={node:t},this.manager.add(this.ref)},removeDraggable(){this.manager.remove(this.ref)}}});class Me{constructor(){this.refs=[],this.active=null}add(t){this.refs||(this.refs=[]),this.refs.push(t)}remove(t){const s=this.getIndex(t);s!==-1&&this.refs.splice(s,1)}isActive(){return!!this.active}getActive(){return this.refs.find(({node:t})=>{var s,i;return((s=t==null?void 0:t.sortableInfo)===null||s===void 0?void 0:s.index)==((i=this===null||this===void 0?void 0:this.active)===null||i===void 0?void 0:i.index)})||null}getIndex(t){return this.refs.indexOf(t)}getRefs(){return this.refs}getOrderedRefs(){return this.refs.sort((t,s)=>t.node.sortableInfo.index-s.node.sortableInfo.index)}}const E=e=>e.touches!=null;function F(e,t){return!!e&&Object.prototype.hasOwnProperty.call(e,t)}function Ne(e,t,s){const i=e.slice(0);if(s>=i.length){let n=s-i.length;for(;n--+1;)i.push(void 0)}return i.splice(s,0,i.splice(t,1)[0]),i}function Pe(e,t){const s=e.slice(0);return t>=s.length||s.splice(t,1),s}function Ae(e,t,s){const i=e.slice(0);return t===i.length?i.push(s):i.splice(t,0,s),i}const _={start:["touchstart","mousedown"],move:["touchmove","mousemove"],end:["touchend","mouseup"],cancel:["touchcancel","keyup"]};function Q(e,t){for(;e;){if(t(e))return e;e=e.parentNode}}function ee(e,t,s){return st?t:s}function L(e){return e.substr(-2)==="px"?parseFloat(e):0}function te(e){const t=window.getComputedStyle(e);return{top:L(t.marginTop),right:L(t.marginRight),bottom:L(t.marginBottom),left:L(t.marginLeft)}}function M(e,t="page"){const s=`${t}X`,i=`${t}Y`;return{x:E(e)?e.touches[0][s]:e[s],y:E(e)?e.touches[0][i]:e[i]}}function se(e){const t=[e];for(;e;e=e.offsetParent)t.unshift(e);return t}function We(e,t){const s=se(e),i=se(t);if(s[0]!=i[0])throw"No common ancestor!";for(let n=0;n{n.type!=="file"&&t[o]&&(n.value=t[o].value)}),s}function Be(e,t,s){if(typeof e=="string"&&(e=+e),Array.isArray(e)||(e=[e,e]),e.length!==2)throw new Error(`lockOffset prop of SortableContainer should be a single value or an array of exactly two values. Given ${e}`);const[i,n]=e;return[ne(i,t,s),ne(n,t,s)]}function ne(e,t,s){let i=e,n=e,o="px";if(typeof e=="string"){const a=/^[+-]?\d*(?:\.\d*)?(px|%)$/.exec(e);if(a===null)throw new Error(`lockOffset value should be a number or a string of a number followed by "px" or "%". Given ${e}`);i=n=parseFloat(e),o=a[1]}if(!isFinite(i)||!isFinite(n))throw new Error(`lockOffset value should be a finite. Given ${e}`);return o==="%"&&(i=i*t/100,n=n*s/100),{x:i,y:n}}function ae(e=[]){for(let t=0,s=e.length;t[]},lockAxis:{type:String,default:""},helperClass:{type:String,default:""},contentWindow:{type:Object,default:null},shouldCancelStart:{type:Function,default:e=>["input","textarea","select","option","button"].indexOf(e.target.tagName.toLowerCase())!==-1},getHelperDimensions:{type:Function,default:({node:e})=>({width:e.offsetWidth,height:e.offsetHeight})}},emits:["sort-start","sort-move","sort-end","sort-cancel","sort-insert","sort-remove","update:list"],data(){let e=!1;return this.group&&this.SlicksortHub&&(e=!0),{sorting:!1,hub:e?this.SlicksortHub:null,manager:new Me}},mounted(){this.hub&&(this.id=this.hub.getId()),this.container=this.$el,this.document=this.container.ownerDocument||document,this._window=this.contentWindow||window,this.scrollContainer=this.useWindowAsScrollContainer?{scrollLeft:0,scrollTop:0}:this.container,this.events={start:this.handleStart,move:this.handleMove,end:this.handleEnd};for(const e in this.events)F(this.events,e)&&_[e].forEach(t=>this.container.addEventListener(t,this.events[e]));this.hub&&this.hub.addContainer(this)},beforeUnmount(){for(const e in this.events)F(this.events,e)&&_[e].forEach(t=>this.container.removeEventListener(t,this.events[e]));this.hub&&this.hub.removeContainer(this),this.dragendTimer&&clearTimeout(this.dragendTimer),this.cancelTimer&&clearTimeout(this.cancelTimer),this.pressTimer&&clearTimeout(this.pressTimer),this.autoscrollInterval&&clearInterval(this.autoscrollInterval)},methods:{handleStart(e){const{distance:t,shouldCancelStart:s}=this.$props;if(!E(e)&&e.button===2||s(e))return!1;this._touched=!0,this._pos=M(e);const i=e.target,n=Q(i,o=>o.sortableInfo!=null);if(n&&n.sortableInfo&&this.nodeIsChild(n)&&!this.sorting){const{useDragHandle:o}=this.$props,{index:a}=n.sortableInfo;if(o&&!Q(i,c=>c.sortableHandle!=null))return;this.manager.active={index:a},i.tagName.toLowerCase()==="a"&&e.preventDefault(),t||(this.pressDelay===0?this.handlePress(e):this.pressTimer=z(()=>this.handlePress(e),this.pressDelay))}},nodeIsChild(e){return e.sortableInfo.manager===this.manager},handleMove(e){const{distance:t,pressThreshold:s}=this.$props;if(!this.sorting&&this._touched){const i=M(e);this._delta={x:this._pos.x-i.x,y:this._pos.y-i.y};const n=Math.abs(this._delta.x)+Math.abs(this._delta.y);!t&&(!s||s&&n>=s)?(this.cancelTimer&&clearTimeout(this.cancelTimer),this.cancelTimer=z(this.cancel,0)):t&&n>=t&&this.manager.isActive()&&this.handlePress(e)}},handleEnd(){if(!this._touched)return;const{distance:e}=this.$props;this._touched=!1,e||this.cancel()},cancel(){this.sorting||(this.pressTimer&&clearTimeout(this.pressTimer),this.manager.active=null,this.hub&&this.hub.cancel())},handleSortCancel(e){(E(e)||e.key===this.cancelKey)&&(this.newIndex=this.index,this.canceling=!0,this.translate={x:0,y:0},this.animateNodes(),this.handleSortEnd(e))},handlePress(e){e.stopPropagation();const t=this.manager.getActive();if(t){const{getHelperDimensions:s,helperClass:i,hideSortableGhost:n,appendTo:o}=this.$props,{node:a}=t,{index:c}=a.sortableInfo,u=te(a),l=this.container.getBoundingClientRect(),g=s({index:c,node:a});this.node=a,this.margin=u,this.width=g.width,this.height=g.height,this.marginOffset={x:this.margin.left+this.margin.right,y:Math.max(this.margin.top,this.margin.bottom)},this.boundingClientRect=a.getBoundingClientRect(),this.containerBoundingRect=l,this.index=c,this.newIndex=c;const y=ie(a);this.helper=this.document.querySelector(o).appendChild(y),this.helper.style.position="fixed",this.helper.style.top=`${this.boundingClientRect.top-u.top}px`,this.helper.style.left=`${this.boundingClientRect.left-u.left}px`,this.helper.style.width=`${this.width}px`,this.helper.style.height=`${this.height}px`,this.helper.style.boxSizing="border-box",this.helper.style.pointerEvents="none",n&&(this.sortableGhost=a,a.style.visibility="hidden",a.style.opacity="0"),this.hub&&(this.hub.sortStart(this),this.hub.helper=this.helper,this.hub.ghost=this.sortableGhost),this.intializeOffsets(e,this.boundingClientRect),this.offsetEdge=S(a,this.container),i&&this.helper.classList.add(...i.split(" ")),this.listenerNode=E(e)?a:this._window,_.move.forEach(r=>this.listenerNode.addEventListener(r,this.handleSortMove)),_.end.forEach(r=>this.listenerNode.addEventListener(r,this.handleSortEnd)),_.cancel.forEach(r=>this.listenerNode.addEventListener(r,this.handleSortCancel)),this.sorting=!0,this.$emit("sort-start",{event:e,node:a,index:c})}},handleSortMove(e){if(e.preventDefault(),this.updatePosition(e),this.hub){const t=this.list[this.index];this.hub.handleSortMove(e,t)}(!this.hub||this.hub.isDest(this))&&(this.animateNodes(),this.autoscroll()),this.$emit("sort-move",{event:e})},handleDropOut(){const e=this.list[this.index],t=Pe(this.list,this.index);return this.$emit("sort-remove",{oldIndex:this.index}),this.$emit("update:list",t),e},handleDropIn(e){const t=Ae(this.list,this.newIndex,e);this.$emit("sort-insert",{newIndex:this.newIndex,value:e}),this.$emit("update:list",t),this.handleDragEnd()},handleDragOut(){this.autoscrollInterval&&(clearInterval(this.autoscrollInterval),this.autoscrollInterval=null),this.hub.isSource(this)?(this.translate={x:1e4,y:1e4},this.animateNodes()):(this.manager.getRefs().forEach(e=>{e.node.style.transform=""}),this.dragendTimer=z(this.handleDragEnd,this.transitionDuration||0))},handleDragEnd(){this.autoscrollInterval&&(clearInterval(this.autoscrollInterval),this.autoscrollInterval=null),ae(this.manager.getRefs()),this.sortableGhost&&(this.sortableGhost.remove(),this.sortableGhost=null),this.dragendTimer&&(clearTimeout(this.dragendTimer),this.dragendTimer=null),this.manager.active=null,this._touched=!1,this.sorting=!1},intializeOffsets(e,t){const{useWindowAsScrollContainer:s,containerBoundingRect:i,_window:n}=this;this.marginOffset={x:this.margin.left+this.margin.right,y:Math.max(this.margin.top,this.margin.bottom)},this._axis={x:this.axis.indexOf("x")>=0,y:this.axis.indexOf("y")>=0},this.initialOffset=M(e),this.initialScroll={top:this.scrollContainer.scrollTop,left:this.scrollContainer.scrollLeft},this.initialWindowScroll={top:window.pageYOffset,left:window.pageXOffset},this.translate={x:0,y:0},this.minTranslate={},this.maxTranslate={},this._axis.x&&(this.minTranslate.x=(s?0:i.left)-t.left-this.width/2,this.maxTranslate.x=(s?n.innerWidth:i.left+i.width)-t.left-this.width/2),this._axis.y&&(this.minTranslate.y=(s?0:i.top)-t.top-this.height/2,this.maxTranslate.y=(s?n.innerHeight:i.top+i.height)-t.top-this.height/2)},handleDragIn(e,t,s){if(this.hub.isSource(this))return;this.dragendTimer&&(this.handleDragEnd(),clearTimeout(this.dragendTimer),this.dragendTimer=null);const i=this.manager.getRefs();this.index=i.length,this.manager.active={index:this.index};const n=this.container.getBoundingClientRect(),o=s.getBoundingClientRect();this.containerBoundingRect=n,this.sortableGhost=ie(t),this.container.appendChild(this.sortableGhost);const a=this.sortableGhost.getBoundingClientRect();this.boundingClientRect=a,this.margin=te(this.sortableGhost),this.width=a.width,this.height=a.height,this.offsetEdge=S(this.sortableGhost,this.container),this.intializeOffsets(e,a),this.initialOffset.x+=a.x-o.x,this.initialOffset.y+=a.y-o.y,this.sorting=!0},handleSortEnd(e){this.listenerNode&&(_.move.forEach(i=>this.listenerNode.removeEventListener(i,this.handleSortMove)),_.end.forEach(i=>this.listenerNode.removeEventListener(i,this.handleSortEnd)),_.cancel.forEach(i=>this.listenerNode.removeEventListener(i,this.handleSortCancel)));const t=this.manager.getRefs();this.helper&&this.helperClass&&this.helper.classList.remove(...this.helperClass.split(" ")),this.autoscrollInterval&&clearInterval(this.autoscrollInterval),this.autoscrollInterval=null;const s=()=>{this.helper&&(this.helper.remove(),this.helper=null),this.hideSortableGhost&&this.sortableGhost&&(this.sortableGhost.style.visibility="",this.sortableGhost.style.opacity=""),ae(t),this.hub&&!this.hub.isDest(this)?this.canceling?this.hub.cancel():this.hub.handleSortEnd():this.canceling?this.$emit("sort-cancel",{event:e}):(this.$emit("sort-end",{event:e,oldIndex:this.index,newIndex:this.newIndex}),this.$emit("update:list",Ne(this.list,this.index,this.newIndex))),this.manager.active=null,this._touched=!1,this.canceling=!1,this.sorting=!1};this.transitionDuration||this.draggedSettlingDuration?this.transitionHelperIntoPlace(t,s):s()},transitionHelperIntoPlace(e,t){if(this.draggedSettlingDuration===0||e.length===0||!this.helper)return Promise.resolve();const s=e[this.index].node;let i=0,n=0;const o={top:window.pageYOffset-this.initialWindowScroll.top,left:window.pageXOffset-this.initialWindowScroll.left};if(this.hub&&!this.hub.isDest(this)&&!this.canceling){const l=this.hub.getDest();if(!l)return;const g=l.newIndex,y=l.manager.getOrderedRefs(),r=g0?i+=l.offsetLeft+l.offsetWidth-(s.offsetLeft+s.offsetWidth):i+=l.offsetLeft-s.offsetLeft,n=-g.top,this.translate&&this.translate.y>0?n+=l.offsetTop+l.offsetHeight-(s.offsetTop+s.offsetHeight):n+=l.offsetTop-s.offsetTop}const a=this.draggedSettlingDuration!==null?this.draggedSettlingDuration:this.transitionDuration;H(this.helper,`translate3d(${i}px,${n}px, 0)`,`${a}ms`);const c=l=>{(!l||l.propertyName==="transform")&&(clearTimeout(u),H(this.helper),t())},u=setTimeout(c,a+10);this.helper.addEventListener("transitionend",c)},updatePosition(e){const{lockAxis:t,lockToContainerEdges:s}=this.$props,i=M(e),n={x:i.x-this.initialOffset.x,y:i.y-this.initialOffset.y};if(n.y-=window.pageYOffset-this.initialWindowScroll.top,n.x-=window.pageXOffset-this.initialWindowScroll.left,this.translate=n,s){const[o,a]=Be(this.lockOffset,this.height,this.width),c={x:this.width/2-o.x,y:this.height/2-o.y},u={x:this.width/2-a.x,y:this.height/2-a.y};this.minTranslate.x&&this.maxTranslate.x&&(n.x=ee(this.minTranslate.x+c.x,this.maxTranslate.x-u.x,n.x)),this.minTranslate.y&&this.maxTranslate.y&&(n.y=ee(this.minTranslate.y+c.y,this.maxTranslate.y-u.y,n.y))}t==="x"?n.y=0:t==="y"&&(n.x=0),this.helper&&(this.helper.style.transform=`translate3d(${n.x}px,${n.y}px, 0)`)},animateNodes(){const{transitionDuration:e,hideSortableGhost:t}=this.$props,s=this.manager.getOrderedRefs(),i={left:this.scrollContainer.scrollLeft-this.initialScroll.left,top:this.scrollContainer.scrollTop-this.initialScroll.top},n={left:this.offsetEdge.left+this.translate.x+i.left,top:this.offsetEdge.top+this.translate.y+i.top},o={top:window.pageYOffset-this.initialWindowScroll.top,left:window.pageXOffset-this.initialWindowScroll.left};this.newIndex=null;for(let a=0,c=s.length;ag?g/2:this.width/2,height:this.height>y?y/2:this.height/2},h={x:0,y:0};let{edgeOffset:p}=s[a];p||(s[a].edgeOffset=p=S(u,this.container));const x=a0&&s[a-1];if(x&&!x.edgeOffset&&(x.edgeOffset=S(x.node,this.container)),l===this.index){t&&(this.sortableGhost=u,u.style.visibility="hidden",u.style.opacity="0");continue}e&&(u.style.transitionDuration=`${e}ms`),this._axis.x?this._axis.y?lthis.containerBoundingRect.width-r.width&&x&&(h.x=x.edgeOffset.left-p.left,h.y=x.edgeOffset.top-p.top),this.newIndex===null&&(this.newIndex=l)):l>this.index&&(n.left+o.left+r.width>=p.left&&n.top+o.top+r.height>=p.top||n.top+o.top+r.height>=p.top+y)&&(h.x=-(this.width+this.marginOffset.x),p.left+h.xthis.index&&n.left+o.left+r.width>=p.left?(h.x=-(this.width+this.marginOffset.x),this.newIndex=l):lthis.index&&n.top+o.top+r.height>=p.top?(h.y=-(this.height+this.marginOffset.y),this.newIndex=l):l=this.maxTranslate.y-this.height/2?(t.y=1,s.y=i.y*Math.abs((this.maxTranslate.y-this.height/2-e.y)/this.height)):e.x>=this.maxTranslate.x-this.width/2?(t.x=1,s.x=i.x*Math.abs((this.maxTranslate.x-this.width/2-e.x)/this.width)):e.y<=this.minTranslate.y+this.height/2?(t.y=-1,s.y=i.y*Math.abs((e.y-this.height/2-this.minTranslate.y)/this.height)):e.x<=this.minTranslate.x+this.width/2&&(t.x=-1,s.x=i.x*Math.abs((e.x-this.width/2-this.minTranslate.x)/this.width)),this.autoscrollInterval&&(clearInterval(this.autoscrollInterval),this.autoscrollInterval=null),(t.x!==0||t.y!==0)&&(this.autoscrollInterval=window.setInterval(()=>{const n={left:1*s.x*t.x,top:1*s.y*t.y};this.useWindowAsScrollContainer?this._window.scrollBy(n.left,n.top):(this.scrollContainer.scrollTop+=n.top,this.scrollContainer.scrollLeft+=n.left),this.translate.x+=n.left,this.translate.y+=n.top,this.animateNodes()},5))}}}),ce=I({name:"SlickItem",mixins:[Le],props:{tag:{type:String,default:"div"}},render(){var e,t;return O(this.tag,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),qe=I({name:"SlickList",mixins:[Ze],props:{tag:{type:String,default:"div"},itemKey:{type:[String,Function],default:"id"}},render(){var e,t;return this.$slots.item?O(this.tag,this.list.map((s,i)=>{let n;if(s!=null){if(typeof this.itemKey=="function")n=this.itemKey(s);else if(typeof s=="object"&&F(s,this.itemKey)&&typeof s[this.itemKey]=="string")n=s[this.itemKey];else if(typeof s=="string")n=s;else throw new Error("Cannot find key for item, use the item-key prop and pass a function or string");return O(ce,{key:n,index:i},{default:()=>{var o,a;return(a=(o=this.$slots).item)===null||a===void 0?void 0:a.call(o,{item:s,index:i})}})}})):O(this.tag,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),ze=I({props:{tag:{type:String,default:"span"}},mounted(){this.$el.sortableHandle=!0},render(){var e,t;return O(this.tag,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),Ge={key:0,d:"M30.336 12.547l-10.172-1.074L16 2.133l-4.164 9.34l-10.172 1.074l7.598 6.848L7.14 29.398L16 24.29l8.86 5.11l-2.122-10.004z",fill:"#ffaa00"},Re={key:1,d:"M16 2.125l-.906 2.063l-3.25 7.28l-7.938.845l-2.25.25l1.688 1.5l5.906 5.343l-1.656 7.813l-.469 2.187l1.969-1.125l6.906-4l6.906 4l1.969 1.125l-.469-2.187l-1.656-7.813l5.906-5.343l1.688-1.5l-2.25-.25l-7.938-.844l-3.25-7.281zm0 4.906l2.563 5.782l.25.53l.562.063l6.281.656l-4.687 4.22l-.438.405l.125.563l1.313 6.156l-5.469-3.125l-.5-.312l-.5.312l-5.469 3.125l1.313-6.156l.125-.563l-.438-.406l-4.687-4.218l6.281-.657l.563-.062l.25-.531z",fill:"#888888"},Fe=I({__name:"SynthFav",props:{url:{type:String,default:""}},setup(e){const s=fe("fav:"+e.url,!1);function i(n){s.value=!s.value,console.log(s.value)}return(n,o)=>(m(),b("svg",{onClick:o[0]||(o[0]=be(a=>i(e.url),["stop","prevent"])),xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",viewBox:"0 0 32 32"},[f(s)?(m(),b("path",Ge)):(m(),b("path",Re))]))}}),ue=e=>(ve("data-v-2d995d47"),e=e(),xe(),e),He=["src","alt"],je=ue(()=>d("div",{class:"flex-1"},null,-1)),Ve={class:"p-4 flex items-center justify-between w-full"},Ke={class:"text-md font-bold flex items-center gap-2 flex-1"},Ue={class:"flex-1"},Ye=ue(()=>d("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",viewBox:"0 0 32 32"},[d("path",{d:"M4 7v2h24V7zm0 8v2h24v-2zm0 8v2h24v-2z",fill:"#888888"})],-1)),Xe=I({__name:"SynthCard",props:{off:{type:Boolean,default:!1},title:{type:String,default:""},description:{type:String,default:""},cover:{type:String,default:""},url:{type:String,default:""}},setup(e){const t=e,{checkAvailability:s,isFormOpen:i}=V(),n=v(null);re(s,async a=>{try{(await fetch("https://corsproxy.io/?"+t.url)).status==200?n.value=!0:n.value=!1}catch{n.value=!1}});function o(){t.off?i.value=!i.value:window.open(t.url,"_blank")}return(a,c)=>{const u=ye("ClientOnly");return m(),b("button",{class:"flex flex-col text-left relative min-h-50 card p-0 bg-light-300 shadow-lg flex flex-col dark-bg-dark-300 -hover-translate-y-2px transition hover-shadow-xl rounded-xl overflow-hidden relative",onClick:o},[(m(),b("img",{key:e.title,height:"200",width:"1000",src:`/cover/${e.title.toLowerCase().split(" ").join("-")}.webp`,alt:`${e.title} illustration`},null,8,He)),je,d("div",Ve,[d("div",Ke,[d("div",Ue,D(e.title),1),f(s)?(m(),b("div",{key:0,class:G(["w-2 h-2 rounded-full shadow-inset",{"bg-green-500":n.value===!0,"bg-red-500":n.value===!1}])},null,2)):N("",!0),C(u,null,{default:w(()=>[C(Fe,{class:"scale-70 w-10",url:e.url},null,8,["url"])]),_:1}),C(f(ze),{class:"scale-80 opacity-40 cursor-grab absolute top-2 right-2"},{default:w(()=>[Ye]),_:1})])])])}}});const Je=we(Xe,[["__scopeId","data-v-2d995d47"]]);const Qe={__name:"SynthList",setup(e){const{isAccessGranted:t}=V(),s=v(De);function i(n){return!t.value&&n>5}return(n,o)=>(m(),P(f(qe),{class:"flex flex-wrap items-stretch gap-4 md-gap-6 m-2 lg-m-8",list:s.value,"onUpdate:list":o[0]||(o[0]=a=>s.value=a),axis:"xy","use-drag-handle":""},{default:w(()=>[(m(!0),b(_e,null,Te(s.value,(a,c)=>(m(),P(f(ce),{class:"flex",style:{flex:"1 1 240px"},key:a.id,index:c},{default:w(()=>[(m(),P(Je,{style:Se({opacity:i(c)?.8:1}),title:a.title,description:a.description,cover:a.cover,url:a.url,key:a.id,off:i(c)},null,8,["style","title","description","cover","url","off"]))]),_:2},1032,["index"]))),128))]),_:1},8,["list"]))}};const et=d("path",{d:"M7.219 5.781L5.78 7.22L14.563 16L5.78 24.781L7.22 26.22L16 17.437l8.781 8.782l1.438-1.438L17.437 16l8.782-8.781L24.78 5.78L16 14.563z",fill:"#888888"},null,-1),tt=[et],st={key:0,class:"flex flex-col gap-4 max-w-45ch text-center"},it={class:"text-3xl font-bold"},nt=d("div",{class:"text-xl"},"Enjoy your web-synthesizers hub",-1),at={class:"text-sm flex gap-2 justify-center"},ot=d("svg",{class:"absolute",xmlns:"http://www.w3.org/2000/svg",width:"100",height:"100",viewBox:"0 0 32 32"},[d("path",{d:"M16 4.688L3.781 16.905l1.438 1.407L16 7.53l10.781 10.782l1.438-1.407zm0 7L3.781 23.905l1.438 1.407L16 14.53l10.781 10.781l1.438-1.406z",fill:"#888888"})],-1),lt=[ot],rt={key:1,class:"flex flex-col gap-8 relative pt-8 items-center"},dt={class:"text-center max-w-45ch",for:"email"},ht={class:"flex gap-4 flex-col w-full"},ct={class:"flex items-center gap-2"},ut=d("div",{class:"p-2 w-20 font-bold text-right"},"E-mail*",-1),ft={class:"flex items-center gap-2"},pt=d("div",{class:"p-2 w-20 font-bold text-right"},"Name",-1),mt=["disabled"],gt={class:"text-xs opacity-60 text-center max-w-45ch mx-auto"},bt={__name:"TheForm",setup(e){const{name:t,email:s,isValidEmail:i,isFormOpen:n,grantAccess:o,storedEmail:a,storedName:c,resetEmail:u,isAccessGranted:l}=V();function g(){window.scrollTo({top:0,left:0,behavior:"smooth"})}return(y,r)=>(m(),P(ke,{name:"slide"},{default:w(()=>[d("div",{class:G(["z-10 min-h-40dvh bottom-0 right-0 left-0 bg-light-800 bg-opacity-80 backdrop-blur flex flex-col items-center gap-4 justify-center dark-bg-dark-200 dark-bg-opacity-80 p-8 shadow",{sticky:f(n)}])},[q((m(),b("svg",{class:"absolute top-4 right-4 text-4xl cursor-pointer",onClick:r[0]||(r[0]=h=>n.value=!1),xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 32 32"},tt,512)),[[Ie,f(n)]]),f(l)?(m(),b("div",st,[d("div",it,"Hello, "+D(f(c))+"!",1),nt,d("div",at,[T(D(f(a)),1),d("span",{class:"opacity-20 hover-opacity-50 transition cursor-pointer",onClick:r[1]||(r[1]=(...h)=>f(u)&&f(u)(...h))},"Log out")]),d("div",{class:"flex justify-center cursor-pointer p-2 opacity-50 hover-opacity-100 transition",onClick:r[2]||(r[2]=h=>g())},lt)])):(m(),b("div",rt,[d("label",dt,[A(y.$slots,"default")]),d("div",ht,[d("label",ct,[ut,q(d("input",{class:"flex-1 p-4 md-p-4 rounded-xl bg-light-200 shadow-md dark-bg-dark-400 flex-1",ref:"target",maxlength:"30","onUpdate:modelValue":r[3]||(r[3]=h=>U(s)?s.value=h:null),id:"email",name:"email",type:"email",onKeydown:r[4]||(r[4]=Y(h=>f(o)(),["enter"])),placeholder:"your@gmail.com"},null,544),[[K,f(s)]])]),d("label",ft,[pt,q(d("input",{class:"flex-1 p-4 md-p-4 rounded-xl bg-light-200 shadow-md dark-bg-dark-400","onUpdate:modelValue":r[5]||(r[5]=h=>U(t)?t.value=h:null),id:"name",name:"name",type:"text",onKeydown:r[6]||(r[6]=Y(h=>f(o)(),["enter"])),placeholder:"optional"},null,544),[[K,f(t)]])]),d("button",{class:G(["text-sm md-text-md p-4 font-bold md-p-4 rounded-xl shadow-xl hover-shadow-2xl transition -hover-translate-y-2px active-translate-y-0 active-shadow-md bg-green-400 dark-bg-green-700",{"grayscale-50":!f(i)}]),onClick:r[7]||(r[7]=h=>f(o)()),disabled:!f(i)},[A(y.$slots,"button",{},()=>[T("GET ACCESS")])],10,mt)]),d("div",gt,[A(y.$slots,"notice",{},()=>[T("Your access status will be saved per device and you won't need to enter your e-mail again.")])])]))],2)]),_:3}))}},yt={class:"bg-light-300 dark-bg-dark-700 dark-text-light-200 text-center line-height-loose text-md py-16"},vt={class:"mx-auto max-w-75ch intro md-text-lg"},xt={key:0,class:"p-2 flex flex-col mt-8"},wt={class:"text-4xl font-bold"},_t=d("div",{class:"text-lg"},"web synths",-1),Tt={key:1,class:"p-2 flex flex-col mt-8"},St={class:"text-4xl font-bold"},It=d("div",{class:"text-lg"},"web musicians",-1),kt={__name:"AboutUs",props:{synths:{type:Number,default:30}},setup(e){const t=v(),s=v([]),i=le(()=>s.value.length),n=pe(i);de(()=>{fetch("https://corsproxy.io/?https://db.chromatone.center/items/players?limit=-1").then(l=>l.json()).then(({data:l})=>s.value=l)});const o=me(t),{share:a,isSupported:c}=ge();function u(){a({title:"Web synths collection",text:"Look at this online synthesizer collection. No need to install anything - just your browser and any MIDI controller will do.",url:location.href})}return(l,g)=>(m(),b("div",yt,[d("div",vt,[A(l.$slots,"default"),d("div",{class:"flex justify-center",ref_key:"counters",ref:t},[f(o)?(m(),b("div",xt,[d("div",wt,D(e.synths),1),_t])):N("",!0),f(o)&&i.value>0?(m(),b("div",Tt,[d("div",St,D(f(n).toFixed())+"+",1),It])):N("",!0)],512),f(c)?(m(),b("button",{key:0,class:"text-white py-2 px-4 mt-6 shadow-lg rounded-lg cursor-pointer bg-green-600 -hover-translate-y-2px transition",onClick:g[0]||(g[0]=y=>u())},"Share now to save for later")):N("",!0)])]))}},Ct=d("h2",{class:"text-lg font-bold"},"Welcome to our free web synth collection!",-1),Ot=d("p",null,[d("a",{href:"https://playtronica.com",target:"_blank",rel:"noopener"},"Playtronica"),T(" is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. "),d("a",{href:"https://chromatone.center",target:"_blank",rel:"noopener"},"Chromatone"),T(" is a visual language for music education, research, and performance. We share our passion for web-based music instruments. Welcome to the community!")],-1),Lt=JSON.parse('{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","frontmatter":{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","date":"2023-06-22T00:00:00.000Z","layout":"home"},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1692108519000}'),$t={name:"index.md"},Mt=Object.assign($t,{setup(e){return(t,s)=>(m(),b("div",null,[C(Qe),C(kt,null,{default:w(()=>[Ct,Ot]),_:1}),C(bt,null,{button:w(()=>[T("JOIN THE COMMUNITY")]),notice:w(()=>[T("Your access status will be saved per device and you won't need to enter your e-mail again.")]),default:w(()=>[T(" We are building a community of web-based musicians. Type in your e-mail to instantly get full access to the collection and occasionally receive community updates. ")]),_:1})]))}});export{Lt as __pageData,Mt as default}; diff --git a/cover/fluoresynth-by-electric-telepathy.webp b/cover/fluoresynth-by-electric-telepathy.webp new file mode 100644 index 0000000000000000000000000000000000000000..83ef1a11c7d76485fd8fea732788d8a592ed883e GIT binary patch literal 33856 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 Ta0*opv7jE!^szds2mk;8FpmMR literal 0 HcmV?d00001 diff --git a/cover/online-sequencer.webp b/cover/online-sequencer.webp index c5e08a1575ee0c369534613880a842a487b152b3..f74b371e578dd25c8f535883d0f27163e9c55bf2 100644 GIT binary patch literal 28852 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 z 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%0AP+=%|t!ID5C+I^W^@`&Q}P-ZTLLdT&G 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 J00000000nHpFscs diff --git a/cover/sympathetic-synthesizer-system-mk-1.webp b/cover/sympathetic-synthesizer-system-mk-1.webp new file mode 100644 index 0000000000000000000000000000000000000000..8f12b755b3659223f52e236066a311439bf041bc GIT binary patch literal 29666 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 literal 0 HcmV?d00001 diff --git a/cover/virtualpiano.eu.webp b/cover/virtualpiano.eu.webp new file mode 100644 index 0000000000000000000000000000000000000000..19212742997c892c1719435b49d058826e61a09a GIT binary patch literal 37014 zcmagEV~{Q|lqTHWw{6?DZQHha+qP|+w{3Udwr$(?+cx&jel@i-wX^jl&yUoTN^+7q z$w5U~N?bfH0SHJ#OjuD}k&`g!Ut2K=Bo~{l5Gf39?{3|TP=anWK|Ks`#NmEEUK zM%c~!*?I5JU&gzs^Pg|P&%9PEqotkk!U0 z*WT;=ZU2Rj{Wpaxfqj9I?|FZx$G>+!`QIO3AJ3Z~0d;0a-0;%RqJVCs9;C+J(_^Y0hNbN={`8o|v+xr@O| z{)2zNH>g+dBf(qmLGOzH&5yuY)u+Hq-HyU_@6XTA7t-74v;Cw0?vHnGuWx`q#drF5 z(Wm_p!Nl&R!0osHyY|=UzquN*RKdS>c3uBU-`Imv=k5|l+vjSk)V4xsBz`G}m^p;fJ%8=vX?qJ)8iYn{ zI}!zEQgzGwm>iepXCY9pwt-W%WF1%+{z{$2wKZ%#utZoW3sK0!wh zaDB3G0kjaq!w$1g2@_*$*X?%1ksytvw{8L7(8!xS((_gg9tCa000SpoP~Gdk+M0nU zVptw3a2wpmHPR5?=ps}96fdQetv=G4B*bGT1i>BCi*kRqnQmOZUm?)&8qOW&U--4( zFZB*UhPwsp;YWW9Qc7#c|IBft3qlY=a(Yh!E3Nuc<*aZmAI_A?fpobOB^z%L7M%+PUqCs-n{ZX+*J|6Ff7+v;qKiQUo~2JF}hKjqCBm# zKej9PT%`WFv(#e$OQOz$d<2DiAgo>hfxQvb6lSlAy3@lm&=4 zx@C;M<>k2zE1*4b5{AeKQ`WR4tI@ z*)u|)xuy09=0-bwK}ZCg+$*b<8vZ$v%;Wnl%oLe^nRxn@$fLJ^;v^rXfaWPADI$CF zO9@K--&9%7i51==Gq+q&Di%V2Kv2d;yj1I?9_M;wt4#$5E+?56>KxIG6oZYMi44f7 zQb&+5HJ~*Sy{SR4drI1Ty*{0N2t{y3m)QVeCnjd3H$vo7xr=)rSf>^y>{2BCgi}on5|OvXI5GJOontT|=gbI-~B2!R{T52Cs z;t+sadMfj;6kY8eJ{_ZLR^ms_%R*ZHP2`Wp-rH(y!E}rc4s59k-j|6^oL}tiv^5ST z2?!4K%cs%}lMd$p-ts3ruSF&yBeny}W~)dx=lWE`sX(8$Ll>j!XJCIe?agA*dy!n6YP$KHB1`12+7L}PiOHZqF*m+lofYy;wVjTSHG6rTqv8XyU*^;u3_<)=X?Vp|**Sv4ub|W$C zZWfthJBPAEY+xJcvv#x|YQb4!-JaAY$*z zu)*l)RUNvFBGH)LKA)U9x;YB$XZYFI5&O@^z|GCkW1*~a1i+10lKw%mr?iR+VHM+C zQC9uFW%Xt`&^ZMkNL~c>=!k@ImfvNB$G~3|%B{)ZF^YzU!v&TmgcVG)s^mZ6SLXJ? zR_N(VMTw>P0?%bUzJu&7|0S(eZ&CGljx`y8(y!D%e{b2T_i;={FT3N`ESOT%`IH!; z^?%@XpYY&oUc2V8cken%?tMSqj-YRI@a|T*hkisjW#aE)-{l}P77ts5R#t=%_O{iS z!JhDBe9=kvP({#xVB&rBc11R0V}p%VV!${9K!cP%S#P`0cQ`q#OI#k*MWpDNNlF8V zeC13=XYb46DDV4Bm<>PYK?0rV4Qj)$-y?Ck#dK8_sXmg`!)u{S!pj`>U_zyE9G5Q~-2bZ2M#mAwoRq5{k zqJ#+~@V1XWnU3>f?iJIbCtc}J7rUZn5Hi*scHKhe&ge*n5#d&L7J+RpC9j|)<*{;g ztkqIg=HWKA2Gj~u3isPt)K55Q^TCzkaO6aSpUf{!{m5@P-DnpAgf0`)%wAgw2m%w! zDHK!)lSX`dAwq!*$ya4zq7i%cx>jESTqeL}ND+=4fG{jRWNn4%FUbYn_N$_GYz)aM zRpo(*!Snt$Db=btf$ef{M_;YL3R3wRNWAdSufP@}6 z)v6cSMo2a$fDqjLAAxgZpP8>{+CkJzr2?cGSUx`~PdJj6$zpDQV1ZebEQ zf(S@N#RE~i{tV``{@E)fkgSV#PYoAg2!sQ=qd&-f3+Gr{Szb!sIZ|2O>XEpbbwSGN z#jg4MubzB%AyJ6aAF+8=X@u>G^Dtr~;U!cniD{M>57ZC40*(u2=%&Wk+uCn*hgMCV z5~1#0mZ?(Xt#_9Ik9nT2H76(At^iSzZtHAogISghGKJv2!!wo&HUfXIr-6LYNUkY; zfmuDJA2+KOn{;<{*$19bxvzzh{Mr}8RI1%2nP?dL3lOLZe$G*~Y{_b+JMr*~1kv9^ z;C|PdOf=0W+T(`u1<$e9B(^-I{xry}p~~2V?p_(AWn{GACKp*IxsM!F;Y<-fPN+L1 zoh!8cl2bDrUJ9RAVS+~20}b!nJ0NlO?TLphg}J_Me$OT32~wdsRyZTgn^L-n!bL`H z&eSu=*O5`VtV-D(hom&HaH+AT@%;wJ*9*hW@&l4T@fDe9Ky|1#mypu_RAr5&KT4%m zaV$#yttMK8W?zzzPm!vPlDeyXka!9p{#l&UOe6ogWnC{&fZ=e>GY(ltu}c4wbj&h| zS^Tf0#XEW2hkn=XruvsUBAL=Ob)1!|vvg6G8ty{*NvZ^EC0EIRC!b|=`|u&8hFx&R zyIGnrbbtM%qLsRA);bbb{1URw7By$&Y#@>%O%=!R zAvdOb=b=?%Ioyln!`*4%FZZ2zWtMsV<_}%He$IqEJ3=h(gEL$d_}LnFk;bBZR4!KZ61w79;Eu^8il<_l-qmPY#n$jMmWx}RcDO);fZw>CIpQkwY zP*J)9Mc~58ITtd{vIGuCOT9BqCHAr&-;je&vyt6et?RK0jgwB~`@`&Zr@mPVoVF?n zjx%t#lGXi&i<<&EU7Qkpb4%cYyyt*Ca2j7fglH5aL%%cDV-afG_=pY(Op#*C=O}CS zrD(v7E7D_B+n)X~{d!gAP~N$Kn3oYMo}wRLz21*Sr0Z#A(x4P)T-jyufe5F*^XirO z9aw(k0Z=1cpw+3%uFkmriM9n7Q32*H_O>3Jguilrdf}BdJSxN+q$VWXGX!HIQ;eL_ zOe(U9A!cG*v@H)!HZ#cL^jWY|xHz?Fhs^v48Sn}5+ba2QaeAmN5 z^n;5xVGis=pa7Ieg=*HPlA{?9sAi}|Ln#}n(~|vHD(bGU;Zc#Nb8gM}j3nUCYy>Ls za_6z^i+Z-%oCL5)J|g9>D)))Zn;Q1Xf;f<1>4(k=-63e8i|zYT?<%>*|K}Jq7eD*T ze@5p250MZJovyEjUer}vC0@yGiI2v+axfe2^m`oTzw)W){6!_V-n$YIYn0}YEj}$&SiefeMWrGWT8%DGDF;Wdddd zQKP?1p&RmGKQRsT5zxbRL$Pchd;C~w1LN-8;-LC0oNTf084W_dm=fSYvek@Yq{CX1 z^Xv+2Nn{wd4&9ML7ls;UJa?Nu5>y3~UrE9?0;_xG{Oy9V8dO|>k_*ycCyTa9gpfV% z-d_i)vI;@kcZHu7y$-0qe@!czXt3rx_BW2$mn4x$AQI)PY;tOw!DF5a*uBYh@;gB; z4{%im42ACy?jv_n9ow2?YDNQnfO^*fy+7@Bw)a36m3jWjXC=W(C1RCB9>)5c18L{Z z-A)s%pVaS7TD4=+FXRAixId9y0`mr;Mn?`+pv?5s5l1G?4xZ`X zpN&yh;wjMHZ}(gyLJL3nkmna?3C+LxW4%Rm+759=^cSU6Ka|!FA^QiNA6WY1#Bu;y zp!EuZ#$OAw}=m}FJxOs!&!LP3)fiLHsc)hf~tQug$0 z$};YDyd_b(ry0>_Bh=KN-(H0^^2C$_ObFu%c$9eTQzF1Rg|H%HLA-g7V}xbi)}9zT z2Ez1&6_05^B4Tj|F;9`AiK1ed0*O}NA2Y z>1U5-jMi%$;&XG#+UnhOt@_ti)-4eVu^JDyR**$S9QlpJPK@Qkf2jpC)D~cvO+el| z{ecD(TFj-bUM&Kj0NUAdMRm6foBvJ?(K=kcZv=A3TP})dyeX;K?miv@Pd#h1g-I@M zW#IkntD9jyQy12BE-Q?V(ZXTU+oF+xLyh?9z0?HJif_|qv5k-0ph|K@sEq{L8`v>r zV0Tx`i(OyK)h3CIIRdr?^me7SNYj_92YH_A=9W|s!y@= ziAFkOuHJ6YH~UA2a&XdP(OTl9=3eDBP-web3Sgd%{^Yd-l^GJ^(35U(F(arBmK6Ih zx>@S9uO!x28rFEjWDn=S`jXOI55I@GiJt!kn;_$FI7inH`5Jf}fYQzHVx}zA17k`H zU~zT-#=;%a=jlZsIA(EP23ljO8Xz<(o}RawnHWz|%x%4Q(|4phk8v2!>yXS1DEQyn z^-sZcUMb%vzMWW9zerz|&i`85`qq|O@)Gn$JyXTc0$8u1-}pjkf*9{ZaPxY%rx)6$ ztLzgsS#&EPenS$Y4eZLg({-de#`kFG+a1yT74a#fvJ2f{#p@O>ddt_6Gd8`$%BOMp z!>kk9)TzPZtMyE8%+YKekYd4pjPZRG4KND;`)v+6M}Uy8aa5bSggkCH6e|}WMkA z%$&7u&mXZx6&7Qy+3M8m_W=rv)F#|=>v}=oQ|J9ujO>kTDsS8Am)d{F=S*td=s5J4 zF&~_~s(>%G88Bx$I{!yfNtYp0wynJfwZF+`HHLtvwE*f}vnsC9b@{seu)w8&^rHLu zQjdd+cg~Ug>5hsw=>HK;V6WaZ;gQ}ZA(wp4gkt(PWjeZMt4;n#Bm`ISKQ4>2Aqe#S z!}C5t*jiw7)oVvdPNlPM9gDGs8aL!0iUCqEZ9lGWXb9!vy_0t~UaGoRhEPnu%zeLkYB5XKW208k>>W{(Reah7D zr~(g5fv9;midi{~N9q_c$kvi&OkEeHF8C@7ps{wO{aJ~NN;=*kf6U}fVW(f!u4=~2 zCv154gP0NG`u^q%IP00iPDTMNwC?sBA5}6txSE(AL~FquC* zuedyZG$hRth!PB>6-9zo-(U;kD)N&7TZ}T7C|Q?*5_}zPV6E3$+Ne2N!oV&?AHLLK z%W)p$&6&BM>Qz>C95J#X82dv`&8VOik=B`YoD_!5h>+WTHUjmTYa4YAWyU*^DOi-B ziRmvA05&mEJk+9lmu)2Dd=e2TiZL>Yv-6uhc{^*#@=;ZC2CIbVVnX*7Z5kD}4bBWc zO0v(?@9Ij@LQwTt^6gsB@FK~sLZH$|CZu2)53tA_wsmtZ(>ldi5$xyO2E99AB`Zpc zRLO9V;J6hW@`!dn-hWv*a90ib^WAsoo=HVEuhINUN>%pw=ng*jZP{t6v3c0 z=2_pr2MDKI8$Vi>svTIi5R>6LeN+jc!aA5)JvQ{f%OAENEXJNJp6(l$4Mwu0*Gvlr zw>`EUI)2*5Bnb)WQ!GwZwn?Chj_c-N`OW4E?4@_nCop|}lsf%f@8FwlQ;zt_+(ac5 z2Sl+L2}lrBI~$YO&89Dy_~3tL+~@*6*)D2KQ|*_LIA(Y&Hr~N=7$vg6_@dXEE>~q2 z9yGxGIe2%z6bRjQ9}O43ceDo2Q50}^O01RhcWH?>hZBtL9B+-Ya!dDv)d9Qjv9d-L z=S3T%C^~+bOR%Ewb~QtL_19Zq-;!43dm-|8V!~@!H=RB-<09zPFvUZwIe);LLDru% zpcSKZlfPIrSLeG-@U0mD-s#5}q@;ySnhaPEC9D(54pjESyTWdE0k$eZa)r+y&A$(5 z!sY4itZ1|vhUDThI6Qr43kxq76(ypaLMFW)T@U8z&NBxddI@VV2oa+8fAnL3=g5w% z0qPYR$xY6`#d+S~QfM2eov+2sAV{jlcpgz0s?89NVcGDqW|n`K;ZqaJ$b6c22<8`-!l?gjuuO zQLjV2k&$H;gK^(#CDNhjJ~Nbs@gdNibD5Wu>6w-x4Br!)+b?Gexoav|f~vYwKo5eg zi58$|Z7!%)wM z;FYLZ|NO$NW)BUgWo5fw>?W(TQ9Mn67OqHU0q%xtU{A@D2z($YI)Fth*089-)Iw-^ zAvKg*mHLV5d@bM?PLE!&IM-(&`x>3gVn`EzW?{k+!F8F>pTi25Thd94a~kse0crR0 zC&ztJ8$!QK?&-Kt$GjLI01-R>X3vDUt7C&!y?CI<_`Ra7+mA(2YQ#^adazydu+og9 zZ*RgDR0$^Vkdog$X+v~hPCmvC>Gz2g9`#~TDS9gz#{Q3CT9S=%>`VTdP!r(@71D7F z2To?LiiRVH;njwF=!i7f$`vls)}F*jBH4vNm8Hgc`TCdO1=9iI4@$RUSAzL z%9iSy&e03PJ=JVA^L!7IAUtnYG%&0I$zpisQQyOW`uD8cj0U9+mL38&%1xFr z!dpa>sGu*&LD$tnNjau0p2{==UX5TX;|C9`Yvxz-mwNM@I%lDJt)mdWojcDXn3dw6 zFi~ka+WrzezOJr4+Nx1$_)=^G(#E;C8Q4W?k^qG34(j1s{f&0R#}G!ObN=r?+}mBM zsp(%N*U7dd+=g*4xh*3eI(;+v zN7Fd`N>6nVr3RlvBxrhAuSrl$3@TxKF~x$#!c}gb(e;QqWJ+H`P8L4VSe(}MhN7ag*F8_KmGJ2Yl*mBrN39+#_JwQG)Cr=09EmOOXe z8V)^|V|uK05F&7bi=A)F?@jKA77Zh#rum<950?u^XRp$?&-uDH{2RqlPCeK2O*usY z+Wbh<5OO!i0OY}-3v~|fC5q_nqI*5uN~$ks*DBGsL9}X~8rr&3cdTE+fKivEso`7A z)j~v*0B*<1FY^b4Tg@WM4}dXV*vGi6L=mG!jBNUx7FD^+Ag!V;!zNM=Fnxif7CKc9 z5h2$?i%L7yB;RIS{j<`u5R{LQ*|m_*W3f2yHU@%BN-9B@Q@BsB4J!NX^Je(6ACAAS zKifjSFtua?_Irk6GPG8dd~vge3numaFl^ko{Ij@N7sSLXoU5j ziU4BP_YuT?=4hR;re6uB%6T77V0K!?ANM-G8@*?0f9HX2?vV!~@l3g=91VJC)_^(v z_VFK-gt)JJHU~h^Z%`rk@fOkaxwR>RWn?XTN_2q*{ao3<1^47EME^A9uUT9weVc7t zIxP=a6f^Q~GT4fy_1q?s%BK7*V!)+b2RWH><|8s z^F74qktQQ%qcLo$HhQEQv_Tn{Pd2TpF9Grc_bblRHP)a4&X=rcVoE}wI)59`zX!1| z=&JW%AAY*?UBo-8y&I14!ANL z1P%1aQrg+*ZeXtHH=MXYDUE4lhn1QYgRL8z$BGb~P#ZRJLqy@<_pbrP*i03H)^Le4 zd^G`rh%Jcc{C;Y-p9_r)fjdI+GKq(3EJq^me7M` z_i)R5P8H^YV#IPfUw@9fVw)OOBABw}P)|GMf|m@uipu1V)(kXhD3Wwxt;C7aAP-ps z(?(Rp+H8?S*ai>X8*i^wf8|)lT^l%$2MR<>{FIUrFtWQoDs_vA&@1)pNOjHsJquwUoSZ*=}b#QocJ-oJ9^{h|5oG-Sod zRylHBp~i>xS~abAscjokTtuekQT*wk%XNuFe1u#B%VPFUurRGg?n-lU^EUf}?!5e< zPw_Mm?US;F&(3Q(N}B*n&{UREfpjv)ozvf9gtp|(B9{gT^R|lJ!jkWpZG{Q=Ot0S~ z60pb0{YDvBT8s#W}6*8UJ3i249%w8~l&HPUA0}DF1!4=t(40&IV@X!BSG&E}A zz6@|T%*ru9sh*cfPWx`~^M%ezy^6zT`AABljIkpF`r3AJFW0G8SwvgyB0M-?Y1RgO zI5#)#hG0#**UOI{z?orU$DfHvEYpyEIa^NM4iby~9ylc~7JsD++`s(t9anppP6)Hb z-bW2dFXl{Za@+mAfEcxVU7xONn|BOq~7;3bo8@Rf}5Gp&Kny`N0e$tSG<77@S> zLv+#iC(v8F4iPR`E2ITjEP|NnE}PavO0WAyg2OAK5Sv$Xey&7Bv-! zYVQ+byzh8~ncea0Xz%hdTu>!Y_f+)Oyp8BeDV=BE#{f-DL!c z|Fed(r?MpBY|jTdXn>iLb6)BU>Jk7%LZyU05b;WtKW$-F>W^+@1Xlv~`U8*D@E zp&x$ZBQI{wj$0^*c$qt=7FVza%nA(Fst1BkEuAzX9H=pPAcXU)1(^<#G>%xl8Fek# zF<+i32{sLAMj$YuU>1lMC{eEP!OGmd)K6o`9I{d90P25eGl_F%!zEdPk%PY_d_?L3 z>6tB&Rv*7e=G*rLB7<1>6m}QIbUsDQl`=@Ee@`+%SlO`(NHH`5aTy4w(>Q>*_BwI< zWl#WWd17vyM{TrdS-WG;Fi%$L&-eUbIOA$bEM|Ro_c!(gl;-fU{ee$&~L)3yccOUBGUKS0j%okSTk)xkrK+L8CKkH`%(np65nAF%(C2LU+ zF(QLNU;U23N~JYM*dVNAmUdR2H@YJEi zAQS42MMDvNQ}8R%@8_H9<`6zwNc{YT2E~Uh?jPVf_3>%p5O{^uSka8>(2&T?bhGpE z#jzZ7IvPkxpXbdYNUk?wPr$wx?syU^ZmTj@P-JSxM1nY8kNY?|0subC6Q-ERfPT_K zdxeqNyE=hA+)8c5D+tUP^Y&cY1sLOohA0tvo%rbCCH-YsY-1z0JDW2oM~}X^bgpK> zzQO6~OBfdGx|E!OD8GND6SN#SVWwOk>zKJ?;@J2{SLgRFlo? zH9S7XnnFI;Qp!pJ9O40x&v`huO$EpzX}@VkdP;{nuK)@aYWXU|WcR1d?W1RcBy$h@ zVpqEeFZIE;qI^1Cicup# zs3*X}Vme^TUF*-?>WBMJLJuafm4>Y(wz(z{FFQs&;3+QH8?rQ>AU&W`Uu*ptK0qZa zepNFC16uSABoJ8Q=X#&OpzvQV3;+mE?1C$-qv3{xmd?#vjla z%<;(HPM8+pC&+^NxOr@0tQp?cPE99GGb#TPdn(;KtE2wAzoG-%%X5Rhyl9jErw;H? z^SdMp#772c4Bv6RB%aiqN-0x;l4{~vyyXfz^c1_`AV?79zUWqHbw}}TQ=gZnD^><} zji&cjxI0Z8)L;(LI_`)_3I}6QJQ4c|$YBxZ-bjOT)@H5xN|uu%s$nd_iYyj4m#7?ZfkO+OEeVUJ znETLPGv<3g_#<*T)>9!NFz;zU*E{`viL7U@Ggdf%<+eUNsOLk(U>hJlf2ce=gj7l5 zU&D8@81Sn5$rm~(k`uBm088M?y1ke>`AyQ22=|*R%gSb8;8>9W~HvOaI8TTs)9$k!^LE7^P`Dr z?^IlG-c8qO=JOOC_lPn@U=>jOA<>Clj8{*~3nkLw7HHZkz`FreE__(5@iu>*$?SxS z>_5Ng$cCdz6~T3AB1>81zny^~8W-R|5+ph#>(S)6&IiT8zo2Fl@h-`XFjg3q-aJKq zS(L4`z>}rl5vM5AX#)!4IYbA(JDhQ7A49BTrq!X*)_3{@izCRgEQP7}QlZtr>jG099ldLZ#NC>=Fz87UtUMIw zOLsC#<`OnM{+N{ar+>vGPMPH9A_z*}@KDA)qJ0pl4orvQZn(zi&kI9WJCdEqOR)2u5cLzRVyjSY_{bG6&~BV;(avyX z*~!y6!VGc{vC3y;AkW4CK`53HwDA_d36bmquK8t?iSpw4-hi*qrqGWDQmW=5KQkh1 z8vEb#sx#4xw{mnO$Dq^nchFsY25sv|49anxZ#I}%(4MIe^4vlYVVIM_DsKTtmGiYQ z<9q&$!k{g9mZX7WPR!flTO)-M;AFK~q0{cB!nUEOM~Fc4EZQh22)Wz}){qK|rI;rI2TV0>m;@4OX< zy*=|8N>);hI3p=&dIYnJ9$Xn|^cyI<5&sBFB_sRw7h-R=+Aa!`x4;A14;R3Hv#HbH zh9iPA5b5}eGhCG{kH#JpZ0X1f$hZqTE&|sTkz&?X4D(=z3 z9PksipS0(C-qvq4V}i-fN~nHU;s_qj>2d1h9D`CPy#-)A6l@cgNgpaQd!39*C{k@-FhHny8`QMcq9~bx6*s)A4h`<#)m`5NMt_RNbe~MzG|bwts7{a;tOayuAv80R z2D=xjN`OmPepyG2h`xPH^%35AMaZ>PgFk8h-14j3!-|;2xDcb-9pb<|t#l2seaoHn zB0SQZO`p7^W%4w;7fVksX7e`BxYF$kRoVZ* zxXNPOZpDNUY2*mTzvu!DsU|d@D`OPxCQP20DY_Gfp zNZbSiUJCJH7WV{b8-rST>N0A4ohz0)`UqNwTcY0s6|$OwPOF*uS`)UX=D5wEHXs-2 z{Xug3faxSg@ASU*7KF7W2+w4+QLGB7aPW6^r>memnQnsAx|kd9gr)ZbW%$_7tKQE4 zD@3{i>P*0iYTF%o!}{irvh57f@GpwCt|KaXdPa$ElJlv|pl< z5;=}pl|ukGc_TuO9-|Q2Q#z^VuFOE%44sRT*C@-DSiLg{XF4Z*NF8b6@v9y8Rhd0c z-wP<}+NN+&V9K&x6{=ft;^o_%D9?x9Y{&mm>=!N+_&4PRJ8)2%K-v#ZzY4u3XiwOo zxNO_<5M5L(91-5};pGaMNE6K4Y{BwKF9c zS?n2AQvBG&HVoq+H|7)XyxlR)N}Ajxkrc0y|HJ{2v;kM%oxP>06}54nwKu);xoNxTP2V()<33sk9Kvav&LD*B7a!!e$*q{p_ta8SV+e{bJbUJ7VB7;v7mgx3V{Ik~01C~Lwvli5*InBNs1uhU{@+p8D8*0Jsvkj+W3lApVNPV=*aEf*CrN`f z%;8j;+KW)Z4r!H?8{g7X^`^EsZzBANVV^km{_l^0`LeeXb6_`LJl2LG-0>p1j@>OlM0*Hn_FKp9 zDj8%%Mfdvhp8Lr68y#w#trm&_LdIZ1qfa&~EU1xapvrRI3jIX{Ti@kLki4S#1c z<(Y#n5naJCtz{rDu~nOJ_)Od_a5HcW4aUK5A(rEmWEeZ3)5z5H08@q7;r+@X>$nf) zKAo^Po;n~8_9^i?@ZQN}n0xoBWoOhKxq*Su%DAQ1ARYRk5fXP{?xr9ZPhsDg*n#CU zde0)H_}HL1)qU!RAh9FOMS_lgF710w7c6_xE=qqWd0XO!Y2yYNYCNsd?&~lA40m%* zenP(^e+#>IljymN6|B&QLnTig4SI@7fOe?3FtO-4=+7doS*Q|SAy!G#y4-i#w-*`K zojXhCf_h+E*YGZ9P7E$0g=;+<^FRP8q!nj?{HEXBIVmK_#qumu%Ic2l&^4*>FCxSU zSRU>)pQ2LwS%Nml@ZA#`y6=~)D`iXKK|n+DSUxS0J1&)b-=p*+p)}qk@9JulEdI>m zG7g)?|8RGhmUxIf9)e2a#+%48IgoEUJkXPqvh>ee!SJa1*5)~FxYoen4YUdDKf$j6cUj;8!;2KJ;2R;U7&Ho*k&Ag^7N z3Qa)HgSVXJ^hrrB#P$Jo}>1UgEu|r$$kqt_sT3#XI!`a~~ z6!P;voAM@|IpGJQ%-_yD8~6Q4yTK%glAG`gflyvav`&}Q##`Al=tJCfY|SVW^X3u# zI;C`71lA*IUj$Kr*20bxSz&*lLRIxm-7!69$q#>l#~q?d9TxMbI_RAq>d*=TM6w0V z_@ANwb)FrPfBY0xbYwu% za;{+R0YeHM>49*U7XpiKdpj+RLi6VgE+TkZWN{t>Fig1a%Z%5kp2j8d)6ID={W08e zR*nV?Gi4ao?89&3SXvum=!j*MZ_pY@p=WCVK=3yYqm1)~cQ0U^l4>%;FE4H)ipt6+a0n9kD+w$+0TYPCKg)Ie ztQi;OvvWt|gOR;bz%XnbT;(%qD3DXpqVu{6Pgv+jOyA_{$a~$%H0I%K_8Lm1HCcyP+niyDRkJFZW`Mi+_DhkFwT z=fuy`7Uzioy+F$M?7jc5wv2RhlY48Xc2PPnd<58tG>$Dm9^nr!iT}7SaiN)uv$P^; zr`h1(fN=muh%yo})rrG7!=_RgV&wMS2>1Q=B?0OyzEJ=-eg)@kALM$Mc|*7&Cknhc z=HGFM8Ff9f~O-Mb2lhECBHlL4LX${DX>g=MvDl^#cHMv*Y% zbU6+!3_x0y4ZB6*L+rw+ewn)jD+bu41|QeJ!3|Gi3*|k-zC+z~-6gzERu(vIYEQ_6 zbYHu>`<-**o)Ld{qs7;h24H9ot&fFSeyc=dvBd6{TzZR zG8#SN)A}m_)Ytsb%rb1b-aDY^bfkGNrDak{fN{v|L*)>ltlr)saQ)k^yp~YwqWns4 zUEL}}+I3vDX?stWw_AxAPbe|>CgwM9mf(1cR|pfq?56lO!@)*Hqa^A`=4y}087l9H z4b&WQU^Dv>w;PDp$2Ls-#ZgQ;Lx6YMzUEw>e9*)B@9k&N! zl|Z7DP3T)=8E32|eidx#>#x&G6gu-^M_FxEz!##15$dAZA3kXUrIyB-Q7HMPXe`InE6492hu)JEWP+L7To-_X%hSfj=Iw0hQ8$Ie3H%2zCu@) zD7do4l6tPRuCNR!wZ#7Q~v1QF^Fwf8zKVtaTB zY>?$d-$o1dK4%g(drA2g;_~RRqeh^8W(`1 z7W7O_3*|}c976A=C9t;FOZ7&DYuB94F5{hbHzW3Sy?c5%sY%9<9el+4Ze*zgZqP9p zBi|KbB2;b(l}Q0R7Nr~Vrii?P$uH~|nHQu0N4M{JZuWg)6f<}Bqzov&^>VUSHtR|5 z7!jtxXH|+J|b+S|ufq*PF;pB_< zYfBPuUH3VcSdZvqQ1p#h2F9#=$e4`OLoHKY=(l`A<>vP;Z4O+C4smKbJME=$)YYBb z6#MDKYxWj=++1L!MU4UioM1FZ@U~xB4fWUgiQWB0#JkebT=H3KWu-?< zfc|(P`aQejAnrgePr4F)c{3kA;52*(cOc5gNfBkT2TF&Q=o447rG2+m{Gw7qT*VB% zIn!ut21ZEtF9HX)S0(spb9a~j6I>e|o zQ3|)4aaBbvo3li-h6ZAkES6+%r{l9-?O-f$+`WzTs+1~%NNvk zmr&#HAhjh1DJIPO9mh-RDaU@~Tb4F48EQ#}?W1$m1oAMUJMFlrm0xk3`jiF<|-e$1U?skW82qOJe^SVQA;2) zFq=`po!`g=tExN1>MM3yg4ob{esRLD_`plA8)hP*PlUIO@U08H{{=%pyuX!Q)+EIB z*zivLQnn+OblK5+ecD6lJjqAsaER@@5`4%Xs-}XhjrtXUkr2-c&ikCTaj;?dh)4r zqDBlI{_dveCcgNyamf9e?a!&+Z7t(|VkY+7Gf}~IVL@CWKA(WL(QhevFAuK9vUql& zT9wMWG%xwnM~D-N{bD?>t{e7J`0JfGq#s5;D~N|b-0VvTIFTA#R};^?iXKskl-pbZ za4x;8TT~?kYr@#5q;aR(iu~`wm~wO0pMxNIk3KGP6*dAzxfUE?YBpA$XqFy0(qeA! z2X~Wvy(dN~Z-Hv8;y3FH8>>sKqyFjBk=FcN@yR_8Us7mk`AsB)mK{$ylZrxn>3FBh zf5xHO*PZw*4Vd%gN}ru>(d*L;Pu_+gL!2q{vTAS(6s?nW6E>@TeAxjBk0z>Mv5m9| z$6S7O7@i#XLBQ_#nm>4KnY_-SM%@;6NsoaY&XD&pP&9M|w&dR0qZgt2CCy4Y+q(dY0DnSh-ekzh9LN)ZX~?mhJP)Llt;3(78E4S=2x7F$NYiVK$mo zP?`oxs`On3u4m>*#m`q|RR$FaiMz4)P`v;VB$M;$zvA|{T-)hFs(T4oIVFk7`#E(- zVkA1;EV4Wdi^{7gz+@?B?>HV2K7c3BEL506g4?O+l8bQs81(>dA}Y1l$c@8|fSfLy zVp_a+?potr31=)4!<1qqRY?%0?Db$O@0+h}+EW}%y7|${gqbxACTk9PCXV2iYjqnY zxRcF#7v>wzRa!$HF&t%oa!QizR|!gvA5-lLYgYJ(a$;ma7%67=E@eC&kx&K7JxF7% zZ|IMg5D4%Wt0=8Iqwc`rW64^;4O}lN@Tizg7nq2CFb=-XRyXdE+S-`*Y-S(H1XcLO%f7zF(w9VF1snV_pLZ^u@;d zaeHwxVNM;ar5AO|`Dj$I=4N|JF085*4|C0F%W{-6m$$s-0R}MS+K+l7id093N~s(} z^=%|rlYC}Tx{eC|^cTH`Z1%uyRo_Fuue$=@=gKbhSmX=9V}J;)u-%It*Fg@X!n z6uB>j@e}=16;v}5Y!af}flJEqL#s!kFYb)fi%6wkg&M?JI$YXPe&Cl<9Y4R)cVlrA zdRUOmwl~KyUc7Yz`ymj(iOA%A!PCU_k<0!DS(Qch_f?ZInQr`uVx3w3&NCnfq{OQi z!x&nFz#MnrnCzfXcC`x;{cMcEXYEp(=7!EjM_#S9wBpknq|?k_1=Sci0I7Sjy_dxB zOoHGw4BH~j@X11vhG9k*1kPMs}uCrufXTu*+qS>f5Aq@D#$zboILmTXU&1LX)v zQYB%!46hxef~Ok*tB>}cJiZRo;?oVkQC#lIXdUzA92P%LlC!eS3C&YJ+Sw`BLur+&loYQMkvh0ox z`QhDrCd6d?&@ikB=RrSK^Ian-yeO+u3x66@Rkyb0E;xq ze)U&Xt&vDo3|1Hb(~KR*Uxe=1z9{}ejAZMd!0NXSdP46+e2oqlr3P(5t{&5z-)&RC>`rh@+RQ*AI>+DTSpE*);>}HgI9KBN3c)I0WnPO-5SLNri}xb> zPJ9$uVi5MqRfTb#DDrB2*HOL5SPt|!hZGf~K&zwDH~Q7u$IiEGf*MGakjXnrD~>TD zLir*FmEHor-7LzCWy{q$#-#D5VjOxrs#?MjrRY*Ldrq@#Ft`7HWS|NlQ^0=D{uX_^ zNnK;JBATFLcgw@X$m|7jqv`eReUdMIB8Q+ONERAy-^XdZI&iX67^FI~RlTGK<)mUp z>@+PA3i9_fe+7u4l-(3pe}KW!R?-yq!&})aiOnQo3T9_c4tOtJ2YVL2;ZZ>HBE0c8 zGGoWOlZh)`CU-~_k0141r_i7j!vzh^K6b-;3m2w#^GtsmS?D-!PZCDaNbjU^$JPVc zpA6sYJTCc(0H07UOr7T%xx7rYDM5i)#&oZRfffz){|R5dHhp+GqkdYYwdevPhO1xv zEqrNm8#cN+J8J6vl1;s;I#NyYzIb;B^)SJ)*%PtHuvbo#ePe0s<{(gMK&PDPl#^Lw zk4c(J_n%(OaEtD^CB&xknx^;)v`t9zgs%to?aTaQ;xK_$V6WgpjTglqZq)0V+l@3B zD);d7q$cev9C@Qa{`rxDKSoLdxHYy?fue8aTq?W!OZ^Mbi-!)dI8b0@IQvi?4~~d= zE_hJV=8y&P&pfp%z3zl4r*wojg~|1}X^D4@OLvZM`JHjPZcP0E_8u7OAe%|q5vd{u z*V`!i@B-w@qSB|!?$%A@h?=XQfPmcsCgb59%<3j@WL~?v2MQ}Kcv(G#ym@wqS|TBo z9_lw=rkLm1bp9*7-OCDVHmibX-pD+!p`abT`r&Fg+$Av8iKoyWf(hb(^Wk?yd2|pO zUN6XWhanpJ{Yeq^Wt{%gD;8ONg9f_=pkN0j0w>Z}7(E@qz=oWG;u`?qb(a9hd9WYR zLnju}&B+QQcG9$2@br^JBO5cZe&>|VF~wsj&}CU45p%NvM;WR<(XY51Ak;WK5NJ3UTX`B0n zg9g>Mr$ju{3ge3}Z3oZqMI}7Z2Yy5@pXe;O7_Y(yOuqmC0000zIRPoR*ShJw072n9 z^juh?FV|#omG~C&%2>u9R$pfv0N_-zx|Ah)0o9mgQn_9mnbEl6kE;0lgw?T`XC}-^ z@mA)zFYvr9l!Y#*u{|QF5f6hyl3jtON>WNrGIEHW_V(ywqtn2EZg@JOc}kwMZJDZZ zC5jo`|-CY2+YF{U51X;so2iRuox4uqlYNwm{3gMdf^ z=P~t#!Mh^YLKee&H*f^VB(V7=eD07y$6cnRNr&H7PabZbc!)Xl#Z~vJtm5pzZ7IX{)O#EtfkpQRYlJJ?CZw_h}4T9bl@b{Rgojt=6ZC=~?=s>2n$^1HqM#cH(>_CUdg^Vch zvjM7gq&}5BW-2nYLQ=8fASq-$ed?jRZMln5{3ecB+@OSl%B27m2l8~^(x}hO2xWW7 zW@7w*G}TuC{#Py~-mVAynZoP{J3|;G3!{?`37OBESF`pqL67JwWhfsQ{iArN8qXzQ zElqAs7}VII;&pn#`P|E(7e7;UlGO-5fD8mb^-ts}TrjplYLqCS2Uu0EIV8U{S~e`} z1q1X4C}qL}aPVSS;y!wsH+-RzlWQAmOlr>&3Xf9&a}*TLbp0qKDgRSq#@ke(XFT-?YB zSBN*W38=F2DJB;&Rr}7zs5DoA24wSo1 z{+@a2h9lAamAG&ru!#^g3yz-6elsNY$A|LPYU4ZSUv3c5C`M6uS+fF4ajN5~OC^rA zTb8(Qmc@^uTfeWlk3+`h#0r|zg^xLMeMmJuZOd6R+e)hW8%fMhkp^##5i5w{v7)@b;7 zjAx!)CnVZBG~urHya5~;loM*{cYY1Fdh1CHlS|Blh^hwNex7C+C)J(xmGT*UA$IWv zZ9J0`{MCl}sBg*W%iZ_-Fr~vly@;Mv6Wpjg;nrBwTSD8b74GTT(AmpzmBXp=Dq4t( zIWHfnt69_r0TCuG?{m!-!=r>ssoTISC5ptJ*-Fqc4=@^3>ONnS3M^j?D{|qhkNZ#S zBni93|3$5gUFo+Bz;K7A7+@C1aBljwzqIa~@meuRm;PHT1V*L=HW&Db_XuetWub_6 z+!Za50012h8%+Dz#|`#7l6trP zp;N&Z7eyPZ^kXb&3A#xTLv&p~(6gU-{IE89izGwZ9@RV$*jnyc8c5~s9g(aX-2_lX zqew7wKk9WFwZ6{817V!I7C_o28df0(u1Z~4)>3^DLDnhf-j1xXjV=M4f6DTbPH{>s zz%n{&?W}h1#ZaTAT6Dum_}`-s74n~ObIR?rQR#a5Ty?UU&GiV7?+x~qQPKPcWLGnE`S^7S}ic2H4wu^wh3DhI#$;ak%qj-$2JpoGy z;~%IO|2)ZkEI)Cn)nb}t^O{;RCV#q_bqxq=B1K0yM2harTa$R_=!ZWk7{RZg-%uzP zy%tIu1CH4RWML}V&*PHAeXJ+2c$)Q?V$`K+2Kz<7a(++UM7eS_T*t*f?`h!~Il&Zu zA%d3up&k%q*`FFZHB`eiD8Yl8k{|2F1rl=sG(mig)j|tGuwqvGA6$tj5Zi|Y@NuRq zIm3sUKzr7ZZQZuAqy$> z$g74?t4mg1f~&>oIm9?*E1`a=7qcq6?n4Dh=*V8!`0NR|H26OZ;%E=u>TI6XDcFsu z#tY*D{TLB0No1hyZZ_&-gAn9IP}DH0@q**+_s{3;nZ4+^x@6e1C5X(lwO9|=6Utqxpf z43ZF<+5{Rn4Z(}@BL_6Ui0c}aUH|lyo+kTidX}sv`82FtHt6lY#a1DOH}A32OYm@U zd{w4UeB=H5bSdrH6FeJM$e?z;_w#PxD~ZPd;S_>qDgDd@^cr{0HP~O?TF=FIgEFA& zVP$F7@tKY|1<*5hySpJN`Q!isOgeh+2Yx_allZtEF^YM(C(F zD}pj@x)t0)2AK?ZO?*P-RU6URM2NKn1Euo&BmRG&J}SRXwHr@wwutRzG+gI zB8o?eYLgy&)oNznJLqcpnxzomr<4pCkSJS=q4&e@qDHk8gVCRh)9m33*vTZ7-SGkO z18`W$EBuwV+8-&ecver~)3G8(ROIYYKAtTz$l<4rxM*0p$(=dmlj$~x+N<;!T=?ou z@v!9PlY!j6rt%(;nOgqHw;L3|UaT+qgF1D2cG;Xca?rIwcw4G*F*s*_2hyTZS_w|NV5RzID6J)3=o?bH0We1f6*I}BUSlHD+kNY(1%caw)(xW+?lIz!a zZ*Ti#Puc9U9a2eX3Y)@z)%^SUxWmYAxrN})d^we22>NsT>@gU);J5YO?UFKl^lOG^G0fzA z+ysQIRw=gI4Oxu4vLH6EO3JsWtw)WG2i0`*@=5mUlt@Kwk8KdgOXk2P2@ga_F|F~? zfz?WEn%GCI2r(}$t|fBV$(848-pjj8v+Gz!%;Aog$bEZ-M$;Iu4IVYg_STdxr1u9< zLPtP4_zL-(5hQQ(RUCFFT#myd!MCD0h8i|}fMUa!$ngQb4+@mgDc#RT1L-8dK=4*0 zdkS!>RDk4BhCQ!_q~z5%#_T>k@j9FQwL$100jW)Bt+eC9?qUn4On#3 zI5r5Mz?0b0R~#-Q7=83}-c5{`zRJHy(i=CM3*L%_-Ixq0+A0|&ipfF`0g8^Bz$>Ni zoD`kZI9Lw8RghRm2=`tS&b9{J-aFR3Y_nd(*Rg0M&6BTNK3LGzV#i>eUPn^Y8kf!C z^;A63HA8BML2lYm3Wx8L%6y_1A+^mKM@{hA1l2wuF@H=Rp z(Y6|%zU>aRjPr2h@b9zXfKU-k&Os!*lbDbI0000000000007C&m3=?VWsb#Cmsim)W^R;R^h}#+|}_F^p6sW;&Jc)CBWWBLw($y^D5JEsPwq zE)yvF00LUz)I&$DoIIA~g|{xGY|FSuCniX2$j_Y;WZzVP9-+2qJU4=3%qo2hpTIgV z80g;~x&aS>vS)Vq6^kc82F`|0p>Zp_0rEdo!Zn8?_t;o z`C|y?U>^${MV6qk$K|)eAaYBli=PtDiktfnC}W=zZ%JwNi#&PIJVuqYWM(UdmhpYN zdUYS}NK-Vgc}+zdhn9r+p#@HL&PvcfB|N=7H3i$gC=`{iGqq2$N)$HUNai`Xa9VUb zW&APSS%2?Mws%rD^w!;`Y@{fK`Gg{wC}Mlda=aO{M{bSN;m6X>EGIfrQKGNaB|OQ? z(>s-VnG-_ZcJlC`DD^*CrVI5;<|c!OhIY(wyLC|lUXio5k7{MxIKN)RT;Z zsD-6Q4&&m|b;)ufbwVt*>)@tV$ptbM(f$(cOExU4nt_IVZfQ`GPu7xP{^PHL5M0j~ z36K~TB+$=e7R+AxSYYx#zU1O@So0U>s?d}yxxtTWD6`2FDdqf2#cOQcmT7%e2@qf% z>XgS6#2^ygDLFeQunJOj+Ti@8AZ2CUK|P?qc4SD*Ax^#`{(7~ zBN*w-?WVgVMm-q=oV?o6tKF-e_dGE>9~g>DFZWM5(qQ1`%-mA&s0jkULK;`C0Ak2He3#CtYixl`FlHO035xp_dGaClhNS zZiH2m*bMAr_kBh?KM~N3=sF;AcO{(K*-P!K|B{T|&9tvA_NjBPR3ZSD6rH&l? zAa_EvvXjnA_)o^<{egakgptcK$%^2+7Ocxr_SP8Zy5^omU@@D+a=w-k6Vf@la6!F+ z5Wj_VWpZok!u7s~SnN!x&PxXF>F*!|ubI6(2b=rJEUSmC$`z)z5wNbxn zTZm00ftb+9{Yt<5mN3VnIS_RAA!7HAF}JF!T~z~$(P!#JX~ajxDUk*$Vv3gAQE~h) zHqr||bX3t@_cTpf3od{qLb(AeXxKhe5;3d(-@Z6BctV83zcN0y_@d07)$a|Ts*uX? z83$Xr!-uWsO{;afk{4k(KQCt|Z`n!Jmi08v2-%Kd*d*WhO@Q{hFQyDGc;!cH?}5*% zCgr_C)t#0t)2~B%E{SH4S)m#TK-@YdwR4|2zQ*seskXnxspj@eKc({r|dFAxI}4uDq{x# zLoy<&|GF6&4{Nyu-P5fD-mRk|lsBvd9`E5PTNC+~RmKje*RDl91{I$n2O{V$#R3?! zjygQFRe^T2`#=F;PP`h@Wj*;!u-~_#7F;-M_bi39b29<;)bx2yy1G4Dm{}$^CQrJr zoNM7cB`=(yJ$er4tB%%o$96eZHaOB&LdeePjIuq(-b%=I*^SO?6*dkdvZvJE(K|v0 zKfO%aJH*BDId=(OT#}@ClY7joz#9iT4FRHoETGoR1mg%p&cQ3`U_XY?5Q#(zR+O& z^?x>lO)=l&_p6EN?sfS|(V*$+kCHta1bq&p5>Ezgoa;C}yQM&}K4xLt zAEUi2`&H6_En;piO1>v@6y9oMb<2DEFZL*75xp`QHq?)pWtqVU zMy?u@$1Z2C+o~&V;6fGNR?9QV?nZ|6sa${gCsMBR%l1~WCGRoN4A7N$!|&hT_*8a* zXTP!zyI-}i`@W#-dQhcyYF?-)9KQgGHd~U0#z>XhXZm1LnU^+^fPzg-UC#eazEUzm zK+cirbgRnC2_X#fw}rfBMw+>k-mNV^7d|+t2*y_Z@#N`VBw(6m&z}X$n?1H3&{Ta~ zJG(N-U_|H!hN_VOOuY0kBU~=jiFd5fK`($3uqECAwS-{rm7$Ncq_a8E#d;*^%WrH6yR@MZ{xZ0(+Ajcp?3zjfI_va6^>rXf+tHcKkSq=aib%6_S)_3)x8| z^;GUbUt_z%g`tsz8L(UxT_itpWn>diD9X15?Kil+?Pu zeps|qB;^)s03tpK0%S4$P3AQS76g{g@?t7J+Nmj&qYJdkjp_%=RtxBMJtl>`oIc`2 zcM+8m8cus^A0%%vKy|u#jiH&5xMXP~q}y=XW}40O z97ap5bw0!~DUn-Q+_Fi53q18^?uRc;k3-i>JjQ|rF6ji4?1fbBc@8tiYGTk1wcQRo zm!7E~*xj^8sj+EV>M$H3X45`}@S-65x1=tua6|o;e%W^)H3NAA8}3U7pVkLp5;~3d zo0VyiwACpSh_*!TaS={_sIZ8(KVX}DfaiwpZR33ePIV373C#|8!ym8i717QEk*R}B zQ{86gv|U*34$x&M^mG!^E%Q4%?-D%gnnGjG4d7`v6Y_Hlx|HLTLIfg9CmX?&TQbX~ z=c!%P(_=VEN05$YqpQ7GKSIVbxs8mFyY--RsLSyYKgt&Qihaoj`w-Dhq+2d_@qNmD z{-h@)MO}Hd-A3D!7Ga6GQd!{57U1co7(n0L+>yDmX!G~rIt}iAGNe6`FQ{d$l3W(Y z*&Ip>yR_joB+v}h_S2z=c$Nsl=SUKa9cP=CIV0;HVx`E!9u0-gr0uccAm6`b1WJQW zNr!3BP}I)R^a(7es57jKx6Xu#?bQI1yw4Sf<`VLl-#Qd_m?wH4samOPapStwT`)3! z(ehsdLzoiha{w*0CwJ$!35`BzZ)Ax%iO_4N>Z?C6dW?75Ohz`-@!7F~wKk{ZNOF?m zjbLO`3+ae`DNT2iw6((V4$>3O;`LJCeMhUN>4dwED-zmlXpt2M8DfomlxK9`%DfvW zv$m;aRl_^-17{iXm4Z$A62D=;VK>|Y&%#Rlp3jLTx*GgUwbX~_bwm%NO}wJo{eJ*4 zeVY~X>=~f)@?0Uo4g+l09;r7n%>ep?6YbN2h2zNAD>kPZ5D}YS^S~^MN}PK{w_5_# z2c(Ug)PK#{#WRdTbn_WETyf)mq;Ru#7Zlp_0`#Yj}`N%T^jMQ8Rb z!fuvuPAY@ZLk@RiR(uflOG-nbyONmG337Mh(#<3#MyB9Fff{cNfW1ja00DvWAwtU` zuzx<(=q*SyJf>Rh7UQz8qDI!xQAU*qlQ8*7GWV4a#srF(OiLDQ<#6eis2ID~7NsAoo1O(P{LiN)S3OUzfw|di5AfQx)*)N`Ln7TvHz6q1fdE#cL`CxF+;EaCQ$7JTHMXo;s5EDyp+EfbKF%V$o1QZ~##hd-?eCHX2F)l~TZI1kD*Z$-`j5r~l!L)0^V{IDl_{BoyNlxcmOuJ} za{xj=m*aw83vLnGZ#@xYP;MO<){XCA|8DYAC+Fq`n$0*|!S1jF{vleK>zTww;5bb@ zVx;1Ry$_tIm-nJX0a`Ts6;$sDf1Duwaq|A)p5HvzJrte3r~tlTH3(Yj#pN}|q{fke z8vD9RxJzDGv5cKO%g0*WrOP)gayNr)g6=MNo%ArU9oTL3LLgg{u9tMuZHZ=tu6TKo zRHJSL-AF~0tg)sMQc!Y?%G}<`{-`Y!kSD7uKZ#}YEF(CuhNC{0j-l&Nkq=pM!KvzX z>FytSBXK{yYUuHOWrw$lrpgkZlnH3=)2{rT-4v}k$c7{TpU0OMOR4}vA|}q7;CNf;4pDESyAxTNvop=VUlYoJQ2tgucM}_Ks4E=>ywrpVm^^;k`ixM zjB`{HB8;*px_;d^Fua!HVO5Mhl=!WX@0RJY3d!Cz`Js(kmt6yL*Y>>yMvR6acq@x_ zx-n_n8ytH$YPB;7OGf&EAo4fLgU#1YqTcV{^%Mga9Y3-aVFT));DY|IR7`wQih$p2 z7ZU!cZ1{VfV^90U{Bu*~ z1NlW7eNAr9JdCI2D@@Q;Abe%ZowrJ=?lKGBOS=lGd@x?xLg}oUax+$#Hv>Uh16>W8 zA0EcfhPy|hcDvghCOt`Yy z=EnwbgS7cQjoXqirSom4MUg~i38hQ5QZlA7Z(hDKl%YHg4q4>N(xk-1?y(D-c zTcZHckY)nuO;W!2r!?w~I~5h~K`PoN6t{J1o0%cJpH9l3Kf=+Be6BYH#Ahi-mG~d+ zMj?Wib)Ku3$EAX-F>DEd|ArvMvnBDepl%f1OC#ORp!_@mCx!JpzZ=t*Ptui>GW2Bv z#Zpv3F$TA=&$P227LP$MCg0kS6`#TgE=jt!SJA?0Xp!{IIPAftR*el}sS_&~1F1Vn z(ks9SRw92KW1v&dzL=NOuR0V2H99u!Dl*076y@?m{HD>nkAQ=)+FH6~%kv^?Z8T3j z9UzE7)@3-s`^3jftwQ3GAk%CgM~3y5{eb!{nNM(lUoD3eq?5sZz!FVmQg@BMI?*hU zJg6VN;7RV6Tl4>ZN5rwv(AMH80M% zhhP938K;+2PG));0Nj?vIWb&l^wjIi@OxWJ)vMHTE2(=r>HW+pI4H2&0@ot^0>uVz z`iG)GoApp@yd#W{cmfnEYTbgo*#I-LomaxZy*_c>Ip-P18^ra#-PV2V^?*d2=@r|6 z#EfErEF@_<131v!n0`d3=cp{oyu*bBv?LZ!rbd#VU668jcNwcpg%JS=k0x1`zY+l& zbDd0wIxcM)L30#7TRl-NHGsO`5PMU8o~f@0)2;g?WRRP)m5VS>>QCAQRz+bhYBISt zAI<;|)r8(>m0m=Ob5D{#2jMPg*(6AYu?n><{?(+b~D@Hd{SMpHgZ ztvNKHeugX#Xsvx)p59*?9^m%P%vuw@WKO{jd44H9V4W@vt!@ zI$y3XsU+#@_#eWzXV*!iT$iLR__tk7r7pTsx^nH$nBXZ57hO!yVo}tqDYkAg?N?oN z1Ij&00@yan2*T%hMg5_4I3-y3@P{MTcr@1>)V#f!FdBY4j_{GATUIVpN~h?O5E#rV zx$f#8s6#NeV$4(_ejpsww<*o8*wmS1i=$k^t9p2%U9f@7V)0@0?rEJOQvfpGKDgC5 z+q*R{WrX|D1zkPS6lcRkQX0c4=EHn`q52m21wKLgRT$&HwIX*sJ^{{bO%;!g!Fj|# zIA*cxR_8O7AEQs0rkwm}tkSJ$0l!>q7>m>di%1zLuXi1Z!^hnT}9)n)`l|9!6_5aG%9gyEUoIELIo8cq&e6M?YjBb^|3=x@}1r_PL9m^j4VecDO4JRE7}VQe z9g6v3Eb(SQ#r$?Lcv1Jn5TH@c#d`Uld-{1w54wl%ML}gs8{qeP!A60+zh|m>GBcs4 z2uJR*q`3SXCMqKp-_*NzqFkt-%`?8(VTR=k4t9vC%#9Gmh3m^O7(!LFs`4aWOHiCg zNt6(5k5f$&Aa9+xydO=(mp6Ju64^DFF}p2Sx?(Pbf}<1#&RaqBJ&O`8{(8iJAO)-% zIo7}Jm-Lq-9?zY}7IbtG1$uiFQtfBvWS%-EB@MrdFbgkcL3Oa zqrrKn$=WvZL{@9cUJtNe*3P8<-{#25v3RQPto|%n4u8H7X$NTMZ*;YF$A$}Wsi!FV zjP9{C(?)P=*4u{$9aCbnZ_nQ_l#`1N2Tmwsrlp?@`NjU0OQMlwl zE|e2fL=EXg4yjaoD$qxaoi46;UtEc=bPvEesYL?uar!AwA9H0B-UlHd1x4xjxf$<1 zGbf3%h7LYz7qfeSc0zdxlWOd)8j4K?+sOp&0;-)9i->2yqt$4qOySP%1ebf4flm&w z%Z%UN2IHe;K+6%!_*XELC-&p(sw=XFt9%N2{3b)Ya3{mAEZRlHKRm?;^|HJySyOq( z>TJYbMmhhEDZf`Nfs6_dfY9`WGNzxyWLX!@B7Z*u+KuH>C1GwIz<(zDN&u6mI09Ix zk|c4;dRyg#VOlTfQ};)s%}bU(YgO?T-?Fx8V*lnflgp2am_^z&i6PyplsZbL)mje- z4u&V;TTbs;0C!ES#@n;A{GE&JOP`OhXZ%OAaF!4IBQ8Q!QKtJz#HR@}cRpu$s)*bz zS*shERn?|@n=U+SC1g6p_kLF>k=Jm-d==c~$_H+`r%C=>64P?BmxP#XDBNCH`|OpZq@p&NM%Q>f&cWH!4f1QvBbejs`b>&fm!zuZak$5nMsAjdJm zArrUYk|4inP{Bg;Yw`~vPMdrgik?M}S<52xlf>M*nwc!9YZ&8d)FU4>c-4kurcXgx z6tISGip_I<(qj-E;_J9n=-q2oxc9xX7L!>2Mq&9R*9HNJPk;_Uk3Cmbrc}VP*a?S@ zW7WAlv!Pau!5DvH-jhi-EMQxxiUQ7o|EZ5X`HI^KP3c}zHj$I7Ixe9Gf6i)$>ChH# z`QS_cE;3E;LL|)oo7ZAN8*IONR=k$huyV_80dgAND_IBi(NdsoQrI5a$gJe9;Mwl6 zrf6*(9xI{j-^S|KIKv+!xui-Fg9FiE- zdK470Nc1wfeCD31D}}(bNYypn>F*K0oZwuA&(jYh{D(M`B@YQCe;Lyi zYPDAJxu7ZQ_7%?2eRZYFUaA9q&QvnSTmOCl5zoP8w$!tUCpQsMvfY`>=Sy2#8ue&S zgQc)%HvRcTUNP4j(WUwuG&}-+^133eYu=!kJc9XMtM+gRCKL;?4l<*P&Wf#^lWPdB zpsorSw(zjHsIQwh=5cYRfNpvF0Y|Ra#lbXicW(y4!YEd2m ze?6Xw7h8u7|IF%&)8eU<6BQG_gu*VxXH^{(HAn$(G4pASk@=aYOiN_^C7ESBOF_?- zgQz!#jUqx_L-#k?F3JiCGMHg5gvfW(2kwh{ZRLsvn#~O@C&AQzj?EcjV&D{63v|@M zYd-3!sFfK=^McDPy?z;u{+w3Kk=(0MB$hZYq0O_T4=_`-^arTb*d|+lRZBAUM*ls! z+Y}^!v_-S&p(d+xl&WgiZlam2IrBwA+?dTNtLtno48QmnD6fQqHf%Ri2?_L! zqFpk~;K$yv+{)o-#Z>GV7xs@?K-mh-oP8yevqf@1?ZoY9`bN~JH_9f(pDNhpIiKth zg<(bBtd~WtH6HN|o0TJH%)?oPvku@cvv+Pd6w!ynbMe1ubAR0JF8^GP4Y?Sx)9?=R z7)5Ejb8+!IQS99RM^4TmKjSya^hyPCFy`>sbRd{?Z?Q@JdBmp?R4AK|>9h?INp%NI zY8rM7#ka70K4G%0W5(9>#W}gM9;a39I{}n!h|JpBRr^{Y1i5Gez>{X#l6AEGFVC4})!(Svw8NJJtCEpcaS%4Pl< za}udT?1;C&GmIJLA!4WafJdT3f`mC95mC`hgWXQ<$s`T1vcg`)=!t$P9*UUqkD7A# zLT+WAU=O`-Kl+htKP)0iPS#-NL0~{)3vOoDrC;mNW$YGA%{KoCv&c0+B!-g_xOUv&ev$J|f>R3)NX~l)=N|?i&=3^i!F3!mqyrx*&(7ka= zeybxV2{^a-hpQ+sv!E~m0QJ=#@uB`PrHYaWrR*fO$t|R)gj2Myl0q&2OAXBn<0Trf{%1 zCO$46;_ge{t=t352A>J{xb7sz==j%tr~kBzt!!9%7fY0LrBRD8UOsGjzpb0;6Wl45tj4!$I05c9|G`GLA?`W(CNR2XsBx~W=@wOgl=1d!vAQ@H%v zVt!=1Pvb;r;O_A0t4ju^q#Q)1S`;jEJCjDtB%IO*RqB|RqZytGkQnsyk9A>aPc=X85Yw@{Zl z47FRNhwX=`U{%p7W&DRKkw%+l&P_9^Jrj%KUs7#YEw|8gkmk&(g(^v?GDBxK$XHW!a*JZKIlyN`XKbhV z1H$U{fg0D_-uk;gL!d-YJk9NeHhNAZb0!~h?|=rJtMzxcmCDxiW!}pJPjsO`*J4TKsl|bJ?hl$p% zgNSno6zJaneU>jLuDpbGY=hGn))08@cmvJJDyQ^D=ZwqbB|jxTt$uoOf`K^-b?jv{ z*n8u)pHDik6eu$gkDK*Qj?4}1r?@=3NNl9) z`kk4&1UE2gH2|Ct*vZp>$k683yvRqx9DQUd>@yGT^=+~~tc>hC&N@%xH zBr2f7EU_4W6VBLsPEKJH)-(&VY7Aqc95V>S#2>qv#PVbaD?|eNkMn4AjqYzD1RpGl zMJ)dI)mO*f>x|_F_!!=cO!t2rqUOh&lhw-HEBv%L7$&`6{O^)(d^WT9e zzHg~T1sw)|_n6cw#)j&8$t#Z4mM0Fdmmw@bk4V@bnElMV<_;(Bkx@gOj%|DFL7wxe z+}wGqF=jwmS;?24 zeS^wk`T3|Sv~8I!=M|)*&Zp~PQDwetL?Fr#DO3!4=3pNfU;&Uk3Zy14cjBn}& z_TD0a^Cy#F1(T}Mh0m0Ok7Pz1x5o4xfGIqi>|V<+D}yd;QNuWly;cHZksmGmC70AlP+V6sGtlXr=9e zIg&fmzK^)SQ*d^CZ+Ay}UP;hD_GW%+W+0P+rxEgiX&aD^I~w6$(j=#wnI+l5ShLcp z5(~f_;f0G?O&lB585whcRDw*S%vKhClzYO(X2g%!Dm84@u*1D(2W>`Lt$)UvYQx}^ zoA6s{#=nD+7@vF1^nGLcIaBV2r?J-!C+z95x4v?Y-H>od;hMT_I7XFuw8(x}%~2|7 zvUs*<@bAq?_zm;&)m=DVe|zZNU|UNP6-yJ^SVmIMM2(tN@!>L6BgdV6(@Jp2ARxc` zLILCTskyj!vFsK%k_sZE_2OYhKF*);@~;vhLLV75^7x6a#@K98`y$;<;vWC=0T*Q~ zwd`rngRB+nlhU3%?v8xrH&OfD9|gT~Z_WtihU&Ocy=0vM@Ooi(l=7z1 zNWDx~0A_-(NfSnv&gbb=90GH2SBHw)c}$(}1-486N~3%`NeU9*=-m0`CB)`PNoOo zso-Xq6l;=k>z*4DU<=TxWY;X=rz~vsa;6;`!wI}y$S`8G)bC>!#fFxphR&W(&*iEu zIY)1nL-B~U1m>hVCJAA7jpp7zL7OOGmOd;#>8sbhf;*^TW7JB9Nb%T02R6&y%gouL z%Jio$W!I94FiD7v^W;_gN}s&^ z{rg-mbm}HeW=!vvo?Pd3^Rxzq=%xPqUTYbXFH-3G$n1@t(@mSjVys;_W@G7)mt+WQ zZJnKCC5kb_90|%ss7())vr8p56dr=SQEw}S#`bTYulKp*md9<0j>*kX2N_7T5JNmh z?dhyOij?p}Ogv)WX@+fXb1T*9BLJr=mk+lJVSp~Uh4O94J@_ZNrx;yTANY&A$4I?v zu!o<-W^eNQmBH6wTpyU@3Yu0C6%=8iFFvAS8`clO;<3r2-x9GE0Oj?KRXpg_>-G0< z=I*)mPN?jxvKxQN$_JTQl~qT2M!CX(nwKcAA$22cr3p-HSXtfh z$2!vTW?54dZt#-;0?la(9%s#l15B3%e8;!;SIA1xnd_feEj>Zp1l}j&MC}L=1rveNQcNh;Mb=J{8#;GP> zDY%8DExzl<#G!ir4Ko@sdK&^z7G-jR2hhdL6E>65DT#Dc-A3R~s4A5?1)*Jzph?;A zb`(#C;Y8*LhRjc*?=Xdsb;Q%3>I5(YVeyY_{H$3c)_Z#iA~u!Sz!MOcQb#jjFUo~R z(u;s5#$46X8a|p#c-yQYF}ykXS>GjEiJq)sT;lm{CHHCE-37Yw=BM30ZKEBp2>M-x zDFS&&T2WY%$gO3_>6~3Sb$*;V3AvES7M;zxYrZ__do6En1g%hVOxhtrd23O{0S4-u zRO@iF_)#ddPN20sU>g4$C9*P67gLKdHOq!X2TnlU86(c6M`NipZsbL4qh@x=@4*aj z`3@t4*r}DfamHlDdQBN^wlRf$wVmfWdizQ8o#xufXW9?fJR+nAx z+#IN#28oplXJA%>o3S6pv(R2JPG^3NMIk82y4J-lwxM730&C97tBRP$y>C)+n=(|*G zQ#na>;0X-=nJ;|?8pXhewpwzEW=w-CrkU8S=v)#~P->n~RP}2R_j+ayYei$r6)(%zr7!FG&(uDfQJGI$1#3|nb);^%QCZh%sg zXkRImYg;mMrG&Ts!9MOElK{^ot+GwhbC?C@L}ZGp6E)Tn_Cyw#4g9UG-#i zFHm~y05Z9u%*TUOCF1vB`<3Mrf*N5YCXJw-;UHzhj@ak&lf=uEWBS%-Wuw3Kq2)V^ zk%$1p3_6z9H+1BuURI+qRZMCqSu1jwKFFXo+uo>2ehLc65rmoDvVsLwG z<^pr*i$1R2=Zvh_W!=3Wwe$mXOlYTtRG#coQKDvT5cNEb`WzarMv4X$z*cG#Qdi{@ zujcuCh-aAXaL-ShCjC1?%};)&zz|*crjS%Zzr z9T|G>o|CsP+1{ntFxnkptfq3ogO6O;`hv)=$&Her$tini0m&61)p6wk(~@ z;r4@EMdI|3B~)4B?9Bc-h}RT~oZ#xB+OW?bMLu_zV(!8|a7?b-?WNqn@`dm78kj#DpXq+o3trnY%|-~F*TNl|Vt6F$oYUy6iX5iCHv`>)$)CeEBP5vqbLLxLNUF4 zPX**Z-O2KF(cmk%aj&ojbD|fv?g1%om(ju>eR>`y6_y>Q+ z&Y8MK#m>=KbODc0CPi50<9QzOMod7Ze&9;7o$(|K?k&1%|$*s^s`SBiSDyJ#a5i6DdHj`1AqW{qggwOddnIv zY~TO@&;KieDbiV@Je`*9RH0{Zw3A0Y%EHtujM6ED!WLgzh|>J8>Vm*105eyc*{bFU zmO={_pem&&Ez3Myx=p3-GAr5J3@y0rq_Em{z?k?c$tcB4_;TouM1H-W`86ezZsc|= z$d@krJ$|H-IqOc&kYV!spl`-nTZ65?)8J+BA+J3XexXy=esrlJ=atCuUE8LmwZ0sF z*93`%R(o1J;=Xh?FIIe|1LQ@UP+wo9ss1Rby99fw7{Pefq?$_)pCVkOg9I>iUkD2B z0DaUDMh`kSfkehQ634?kTSI}3wZE-hyZ0PVaa-Qm=>&bvDsjPxuSrjN9@4YBKCB+d z`bMCSt2H=1A>d5>05RqMu$l`)Akiqv`~v)7iS-&=J;x^(?C54_PMF0r=k+vo$Ht+l z`hyYRL_pG-$@_xw)8zD=x%y&?;NiKEDWEmL*k@q>)Dwl&Y|V{h`#raYm%2I_x{Nxl z0J=`G<lVD} z!>Z_k)7ZlpY??6@49VgbxOVB^lfVf`NYRZk_D%`myWb!13k_&6EZYu4=2Kpuo`u@Z zliZ^cr-}&>jlVN|;v==yjjHS;7X4gLG3qht9_MAB$#8@Fzood{4_#a0;0KF`Daq%C zfE&J81&6HbC)XR(!fuN+M=Ayt z1ErEOJwg1M+Lqz5oubNG+7V$59PZyV`ceg9=9Z5%!sPOKR*N~^RCfud0MxhZZbKPD z5=JwdBzxO^0fy^VmcAOex6uWoT6w>1dZo_S$^(MN^lMhR?xexi2nQ(O01gF>WD8vQ zp)#8{HKP8LZmWmWSmd+!2B&6e?B9S?K89K~9ez`2gDfNkfG~Z59!s(o9QnWfID##v}+&^<^%Kf z*3&EvoBiTTcPm$dm95XoWFV7)ZR3#^sMXpn%vss;aAP1e1bB(YGd9UwKP2F^!Be9v%#Ysg!iC|L95yM{k& z^P&HM=<3W`fMfufU3VX8foy;O!D9v2NruP;ih=osuun>;pGA-z|nluTsY(2xKmgzK)tqSh>O|JduM%#%EA zoqLPbkmElr`1RLESJm&06<~68m>T0#p*+iU!1L$nN>PJ9n6VM?uO|j*+itq)bK0`g z96jz!ZB-E}n{@qXZlqMK(t28@@)l(TFZXC}E|UwlC9>~V7@D{)&OJXnerB=-u}y&& zp9{&nz{K$pkJ}hCV;x0;S - + @@ -45,8 +45,8 @@ -
Skip to content

Welcome to our free web synth collection!

Playtronica is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Chromatone is a visual language for music education, research, and performance. We share our passion for web-based music instruments. Welcome to the community!

Your access status will be saved per device and you won't need to enter your e-mail again.
With ❤️ by Chromatone and Playtronica
- +
Skip to content

Welcome to our free web synth collection!

Playtronica is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Chromatone is a visual language for music education, research, and performance. We share our passion for web-based music instruments. Welcome to the community!

Your access status will be saved per device and you won't need to enter your e-mail again.
With ❤️ by Chromatone and Playtronica
+ \ No newline at end of file