diff --git a/404.html b/404.html index c73f695f..3c6ae05a 100644 --- a/404.html +++ b/404.html @@ -5,10 +5,10 @@ 404 | Online web audio instruments collection - - + + - + @@ -39,7 +39,7 @@
404 Page Not Found
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/README.html b/README.html index 884dd926..c554af5a 100644 --- a/README.html +++ b/README.html @@ -5,13 +5,13 @@ WEB SYNTHS | Online web audio instruments collection - - + + - - - - + + + + @@ -42,7 +42,7 @@

WEB SYNTHS ​

TO DO ​

  • SEO proof texts
  • Logos
  • save state
  • favourites
  • ranks + reviews
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/ableton/index.html b/ableton/index.html index 12f9a494..3ba65cc3 100644 --- a/ableton/index.html +++ b/ableton/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/acid-machine-2/index.html b/acid-machine-2/index.html index 4f39962a..b4da8abc 100644 --- a/acid-machine-2/index.html +++ b/acid-machine-2/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/aqwertyon/index.html b/aqwertyon/index.html index 4562069a..e5d7bb4e 100644 --- a/aqwertyon/index.html +++ b/aqwertyon/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@

The aQWERTYon (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.

https://youtu.be/hqFr4lF6u_Y

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/assets/Circe-Bold.PYbrWOBe.eot b/assets/Circe-Bold.9hutY4F7.eot similarity index 100% rename from assets/Circe-Bold.PYbrWOBe.eot rename to assets/Circe-Bold.9hutY4F7.eot diff --git a/assets/Circe-Bold.TTkSbgXT.ttf b/assets/Circe-Bold.BNORJuBd.ttf similarity index 100% rename from assets/Circe-Bold.TTkSbgXT.ttf rename to assets/Circe-Bold.BNORJuBd.ttf diff --git a/assets/Circe-Bold.hXhgneJG.woff b/assets/Circe-Bold.CFeGCd4k.woff similarity index 100% rename from assets/Circe-Bold.hXhgneJG.woff rename to assets/Circe-Bold.CFeGCd4k.woff diff --git a/assets/Circe-ExtraBold.NhFFKkzJ.eot b/assets/Circe-ExtraBold.2EUUqTMm.eot similarity index 100% rename from assets/Circe-ExtraBold.NhFFKkzJ.eot rename to assets/Circe-ExtraBold.2EUUqTMm.eot diff --git a/assets/Circe-ExtraBold.ij6Sdhyz.ttf b/assets/Circe-ExtraBold.CKPpJ2HL.ttf similarity index 100% rename from assets/Circe-ExtraBold.ij6Sdhyz.ttf rename to assets/Circe-ExtraBold.CKPpJ2HL.ttf diff --git a/assets/Circe-ExtraBold.0yxrF8zE.woff b/assets/Circe-ExtraBold.DTLGsXzM.woff similarity index 100% rename from assets/Circe-ExtraBold.0yxrF8zE.woff rename to assets/Circe-ExtraBold.DTLGsXzM.woff diff --git a/assets/Circe-ExtraLight.fJQ2JlHq.eot b/assets/Circe-ExtraLight.B8lDYmUe.eot similarity index 100% rename from assets/Circe-ExtraLight.fJQ2JlHq.eot rename to assets/Circe-ExtraLight.B8lDYmUe.eot diff --git a/assets/Circe-ExtraLight.z1vVK6fc.woff b/assets/Circe-ExtraLight.DPW9Urp9.woff similarity index 100% rename from assets/Circe-ExtraLight.z1vVK6fc.woff rename to assets/Circe-ExtraLight.DPW9Urp9.woff diff --git a/assets/Circe-ExtraLight.L5XlwBrl.ttf b/assets/Circe-ExtraLight.vleXAGuU.ttf similarity index 100% rename from assets/Circe-ExtraLight.L5XlwBrl.ttf rename to assets/Circe-ExtraLight.vleXAGuU.ttf diff --git a/assets/Circe-Light.lY_D4voX.woff b/assets/Circe-Light.CVj8Pi-h.woff similarity index 100% rename from assets/Circe-Light.lY_D4voX.woff rename to assets/Circe-Light.CVj8Pi-h.woff diff --git a/assets/Circe-Light.yYA22SBH.ttf b/assets/Circe-Light.DJgDbZIE.ttf similarity index 100% rename from assets/Circe-Light.yYA22SBH.ttf rename to assets/Circe-Light.DJgDbZIE.ttf diff --git a/assets/Circe-Light.4o552gUT.eot b/assets/Circe-Light.DijnnaBR.eot similarity index 100% rename from assets/Circe-Light.4o552gUT.eot rename to assets/Circe-Light.DijnnaBR.eot diff --git a/assets/Circe-Regular.89Yvrprf.ttf b/assets/Circe-Regular.Dz1i-umt.ttf similarity index 100% rename from assets/Circe-Regular.89Yvrprf.ttf rename to assets/Circe-Regular.Dz1i-umt.ttf diff --git a/assets/Circe-Regular.C8GddYak.woff b/assets/Circe-Regular.LwZ11hqR.woff similarity index 100% rename from assets/Circe-Regular.C8GddYak.woff rename to assets/Circe-Regular.LwZ11hqR.woff diff --git a/assets/Circe-Regular.G4y10qCH.eot b/assets/Circe-Regular.bjLXSoIf.eot similarity index 100% rename from assets/Circe-Regular.G4y10qCH.eot rename to assets/Circe-Regular.bjLXSoIf.eot diff --git a/assets/Circe-Thin.Vq0h4NEo.eot b/assets/Circe-Thin.BWrSHg0S.eot similarity index 100% rename from assets/Circe-Thin.Vq0h4NEo.eot rename to assets/Circe-Thin.BWrSHg0S.eot diff --git a/assets/Circe-Thin.Hn2IMeEa.ttf b/assets/Circe-Thin.efYgx4Rq.ttf similarity index 100% rename from assets/Circe-Thin.Hn2IMeEa.ttf rename to assets/Circe-Thin.efYgx4Rq.ttf diff --git a/assets/Circe-Thin.MW32u0X7.woff b/assets/Circe-Thin.xbfa7Rfs.woff similarity index 100% rename from assets/Circe-Thin.MW32u0X7.woff rename to assets/Circe-Thin.xbfa7Rfs.woff diff --git a/assets/README.md.4ThR-heF.js b/assets/README.md.D9FcETfF.js similarity index 85% rename from assets/README.md.4ThR-heF.js rename to assets/README.md.D9FcETfF.js index 1641f8b3..ec8f8409 100644 --- a/assets/README.md.4ThR-heF.js +++ b/assets/README.md.D9FcETfF.js @@ -1 +1 @@ -import{_ as a,d as s,b as o,g as e,h as t}from"./chunks/framework.HWRfC0Fd.js";const S=JSON.parse('{"title":"WEB SYNTHS","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1710400063000}'),l={name:"README.md"},n=e("h1",{id:"web-synths",tabindex:"-1"},[t("WEB SYNTHS "),e("a",{class:"header-anchor",href:"#web-synths","aria-label":'Permalink to "WEB SYNTHS"'},"​")],-1),r=e("h2",{id:"to-do",tabindex:"-1"},[t("TO DO "),e("a",{class:"header-anchor",href:"#to-do","aria-label":'Permalink to "TO DO"'},"​")],-1),i=e("ul",null,[e("li",null,"SEO proof texts"),e("li",null,"Logos"),e("li",null,"save state"),e("li",null,"favourites"),e("li",null,"ranks + reviews")],-1),d=[n,r,i];function c(h,_,p,u,E,f){return o(),s("div",null,d)}const b=a(l,[["render",c]]);export{S as __pageData,b as default}; +import{_ as a,d as s,b as o,g as e,h as t}from"./chunks/framework.DA3bj7zI.js";const S=JSON.parse('{"title":"WEB SYNTHS","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1711550395000}'),l={name:"README.md"},n=e("h1",{id:"web-synths",tabindex:"-1"},[t("WEB SYNTHS "),e("a",{class:"header-anchor",href:"#web-synths","aria-label":'Permalink to "WEB SYNTHS"'},"​")],-1),r=e("h2",{id:"to-do",tabindex:"-1"},[t("TO DO "),e("a",{class:"header-anchor",href:"#to-do","aria-label":'Permalink to "TO DO"'},"​")],-1),i=e("ul",null,[e("li",null,"SEO proof texts"),e("li",null,"Logos"),e("li",null,"save state"),e("li",null,"favourites"),e("li",null,"ranks + reviews")],-1),d=[n,r,i];function c(h,_,p,u,E,f){return o(),s("div",null,d)}const b=a(l,[["render",c]]);export{S as __pageData,b as default}; diff --git a/assets/README.md.4ThR-heF.lean.js b/assets/README.md.D9FcETfF.lean.js similarity index 85% rename from assets/README.md.4ThR-heF.lean.js rename to assets/README.md.D9FcETfF.lean.js index 1641f8b3..ec8f8409 100644 --- a/assets/README.md.4ThR-heF.lean.js +++ b/assets/README.md.D9FcETfF.lean.js @@ -1 +1 @@ -import{_ as a,d as s,b as o,g as e,h as t}from"./chunks/framework.HWRfC0Fd.js";const S=JSON.parse('{"title":"WEB SYNTHS","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1710400063000}'),l={name:"README.md"},n=e("h1",{id:"web-synths",tabindex:"-1"},[t("WEB SYNTHS "),e("a",{class:"header-anchor",href:"#web-synths","aria-label":'Permalink to "WEB SYNTHS"'},"​")],-1),r=e("h2",{id:"to-do",tabindex:"-1"},[t("TO DO "),e("a",{class:"header-anchor",href:"#to-do","aria-label":'Permalink to "TO DO"'},"​")],-1),i=e("ul",null,[e("li",null,"SEO proof texts"),e("li",null,"Logos"),e("li",null,"save state"),e("li",null,"favourites"),e("li",null,"ranks + reviews")],-1),d=[n,r,i];function c(h,_,p,u,E,f){return o(),s("div",null,d)}const b=a(l,[["render",c]]);export{S as __pageData,b as default}; +import{_ as a,d as s,b as o,g as e,h as t}from"./chunks/framework.DA3bj7zI.js";const S=JSON.parse('{"title":"WEB SYNTHS","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1711550395000}'),l={name:"README.md"},n=e("h1",{id:"web-synths",tabindex:"-1"},[t("WEB SYNTHS "),e("a",{class:"header-anchor",href:"#web-synths","aria-label":'Permalink to "WEB SYNTHS"'},"​")],-1),r=e("h2",{id:"to-do",tabindex:"-1"},[t("TO DO "),e("a",{class:"header-anchor",href:"#to-do","aria-label":'Permalink to "TO DO"'},"​")],-1),i=e("ul",null,[e("li",null,"SEO proof texts"),e("li",null,"Logos"),e("li",null,"save state"),e("li",null,"favourites"),e("li",null,"ranks + reviews")],-1),d=[n,r,i];function c(h,_,p,u,E,f){return o(),s("div",null,d)}const b=a(l,[["render",c]]);export{S as __pageData,b as default}; diff --git a/assets/ableton_index.md.8DfCPC2G.js b/assets/ableton_index.md.Cg4KKF7N.js similarity index 74% rename from assets/ableton_index.md.8DfCPC2G.js rename to assets/ableton_index.md.Cg4KKF7N.js index ba54258c..c62bcaad 100644 --- a/assets/ableton_index.md.8DfCPC2G.js +++ b/assets/ableton_index.md.Cg4KKF7N.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as r,R as l,S as o,f as i,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},"relativePath":"ableton/index.md","filePath":"ableton/index.md","lastUpdated":0}'),p={name:"ableton/index.md"},v=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=s();return(_,f)=>{const e=a;return c(),n("div",null,[r(e,l(o(i(t))),null,16)])}}});export{y as __pageData,v as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as l,S as o,f as i,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},"relativePath":"ableton/index.md","filePath":"ableton/index.md","lastUpdated":0}'),p={name:"ableton/index.md"},v=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=s();return(_,f)=>{const e=a;return c(),n("div",null,[r(e,l(o(i(t))),null,16)])}}});export{y as __pageData,v as default}; diff --git a/assets/ableton_index.md.8DfCPC2G.lean.js b/assets/ableton_index.md.Cg4KKF7N.lean.js similarity index 74% rename from assets/ableton_index.md.8DfCPC2G.lean.js rename to assets/ableton_index.md.Cg4KKF7N.lean.js index ba54258c..c62bcaad 100644 --- a/assets/ableton_index.md.8DfCPC2G.lean.js +++ b/assets/ableton_index.md.Cg4KKF7N.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as r,R as l,S as o,f as i,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},"relativePath":"ableton/index.md","filePath":"ableton/index.md","lastUpdated":0}'),p={name:"ableton/index.md"},v=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=s();return(_,f)=>{const e=a;return c(),n("div",null,[r(e,l(o(i(t))),null,16)])}}});export{y as __pageData,v as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as l,S as o,f as i,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},"relativePath":"ableton/index.md","filePath":"ableton/index.md","lastUpdated":0}'),p={name:"ableton/index.md"},v=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=s();return(_,f)=>{const e=a;return c(),n("div",null,[r(e,l(o(i(t))),null,16)])}}});export{y as __pageData,v as default}; diff --git a/assets/acid-machine-2_index.md.3Csm2P_h.js b/assets/acid-machine-2_index.md.CCZ5MGY2.js similarity index 81% rename from assets/acid-machine-2_index.md.3Csm2P_h.js rename to assets/acid-machine-2_index.md.CCZ5MGY2.js index 284bdbf8..34d180ce 100644 --- a/assets/acid-machine-2_index.md.3Csm2P_h.js +++ b/assets/acid-machine-2_index.md.CCZ5MGY2.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as i,R as c,S as n,f as o,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":30,"clicks":166,"public":false,"is_new":false,"stats":[26]},"relativePath":"acid-machine-2/index.md","filePath":"acid-machine-2/index.md","lastUpdated":0}'),d={name:"acid-machine-2/index.md"},x=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=r();return(u,_)=>{const a=t;return l(),s("div",null,[i(a,c(n(o(e))),null,16)])}}});export{v as __pageData,x as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as i,R as c,S as n,f as o,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":30,"clicks":166,"public":false,"is_new":false,"stats":[26]},"relativePath":"acid-machine-2/index.md","filePath":"acid-machine-2/index.md","lastUpdated":0}'),d={name:"acid-machine-2/index.md"},x=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=r();return(u,_)=>{const a=t;return l(),s("div",null,[i(a,c(n(o(e))),null,16)])}}});export{v as __pageData,x as default}; diff --git a/assets/acid-machine-2_index.md.3Csm2P_h.lean.js b/assets/acid-machine-2_index.md.CCZ5MGY2.lean.js similarity index 81% rename from assets/acid-machine-2_index.md.3Csm2P_h.lean.js rename to assets/acid-machine-2_index.md.CCZ5MGY2.lean.js index 284bdbf8..34d180ce 100644 --- a/assets/acid-machine-2_index.md.3Csm2P_h.lean.js +++ b/assets/acid-machine-2_index.md.CCZ5MGY2.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as i,R as c,S as n,f as o,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":30,"clicks":166,"public":false,"is_new":false,"stats":[26]},"relativePath":"acid-machine-2/index.md","filePath":"acid-machine-2/index.md","lastUpdated":0}'),d={name:"acid-machine-2/index.md"},x=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=r();return(u,_)=>{const a=t;return l(),s("div",null,[i(a,c(n(o(e))),null,16)])}}});export{v as __pageData,x as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as i,R as c,S as n,f as o,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":30,"clicks":166,"public":false,"is_new":false,"stats":[26]},"relativePath":"acid-machine-2/index.md","filePath":"acid-machine-2/index.md","lastUpdated":0}'),d={name:"acid-machine-2/index.md"},x=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=r();return(u,_)=>{const a=t;return l(),s("div",null,[i(a,c(n(o(e))),null,16)])}}});export{v as __pageData,x as default}; diff --git a/assets/app.P7SYvjp3.js b/assets/app.C-uuTtMw.js similarity index 91% rename from assets/app.P7SYvjp3.js rename to assets/app.C-uuTtMw.js index 1d72685b..0e1e34a1 100644 --- a/assets/app.P7SYvjp3.js +++ b/assets/app.C-uuTtMw.js @@ -4,4 +4,4 @@ function __vite__mapDeps(indexes) { } return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) } -import{V as o,W as p,X as u,Y as l,Z as c,$ as f,a0 as d,a1 as m,a2 as h,a3 as A,a4 as g,p as P,a5 as _,s as v,o as R,a6 as w,a7 as y,a8 as C,a9 as E,aa as T}from"./chunks/framework.HWRfC0Fd.js";import{R as b}from"./chunks/theme.TIIJwiPz.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(b),S=_({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return R(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&y(),C(),E(),s.setup&&s.setup(),()=>T(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=L(),a=V();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function V(){return h(S)}function L(){let e=o,a;return A(t=>{let n=g(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),__vite__mapDeps([]))),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{D as createApp}; +import{V as o,W as p,X as u,Y as l,Z as c,$ as f,a0 as d,a1 as m,a2 as h,a3 as A,a4 as g,p as P,a5 as _,s as v,o as R,a6 as w,a7 as y,a8 as C,a9 as E,aa as T}from"./chunks/framework.DA3bj7zI.js";import{R as b}from"./chunks/theme.TKyytG40.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(b),S=_({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return R(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&y(),C(),E(),s.setup&&s.setup(),()=>T(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=L(),a=V();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function V(){return h(S)}function L(){let e=o,a;return A(t=>{let n=g(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),__vite__mapDeps([]))),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/assets/aqwertyon_index.md.sy_D1v3t.js b/assets/aqwertyon_index.md.DeEJlWSG.js similarity index 89% rename from assets/aqwertyon_index.md.sy_D1v3t.js rename to assets/aqwertyon_index.md.DeEJlWSG.js index 549680db..ba920486 100644 --- a/assets/aqwertyon_index.md.sy_D1v3t.js +++ b/assets/aqwertyon_index.md.DeEJlWSG.js @@ -1 +1 @@ -import{_ as r}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as i,R as l,S as u,f as c,g as e,h as t,b as d}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const p=e("p",null,[t("The "),e("strong",null,"aQWERTYon"),t(" (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.")],-1),m=e("p",null,[e("a",{href:"https://youtu.be/hqFr4lF6u_Y",target:"_blank",rel:"noreferrer"},"https://youtu.be/hqFr4lF6u_Y")],-1),T=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},"relativePath":"aqwertyon/index.md","filePath":"aqwertyon/index.md","lastUpdated":0}'),h={name:"aqwertyon/index.md"},q=Object.assign(h,{setup(_){const{params:a,frontmatter:f}=s();return(g,y)=>{const o=r;return d(),n("div",null,[i(o,l(u(c(a))),null,16),p,m])}}});export{T as __pageData,q as default}; +import{_ as r}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as i,R as l,S as u,f as c,g as e,h as t,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,[t("The "),e("strong",null,"aQWERTYon"),t(" (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.")],-1),m=e("p",null,[e("a",{href:"https://youtu.be/hqFr4lF6u_Y",target:"_blank",rel:"noreferrer"},"https://youtu.be/hqFr4lF6u_Y")],-1),T=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},"relativePath":"aqwertyon/index.md","filePath":"aqwertyon/index.md","lastUpdated":0}'),h={name:"aqwertyon/index.md"},q=Object.assign(h,{setup(_){const{params:a,frontmatter:f}=s();return(g,y)=>{const o=r;return d(),n("div",null,[i(o,l(u(c(a))),null,16),p,m])}}});export{T as __pageData,q as default}; diff --git a/assets/aqwertyon_index.md.sy_D1v3t.lean.js b/assets/aqwertyon_index.md.DeEJlWSG.lean.js similarity index 89% rename from assets/aqwertyon_index.md.sy_D1v3t.lean.js rename to assets/aqwertyon_index.md.DeEJlWSG.lean.js index 549680db..ba920486 100644 --- a/assets/aqwertyon_index.md.sy_D1v3t.lean.js +++ b/assets/aqwertyon_index.md.DeEJlWSG.lean.js @@ -1 +1 @@ -import{_ as r}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as i,R as l,S as u,f as c,g as e,h as t,b as d}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const p=e("p",null,[t("The "),e("strong",null,"aQWERTYon"),t(" (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.")],-1),m=e("p",null,[e("a",{href:"https://youtu.be/hqFr4lF6u_Y",target:"_blank",rel:"noreferrer"},"https://youtu.be/hqFr4lF6u_Y")],-1),T=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},"relativePath":"aqwertyon/index.md","filePath":"aqwertyon/index.md","lastUpdated":0}'),h={name:"aqwertyon/index.md"},q=Object.assign(h,{setup(_){const{params:a,frontmatter:f}=s();return(g,y)=>{const o=r;return d(),n("div",null,[i(o,l(u(c(a))),null,16),p,m])}}});export{T as __pageData,q as default}; +import{_ as r}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as i,R as l,S as u,f as c,g as e,h as t,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,[t("The "),e("strong",null,"aQWERTYon"),t(" (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.")],-1),m=e("p",null,[e("a",{href:"https://youtu.be/hqFr4lF6u_Y",target:"_blank",rel:"noreferrer"},"https://youtu.be/hqFr4lF6u_Y")],-1),T=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},"relativePath":"aqwertyon/index.md","filePath":"aqwertyon/index.md","lastUpdated":0}'),h={name:"aqwertyon/index.md"},q=Object.assign(h,{setup(_){const{params:a,frontmatter:f}=s();return(g,y)=>{const o=r;return d(),n("div",null,[i(o,l(u(c(a))),null,16),p,m])}}});export{T as __pageData,q as default}; diff --git a/assets/auth.md.EzrJ2Dtm.js b/assets/auth.md.D0LWfyqF.js similarity index 92% rename from assets/auth.md.EzrJ2Dtm.js rename to assets/auth.md.D0LWfyqF.js index 22fceee9..62693901 100644 --- a/assets/auth.md.EzrJ2Dtm.js +++ b/assets/auth.md.D0LWfyqF.js @@ -1 +1 @@ -import{_ as t,d as e,b as r,B as s}from"./chunks/framework.HWRfC0Fd.js";const f=JSON.parse('{"title":"Directus auth links","description":"","frontmatter":{},"headers":[],"relativePath":"auth.md","filePath":"auth.md","lastUpdated":1710400063000}'),i={name:"auth.md"},a=s('

Directus auth links ​

https://docs.directus.io/guides/real-time/getting-started/websockets.html

',4),c=[a];function o(n,l,u,d,h,p){return r(),e("div",null,c)}const g=t(i,[["render",o]]);export{f as __pageData,g as default}; +import{_ as t,d as e,b as r,B as s}from"./chunks/framework.DA3bj7zI.js";const f=JSON.parse('{"title":"Directus auth links","description":"","frontmatter":{},"headers":[],"relativePath":"auth.md","filePath":"auth.md","lastUpdated":1711550395000}'),i={name:"auth.md"},a=s('

Directus auth links ​

https://docs.directus.io/guides/real-time/getting-started/websockets.html

',4),c=[a];function o(n,l,u,d,h,p){return r(),e("div",null,c)}const g=t(i,[["render",o]]);export{f as __pageData,g as default}; diff --git a/assets/auth.md.EzrJ2Dtm.lean.js b/assets/auth.md.D0LWfyqF.lean.js similarity index 51% rename from assets/auth.md.EzrJ2Dtm.lean.js rename to assets/auth.md.D0LWfyqF.lean.js index 79ee0304..6801c5bb 100644 --- a/assets/auth.md.EzrJ2Dtm.lean.js +++ b/assets/auth.md.D0LWfyqF.lean.js @@ -1 +1 @@ -import{_ as t,d as e,b as r,B as s}from"./chunks/framework.HWRfC0Fd.js";const f=JSON.parse('{"title":"Directus auth links","description":"","frontmatter":{},"headers":[],"relativePath":"auth.md","filePath":"auth.md","lastUpdated":1710400063000}'),i={name:"auth.md"},a=s("",4),c=[a];function o(n,l,u,d,h,p){return r(),e("div",null,c)}const g=t(i,[["render",o]]);export{f as __pageData,g as default}; +import{_ as t,d as e,b as r,B as s}from"./chunks/framework.DA3bj7zI.js";const f=JSON.parse('{"title":"Directus auth links","description":"","frontmatter":{},"headers":[],"relativePath":"auth.md","filePath":"auth.md","lastUpdated":1711550395000}'),i={name:"auth.md"},a=s("",4),c=[a];function o(n,l,u,d,h,p){return r(),e("div",null,c)}const g=t(i,[["render",o]]);export{f as __pageData,g as default}; diff --git a/assets/auth_accept.md.7cs-uWFD.js b/assets/auth_accept.md.Fnf3Jp_6.js similarity index 59% rename from assets/auth_accept.md.7cs-uWFD.js rename to assets/auth_accept.md.Fnf3Jp_6.js index 88cdb7a1..174d058f 100644 --- a/assets/auth_accept.md.7cs-uWFD.js +++ b/assets/auth_accept.md.Fnf3Jp_6.js @@ -1 +1 @@ -import{_ as t,d as e,b as a,g as c}from"./chunks/framework.HWRfC0Fd.js";const u=JSON.parse('{"title":"Accept an invite","description":"","frontmatter":{"title":"Accept an invite"},"headers":[],"relativePath":"auth/accept.md","filePath":"auth/accept.md","lastUpdated":1710400063000}'),n={name:"auth/accept.md"},s=c("p",null,"ACCEPT INVITE PAGE",-1),o=[s];function p(r,i,d,_,l,h){return a(),e("div",null,o)}const f=t(n,[["render",p]]);export{u as __pageData,f as default}; +import{_ as t,d as e,b as a,g as c}from"./chunks/framework.DA3bj7zI.js";const u=JSON.parse('{"title":"Accept an invite","description":"","frontmatter":{"title":"Accept an invite"},"headers":[],"relativePath":"auth/accept.md","filePath":"auth/accept.md","lastUpdated":1711550395000}'),n={name:"auth/accept.md"},s=c("p",null,"ACCEPT INVITE PAGE",-1),o=[s];function p(r,i,d,_,l,h){return a(),e("div",null,o)}const f=t(n,[["render",p]]);export{u as __pageData,f as default}; diff --git a/assets/auth_accept.md.7cs-uWFD.lean.js b/assets/auth_accept.md.Fnf3Jp_6.lean.js similarity index 59% rename from assets/auth_accept.md.7cs-uWFD.lean.js rename to assets/auth_accept.md.Fnf3Jp_6.lean.js index 88cdb7a1..174d058f 100644 --- a/assets/auth_accept.md.7cs-uWFD.lean.js +++ b/assets/auth_accept.md.Fnf3Jp_6.lean.js @@ -1 +1 @@ -import{_ as t,d as e,b as a,g as c}from"./chunks/framework.HWRfC0Fd.js";const u=JSON.parse('{"title":"Accept an invite","description":"","frontmatter":{"title":"Accept an invite"},"headers":[],"relativePath":"auth/accept.md","filePath":"auth/accept.md","lastUpdated":1710400063000}'),n={name:"auth/accept.md"},s=c("p",null,"ACCEPT INVITE PAGE",-1),o=[s];function p(r,i,d,_,l,h){return a(),e("div",null,o)}const f=t(n,[["render",p]]);export{u as __pageData,f as default}; +import{_ as t,d as e,b as a,g as c}from"./chunks/framework.DA3bj7zI.js";const u=JSON.parse('{"title":"Accept an invite","description":"","frontmatter":{"title":"Accept an invite"},"headers":[],"relativePath":"auth/accept.md","filePath":"auth/accept.md","lastUpdated":1711550395000}'),n={name:"auth/accept.md"},s=c("p",null,"ACCEPT INVITE PAGE",-1),o=[s];function p(r,i,d,_,l,h){return a(),e("div",null,o)}const f=t(n,[["render",p]]);export{u as __pageData,f as default}; diff --git a/assets/auth_index.md.n2YQLYnx.js b/assets/auth_index.md.QeBiS1Uo.js similarity index 91% rename from assets/auth_index.md.n2YQLYnx.js rename to assets/auth_index.md.QeBiS1Uo.js index ef9fd669..800fe317 100644 --- a/assets/auth_index.md.n2YQLYnx.js +++ b/assets/auth_index.md.QeBiS1Uo.js @@ -1 +1 @@ -import{_ as R}from"./chunks/theme.TIIJwiPz.js";import{u as V,D as I,a as J,A as M,f as O,x as T}from"./chunks/index.Q2UX5ner.js";import{r as l,o as j,b as f,d as g,g as s,t as h,f as o,e as y,j as w,k as $,C as q,y as k,_ as E}from"./chunks/framework.HWRfC0Fd.js";class G{get(){return JSON.parse(localStorage.getItem("directus-data"))}set(a){localStorage.setItem("directus-data",JSON.stringify(a))}}const n=V("https://dbs.chromatone.center/").with(I({credentials:"include"})).with(J("json",{credentials:"include",storage:new G})).with(M({credentials:"include"})),p=l(),C=l(""),P=l(""),_=l({}),b=l("");let D=!1;function U(){return D||(j(async()=>{await S(),await L()}),D=!0),{access_token:b,email:C,password:P,authData:_,user:p,userDB:n,userCreate:F,userRead:L,refreshToken:S,submitLogin:z,logoutUser:H}}async function S(){try{let e=await n.refresh();b.value=e.access_token,delete e.access_token,_.value=e}catch(e){console.log(e.errors[0])}}async function z(){try{let e=await n.login(C.value,P.value);b.value=e.access_token,delete e.access_token,_.value={...e}}catch(e){console.log(e.errors[0])}}async function L(){try{return p.value=await n.request(O()),p.value.players=await n.request(T("players",{fields:["*",{synths:["*",{synths_id:["*"]}]}]})),p.value}catch(e){console.log(e)}}async function F({email:e}){}async function H(){await n.logout(),b.value="",_.value=""}const K={class:"flex flex-col gap-4 p-4"},Q=s("div",{class:"text-xl"},"Profile",-1),W={class:"text-sm"},X={__name:"AuthProfile",setup(e){const{user:a}=U();return(x,v)=>(f(),g("div",K,[Q,s("pre",W,h(o(a)),1)]))}},Y=s("div",{class:"text-4xl"},"Login to your account",-1),Z=s("label",{class:"text-xl",for:"email"},"E-mail*:",-1),ee=s("label",{class:"text-xl",for:"email"},"Password:",-1),te={key:1,class:"flex flex-col gap-2"},se={class:"font-mono text-xs"},oe={class:"text-sm"},re={class:"flex"},ae={__name:"AuthLogin",setup(e){const{userRead:a,user:x,userDB:v,email:d,password:i,authData:m,access_token:c,submitLogin:u,refreshToken:A,logoutUser:B}=U();return(de,t)=>{const N=X;return o(c)?(f(),g("div",te,[s("p",se,"."+h(o(c).split(".")[2]),1),s("pre",oe,h(o(m)),1),s("div",re,[s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[4]||(t[4]=r=>o(A)())},"Refresh"),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[5]||(t[5]=r=>o(B)())},"Log out")]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[6]||(t[6]=r=>o(a)())},"Read user"),k(N)])):(f(),g("form",{key:0,class:"flex flex-col gap-4",onSubmit:t[3]||(t[3]=q((...r)=>o(u)&&o(u)(...r),["prevent"]))},[Y,Z,y(s("input",{class:"text-lg rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",id:"email",type:"text","onUpdate:modelValue":t[0]||(t[0]=r=>$(d)?d.value=r:null)},null,512),[[w,o(d)]]),ee,y(s("input",{class:"rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",type:"password","onUpdate:modelValue":t[1]||(t[1]=r=>$(i)?i.value=r:null)},null,512),[[w,o(i)]]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[2]||(t[2]=(...r)=>o(u)&&o(u)(...r))},"Sign In")],32))}}},pe=JSON.parse('{"title":"Login","description":"","frontmatter":{"title":"Login","desctiption":"Get in touch with community through contributions"},"headers":[],"relativePath":"auth/index.md","filePath":"auth/index.md","lastUpdated":1710400063000}'),ne={name:"auth/index.md"};function le(e,a,x,v,d,i){const m=ae,c=R;return f(),g("div",null,[k(m),k(c)])}const fe=E(ne,[["render",le]]);export{pe as __pageData,fe as default}; +import{_ as R}from"./chunks/theme.TKyytG40.js";import{u as V,D as I,a as J,A as M,f as O,x as T}from"./chunks/index.OsI8M1nP.js";import{r as l,o as j,b as f,d as g,g as s,t as h,f as o,e as y,j as w,k as $,C as q,y as k,_ as E}from"./chunks/framework.DA3bj7zI.js";class G{get(){return JSON.parse(localStorage.getItem("directus-data"))}set(a){localStorage.setItem("directus-data",JSON.stringify(a))}}const n=V("https://dbs.chromatone.center/").with(I({credentials:"include"})).with(J("json",{credentials:"include",storage:new G})).with(M({credentials:"include"})),p=l(),C=l(""),P=l(""),_=l({}),b=l("");let D=!1;function U(){return D||(j(async()=>{await S(),await L()}),D=!0),{access_token:b,email:C,password:P,authData:_,user:p,userDB:n,userCreate:F,userRead:L,refreshToken:S,submitLogin:z,logoutUser:H}}async function S(){try{let e=await n.refresh();b.value=e.access_token,delete e.access_token,_.value=e}catch(e){console.log(e.errors[0])}}async function z(){try{let e=await n.login(C.value,P.value);b.value=e.access_token,delete e.access_token,_.value={...e}}catch(e){console.log(e.errors[0])}}async function L(){try{return p.value=await n.request(O()),p.value.players=await n.request(T("players",{fields:["*",{synths:["*",{synths_id:["*"]}]}]})),p.value}catch(e){console.log(e)}}async function F({email:e}){}async function H(){await n.logout(),b.value="",_.value=""}const K={class:"flex flex-col gap-4 p-4"},Q=s("div",{class:"text-xl"},"Profile",-1),W={class:"text-sm"},X={__name:"AuthProfile",setup(e){const{user:a}=U();return(x,v)=>(f(),g("div",K,[Q,s("pre",W,h(o(a)),1)]))}},Y=s("div",{class:"text-4xl"},"Login to your account",-1),Z=s("label",{class:"text-xl",for:"email"},"E-mail*:",-1),ee=s("label",{class:"text-xl",for:"email"},"Password:",-1),te={key:1,class:"flex flex-col gap-2"},se={class:"font-mono text-xs"},oe={class:"text-sm"},re={class:"flex"},ae={__name:"AuthLogin",setup(e){const{userRead:a,user:x,userDB:v,email:d,password:i,authData:m,access_token:c,submitLogin:u,refreshToken:A,logoutUser:B}=U();return(de,t)=>{const N=X;return o(c)?(f(),g("div",te,[s("p",se,"."+h(o(c).split(".")[2]),1),s("pre",oe,h(o(m)),1),s("div",re,[s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[4]||(t[4]=r=>o(A)())},"Refresh"),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[5]||(t[5]=r=>o(B)())},"Log out")]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[6]||(t[6]=r=>o(a)())},"Read user"),k(N)])):(f(),g("form",{key:0,class:"flex flex-col gap-4",onSubmit:t[3]||(t[3]=q((...r)=>o(u)&&o(u)(...r),["prevent"]))},[Y,Z,y(s("input",{class:"text-lg rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",id:"email",type:"text","onUpdate:modelValue":t[0]||(t[0]=r=>$(d)?d.value=r:null)},null,512),[[w,o(d)]]),ee,y(s("input",{class:"rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",type:"password","onUpdate:modelValue":t[1]||(t[1]=r=>$(i)?i.value=r:null)},null,512),[[w,o(i)]]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[2]||(t[2]=(...r)=>o(u)&&o(u)(...r))},"Sign In")],32))}}},pe=JSON.parse('{"title":"Login","description":"","frontmatter":{"title":"Login","desctiption":"Get in touch with community through contributions"},"headers":[],"relativePath":"auth/index.md","filePath":"auth/index.md","lastUpdated":1711550395000}'),ne={name:"auth/index.md"};function le(e,a,x,v,d,i){const m=ae,c=R;return f(),g("div",null,[k(m),k(c)])}const fe=E(ne,[["render",le]]);export{pe as __pageData,fe as default}; diff --git a/assets/auth_index.md.n2YQLYnx.lean.js b/assets/auth_index.md.QeBiS1Uo.lean.js similarity index 91% rename from assets/auth_index.md.n2YQLYnx.lean.js rename to assets/auth_index.md.QeBiS1Uo.lean.js index ef9fd669..800fe317 100644 --- a/assets/auth_index.md.n2YQLYnx.lean.js +++ b/assets/auth_index.md.QeBiS1Uo.lean.js @@ -1 +1 @@ -import{_ as R}from"./chunks/theme.TIIJwiPz.js";import{u as V,D as I,a as J,A as M,f as O,x as T}from"./chunks/index.Q2UX5ner.js";import{r as l,o as j,b as f,d as g,g as s,t as h,f as o,e as y,j as w,k as $,C as q,y as k,_ as E}from"./chunks/framework.HWRfC0Fd.js";class G{get(){return JSON.parse(localStorage.getItem("directus-data"))}set(a){localStorage.setItem("directus-data",JSON.stringify(a))}}const n=V("https://dbs.chromatone.center/").with(I({credentials:"include"})).with(J("json",{credentials:"include",storage:new G})).with(M({credentials:"include"})),p=l(),C=l(""),P=l(""),_=l({}),b=l("");let D=!1;function U(){return D||(j(async()=>{await S(),await L()}),D=!0),{access_token:b,email:C,password:P,authData:_,user:p,userDB:n,userCreate:F,userRead:L,refreshToken:S,submitLogin:z,logoutUser:H}}async function S(){try{let e=await n.refresh();b.value=e.access_token,delete e.access_token,_.value=e}catch(e){console.log(e.errors[0])}}async function z(){try{let e=await n.login(C.value,P.value);b.value=e.access_token,delete e.access_token,_.value={...e}}catch(e){console.log(e.errors[0])}}async function L(){try{return p.value=await n.request(O()),p.value.players=await n.request(T("players",{fields:["*",{synths:["*",{synths_id:["*"]}]}]})),p.value}catch(e){console.log(e)}}async function F({email:e}){}async function H(){await n.logout(),b.value="",_.value=""}const K={class:"flex flex-col gap-4 p-4"},Q=s("div",{class:"text-xl"},"Profile",-1),W={class:"text-sm"},X={__name:"AuthProfile",setup(e){const{user:a}=U();return(x,v)=>(f(),g("div",K,[Q,s("pre",W,h(o(a)),1)]))}},Y=s("div",{class:"text-4xl"},"Login to your account",-1),Z=s("label",{class:"text-xl",for:"email"},"E-mail*:",-1),ee=s("label",{class:"text-xl",for:"email"},"Password:",-1),te={key:1,class:"flex flex-col gap-2"},se={class:"font-mono text-xs"},oe={class:"text-sm"},re={class:"flex"},ae={__name:"AuthLogin",setup(e){const{userRead:a,user:x,userDB:v,email:d,password:i,authData:m,access_token:c,submitLogin:u,refreshToken:A,logoutUser:B}=U();return(de,t)=>{const N=X;return o(c)?(f(),g("div",te,[s("p",se,"."+h(o(c).split(".")[2]),1),s("pre",oe,h(o(m)),1),s("div",re,[s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[4]||(t[4]=r=>o(A)())},"Refresh"),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[5]||(t[5]=r=>o(B)())},"Log out")]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[6]||(t[6]=r=>o(a)())},"Read user"),k(N)])):(f(),g("form",{key:0,class:"flex flex-col gap-4",onSubmit:t[3]||(t[3]=q((...r)=>o(u)&&o(u)(...r),["prevent"]))},[Y,Z,y(s("input",{class:"text-lg rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",id:"email",type:"text","onUpdate:modelValue":t[0]||(t[0]=r=>$(d)?d.value=r:null)},null,512),[[w,o(d)]]),ee,y(s("input",{class:"rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",type:"password","onUpdate:modelValue":t[1]||(t[1]=r=>$(i)?i.value=r:null)},null,512),[[w,o(i)]]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[2]||(t[2]=(...r)=>o(u)&&o(u)(...r))},"Sign In")],32))}}},pe=JSON.parse('{"title":"Login","description":"","frontmatter":{"title":"Login","desctiption":"Get in touch with community through contributions"},"headers":[],"relativePath":"auth/index.md","filePath":"auth/index.md","lastUpdated":1710400063000}'),ne={name:"auth/index.md"};function le(e,a,x,v,d,i){const m=ae,c=R;return f(),g("div",null,[k(m),k(c)])}const fe=E(ne,[["render",le]]);export{pe as __pageData,fe as default}; +import{_ as R}from"./chunks/theme.TKyytG40.js";import{u as V,D as I,a as J,A as M,f as O,x as T}from"./chunks/index.OsI8M1nP.js";import{r as l,o as j,b as f,d as g,g as s,t as h,f as o,e as y,j as w,k as $,C as q,y as k,_ as E}from"./chunks/framework.DA3bj7zI.js";class G{get(){return JSON.parse(localStorage.getItem("directus-data"))}set(a){localStorage.setItem("directus-data",JSON.stringify(a))}}const n=V("https://dbs.chromatone.center/").with(I({credentials:"include"})).with(J("json",{credentials:"include",storage:new G})).with(M({credentials:"include"})),p=l(),C=l(""),P=l(""),_=l({}),b=l("");let D=!1;function U(){return D||(j(async()=>{await S(),await L()}),D=!0),{access_token:b,email:C,password:P,authData:_,user:p,userDB:n,userCreate:F,userRead:L,refreshToken:S,submitLogin:z,logoutUser:H}}async function S(){try{let e=await n.refresh();b.value=e.access_token,delete e.access_token,_.value=e}catch(e){console.log(e.errors[0])}}async function z(){try{let e=await n.login(C.value,P.value);b.value=e.access_token,delete e.access_token,_.value={...e}}catch(e){console.log(e.errors[0])}}async function L(){try{return p.value=await n.request(O()),p.value.players=await n.request(T("players",{fields:["*",{synths:["*",{synths_id:["*"]}]}]})),p.value}catch(e){console.log(e)}}async function F({email:e}){}async function H(){await n.logout(),b.value="",_.value=""}const K={class:"flex flex-col gap-4 p-4"},Q=s("div",{class:"text-xl"},"Profile",-1),W={class:"text-sm"},X={__name:"AuthProfile",setup(e){const{user:a}=U();return(x,v)=>(f(),g("div",K,[Q,s("pre",W,h(o(a)),1)]))}},Y=s("div",{class:"text-4xl"},"Login to your account",-1),Z=s("label",{class:"text-xl",for:"email"},"E-mail*:",-1),ee=s("label",{class:"text-xl",for:"email"},"Password:",-1),te={key:1,class:"flex flex-col gap-2"},se={class:"font-mono text-xs"},oe={class:"text-sm"},re={class:"flex"},ae={__name:"AuthLogin",setup(e){const{userRead:a,user:x,userDB:v,email:d,password:i,authData:m,access_token:c,submitLogin:u,refreshToken:A,logoutUser:B}=U();return(de,t)=>{const N=X;return o(c)?(f(),g("div",te,[s("p",se,"."+h(o(c).split(".")[2]),1),s("pre",oe,h(o(m)),1),s("div",re,[s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[4]||(t[4]=r=>o(A)())},"Refresh"),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[5]||(t[5]=r=>o(B)())},"Log out")]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[6]||(t[6]=r=>o(a)())},"Read user"),k(N)])):(f(),g("form",{key:0,class:"flex flex-col gap-4",onSubmit:t[3]||(t[3]=q((...r)=>o(u)&&o(u)(...r),["prevent"]))},[Y,Z,y(s("input",{class:"text-lg rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",id:"email",type:"text","onUpdate:modelValue":t[0]||(t[0]=r=>$(d)?d.value=r:null)},null,512),[[w,o(d)]]),ee,y(s("input",{class:"rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",type:"password","onUpdate:modelValue":t[1]||(t[1]=r=>$(i)?i.value=r:null)},null,512),[[w,o(i)]]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[2]||(t[2]=(...r)=>o(u)&&o(u)(...r))},"Sign In")],32))}}},pe=JSON.parse('{"title":"Login","description":"","frontmatter":{"title":"Login","desctiption":"Get in touch with community through contributions"},"headers":[],"relativePath":"auth/index.md","filePath":"auth/index.md","lastUpdated":1711550395000}'),ne={name:"auth/index.md"};function le(e,a,x,v,d,i){const m=ae,c=R;return f(),g("div",null,[k(m),k(c)])}const fe=E(ne,[["render",le]]);export{pe as __pageData,fe as default}; diff --git a/assets/auth_invite.md.0Ao_I84l.js b/assets/auth_invite.md.0Ao_I84l.js deleted file mode 100644 index 8e080a8b..00000000 --- a/assets/auth_invite.md.0Ao_I84l.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,d as e,b as a,g as n}from"./chunks/framework.HWRfC0Fd.js";const m=JSON.parse('{"title":"Invite","description":"","frontmatter":{"title":"Invite"},"headers":[],"relativePath":"auth/invite.md","filePath":"auth/invite.md","lastUpdated":1710400063000}'),i={name:"auth/invite.md"},s=n("p",null,"Invite a new user PAGE",-1),o=[s];function r(c,d,_,l,p,u){return a(),e("div",null,o)}const v=t(i,[["render",r]]);export{m as __pageData,v as default}; diff --git a/assets/auth_invite.md.0Ao_I84l.lean.js b/assets/auth_invite.md.0Ao_I84l.lean.js deleted file mode 100644 index 8e080a8b..00000000 --- a/assets/auth_invite.md.0Ao_I84l.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,d as e,b as a,g as n}from"./chunks/framework.HWRfC0Fd.js";const m=JSON.parse('{"title":"Invite","description":"","frontmatter":{"title":"Invite"},"headers":[],"relativePath":"auth/invite.md","filePath":"auth/invite.md","lastUpdated":1710400063000}'),i={name:"auth/invite.md"},s=n("p",null,"Invite a new user PAGE",-1),o=[s];function r(c,d,_,l,p,u){return a(),e("div",null,o)}const v=t(i,[["render",r]]);export{m as __pageData,v as default}; diff --git a/assets/auth_invite.md.DdrEzK2j.js b/assets/auth_invite.md.DdrEzK2j.js new file mode 100644 index 00000000..d5603c92 --- /dev/null +++ b/assets/auth_invite.md.DdrEzK2j.js @@ -0,0 +1 @@ +import{_ as t,d as e,b as a,g as n}from"./chunks/framework.DA3bj7zI.js";const m=JSON.parse('{"title":"Invite","description":"","frontmatter":{"title":"Invite"},"headers":[],"relativePath":"auth/invite.md","filePath":"auth/invite.md","lastUpdated":1711550395000}'),i={name:"auth/invite.md"},s=n("p",null,"Invite a new user PAGE",-1),o=[s];function r(c,d,_,l,p,u){return a(),e("div",null,o)}const v=t(i,[["render",r]]);export{m as __pageData,v as default}; diff --git a/assets/auth_invite.md.DdrEzK2j.lean.js b/assets/auth_invite.md.DdrEzK2j.lean.js new file mode 100644 index 00000000..d5603c92 --- /dev/null +++ b/assets/auth_invite.md.DdrEzK2j.lean.js @@ -0,0 +1 @@ +import{_ as t,d as e,b as a,g as n}from"./chunks/framework.DA3bj7zI.js";const m=JSON.parse('{"title":"Invite","description":"","frontmatter":{"title":"Invite"},"headers":[],"relativePath":"auth/invite.md","filePath":"auth/invite.md","lastUpdated":1711550395000}'),i={name:"auth/invite.md"},s=n("p",null,"Invite a new user PAGE",-1),o=[s];function r(c,d,_,l,p,u){return a(),e("div",null,o)}const v=t(i,[["render",r]]);export{m as __pageData,v as default}; diff --git a/assets/auth_logout.md.HN7sWFid.js b/assets/auth_logout.md.Cewl1AND.js similarity index 60% rename from assets/auth_logout.md.HN7sWFid.js rename to assets/auth_logout.md.Cewl1AND.js index 437c77a4..7864b530 100644 --- a/assets/auth_logout.md.HN7sWFid.js +++ b/assets/auth_logout.md.Cewl1AND.js @@ -1 +1 @@ -import{_ as t,d as e,b as o,g as a}from"./chunks/framework.HWRfC0Fd.js";const m=JSON.parse('{"title":"Log Out","description":"","frontmatter":{"title":"Log Out","desctiption":"Log out from the site"},"headers":[],"relativePath":"auth/logout.md","filePath":"auth/logout.md","lastUpdated":1710400063000}'),s={name:"auth/logout.md"},n=a("p",null,"LOGIN PAGE",-1),r=[n];function c(d,l,i,u,_,p){return o(),e("div",null,r)}const f=t(s,[["render",c]]);export{m as __pageData,f as default}; +import{_ as t,d as e,b as o,g as a}from"./chunks/framework.DA3bj7zI.js";const m=JSON.parse('{"title":"Log Out","description":"","frontmatter":{"title":"Log Out","desctiption":"Log out from the site"},"headers":[],"relativePath":"auth/logout.md","filePath":"auth/logout.md","lastUpdated":1711550395000}'),s={name:"auth/logout.md"},n=a("p",null,"LOGIN PAGE",-1),r=[n];function c(d,l,i,u,_,p){return o(),e("div",null,r)}const f=t(s,[["render",c]]);export{m as __pageData,f as default}; diff --git a/assets/auth_logout.md.HN7sWFid.lean.js b/assets/auth_logout.md.Cewl1AND.lean.js similarity index 60% rename from assets/auth_logout.md.HN7sWFid.lean.js rename to assets/auth_logout.md.Cewl1AND.lean.js index 437c77a4..7864b530 100644 --- a/assets/auth_logout.md.HN7sWFid.lean.js +++ b/assets/auth_logout.md.Cewl1AND.lean.js @@ -1 +1 @@ -import{_ as t,d as e,b as o,g as a}from"./chunks/framework.HWRfC0Fd.js";const m=JSON.parse('{"title":"Log Out","description":"","frontmatter":{"title":"Log Out","desctiption":"Log out from the site"},"headers":[],"relativePath":"auth/logout.md","filePath":"auth/logout.md","lastUpdated":1710400063000}'),s={name:"auth/logout.md"},n=a("p",null,"LOGIN PAGE",-1),r=[n];function c(d,l,i,u,_,p){return o(),e("div",null,r)}const f=t(s,[["render",c]]);export{m as __pageData,f as default}; +import{_ as t,d as e,b as o,g as a}from"./chunks/framework.DA3bj7zI.js";const m=JSON.parse('{"title":"Log Out","description":"","frontmatter":{"title":"Log Out","desctiption":"Log out from the site"},"headers":[],"relativePath":"auth/logout.md","filePath":"auth/logout.md","lastUpdated":1711550395000}'),s={name:"auth/logout.md"},n=a("p",null,"LOGIN PAGE",-1),r=[n];function c(d,l,i,u,_,p){return o(),e("div",null,r)}const f=t(s,[["render",c]]);export{m as __pageData,f as default}; diff --git a/assets/auth_reset.md.CD545pEH.js b/assets/auth_reset.md.DcV3kbsy.js similarity index 58% rename from assets/auth_reset.md.CD545pEH.js rename to assets/auth_reset.md.DcV3kbsy.js index b30a664c..73703e9b 100644 --- a/assets/auth_reset.md.CD545pEH.js +++ b/assets/auth_reset.md.DcV3kbsy.js @@ -1 +1 @@ -import{_ as e,d as t,b as s,g as a}from"./chunks/framework.HWRfC0Fd.js";const u=JSON.parse('{"title":"Reset password","description":"","frontmatter":{"title":"Reset password"},"headers":[],"relativePath":"auth/reset.md","filePath":"auth/reset.md","lastUpdated":1710400063000}'),r={name:"auth/reset.md"},o=a("p",null,"PASSWORD RESET PAGE",-1),n=[o];function d(c,p,_,i,l,h){return s(),t("div",null,n)}const f=e(r,[["render",d]]);export{u as __pageData,f as default}; +import{_ as e,d as t,b as s,g as a}from"./chunks/framework.DA3bj7zI.js";const u=JSON.parse('{"title":"Reset password","description":"","frontmatter":{"title":"Reset password"},"headers":[],"relativePath":"auth/reset.md","filePath":"auth/reset.md","lastUpdated":1711550395000}'),r={name:"auth/reset.md"},o=a("p",null,"PASSWORD RESET PAGE",-1),n=[o];function d(c,p,_,i,l,h){return s(),t("div",null,n)}const f=e(r,[["render",d]]);export{u as __pageData,f as default}; diff --git a/assets/auth_reset.md.CD545pEH.lean.js b/assets/auth_reset.md.DcV3kbsy.lean.js similarity index 58% rename from assets/auth_reset.md.CD545pEH.lean.js rename to assets/auth_reset.md.DcV3kbsy.lean.js index b30a664c..73703e9b 100644 --- a/assets/auth_reset.md.CD545pEH.lean.js +++ b/assets/auth_reset.md.DcV3kbsy.lean.js @@ -1 +1 @@ -import{_ as e,d as t,b as s,g as a}from"./chunks/framework.HWRfC0Fd.js";const u=JSON.parse('{"title":"Reset password","description":"","frontmatter":{"title":"Reset password"},"headers":[],"relativePath":"auth/reset.md","filePath":"auth/reset.md","lastUpdated":1710400063000}'),r={name:"auth/reset.md"},o=a("p",null,"PASSWORD RESET PAGE",-1),n=[o];function d(c,p,_,i,l,h){return s(),t("div",null,n)}const f=e(r,[["render",d]]);export{u as __pageData,f as default}; +import{_ as e,d as t,b as s,g as a}from"./chunks/framework.DA3bj7zI.js";const u=JSON.parse('{"title":"Reset password","description":"","frontmatter":{"title":"Reset password"},"headers":[],"relativePath":"auth/reset.md","filePath":"auth/reset.md","lastUpdated":1711550395000}'),r={name:"auth/reset.md"},o=a("p",null,"PASSWORD RESET PAGE",-1),n=[o];function d(c,p,_,i,l,h){return s(),t("div",null,n)}const f=e(r,[["render",d]]);export{u as __pageData,f as default}; diff --git a/assets/bassoon_index.md.t4QY1DDS.js b/assets/bassoon_index.md.BTdiYICS.js similarity index 76% rename from assets/bassoon_index.md.t4QY1DDS.js rename to assets/bassoon_index.md.BTdiYICS.js index 51422d20..5bd82463 100644 --- a/assets/bassoon_index.md.t4QY1DDS.js +++ b/assets/bassoon_index.md.BTdiYICS.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as o,R as n,S as c,f as i,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":22,"clicks":10,"public":false,"is_new":true,"stats":[45]},"relativePath":"bassoon/index.md","filePath":"bassoon/index.md","lastUpdated":0}'),d={name:"bassoon/index.md"},g=Object.assign(d,{setup(p){const{params:a,frontmatter:m}=s();return(_,f)=>{const e=t;return l(),r("div",null,[o(e,n(c(i(a))),null,16)])}}});export{w as __pageData,g as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as o,R as n,S as c,f as i,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":22,"clicks":10,"public":false,"is_new":true,"stats":[45]},"relativePath":"bassoon/index.md","filePath":"bassoon/index.md","lastUpdated":0}'),d={name:"bassoon/index.md"},g=Object.assign(d,{setup(p){const{params:a,frontmatter:m}=s();return(_,f)=>{const e=t;return l(),r("div",null,[o(e,n(c(i(a))),null,16)])}}});export{w as __pageData,g as default}; diff --git a/assets/bassoon_index.md.t4QY1DDS.lean.js b/assets/bassoon_index.md.BTdiYICS.lean.js similarity index 76% rename from assets/bassoon_index.md.t4QY1DDS.lean.js rename to assets/bassoon_index.md.BTdiYICS.lean.js index 51422d20..5bd82463 100644 --- a/assets/bassoon_index.md.t4QY1DDS.lean.js +++ b/assets/bassoon_index.md.BTdiYICS.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as o,R as n,S as c,f as i,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":22,"clicks":10,"public":false,"is_new":true,"stats":[45]},"relativePath":"bassoon/index.md","filePath":"bassoon/index.md","lastUpdated":0}'),d={name:"bassoon/index.md"},g=Object.assign(d,{setup(p){const{params:a,frontmatter:m}=s();return(_,f)=>{const e=t;return l(),r("div",null,[o(e,n(c(i(a))),null,16)])}}});export{w as __pageData,g as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as o,R as n,S as c,f as i,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":22,"clicks":10,"public":false,"is_new":true,"stats":[45]},"relativePath":"bassoon/index.md","filePath":"bassoon/index.md","lastUpdated":0}'),d={name:"bassoon/index.md"},g=Object.assign(d,{setup(p){const{params:a,frontmatter:m}=s();return(_,f)=>{const e=t;return l(),r("div",null,[o(e,n(c(i(a))),null,16)])}}});export{w as __pageData,g as default}; diff --git a/assets/beepbox_index.md.95bPjioH.js b/assets/beepbox_index.md.DCxpwyWi.js similarity index 90% rename from assets/beepbox_index.md.95bPjioH.js rename to assets/beepbox_index.md.DCxpwyWi.js index a44022b9..b0e9ea44 100644 --- a/assets/beepbox_index.md.95bPjioH.js +++ b/assets/beepbox_index.md.DCxpwyWi.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as r,R as i,S as d,f as l,g as e,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const p=e("p",null,"BeepBox is developed by John Nesky.",-1),h=e("p",null,"BeepBox does not claim ownership over songs created with it, so original songs belong to their authors.",-1),u=e("p",null,"Neither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data.",-1),k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":17,"clicks":10,"public":false,"is_new":true,"stats":[46]},"relativePath":"beepbox/index.md","filePath":"beepbox/index.md","lastUpdated":0}'),m={name:"beepbox/index.md"},w=Object.assign(m,{setup(y){const{params:o,frontmatter:_}=s();return(f,g)=>{const t=a;return c(),n("div",null,[r(t,i(d(l(o))),null,16),p,h,u])}}});export{k as __pageData,w as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as i,S as d,f as l,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,"BeepBox is developed by John Nesky.",-1),h=e("p",null,"BeepBox does not claim ownership over songs created with it, so original songs belong to their authors.",-1),u=e("p",null,"Neither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data.",-1),k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":17,"clicks":10,"public":false,"is_new":true,"stats":[46]},"relativePath":"beepbox/index.md","filePath":"beepbox/index.md","lastUpdated":0}'),m={name:"beepbox/index.md"},w=Object.assign(m,{setup(y){const{params:o,frontmatter:_}=s();return(f,g)=>{const t=a;return c(),n("div",null,[r(t,i(d(l(o))),null,16),p,h,u])}}});export{k as __pageData,w as default}; diff --git a/assets/beepbox_index.md.95bPjioH.lean.js b/assets/beepbox_index.md.DCxpwyWi.lean.js similarity index 90% rename from assets/beepbox_index.md.95bPjioH.lean.js rename to assets/beepbox_index.md.DCxpwyWi.lean.js index a44022b9..b0e9ea44 100644 --- a/assets/beepbox_index.md.95bPjioH.lean.js +++ b/assets/beepbox_index.md.DCxpwyWi.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as r,R as i,S as d,f as l,g as e,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const p=e("p",null,"BeepBox is developed by John Nesky.",-1),h=e("p",null,"BeepBox does not claim ownership over songs created with it, so original songs belong to their authors.",-1),u=e("p",null,"Neither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data.",-1),k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":17,"clicks":10,"public":false,"is_new":true,"stats":[46]},"relativePath":"beepbox/index.md","filePath":"beepbox/index.md","lastUpdated":0}'),m={name:"beepbox/index.md"},w=Object.assign(m,{setup(y){const{params:o,frontmatter:_}=s();return(f,g)=>{const t=a;return c(),n("div",null,[r(t,i(d(l(o))),null,16),p,h,u])}}});export{k as __pageData,w as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as i,S as d,f as l,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,"BeepBox is developed by John Nesky.",-1),h=e("p",null,"BeepBox does not claim ownership over songs created with it, so original songs belong to their authors.",-1),u=e("p",null,"Neither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data.",-1),k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":17,"clicks":10,"public":false,"is_new":true,"stats":[46]},"relativePath":"beepbox/index.md","filePath":"beepbox/index.md","lastUpdated":0}'),m={name:"beepbox/index.md"},w=Object.assign(m,{setup(y){const{params:o,frontmatter:_}=s();return(f,g)=>{const t=a;return c(),n("div",null,[r(t,i(d(l(o))),null,16),p,h,u])}}});export{k as __pageData,w as default}; diff --git a/assets/blokdust_index.md.3G1OFo-y.js b/assets/blokdust_index.md.BZXK4-FO.js similarity index 87% rename from assets/blokdust_index.md.3G1OFo-y.js rename to assets/blokdust_index.md.BZXK4-FO.js index 47536cb2..98646b52 100644 --- a/assets/blokdust_index.md.3G1OFo-y.js +++ b/assets/blokdust_index.md.BZXK4-FO.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as o,y as i,R as r,S as n,f as l,g as d,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const u=d("p",null,"Luke Twyman - project concept, design & Ul. whitevinyldesign.com @whitevinylUK Luke Phillips - audio development & musical interaction. femurdesign.com @lukephills Edward Silverton - client & server architecture & core development. edsilv.com @edsilv",-1),b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":39,"clicks":19,"public":false,"is_new":false,"stats":[35]},"relativePath":"blokdust/index.md","filePath":"blokdust/index.md","lastUpdated":0}'),p={name:"blokdust/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:_}=s();return(h,f)=>{const t=a;return c(),o("div",null,[i(t,r(n(l(e))),null,16),u])}}});export{b as __pageData,y as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as o,y as i,R as r,S as n,f as l,g as d,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=d("p",null,"Luke Twyman - project concept, design & Ul. whitevinyldesign.com @whitevinylUK Luke Phillips - audio development & musical interaction. femurdesign.com @lukephills Edward Silverton - client & server architecture & core development. edsilv.com @edsilv",-1),b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":39,"clicks":19,"public":false,"is_new":false,"stats":[35]},"relativePath":"blokdust/index.md","filePath":"blokdust/index.md","lastUpdated":0}'),p={name:"blokdust/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:_}=s();return(h,f)=>{const t=a;return c(),o("div",null,[i(t,r(n(l(e))),null,16),u])}}});export{b as __pageData,y as default}; diff --git a/assets/blokdust_index.md.3G1OFo-y.lean.js b/assets/blokdust_index.md.BZXK4-FO.lean.js similarity index 87% rename from assets/blokdust_index.md.3G1OFo-y.lean.js rename to assets/blokdust_index.md.BZXK4-FO.lean.js index 47536cb2..98646b52 100644 --- a/assets/blokdust_index.md.3G1OFo-y.lean.js +++ b/assets/blokdust_index.md.BZXK4-FO.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as o,y as i,R as r,S as n,f as l,g as d,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const u=d("p",null,"Luke Twyman - project concept, design & Ul. whitevinyldesign.com @whitevinylUK Luke Phillips - audio development & musical interaction. femurdesign.com @lukephills Edward Silverton - client & server architecture & core development. edsilv.com @edsilv",-1),b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":39,"clicks":19,"public":false,"is_new":false,"stats":[35]},"relativePath":"blokdust/index.md","filePath":"blokdust/index.md","lastUpdated":0}'),p={name:"blokdust/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:_}=s();return(h,f)=>{const t=a;return c(),o("div",null,[i(t,r(n(l(e))),null,16),u])}}});export{b as __pageData,y as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as o,y as i,R as r,S as n,f as l,g as d,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=d("p",null,"Luke Twyman - project concept, design & Ul. whitevinyldesign.com @whitevinylUK Luke Phillips - audio development & musical interaction. femurdesign.com @lukephills Edward Silverton - client & server architecture & core development. edsilv.com @edsilv",-1),b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":39,"clicks":19,"public":false,"is_new":false,"stats":[35]},"relativePath":"blokdust/index.md","filePath":"blokdust/index.md","lastUpdated":0}'),p={name:"blokdust/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:_}=s();return(h,f)=>{const t=a;return c(),o("div",null,[i(t,r(n(l(e))),null,16),u])}}});export{b as __pageData,y as default}; diff --git a/assets/cardboard-synth_index.md.9HVAVqO5.js b/assets/cardboard-synth_index.md.lsU4RynP.js similarity index 83% rename from assets/cardboard-synth_index.md.9HVAVqO5.js rename to assets/cardboard-synth_index.md.lsU4RynP.js index 3907315e..275ee7b5 100644 --- a/assets/cardboard-synth_index.md.9HVAVqO5.js +++ b/assets/cardboard-synth_index.md.lsU4RynP.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as n,R as o,S as c,f as i,b as d}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":37,"clicks":184,"public":false,"is_new":false,"stats":[33]},"relativePath":"cardboard-synth/index.md","filePath":"cardboard-synth/index.md","lastUpdated":0}'),l={name:"cardboard-synth/index.md"},w=Object.assign(l,{setup(p){const{params:a,frontmatter:m}=r();return(h,u)=>{const t=e;return d(),s("div",null,[n(t,o(c(i(a))),null,16)])}}});export{y as __pageData,w as default}; +import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as o,S as c,f as i,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":37,"clicks":184,"public":false,"is_new":false,"stats":[33]},"relativePath":"cardboard-synth/index.md","filePath":"cardboard-synth/index.md","lastUpdated":0}'),l={name:"cardboard-synth/index.md"},w=Object.assign(l,{setup(p){const{params:a,frontmatter:m}=r();return(h,u)=>{const t=e;return d(),s("div",null,[n(t,o(c(i(a))),null,16)])}}});export{y as __pageData,w as default}; diff --git a/assets/cardboard-synth_index.md.9HVAVqO5.lean.js b/assets/cardboard-synth_index.md.lsU4RynP.lean.js similarity index 83% rename from assets/cardboard-synth_index.md.9HVAVqO5.lean.js rename to assets/cardboard-synth_index.md.lsU4RynP.lean.js index 3907315e..275ee7b5 100644 --- a/assets/cardboard-synth_index.md.9HVAVqO5.lean.js +++ b/assets/cardboard-synth_index.md.lsU4RynP.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as n,R as o,S as c,f as i,b as d}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":37,"clicks":184,"public":false,"is_new":false,"stats":[33]},"relativePath":"cardboard-synth/index.md","filePath":"cardboard-synth/index.md","lastUpdated":0}'),l={name:"cardboard-synth/index.md"},w=Object.assign(l,{setup(p){const{params:a,frontmatter:m}=r();return(h,u)=>{const t=e;return d(),s("div",null,[n(t,o(c(i(a))),null,16)])}}});export{y as __pageData,w as default}; +import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as o,S as c,f as i,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":37,"clicks":184,"public":false,"is_new":false,"stats":[33]},"relativePath":"cardboard-synth/index.md","filePath":"cardboard-synth/index.md","lastUpdated":0}'),l={name:"cardboard-synth/index.md"},w=Object.assign(l,{setup(p){const{params:a,frontmatter:m}=r();return(h,u)=>{const t=e;return d(),s("div",null,[n(t,o(c(i(a))),null,16)])}}});export{y as __pageData,w as default}; diff --git a/assets/chrome-lab_index.md.-7aR30bi.js b/assets/chrome-lab_index.md.BvBA9nEa.js similarity index 94% rename from assets/chrome-lab_index.md.-7aR30bi.js rename to assets/chrome-lab_index.md.BvBA9nEa.js index ba3fbaff..3d77713a 100644 --- a/assets/chrome-lab_index.md.-7aR30bi.js +++ b/assets/chrome-lab_index.md.BvBA9nEa.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s as o,d as s,y as n,R as r,S as i,f as c,B as h,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const u=h('

What can it be used for? ​

Many teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.

Can I use it to make my own songs? ​

Yes. Check out the Song Maker experiment, which lets you make and share your own songs.

Do I need to make an account? ​

Nope. Just open any experiment and start playing.

How were these built? ​

All our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on Github.

What devices do these work on? ​

You can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.

',10),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},"relativePath":"chrome-lab/index.md","filePath":"chrome-lab/index.md","lastUpdated":0}'),m={name:"chrome-lab/index.md"},x=Object.assign(m,{setup(d){const{params:e,frontmatter:b}=o();return(p,f)=>{const a=t;return l(),s("div",null,[n(a,r(i(c(e))),null,16),u])}}});export{y as __pageData,x as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as s,y as n,R as r,S as i,f as c,B as h,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=h('

What can it be used for? ​

Many teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.

Can I use it to make my own songs? ​

Yes. Check out the Song Maker experiment, which lets you make and share your own songs.

Do I need to make an account? ​

Nope. Just open any experiment and start playing.

How were these built? ​

All our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on Github.

What devices do these work on? ​

You can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.

',10),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},"relativePath":"chrome-lab/index.md","filePath":"chrome-lab/index.md","lastUpdated":0}'),m={name:"chrome-lab/index.md"},x=Object.assign(m,{setup(d){const{params:e,frontmatter:b}=o();return(p,f)=>{const a=t;return l(),s("div",null,[n(a,r(i(c(e))),null,16),u])}}});export{y as __pageData,x as default}; diff --git a/assets/chrome-lab_index.md.-7aR30bi.lean.js b/assets/chrome-lab_index.md.BvBA9nEa.lean.js similarity index 84% rename from assets/chrome-lab_index.md.-7aR30bi.lean.js rename to assets/chrome-lab_index.md.BvBA9nEa.lean.js index e6e5eaec..aa0d4f36 100644 --- a/assets/chrome-lab_index.md.-7aR30bi.lean.js +++ b/assets/chrome-lab_index.md.BvBA9nEa.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s as o,d as s,y as n,R as r,S as i,f as c,B as h,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const u=h("",10),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},"relativePath":"chrome-lab/index.md","filePath":"chrome-lab/index.md","lastUpdated":0}'),m={name:"chrome-lab/index.md"},x=Object.assign(m,{setup(d){const{params:e,frontmatter:b}=o();return(p,f)=>{const a=t;return l(),s("div",null,[n(a,r(i(c(e))),null,16),u])}}});export{y as __pageData,x as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as s,y as n,R as r,S as i,f as c,B as h,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=h("",10),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},"relativePath":"chrome-lab/index.md","filePath":"chrome-lab/index.md","lastUpdated":0}'),m={name:"chrome-lab/index.md"},x=Object.assign(m,{setup(d){const{params:e,frontmatter:b}=o();return(p,f)=>{const a=t;return l(),s("div",null,[n(a,r(i(c(e))),null,16),u])}}});export{y as __pageData,x as default}; diff --git a/assets/chunks/SynthPage.2tYMmOk8.js b/assets/chunks/SynthPage.DHgkhPru.js similarity index 95% rename from assets/chunks/SynthPage.2tYMmOk8.js rename to assets/chunks/SynthPage.DHgkhPru.js index b2bce270..f85cbaed 100644 --- a/assets/chunks/SynthPage.2tYMmOk8.js +++ b/assets/chunks/SynthPage.DHgkhPru.js @@ -1 +1 @@ -import{u as b,b as S,_ as w}from"./useClicks.CJYHtBYH.js";import{r as h,w as p,o as _,b as l,d as i,g as t,y as g,z as m,e as B,v as C,T as N,n as L,J as z,t as s,A as V,h as v,K as D,q as o,f as F,I,L as T,i as $}from"./framework.HWRfC0Fd.js";const A={class:"flex flex-col gap-4 bg-light-300 dark-bg-dark-300 rounded-lg shadow-xl overflow-hidden mx-auto"},q=["title","src"],E={class:"flex flex-col p-4 gap-1 bottom-0 bg-light-100 dark-bg-dark-200 w-full max-w-180 mx-auto mb-12 relative"},J={class:"text-xl flex items-center gap-4"},K={class:"font-bold"},M=t("div",{class:"flex-auto"},null,-1),P={class:"p-0 flex gap-4"},j=["href"],G={class:"px-2 py-0 bg-light-800 dark-bg-dark-800 rounded-xl transition text-sm select-none text-center z-200 flex items-center gap-1 opacity-40 hover-opacity-100 transition"},H=t("div",{class:"i-la-eye"},null,-1),O={key:0,class:"flex-1 flex items-end flex flex-wrap gap-2"},Q={key:1,class:"p-0"},R={class:"mt-4"},Y={__name:"SynthPage",props:{title:{type:String,default:""},description:{type:String,default:""},author:{type:String,default:""},author_link:{type:String,default:""},cover:{type:String,default:""},slug:{type:String,default:""},url:{type:String,default:""},tags:{type:Array,default:[]},archive:{type:Boolean,default:!1},archive_link:{type:String,default:""},iframe:{type:Boolean,default:!1},clicks:{type:Number,default:0},id:{type:Number,default:0}},setup(e){const n=e,r=h(!1);function y(a){a.timeStamp<5e3&&(r.value=!0)}const{clickSynth:k,clicksCount:d}=b(n.id);p(()=>n.clicks,a=>d.value=a,{immediate:!0});const c=h(0);return _(async()=>{await k();let a=await S("synth_stats",n.id);c.value=(a==null?void 0:a.stars)||0}),(a,U)=>{var u;const x=w;return l(),i("div",A,[t("div",{class:L(["p-0l h-70vh h-70svh bg-cover bg-center",{"animate-pulse":e.iframe&&!r.value}]),style:z({backgroundImage:`url(/cover/${e.slug}.webp)`})},[g(N,{name:"fade"},{default:m(()=>[B(t("iframe",{class:"w-full h-70vh h-70svh bg-light-100 dark-bg-dark-800",allow:"midi *",onLoad:y,title:e.title,src:e.archive?e.archive_link:e.url},null,40,q),[[C,r.value]])]),_:1})],6),t("div",E,[t("div",J,[t("div",K,s(e.title),1),e.author?(l(),V(D(e.author_link?"a":"div"),{key:0,class:"text-lg font-300",target:"_blank",href:e.author_link},{default:m(()=>[v("by "+s(e.author),1)]),_:1},8,["href"])):o("",!0),M,g(x,{id:e.id,stars:c.value},null,8,["id","stars"])]),t("div",P,[t("a",{class:"my-2 font-mono text-sm",href:e.url,target:"_blank"},s(e.url),9,j),t("div",G,[v(s(F(d)),1),H])]),((u=e.tags)==null?void 0:u.length)>0?(l(),i("div",O,[(l(!0),i(I,null,T(e.tags,f=>(l(),i("div",{class:"px-2 py-1 text-sm bg-light-800 dark-bg-dark-500 rounded-lg",key:f},s(f),1))),128))])):o("",!0),e.description?(l(),i("div",Q,s(e.description),1)):o("",!0),t("div",R,[$(a.$slots,"default")])])])}}};export{Y as _}; +import{u as b,b as S,_ as w}from"./useClicks.DKflLG6D.js";import{r as h,w as p,o as _,b as l,d as i,g as t,y as g,z as m,e as B,v as C,T as N,n as L,J as z,t as s,A as V,h as v,K as D,q as o,f as F,I,L as T,i as $}from"./framework.DA3bj7zI.js";const A={class:"flex flex-col gap-4 bg-light-300 dark-bg-dark-300 rounded-lg shadow-xl overflow-hidden mx-auto"},q=["title","src"],E={class:"flex flex-col p-4 gap-1 bottom-0 bg-light-100 dark-bg-dark-200 w-full max-w-180 mx-auto mb-12 relative"},J={class:"text-xl flex items-center gap-4"},K={class:"font-bold"},M=t("div",{class:"flex-auto"},null,-1),P={class:"p-0 flex gap-4"},j=["href"],G={class:"px-2 py-0 bg-light-800 dark-bg-dark-800 rounded-xl transition text-sm select-none text-center z-200 flex items-center gap-1 opacity-40 hover-opacity-100 transition"},H=t("div",{class:"i-la-eye"},null,-1),O={key:0,class:"flex-1 flex items-end flex flex-wrap gap-2"},Q={key:1,class:"p-0"},R={class:"mt-4"},Y={__name:"SynthPage",props:{title:{type:String,default:""},description:{type:String,default:""},author:{type:String,default:""},author_link:{type:String,default:""},cover:{type:String,default:""},slug:{type:String,default:""},url:{type:String,default:""},tags:{type:Array,default:[]},archive:{type:Boolean,default:!1},archive_link:{type:String,default:""},iframe:{type:Boolean,default:!1},clicks:{type:Number,default:0},id:{type:Number,default:0}},setup(e){const n=e,r=h(!1);function y(a){a.timeStamp<5e3&&(r.value=!0)}const{clickSynth:k,clicksCount:d}=b(n.id);p(()=>n.clicks,a=>d.value=a,{immediate:!0});const c=h(0);return _(async()=>{await k();let a=await S("synth_stats",n.id);c.value=(a==null?void 0:a.stars)||0}),(a,U)=>{var u;const x=w;return l(),i("div",A,[t("div",{class:L(["p-0l h-70vh h-70svh bg-cover bg-center",{"animate-pulse":e.iframe&&!r.value}]),style:z({backgroundImage:`url(/cover/${e.slug}.webp)`})},[g(N,{name:"fade"},{default:m(()=>[B(t("iframe",{class:"w-full h-70vh h-70svh bg-light-100 dark-bg-dark-800",allow:"midi *",onLoad:y,title:e.title,src:e.archive?e.archive_link:e.url},null,40,q),[[C,r.value]])]),_:1})],6),t("div",E,[t("div",J,[t("div",K,s(e.title),1),e.author?(l(),V(D(e.author_link?"a":"div"),{key:0,class:"text-lg font-300",target:"_blank",href:e.author_link},{default:m(()=>[v("by "+s(e.author),1)]),_:1},8,["href"])):o("",!0),M,g(x,{id:e.id,stars:c.value},null,8,["id","stars"])]),t("div",P,[t("a",{class:"my-2 font-mono text-sm",href:e.url,target:"_blank"},s(e.url),9,j),t("div",G,[v(s(F(d)),1),H])]),((u=e.tags)==null?void 0:u.length)>0?(l(),i("div",O,[(l(!0),i(I,null,T(e.tags,f=>(l(),i("div",{class:"px-2 py-1 text-sm bg-light-800 dark-bg-dark-500 rounded-lg",key:f},s(f),1))),128))])):o("",!0),e.description?(l(),i("div",Q,s(e.description),1)):o("",!0),t("div",R,[$(a.$slots,"default")])])])}}};export{Y as _}; diff --git a/assets/chunks/framework.DA3bj7zI.js b/assets/chunks/framework.DA3bj7zI.js new file mode 100644 index 00000000..f379dce4 --- /dev/null +++ b/assets/chunks/framework.DA3bj7zI.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Es(e,t){const n=new Set(e.split(","));return t?s=>n.has(s.toLowerCase()):s=>n.has(s)}const ee={},mt=[],Se=()=>{},vo=()=>!1,qt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Cs=e=>e.startsWith("onUpdate:"),re=Object.assign,Ss=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},wo=Object.prototype.hasOwnProperty,Y=(e,t)=>wo.call(e,t),K=Array.isArray,yt=e=>xn(e)==="[object Map]",kr=e=>xn(e)==="[object Set]",q=e=>typeof e=="function",ne=e=>typeof e=="string",At=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Kr=e=>(Z(e)||q(e))&&q(e.then)&&q(e.catch),Wr=Object.prototype.toString,xn=e=>Wr.call(e),Eo=e=>xn(e).slice(8,-1),qr=e=>xn(e)==="[object Object]",xs=e=>ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=Es(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Tn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Co=/-(\w)/g,Fe=Tn(e=>e.replace(Co,(t,n)=>n?n.toUpperCase():"")),So=/\B([A-Z])/g,ut=Tn(e=>e.replace(So,"-$1").toLowerCase()),An=Tn(e=>e.charAt(0).toUpperCase()+e.slice(1)),Wn=Tn(e=>e?`on${An(e)}`:""),Qe=(e,t)=>!Object.is(e,t),un=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},us=e=>{const t=parseFloat(e);return isNaN(t)?e:t},xo=e=>{const t=ne(e)?Number(e):NaN;return isNaN(t)?e:t};let Xs;const Gr=()=>Xs||(Xs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Rn(e){if(K(e)){const t={};for(let n=0;n{if(n){const s=n.split(Ao);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function On(e){let t="";if(ne(e))t=e;else if(K(e))for(let n=0;nne(e)?e:e==null?"":K(e)||Z(e)&&(e.toString===Wr||!q(e.toString))?JSON.stringify(e,Xr,2):String(e),Xr=(e,t)=>t&&t.__v_isRef?Xr(e,t.value):yt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[qn(s,i)+" =>"]=r,n),{})}:kr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>qn(n))}:At(t)?qn(t):Z(t)&&!K(t)&&!qr(t)?String(t):t,qn=(e,t="")=>{var n;return At(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let be;class Io{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=be;try{return be=this,t()}finally{be=n}}}on(){be=this}off(){be=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),dt()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Je,n=ot;try{return Je=!0,ot=this,this._runnings++,Js(this),this.fn()}finally{Ys(this),this._runnings--,ot=n,Je=t}}stop(){var t;this.active&&(Js(this),Ys(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Fo(e){return e.value}function Js(e){e._trackId++,e._depsLength=0}function Ys(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},pn=new WeakMap,lt=Symbol(""),hs=Symbol("");function ye(e,t,n){if(Je&&ot){let s=pn.get(e);s||pn.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=ti(()=>s.delete(n))),Zr(ot,r)}}function Ve(e,t,n,s,r,i){const o=pn.get(e);if(!o)return;let l=[];if(t==="clear")l=[...o.values()];else if(n==="length"&&K(e)){const c=Number(s);o.forEach((a,u)=>{(u==="length"||!At(u)&&u>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":K(e)?xs(n)&&l.push(o.get("length")):(l.push(o.get(lt)),yt(e)&&l.push(o.get(hs)));break;case"delete":K(e)||(l.push(o.get(lt)),yt(e)&&l.push(o.get(hs)));break;case"set":yt(e)&&l.push(o.get(lt));break}As();for(const c of l)c&&ei(c,4);Rs()}function $o(e,t){var n;return(n=pn.get(e))==null?void 0:n.get(t)}const jo=Es("__proto__,__v_isRef,__isVue"),ni=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(At)),Qs=Ho();function Ho(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=J(this);for(let i=0,o=this.length;i{e[t]=function(...n){ft(),As();const s=J(this)[t].apply(this,n);return Rs(),dt(),s}}),e}function Vo(e){const t=J(this);return ye(t,"has",e),t.hasOwnProperty(e)}class si{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Qo:li:i?oi:ii).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=K(t);if(!r){if(o&&Y(Qs,n))return Reflect.get(Qs,n,s);if(n==="hasOwnProperty")return Vo}const l=Reflect.get(t,n,s);return(At(n)?ni.has(n):jo(n))||(r||ye(t,"get",n),i)?l:de(l)?o&&xs(n)?l:l.value:Z(l)?r?Pn(l):Ct(l):l}}class ri extends si{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=St(i);if(!gn(s)&&!St(s)&&(i=J(i),s=J(s)),!K(t)&&de(i)&&!de(s))return c?!1:(i.value=s,!0)}const o=K(t)&&xs(n)?Number(n)e,Ln=e=>Reflect.getPrototypeOf(e);function Yt(e,t,n=!1,s=!1){e=e.__v_raw;const r=J(e),i=J(t);n||(Qe(t,i)&&ye(r,"get",t),ye(r,"get",i));const{has:o}=Ln(r),l=s?Os:n?Is:Dt;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Qt(e,t=!1){const n=this.__v_raw,s=J(n),r=J(e);return t||(Qe(e,r)&&ye(s,"has",e),ye(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Zt(e,t=!1){return e=e.__v_raw,!t&&ye(J(e),"iterate",lt),Reflect.get(e,"size",e)}function Zs(e){e=J(e);const t=J(this);return Ln(t).has.call(t,e)||(t.add(e),Ve(t,"add",e,e)),this}function er(e,t){t=J(t);const n=J(this),{has:s,get:r}=Ln(n);let i=s.call(n,e);i||(e=J(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?Qe(t,o)&&Ve(n,"set",e,t):Ve(n,"add",e,t),this}function tr(e){const t=J(this),{has:n,get:s}=Ln(t);let r=n.call(t,e);r||(e=J(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&Ve(t,"delete",e,void 0),i}function nr(){const e=J(this),t=e.size!==0,n=e.clear();return t&&Ve(e,"clear",void 0,void 0),n}function en(e,t){return function(s,r){const i=this,o=i.__v_raw,l=J(o),c=t?Os:e?Is:Dt;return!e&&ye(l,"iterate",lt),o.forEach((a,u)=>s.call(r,c(a),c(u),i))}}function tn(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=yt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,a=r[e](...s),u=n?Os:t?Is:Dt;return!t&&ye(i,"iterate",c?hs:lt),{next(){const{value:h,done:g}=a.next();return g?{value:h,done:g}:{value:l?[u(h[0]),u(h[1])]:u(h),done:g}},[Symbol.iterator](){return this}}}}function Be(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ko(){const e={get(i){return Yt(this,i)},get size(){return Zt(this)},has:Qt,add:Zs,set:er,delete:tr,clear:nr,forEach:en(!1,!1)},t={get(i){return Yt(this,i,!1,!0)},get size(){return Zt(this)},has:Qt,add:Zs,set:er,delete:tr,clear:nr,forEach:en(!1,!0)},n={get(i){return Yt(this,i,!0)},get size(){return Zt(this,!0)},has(i){return Qt.call(this,i,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:en(!0,!1)},s={get(i){return Yt(this,i,!0,!0)},get size(){return Zt(this,!0)},has(i){return Qt.call(this,i,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:en(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=tn(i,!1,!1),n[i]=tn(i,!0,!1),t[i]=tn(i,!1,!0),s[i]=tn(i,!0,!0)}),[e,n,t,s]}const[Wo,qo,Go,zo]=Ko();function Ls(e,t){const n=t?e?zo:Go:e?qo:Wo;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Y(n,r)&&r in s?n:s,r,i)}const Xo={get:Ls(!1,!1)},Jo={get:Ls(!1,!0)},Yo={get:Ls(!0,!1)},ii=new WeakMap,oi=new WeakMap,li=new WeakMap,Qo=new WeakMap;function Zo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function el(e){return e.__v_skip||!Object.isExtensible(e)?0:Zo(Eo(e))}function Ct(e){return St(e)?e:Ps(e,!1,Uo,Xo,ii)}function tl(e){return Ps(e,!1,ko,Jo,oi)}function Pn(e){return Ps(e,!0,Bo,Yo,li)}function Ps(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=el(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function bt(e){return St(e)?bt(e.__v_raw):!!(e&&e.__v_isReactive)}function St(e){return!!(e&&e.__v_isReadonly)}function gn(e){return!!(e&&e.__v_isShallow)}function ci(e){return bt(e)||St(e)}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Mt(e){return Object.isExtensible(e)&&hn(e,"__v_skip",!0),e}const Dt=e=>Z(e)?Ct(e):e,Is=e=>Z(e)?Pn(e):e;class ai{constructor(t,n,s,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ts(()=>t(this._value),()=>Nt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Qe(t._value,t._value=t.effect.run())&&Nt(t,4),Ms(t),t.effect._dirtyLevel>=2&&Nt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function nl(e,t,n=!1){let s,r;const i=q(e);return i?(s=e,r=Se):(s=e.get,r=e.set),new ai(s,r,i||!r,n)}function Ms(e){var t;Je&&ot&&(e=J(e),Zr(ot,(t=e.dep)!=null?t:e.dep=ti(()=>e.dep=void 0,e instanceof ai?e:void 0)))}function Nt(e,t=4,n){e=J(e);const s=e.dep;s&&ei(s,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function Te(e){return fi(e,!1)}function ui(e){return fi(e,!0)}function fi(e,t){return de(e)?e:new sl(e,t)}class sl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Dt(t)}get value(){return Ms(this),this._value}set value(t){const n=this.__v_isShallow||gn(t)||St(t);t=n?t:J(t),Qe(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Dt(t),Nt(this,4))}}function di(e){return de(e)?e.value:e}const rl={get:(e,t,n)=>di(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return de(r)&&!de(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function hi(e){return bt(e)?e:new Proxy(e,rl)}class il{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>Ms(this),()=>Nt(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function ol(e){return new il(e)}class ll{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return $o(J(this._object),this._key)}}class cl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function al(e,t,n){return de(e)?e:q(e)?new cl(e):Z(e)&&arguments.length>1?ul(e,t,n):Te(e)}function ul(e,t,n){const s=e[t];return de(s)?s:new ll(e,t,n)}/** +* @vue/runtime-core v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ye(e,t,n,s){try{return s?e(...s):e()}catch(r){In(r,t,n)}}function xe(e,t,n,s){if(q(e)){const i=Ye(e,t,n,s);return i&&Kr(i)&&i.catch(o=>{In(o,t,n)}),i}const r=[];for(let i=0;i>>1,r=he[s],i=Bt(r);iNe&&he.splice(t,1)}function pl(e){K(e)?vt.push(...e):(!qe||!qe.includes(e,e.allowRecurse?st+1:st))&&vt.push(e),gi()}function sr(e,t,n=Ut?Ne+1:0){for(;nBt(n)-Bt(s));if(vt.length=0,qe){qe.push(...t);return}for(qe=t,st=0;ste.id==null?1/0:e.id,gl=(e,t)=>{const n=Bt(e)-Bt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function mi(e){ps=!1,Ut=!0,he.sort(gl);try{for(Ne=0;Nene(_)?_.trim():_)),h&&(r=n.map(us))}let l,c=s[l=Wn(t)]||s[l=Wn(Fe(t))];!c&&i&&(c=s[l=Wn(ut(t))]),c&&xe(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,xe(a,e,6,r)}}function yi(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=a=>{const u=yi(a,t,!0);u&&(l=!0,re(o,u))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(Z(e)&&s.set(e,null),null):(K(i)?i.forEach(c=>o[c]=null):re(o,i),Z(e)&&s.set(e,o),o)}function Mn(e,t){return!e||!qt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,ut(t))||Y(e,t))}let le=null,Nn=null;function yn(e){const t=le;return le=e,Nn=e&&e.type.__scopeId||null,t}function eu(e){Nn=e}function tu(){Nn=null}function yl(e,t=le,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&gr(-1);const i=yn(t);let o;try{o=e(...r)}finally{yn(i),s._d&&gr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Gn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[o],slots:l,attrs:c,emit:a,render:u,renderCache:h,data:g,setupState:_,ctx:T,inheritAttrs:P}=e;let F,N;const $=yn(e);try{if(n.shapeFlag&4){const y=r||s,M=y;F=Re(u.call(M,y,h,i,_,g,T)),N=c}else{const y=t;F=Re(y.length>1?y(i,{attrs:c,slots:l,emit:a}):y(i,null)),N=t.props?c:_l(c)}}catch(y){Ht.length=0,In(y,e,1),F=ae(ve)}let p=F;if(N&&P!==!1){const y=Object.keys(N),{shapeFlag:M}=p;y.length&&M&7&&(o&&y.some(Cs)&&(N=bl(N,o)),p=Ze(p,N))}return n.dirs&&(p=Ze(p),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&(p.transition=n.transition),F=p,yn($),F}const _l=e=>{let t;for(const n in e)(n==="class"||n==="style"||qt(n))&&((t||(t={}))[n]=e[n]);return t},bl=(e,t)=>{const n={};for(const s in e)(!Cs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function vl(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,a=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?rr(s,o,a):!!o;if(c&8){const u=t.dynamicProps;for(let h=0;he.__isSuspense;function vi(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):pl(e)}const Cl=Symbol.for("v-scx"),Sl=()=>Et(Cl);function wi(e,t){return js(e,null,t)}const nn={};function Le(e,t,n){return js(e,t,n)}function js(e,t,{immediate:n,deep:s,flush:r,once:i,onTrack:o,onTrigger:l}=ee){if(t&&i){const O=t;t=(...D)=>{O(...D),M()}}const c=fe,a=O=>s===!0?O:it(O,s===!1?1:void 0);let u,h=!1,g=!1;if(de(e)?(u=()=>e.value,h=gn(e)):bt(e)?(u=()=>a(e),h=!0):K(e)?(g=!0,h=e.some(O=>bt(O)||gn(O)),u=()=>e.map(O=>{if(de(O))return O.value;if(bt(O))return a(O);if(q(O))return Ye(O,c,2)})):q(e)?t?u=()=>Ye(e,c,2):u=()=>(_&&_(),xe(e,c,3,[T])):u=Se,t&&s){const O=u;u=()=>it(O())}let _,T=O=>{_=p.onStop=()=>{Ye(O,c,4),_=p.onStop=void 0}},P;if(Vn)if(T=Se,t?n&&xe(t,c,3,[u(),g?[]:void 0,T]):u(),r==="sync"){const O=Sl();P=O.__watcherHandles||(O.__watcherHandles=[])}else return Se;let F=g?new Array(e.length).fill(nn):nn;const N=()=>{if(!(!p.active||!p.dirty))if(t){const O=p.run();(s||h||(g?O.some((D,R)=>Qe(D,F[R])):Qe(O,F)))&&(_&&_(),xe(t,c,3,[O,F===nn?void 0:g&&F[0]===nn?[]:F,T]),F=O)}else p.run()};N.allowRecurse=!!t;let $;r==="sync"?$=N:r==="post"?$=()=>me(N,c&&c.suspense):(N.pre=!0,c&&(N.id=c.uid),$=()=>Fs(N));const p=new Ts(u,Se,$),y=Jr(),M=()=>{p.stop(),y&&Ss(y.effects,p)};return t?n?N():F=p.run():r==="post"?me(p.run.bind(p),c&&c.suspense):p.run(),P&&P.push(M),M}function xl(e,t,n){const s=this.proxy,r=ne(e)?e.includes(".")?Ei(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=zt(this),l=js(r,i.bind(s),n);return o(),l}function Ei(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r0){if(n>=t)return e;n++}if(s=s||new Set,s.has(e))return e;if(s.add(e),de(e))it(e.value,t,n,s);else if(K(e))for(let r=0;r{it(r,t,n,s)});else if(qr(e))for(const r in e)it(e[r],t,n,s);return e}function ru(e,t){if(le===null)return e;const n=Dn(le)||le.proxy,s=e.dirs||(e.dirs=[]);for(let r=0;r{e.isMounted=!0}),Oi(()=>{e.isUnmounting=!0}),e}const we=[Function,Array],Si={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:we,onEnter:we,onAfterEnter:we,onEnterCancelled:we,onBeforeLeave:we,onLeave:we,onAfterLeave:we,onLeaveCancelled:we,onBeforeAppear:we,onAppear:we,onAfterAppear:we,onAppearCancelled:we},Tl={name:"BaseTransition",props:Si,setup(e,{slots:t}){const n=Hn(),s=Ci();return()=>{const r=t.default&&Hs(t.default(),!0);if(!r||!r.length)return;let i=r[0];if(r.length>1){for(const g of r)if(g.type!==ve){i=g;break}}const o=J(e),{mode:l}=o;if(s.isLeaving)return zn(i);const c=or(i);if(!c)return zn(i);const a=kt(c,o,s,n);Kt(c,a);const u=n.subTree,h=u&&or(u);if(h&&h.type!==ve&&!rt(c,h)){const g=kt(h,o,s,n);if(Kt(h,g),l==="out-in")return s.isLeaving=!0,g.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},zn(i);l==="in-out"&&c.type!==ve&&(g.delayLeave=(_,T,P)=>{const F=xi(s,h);F[String(h.key)]=h,_[Ge]=()=>{T(),_[Ge]=void 0,delete a.delayedLeave},a.delayedLeave=P})}return i}}},Al=Tl;function xi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function kt(e,t,n,s){const{appear:r,mode:i,persisted:o=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:u,onBeforeLeave:h,onLeave:g,onAfterLeave:_,onLeaveCancelled:T,onBeforeAppear:P,onAppear:F,onAfterAppear:N,onAppearCancelled:$}=t,p=String(e.key),y=xi(n,e),M=(R,B)=>{R&&xe(R,s,9,B)},O=(R,B)=>{const E=B[1];M(R,B),K(R)?R.every(k=>k.length<=1)&&E():R.length<=1&&E()},D={mode:i,persisted:o,beforeEnter(R){let B=l;if(!n.isMounted)if(r)B=P||l;else return;R[Ge]&&R[Ge](!0);const E=y[p];E&&rt(e,E)&&E.el[Ge]&&E.el[Ge](),M(B,[R])},enter(R){let B=c,E=a,k=u;if(!n.isMounted)if(r)B=F||c,E=N||a,k=$||u;else return;let x=!1;const G=R[sn]=ie=>{x||(x=!0,ie?M(k,[R]):M(E,[R]),D.delayedLeave&&D.delayedLeave(),R[sn]=void 0)};B?O(B,[R,G]):G()},leave(R,B){const E=String(e.key);if(R[sn]&&R[sn](!0),n.isUnmounting)return B();M(h,[R]);let k=!1;const x=R[Ge]=G=>{k||(k=!0,B(),G?M(T,[R]):M(_,[R]),R[Ge]=void 0,y[E]===e&&delete y[E])};y[E]=e,g?O(g,[R,x]):x()},clone(R){return kt(R,t,n,s)}};return D}function zn(e){if(Fn(e))return e=Ze(e),e.children=null,e}function or(e){return Fn(e)?e.children?e.children[0]:void 0:e}function Kt(e,t){e.shapeFlag&6&&e.component?Kt(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Hs(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader,Fn=e=>e.type.__isKeepAlive;function Rl(e,t){Ai(e,"a",t)}function Ol(e,t){Ai(e,"da",t)}function Ai(e,t,n=fe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if($n(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Fn(r.parent.vnode)&&Ll(s,t,n,r),r=r.parent}}function Ll(e,t,n,s){const r=$n(t,e,s,!0);Vs(()=>{Ss(s[t],r)},n)}function $n(e,t,n=fe,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;ft();const l=zt(n),c=xe(t,n,e,o);return l(),dt(),c});return s?r.unshift(i):r.push(i),i}}const Ue=e=>(t,n=fe)=>(!Vn||e==="sp")&&$n(e,(...s)=>t(...s),n),Pl=Ue("bm"),Rt=Ue("m"),Il=Ue("bu"),Ri=Ue("u"),Oi=Ue("bum"),Vs=Ue("um"),Ml=Ue("sp"),Nl=Ue("rtg"),Fl=Ue("rtc");function $l(e,t=fe){$n("ec",e,t)}function iu(e,t,n,s){let r;const i=n&&n[s];if(K(e)||ne(e)){r=new Array(e.length);for(let o=0,l=e.length;ot(o,l,void 0,i&&i[l]));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;lvn(t)?!(t.type===ve||t.type===ge&&!Li(t.children)):!0)?e:null}const gs=e=>e?Gi(e)?Dn(e)||e.proxy:gs(e.parent):null,Ft=re(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>gs(e.parent),$root:e=>gs(e.root),$emit:e=>e.emit,$options:e=>Ds(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Fs(e.update)}),$nextTick:e=>e.n||(e.n=Gt.bind(e.proxy)),$watch:e=>xl.bind(e)}),Xn=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),jl={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const _=o[t];if(_!==void 0)switch(_){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Xn(s,t))return o[t]=1,s[t];if(r!==ee&&Y(r,t))return o[t]=2,r[t];if((a=e.propsOptions[0])&&Y(a,t))return o[t]=3,i[t];if(n!==ee&&Y(n,t))return o[t]=4,n[t];ms&&(o[t]=0)}}const u=Ft[t];let h,g;if(u)return t==="$attrs"&&ye(e,"get",t),u(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&Y(n,t))return o[t]=4,n[t];if(g=c.config.globalProperties,Y(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Xn(r,t)?(r[t]=n,!0):s!==ee&&Y(s,t)?(s[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==ee&&Y(e,o)||Xn(t,o)||(l=i[0])&&Y(l,o)||Y(s,o)||Y(Ft,o)||Y(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function lr(e){return K(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ms=!0;function Hl(e){const t=Ds(e),n=e.proxy,s=e.ctx;ms=!1,t.beforeCreate&&cr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:a,created:u,beforeMount:h,mounted:g,beforeUpdate:_,updated:T,activated:P,deactivated:F,beforeDestroy:N,beforeUnmount:$,destroyed:p,unmounted:y,render:M,renderTracked:O,renderTriggered:D,errorCaptured:R,serverPrefetch:B,expose:E,inheritAttrs:k,components:x,directives:G,filters:ie}=t;if(a&&Vl(a,s,null),o)for(const X in o){const H=o[X];q(H)&&(s[X]=H.bind(n))}if(r){const X=r.call(n,n);Z(X)&&(e.data=Ct(X))}if(ms=!0,i)for(const X in i){const H=i[X],$e=q(H)?H.bind(n,n):q(H.get)?H.get.bind(n,n):Se,Xt=!q(H)&&q(H.set)?H.set.bind(n):Se,et=oe({get:$e,set:Xt});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>et.value,set:Pe=>et.value=Pe})}if(l)for(const X in l)Pi(l[X],s,n,X);if(c){const X=q(c)?c.call(n):c;Reflect.ownKeys(X).forEach(H=>{Wl(H,X[H])})}u&&cr(u,e,"c");function V(X,H){K(H)?H.forEach($e=>X($e.bind(n))):H&&X(H.bind(n))}if(V(Pl,h),V(Rt,g),V(Il,_),V(Ri,T),V(Rl,P),V(Ol,F),V($l,R),V(Fl,O),V(Nl,D),V(Oi,$),V(Vs,y),V(Ml,B),K(E))if(E.length){const X=e.exposed||(e.exposed={});E.forEach(H=>{Object.defineProperty(X,H,{get:()=>n[H],set:$e=>n[H]=$e})})}else e.exposed||(e.exposed={});M&&e.render===Se&&(e.render=M),k!=null&&(e.inheritAttrs=k),x&&(e.components=x),G&&(e.directives=G)}function Vl(e,t,n=Se){K(e)&&(e=ys(e));for(const s in e){const r=e[s];let i;Z(r)?"default"in r?i=Et(r.from||s,r.default,!0):i=Et(r.from||s):i=Et(r),de(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function cr(e,t,n){xe(K(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Pi(e,t,n,s){const r=s.includes(".")?Ei(n,s):()=>n[s];if(ne(e)){const i=t[e];q(i)&&Le(r,i)}else if(q(e))Le(r,e.bind(n));else if(Z(e))if(K(e))e.forEach(i=>Pi(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Le(r,i,e)}}function Ds(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>_n(c,a,o,!0)),_n(c,t,o)),Z(t)&&i.set(t,c),c}function _n(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&_n(e,i,n,!0),r&&r.forEach(o=>_n(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Dl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Dl={data:ar,props:ur,emits:ur,methods:It,computed:It,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:It,directives:It,watch:Bl,provide:ar,inject:Ul};function ar(e,t){return t?e?function(){return re(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function Ul(e,t){return It(ys(e),ys(t))}function ys(e){if(K(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}function ql(e,t,n,s=!1){const r={},i={};hn(i,jn,1),e.propsDefaults=Object.create(null),Mi(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:tl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Gl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let a=!1;if((s||o>0)&&!(o&16)){if(o&8){const u=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[g,_]=Ni(h,t,!0);re(o,g),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!i&&!c)return Z(e)&&s.set(e,mt),mt;if(K(i))for(let u=0;u-1,_[1]=P<0||T-1||Y(_,"default"))&&l.push(h)}}}const a=[o,l];return Z(e)&&s.set(e,a),a}function fr(e){return e[0]!=="$"&&!_t(e)}function dr(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function hr(e,t){return dr(e)===dr(t)}function pr(e,t){return K(t)?t.findIndex(n=>hr(n,e)):q(t)&&hr(t,e)?0:-1}const Fi=e=>e[0]==="_"||e==="$stable",Us=e=>K(e)?e.map(Re):[Re(e)],zl=(e,t,n)=>{if(t._n)return t;const s=yl((...r)=>Us(t(...r)),n);return s._c=!1,s},$i=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Fi(r))continue;const i=e[r];if(q(i))t[r]=zl(r,i,s);else if(i!=null){const o=Us(i);t[r]=()=>o}}},ji=(e,t)=>{const n=Us(t);e.slots.default=()=>n},Xl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=J(t),hn(t,"_",n)):$i(t,e.slots={})}else e.slots={},t&&ji(e,t);hn(e.slots,jn,1)},Jl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=ee;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(re(r,t),!n&&l===1&&delete r._):(i=!t.$stable,$i(t,r)),o=t}else t&&(ji(e,t),o={default:1});if(i)for(const l in r)!Fi(l)&&o[l]==null&&delete r[l]};function bn(e,t,n,s,r=!1){if(K(e)){e.forEach((g,_)=>bn(g,t&&(K(t)?t[_]:t),n,s,r));return}if(wt(s)&&!r)return;const i=s.shapeFlag&4?Dn(s.component)||s.component.proxy:s.el,o=r?null:i,{i:l,r:c}=e,a=t&&t.r,u=l.refs===ee?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(ne(a)?(u[a]=null,Y(h,a)&&(h[a]=null)):de(a)&&(a.value=null)),q(c))Ye(c,l,12,[o,u]);else{const g=ne(c),_=de(c);if(g||_){const T=()=>{if(e.f){const P=g?Y(h,c)?h[c]:u[c]:c.value;r?K(P)&&Ss(P,i):K(P)?P.includes(i)||P.push(i):g?(u[c]=[i],Y(h,c)&&(h[c]=u[c])):(c.value=[i],e.k&&(u[e.k]=c.value))}else g?(u[c]=o,Y(h,c)&&(h[c]=o)):_&&(c.value=o,e.k&&(u[e.k]=o))};o?(T.id=-1,me(T,n)):T()}}}let ke=!1;const Yl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Ql=e=>e.namespaceURI.includes("MathML"),rn=e=>{if(Yl(e))return"svg";if(Ql(e))return"mathml"},on=e=>e.nodeType===8;function Zl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:a}}=e,u=(p,y)=>{if(!y.hasChildNodes()){n(null,p,y),mn(),y._vnode=p;return}ke=!1,h(y.firstChild,p,null,null,null),mn(),y._vnode=p,ke&&console.error("Hydration completed but contains mismatches.")},h=(p,y,M,O,D,R=!1)=>{const B=on(p)&&p.data==="[",E=()=>P(p,y,M,O,D,B),{type:k,ref:x,shapeFlag:G,patchFlag:ie}=y;let ue=p.nodeType;y.el=p,ie===-2&&(R=!1,y.dynamicChildren=null);let V=null;switch(k){case xt:ue!==3?y.children===""?(c(y.el=r(""),o(p),p),V=p):V=E():(p.data!==y.children&&(ke=!0,p.data=y.children),V=i(p));break;case ve:$(p)?(V=i(p),N(y.el=p.content.firstChild,p,M)):ue!==8||B?V=E():V=i(p);break;case jt:if(B&&(p=i(p),ue=p.nodeType),ue===1||ue===3){V=p;const X=!y.children.length;for(let H=0;H{R=R||!!y.dynamicChildren;const{type:B,props:E,patchFlag:k,shapeFlag:x,dirs:G,transition:ie}=y,ue=B==="input"||B==="option";if(ue||k!==-1){G&&Me(y,null,M,"created");let V=!1;if($(p)){V=Hi(O,ie)&&M&&M.vnode.props&&M.vnode.props.appear;const H=p.content.firstChild;V&&ie.beforeEnter(H),N(H,p,M),y.el=p=H}if(x&16&&!(E&&(E.innerHTML||E.textContent))){let H=_(p.firstChild,y,p,M,O,D,R);for(;H;){ke=!0;const $e=H;H=H.nextSibling,l($e)}}else x&8&&p.textContent!==y.children&&(ke=!0,p.textContent=y.children);if(E)if(ue||!R||k&48)for(const H in E)(ue&&(H.endsWith("value")||H==="indeterminate")||qt(H)&&!_t(H)||H[0]===".")&&s(p,H,null,E[H],void 0,void 0,M);else E.onClick&&s(p,"onClick",null,E.onClick,void 0,void 0,M);let X;(X=E&&E.onVnodeBeforeMount)&&Ee(X,M,y),G&&Me(y,null,M,"beforeMount"),((X=E&&E.onVnodeMounted)||G||V)&&vi(()=>{X&&Ee(X,M,y),V&&ie.enter(p),G&&Me(y,null,M,"mounted")},O)}return p.nextSibling},_=(p,y,M,O,D,R,B)=>{B=B||!!y.dynamicChildren;const E=y.children,k=E.length;for(let x=0;x{const{slotScopeIds:B}=y;B&&(D=D?D.concat(B):B);const E=o(p),k=_(i(p),y,E,M,O,D,R);return k&&on(k)&&k.data==="]"?i(y.anchor=k):(ke=!0,c(y.anchor=a("]"),E,k),k)},P=(p,y,M,O,D,R)=>{if(ke=!0,y.el=null,R){const k=F(p);for(;;){const x=i(p);if(x&&x!==k)l(x);else break}}const B=i(p),E=o(p);return l(p),n(null,y,E,B,M,O,rn(E),D),B},F=(p,y="[",M="]")=>{let O=0;for(;p;)if(p=i(p),p&&on(p)&&(p.data===y&&O++,p.data===M)){if(O===0)return i(p);O--}return p},N=(p,y,M)=>{const O=y.parentNode;O&&O.replaceChild(p,y);let D=M;for(;D;)D.vnode.el===y&&(D.vnode.el=D.subTree.el=p),D=D.parent},$=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[u,h]}const me=vi;function ec(e){return tc(e,Zl)}function tc(e,t){const n=Gr();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:a,setElementText:u,parentNode:h,nextSibling:g,setScopeId:_=Se,insertStaticContent:T}=e,P=(f,d,m,b=null,v=null,S=null,L=void 0,C=null,A=!!d.dynamicChildren)=>{if(f===d)return;f&&!rt(f,d)&&(b=Jt(f),Pe(f,v,S,!0),f=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:w,ref:I,shapeFlag:U}=d;switch(w){case xt:F(f,d,m,b);break;case ve:N(f,d,m,b);break;case jt:f==null&&$(d,m,b,L);break;case ge:x(f,d,m,b,v,S,L,C,A);break;default:U&1?M(f,d,m,b,v,S,L,C,A):U&6?G(f,d,m,b,v,S,L,C,A):(U&64||U&128)&&w.process(f,d,m,b,v,S,L,C,A,ht)}I!=null&&v&&bn(I,f&&f.ref,S,d||f,!d)},F=(f,d,m,b)=>{if(f==null)s(d.el=l(d.children),m,b);else{const v=d.el=f.el;d.children!==f.children&&a(v,d.children)}},N=(f,d,m,b)=>{f==null?s(d.el=c(d.children||""),m,b):d.el=f.el},$=(f,d,m,b)=>{[f.el,f.anchor]=T(f.children,d,m,b,f.el,f.anchor)},p=({el:f,anchor:d},m,b)=>{let v;for(;f&&f!==d;)v=g(f),s(f,m,b),f=v;s(d,m,b)},y=({el:f,anchor:d})=>{let m;for(;f&&f!==d;)m=g(f),r(f),f=m;r(d)},M=(f,d,m,b,v,S,L,C,A)=>{d.type==="svg"?L="svg":d.type==="math"&&(L="mathml"),f==null?O(d,m,b,v,S,L,C,A):B(f,d,v,S,L,C,A)},O=(f,d,m,b,v,S,L,C)=>{let A,w;const{props:I,shapeFlag:U,transition:j,dirs:W}=f;if(A=f.el=o(f.type,S,I&&I.is,I),U&8?u(A,f.children):U&16&&R(f.children,A,null,b,v,Jn(f,S),L,C),W&&Me(f,null,b,"created"),D(A,f,f.scopeId,L,b),I){for(const Q in I)Q!=="value"&&!_t(Q)&&i(A,Q,null,I[Q],S,f.children,b,v,je);"value"in I&&i(A,"value",null,I.value,S),(w=I.onVnodeBeforeMount)&&Ee(w,b,f)}W&&Me(f,null,b,"beforeMount");const z=Hi(v,j);z&&j.beforeEnter(A),s(A,d,m),((w=I&&I.onVnodeMounted)||z||W)&&me(()=>{w&&Ee(w,b,f),z&&j.enter(A),W&&Me(f,null,b,"mounted")},v)},D=(f,d,m,b,v)=>{if(m&&_(f,m),b)for(let S=0;S{for(let w=A;w{const C=d.el=f.el;let{patchFlag:A,dynamicChildren:w,dirs:I}=d;A|=f.patchFlag&16;const U=f.props||ee,j=d.props||ee;let W;if(m&&tt(m,!1),(W=j.onVnodeBeforeUpdate)&&Ee(W,m,d,f),I&&Me(d,f,m,"beforeUpdate"),m&&tt(m,!0),w?E(f.dynamicChildren,w,C,m,b,Jn(d,v),S):L||H(f,d,C,null,m,b,Jn(d,v),S,!1),A>0){if(A&16)k(C,d,U,j,m,b,v);else if(A&2&&U.class!==j.class&&i(C,"class",null,j.class,v),A&4&&i(C,"style",U.style,j.style,v),A&8){const z=d.dynamicProps;for(let Q=0;Q{W&&Ee(W,m,d,f),I&&Me(d,f,m,"updated")},b)},E=(f,d,m,b,v,S,L)=>{for(let C=0;C{if(m!==b){if(m!==ee)for(const C in m)!_t(C)&&!(C in b)&&i(f,C,m[C],null,L,d.children,v,S,je);for(const C in b){if(_t(C))continue;const A=b[C],w=m[C];A!==w&&C!=="value"&&i(f,C,w,A,L,d.children,v,S,je)}"value"in b&&i(f,"value",m.value,b.value,L)}},x=(f,d,m,b,v,S,L,C,A)=>{const w=d.el=f?f.el:l(""),I=d.anchor=f?f.anchor:l("");let{patchFlag:U,dynamicChildren:j,slotScopeIds:W}=d;W&&(C=C?C.concat(W):W),f==null?(s(w,m,b),s(I,m,b),R(d.children||[],m,I,v,S,L,C,A)):U>0&&U&64&&j&&f.dynamicChildren?(E(f.dynamicChildren,j,m,v,S,L,C),(d.key!=null||v&&d===v.subTree)&&Vi(f,d,!0)):H(f,d,m,I,v,S,L,C,A)},G=(f,d,m,b,v,S,L,C,A)=>{d.slotScopeIds=C,f==null?d.shapeFlag&512?v.ctx.activate(d,m,b,L,A):ie(d,m,b,v,S,L,A):ue(f,d,A)},ie=(f,d,m,b,v,S,L)=>{const C=f.component=uc(f,b,v);if(Fn(f)&&(C.ctx.renderer=ht),fc(C),C.asyncDep){if(v&&v.registerDep(C,V),!f.el){const A=C.subTree=ae(ve);N(null,A,d,m)}}else V(C,f,d,m,v,S,L)},ue=(f,d,m)=>{const b=d.component=f.component;if(vl(f,d,m))if(b.asyncDep&&!b.asyncResolved){X(b,d,m);return}else b.next=d,hl(b.update),b.effect.dirty=!0,b.update();else d.el=f.el,b.vnode=d},V=(f,d,m,b,v,S,L)=>{const C=()=>{if(f.isMounted){let{next:I,bu:U,u:j,parent:W,vnode:z}=f;{const pt=Di(f);if(pt){I&&(I.el=z.el,X(f,I,L)),pt.asyncDep.then(()=>{f.isUnmounted||C()});return}}let Q=I,te;tt(f,!1),I?(I.el=z.el,X(f,I,L)):I=z,U&&un(U),(te=I.props&&I.props.onVnodeBeforeUpdate)&&Ee(te,W,I,z),tt(f,!0);const ce=Gn(f),Ae=f.subTree;f.subTree=ce,P(Ae,ce,h(Ae.el),Jt(Ae),f,v,S),I.el=ce.el,Q===null&&wl(f,ce.el),j&&me(j,v),(te=I.props&&I.props.onVnodeUpdated)&&me(()=>Ee(te,W,I,z),v)}else{let I;const{el:U,props:j}=d,{bm:W,m:z,parent:Q}=f,te=wt(d);if(tt(f,!1),W&&un(W),!te&&(I=j&&j.onVnodeBeforeMount)&&Ee(I,Q,d),tt(f,!0),U&&Kn){const ce=()=>{f.subTree=Gn(f),Kn(U,f.subTree,f,v,null)};te?d.type.__asyncLoader().then(()=>!f.isUnmounted&&ce()):ce()}else{const ce=f.subTree=Gn(f);P(null,ce,m,b,f,v,S),d.el=ce.el}if(z&&me(z,v),!te&&(I=j&&j.onVnodeMounted)){const ce=d;me(()=>Ee(I,Q,ce),v)}(d.shapeFlag&256||Q&&wt(Q.vnode)&&Q.vnode.shapeFlag&256)&&f.a&&me(f.a,v),f.isMounted=!0,d=m=b=null}},A=f.effect=new Ts(C,Se,()=>Fs(w),f.scope),w=f.update=()=>{A.dirty&&A.run()};w.id=f.uid,tt(f,!0),w()},X=(f,d,m)=>{d.component=f;const b=f.vnode.props;f.vnode=d,f.next=null,Gl(f,d.props,b,m),Jl(f,d.children,m),ft(),sr(f),dt()},H=(f,d,m,b,v,S,L,C,A=!1)=>{const w=f&&f.children,I=f?f.shapeFlag:0,U=d.children,{patchFlag:j,shapeFlag:W}=d;if(j>0){if(j&128){Xt(w,U,m,b,v,S,L,C,A);return}else if(j&256){$e(w,U,m,b,v,S,L,C,A);return}}W&8?(I&16&&je(w,v,S),U!==w&&u(m,U)):I&16?W&16?Xt(w,U,m,b,v,S,L,C,A):je(w,v,S,!0):(I&8&&u(m,""),W&16&&R(U,m,b,v,S,L,C,A))},$e=(f,d,m,b,v,S,L,C,A)=>{f=f||mt,d=d||mt;const w=f.length,I=d.length,U=Math.min(w,I);let j;for(j=0;jI?je(f,v,S,!0,!1,U):R(d,m,b,v,S,L,C,A,U)},Xt=(f,d,m,b,v,S,L,C,A)=>{let w=0;const I=d.length;let U=f.length-1,j=I-1;for(;w<=U&&w<=j;){const W=f[w],z=d[w]=A?ze(d[w]):Re(d[w]);if(rt(W,z))P(W,z,m,null,v,S,L,C,A);else break;w++}for(;w<=U&&w<=j;){const W=f[U],z=d[j]=A?ze(d[j]):Re(d[j]);if(rt(W,z))P(W,z,m,null,v,S,L,C,A);else break;U--,j--}if(w>U){if(w<=j){const W=j+1,z=Wj)for(;w<=U;)Pe(f[w],v,S,!0),w++;else{const W=w,z=w,Q=new Map;for(w=z;w<=j;w++){const _e=d[w]=A?ze(d[w]):Re(d[w]);_e.key!=null&&Q.set(_e.key,w)}let te,ce=0;const Ae=j-z+1;let pt=!1,qs=0;const Ot=new Array(Ae);for(w=0;w=Ae){Pe(_e,v,S,!0);continue}let Ie;if(_e.key!=null)Ie=Q.get(_e.key);else for(te=z;te<=j;te++)if(Ot[te-z]===0&&rt(_e,d[te])){Ie=te;break}Ie===void 0?Pe(_e,v,S,!0):(Ot[Ie-z]=w+1,Ie>=qs?qs=Ie:pt=!0,P(_e,d[Ie],m,null,v,S,L,C,A),ce++)}const Gs=pt?nc(Ot):mt;for(te=Gs.length-1,w=Ae-1;w>=0;w--){const _e=z+w,Ie=d[_e],zs=_e+1{const{el:S,type:L,transition:C,children:A,shapeFlag:w}=f;if(w&6){et(f.component.subTree,d,m,b);return}if(w&128){f.suspense.move(d,m,b);return}if(w&64){L.move(f,d,m,ht);return}if(L===ge){s(S,d,m);for(let U=0;UC.enter(S),v);else{const{leave:U,delayLeave:j,afterLeave:W}=C,z=()=>s(S,d,m),Q=()=>{U(S,()=>{z(),W&&W()})};j?j(S,z,Q):Q()}else s(S,d,m)},Pe=(f,d,m,b=!1,v=!1)=>{const{type:S,props:L,ref:C,children:A,dynamicChildren:w,shapeFlag:I,patchFlag:U,dirs:j}=f;if(C!=null&&bn(C,null,m,f,!0),I&256){d.ctx.deactivate(f);return}const W=I&1&&j,z=!wt(f);let Q;if(z&&(Q=L&&L.onVnodeBeforeUnmount)&&Ee(Q,d,f),I&6)bo(f.component,m,b);else{if(I&128){f.suspense.unmount(m,b);return}W&&Me(f,null,d,"beforeUnmount"),I&64?f.type.remove(f,d,m,v,ht,b):w&&(S!==ge||U>0&&U&64)?je(w,d,m,!1,!0):(S===ge&&U&384||!v&&I&16)&&je(A,d,m),b&&Ks(f)}(z&&(Q=L&&L.onVnodeUnmounted)||W)&&me(()=>{Q&&Ee(Q,d,f),W&&Me(f,null,d,"unmounted")},m)},Ks=f=>{const{type:d,el:m,anchor:b,transition:v}=f;if(d===ge){_o(m,b);return}if(d===jt){y(f);return}const S=()=>{r(m),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(f.shapeFlag&1&&v&&!v.persisted){const{leave:L,delayLeave:C}=v,A=()=>L(m,S);C?C(f.el,S,A):A()}else S()},_o=(f,d)=>{let m;for(;f!==d;)m=g(f),r(f),f=m;r(d)},bo=(f,d,m)=>{const{bum:b,scope:v,update:S,subTree:L,um:C}=f;b&&un(b),v.stop(),S&&(S.active=!1,Pe(L,f,d,m)),C&&me(C,d),me(()=>{f.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},je=(f,d,m,b=!1,v=!1,S=0)=>{for(let L=S;Lf.shapeFlag&6?Jt(f.component.subTree):f.shapeFlag&128?f.suspense.next():g(f.anchor||f.el);let Bn=!1;const Ws=(f,d,m)=>{f==null?d._vnode&&Pe(d._vnode,null,null,!0):P(d._vnode||null,f,d,null,null,null,m),Bn||(Bn=!0,sr(),mn(),Bn=!1),d._vnode=f},ht={p:P,um:Pe,m:et,r:Ks,mt:ie,mc:R,pc:H,pbc:E,n:Jt,o:e};let kn,Kn;return t&&([kn,Kn]=t(ht)),{render:Ws,hydrate:kn,createApp:Kl(Ws,kn)}}function Jn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Hi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Vi(e,t,n=!1){const s=e.children,r=t.children;if(K(s)&&K(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function Di(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Di(t)}const sc=e=>e.__isTeleport,ge=Symbol.for("v-fgt"),xt=Symbol.for("v-txt"),ve=Symbol.for("v-cmt"),jt=Symbol.for("v-stc"),Ht=[];let Oe=null;function Ui(e=!1){Ht.push(Oe=e?null:[])}function rc(){Ht.pop(),Oe=Ht[Ht.length-1]||null}let Wt=1;function gr(e){Wt+=e}function Bi(e){return e.dynamicChildren=Wt>0?Oe||mt:null,rc(),Wt>0&&Oe&&Oe.push(e),e}function lu(e,t,n,s,r,i){return Bi(Wi(e,t,n,s,r,i,!0))}function ki(e,t,n,s,r){return Bi(ae(e,t,n,s,r,!0))}function vn(e){return e?e.__v_isVNode===!0:!1}function rt(e,t){return e.type===t.type&&e.key===t.key}const jn="__vInternal",Ki=({key:e})=>e??null,fn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ne(e)||de(e)||q(e)?{i:le,r:e,k:t,f:!!n}:e:null);function Wi(e,t=null,n=null,s=0,r=null,i=e===ge?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ki(t),ref:t&&fn(t),scopeId:Nn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:le};return l?(Bs(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=ne(n)?8:16),Wt>0&&!o&&Oe&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Oe.push(c),c}const ae=ic;function ic(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===_i)&&(e=ve),vn(e)){const l=Ze(e,t,!0);return n&&Bs(l,n),Wt>0&&!i&&Oe&&(l.shapeFlag&6?Oe[Oe.indexOf(e)]=l:Oe.push(l)),l.patchFlag|=-2,l}if(mc(e)&&(e=e.__vccOpts),t){t=oc(t);let{class:l,style:c}=t;l&&!ne(l)&&(t.class=On(l)),Z(c)&&(ci(c)&&!K(c)&&(c=re({},c)),t.style=Rn(c))}const o=ne(e)?1:El(e)?128:sc(e)?64:Z(e)?4:q(e)?2:0;return Wi(e,t,n,s,r,o,i,!0)}function oc(e){return e?ci(e)||jn in e?re({},e):e:null}function Ze(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:o}=e,l=t?lc(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Ki(l),ref:t&&t.ref?n&&r?K(r)?r.concat(fn(t)):[r,fn(t)]:fn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ge?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ze(e.ssContent),ssFallback:e.ssFallback&&Ze(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function qi(e=" ",t=0){return ae(xt,null,e,t)}function cu(e,t){const n=ae(jt,null,e);return n.staticCount=t,n}function au(e="",t=!1){return t?(Ui(),ki(ve,null,e)):ae(ve,null,e)}function Re(e){return e==null||typeof e=="boolean"?ae(ve):K(e)?ae(ge,null,e.slice()):typeof e=="object"?ze(e):ae(xt,null,String(e))}function ze(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ze(e)}function Bs(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(K(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Bs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(jn in t)?t._ctx=le:r===3&&le&&(le.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:le},n=32):(t=String(t),s&64?(n=16,t=[qi(t)]):n=8);e.children=t,e.shapeFlag|=n}function lc(...e){const t={};for(let n=0;nfe||le;let wn,bs;{const e=Gr(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};wn=t("__VUE_INSTANCE_SETTERS__",n=>fe=n),bs=t("__VUE_SSR_SETTERS__",n=>Vn=n)}const zt=e=>{const t=fe;return wn(e),e.scope.on(),()=>{e.scope.off(),wn(t)}},mr=()=>{fe&&fe.scope.off(),wn(null)};function Gi(e){return e.vnode.shapeFlag&4}let Vn=!1;function fc(e,t=!1){t&&bs(t);const{props:n,children:s}=e.vnode,r=Gi(e);ql(e,n,r,t),Xl(e,s);const i=r?dc(e,t):void 0;return t&&bs(!1),i}function dc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Mt(new Proxy(e.ctx,jl));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?pc(e):null,i=zt(e);ft();const o=Ye(s,e,0,[e.props,r]);if(dt(),i(),Kr(o)){if(o.then(mr,mr),t)return o.then(l=>{yr(e,l,t)}).catch(l=>{In(l,e,0)});e.asyncDep=o}else yr(e,o,t)}else zi(e,t)}function yr(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=hi(t)),zi(e,n)}let _r;function zi(e,t,n){const s=e.type;if(!e.render){if(!t&&_r&&!s.render){const r=s.template||Ds(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,a=re(re({isCustomElement:i,delimiters:l},o),c);s.render=_r(r,a)}}e.render=s.render||Se}{const r=zt(e);ft();try{Hl(e)}finally{dt(),r()}}}function hc(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return ye(e,"get","$attrs"),t[n]}}))}function pc(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return hc(e)},slots:e.slots,emit:e.emit,expose:t}}function Dn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(hi(Mt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ft)return Ft[n](e)},has(t,n){return n in t||n in Ft}}))}function gc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function mc(e){return q(e)&&"__vccOpts"in e}const oe=(e,t)=>nl(e,t,Vn);function vs(e,t,n){const s=arguments.length;return s===2?Z(t)&&!K(t)?vn(t)?ae(e,null,[t]):ae(e,t):ae(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&vn(n)&&(n=[n]),ae(e,t,n))}const yc="3.4.21";/** +* @vue/runtime-dom v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const _c="http://www.w3.org/2000/svg",bc="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,br=Xe&&Xe.createElement("template"),vc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Xe.createElementNS(_c,e):t==="mathml"?Xe.createElementNS(bc,e):Xe.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{br.innerHTML=s==="svg"?`${e}`:s==="mathml"?`${e}`:e;const l=br.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ke="transition",Lt="animation",Tt=Symbol("_vtc"),Xi=(e,{slots:t})=>vs(Al,Yi(e),t);Xi.displayName="Transition";const Ji={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},wc=Xi.props=re({},Si,Ji),nt=(e,t=[])=>{K(e)?e.forEach(n=>n(...t)):e&&e(...t)},vr=e=>e?K(e)?e.some(t=>t.length>1):e.length>1:!1;function Yi(e){const t={};for(const x in e)x in Ji||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:a=o,appearToClass:u=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,T=Ec(r),P=T&&T[0],F=T&&T[1],{onBeforeEnter:N,onEnter:$,onEnterCancelled:p,onLeave:y,onLeaveCancelled:M,onBeforeAppear:O=N,onAppear:D=$,onAppearCancelled:R=p}=t,B=(x,G,ie)=>{We(x,G?u:l),We(x,G?a:o),ie&&ie()},E=(x,G)=>{x._isLeaving=!1,We(x,h),We(x,_),We(x,g),G&&G()},k=x=>(G,ie)=>{const ue=x?D:$,V=()=>B(G,x,ie);nt(ue,[G,V]),wr(()=>{We(G,x?c:i),He(G,x?u:l),vr(ue)||Er(G,s,P,V)})};return re(t,{onBeforeEnter(x){nt(N,[x]),He(x,i),He(x,o)},onBeforeAppear(x){nt(O,[x]),He(x,c),He(x,a)},onEnter:k(!1),onAppear:k(!0),onLeave(x,G){x._isLeaving=!0;const ie=()=>E(x,G);He(x,h),Zi(),He(x,g),wr(()=>{x._isLeaving&&(We(x,h),He(x,_),vr(y)||Er(x,s,F,ie))}),nt(y,[x,ie])},onEnterCancelled(x){B(x,!1),nt(p,[x])},onAppearCancelled(x){B(x,!0),nt(R,[x])},onLeaveCancelled(x){E(x),nt(M,[x])}})}function Ec(e){if(e==null)return null;if(Z(e))return[Yn(e.enter),Yn(e.leave)];{const t=Yn(e);return[t,t]}}function Yn(e){return xo(e)}function He(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Tt]||(e[Tt]=new Set)).add(t)}function We(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Tt];n&&(n.delete(t),n.size||(e[Tt]=void 0))}function wr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Cc=0;function Er(e,t,n,s){const r=e._endId=++Cc,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=Qi(e,t);if(!o)return s();const a=o+"end";let u=0;const h=()=>{e.removeEventListener(a,g),i()},g=_=>{_.target===e&&++u>=c&&h()};setTimeout(()=>{u(n[T]||"").split(", "),r=s(`${Ke}Delay`),i=s(`${Ke}Duration`),o=Cr(r,i),l=s(`${Lt}Delay`),c=s(`${Lt}Duration`),a=Cr(l,c);let u=null,h=0,g=0;t===Ke?o>0&&(u=Ke,h=o,g=i.length):t===Lt?a>0&&(u=Lt,h=a,g=c.length):(h=Math.max(o,a),u=h>0?o>a?Ke:Lt:null,g=u?u===Ke?i.length:c.length:0);const _=u===Ke&&/\b(transform|all)(,|$)/.test(s(`${Ke}Property`).toString());return{type:u,timeout:h,propCount:g,hasTransform:_}}function Cr(e,t){for(;e.lengthSr(n)+Sr(e[s])))}function Sr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Zi(){return document.body.offsetHeight}function Sc(e,t,n){const s=e[Tt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const En=Symbol("_vod"),eo=Symbol("_vsh"),uu={beforeMount(e,{value:t},{transition:n}){e[En]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Pt(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Pt(e,!0),s.enter(e)):s.leave(e,()=>{Pt(e,!1)}):Pt(e,t))},beforeUnmount(e,{value:t}){Pt(e,t)}};function Pt(e,t){e.style.display=t?e[En]:"none",e[eo]=!t}const xc=Symbol(""),Tc=/(^|;)\s*display\s*:/;function Ac(e,t,n){const s=e.style,r=ne(n);let i=!1;if(n&&!r){if(t)if(ne(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&dn(s,l,"")}else for(const o in t)n[o]==null&&dn(s,o,"");for(const o in n)o==="display"&&(i=!0),dn(s,o,n[o])}else if(r){if(t!==n){const o=s[xc];o&&(n+=";"+o),s.cssText=n,i=Tc.test(n)}}else t&&e.removeAttribute("style");En in e&&(e[En]=i?s.display:"",e[eo]&&(s.display="none"))}const xr=/\s*!important$/;function dn(e,t,n){if(K(n))n.forEach(s=>dn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Rc(e,t);xr.test(n)?e.setProperty(ut(s),n.replace(xr,""),"important"):e[s]=n}}const Tr=["Webkit","Moz","ms"],Qn={};function Rc(e,t){const n=Qn[t];if(n)return n;let s=Fe(t);if(s!=="filter"&&s in e)return Qn[t]=s;s=An(s);for(let r=0;rZn||(Nc.then(()=>Zn=0),Zn=Date.now());function $c(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;xe(jc(s,n.value),t,5,[s])};return n.value=e,n.attached=Fc(),n}function jc(e,t){if(K(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Lr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Hc=(e,t,n,s,r,i,o,l,c)=>{const a=r==="svg";t==="class"?Sc(e,s,a):t==="style"?Ac(e,n,s):qt(t)?Cs(t)||Ic(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Vc(e,t,s,a))?Lc(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Oc(e,t,s,a))};function Vc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Lr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Lr(t)&&ne(n)?!1:t in e}const to=new WeakMap,no=new WeakMap,Cn=Symbol("_moveCb"),Pr=Symbol("_enterCb"),so={name:"TransitionGroup",props:re({},wc,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Hn(),s=Ci();let r,i;return Ri(()=>{if(!r.length)return;const o=e.moveClass||`${e.name||"v"}-move`;if(!Kc(r[0].el,n.vnode.el,o))return;r.forEach(Uc),r.forEach(Bc);const l=r.filter(kc);Zi(),l.forEach(c=>{const a=c.el,u=a.style;He(a,o),u.transform=u.webkitTransform=u.transitionDuration="";const h=a[Cn]=g=>{g&&g.target!==a||(!g||/transform$/.test(g.propertyName))&&(a.removeEventListener("transitionend",h),a[Cn]=null,We(a,o))};a.addEventListener("transitionend",h)})}),()=>{const o=J(e),l=Yi(o);let c=o.tag||ge;r=i,i=t.default?Hs(t.default()):[];for(let a=0;adelete e.mode;so.props;const fu=so;function Uc(e){const t=e.el;t[Cn]&&t[Cn](),t[Pr]&&t[Pr]()}function Bc(e){no.set(e,e.el.getBoundingClientRect())}function kc(e){const t=to.get(e),n=no.get(e),s=t.left-n.left,r=t.top-n.top;if(s||r){const i=e.el.style;return i.transform=i.webkitTransform=`translate(${s}px,${r}px)`,i.transitionDuration="0s",e}}function Kc(e,t,n){const s=e.cloneNode(),r=e[Tt];r&&r.forEach(l=>{l.split(/\s+/).forEach(c=>c&&s.classList.remove(c))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const i=t.nodeType===1?t:t.parentNode;i.appendChild(s);const{hasTransform:o}=Qi(s);return i.removeChild(s),o}const Ir=e=>{const t=e.props["onUpdate:modelValue"]||!1;return K(t)?n=>un(t,n):t};function Wc(e){e.target.composing=!0}function Mr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const es=Symbol("_assign"),du={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[es]=Ir(r);const i=s||r.props&&r.props.type==="number";gt(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=us(l)),e[es](l)}),n&>(e,"change",()=>{e.value=e.value.trim()}),t||(gt(e,"compositionstart",Wc),gt(e,"compositionend",Mr),gt(e,"change",Mr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:s,number:r}},i){if(e[es]=Ir(i),e.composing)return;const o=r||e.type==="number"?us(e.value):e.value,l=t??"";o!==l&&(document.activeElement===e&&e.type!=="range"&&(n||s&&e.value.trim()===l)||(e.value=l))}},qc=["ctrl","shift","alt","meta"],Gc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>qc.some(n=>e[`${n}Key`]&&!t.includes(n))},hu=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=ut(r.key);if(t.some(o=>o===i||zc[o]===i))return e(r)})},Xc=re({patchProp:Hc},vc);let ts,Nr=!1;function Jc(){return ts=Nr?ts:ec(Xc),Nr=!0,ts}const gu=(...e)=>{const t=Jc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Qc(s);if(r)return n(r,!0,Yc(r))},t};function Yc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Qc(e){return ne(e)?document.querySelector(e):e}const mu=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};function Un(e){return Jr()?(No(e),!0):!1}function se(e){return typeof e=="function"?e():di(e)}const ro=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Zc=e=>e!=null,ea=Object.prototype.toString,ta=e=>ea.call(e)==="[object Object]",ct=()=>{};function io(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const oo=e=>e();function na(...e){let t=0,n,s=!0,r=ct,i,o,l,c,a;!de(e[0])&&typeof e[0]=="object"?{delay:o,trailing:l=!0,leading:c=!0,rejectOnCancel:a=!1}=e[0]:[o,l=!0,c=!0,a=!1]=e;const u=()=>{n&&(clearTimeout(n),n=void 0,r(),r=ct)};return g=>{const _=se(o),T=Date.now()-t,P=()=>i=g();return u(),_<=0?(t=Date.now(),P()):(T>_&&(c||!s)?(t=Date.now(),P()):l&&(i=new Promise((F,N)=>{r=a?N:F,n=setTimeout(()=>{t=Date.now(),s=!0,F(P()),u()},Math.max(0,_-T))})),!c&&!n&&(n=setTimeout(()=>s=!0,_)),s=!1,i)}}function sa(e=oo){const t=Te(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Pn(t),pause:n,resume:s,eventFilter:r}}function ra(e,t=!1,n="Timeout"){return new Promise((s,r)=>{setTimeout(t?()=>r(n):s,e)})}function ia(e){return e}function oa(e){return e||Hn()}function la(...e){if(e.length!==1)return al(...e);const t=e[0];return typeof t=="function"?Pn(ol(()=>({get:t,set:ct}))):Te(t)}function yu(e,t=200,n=!1,s=!0,r=!1){return io(na(t,n,s,r),e)}function ca(e,t,n={}){const{eventFilter:s=oo,...r}=n;return Le(e,io(s,t),r)}function lo(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=sa(s);return{stop:ca(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function co(e,t=!0,n){oa()?Rt(e,n):t?e():Gt(e)}function _u(e,t,n){const s=Le(e,(...r)=>(Gt(()=>s()),t(...r)),n);return s}function Vt(e){var t;const n=se(e);return(t=n==null?void 0:n.$el)!=null?t:n}const De=ro?window:void 0,aa=ro?window.navigator:void 0;function Sn(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=De):[t,n,s,r]=e,!t)return ct;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(u=>u()),i.length=0},l=(u,h,g,_)=>(u.addEventListener(h,g,_),()=>u.removeEventListener(h,g,_)),c=Le(()=>[Vt(t),se(r)],([u,h])=>{if(o(),!u)return;const g=ta(h)?{...h}:h;i.push(...n.flatMap(_=>s.map(T=>l(u,_,T,g))))},{immediate:!0,flush:"post"}),a=()=>{c(),o()};return Un(a),a}function ua(){const e=Te(!1),t=Hn();return t&&Rt(()=>{e.value=!0},t),e}function ks(e){const t=ua();return oe(()=>(t.value,!!e()))}function fa(e,t={}){const{window:n=De}=t,s=ks(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=Te(!1),o=a=>{i.value=a.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=wi(()=>{s.value&&(l(),r=n.matchMedia(se(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return Un(()=>{c(),l(),r=void 0}),i}const ln=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},cn="__vueuse_ssr_handlers__",da=ha();function ha(){return cn in ln||(ln[cn]=ln[cn]||{}),ln[cn]}function ao(e,t){return da[e]||t}function pa(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const ga={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Fr="vueuse-storage";function ma(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:u,window:h=De,eventFilter:g,onError:_=E=>{console.error(E)},initOnMounted:T}=s,P=(u?ui:Te)(typeof t=="function"?t():t);if(!n)try{n=ao("getDefaultStorage",()=>{var E;return(E=De)==null?void 0:E.localStorage})()}catch(E){_(E)}if(!n)return P;const F=se(t),N=pa(F),$=(r=s.serializer)!=null?r:ga[N],{pause:p,resume:y}=lo(P,()=>O(P.value),{flush:i,deep:o,eventFilter:g});h&&l&&co(()=>{Sn(h,"storage",R),Sn(h,Fr,B),T&&R()}),T||R();function M(E,k){h&&h.dispatchEvent(new CustomEvent(Fr,{detail:{key:e,oldValue:E,newValue:k,storageArea:n}}))}function O(E){try{const k=n.getItem(e);if(E==null)M(k,null),n.removeItem(e);else{const x=$.write(E);k!==x&&(n.setItem(e,x),M(k,x))}}catch(k){_(k)}}function D(E){const k=E?E.newValue:n.getItem(e);if(k==null)return c&&F!=null&&n.setItem(e,$.write(F)),F;if(!E&&a){const x=$.read(k);return typeof a=="function"?a(x,F):N==="object"&&!Array.isArray(x)?{...F,...x}:x}else return typeof k!="string"?k:$.read(k)}function R(E){if(!(E&&E.storageArea!==n)){if(E&&E.key==null){P.value=F;return}if(!(E&&E.key!==e)){p();try{(E==null?void 0:E.newValue)!==$.write(P.value)&&(P.value=D(E))}catch(k){_(k)}finally{E?Gt(y):y()}}}}function B(E){R(E.detail)}return P}function uo(e){return fa("(prefers-color-scheme: dark)",e)}function ya(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=De,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:u=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},g=uo({window:r}),_=oe(()=>g.value?"dark":"light"),T=c||(o==null?la(s):ma(o,s,i,{window:r,listenToStorageChanges:l})),P=oe(()=>T.value==="auto"?_.value:T.value),F=ao("updateHTMLAttrs",(y,M,O)=>{const D=typeof y=="string"?r==null?void 0:r.document.querySelector(y):Vt(y);if(!D)return;let R;if(u&&(R=r.document.createElement("style"),R.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),r.document.head.appendChild(R)),M==="class"){const B=O.split(/\s/g);Object.values(h).flatMap(E=>(E||"").split(/\s/g)).filter(Boolean).forEach(E=>{B.includes(E)?D.classList.add(E):D.classList.remove(E)})}else D.setAttribute(M,O);u&&(r.getComputedStyle(R).opacity,document.head.removeChild(R))});function N(y){var M;F(t,n,(M=h[y])!=null?M:y)}function $(y){e.onChanged?e.onChanged(y,N):N(y)}Le(P,$,{flush:"post",immediate:!0}),co(()=>$(P.value));const p=oe({get(){return a?T.value:P.value},set(y){T.value=y}});try{return Object.assign(p,{store:T,system:_,state:P})}catch{return p}}function _a(e={}){const{valueDark:t="dark",valueLight:n="",window:s=De}=e,r=ya({...e,onChanged:(l,c)=>{var a;e.onChanged?(a=e.onChanged)==null||a.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=oe(()=>r.system?r.system.value:uo({window:s}).value?"dark":"light");return oe({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function ba(e,t,n={}){const{root:s,rootMargin:r="0px",threshold:i=.1,window:o=De,immediate:l=!0}=n,c=ks(()=>o&&"IntersectionObserver"in o),a=oe(()=>{const T=se(e);return(Array.isArray(T)?T:[T]).map(Vt).filter(Zc)});let u=ct;const h=Te(l),g=c.value?Le(()=>[a.value,Vt(s),h.value],([T,P])=>{if(u(),!h.value||!T.length)return;const F=new IntersectionObserver(t,{root:Vt(P),rootMargin:r,threshold:i});T.forEach(N=>N&&F.observe(N)),u=()=>{F.disconnect(),u=ct}},{immediate:l,flush:"post"}):ct,_=()=>{u(),g(),h.value=!1};return Un(_),{isSupported:c,isActive:h,pause(){u(),h.value=!1},resume(){h.value=!0},stop:_}}function bu(e,t={}){const{window:n=De,scrollTarget:s,threshold:r=0}=t,i=Te(!1);return ba(e,o=>{let l=i.value,c=0;for(const a of o)a.time>=c&&(c=a.time,l=a.isIntersecting);i.value=l},{root:s,window:n,threshold:r}),i}function vu(e={},t={}){const{navigator:n=aa}=t,s=n,r=ks(()=>s&&"canShare"in s);return{isSupported:r,share:async(o={})=>{if(r.value){const l={...se(e),...se(o)};let c=!0;if(l.files&&s.canShare&&(c=s.canShare({files:l.files})),c)return s.share(l)}}}}function va([e,t,n,s]){const r=(u,h)=>1-3*h+3*u,i=(u,h)=>3*h-6*u,o=u=>3*u,l=(u,h,g)=>((r(h,g)*u+i(h,g))*u+o(h))*u,c=(u,h,g)=>3*r(h,g)*u*u+2*i(h,g)*u+o(h),a=u=>{let h=u;for(let g=0;g<4;++g){const _=c(h,e,n);if(_===0)return h;const T=l(h,e,n)-u;h-=T/_}return h};return u=>e===t&&n===s?u:l(a(u),t,s)}function $r(e,t,n){return e+n*(t-e)}function ns(e){return(typeof e=="number"?[e]:e)||[]}function wa(e,t,n,s={}){var r,i;const o=se(t),l=se(n),c=ns(o),a=ns(l),u=(r=se(s.duration))!=null?r:1e3,h=Date.now(),g=Date.now()+u,_=typeof s.transition=="function"?s.transition:(i=se(s.transition))!=null?i:ia,T=typeof _=="function"?_:va(_);return new Promise(P=>{e.value=o;const F=()=>{var N;if((N=s.abort)!=null&&N.call(s)){P();return}const $=Date.now(),p=T(($-h)/u),y=ns(e.value).map((M,O)=>$r(c[O],a[O],p));Array.isArray(e.value)?e.value=y.map((M,O)=>{var D,R;return $r((D=c[O])!=null?D:0,(R=a[O])!=null?R:0,p)}):typeof e.value=="number"&&(e.value=y[0]),${const i=se(e);return typeof i=="number"?i:i.map(se)},r=Te(s());return Le(s,async i=>{var o,l;if(se(t.disabled))return;const c=++n;if(t.delay&&await ra(se(t.delay)),c!==n)return;const a=Array.isArray(i)?i.map(se):se(i);(o=t.onStarted)==null||o.call(t),await wa(r,r.value,a,{...t,abort:()=>{var u;return c!==n||((u=t.abort)==null?void 0:u.call(t))}}),(l=t.onFinished)==null||l.call(t)},{deep:!0}),Le(()=>se(t.disabled),i=>{i&&(n++,r.value=s())}),Un(()=>{n++}),oe(()=>se(t.disabled)?s():r.value)}function Eu(e="history",t={}){const{initialValue:n={},removeNullishValues:s=!0,removeFalsyValues:r=!1,write:i=!0,window:o=De}=t;if(!o)return Ct(n);const l=Ct({});function c(){if(e==="history")return o.location.search||"";if(e==="hash"){const N=o.location.hash||"",$=N.indexOf("?");return $>0?N.slice($):""}else return(o.location.hash||"").replace(/^#/,"")}function a(N){const $=N.toString();if(e==="history")return`${$?`?${$}`:""}${o.location.hash||""}`;if(e==="hash-params")return`${o.location.search||""}${$?`#${$}`:""}`;const p=o.location.hash||"#",y=p.indexOf("?");return y>0?`${p.slice(0,y)}${$?`?${$}`:""}`:`${p}${$?`?${$}`:""}`}function u(){return new URLSearchParams(c())}function h(N){const $=new Set(Object.keys(l));for(const p of N.keys()){const y=N.getAll(p);l[p]=y.length>1?y:N.get(p)||"",$.delete(p)}Array.from($).forEach(p=>delete l[p])}const{pause:g,resume:_}=lo(l,()=>{const N=new URLSearchParams("");Object.keys(l).forEach($=>{const p=l[$];Array.isArray(p)?p.forEach(y=>N.append($,y)):s&&p==null||r&&!p?N.delete($):N.set($,p)}),T(N)},{deep:!0});function T(N,$){g(),$&&h(N),o.history.replaceState(o.history.state,o.document.title,o.location.pathname+a(N)),_()}function P(){i&&T(u(),!0)}Sn(o,"popstate",P,!1),e!=="history"&&Sn(o,"hashchange",P,!1);const F=u();return F.keys().next().value?h(F):Object.assign(l,n),l}const Ea=window.__VP_SITE_DATA__;var ss={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},rs={};const fo=/^(?:[a-z]+:|\/\/)/i,Ca="vitepress-theme-appearance",Sa=/#.*$/,xa=/[?#].*$/,Ta=/(?:(^|\/)index)?\.(?:md|html)$/,Ce=typeof document<"u",ho={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Aa(e,t,n=!1){if(t===void 0)return!1;if(e=jr(`/${e}`),n)return new RegExp(t).test(e);if(jr(t)!==e)return!1;const s=t.match(Sa);return s?(Ce?location.hash:"")===s[0]:!0}function jr(e){return decodeURI(e).replace(xa,"").replace(Ta,"$1")}function Ra(e){return fo.test(e)}function Oa(e,t){var s,r,i,o,l,c,a;const n=Object.keys(e.locales).find(u=>u!=="root"&&!Ra(u)&&Aa(t,`/${u}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:go(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function po(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=La(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function La(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Pa(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function go(e,t){return[...e.filter(n=>!Pa(t,n)),...t]}const Ia=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Ma=/^[a-z]:/i;function Hr(e){const t=Ma.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Ia,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const is=new Set;function Na(e){if(is.size===0){const n=typeof process=="object"&&(rs==null?void 0:rs.VITE_EXTRA_EXTENSIONS)||(ss==null?void 0:ss.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>is.add(s))}const t=e.split(".").pop();return t==null||!is.has(t.toLowerCase())}const Fa=Symbol(),at=ui(Ea);function Cu(e){const t=oe(()=>Oa(at.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?Te(!0):n?_a({storageKey:Ca,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):Te(!1);return{site:t,theme:oe(()=>t.value.themeConfig),page:oe(()=>e.data),frontmatter:oe(()=>e.data.frontmatter),params:oe(()=>e.data.params),lang:oe(()=>t.value.lang),dir:oe(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:oe(()=>t.value.localeIndex||"root"),title:oe(()=>po(t.value,e.data)),description:oe(()=>e.data.description||t.value.description),isDark:s}}function $a(){const e=Et(Fa);if(!e)throw new Error("vitepress data not properly injected in app");return e}function ja(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Vr(e){return fo.test(e)||!e.startsWith("/")?e:ja(at.value.base,e)}function Ha(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ce){const n="/";t=Hr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Hr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Va=[];function Da(){let e=at.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Dr(e,n);else if(Array.isArray(e))for(const s of e){const r=Dr(s,n);if(r){t=r;break}}return t}function Dr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Ua=Symbol(),ws="http://a.com",Ba=()=>({path:"/",component:null,data:ho});function Su(e,t){const n=Ct(Ba()),s={route:n,go:r};async function r(l=Ce?location.href:"/"){var c,a;if(l=os(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1){if(Ce){const u=new URL(location.href);l!==os(u.href)&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",l),new URL(l,ws).hash!==u.hash&&window.dispatchEvent(new Event("hashchange")))}await o(l),await((a=s.onAfterRouteChanged)==null?void 0:a.call(s,l))}}let i=null;async function o(l,c=0,a=!1){var g;if(await((g=s.onBeforePageLoad)==null?void 0:g.call(s,l))===!1)return;const u=new URL(l,ws),h=i=u.pathname;try{let _=await e(h);if(!_)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:T,__pageData:P}=_;if(!T)throw new Error(`Invalid route component: ${T}`);n.path=Ce?h:Vr(h),n.component=Mt(T),n.data=Mt(P),Ce&&Gt(()=>{let F=at.value.base+P.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!at.value.cleanUrls&&!F.endsWith("/")&&(F+=".html"),F!==u.pathname&&(u.pathname=F,l=F+u.search+u.hash,history.replaceState(null,"",l)),u.hash&&!c){let N=null;try{N=document.getElementById(decodeURIComponent(u.hash).slice(1))}catch($){console.warn($)}if(N){Ur(N,u.hash);return}}window.scrollTo(0,c)})}}catch(_){if(!/fetch|Page not found/.test(_.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(_),!a)try{const T=await fetch(at.value.base+"hashmap.json");window.__VP_HASH_MAP__=await T.json(),await o(l,c,!0);return}catch{}i===h&&(i=null,n.path=Ce?h:Vr(h),n.component=t?Mt(t):null,n.data=ho)}}return Ce&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:u}=a,{href:h,origin:g,pathname:_,hash:T,search:P}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),F=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!u&&g===F.origin&&Na(_)&&(l.preventDefault(),_===F.pathname&&P===F.search?(T!==F.hash&&(history.pushState(null,"",h),window.dispatchEvent(new Event("hashchange"))),T?Ur(a,T,a.classList.contains("header-anchor")):window.scrollTo(0,0)):r(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;await o(os(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function ka(){const e=Et(Ua);if(!e)throw new Error("useRouter() is called without provider.");return e}function mo(){return ka().route}function Ur(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-Da()+i;requestAnimationFrame(r)}}function os(e){const t=new URL(e,ws);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),at.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const ls=()=>Va.forEach(e=>e()),xu=Ti({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=mo(),{site:n}=$a();return()=>vs(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?vs(t.component,{onVnodeMounted:ls,onVnodeUpdated:ls,onVnodeUnmounted:ls}):"404 Page Not Found"])}}),Tu="/click-logo.svg",Ka="modulepreload",Wa=function(e){return"/"+e},Br={},Au=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.all(n.map(c=>{if(c=Wa(c),c in Br)return;Br[c]=!0;const a=c.endsWith(".css"),u=a?'[rel="stylesheet"]':"";if(!!s)for(let _=i.length-1;_>=0;_--){const T=i[_];if(T.href===c&&(!a||T.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${u}`))return;const g=document.createElement("link");if(g.rel=a?"stylesheet":Ka,a||(g.as="script",g.crossOrigin=""),g.href=c,l&&g.setAttribute("nonce",l),document.head.appendChild(g),a)return new Promise((_,T)=>{g.addEventListener("load",_),g.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${c}`)))})}))}return r.then(()=>t()).catch(i=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=i,window.dispatchEvent(o),!o.defaultPrevented)throw i})},Ru=Ti({setup(e,{slots:t}){const n=Te(!1);return Rt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Ou(){Ce&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(a=>a.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Lu(){if(Ce){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(u=>u.remove());let a=c.textContent||"";o&&(a=a.replace(/^ *(\$|>) /gm,"").trim()),qa(a).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const u=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,u)})}})}}async function qa(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function Pu(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=cs(l);for(const a of document.head.children)if(a.isEqualNode(c)){s.push(a);return}});return}const o=i.map(cs);s.forEach((l,c)=>{const a=o.findIndex(u=>u==null?void 0:u.isEqualNode(l??null));a!==-1?delete o[a]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};wi(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],a=po(o,i);a!==document.title&&(document.title=a);const u=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==u&&h.setAttribute("content",u):cs(["meta",{name:"description",content:u}]),r(go(o.head,za(c)))})}function cs([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function Ga(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function za(e){return e.filter(t=>!Ga(t))}const as=new Set,yo=()=>document.createElement("link"),Xa=e=>{const t=yo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Ja=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let an;const Ya=Ce&&(an=yo())&&an.relList&&an.relList.supports&&an.relList.supports("prefetch")?Xa:Ja;function Iu(){if(!Ce||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!as.has(c)){as.add(c);const a=Ha(c);a&&Ya(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):as.add(l))})})};Rt(s);const r=mo();Le(()=>r.path,s),Vs(()=>{n&&n.disconnect()})}export{xu as $,ki as A,cu as B,hu as C,vu as D,wu as E,bu as F,_u as G,Ct as H,ge as I,Rn as J,su as K,iu as L,eu as M,tu as N,lc as O,fu as P,Tu as Q,Qa as R,oc as S,Xi as T,yu as U,Ce as V,Pu as W,Ua as X,Cu as Y,Fa as Z,mu as _,ma as a,Ru as a0,at as a1,gu as a2,Su as a3,Ha as a4,Ti as a5,wi as a6,Iu as a7,Lu as a8,Ou as a9,vs as aa,Ui as b,oe as c,lu as d,ru as e,di as f,Wi as g,qi as h,ou as i,du as j,de as k,pu as l,Pl as m,On as n,Rt as o,Au as p,au as q,Te as r,$a as s,Za as t,Eu as u,uu as v,Le as w,nu as x,ae as y,yl as z}; diff --git a/assets/chunks/framework.HWRfC0Fd.js b/assets/chunks/framework.HWRfC0Fd.js deleted file mode 100644 index 40f76e1c..00000000 --- a/assets/chunks/framework.HWRfC0Fd.js +++ /dev/null @@ -1,17 +0,0 @@ -/** -* @vue/shared v3.4.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function ws(e,t){const n=new Set(e.split(","));return t?s=>n.has(s.toLowerCase()):s=>n.has(s)}const ee={},mt=[],xe=()=>{},wo=()=>!1,qt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Es=e=>e.startsWith("onUpdate:"),re=Object.assign,Cs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Eo=Object.prototype.hasOwnProperty,Y=(e,t)=>Eo.call(e,t),K=Array.isArray,yt=e=>Tn(e)==="[object Map]",Kr=e=>Tn(e)==="[object Set]",q=e=>typeof e=="function",ne=e=>typeof e=="string",At=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Wr=e=>(Z(e)||q(e))&&q(e.then)&&q(e.catch),qr=Object.prototype.toString,Tn=e=>qr.call(e),Co=e=>Tn(e).slice(8,-1),Gr=e=>Tn(e)==="[object Object]",xs=e=>ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=ws(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),An=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},xo=/-(\w)/g,Fe=An(e=>e.replace(xo,(t,n)=>n?n.toUpperCase():"")),So=/\B([A-Z])/g,ut=An(e=>e.replace(So,"-$1").toLowerCase()),Rn=An(e=>e.charAt(0).toUpperCase()+e.slice(1)),qn=An(e=>e?`on${Rn(e)}`:""),Qe=(e,t)=>!Object.is(e,t),un=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},us=e=>{const t=parseFloat(e);return isNaN(t)?e:t},To=e=>{const t=ne(e)?Number(e):NaN;return isNaN(t)?e:t};let Xs;const zr=()=>Xs||(Xs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function On(e){if(K(e)){const t={};for(let n=0;n{if(n){const s=n.split(Ro);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ln(e){let t="";if(ne(e))t=e;else if(K(e))for(let n=0;nne(e)?e:e==null?"":K(e)||Z(e)&&(e.toString===qr||!q(e.toString))?JSON.stringify(e,Jr,2):String(e),Jr=(e,t)=>t&&t.__v_isRef?Jr(e,t.value):yt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[Gn(s,i)+" =>"]=r,n),{})}:Kr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Gn(n))}:At(t)?Gn(t):Z(t)&&!K(t)&&!Gr(t)?String(t):t,Gn=(e,t="")=>{var n;return At(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.4.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let be;class Mo{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=be;try{return be=this,t()}finally{be=n}}}on(){be=this}off(){be=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),dt()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Je,n=ot;try{return Je=!0,ot=this,this._runnings++,Js(this),this.fn()}finally{Ys(this),this._runnings--,ot=n,Je=t}}stop(){var t;this.active&&(Js(this),Ys(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function $o(e){return e.value}function Js(e){e._trackId++,e._depsLength=0}function Ys(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},pn=new WeakMap,lt=Symbol(""),hs=Symbol("");function ye(e,t,n){if(Je&&ot){let s=pn.get(e);s||pn.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=ni(()=>s.delete(n))),ei(ot,r)}}function Ve(e,t,n,s,r,i){const o=pn.get(e);if(!o)return;let l=[];if(t==="clear")l=[...o.values()];else if(n==="length"&&K(e)){const c=Number(s);o.forEach((a,u)=>{(u==="length"||!At(u)&&u>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":K(e)?xs(n)&&l.push(o.get("length")):(l.push(o.get(lt)),yt(e)&&l.push(o.get(hs)));break;case"delete":K(e)||(l.push(o.get(lt)),yt(e)&&l.push(o.get(hs)));break;case"set":yt(e)&&l.push(o.get(lt));break}Ts();for(const c of l)c&&ti(c,4);As()}function jo(e,t){var n;return(n=pn.get(e))==null?void 0:n.get(t)}const Ho=ws("__proto__,__v_isRef,__isVue"),si=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(At)),Qs=Vo();function Vo(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=J(this);for(let i=0,o=this.length;i{e[t]=function(...n){ft(),Ts();const s=J(this)[t].apply(this,n);return As(),dt(),s}}),e}function Do(e){const t=J(this);return ye(t,"has",e),t.hasOwnProperty(e)}class ri{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Zo:ci:i?li:oi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=K(t);if(!r){if(o&&Y(Qs,n))return Reflect.get(Qs,n,s);if(n==="hasOwnProperty")return Do}const l=Reflect.get(t,n,s);return(At(n)?si.has(n):Ho(n))||(r||ye(t,"get",n),i)?l:de(l)?o&&xs(n)?l:l.value:Z(l)?r?In(l):Ct(l):l}}class ii extends ri{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=xt(i);if(!gn(s)&&!xt(s)&&(i=J(i),s=J(s)),!K(t)&&de(i)&&!de(s))return c?!1:(i.value=s,!0)}const o=K(t)&&xs(n)?Number(n)e,Pn=e=>Reflect.getPrototypeOf(e);function Yt(e,t,n=!1,s=!1){e=e.__v_raw;const r=J(e),i=J(t);n||(Qe(t,i)&&ye(r,"get",t),ye(r,"get",i));const{has:o}=Pn(r),l=s?Rs:n?Ps:Dt;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Qt(e,t=!1){const n=this.__v_raw,s=J(n),r=J(e);return t||(Qe(e,r)&&ye(s,"has",e),ye(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Zt(e,t=!1){return e=e.__v_raw,!t&&ye(J(e),"iterate",lt),Reflect.get(e,"size",e)}function Zs(e){e=J(e);const t=J(this);return Pn(t).has.call(t,e)||(t.add(e),Ve(t,"add",e,e)),this}function er(e,t){t=J(t);const n=J(this),{has:s,get:r}=Pn(n);let i=s.call(n,e);i||(e=J(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?Qe(t,o)&&Ve(n,"set",e,t):Ve(n,"add",e,t),this}function tr(e){const t=J(this),{has:n,get:s}=Pn(t);let r=n.call(t,e);r||(e=J(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&Ve(t,"delete",e,void 0),i}function nr(){const e=J(this),t=e.size!==0,n=e.clear();return t&&Ve(e,"clear",void 0,void 0),n}function en(e,t){return function(s,r){const i=this,o=i.__v_raw,l=J(o),c=t?Rs:e?Ps:Dt;return!e&&ye(l,"iterate",lt),o.forEach((a,u)=>s.call(r,c(a),c(u),i))}}function tn(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=yt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,a=r[e](...s),u=n?Rs:t?Ps:Dt;return!t&&ye(i,"iterate",c?hs:lt),{next(){const{value:h,done:m}=a.next();return m?{value:h,done:m}:{value:l?[u(h[0]),u(h[1])]:u(h),done:m}},[Symbol.iterator](){return this}}}}function Be(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Wo(){const e={get(i){return Yt(this,i)},get size(){return Zt(this)},has:Qt,add:Zs,set:er,delete:tr,clear:nr,forEach:en(!1,!1)},t={get(i){return Yt(this,i,!1,!0)},get size(){return Zt(this)},has:Qt,add:Zs,set:er,delete:tr,clear:nr,forEach:en(!1,!0)},n={get(i){return Yt(this,i,!0)},get size(){return Zt(this,!0)},has(i){return Qt.call(this,i,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:en(!0,!1)},s={get(i){return Yt(this,i,!0,!0)},get size(){return Zt(this,!0)},has(i){return Qt.call(this,i,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:en(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=tn(i,!1,!1),n[i]=tn(i,!0,!1),t[i]=tn(i,!1,!0),s[i]=tn(i,!0,!0)}),[e,n,t,s]}const[qo,Go,zo,Xo]=Wo();function Os(e,t){const n=t?e?Xo:zo:e?Go:qo;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Y(n,r)&&r in s?n:s,r,i)}const Jo={get:Os(!1,!1)},Yo={get:Os(!1,!0)},Qo={get:Os(!0,!1)},oi=new WeakMap,li=new WeakMap,ci=new WeakMap,Zo=new WeakMap;function el(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function tl(e){return e.__v_skip||!Object.isExtensible(e)?0:el(Co(e))}function Ct(e){return xt(e)?e:Ls(e,!1,Bo,Jo,oi)}function nl(e){return Ls(e,!1,Ko,Yo,li)}function In(e){return Ls(e,!0,ko,Qo,ci)}function Ls(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=tl(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function bt(e){return xt(e)?bt(e.__v_raw):!!(e&&e.__v_isReactive)}function xt(e){return!!(e&&e.__v_isReadonly)}function gn(e){return!!(e&&e.__v_isShallow)}function ai(e){return bt(e)||xt(e)}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Mt(e){return Object.isExtensible(e)&&hn(e,"__v_skip",!0),e}const Dt=e=>Z(e)?Ct(e):e,Ps=e=>Z(e)?In(e):e;class ui{constructor(t,n,s,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ss(()=>t(this._value),()=>Nt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Qe(t._value,t._value=t.effect.run())&&Nt(t,4),Is(t),t.effect._dirtyLevel>=2&&Nt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function sl(e,t,n=!1){let s,r;const i=q(e);return i?(s=e,r=xe):(s=e.get,r=e.set),new ui(s,r,i||!r,n)}function Is(e){var t;Je&&ot&&(e=J(e),ei(ot,(t=e.dep)!=null?t:e.dep=ni(()=>e.dep=void 0,e instanceof ui?e:void 0)))}function Nt(e,t=4,n){e=J(e);const s=e.dep;s&&ti(s,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function Te(e){return di(e,!1)}function fi(e){return di(e,!0)}function di(e,t){return de(e)?e:new rl(e,t)}class rl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Dt(t)}get value(){return Is(this),this._value}set value(t){const n=this.__v_isShallow||gn(t)||xt(t);t=n?t:J(t),Qe(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Dt(t),Nt(this,4))}}function hi(e){return de(e)?e.value:e}const il={get:(e,t,n)=>hi(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return de(r)&&!de(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function pi(e){return bt(e)?e:new Proxy(e,il)}class ol{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>Is(this),()=>Nt(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function ll(e){return new ol(e)}class cl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return jo(J(this._object),this._key)}}class al{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function ul(e,t,n){return de(e)?e:q(e)?new al(e):Z(e)&&arguments.length>1?fl(e,t,n):Te(e)}function fl(e,t,n){const s=e[t];return de(s)?s:new cl(e,t,n)}/** -* @vue/runtime-core v3.4.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Ye(e,t,n,s){try{return s?e(...s):e()}catch(r){Mn(r,t,n)}}function Se(e,t,n,s){if(q(e)){const i=Ye(e,t,n,s);return i&&Wr(i)&&i.catch(o=>{Mn(o,t,n)}),i}const r=[];for(let i=0;i>>1,r=he[s],i=Bt(r);iNe&&he.splice(t,1)}function gl(e){K(e)?vt.push(...e):(!qe||!qe.includes(e,e.allowRecurse?st+1:st))&&vt.push(e),mi()}function sr(e,t,n=Ut?Ne+1:0){for(;nBt(n)-Bt(s));if(vt.length=0,qe){qe.push(...t);return}for(qe=t,st=0;ste.id==null?1/0:e.id,ml=(e,t)=>{const n=Bt(e)-Bt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function yi(e){ps=!1,Ut=!0,he.sort(ml);try{for(Ne=0;Nene(v)?v.trim():v)),h&&(r=n.map(us))}let l,c=s[l=qn(t)]||s[l=qn(Fe(t))];!c&&i&&(c=s[l=qn(ut(t))]),c&&Se(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Se(a,e,6,r)}}function _i(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=a=>{const u=_i(a,t,!0);u&&(l=!0,re(o,u))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(Z(e)&&s.set(e,null),null):(K(i)?i.forEach(c=>o[c]=null):re(o,i),Z(e)&&s.set(e,o),o)}function Nn(e,t){return!e||!qt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,ut(t))||Y(e,t))}let le=null,Fn=null;function yn(e){const t=le;return le=e,Fn=e&&e.type.__scopeId||null,t}function tu(e){Fn=e}function nu(){Fn=null}function _l(e,t=le,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&gr(-1);const i=yn(t);let o;try{o=e(...r)}finally{yn(i),s._d&&gr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function zn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[o],slots:l,attrs:c,emit:a,render:u,renderCache:h,data:m,setupState:v,ctx:A,inheritAttrs:P}=e;let F,N;const $=yn(e);try{if(n.shapeFlag&4){const y=r||s,M=y;F=Re(u.call(M,y,h,i,v,m,A)),N=c}else{const y=t;F=Re(y.length>1?y(i,{attrs:c,slots:l,emit:a}):y(i,null)),N=t.props?c:bl(c)}}catch(y){Ht.length=0,Mn(y,e,1),F=ae(ve)}let p=F;if(N&&P!==!1){const y=Object.keys(N),{shapeFlag:M}=p;y.length&&M&7&&(o&&y.some(Es)&&(N=vl(N,o)),p=Ze(p,N))}return n.dirs&&(p=Ze(p),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&(p.transition=n.transition),F=p,yn($),F}const bl=e=>{let t;for(const n in e)(n==="class"||n==="style"||qt(n))&&((t||(t={}))[n]=e[n]);return t},vl=(e,t)=>{const n={};for(const s in e)(!Es(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function wl(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,a=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?rr(s,o,a):!!o;if(c&8){const u=t.dynamicProps;for(let h=0;he.__isSuspense;function wi(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):gl(e)}const xl=Symbol.for("v-scx"),Sl=()=>Et(xl);function Ei(e,t){return $s(e,null,t)}const nn={};function Le(e,t,n){return $s(e,t,n)}function $s(e,t,{immediate:n,deep:s,flush:r,once:i,onTrack:o,onTrigger:l}=ee){if(t&&i){const O=t;t=(...D)=>{O(...D),M()}}const c=fe,a=O=>s===!0?O:it(O,s===!1?1:void 0);let u,h=!1,m=!1;if(de(e)?(u=()=>e.value,h=gn(e)):bt(e)?(u=()=>a(e),h=!0):K(e)?(m=!0,h=e.some(O=>bt(O)||gn(O)),u=()=>e.map(O=>{if(de(O))return O.value;if(bt(O))return a(O);if(q(O))return Ye(O,c,2)})):q(e)?t?u=()=>Ye(e,c,2):u=()=>(v&&v(),Se(e,c,3,[A])):u=xe,t&&s){const O=u;u=()=>it(O())}let v,A=O=>{v=p.onStop=()=>{Ye(O,c,4),v=p.onStop=void 0}},P;if(Dn)if(A=xe,t?n&&Se(t,c,3,[u(),m?[]:void 0,A]):u(),r==="sync"){const O=Sl();P=O.__watcherHandles||(O.__watcherHandles=[])}else return xe;let F=m?new Array(e.length).fill(nn):nn;const N=()=>{if(!(!p.active||!p.dirty))if(t){const O=p.run();(s||h||(m?O.some((D,R)=>Qe(D,F[R])):Qe(O,F)))&&(v&&v(),Se(t,c,3,[O,F===nn?void 0:m&&F[0]===nn?[]:F,A]),F=O)}else p.run()};N.allowRecurse=!!t;let $;r==="sync"?$=N:r==="post"?$=()=>me(N,c&&c.suspense):(N.pre=!0,c&&(N.id=c.uid),$=()=>Ns(N));const p=new Ss(u,xe,$),y=Yr(),M=()=>{p.stop(),y&&Cs(y.effects,p)};return t?n?N():F=p.run():r==="post"?me(p.run.bind(p),c&&c.suspense):p.run(),P&&P.push(M),M}function Tl(e,t,n){const s=this.proxy,r=ne(e)?e.includes(".")?Ci(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=zt(this),l=$s(r,i.bind(s),n);return o(),l}function Ci(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r0){if(n>=t)return e;n++}if(s=s||new Set,s.has(e))return e;if(s.add(e),de(e))it(e.value,t,n,s);else if(K(e))for(let r=0;r{it(r,t,n,s)});else if(Gr(e))for(const r in e)it(e[r],t,n,s);return e}function iu(e,t){if(le===null)return e;const n=Un(le)||le.proxy,s=e.dirs||(e.dirs=[]);for(let r=0;r{e.isMounted=!0}),Li(()=>{e.isUnmounting=!0}),e}const we=[Function,Array],Si={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:we,onEnter:we,onAfterEnter:we,onEnterCancelled:we,onBeforeLeave:we,onLeave:we,onAfterLeave:we,onLeaveCancelled:we,onBeforeAppear:we,onAppear:we,onAfterAppear:we,onAppearCancelled:we},Al={name:"BaseTransition",props:Si,setup(e,{slots:t}){const n=Vn(),s=xi();return()=>{const r=t.default&&js(t.default(),!0);if(!r||!r.length)return;let i=r[0];if(r.length>1){for(const m of r)if(m.type!==ve){i=m;break}}const o=J(e),{mode:l}=o;if(s.isLeaving)return Xn(i);const c=or(i);if(!c)return Xn(i);const a=kt(c,o,s,n);Kt(c,a);const u=n.subTree,h=u&&or(u);if(h&&h.type!==ve&&!rt(c,h)){const m=kt(h,o,s,n);if(Kt(h,m),l==="out-in")return s.isLeaving=!0,m.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Xn(i);l==="in-out"&&c.type!==ve&&(m.delayLeave=(v,A,P)=>{const F=Ti(s,h);F[String(h.key)]=h,v[Ge]=()=>{A(),v[Ge]=void 0,delete a.delayedLeave},a.delayedLeave=P})}return i}}},Rl=Al;function Ti(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function kt(e,t,n,s){const{appear:r,mode:i,persisted:o=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:u,onBeforeLeave:h,onLeave:m,onAfterLeave:v,onLeaveCancelled:A,onBeforeAppear:P,onAppear:F,onAfterAppear:N,onAppearCancelled:$}=t,p=String(e.key),y=Ti(n,e),M=(R,U)=>{R&&Se(R,s,9,U)},O=(R,U)=>{const E=U[1];M(R,U),K(R)?R.every(k=>k.length<=1)&&E():R.length<=1&&E()},D={mode:i,persisted:o,beforeEnter(R){let U=l;if(!n.isMounted)if(r)U=P||l;else return;R[Ge]&&R[Ge](!0);const E=y[p];E&&rt(e,E)&&E.el[Ge]&&E.el[Ge](),M(U,[R])},enter(R){let U=c,E=a,k=u;if(!n.isMounted)if(r)U=F||c,E=N||a,k=$||u;else return;let S=!1;const G=R[sn]=ie=>{S||(S=!0,ie?M(k,[R]):M(E,[R]),D.delayedLeave&&D.delayedLeave(),R[sn]=void 0)};U?O(U,[R,G]):G()},leave(R,U){const E=String(e.key);if(R[sn]&&R[sn](!0),n.isUnmounting)return U();M(h,[R]);let k=!1;const S=R[Ge]=G=>{k||(k=!0,U(),G?M(A,[R]):M(v,[R]),R[Ge]=void 0,y[E]===e&&delete y[E])};y[E]=e,m?O(m,[R,S]):S()},clone(R){return kt(R,t,n,s)}};return D}function Xn(e){if($n(e))return e=Ze(e),e.children=null,e}function or(e){return $n(e)?e.children?e.children[0]:void 0:e}function Kt(e,t){e.shapeFlag&6&&e.component?Kt(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function js(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader,$n=e=>e.type.__isKeepAlive;function Ol(e,t){Ri(e,"a",t)}function Ll(e,t){Ri(e,"da",t)}function Ri(e,t,n=fe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(jn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)$n(r.parent.vnode)&&Pl(s,t,n,r),r=r.parent}}function Pl(e,t,n,s){const r=jn(t,e,s,!0);Hs(()=>{Cs(s[t],r)},n)}function jn(e,t,n=fe,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;ft();const l=zt(n),c=Se(t,n,e,o);return l(),dt(),c});return s?r.unshift(i):r.push(i),i}}const Ue=e=>(t,n=fe)=>(!Dn||e==="sp")&&jn(e,(...s)=>t(...s),n),Il=Ue("bm"),Rt=Ue("m"),Ml=Ue("bu"),Oi=Ue("u"),Li=Ue("bum"),Hs=Ue("um"),Nl=Ue("sp"),Fl=Ue("rtg"),$l=Ue("rtc");function jl(e,t=fe){jn("ec",e,t)}function ou(e,t,n,s){let r;const i=n&&n[s];if(K(e)||ne(e)){r=new Array(e.length);for(let o=0,l=e.length;ot(o,l,void 0,i&&i[l]));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;lvn(t)?!(t.type===ve||t.type===ge&&!Pi(t.children)):!0)?e:null}const gs=e=>e?zi(e)?Un(e)||e.proxy:gs(e.parent):null,Ft=re(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>gs(e.parent),$root:e=>gs(e.root),$emit:e=>e.emit,$options:e=>Vs(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Ns(e.update)}),$nextTick:e=>e.n||(e.n=Gt.bind(e.proxy)),$watch:e=>Tl.bind(e)}),Jn=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),Hl={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Jn(s,t))return o[t]=1,s[t];if(r!==ee&&Y(r,t))return o[t]=2,r[t];if((a=e.propsOptions[0])&&Y(a,t))return o[t]=3,i[t];if(n!==ee&&Y(n,t))return o[t]=4,n[t];ms&&(o[t]=0)}}const u=Ft[t];let h,m;if(u)return t==="$attrs"&&ye(e,"get",t),u(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&Y(n,t))return o[t]=4,n[t];if(m=c.config.globalProperties,Y(m,t))return m[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Jn(r,t)?(r[t]=n,!0):s!==ee&&Y(s,t)?(s[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==ee&&Y(e,o)||Jn(t,o)||(l=i[0])&&Y(l,o)||Y(s,o)||Y(Ft,o)||Y(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function lr(e){return K(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ms=!0;function Vl(e){const t=Vs(e),n=e.proxy,s=e.ctx;ms=!1,t.beforeCreate&&cr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:a,created:u,beforeMount:h,mounted:m,beforeUpdate:v,updated:A,activated:P,deactivated:F,beforeDestroy:N,beforeUnmount:$,destroyed:p,unmounted:y,render:M,renderTracked:O,renderTriggered:D,errorCaptured:R,serverPrefetch:U,expose:E,inheritAttrs:k,components:S,directives:G,filters:ie}=t;if(a&&Dl(a,s,null),o)for(const X in o){const H=o[X];q(H)&&(s[X]=H.bind(n))}if(r){const X=r.call(n,n);Z(X)&&(e.data=Ct(X))}if(ms=!0,i)for(const X in i){const H=i[X],$e=q(H)?H.bind(n,n):q(H.get)?H.get.bind(n,n):xe,Xt=!q(H)&&q(H.set)?H.set.bind(n):xe,et=oe({get:$e,set:Xt});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>et.value,set:Pe=>et.value=Pe})}if(l)for(const X in l)Ii(l[X],s,n,X);if(c){const X=q(c)?c.call(n):c;Reflect.ownKeys(X).forEach(H=>{ql(H,X[H])})}u&&cr(u,e,"c");function V(X,H){K(H)?H.forEach($e=>X($e.bind(n))):H&&X(H.bind(n))}if(V(Il,h),V(Rt,m),V(Ml,v),V(Oi,A),V(Ol,P),V(Ll,F),V(jl,R),V($l,O),V(Fl,D),V(Li,$),V(Hs,y),V(Nl,U),K(E))if(E.length){const X=e.exposed||(e.exposed={});E.forEach(H=>{Object.defineProperty(X,H,{get:()=>n[H],set:$e=>n[H]=$e})})}else e.exposed||(e.exposed={});M&&e.render===xe&&(e.render=M),k!=null&&(e.inheritAttrs=k),S&&(e.components=S),G&&(e.directives=G)}function Dl(e,t,n=xe){K(e)&&(e=ys(e));for(const s in e){const r=e[s];let i;Z(r)?"default"in r?i=Et(r.from||s,r.default,!0):i=Et(r.from||s):i=Et(r),de(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function cr(e,t,n){Se(K(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ii(e,t,n,s){const r=s.includes(".")?Ci(n,s):()=>n[s];if(ne(e)){const i=t[e];q(i)&&Le(r,i)}else if(q(e))Le(r,e.bind(n));else if(Z(e))if(K(e))e.forEach(i=>Ii(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Le(r,i,e)}}function Vs(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>_n(c,a,o,!0)),_n(c,t,o)),Z(t)&&i.set(t,c),c}function _n(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&_n(e,i,n,!0),r&&r.forEach(o=>_n(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Ul[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Ul={data:ar,props:ur,emits:ur,methods:It,computed:It,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:It,directives:It,watch:kl,provide:ar,inject:Bl};function ar(e,t){return t?e?function(){return re(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function Bl(e,t){return It(ys(e),ys(t))}function ys(e){if(K(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}function Gl(e,t,n,s=!1){const r={},i={};hn(i,Hn,1),e.propsDefaults=Object.create(null),Ni(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:nl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function zl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let a=!1;if((s||o>0)&&!(o&16)){if(o&8){const u=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,v]=Fi(h,t,!0);re(o,m),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!i&&!c)return Z(e)&&s.set(e,mt),mt;if(K(i))for(let u=0;u-1,v[1]=P<0||A-1||Y(v,"default"))&&l.push(h)}}}const a=[o,l];return Z(e)&&s.set(e,a),a}function fr(e){return e[0]!=="$"&&!_t(e)}function dr(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function hr(e,t){return dr(e)===dr(t)}function pr(e,t){return K(t)?t.findIndex(n=>hr(n,e)):q(t)&&hr(t,e)?0:-1}const $i=e=>e[0]==="_"||e==="$stable",Ds=e=>K(e)?e.map(Re):[Re(e)],Xl=(e,t,n)=>{if(t._n)return t;const s=_l((...r)=>Ds(t(...r)),n);return s._c=!1,s},ji=(e,t,n)=>{const s=e._ctx;for(const r in e){if($i(r))continue;const i=e[r];if(q(i))t[r]=Xl(r,i,s);else if(i!=null){const o=Ds(i);t[r]=()=>o}}},Hi=(e,t)=>{const n=Ds(t);e.slots.default=()=>n},Jl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=J(t),hn(t,"_",n)):ji(t,e.slots={})}else e.slots={},t&&Hi(e,t);hn(e.slots,Hn,1)},Yl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=ee;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(re(r,t),!n&&l===1&&delete r._):(i=!t.$stable,ji(t,r)),o=t}else t&&(Hi(e,t),o={default:1});if(i)for(const l in r)!$i(l)&&o[l]==null&&delete r[l]};function bn(e,t,n,s,r=!1){if(K(e)){e.forEach((m,v)=>bn(m,t&&(K(t)?t[v]:t),n,s,r));return}if(wt(s)&&!r)return;const i=s.shapeFlag&4?Un(s.component)||s.component.proxy:s.el,o=r?null:i,{i:l,r:c}=e,a=t&&t.r,u=l.refs===ee?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(ne(a)?(u[a]=null,Y(h,a)&&(h[a]=null)):de(a)&&(a.value=null)),q(c))Ye(c,l,12,[o,u]);else{const m=ne(c),v=de(c);if(m||v){const A=()=>{if(e.f){const P=m?Y(h,c)?h[c]:u[c]:c.value;r?K(P)&&Cs(P,i):K(P)?P.includes(i)||P.push(i):m?(u[c]=[i],Y(h,c)&&(h[c]=u[c])):(c.value=[i],e.k&&(u[e.k]=c.value))}else m?(u[c]=o,Y(h,c)&&(h[c]=o)):v&&(c.value=o,e.k&&(u[e.k]=o))};o?(A.id=-1,me(A,n)):A()}}}let ke=!1;const Ql=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Zl=e=>e.namespaceURI.includes("MathML"),rn=e=>{if(Ql(e))return"svg";if(Zl(e))return"mathml"},on=e=>e.nodeType===8;function ec(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:a}}=e,u=(p,y)=>{if(!y.hasChildNodes()){n(null,p,y),mn(),y._vnode=p;return}ke=!1,h(y.firstChild,p,null,null,null),mn(),y._vnode=p,ke&&console.error("Hydration completed but contains mismatches.")},h=(p,y,M,O,D,R=!1)=>{const U=on(p)&&p.data==="[",E=()=>P(p,y,M,O,D,U),{type:k,ref:S,shapeFlag:G,patchFlag:ie}=y;let ue=p.nodeType;y.el=p,ie===-2&&(R=!1,y.dynamicChildren=null);let V=null;switch(k){case St:ue!==3?y.children===""?(c(y.el=r(""),o(p),p),V=p):V=E():(p.data!==y.children&&(ke=!0,p.data=y.children),V=i(p));break;case ve:$(p)?(V=i(p),N(y.el=p.content.firstChild,p,M)):ue!==8||U?V=E():V=i(p);break;case jt:if(U&&(p=i(p),ue=p.nodeType),ue===1||ue===3){V=p;const X=!y.children.length;for(let H=0;H{R=R||!!y.dynamicChildren;const{type:U,props:E,patchFlag:k,shapeFlag:S,dirs:G,transition:ie}=y,ue=U==="input"||U==="option";if(ue||k!==-1){G&&Me(y,null,M,"created");let V=!1;if($(p)){V=Vi(O,ie)&&M&&M.vnode.props&&M.vnode.props.appear;const H=p.content.firstChild;V&&ie.beforeEnter(H),N(H,p,M),y.el=p=H}if(S&16&&!(E&&(E.innerHTML||E.textContent))){let H=v(p.firstChild,y,p,M,O,D,R);for(;H;){ke=!0;const $e=H;H=H.nextSibling,l($e)}}else S&8&&p.textContent!==y.children&&(ke=!0,p.textContent=y.children);if(E)if(ue||!R||k&48)for(const H in E)(ue&&(H.endsWith("value")||H==="indeterminate")||qt(H)&&!_t(H)||H[0]===".")&&s(p,H,null,E[H],void 0,void 0,M);else E.onClick&&s(p,"onClick",null,E.onClick,void 0,void 0,M);let X;(X=E&&E.onVnodeBeforeMount)&&Ee(X,M,y),G&&Me(y,null,M,"beforeMount"),((X=E&&E.onVnodeMounted)||G||V)&&wi(()=>{X&&Ee(X,M,y),V&&ie.enter(p),G&&Me(y,null,M,"mounted")},O)}return p.nextSibling},v=(p,y,M,O,D,R,U)=>{U=U||!!y.dynamicChildren;const E=y.children,k=E.length;for(let S=0;S{const{slotScopeIds:U}=y;U&&(D=D?D.concat(U):U);const E=o(p),k=v(i(p),y,E,M,O,D,R);return k&&on(k)&&k.data==="]"?i(y.anchor=k):(ke=!0,c(y.anchor=a("]"),E,k),k)},P=(p,y,M,O,D,R)=>{if(ke=!0,y.el=null,R){const k=F(p);for(;;){const S=i(p);if(S&&S!==k)l(S);else break}}const U=i(p),E=o(p);return l(p),n(null,y,E,U,M,O,rn(E),D),U},F=(p,y="[",M="]")=>{let O=0;for(;p;)if(p=i(p),p&&on(p)&&(p.data===y&&O++,p.data===M)){if(O===0)return i(p);O--}return p},N=(p,y,M)=>{const O=y.parentNode;O&&O.replaceChild(p,y);let D=M;for(;D;)D.vnode.el===y&&(D.vnode.el=D.subTree.el=p),D=D.parent},$=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[u,h]}const me=wi;function tc(e){return nc(e,ec)}function nc(e,t){const n=zr();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:a,setElementText:u,parentNode:h,nextSibling:m,setScopeId:v=xe,insertStaticContent:A}=e,P=(f,d,g,_=null,b=null,x=null,L=void 0,C=null,T=!!d.dynamicChildren)=>{if(f===d)return;f&&!rt(f,d)&&(_=Jt(f),Pe(f,b,x,!0),f=null),d.patchFlag===-2&&(T=!1,d.dynamicChildren=null);const{type:w,ref:I,shapeFlag:B}=d;switch(w){case St:F(f,d,g,_);break;case ve:N(f,d,g,_);break;case jt:f==null&&$(d,g,_,L);break;case ge:S(f,d,g,_,b,x,L,C,T);break;default:B&1?M(f,d,g,_,b,x,L,C,T):B&6?G(f,d,g,_,b,x,L,C,T):(B&64||B&128)&&w.process(f,d,g,_,b,x,L,C,T,ht)}I!=null&&b&&bn(I,f&&f.ref,x,d||f,!d)},F=(f,d,g,_)=>{if(f==null)s(d.el=l(d.children),g,_);else{const b=d.el=f.el;d.children!==f.children&&a(b,d.children)}},N=(f,d,g,_)=>{f==null?s(d.el=c(d.children||""),g,_):d.el=f.el},$=(f,d,g,_)=>{[f.el,f.anchor]=A(f.children,d,g,_,f.el,f.anchor)},p=({el:f,anchor:d},g,_)=>{let b;for(;f&&f!==d;)b=m(f),s(f,g,_),f=b;s(d,g,_)},y=({el:f,anchor:d})=>{let g;for(;f&&f!==d;)g=m(f),r(f),f=g;r(d)},M=(f,d,g,_,b,x,L,C,T)=>{d.type==="svg"?L="svg":d.type==="math"&&(L="mathml"),f==null?O(d,g,_,b,x,L,C,T):U(f,d,b,x,L,C,T)},O=(f,d,g,_,b,x,L,C)=>{let T,w;const{props:I,shapeFlag:B,transition:j,dirs:W}=f;if(T=f.el=o(f.type,x,I&&I.is,I),B&8?u(T,f.children):B&16&&R(f.children,T,null,_,b,Yn(f,x),L,C),W&&Me(f,null,_,"created"),D(T,f,f.scopeId,L,_),I){for(const Q in I)Q!=="value"&&!_t(Q)&&i(T,Q,null,I[Q],x,f.children,_,b,je);"value"in I&&i(T,"value",null,I.value,x),(w=I.onVnodeBeforeMount)&&Ee(w,_,f)}W&&Me(f,null,_,"beforeMount");const z=Vi(b,j);z&&j.beforeEnter(T),s(T,d,g),((w=I&&I.onVnodeMounted)||z||W)&&me(()=>{w&&Ee(w,_,f),z&&j.enter(T),W&&Me(f,null,_,"mounted")},b)},D=(f,d,g,_,b)=>{if(g&&v(f,g),_)for(let x=0;x<_.length;x++)v(f,_[x]);if(b){let x=b.subTree;if(d===x){const L=b.vnode;D(f,L,L.scopeId,L.slotScopeIds,b.parent)}}},R=(f,d,g,_,b,x,L,C,T=0)=>{for(let w=T;w{const C=d.el=f.el;let{patchFlag:T,dynamicChildren:w,dirs:I}=d;T|=f.patchFlag&16;const B=f.props||ee,j=d.props||ee;let W;if(g&&tt(g,!1),(W=j.onVnodeBeforeUpdate)&&Ee(W,g,d,f),I&&Me(d,f,g,"beforeUpdate"),g&&tt(g,!0),w?E(f.dynamicChildren,w,C,g,_,Yn(d,b),x):L||H(f,d,C,null,g,_,Yn(d,b),x,!1),T>0){if(T&16)k(C,d,B,j,g,_,b);else if(T&2&&B.class!==j.class&&i(C,"class",null,j.class,b),T&4&&i(C,"style",B.style,j.style,b),T&8){const z=d.dynamicProps;for(let Q=0;Q{W&&Ee(W,g,d,f),I&&Me(d,f,g,"updated")},_)},E=(f,d,g,_,b,x,L)=>{for(let C=0;C{if(g!==_){if(g!==ee)for(const C in g)!_t(C)&&!(C in _)&&i(f,C,g[C],null,L,d.children,b,x,je);for(const C in _){if(_t(C))continue;const T=_[C],w=g[C];T!==w&&C!=="value"&&i(f,C,w,T,L,d.children,b,x,je)}"value"in _&&i(f,"value",g.value,_.value,L)}},S=(f,d,g,_,b,x,L,C,T)=>{const w=d.el=f?f.el:l(""),I=d.anchor=f?f.anchor:l("");let{patchFlag:B,dynamicChildren:j,slotScopeIds:W}=d;W&&(C=C?C.concat(W):W),f==null?(s(w,g,_),s(I,g,_),R(d.children||[],g,I,b,x,L,C,T)):B>0&&B&64&&j&&f.dynamicChildren?(E(f.dynamicChildren,j,g,b,x,L,C),(d.key!=null||b&&d===b.subTree)&&Di(f,d,!0)):H(f,d,g,I,b,x,L,C,T)},G=(f,d,g,_,b,x,L,C,T)=>{d.slotScopeIds=C,f==null?d.shapeFlag&512?b.ctx.activate(d,g,_,L,T):ie(d,g,_,b,x,L,T):ue(f,d,T)},ie=(f,d,g,_,b,x,L)=>{const C=f.component=fc(f,_,b);if($n(f)&&(C.ctx.renderer=ht),dc(C),C.asyncDep){if(b&&b.registerDep(C,V),!f.el){const T=C.subTree=ae(ve);N(null,T,d,g)}}else V(C,f,d,g,b,x,L)},ue=(f,d,g)=>{const _=d.component=f.component;if(wl(f,d,g))if(_.asyncDep&&!_.asyncResolved){X(_,d,g);return}else _.next=d,pl(_.update),_.effect.dirty=!0,_.update();else d.el=f.el,_.vnode=d},V=(f,d,g,_,b,x,L)=>{const C=()=>{if(f.isMounted){let{next:I,bu:B,u:j,parent:W,vnode:z}=f;{const pt=Ui(f);if(pt){I&&(I.el=z.el,X(f,I,L)),pt.asyncDep.then(()=>{f.isUnmounted||C()});return}}let Q=I,te;tt(f,!1),I?(I.el=z.el,X(f,I,L)):I=z,B&&un(B),(te=I.props&&I.props.onVnodeBeforeUpdate)&&Ee(te,W,I,z),tt(f,!0);const ce=zn(f),Ae=f.subTree;f.subTree=ce,P(Ae,ce,h(Ae.el),Jt(Ae),f,b,x),I.el=ce.el,Q===null&&El(f,ce.el),j&&me(j,b),(te=I.props&&I.props.onVnodeUpdated)&&me(()=>Ee(te,W,I,z),b)}else{let I;const{el:B,props:j}=d,{bm:W,m:z,parent:Q}=f,te=wt(d);if(tt(f,!1),W&&un(W),!te&&(I=j&&j.onVnodeBeforeMount)&&Ee(I,Q,d),tt(f,!0),B&&Wn){const ce=()=>{f.subTree=zn(f),Wn(B,f.subTree,f,b,null)};te?d.type.__asyncLoader().then(()=>!f.isUnmounted&&ce()):ce()}else{const ce=f.subTree=zn(f);P(null,ce,g,_,f,b,x),d.el=ce.el}if(z&&me(z,b),!te&&(I=j&&j.onVnodeMounted)){const ce=d;me(()=>Ee(I,Q,ce),b)}(d.shapeFlag&256||Q&&wt(Q.vnode)&&Q.vnode.shapeFlag&256)&&f.a&&me(f.a,b),f.isMounted=!0,d=g=_=null}},T=f.effect=new Ss(C,xe,()=>Ns(w),f.scope),w=f.update=()=>{T.dirty&&T.run()};w.id=f.uid,tt(f,!0),w()},X=(f,d,g)=>{d.component=f;const _=f.vnode.props;f.vnode=d,f.next=null,zl(f,d.props,_,g),Yl(f,d.children,g),ft(),sr(f),dt()},H=(f,d,g,_,b,x,L,C,T=!1)=>{const w=f&&f.children,I=f?f.shapeFlag:0,B=d.children,{patchFlag:j,shapeFlag:W}=d;if(j>0){if(j&128){Xt(w,B,g,_,b,x,L,C,T);return}else if(j&256){$e(w,B,g,_,b,x,L,C,T);return}}W&8?(I&16&&je(w,b,x),B!==w&&u(g,B)):I&16?W&16?Xt(w,B,g,_,b,x,L,C,T):je(w,b,x,!0):(I&8&&u(g,""),W&16&&R(B,g,_,b,x,L,C,T))},$e=(f,d,g,_,b,x,L,C,T)=>{f=f||mt,d=d||mt;const w=f.length,I=d.length,B=Math.min(w,I);let j;for(j=0;jI?je(f,b,x,!0,!1,B):R(d,g,_,b,x,L,C,T,B)},Xt=(f,d,g,_,b,x,L,C,T)=>{let w=0;const I=d.length;let B=f.length-1,j=I-1;for(;w<=B&&w<=j;){const W=f[w],z=d[w]=T?ze(d[w]):Re(d[w]);if(rt(W,z))P(W,z,g,null,b,x,L,C,T);else break;w++}for(;w<=B&&w<=j;){const W=f[B],z=d[j]=T?ze(d[j]):Re(d[j]);if(rt(W,z))P(W,z,g,null,b,x,L,C,T);else break;B--,j--}if(w>B){if(w<=j){const W=j+1,z=Wj)for(;w<=B;)Pe(f[w],b,x,!0),w++;else{const W=w,z=w,Q=new Map;for(w=z;w<=j;w++){const _e=d[w]=T?ze(d[w]):Re(d[w]);_e.key!=null&&Q.set(_e.key,w)}let te,ce=0;const Ae=j-z+1;let pt=!1,qs=0;const Ot=new Array(Ae);for(w=0;w=Ae){Pe(_e,b,x,!0);continue}let Ie;if(_e.key!=null)Ie=Q.get(_e.key);else for(te=z;te<=j;te++)if(Ot[te-z]===0&&rt(_e,d[te])){Ie=te;break}Ie===void 0?Pe(_e,b,x,!0):(Ot[Ie-z]=w+1,Ie>=qs?qs=Ie:pt=!0,P(_e,d[Ie],g,null,b,x,L,C,T),ce++)}const Gs=pt?sc(Ot):mt;for(te=Gs.length-1,w=Ae-1;w>=0;w--){const _e=z+w,Ie=d[_e],zs=_e+1{const{el:x,type:L,transition:C,children:T,shapeFlag:w}=f;if(w&6){et(f.component.subTree,d,g,_);return}if(w&128){f.suspense.move(d,g,_);return}if(w&64){L.move(f,d,g,ht);return}if(L===ge){s(x,d,g);for(let B=0;BC.enter(x),b);else{const{leave:B,delayLeave:j,afterLeave:W}=C,z=()=>s(x,d,g),Q=()=>{B(x,()=>{z(),W&&W()})};j?j(x,z,Q):Q()}else s(x,d,g)},Pe=(f,d,g,_=!1,b=!1)=>{const{type:x,props:L,ref:C,children:T,dynamicChildren:w,shapeFlag:I,patchFlag:B,dirs:j}=f;if(C!=null&&bn(C,null,g,f,!0),I&256){d.ctx.deactivate(f);return}const W=I&1&&j,z=!wt(f);let Q;if(z&&(Q=L&&L.onVnodeBeforeUnmount)&&Ee(Q,d,f),I&6)vo(f.component,g,_);else{if(I&128){f.suspense.unmount(g,_);return}W&&Me(f,null,d,"beforeUnmount"),I&64?f.type.remove(f,d,g,b,ht,_):w&&(x!==ge||B>0&&B&64)?je(w,d,g,!1,!0):(x===ge&&B&384||!b&&I&16)&&je(T,d,g),_&&Ks(f)}(z&&(Q=L&&L.onVnodeUnmounted)||W)&&me(()=>{Q&&Ee(Q,d,f),W&&Me(f,null,d,"unmounted")},g)},Ks=f=>{const{type:d,el:g,anchor:_,transition:b}=f;if(d===ge){bo(g,_);return}if(d===jt){y(f);return}const x=()=>{r(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(f.shapeFlag&1&&b&&!b.persisted){const{leave:L,delayLeave:C}=b,T=()=>L(g,x);C?C(f.el,x,T):T()}else x()},bo=(f,d)=>{let g;for(;f!==d;)g=m(f),r(f),f=g;r(d)},vo=(f,d,g)=>{const{bum:_,scope:b,update:x,subTree:L,um:C}=f;_&&un(_),b.stop(),x&&(x.active=!1,Pe(L,f,d,g)),C&&me(C,d),me(()=>{f.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},je=(f,d,g,_=!1,b=!1,x=0)=>{for(let L=x;Lf.shapeFlag&6?Jt(f.component.subTree):f.shapeFlag&128?f.suspense.next():m(f.anchor||f.el);let kn=!1;const Ws=(f,d,g)=>{f==null?d._vnode&&Pe(d._vnode,null,null,!0):P(d._vnode||null,f,d,null,null,null,g),kn||(kn=!0,sr(),mn(),kn=!1),d._vnode=f},ht={p:P,um:Pe,m:et,r:Ks,mt:ie,mc:R,pc:H,pbc:E,n:Jt,o:e};let Kn,Wn;return t&&([Kn,Wn]=t(ht)),{render:Ws,hydrate:Kn,createApp:Wl(Ws,Kn)}}function Yn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Vi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Di(e,t,n=!1){const s=e.children,r=t.children;if(K(s)&&K(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function Ui(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ui(t)}const rc=e=>e.__isTeleport,ge=Symbol.for("v-fgt"),St=Symbol.for("v-txt"),ve=Symbol.for("v-cmt"),jt=Symbol.for("v-stc"),Ht=[];let Oe=null;function Bi(e=!1){Ht.push(Oe=e?null:[])}function ic(){Ht.pop(),Oe=Ht[Ht.length-1]||null}let Wt=1;function gr(e){Wt+=e}function ki(e){return e.dynamicChildren=Wt>0?Oe||mt:null,ic(),Wt>0&&Oe&&Oe.push(e),e}function cu(e,t,n,s,r,i){return ki(qi(e,t,n,s,r,i,!0))}function Ki(e,t,n,s,r){return ki(ae(e,t,n,s,r,!0))}function vn(e){return e?e.__v_isVNode===!0:!1}function rt(e,t){return e.type===t.type&&e.key===t.key}const Hn="__vInternal",Wi=({key:e})=>e??null,fn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ne(e)||de(e)||q(e)?{i:le,r:e,k:t,f:!!n}:e:null);function qi(e,t=null,n=null,s=0,r=null,i=e===ge?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Wi(t),ref:t&&fn(t),scopeId:Fn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:le};return l?(Us(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=ne(n)?8:16),Wt>0&&!o&&Oe&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Oe.push(c),c}const ae=oc;function oc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===bi)&&(e=ve),vn(e)){const l=Ze(e,t,!0);return n&&Us(l,n),Wt>0&&!i&&Oe&&(l.shapeFlag&6?Oe[Oe.indexOf(e)]=l:Oe.push(l)),l.patchFlag|=-2,l}if(yc(e)&&(e=e.__vccOpts),t){t=lc(t);let{class:l,style:c}=t;l&&!ne(l)&&(t.class=Ln(l)),Z(c)&&(ai(c)&&!K(c)&&(c=re({},c)),t.style=On(c))}const o=ne(e)?1:Cl(e)?128:rc(e)?64:Z(e)?4:q(e)?2:0;return qi(e,t,n,s,r,o,i,!0)}function lc(e){return e?ai(e)||Hn in e?re({},e):e:null}function Ze(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:o}=e,l=t?cc(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Wi(l),ref:t&&t.ref?n&&r?K(r)?r.concat(fn(t)):[r,fn(t)]:fn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ge?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ze(e.ssContent),ssFallback:e.ssFallback&&Ze(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Gi(e=" ",t=0){return ae(St,null,e,t)}function au(e,t){const n=ae(jt,null,e);return n.staticCount=t,n}function uu(e="",t=!1){return t?(Bi(),Ki(ve,null,e)):ae(ve,null,e)}function Re(e){return e==null||typeof e=="boolean"?ae(ve):K(e)?ae(ge,null,e.slice()):typeof e=="object"?ze(e):ae(St,null,String(e))}function ze(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ze(e)}function Us(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(K(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Us(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(Hn in t)?t._ctx=le:r===3&&le&&(le.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:le},n=32):(t=String(t),s&64?(n=16,t=[Gi(t)]):n=8);e.children=t,e.shapeFlag|=n}function cc(...e){const t={};for(let n=0;nfe||le;let wn,bs;{const e=zr(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};wn=t("__VUE_INSTANCE_SETTERS__",n=>fe=n),bs=t("__VUE_SSR_SETTERS__",n=>Dn=n)}const zt=e=>{const t=fe;return wn(e),e.scope.on(),()=>{e.scope.off(),wn(t)}},mr=()=>{fe&&fe.scope.off(),wn(null)};function zi(e){return e.vnode.shapeFlag&4}let Dn=!1;function dc(e,t=!1){t&&bs(t);const{props:n,children:s}=e.vnode,r=zi(e);Gl(e,n,r,t),Jl(e,s);const i=r?hc(e,t):void 0;return t&&bs(!1),i}function hc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Mt(new Proxy(e.ctx,Hl));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?gc(e):null,i=zt(e);ft();const o=Ye(s,e,0,[e.props,r]);if(dt(),i(),Wr(o)){if(o.then(mr,mr),t)return o.then(l=>{yr(e,l,t)}).catch(l=>{Mn(l,e,0)});e.asyncDep=o}else yr(e,o,t)}else Xi(e,t)}function yr(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=pi(t)),Xi(e,n)}let _r;function Xi(e,t,n){const s=e.type;if(!e.render){if(!t&&_r&&!s.render){const r=s.template||Vs(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,a=re(re({isCustomElement:i,delimiters:l},o),c);s.render=_r(r,a)}}e.render=s.render||xe}{const r=zt(e);ft();try{Vl(e)}finally{dt(),r()}}}function pc(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return ye(e,"get","$attrs"),t[n]}}))}function gc(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return pc(e)},slots:e.slots,emit:e.emit,expose:t}}function Un(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(pi(Mt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ft)return Ft[n](e)},has(t,n){return n in t||n in Ft}}))}function mc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function yc(e){return q(e)&&"__vccOpts"in e}const oe=(e,t)=>sl(e,t,Dn);function vs(e,t,n){const s=arguments.length;return s===2?Z(t)&&!K(t)?vn(t)?ae(e,null,[t]):ae(e,t):ae(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&vn(n)&&(n=[n]),ae(e,t,n))}const _c="3.4.21";/** -* @vue/runtime-dom v3.4.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const bc="http://www.w3.org/2000/svg",vc="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,br=Xe&&Xe.createElement("template"),wc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Xe.createElementNS(bc,e):t==="mathml"?Xe.createElementNS(vc,e):Xe.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{br.innerHTML=s==="svg"?`${e}`:s==="mathml"?`${e}`:e;const l=br.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ke="transition",Lt="animation",Tt=Symbol("_vtc"),Ji=(e,{slots:t})=>vs(Rl,Qi(e),t);Ji.displayName="Transition";const Yi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Ec=Ji.props=re({},Si,Yi),nt=(e,t=[])=>{K(e)?e.forEach(n=>n(...t)):e&&e(...t)},vr=e=>e?K(e)?e.some(t=>t.length>1):e.length>1:!1;function Qi(e){const t={};for(const S in e)S in Yi||(t[S]=e[S]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:a=o,appearToClass:u=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,A=Cc(r),P=A&&A[0],F=A&&A[1],{onBeforeEnter:N,onEnter:$,onEnterCancelled:p,onLeave:y,onLeaveCancelled:M,onBeforeAppear:O=N,onAppear:D=$,onAppearCancelled:R=p}=t,U=(S,G,ie)=>{We(S,G?u:l),We(S,G?a:o),ie&&ie()},E=(S,G)=>{S._isLeaving=!1,We(S,h),We(S,v),We(S,m),G&&G()},k=S=>(G,ie)=>{const ue=S?D:$,V=()=>U(G,S,ie);nt(ue,[G,V]),wr(()=>{We(G,S?c:i),He(G,S?u:l),vr(ue)||Er(G,s,P,V)})};return re(t,{onBeforeEnter(S){nt(N,[S]),He(S,i),He(S,o)},onBeforeAppear(S){nt(O,[S]),He(S,c),He(S,a)},onEnter:k(!1),onAppear:k(!0),onLeave(S,G){S._isLeaving=!0;const ie=()=>E(S,G);He(S,h),eo(),He(S,m),wr(()=>{S._isLeaving&&(We(S,h),He(S,v),vr(y)||Er(S,s,F,ie))}),nt(y,[S,ie])},onEnterCancelled(S){U(S,!1),nt(p,[S])},onAppearCancelled(S){U(S,!0),nt(R,[S])},onLeaveCancelled(S){E(S),nt(M,[S])}})}function Cc(e){if(e==null)return null;if(Z(e))return[Qn(e.enter),Qn(e.leave)];{const t=Qn(e);return[t,t]}}function Qn(e){return To(e)}function He(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Tt]||(e[Tt]=new Set)).add(t)}function We(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Tt];n&&(n.delete(t),n.size||(e[Tt]=void 0))}function wr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let xc=0;function Er(e,t,n,s){const r=e._endId=++xc,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=Zi(e,t);if(!o)return s();const a=o+"end";let u=0;const h=()=>{e.removeEventListener(a,m),i()},m=v=>{v.target===e&&++u>=c&&h()};setTimeout(()=>{u(n[A]||"").split(", "),r=s(`${Ke}Delay`),i=s(`${Ke}Duration`),o=Cr(r,i),l=s(`${Lt}Delay`),c=s(`${Lt}Duration`),a=Cr(l,c);let u=null,h=0,m=0;t===Ke?o>0&&(u=Ke,h=o,m=i.length):t===Lt?a>0&&(u=Lt,h=a,m=c.length):(h=Math.max(o,a),u=h>0?o>a?Ke:Lt:null,m=u?u===Ke?i.length:c.length:0);const v=u===Ke&&/\b(transform|all)(,|$)/.test(s(`${Ke}Property`).toString());return{type:u,timeout:h,propCount:m,hasTransform:v}}function Cr(e,t){for(;e.lengthxr(n)+xr(e[s])))}function xr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function eo(){return document.body.offsetHeight}function Sc(e,t,n){const s=e[Tt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const En=Symbol("_vod"),to=Symbol("_vsh"),fu={beforeMount(e,{value:t},{transition:n}){e[En]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Pt(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Pt(e,!0),s.enter(e)):s.leave(e,()=>{Pt(e,!1)}):Pt(e,t))},beforeUnmount(e,{value:t}){Pt(e,t)}};function Pt(e,t){e.style.display=t?e[En]:"none",e[to]=!t}const Tc=Symbol(""),Ac=/(^|;)\s*display\s*:/;function Rc(e,t,n){const s=e.style,r=ne(n);let i=!1;if(n&&!r){if(t)if(ne(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&dn(s,l,"")}else for(const o in t)n[o]==null&&dn(s,o,"");for(const o in n)o==="display"&&(i=!0),dn(s,o,n[o])}else if(r){if(t!==n){const o=s[Tc];o&&(n+=";"+o),s.cssText=n,i=Ac.test(n)}}else t&&e.removeAttribute("style");En in e&&(e[En]=i?s.display:"",e[to]&&(s.display="none"))}const Sr=/\s*!important$/;function dn(e,t,n){if(K(n))n.forEach(s=>dn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Oc(e,t);Sr.test(n)?e.setProperty(ut(s),n.replace(Sr,""),"important"):e[s]=n}}const Tr=["Webkit","Moz","ms"],Zn={};function Oc(e,t){const n=Zn[t];if(n)return n;let s=Fe(t);if(s!=="filter"&&s in e)return Zn[t]=s;s=Rn(s);for(let r=0;res||(Fc.then(()=>es=0),es=Date.now());function jc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Se(Hc(s,n.value),t,5,[s])};return n.value=e,n.attached=$c(),n}function Hc(e,t){if(K(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Lr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Vc=(e,t,n,s,r,i,o,l,c)=>{const a=r==="svg";t==="class"?Sc(e,s,a):t==="style"?Rc(e,n,s):qt(t)?Es(t)||Mc(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Dc(e,t,s,a))?Pc(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Lc(e,t,s,a))};function Dc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Lr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Lr(t)&&ne(n)?!1:t in e}const no=new WeakMap,so=new WeakMap,Cn=Symbol("_moveCb"),Pr=Symbol("_enterCb"),ro={name:"TransitionGroup",props:re({},Ec,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Vn(),s=xi();let r,i;return Oi(()=>{if(!r.length)return;const o=e.moveClass||`${e.name||"v"}-move`;if(!Wc(r[0].el,n.vnode.el,o))return;r.forEach(Bc),r.forEach(kc);const l=r.filter(Kc);eo(),l.forEach(c=>{const a=c.el,u=a.style;He(a,o),u.transform=u.webkitTransform=u.transitionDuration="";const h=a[Cn]=m=>{m&&m.target!==a||(!m||/transform$/.test(m.propertyName))&&(a.removeEventListener("transitionend",h),a[Cn]=null,We(a,o))};a.addEventListener("transitionend",h)})}),()=>{const o=J(e),l=Qi(o);let c=o.tag||ge;r=i,i=t.default?js(t.default()):[];for(let a=0;adelete e.mode;ro.props;const du=ro;function Bc(e){const t=e.el;t[Cn]&&t[Cn](),t[Pr]&&t[Pr]()}function kc(e){so.set(e,e.el.getBoundingClientRect())}function Kc(e){const t=no.get(e),n=so.get(e),s=t.left-n.left,r=t.top-n.top;if(s||r){const i=e.el.style;return i.transform=i.webkitTransform=`translate(${s}px,${r}px)`,i.transitionDuration="0s",e}}function Wc(e,t,n){const s=e.cloneNode(),r=e[Tt];r&&r.forEach(l=>{l.split(/\s+/).forEach(c=>c&&s.classList.remove(c))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const i=t.nodeType===1?t:t.parentNode;i.appendChild(s);const{hasTransform:o}=Zi(s);return i.removeChild(s),o}const Ir=e=>{const t=e.props["onUpdate:modelValue"]||!1;return K(t)?n=>un(t,n):t};function qc(e){e.target.composing=!0}function Mr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ts=Symbol("_assign"),hu={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[ts]=Ir(r);const i=s||r.props&&r.props.type==="number";gt(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=us(l)),e[ts](l)}),n&>(e,"change",()=>{e.value=e.value.trim()}),t||(gt(e,"compositionstart",qc),gt(e,"compositionend",Mr),gt(e,"change",Mr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:s,number:r}},i){if(e[ts]=Ir(i),e.composing)return;const o=r||e.type==="number"?us(e.value):e.value,l=t??"";o!==l&&(document.activeElement===e&&e.type!=="range"&&(n||s&&e.value.trim()===l)||(e.value=l))}},Gc=["ctrl","shift","alt","meta"],zc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Gc.some(n=>e[`${n}Key`]&&!t.includes(n))},pu=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=ut(r.key);if(t.some(o=>o===i||Xc[o]===i))return e(r)})},Jc=re({patchProp:Vc},wc);let ns,Nr=!1;function Yc(){return ns=Nr?ns:tc(Jc),Nr=!0,ns}const mu=(...e)=>{const t=Yc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Zc(s);if(r)return n(r,!0,Qc(r))},t};function Qc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Zc(e){return ne(e)?document.querySelector(e):e}const yu=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};function Bn(e){return Yr()?(Fo(e),!0):!1}function se(e){return typeof e=="function"?e():hi(e)}const io=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ea=e=>e!=null,ta=Object.prototype.toString,na=e=>ta.call(e)==="[object Object]",ct=()=>{};function oo(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const lo=e=>e();function sa(...e){let t=0,n,s=!0,r=ct,i,o,l,c,a;!de(e[0])&&typeof e[0]=="object"?{delay:o,trailing:l=!0,leading:c=!0,rejectOnCancel:a=!1}=e[0]:[o,l=!0,c=!0,a=!1]=e;const u=()=>{n&&(clearTimeout(n),n=void 0,r(),r=ct)};return m=>{const v=se(o),A=Date.now()-t,P=()=>i=m();return u(),v<=0?(t=Date.now(),P()):(A>v&&(c||!s)?(t=Date.now(),P()):l&&(i=new Promise((F,N)=>{r=a?N:F,n=setTimeout(()=>{t=Date.now(),s=!0,F(P()),u()},Math.max(0,v-A))})),!c&&!n&&(n=setTimeout(()=>s=!0,v)),s=!1,i)}}function ra(e=lo){const t=Te(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:In(t),pause:n,resume:s,eventFilter:r}}function ia(e,t=!1,n="Timeout"){return new Promise((s,r)=>{setTimeout(t?()=>r(n):s,e)})}function oa(e){return e}function la(e){return e||Vn()}function ca(...e){if(e.length!==1)return ul(...e);const t=e[0];return typeof t=="function"?In(ll(()=>({get:t,set:ct}))):Te(t)}function _u(e,t=200,n=!1,s=!0,r=!1){return oo(sa(t,n,s,r),e)}function aa(e,t,n={}){const{eventFilter:s=lo,...r}=n;return Le(e,oo(s,t),r)}function co(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=ra(s);return{stop:aa(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function ao(e,t=!0,n){la()?Rt(e,n):t?e():Gt(e)}function bu(e,t,n){const s=Le(e,(...r)=>(Gt(()=>s()),t(...r)),n);return s}function Vt(e){var t;const n=se(e);return(t=n==null?void 0:n.$el)!=null?t:n}const De=io?window:void 0,ua=io?window.navigator:void 0;function xn(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=De):[t,n,s,r]=e,!t)return ct;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(u=>u()),i.length=0},l=(u,h,m,v)=>(u.addEventListener(h,m,v),()=>u.removeEventListener(h,m,v)),c=Le(()=>[Vt(t),se(r)],([u,h])=>{if(o(),!u)return;const m=na(h)?{...h}:h;i.push(...n.flatMap(v=>s.map(A=>l(u,v,A,m))))},{immediate:!0,flush:"post"}),a=()=>{c(),o()};return Bn(a),a}function fa(){const e=Te(!1),t=Vn();return t&&Rt(()=>{e.value=!0},t),e}function Bs(e){const t=fa();return oe(()=>(t.value,!!e()))}function da(e,t={}){const{window:n=De}=t,s=Bs(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=Te(!1),o=a=>{i.value=a.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Ei(()=>{s.value&&(l(),r=n.matchMedia(se(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return Bn(()=>{c(),l(),r=void 0}),i}const ln=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},cn="__vueuse_ssr_handlers__",ha=pa();function pa(){return cn in ln||(ln[cn]=ln[cn]||{}),ln[cn]}function uo(e,t){return ha[e]||t}function ga(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const ma={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Fr="vueuse-storage";function ya(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:u,window:h=De,eventFilter:m,onError:v=E=>{console.error(E)},initOnMounted:A}=s,P=(u?fi:Te)(typeof t=="function"?t():t);if(!n)try{n=uo("getDefaultStorage",()=>{var E;return(E=De)==null?void 0:E.localStorage})()}catch(E){v(E)}if(!n)return P;const F=se(t),N=ga(F),$=(r=s.serializer)!=null?r:ma[N],{pause:p,resume:y}=co(P,()=>O(P.value),{flush:i,deep:o,eventFilter:m});h&&l&&ao(()=>{xn(h,"storage",R),xn(h,Fr,U),A&&R()}),A||R();function M(E,k){h&&h.dispatchEvent(new CustomEvent(Fr,{detail:{key:e,oldValue:E,newValue:k,storageArea:n}}))}function O(E){try{const k=n.getItem(e);if(E==null)M(k,null),n.removeItem(e);else{const S=$.write(E);k!==S&&(n.setItem(e,S),M(k,S))}}catch(k){v(k)}}function D(E){const k=E?E.newValue:n.getItem(e);if(k==null)return c&&F!=null&&n.setItem(e,$.write(F)),F;if(!E&&a){const S=$.read(k);return typeof a=="function"?a(S,F):N==="object"&&!Array.isArray(S)?{...F,...S}:S}else return typeof k!="string"?k:$.read(k)}function R(E){if(!(E&&E.storageArea!==n)){if(E&&E.key==null){P.value=F;return}if(!(E&&E.key!==e)){p();try{(E==null?void 0:E.newValue)!==$.write(P.value)&&(P.value=D(E))}catch(k){v(k)}finally{E?Gt(y):y()}}}}function U(E){R(E.detail)}return P}function fo(e){return da("(prefers-color-scheme: dark)",e)}function _a(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=De,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:u=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=fo({window:r}),v=oe(()=>m.value?"dark":"light"),A=c||(o==null?ca(s):ya(o,s,i,{window:r,listenToStorageChanges:l})),P=oe(()=>A.value==="auto"?v.value:A.value),F=uo("updateHTMLAttrs",(y,M,O)=>{const D=typeof y=="string"?r==null?void 0:r.document.querySelector(y):Vt(y);if(!D)return;let R;if(u){R=r.document.createElement("style");const U="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";R.appendChild(document.createTextNode(U)),r.document.head.appendChild(R)}if(M==="class"){const U=O.split(/\s/g);Object.values(h).flatMap(E=>(E||"").split(/\s/g)).filter(Boolean).forEach(E=>{U.includes(E)?D.classList.add(E):D.classList.remove(E)})}else D.setAttribute(M,O);u&&(r.getComputedStyle(R).opacity,document.head.removeChild(R))});function N(y){var M;F(t,n,(M=h[y])!=null?M:y)}function $(y){e.onChanged?e.onChanged(y,N):N(y)}Le(P,$,{flush:"post",immediate:!0}),ao(()=>$(P.value));const p=oe({get(){return a?A.value:P.value},set(y){A.value=y}});try{return Object.assign(p,{store:A,system:v,state:P})}catch{return p}}function ba(e={}){const{valueDark:t="dark",valueLight:n="",window:s=De}=e,r=_a({...e,onChanged:(l,c)=>{var a;e.onChanged?(a=e.onChanged)==null||a.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=oe(()=>r.system?r.system.value:fo({window:s}).value?"dark":"light");return oe({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function va(e,t,n={}){const{root:s,rootMargin:r="0px",threshold:i=.1,window:o=De,immediate:l=!0}=n,c=Bs(()=>o&&"IntersectionObserver"in o),a=oe(()=>{const A=se(e);return(Array.isArray(A)?A:[A]).map(Vt).filter(ea)});let u=ct;const h=Te(l),m=c.value?Le(()=>[a.value,Vt(s),h.value],([A,P])=>{if(u(),!h.value||!A.length)return;const F=new IntersectionObserver(t,{root:Vt(P),rootMargin:r,threshold:i});A.forEach(N=>N&&F.observe(N)),u=()=>{F.disconnect(),u=ct}},{immediate:l,flush:"post"}):ct,v=()=>{u(),m(),h.value=!1};return Bn(v),{isSupported:c,isActive:h,pause(){u(),h.value=!1},resume(){h.value=!0},stop:v}}function vu(e,t={}){const{window:n=De,scrollTarget:s,threshold:r=0}=t,i=Te(!1);return va(e,o=>{let l=i.value,c=0;for(const a of o)a.time>=c&&(c=a.time,l=a.isIntersecting);i.value=l},{root:s,window:n,threshold:r}),i}function wu(e={},t={}){const{navigator:n=ua}=t,s=n,r=Bs(()=>s&&"canShare"in s);return{isSupported:r,share:async(o={})=>{if(r.value){const l={...se(e),...se(o)};let c=!0;if(l.files&&s.canShare&&(c=s.canShare({files:l.files})),c)return s.share(l)}}}}function wa([e,t,n,s]){const r=(u,h)=>1-3*h+3*u,i=(u,h)=>3*h-6*u,o=u=>3*u,l=(u,h,m)=>((r(h,m)*u+i(h,m))*u+o(h))*u,c=(u,h,m)=>3*r(h,m)*u*u+2*i(h,m)*u+o(h),a=u=>{let h=u;for(let m=0;m<4;++m){const v=c(h,e,n);if(v===0)return h;const A=l(h,e,n)-u;h-=A/v}return h};return u=>e===t&&n===s?u:l(a(u),t,s)}function $r(e,t,n){return e+n*(t-e)}function ss(e){return(typeof e=="number"?[e]:e)||[]}function Ea(e,t,n,s={}){var r,i;const o=se(t),l=se(n),c=ss(o),a=ss(l),u=(r=se(s.duration))!=null?r:1e3,h=Date.now(),m=Date.now()+u,v=typeof s.transition=="function"?s.transition:(i=se(s.transition))!=null?i:oa,A=typeof v=="function"?v:wa(v);return new Promise(P=>{e.value=o;const F=()=>{var N;if((N=s.abort)!=null&&N.call(s)){P();return}const $=Date.now(),p=A(($-h)/u),y=ss(e.value).map((M,O)=>$r(c[O],a[O],p));Array.isArray(e.value)?e.value=y.map((M,O)=>{var D,R;return $r((D=c[O])!=null?D:0,(R=a[O])!=null?R:0,p)}):typeof e.value=="number"&&(e.value=y[0]),${const i=se(e);return typeof i=="number"?i:i.map(se)},r=Te(s());return Le(s,async i=>{var o,l;if(se(t.disabled))return;const c=++n;if(t.delay&&await ia(se(t.delay)),c!==n)return;const a=Array.isArray(i)?i.map(se):se(i);(o=t.onStarted)==null||o.call(t),await Ea(r,r.value,a,{...t,abort:()=>{var u;return c!==n||((u=t.abort)==null?void 0:u.call(t))}}),(l=t.onFinished)==null||l.call(t)},{deep:!0}),Le(()=>se(t.disabled),i=>{i&&(n++,r.value=s())}),Bn(()=>{n++}),oe(()=>se(t.disabled)?s():r.value)}function Cu(e="history",t={}){const{initialValue:n={},removeNullishValues:s=!0,removeFalsyValues:r=!1,write:i=!0,window:o=De}=t;if(!o)return Ct(n);const l=Ct({});function c(){if(e==="history")return o.location.search||"";if(e==="hash"){const N=o.location.hash||"",$=N.indexOf("?");return $>0?N.slice($):""}else return(o.location.hash||"").replace(/^#/,"")}function a(N){const $=N.toString();if(e==="history")return`${$?`?${$}`:""}${o.location.hash||""}`;if(e==="hash-params")return`${o.location.search||""}${$?`#${$}`:""}`;const p=o.location.hash||"#",y=p.indexOf("?");return y>0?`${p.slice(0,y)}${$?`?${$}`:""}`:`${p}${$?`?${$}`:""}`}function u(){return new URLSearchParams(c())}function h(N){const $=new Set(Object.keys(l));for(const p of N.keys()){const y=N.getAll(p);l[p]=y.length>1?y:N.get(p)||"",$.delete(p)}Array.from($).forEach(p=>delete l[p])}const{pause:m,resume:v}=co(l,()=>{const N=new URLSearchParams("");Object.keys(l).forEach($=>{const p=l[$];Array.isArray(p)?p.forEach(y=>N.append($,y)):s&&p==null||r&&!p?N.delete($):N.set($,p)}),A(N)},{deep:!0});function A(N,$){m(),$&&h(N),o.history.replaceState(o.history.state,o.document.title,o.location.pathname+a(N)),v()}function P(){i&&A(u(),!0)}xn(o,"popstate",P,!1),e!=="history"&&xn(o,"hashchange",P,!1);const F=u();return F.keys().next().value?h(F):Object.assign(l,n),l}const Ca=window.__VP_SITE_DATA__;var rs={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},is={};const ho=/^(?:[a-z]+:|\/\/)/i,xa="vitepress-theme-appearance",Sa=/#.*$/,Ta=/[?#].*$/,Aa=/(?:(^|\/)index)?\.(?:md|html)$/,Ce=typeof document<"u",po={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ra(e,t,n=!1){if(t===void 0)return!1;if(e=jr(`/${e}`),n)return new RegExp(t).test(e);if(jr(t)!==e)return!1;const s=t.match(Sa);return s?(Ce?location.hash:"")===s[0]:!0}function jr(e){return decodeURI(e).replace(Ta,"").replace(Aa,"$1")}function Oa(e){return ho.test(e)}function La(e,t){var s,r,i,o,l,c,a;const n=Object.keys(e.locales).find(u=>u!=="root"&&!Oa(u)&&Ra(t,`/${u}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:mo(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function go(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Pa(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function Pa(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Ia(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function mo(e,t){return[...e.filter(n=>!Ia(t,n)),...t]}const Ma=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Na=/^[a-z]:/i;function Hr(e){const t=Na.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Ma,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const os=new Set;function Fa(e){if(os.size===0){const n=typeof process=="object"&&(is==null?void 0:is.VITE_EXTRA_EXTENSIONS)||(rs==null?void 0:rs.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>os.add(s))}const t=e.split(".").pop();return t==null||!os.has(t.toLowerCase())}const $a=Symbol(),at=fi(Ca);function xu(e){const t=oe(()=>La(at.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?Te(!0):n?ba({storageKey:xa,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):Te(!1);return{site:t,theme:oe(()=>t.value.themeConfig),page:oe(()=>e.data),frontmatter:oe(()=>e.data.frontmatter),params:oe(()=>e.data.params),lang:oe(()=>t.value.lang),dir:oe(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:oe(()=>t.value.localeIndex||"root"),title:oe(()=>go(t.value,e.data)),description:oe(()=>e.data.description||t.value.description),isDark:s}}function ja(){const e=Et($a);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ha(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Vr(e){return ho.test(e)||!e.startsWith("/")?e:Ha(at.value.base,e)}function Va(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ce){const n="/";t=Hr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Hr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Da=[];function Ua(){let e=at.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Dr(e,n);else if(Array.isArray(e))for(const s of e){const r=Dr(s,n);if(r){t=r;break}}return t}function Dr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Ba=Symbol(),ks="http://a.com",ka=()=>({path:"/",component:null,data:po});function Su(e,t){const n=Ct(ka()),s={route:n,go:r};async function r(l=Ce?location.href:"/"){var c,a;l=Sn(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(Br(l),await o(l),await((a=s.onAfterRouteChanged)==null?void 0:a.call(s,l)))}let i=null;async function o(l,c=0,a=!1){var m;if(await((m=s.onBeforePageLoad)==null?void 0:m.call(s,l))===!1)return;const u=new URL(l,ks),h=i=u.pathname;try{let v=await e(h);if(!v)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:A,__pageData:P}=v;if(!A)throw new Error(`Invalid route component: ${A}`);n.path=Ce?h:Vr(h),n.component=Mt(A),n.data=Mt(P),Ce&&Gt(()=>{let F=at.value.base+P.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!at.value.cleanUrls&&!F.endsWith("/")&&(F+=".html"),F!==u.pathname&&(u.pathname=F,l=F+u.search+u.hash,history.replaceState(null,"",l)),u.hash&&!c){let N=null;try{N=document.getElementById(decodeURIComponent(u.hash).slice(1))}catch($){console.warn($)}if(N){Ur(N,u.hash);return}}window.scrollTo(0,c)})}}catch(v){if(!/fetch|Page not found/.test(v.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(v),!a)try{const A=await fetch(at.value.base+"hashmap.json");window.__VP_HASH_MAP__=await A.json(),await o(l,c,!0);return}catch{}i===h&&(i=null,n.path=Ce?h:Vr(h),n.component=t?Mt(t):null,n.data=po)}}return Ce&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:u}=a,{href:h,origin:m,pathname:v,hash:A,search:P}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),F=new URL(window.location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!u&&m===F.origin&&Fa(v)&&(l.preventDefault(),v===F.pathname&&P===F.search?(A!==F.hash&&(history.pushState(null,"",A),window.dispatchEvent(new Event("hashchange"))),A?Ur(a,A,a.classList.contains("header-anchor")):(Br(h,!1),window.scrollTo(0,0))):r(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;await o(Sn(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Ka(){const e=Et(Ba);if(!e)throw new Error("useRouter() is called without provider.");return e}function yo(){return Ka().route}function Ur(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-Ua()+i;requestAnimationFrame(r)}}function Br(e,t=!0){if(Ce&&Sn(e)!==Sn(location.href)){const n=location.hash;history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",e),t&&new URL(e,ks).hash!==n&&window.dispatchEvent(new Event("hashchange"))}}function Sn(e){const t=new URL(e,ks);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),at.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const ls=()=>Da.forEach(e=>e()),Tu=Ai({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=yo(),{site:n}=ja();return()=>vs(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?vs(t.component,{onVnodeMounted:ls,onVnodeUpdated:ls,onVnodeUnmounted:ls}):"404 Page Not Found"])}}),Au="/click-logo.svg",Wa="modulepreload",qa=function(e){return"/"+e},kr={},Ru=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link");r=Promise.all(n.map(o=>{if(o=qa(o),o in kr)return;kr[o]=!0;const l=o.endsWith(".css"),c=l?'[rel="stylesheet"]':"";if(!!s)for(let h=i.length-1;h>=0;h--){const m=i[h];if(m.href===o&&(!l||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${c}`))return;const u=document.createElement("link");if(u.rel=l?"stylesheet":Wa,l||(u.as="script",u.crossOrigin=""),u.href=o,document.head.appendChild(u),l)return new Promise((h,m)=>{u.addEventListener("load",h),u.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${o}`)))})}))}return r.then(()=>t()).catch(i=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=i,window.dispatchEvent(o),!o.defaultPrevented)throw i})},Ou=Ai({setup(e,{slots:t}){const n=Te(!1);return Rt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Lu(){Ce&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(a=>a.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Pu(){if(Ce){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(u=>u.remove());let a=c.textContent||"";o&&(a=a.replace(/^ *(\$|>) /gm,"").trim()),Ga(a).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const u=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,u)})}})}}async function Ga(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function Iu(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=cs(l);for(const a of document.head.children)if(a.isEqualNode(c)){s.push(a);return}});return}const o=i.map(cs);s.forEach((l,c)=>{const a=o.findIndex(u=>u==null?void 0:u.isEqualNode(l??null));a!==-1?delete o[a]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Ei(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],a=go(o,i);a!==document.title&&(document.title=a);const u=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==u&&h.setAttribute("content",u):cs(["meta",{name:"description",content:u}]),r(mo(o.head,Xa(c)))})}function cs([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function za(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Xa(e){return e.filter(t=>!za(t))}const as=new Set,_o=()=>document.createElement("link"),Ja=e=>{const t=_o();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Ya=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let an;const Qa=Ce&&(an=_o())&&an.relList&&an.relList.supports&&an.relList.supports("prefetch")?Ja:Ya;function Mu(){if(!Ce||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!as.has(c)){as.add(c);const a=Va(c);a&&Qa(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):as.add(l))})})};Rt(s);const r=yo();Le(()=>r.path,s),Hs(()=>{n&&n.disconnect()})}export{Tu as $,Ki as A,au as B,pu as C,wu as D,Eu as E,vu as F,bu as G,Ct as H,ge as I,On as J,ru as K,ou as L,tu as M,nu as N,cc as O,du as P,Au as Q,Za as R,lc as S,Ji as T,_u as U,Ce as V,Iu as W,Ba as X,xu as Y,$a as Z,yu as _,ya as a,Ou as a0,at as a1,mu as a2,Su as a3,Va as a4,Ai as a5,Ei as a6,Mu as a7,Pu as a8,Lu as a9,vs as aa,Bi as b,oe as c,cu as d,iu as e,hi as f,qi as g,Gi as h,lu as i,hu as j,de as k,gu as l,Il as m,Ln as n,Rt as o,Ru as p,uu as q,Te as r,ja as s,eu as t,Cu as u,fu as v,Le as w,su as x,ae as y,_l as z}; diff --git a/assets/chunks/index.Q2UX5ner.js b/assets/chunks/index.OsI8M1nP.js similarity index 100% rename from assets/chunks/index.Q2UX5ner.js rename to assets/chunks/index.OsI8M1nP.js diff --git a/assets/chunks/theme.TIIJwiPz.js b/assets/chunks/theme.TKyytG40.js similarity index 97% rename from assets/chunks/theme.TIIJwiPz.js rename to assets/chunks/theme.TKyytG40.js index b490efa6..d9c44e06 100644 --- a/assets/chunks/theme.TIIJwiPz.js +++ b/assets/chunks/theme.TKyytG40.js @@ -1,7 +1,7 @@ function __vite__mapDeps(indexes) { if (!__vite__mapDeps.viteFileDeps) { - __vite__mapDeps.viteFileDeps = ["assets/chunks/virtual_pwa-register.45FOQ76u.js","assets/chunks/framework.HWRfC0Fd.js"] + __vite__mapDeps.viteFileDeps = ["assets/chunks/virtual_pwa-register.DS-1DR2V.js","assets/chunks/framework.DA3bj7zI.js"] } return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) } -import{u as H,r as i,a as U,c as B,w as q,o as Q,b as u,d as m,e as C,v as X,f as a,g as t,t as S,h,i as z,j as M,n as F,k as L,l as W,_ as ee,m as te,p as ae,q as Y,s as se,x as oe,y as b,z as y,T as ne,A as le}from"./framework.HWRfC0Fd.js";const A=H("history"),G=/^([a-zA-Z0-9._%+-]{1,64})@[a-zA-Z0-9.-]{1,255}\.[a-zA-Z]{2,10}$/,J=100,v=i(!1),D=i(!1),re=i(!1),p=U("storedEmail",""),w=U("storedName",""),x=i(!1),f=i(p),P=i(w),E=B(()=>{var s;return ue((s=f.value.match(G))==null?void 0:s[1])}),ie=i(""),ce=i(""),de=B(()=>K(f.value)),I=i(!1),T=i(!1);function K(s){return G.test(s)}function ue(s=""){return s.charAt(0).toUpperCase()+s.slice(1)}function me(){p.value="",w.value="",x.value=!1,v.value=!1}function Z(){return I.value||(q(v,s=>{s&&(D.value=!1)}),Q(()=>{p.value&&(v.value=!0),A.token&&pe()}),I.value=!0),{searchParams:A,isAccessGranted:v,isValidEmail:de,email:f,name:P,grantAccess:_e,isSent:x,isFormOpen:D,checkAvailability:re,storedEmail:p,storedName:w,resetEmail:me,namePlaceholder:E,password:ie,passwordPlaceholder:ce,generatePassword:he,maxLength:J,claimInvite:fe,invited:T}}async function pe(){console.log(A.token,p.value)}async function fe(){var s,o,n;if(p.value&&!T.value){const r={email:p.value};try{const e=await fetch("https://dbs.chromatone.center/flows/trigger/164bb1bb-3745-423f-8239-703198dfbac5",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(r)});console.log(await(e==null?void 0:e.json()))}catch(e){console.error(e,(o=(s=e==null?void 0:e.errors)==null?void 0:s[0])==null?void 0:o.message,(n=e==null?void 0:e.response)==null?void 0:n.status)}T.value=!0}}async function _e(){var s,o,n;if(!(!f.value&&!K(f.value))&&(v.value=!0,!x.value)){x.value=!0;const r={email:f.value,name:(P.value||E.value||"").slice(0,J)};try{p.value=f.value,w.value=P.value||E.value;const e=await fetch("https://dbs.chromatone.center/flows/trigger/51cc7591-219e-4b56-ad6d-c39a34f7cf2f",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(r)});console.log(await(e==null?void 0:e.json()))}catch(e){console.error(e,(o=(s=e==null?void 0:e.errors)==null?void 0:s[0])==null?void 0:o.message,(n=e==null?void 0:e.response)==null?void 0:n.status)}}}function he(){return[...window.crypto.getRandomValues(new Uint8Array(16))].map(s=>"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_.,!?$%&*#@".charAt(s%72)).join("").slice(0,10)}const ve={class:"min-h-40dvh bottom-0 w-full 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 max-w-180 bottom-0 rounded-xl"},ge={key:0,class:"flex flex-col gap-4 max-w-45ch text-center"},be={class:"text-3xl font-bold"},ye=t("div",{class:"text-xl"},"You are part of web-musicians community",-1),xe={class:"text-sm flex gap-2 justify-center"},we={key:1,class:"flex flex-col gap-8 relative pt-8 items-center"},ke={class:"text-center max-w-55ch",for:"email"},$e={class:"flex gap-4 flex-col w-full"},Ce={class:"flex items-center gap-2"},Se=t("div",{class:"p-2 w-24 font-bold text-right"},"E-mail *",-1),Ae=["maxlength"],Pe={class:"flex items-center gap-2"},Ee=t("div",{class:"p-2 w-24 font-bold text-right"},"Name",-1),Te=["maxlength","placeholder"],Ne=["disabled"],Re={__name:"FormMain",setup(s){const{name:o,email:n,isValidEmail:r,isFormOpen:e,grantAccess:c,storedEmail:N,storedName:_,resetEmail:g,isAccessGranted:k,namePlaceholder:$,passwordPlaceholder:R,password:O,generatePassword:ot,maxLength:j,claimInvite:nt,invited:lt}=Z();return i(),(V,l)=>(u(),m("div",ve,[C(t("button",{class:"i-la-times absolute top-4 right-4 text-2xl hover-opacity-90 opacity-50 transition",onClick:l[0]||(l[0]=d=>e.value=!1)},null,512),[[X,a(e)]]),a(k)?(u(),m("div",ge,[t("div",be,"Hello, "+S(a(_))+"!",1),ye,t("div",xe,[h(S(a(N)),1),t("span",{class:"opacity-20 hover-opacity-50 transition cursor-pointer",onClick:l[1]||(l[1]=(...d)=>a(g)&&a(g)(...d))},"Log out")])])):(u(),m("div",we,[t("label",ke,[z(V.$slots,"default")]),t("div",$e,[t("label",Ce,[Se,C(t("input",{class:F(["flex-1 p-4 md-p-4 rounded-xl bg-light-200 shadow-md dark-bg-dark-400 flex-1 border-2 border-solid border-opacity-60 dark-border-opacity-40",{"border-red-700 dark-border-red-300":a(n)&&!a(r),"border-green-700 dark-border-green-800":a(n)&&a(r),"border-light-300":!a(n)}]),ref:"target",maxlength:a(j),"onUpdate:modelValue":l[2]||(l[2]=d=>L(n)?n.value=d:null),id:"email",name:"email",type:"email",onKeydown:l[3]||(l[3]=W(d=>a(c)(),["enter"])),placeholder:"your@gmail.com"},null,42,Ae),[[M,a(n)]])]),t("label",Pe,[Ee,C(t("input",{class:"flex-1 p-4 md-p-4 rounded-xl bg-light-200 shadow-md dark-bg-dark-400","onUpdate:modelValue":l[4]||(l[4]=d=>L(o)?o.value=d:null),id:"name",maxlength:a(j),name:"name",type:"text",onKeydown:l[5]||(l[5]=W(d=>a(c)(),["enter"])),placeholder:a($)},null,40,Te),[[M,a(o)]])])]),t("button",{class:F(["text-sm md-text-md p-4 font-bold md-p-4 rounded-xl shadow-xl hover-shadow-2xl transition -hover-translate-y-2px disabled-opacity-40 active-translate-y-0 active-shadow-md bg-green-400 dark-bg-green-700",{"grayscale-50":!a(r)}]),onClick:l[6]||(l[6]=d=>a(c)()),disabled:!a(r),title:"Your access status will be saved per device and you won't need to enter your e-mail again."},[z(V.$slots,"button",{},()=>[h("GET ACCESS")])],10,Ne)]))]))}},Oe={class:"flex items-center gap-1 p-4 bg-light-100 bg-opacity-70 dark-bg-dark-400 dark-bg-opacity-40 w-full justify-center"},je=t("div",{class:"p-0"},"Made with 🧡 by",-1),Ve=t("a",{href:"https://shop.playtronica.com",target:"_blank"},"Playtronica ",-1),ze=t("span",null,"&",-1),Me=t("a",{href:"https://chromatone.center",target:"_blank"},"Chromatone",-1),Fe=[je,Ve,ze,Me];function Le(s,o){return u(),m("div",Oe,Fe)}const We={},De=ee(We,[["render",Le]]),Ie={key:0,class:"pwa-toast",role:"alertdialog","aria-labelledby":"pwa-message"},Ue=t("div",{class:"mb-3",id:"pwa-message"},"App ready to work offline",-1),Be={__name:"RegisterSW",setup(s){const o=i(!1);function n(){o.value=!0}async function r(){o.value=!1}return te(async()=>{const{registerSW:e}=await ae(()=>import("./virtual_pwa-register.45FOQ76u.js"),__vite__mapDeps([0,1]));e({immediate:!0,onOfflineReady:n,onRegistered(){console.info("Service Worker registered")},onRegisterError(c){console.error("Service Worker registration error!",c)}})}),(e,c)=>o.value?(u(),m("div",Ie,[Ue,t("button",{class:"pwa-cancel",type:"button",onClick:r},"Close")])):Y("",!0)}},Ye={class:"flex flex-col noise items-center relative min-h-100svh"},Ge={class:"w-full backdrop-blur-xl sticky top-0 z-100 bg-light-200 bg-opacity-60 dark-bg-dark-300 dark-bg-opacity-60"},Je={class:"flex flex items-center w-full max-w-180 mx-auto gap-4 px-2"},Ke={class:"p-2 flex items-center gap-4",href:"/"},Ze=["src"],He={class:"text-xl font-600"},qe=t("div",{class:"flex-1"},null,-1),Qe={key:0,class:"i-la-sun"},Xe={key:1,class:"i-tabler-moon-2"},et=t("div",{class:"i-ph-user-circle-duotone p-5"},null,-1),tt=[et],at={class:"flex flex-wrap w-full mx-auto flex-auto justify-center"},st={__name:"MainLayout",setup(s){const{isFormOpen:o,searchParams:n}=Z(),{theme:r,site:e,isDark:c}=se();return(N,_)=>{const g=Be,k=oe("content"),$=Re,R=De;return u(),m("div",Ye,[b(g),t("div",Ge,[t("div",Je,[t("a",Ke,[t("img",{class:"w-12",src:a(r).logo,alt:"Web-synths collection logo"},null,8,Ze),t("div",He,S(a(e).title),1)]),qe,t("button",{class:"text-xl",onClick:_[0]||(_[0]=O=>c.value=!a(c)),"aria-label":"Dark mode toggle"},[a(c)?(u(),m("div",Xe)):(u(),m("div",Qe))]),t("button",{class:"p-4 z-2000 cursor-pointer","aria-label":"Player profile",onClick:_[1]||(_[1]=O=>o.value=!a(o))},tt)])]),t("div",at,[b(k,{class:"w-full",id:"content"})]),b(ne,{name:"panel"},{default:y(()=>[a(o)?(u(),le($,{key:0,class:"fixed z-1000"},{button:y(()=>[h("JOIN THE COMMUNITY")]),notice:y(()=>[h("Your access status will be saved per device and you won't need to enter your e-mail again.")]),default:y(()=>[h("We are building a community of web-based musicians. Type in your e-mail to instantly gain full access to the collection and receive occasional community updates from us. Stay tuned! ")]),_:1})):Y("",!0)]),_:1}),b(R)])}}},it={Layout:st,enhanceApp({app:s}){}};export{it as R,Re as _,Z as u}; +import{u as H,r as i,a as U,c as B,w as q,o as Q,b as u,d as m,e as C,v as X,f as a,g as t,t as S,h,i as z,j as M,n as F,k as L,l as W,_ as ee,m as te,p as ae,q as Y,s as se,x as oe,y as b,z as y,T as ne,A as le}from"./framework.DA3bj7zI.js";const A=H("history"),G=/^([a-zA-Z0-9._%+-]{1,64})@[a-zA-Z0-9.-]{1,255}\.[a-zA-Z]{2,10}$/,J=100,v=i(!1),D=i(!1),re=i(!1),p=U("storedEmail",""),w=U("storedName",""),x=i(!1),f=i(p),P=i(w),E=B(()=>{var s;return ue((s=f.value.match(G))==null?void 0:s[1])}),ie=i(""),ce=i(""),de=B(()=>K(f.value)),I=i(!1),T=i(!1);function K(s){return G.test(s)}function ue(s=""){return s.charAt(0).toUpperCase()+s.slice(1)}function me(){p.value="",w.value="",x.value=!1,v.value=!1}function Z(){return I.value||(q(v,s=>{s&&(D.value=!1)}),Q(()=>{p.value&&(v.value=!0),A.token&&pe()}),I.value=!0),{searchParams:A,isAccessGranted:v,isValidEmail:de,email:f,name:P,grantAccess:_e,isSent:x,isFormOpen:D,checkAvailability:re,storedEmail:p,storedName:w,resetEmail:me,namePlaceholder:E,password:ie,passwordPlaceholder:ce,generatePassword:he,maxLength:J,claimInvite:fe,invited:T}}async function pe(){console.log(A.token,p.value)}async function fe(){var s,o,n;if(p.value&&!T.value){const r={email:p.value};try{const e=await fetch("https://dbs.chromatone.center/flows/trigger/164bb1bb-3745-423f-8239-703198dfbac5",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(r)});console.log(await(e==null?void 0:e.json()))}catch(e){console.error(e,(o=(s=e==null?void 0:e.errors)==null?void 0:s[0])==null?void 0:o.message,(n=e==null?void 0:e.response)==null?void 0:n.status)}T.value=!0}}async function _e(){var s,o,n;if(!(!f.value&&!K(f.value))&&(v.value=!0,!x.value)){x.value=!0;const r={email:f.value,name:(P.value||E.value||"").slice(0,J)};try{p.value=f.value,w.value=P.value||E.value;const e=await fetch("https://dbs.chromatone.center/flows/trigger/51cc7591-219e-4b56-ad6d-c39a34f7cf2f",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(r)});console.log(await(e==null?void 0:e.json()))}catch(e){console.error(e,(o=(s=e==null?void 0:e.errors)==null?void 0:s[0])==null?void 0:o.message,(n=e==null?void 0:e.response)==null?void 0:n.status)}}}function he(){return[...window.crypto.getRandomValues(new Uint8Array(16))].map(s=>"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_.,!?$%&*#@".charAt(s%72)).join("").slice(0,10)}const ve={class:"min-h-40dvh bottom-0 w-full 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 max-w-180 bottom-0 rounded-xl"},ge={key:0,class:"flex flex-col gap-4 max-w-45ch text-center"},be={class:"text-3xl font-bold"},ye=t("div",{class:"text-xl"},"You are part of web-musicians community",-1),xe={class:"text-sm flex gap-2 justify-center"},we={key:1,class:"flex flex-col gap-8 relative pt-8 items-center"},ke={class:"text-center max-w-55ch",for:"email"},$e={class:"flex gap-4 flex-col w-full"},Ce={class:"flex items-center gap-2"},Se=t("div",{class:"p-2 w-24 font-bold text-right"},"E-mail *",-1),Ae=["maxlength"],Pe={class:"flex items-center gap-2"},Ee=t("div",{class:"p-2 w-24 font-bold text-right"},"Name",-1),Te=["maxlength","placeholder"],Ne=["disabled"],Re={__name:"FormMain",setup(s){const{name:o,email:n,isValidEmail:r,isFormOpen:e,grantAccess:c,storedEmail:N,storedName:_,resetEmail:g,isAccessGranted:k,namePlaceholder:$,passwordPlaceholder:R,password:O,generatePassword:ot,maxLength:j,claimInvite:nt,invited:lt}=Z();return i(),(V,l)=>(u(),m("div",ve,[C(t("button",{class:"i-la-times absolute top-4 right-4 text-2xl hover-opacity-90 opacity-50 transition",onClick:l[0]||(l[0]=d=>e.value=!1)},null,512),[[X,a(e)]]),a(k)?(u(),m("div",ge,[t("div",be,"Hello, "+S(a(_))+"!",1),ye,t("div",xe,[h(S(a(N)),1),t("span",{class:"opacity-20 hover-opacity-50 transition cursor-pointer",onClick:l[1]||(l[1]=(...d)=>a(g)&&a(g)(...d))},"Log out")])])):(u(),m("div",we,[t("label",ke,[z(V.$slots,"default")]),t("div",$e,[t("label",Ce,[Se,C(t("input",{class:F(["flex-1 p-4 md-p-4 rounded-xl bg-light-200 shadow-md dark-bg-dark-400 flex-1 border-2 border-solid border-opacity-60 dark-border-opacity-40",{"border-red-700 dark-border-red-300":a(n)&&!a(r),"border-green-700 dark-border-green-800":a(n)&&a(r),"border-light-300":!a(n)}]),ref:"target",maxlength:a(j),"onUpdate:modelValue":l[2]||(l[2]=d=>L(n)?n.value=d:null),id:"email",name:"email",type:"email",onKeydown:l[3]||(l[3]=W(d=>a(c)(),["enter"])),placeholder:"your@gmail.com"},null,42,Ae),[[M,a(n)]])]),t("label",Pe,[Ee,C(t("input",{class:"flex-1 p-4 md-p-4 rounded-xl bg-light-200 shadow-md dark-bg-dark-400","onUpdate:modelValue":l[4]||(l[4]=d=>L(o)?o.value=d:null),id:"name",maxlength:a(j),name:"name",type:"text",onKeydown:l[5]||(l[5]=W(d=>a(c)(),["enter"])),placeholder:a($)},null,40,Te),[[M,a(o)]])])]),t("button",{class:F(["text-sm md-text-md p-4 font-bold md-p-4 rounded-xl shadow-xl hover-shadow-2xl transition -hover-translate-y-2px disabled-opacity-40 active-translate-y-0 active-shadow-md bg-green-400 dark-bg-green-700",{"grayscale-50":!a(r)}]),onClick:l[6]||(l[6]=d=>a(c)()),disabled:!a(r),title:"Your access status will be saved per device and you won't need to enter your e-mail again."},[z(V.$slots,"button",{},()=>[h("GET ACCESS")])],10,Ne)]))]))}},Oe={class:"flex items-center gap-1 p-4 bg-light-100 bg-opacity-70 dark-bg-dark-400 dark-bg-opacity-40 w-full justify-center"},je=t("div",{class:"p-0"},"Made with 🧡 by",-1),Ve=t("a",{href:"https://shop.playtronica.com",target:"_blank"},"Playtronica ",-1),ze=t("span",null,"&",-1),Me=t("a",{href:"https://chromatone.center",target:"_blank"},"Chromatone",-1),Fe=[je,Ve,ze,Me];function Le(s,o){return u(),m("div",Oe,Fe)}const We={},De=ee(We,[["render",Le]]),Ie={key:0,class:"pwa-toast",role:"alertdialog","aria-labelledby":"pwa-message"},Ue=t("div",{class:"mb-3",id:"pwa-message"},"App ready to work offline",-1),Be={__name:"RegisterSW",setup(s){const o=i(!1);function n(){o.value=!0}async function r(){o.value=!1}return te(async()=>{const{registerSW:e}=await ae(()=>import("./virtual_pwa-register.DS-1DR2V.js"),__vite__mapDeps([0,1]));e({immediate:!0,onOfflineReady:n,onRegistered(){console.info("Service Worker registered")},onRegisterError(c){console.error("Service Worker registration error!",c)}})}),(e,c)=>o.value?(u(),m("div",Ie,[Ue,t("button",{class:"pwa-cancel",type:"button",onClick:r},"Close")])):Y("",!0)}},Ye={class:"flex flex-col noise items-center relative min-h-100svh"},Ge={class:"w-full backdrop-blur-xl sticky top-0 z-100 bg-light-200 bg-opacity-60 dark-bg-dark-300 dark-bg-opacity-60"},Je={class:"flex flex items-center w-full max-w-180 mx-auto gap-4 px-2"},Ke={class:"p-2 flex items-center gap-4",href:"/"},Ze=["src"],He={class:"text-xl font-600"},qe=t("div",{class:"flex-1"},null,-1),Qe={key:0,class:"i-la-sun"},Xe={key:1,class:"i-tabler-moon-2"},et=t("div",{class:"i-ph-user-circle-duotone p-5"},null,-1),tt=[et],at={class:"flex flex-wrap w-full mx-auto flex-auto justify-center"},st={__name:"MainLayout",setup(s){const{isFormOpen:o,searchParams:n}=Z(),{theme:r,site:e,isDark:c}=se();return(N,_)=>{const g=Be,k=oe("content"),$=Re,R=De;return u(),m("div",Ye,[b(g),t("div",Ge,[t("div",Je,[t("a",Ke,[t("img",{class:"w-12",src:a(r).logo,alt:"Web-synths collection logo"},null,8,Ze),t("div",He,S(a(e).title),1)]),qe,t("button",{class:"text-xl",onClick:_[0]||(_[0]=O=>c.value=!a(c)),"aria-label":"Dark mode toggle"},[a(c)?(u(),m("div",Xe)):(u(),m("div",Qe))]),t("button",{class:"p-4 z-2000 cursor-pointer","aria-label":"Player profile",onClick:_[1]||(_[1]=O=>o.value=!a(o))},tt)])]),t("div",at,[b(k,{class:"w-full",id:"content"})]),b(ne,{name:"panel"},{default:y(()=>[a(o)?(u(),le($,{key:0,class:"fixed z-1000"},{button:y(()=>[h("JOIN THE COMMUNITY")]),notice:y(()=>[h("Your access status will be saved per device and you won't need to enter your e-mail again.")]),default:y(()=>[h("We are building a community of web-based musicians. Type in your e-mail to instantly gain full access to the collection and receive occasional community updates from us. Stay tuned! ")]),_:1})):Y("",!0)]),_:1}),b(R)])}}},it={Layout:st,enhanceApp({app:s}){}};export{it as R,Re as _,Z as u}; diff --git a/assets/chunks/useClicks.CJYHtBYH.js b/assets/chunks/useClicks.DKflLG6D.js similarity index 94% rename from assets/chunks/useClicks.CJYHtBYH.js rename to assets/chunks/useClicks.DKflLG6D.js index f5a881b7..d6c95fc1 100644 --- a/assets/chunks/useClicks.CJYHtBYH.js +++ b/assets/chunks/useClicks.DKflLG6D.js @@ -1 +1 @@ -import{a as y,c as v,r as p,b as l,d as u,C as b,U as g}from"./framework.HWRfC0Fd.js";import{u as w,D as k,b as _,x as C}from"./index.Q2UX5ner.js";const n=y("favourites",{3:"default",29:"default",39:"default"}),S={key:0,class:"i-la-star"},x={key:1,class:"i-la-star-solid text-yellow"},N={__name:"SynthFav",props:{id:{type:Number,default:0},stars:{type:Number,default:0}},setup(r){const e=r,s=v(()=>n.value[e.id]),o=p(e.stars);async function t(){if((n.value[e.id]===void 0||n.value[e.id]===null)&&m(e.id),n.value[e.id]==="default"){n.value[e.id]=null;return}n.value[e.id]=!n.value[e.id]}async function m(d){var c,i,f;try{const a=await fetch("https://dbs.chromatone.center/flows/trigger/f235dc43-5911-4a7a-8327-5a5c39beb3b2",{method:"POST",mode:"cors",cache:"no-cache",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify({id:d})});o.value=await(a==null?void 0:a.json())}catch(a){console.error(a,(i=(c=a==null?void 0:a.errors)==null?void 0:c[0])==null?void 0:i.message,(f=a==null?void 0:a.response)==null?void 0:f.status)}}return(d,c)=>(l(),u("button",{class:"p-0 cursor-pointer flex items-center gap-1 justify-center relative",onClick:c[0]||(c[0]=b(i=>t(),["stop","prevent"])),title:"Toggle star"},[s.value?(l(),u("div",x)):(l(),u("div",S))]))}},h=w("https://dbs.chromatone.center/").with(k());async function O(r,e){try{return await h.request(C(r,e))}catch(s){console.log(s)}}async function P(r,e,s){try{return await h.request(_(r,e,s))}catch(o){console.log(o)}}async function T(r){var e,s,o;try{const t=await fetch("https://dbs.chromatone.center/flows/trigger/96844b2f-abd0-41ed-bfe1-c5bcf788a98d",{method:"POST",mode:"cors",cache:"no-cache",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify({id:r})});return await(t==null?void 0:t.json())}catch(t){console.error(t,(s=(e=t==null?void 0:t.errors)==null?void 0:e[0])==null?void 0:s.message,(o=t==null?void 0:t.response)==null?void 0:o.status)}}function q(r,e=0){const s=p(e),o=g(T,1e4);async function t(){s.value=await o(r)}return{clicksCount:s,clickSynth:t}}export{N as _,O as a,P as b,n as f,q as u}; +import{a as y,c as v,r as p,b as l,d as u,C as b,U as g}from"./framework.DA3bj7zI.js";import{u as w,D as k,b as _,x as C}from"./index.OsI8M1nP.js";const n=y("favourites",{3:"default",29:"default",39:"default"}),S={key:0,class:"i-la-star"},x={key:1,class:"i-la-star-solid text-yellow"},N={__name:"SynthFav",props:{id:{type:Number,default:0},stars:{type:Number,default:0}},setup(r){const e=r,s=v(()=>n.value[e.id]),o=p(e.stars);async function t(){if((n.value[e.id]===void 0||n.value[e.id]===null)&&m(e.id),n.value[e.id]==="default"){n.value[e.id]=null;return}n.value[e.id]=!n.value[e.id]}async function m(d){var c,i,f;try{const a=await fetch("https://dbs.chromatone.center/flows/trigger/f235dc43-5911-4a7a-8327-5a5c39beb3b2",{method:"POST",mode:"cors",cache:"no-cache",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify({id:d})});o.value=await(a==null?void 0:a.json())}catch(a){console.error(a,(i=(c=a==null?void 0:a.errors)==null?void 0:c[0])==null?void 0:i.message,(f=a==null?void 0:a.response)==null?void 0:f.status)}}return(d,c)=>(l(),u("button",{class:"p-0 cursor-pointer flex items-center gap-1 justify-center relative",onClick:c[0]||(c[0]=b(i=>t(),["stop","prevent"])),title:"Toggle star"},[s.value?(l(),u("div",x)):(l(),u("div",S))]))}},h=w("https://dbs.chromatone.center/").with(k());async function O(r,e){try{return await h.request(C(r,e))}catch(s){console.log(s)}}async function P(r,e,s){try{return await h.request(_(r,e,s))}catch(o){console.log(o)}}async function T(r){var e,s,o;try{const t=await fetch("https://dbs.chromatone.center/flows/trigger/96844b2f-abd0-41ed-bfe1-c5bcf788a98d",{method:"POST",mode:"cors",cache:"no-cache",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify({id:r})});return await(t==null?void 0:t.json())}catch(t){console.error(t,(s=(e=t==null?void 0:t.errors)==null?void 0:e[0])==null?void 0:s.message,(o=t==null?void 0:t.response)==null?void 0:o.status)}}function q(r,e=0){const s=p(e),o=g(T,1e4);async function t(){s.value=await o(r)}return{clicksCount:s,clickSynth:t}}export{N as _,O as a,P as b,n as f,q as u}; diff --git a/assets/chunks/virtual_pwa-register.45FOQ76u.js b/assets/chunks/virtual_pwa-register.DS-1DR2V.js similarity index 85% rename from assets/chunks/virtual_pwa-register.45FOQ76u.js rename to assets/chunks/virtual_pwa-register.DS-1DR2V.js index ca146834..bf532cf8 100644 --- a/assets/chunks/virtual_pwa-register.45FOQ76u.js +++ b/assets/chunks/virtual_pwa-register.DS-1DR2V.js @@ -4,4 +4,4 @@ function __vite__mapDeps(indexes) { } return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) } -import{p}from"./framework.HWRfC0Fd.js";function v(c={}){const{immediate:d=!1,onNeedRefresh:u,onOfflineReady:a,onRegistered:r,onRegisteredSW:s,onRegisterError:t}=c;let i,n;const o=async(e=!0)=>{await n};async function l(){if("serviceWorker"in navigator){if(i=await p(()=>import("./workbox-window.prod.es5.prqDwDSL.js"),__vite__mapDeps([])).then(({Workbox:e})=>new e("/sw.js",{scope:"/",type:"classic"})).catch(e=>{t==null||t(e)}),!i)return;i.addEventListener("activated",e=>{(e.isUpdate||e.isExternal)&&window.location.reload()}),i.addEventListener("installed",e=>{e.isUpdate||a==null||a()}),i.register({immediate:d}).then(e=>{s?s("/sw.js",e):r==null||r(e)}).catch(e=>{t==null||t(e)})}}return n=l(),o}export{v as registerSW}; +import{p}from"./framework.DA3bj7zI.js";function v(c={}){const{immediate:d=!1,onNeedRefresh:u,onOfflineReady:a,onRegistered:r,onRegisteredSW:s,onRegisterError:t}=c;let i,n;const o=async(e=!0)=>{await n};async function l(){if("serviceWorker"in navigator){if(i=await p(()=>import("./workbox-window.prod.es5.DFjpnwFp.js"),__vite__mapDeps([])).then(({Workbox:e})=>new e("/sw.js",{scope:"/",type:"classic"})).catch(e=>{t==null||t(e)}),!i)return;i.addEventListener("activated",e=>{(e.isUpdate||e.isExternal)&&window.location.reload()}),i.addEventListener("installed",e=>{e.isUpdate||a==null||a()}),i.register({immediate:d}).then(e=>{s?s("/sw.js",e):r==null||r(e)}).catch(e=>{t==null||t(e)})}}return n=l(),o}export{v as registerSW}; diff --git a/assets/chunks/workbox-window.prod.es5.prqDwDSL.js b/assets/chunks/workbox-window.prod.es5.DFjpnwFp.js similarity index 100% rename from assets/chunks/workbox-window.prod.es5.prqDwDSL.js rename to assets/chunks/workbox-window.prod.es5.DFjpnwFp.js diff --git a/assets/disco-computer_index.md.CijxVoeF.js b/assets/disco-computer_index.md.wWuluDm_.js similarity index 76% rename from assets/disco-computer_index.md.CijxVoeF.js rename to assets/disco-computer_index.md.wWuluDm_.js index f1d175c2..4959b393 100644 --- a/assets/disco-computer_index.md.CijxVoeF.js +++ b/assets/disco-computer_index.md.wWuluDm_.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as c,R as o,S as i,f as n,b as p}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":19,"clicks":269,"public":false,"is_new":false,"stats":[17]},"relativePath":"disco-computer/index.md","filePath":"disco-computer/index.md","lastUpdated":0}'),m={name:"disco-computer/index.md"},v=Object.assign(m,{setup(l){const{params:e,frontmatter:d}=s();return(u,_)=>{const t=a;return p(),r("div",null,[c(t,o(i(n(e))),null,16)])}}});export{k as __pageData,v as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as c,R as o,S as i,f as n,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":19,"clicks":269,"public":false,"is_new":false,"stats":[17]},"relativePath":"disco-computer/index.md","filePath":"disco-computer/index.md","lastUpdated":0}'),m={name:"disco-computer/index.md"},v=Object.assign(m,{setup(l){const{params:e,frontmatter:d}=s();return(u,_)=>{const t=a;return p(),r("div",null,[c(t,o(i(n(e))),null,16)])}}});export{k as __pageData,v as default}; diff --git a/assets/disco-computer_index.md.CijxVoeF.lean.js b/assets/disco-computer_index.md.wWuluDm_.lean.js similarity index 76% rename from assets/disco-computer_index.md.CijxVoeF.lean.js rename to assets/disco-computer_index.md.wWuluDm_.lean.js index f1d175c2..4959b393 100644 --- a/assets/disco-computer_index.md.CijxVoeF.lean.js +++ b/assets/disco-computer_index.md.wWuluDm_.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as c,R as o,S as i,f as n,b as p}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":19,"clicks":269,"public":false,"is_new":false,"stats":[17]},"relativePath":"disco-computer/index.md","filePath":"disco-computer/index.md","lastUpdated":0}'),m={name:"disco-computer/index.md"},v=Object.assign(m,{setup(l){const{params:e,frontmatter:d}=s();return(u,_)=>{const t=a;return p(),r("div",null,[c(t,o(i(n(e))),null,16)])}}});export{k as __pageData,v as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as c,R as o,S as i,f as n,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":19,"clicks":269,"public":false,"is_new":false,"stats":[17]},"relativePath":"disco-computer/index.md","filePath":"disco-computer/index.md","lastUpdated":0}'),m={name:"disco-computer/index.md"},v=Object.assign(m,{setup(l){const{params:e,frontmatter:d}=s();return(u,_)=>{const t=a;return p(),r("div",null,[c(t,o(i(n(e))),null,16)])}}});export{k as __pageData,v as default}; diff --git a/assets/dotpiano_index.md.y0oBIdM9.js b/assets/dotpiano_index.md.BE4cP1vy.js similarity index 81% rename from assets/dotpiano_index.md.y0oBIdM9.js rename to assets/dotpiano_index.md.BE4cP1vy.js index 54df60d8..bfa84130 100644 --- a/assets/dotpiano_index.md.y0oBIdM9.js +++ b/assets/dotpiano_index.md.BE4cP1vy.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.2tYMmOk8.js";import{s as o,d as n,y as r,R as s,S as i,f as l,b as p}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},"relativePath":"dotpiano/index.md","filePath":"dotpiano/index.md","lastUpdated":0}'),c={name:"dotpiano/index.md"},k=Object.assign(c,{setup(d){const{params:a,frontmatter:m}=o();return(u,_)=>{const t=e;return p(),n("div",null,[r(t,s(i(l(a))),null,16)])}}});export{b as __pageData,k as default}; +import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as n,y as r,R as s,S as i,f as l,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},"relativePath":"dotpiano/index.md","filePath":"dotpiano/index.md","lastUpdated":0}'),c={name:"dotpiano/index.md"},k=Object.assign(c,{setup(d){const{params:a,frontmatter:m}=o();return(u,_)=>{const t=e;return p(),n("div",null,[r(t,s(i(l(a))),null,16)])}}});export{b as __pageData,k as default}; diff --git a/assets/dotpiano_index.md.y0oBIdM9.lean.js b/assets/dotpiano_index.md.BE4cP1vy.lean.js similarity index 81% rename from assets/dotpiano_index.md.y0oBIdM9.lean.js rename to assets/dotpiano_index.md.BE4cP1vy.lean.js index 54df60d8..bfa84130 100644 --- a/assets/dotpiano_index.md.y0oBIdM9.lean.js +++ b/assets/dotpiano_index.md.BE4cP1vy.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.2tYMmOk8.js";import{s as o,d as n,y as r,R as s,S as i,f as l,b as p}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},"relativePath":"dotpiano/index.md","filePath":"dotpiano/index.md","lastUpdated":0}'),c={name:"dotpiano/index.md"},k=Object.assign(c,{setup(d){const{params:a,frontmatter:m}=o();return(u,_)=>{const t=e;return p(),n("div",null,[r(t,s(i(l(a))),null,16)])}}});export{b as __pageData,k as default}; +import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as n,y as r,R as s,S as i,f as l,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},"relativePath":"dotpiano/index.md","filePath":"dotpiano/index.md","lastUpdated":0}'),c={name:"dotpiano/index.md"},k=Object.assign(c,{setup(d){const{params:a,frontmatter:m}=o();return(u,_)=>{const t=e;return p(),n("div",null,[r(t,s(i(l(a))),null,16)])}}});export{b as __pageData,k as default}; diff --git a/assets/dx7_index.md.gR5JXkJK.js b/assets/dx7_index.md.CTqZumAe.js similarity index 74% rename from assets/dx7_index.md.gR5JXkJK.js rename to assets/dx7_index.md.CTqZumAe.js index 5c6ede28..e20a5a64 100644 --- a/assets/dx7_index.md.gR5JXkJK.js +++ b/assets/dx7_index.md.CTqZumAe.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2716,"public":true,"is_new":false,"stats":[5]},"relativePath":"dx7/index.md","filePath":"dx7/index.md","lastUpdated":0}'),d={name:"dx7/index.md"},y=Object.assign(d,{setup(m){const{params:t,frontmatter:p}=s();return(u,_)=>{const e=a;return l(),r("div",null,[n(e,o(i(c(t))),null,16)])}}});export{b as __pageData,y as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2716,"public":true,"is_new":false,"stats":[5]},"relativePath":"dx7/index.md","filePath":"dx7/index.md","lastUpdated":0}'),d={name:"dx7/index.md"},y=Object.assign(d,{setup(m){const{params:t,frontmatter:p}=s();return(u,_)=>{const e=a;return l(),r("div",null,[n(e,o(i(c(t))),null,16)])}}});export{b as __pageData,y as default}; diff --git a/assets/dx7_index.md.gR5JXkJK.lean.js b/assets/dx7_index.md.CTqZumAe.lean.js similarity index 74% rename from assets/dx7_index.md.gR5JXkJK.lean.js rename to assets/dx7_index.md.CTqZumAe.lean.js index 5c6ede28..e20a5a64 100644 --- a/assets/dx7_index.md.gR5JXkJK.lean.js +++ b/assets/dx7_index.md.CTqZumAe.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2716,"public":true,"is_new":false,"stats":[5]},"relativePath":"dx7/index.md","filePath":"dx7/index.md","lastUpdated":0}'),d={name:"dx7/index.md"},y=Object.assign(d,{setup(m){const{params:t,frontmatter:p}=s();return(u,_)=>{const e=a;return l(),r("div",null,[n(e,o(i(c(t))),null,16)])}}});export{b as __pageData,y as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2716,"public":true,"is_new":false,"stats":[5]},"relativePath":"dx7/index.md","filePath":"dx7/index.md","lastUpdated":0}'),d={name:"dx7/index.md"},y=Object.assign(d,{setup(m){const{params:t,frontmatter:p}=s();return(u,_)=>{const e=a;return l(),r("div",null,[n(e,o(i(c(t))),null,16)])}}});export{b as __pageData,y as default}; diff --git a/assets/elementary_index.md.6CiyeB9r.js b/assets/elementary_index.md.BwvTZPnD.js similarity index 82% rename from assets/elementary_index.md.6CiyeB9r.js rename to assets/elementary_index.md.BwvTZPnD.js index d61e7fff..28e8f303 100644 --- a/assets/elementary_index.md.6CiyeB9r.js +++ b/assets/elementary_index.md.BwvTZPnD.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as n,y as s,R as o,S as c,f as l,b as i}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},"relativePath":"elementary/index.md","filePath":"elementary/index.md","lastUpdated":0}'),m={name:"elementary/index.md"},k=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=r();return(_,u)=>{const t=a;return i(),n("div",null,[s(t,o(c(l(e))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as n,y as s,R as o,S as c,f as l,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},"relativePath":"elementary/index.md","filePath":"elementary/index.md","lastUpdated":0}'),m={name:"elementary/index.md"},k=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=r();return(_,u)=>{const t=a;return i(),n("div",null,[s(t,o(c(l(e))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/elementary_index.md.6CiyeB9r.lean.js b/assets/elementary_index.md.BwvTZPnD.lean.js similarity index 82% rename from assets/elementary_index.md.6CiyeB9r.lean.js rename to assets/elementary_index.md.BwvTZPnD.lean.js index d61e7fff..28e8f303 100644 --- a/assets/elementary_index.md.6CiyeB9r.lean.js +++ b/assets/elementary_index.md.BwvTZPnD.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as n,y as s,R as o,S as c,f as l,b as i}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},"relativePath":"elementary/index.md","filePath":"elementary/index.md","lastUpdated":0}'),m={name:"elementary/index.md"},k=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=r();return(_,u)=>{const t=a;return i(),n("div",null,[s(t,o(c(l(e))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as n,y as s,R as o,S as c,f as l,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},"relativePath":"elementary/index.md","filePath":"elementary/index.md","lastUpdated":0}'),m={name:"elementary/index.md"},k=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=r();return(_,u)=>{const t=a;return i(),n("div",null,[s(t,o(c(l(e))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/groove-pizza_index.md.5djMEmMm.js b/assets/groove-pizza_index.md.BlSmjWiK.js similarity index 85% rename from assets/groove-pizza_index.md.5djMEmMm.js rename to assets/groove-pizza_index.md.BlSmjWiK.js index a521a14a..c89bdd5f 100644 --- a/assets/groove-pizza_index.md.5djMEmMm.js +++ b/assets/groove-pizza_index.md.BlSmjWiK.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as o,R as i,S as n,f as c,b as p}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":31,"clicks":91,"public":false,"is_new":false,"stats":[27]},"relativePath":"groove-pizza/index.md","filePath":"groove-pizza/index.md","lastUpdated":0}'),l={name:"groove-pizza/index.md"},b=Object.assign(l,{setup(d){const{params:a,frontmatter:m}=r();return(u,g)=>{const e=t;return p(),s("div",null,[o(e,i(n(c(a))),null,16)])}}});export{v as __pageData,b as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as o,R as i,S as n,f as c,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":31,"clicks":91,"public":false,"is_new":false,"stats":[27]},"relativePath":"groove-pizza/index.md","filePath":"groove-pizza/index.md","lastUpdated":0}'),l={name:"groove-pizza/index.md"},b=Object.assign(l,{setup(d){const{params:a,frontmatter:m}=r();return(u,g)=>{const e=t;return p(),s("div",null,[o(e,i(n(c(a))),null,16)])}}});export{v as __pageData,b as default}; diff --git a/assets/groove-pizza_index.md.5djMEmMm.lean.js b/assets/groove-pizza_index.md.BlSmjWiK.lean.js similarity index 85% rename from assets/groove-pizza_index.md.5djMEmMm.lean.js rename to assets/groove-pizza_index.md.BlSmjWiK.lean.js index a521a14a..c89bdd5f 100644 --- a/assets/groove-pizza_index.md.5djMEmMm.lean.js +++ b/assets/groove-pizza_index.md.BlSmjWiK.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as o,R as i,S as n,f as c,b as p}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":31,"clicks":91,"public":false,"is_new":false,"stats":[27]},"relativePath":"groove-pizza/index.md","filePath":"groove-pizza/index.md","lastUpdated":0}'),l={name:"groove-pizza/index.md"},b=Object.assign(l,{setup(d){const{params:a,frontmatter:m}=r();return(u,g)=>{const e=t;return p(),s("div",null,[o(e,i(n(c(a))),null,16)])}}});export{v as __pageData,b as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as o,R as i,S as n,f as c,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":31,"clicks":91,"public":false,"is_new":false,"stats":[27]},"relativePath":"groove-pizza/index.md","filePath":"groove-pizza/index.md","lastUpdated":0}'),l={name:"groove-pizza/index.md"},b=Object.assign(l,{setup(d){const{params:a,frontmatter:m}=r();return(u,g)=>{const e=t;return p(),s("div",null,[o(e,i(n(c(a))),null,16)])}}});export{v as __pageData,b as default}; diff --git a/assets/index.md.cf3pcfxO.js b/assets/index.md.Dn_VxzHO.js similarity index 99% rename from assets/index.md.cf3pcfxO.js rename to assets/index.md.Dn_VxzHO.js index d6e7bd08..af121ffd 100644 --- a/assets/index.md.cf3pcfxO.js +++ b/assets/index.md.Dn_VxzHO.js @@ -1 +1 @@ -import{D as Le,b,d as y,g as p,f as T,q as k,r as P,E as fe,F as Oe,G as Pe,t as O,H as Ne,I as Z,e as X,j as ee,h as K,_ as ve,s as Be,x as Re,J as te,y as z,z as q,A as se,K as ze,i as De,L as _e,C as je,M as We,N as Ze,a as Fe,c as J,o as Ve,w as Ge,T as Ue,n as Ke,O as qe,P as Ye,Q as He}from"./chunks/framework.HWRfC0Fd.js";import{u as Je,f as U,_ as Qe,a as Xe}from"./chunks/useClicks.CJYHtBYH.js";import{u as we}from"./chunks/theme.TIIJwiPz.js";import"./chunks/index.Q2UX5ner.js";const et={class:"text-center line-height-loose text-md"},tt={class:"mx-auto max-w-75ch intro md-text-lg"},st=p("div",{class:"i-mdi-share"},null,-1),nt=p("span",null,"Share to save for later",-1),it=[st,nt],at={__name:"AboutShare",setup(t){const{share:e,isSupported:s}=Le();function n(){e({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(i,a)=>(b(),y("div",et,[p("div",tt,[T(s)?(b(),y("button",{key:0,class:"mx-auto flex items-center gap-2 text-white py-2 px-4 mt-6 shadow-lg rounded-lg cursor-pointer bg-green-600 -hover-translate-y-2px transition",onClick:a[0]||(a[0]=r=>n()),"data-umami-event":"Shared via button"},it)):k("",!0)])]))}},ne=JSON.parse(`[{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6791,"public":true,"is_new":false,"stats":[2]},{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2716,"public":true,"is_new":false,"stats":[5]},{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"content":"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.\\n\\n- Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing.\\n- Groove Monkee: graciously provided the MIDI files that are used for the percussion loops.\\n- Keenan Brand: created the midi.city logo and various icons used on the site.\\n- Noun Project: various icons are used via a Pro license.\\n- Google Material Design: various icons.\\n- Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API. ","iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"content":"The **aQWERTYon** (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.\\n\\nhttps://youtu.be/hqFr4lF6u_Y","iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"content":"## What can it be used for?\\n\\nMany teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.\\n\\n## Can I use it to make my own songs?\\n\\nYes. Check out the Song Maker experiment, which lets you make and share your own songs.\\n\\n## Do I need to make an account?\\n\\nNope. Just open any experiment and start playing.\\n\\n## How were these built?\\n\\nAll our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on [Github](https://github.com/googlecreativelab/chrome-music-lab).\\n\\n## What devices do these work on?\\n\\nYou can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.","iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths","slug":"websynths","author":"WebSynths","author_link":"https://www.websynths.org/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"content":"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.\\n\\nIt also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.\\n\\nTouch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.","iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":16,"clicks":177,"public":false,"is_new":false,"stats":[15]},{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"content":" BeepBox is developed by John Nesky.\\n\\nBeepBox does not claim ownership over songs created with it, so original songs belong to their authors.\\n\\nNeither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data. ","iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":17,"clicks":10,"public":false,"is_new":true,"stats":[46]},{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":18,"clicks":17,"public":false,"is_new":false,"stats":[16]},{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"content":null,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":19,"clicks":269,"public":false,"is_new":false,"stats":[17]},{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":20,"clicks":256,"public":false,"is_new":false,"stats":[18]},{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":22,"clicks":10,"public":false,"is_new":true,"stats":[45]},{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":23,"clicks":155,"public":false,"is_new":false,"stats":[19]},{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":24,"clicks":495,"public":false,"is_new":false,"stats":[20]},{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"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. ","iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":25,"clicks":282,"public":false,"is_new":false,"stats":[21]},{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"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. ","iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":26,"clicks":320,"public":false,"is_new":false,"stats":[22]},{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"content":"https://github.com/mbitsnbites/soundbox","iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":27,"clicks":209,"public":false,"is_new":false,"stats":[23]},{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":28,"clicks":210,"public":false,"is_new":false,"stats":[24]},{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":29,"clicks":202,"public":false,"is_new":false,"stats":[25]},{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":30,"clicks":166,"public":false,"is_new":false,"stats":[26]},{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":31,"clicks":91,"public":false,"is_new":false,"stats":[27]},{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":32,"clicks":217,"public":false,"is_new":false,"stats":[28]},{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":33,"clicks":4,"public":false,"is_new":false,"stats":[29]},{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":34,"clicks":127,"public":false,"is_new":false,"stats":[30]},{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":35,"clicks":164,"public":false,"is_new":false,"stats":[31]},{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":36,"clicks":255,"public":false,"is_new":false,"stats":[32]},{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":37,"clicks":184,"public":false,"is_new":false,"stats":[33]},{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":38,"clicks":117,"public":false,"is_new":false,"stats":[34]},{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"content":"Luke Twyman - project concept, design & Ul.\\nwhitevinyldesign.com\\n@whitevinylUK\\nLuke Phillips - audio development & musical interaction.\\nfemurdesign.com\\n@lukephills\\nEdward Silverton - client & server architecture & core development.\\nedsilv.com\\n@edsilv","iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":39,"clicks":19,"public":false,"is_new":false,"stats":[35]},{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":40,"clicks":146,"public":false,"is_new":false,"stats":[36]},{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":41,"clicks":145,"public":false,"is_new":false,"stats":[37]},{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":42,"clicks":129,"public":false,"is_new":false,"stats":[38]},{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":43,"clicks":305,"public":false,"is_new":false,"stats":[39]},{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":44,"clicks":15,"public":false,"is_new":false,"stats":[40]},{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":45,"clicks":124,"public":false,"is_new":false,"stats":[41]},{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":46,"clicks":21,"public":false,"is_new":false,"stats":[42]}]`),rt={class:"text-center line-height-loose text-md"},ot={class:"mx-auto max-w-75ch intro md-text-lg"},lt={class:"p-2 flex flex-col mt-8"},ct={class:"text-4xl font-bold"},ut=p("div",{class:"text-lg"},"web synths",-1),ht={class:"p-2 flex flex-col mt-8"},dt={class:"text-4xl font-bold"},ft=p("div",{class:"text-lg"},"web musicians",-1),pt={__name:"AboutCount",setup(t){const e=P(),s=P(0),n=P(0),i=fe(s),a=fe(n),r=Oe(e);return Pe(r,async o=>{if(o){s.value=ne.length;const c=await(await fetch("https://dbs.chromatone.center/flows/trigger/0c0e8d82-8e12-44a6-867a-57ddeec9d774",{type:"GET",mode:"cors",headers:{"Content-Type":"application/json"}})).json();n.value=c.count}}),(o,l)=>(b(),y("div",rt,[p("div",ot,[p("div",{class:"flex justify-center",ref_key:"counters",ref:e},[p("div",lt,[p("div",ct,O(T(i).toFixed()),1),ut]),p("div",ht,[p("div",dt,O(T(a).toFixed()||5e3)+"+",1),ft])],512)])]))}},mt={class:"flex flex-col text-center gap-4 bg-light-700 dark-bg-dark-200 dark-bg-opacity-20 p-4 rounded-lg shadow-lg mb-8"},gt=p("div",{class:"text-xl font-bold my-2"},"Suggest a new web-synth to the collection",-1),bt=["disabled"],yt={__name:"FormSynth",emits:["submitted"],setup(t,{emit:e}){const s=e,n=Ne({url:"",text:""}),i=/[(http(s) ?): \/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/;function a(l){return i.test(l)}const r=P();async function o(){var l,c,u;try{const h=await fetch("https://dbs.chromatone.center/flows/trigger/dc8ca96f-76e6-4cac-b26c-10751746eb89",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(n)});r.value=await(h==null?void 0:h.json()),n.url="",n.text="",setTimeout(()=>{s("submitted")},2e3)}catch(h){console.error(h,(c=(l=h==null?void 0:h.errors)==null?void 0:l[0])==null?void 0:c.message,(u=h==null?void 0:h.response)==null?void 0:u.status)}}return(l,c)=>(b(),y("div",mt,[r.value?(b(),y(Z,{key:1},[K("Thanks for your suggestion!")],64)):(b(),y(Z,{key:0},[gt,X(p("input",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",type:"text",placeholder:"https://new.synth.url/","onUpdate:modelValue":c[0]||(c[0]=u=>n.url=u)},null,512),[[ee,n.url]]),X(p("textarea",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",oninput:"this.style.height = ''; this.style.height = this.scrollHeight +'px'",placeholder:"Describe the web-app and how do you use it musically","onUpdate:modelValue":c[1]||(c[1]=u=>n.text=u)},null,512),[[ee,n.text]]),p("button",{class:"text-xl py-2 px-4 rounded bg-dark-100 text-light-200 dark-bg-light-700 dark-text-dark-500 shadow-lg disabled-opacity-20",disabled:!a(n.url),onClick:c[2]||(c[2]=u=>o())},O(a(n.url)?"Submit":"Please provide a valid URL"),9,bt)],64))]))}},ke=t=>(We("data-v-f3c34bc1"),t=t(),Ze(),t),vt={key:0,class:"px-2 py-1 bg-light-800 dark-bg-dark-800 rounded-xl transition text-sm select-none absolute bottom-2 left-2 text-center z-200 flex items-center gap-1 opacity-70 hover-opacity-100",title:"Since 28 Oct 2023"},_t=ke(()=>p("div",{class:"i-la-eye"},null,-1)),wt={class:"p-0 mt-2px"},kt={class:"p-4 flex flex-col items-start justify-between gap-2",style:{flex:"10 0 200px"}},xt={class:"flex items-center gap-2 flex-0 w-full"},St={class:"transition text-xl select-none absolute top-4 left-4 text-center z-200"},Mt={class:"flex-auto"},Tt={class:"flex items-center gap-2"},It={class:"text-2xl font-bold"},At={key:0,class:"font-normal",title:"Archived locally by us"},Et=ke(()=>p("div",{class:"i-ph-archive-duotone"},null,-1)),$t=[Et],Ct={class:"flex-1"},Lt={key:1,class:"flex-1 flex items-end flex flex-wrap gap-2"},Ot=["href"],Pt={key:3,class:"text-xl p-2 absolute left-2 top-4 bg-yellow-600 rounded-xl shadow font-bold z-1000 transform -rotate-10"},Nt={__name:"SynthCard",props:{pos:{type:Number,default:0},sort:{type:Number,default:0},public:{type:Boolean,default:!1},title:{type:String,default:""},id:{type:Number,default:0},slug:{type:String,default:""},description:{type:String,default:""},cover:{type:String,default:""},url:{type:String,default:""},author:{type:String,default:""},author_link:{type:String,default:""},tags:{type:Array,default:()=>[]},archive:{type:Boolean,default:!1},archive_link:{type:String,default:""},iframe:{type:Boolean,default:null},clicks:{type:Number,default:0},stars:{type:Number,default:0},counter:{type:Number,default:0},is_new:{type:Boolean,default:null}},setup(t){const{isDark:e}=Be(),s=t,{isFormOpen:n,isAccessGranted:i}=we(),{clicksCount:a,clickSynth:r}=Je(s.id);async function o(){!s.public&&!i.value?n.value=!n.value:(r(s.id),s.iframe?window.open(s.slug+"/","_self"):window.open(s.archive?s.archive_link:s.url,"_blank"))}return(l,c)=>{var d;const u=Qe,h=Re("ClientOnly");return b(),y("button",{class:"max-w-180 w-full flex flex-wrap items-stretch text-left relative bg-light-500 dark-bg-dark-300 -hover-translate-y-6px transition duration-200 hover-shadow-lg rounded-lg overflow-hidden relative border-1 border-dark-100 border-opacity-20 shadow-sm dark-border-light-800 dark-border-opacity-20",style:te({borderColor:T(U)[t.id]?T(e)?"hsl(50deg,80%,35%)":"hsl(40deg,90%,80%)":null}),onClick:o},[p("div",{class:"cover min-h-50 bg-cover bg-center filter transition",style:te([{backgroundImage:`url(/cover/${t.slug}.webp)`},{flex:"1 1 280px"}])},[T(a)||t.counter?(b(),y("div",vt,[_t,p("div",wt,O(T(a)||t.counter),1)])):k("",!0)],4),p("div",kt,[p("div",xt,[p("div",St,O(t.sort),1),p("div",Mt,[p("span",Tt,[p("div",It,O(t.title),1),t.archive?(b(),y("span",At,$t)):k("",!0)])]),z(h,null,{default:q(()=>[z(u,{class:"text-xl mr-2 absolute z-200",id:t.id,stars:t.stars},null,8,["id","stars"])]),_:1})]),t.author?(b(),se(ze(t.author_link?"a":"div"),{key:0,class:"p-0 text-md",href:t.author_link,target:"_blank"},{default:q(()=>[K("by "+O(t.author),1)]),_:1},8,["href"])):k("",!0),p("div",Ct,[De(l.$slots,"default",{},void 0,!0)]),((d=t.tags)==null?void 0:d.length)>0?(b(),y("div",Lt,[(b(!0),y(Z,null,_e(t.tags,g=>(b(),y("div",{class:"px-2 py-1 text-sm bg-light-800 dark-bg-dark-500 rounded-lg",key:g},O(g),1))),128))])):k("",!0),t.iframe?k("",!0):(b(),y("a",{key:2,class:"absolute bottom-4 right-4 i-la-external-link-square-alt text-lg opacity-40 transition transition hover-opacity-100",onClick:c[0]||(c[0]=je(()=>{},["stop"])),href:`/${t.slug}/`,title:"Opens in a new window"},null,8,Ot)),t.is_new?(b(),y("div",Pt,"NEW!")):k("",!0)])],4)}}},Bt=ve(Nt,[["__scopeId","data-v-f3c34bc1"]]);function L(t){return Array.isArray?Array.isArray(t):Me(t)==="[object Array]"}const Rt=1/0;function zt(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-Rt?"-0":e}function Dt(t){return t==null?"":zt(t)}function $(t){return typeof t=="string"}function xe(t){return typeof t=="number"}function jt(t){return t===!0||t===!1||Wt(t)&&Me(t)=="[object Boolean]"}function Se(t){return typeof t=="object"}function Wt(t){return Se(t)&&t!==null}function x(t){return t!=null}function Q(t){return!t.trim().length}function Me(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const Zt="Incorrect 'index' type",Ft=t=>`Invalid value for key ${t}`,Vt=t=>`Pattern length exceeds max of ${t}.`,Gt=t=>`Missing ${t} property in key`,Ut=t=>`Property 'weight' in key '${t}' must be a positive integer`,pe=Object.prototype.hasOwnProperty;class Kt{constructor(e){this._keys=[],this._keyMap={};let s=0;e.forEach(n=>{let i=Te(n);this._keys.push(i),this._keyMap[i.id]=i,s+=i.weight}),this._keys.forEach(n=>{n.weight/=s})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function Te(t){let e=null,s=null,n=null,i=1,a=null;if($(t)||L(t))n=t,e=me(t),s=ie(t);else{if(!pe.call(t,"name"))throw new Error(Gt("name"));const r=t.name;if(n=r,pe.call(t,"weight")&&(i=t.weight,i<=0))throw new Error(Ut(r));e=me(r),s=ie(r),a=t.getFn}return{path:e,id:s,weight:i,src:n,getFn:a}}function me(t){return L(t)?t:t.split(".")}function ie(t){return L(t)?t.join("."):t}function qt(t,e){let s=[],n=!1;const i=(a,r,o)=>{if(x(a))if(!r[o])s.push(a);else{let l=r[o];const c=a[l];if(!x(c))return;if(o===r.length-1&&($(c)||xe(c)||jt(c)))s.push(Dt(c));else if(L(c)){n=!0;for(let u=0,h=c.length;ut.score===e.score?t.idx{this._keysMap[s.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,$(this.docs[0])?this.docs.forEach((e,s)=>{this._addString(e,s)}):this.docs.forEach((e,s)=>{this._addObject(e,s)}),this.norm.clear())}add(e){const s=this.size();$(e)?this._addString(e,s):this._addObject(e,s)}removeAt(e){this.records.splice(e,1);for(let s=e,n=this.size();s{let r=i.getFn?i.getFn(e):this.getFn(e,i.path);if(x(r)){if(L(r)){let o=[];const l=[{nestedArrIndex:-1,value:r}];for(;l.length;){const{nestedArrIndex:c,value:u}=l.pop();if(x(u))if($(u)&&!Q(u)){let h={v:u,i:c,n:this.norm.get(u)};o.push(h)}else L(u)&&u.forEach((h,d)=>{l.push({nestedArrIndex:d,value:h})})}n.$[a]=o}else if($(r)&&!Q(r)){let o={v:r,n:this.norm.get(r)};n.$[a]=o}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function Ie(t,e,{getFn:s=f.getFn,fieldNormWeight:n=f.fieldNormWeight}={}){const i=new ue({getFn:s,fieldNormWeight:n});return i.setKeys(t.map(Te)),i.setSources(e),i.create(),i}function ts(t,{getFn:e=f.getFn,fieldNormWeight:s=f.fieldNormWeight}={}){const{keys:n,records:i}=t,a=new ue({getFn:e,fieldNormWeight:s});return a.setKeys(n),a.setIndexRecords(i),a}function G(t,{errors:e=0,currentLocation:s=0,expectedLocation:n=0,distance:i=f.distance,ignoreLocation:a=f.ignoreLocation}={}){const r=e/t.length;if(a)return r;const o=Math.abs(n-s);return i?r+o/i:o?1:r}function ss(t=[],e=f.minMatchCharLength){let s=[],n=-1,i=-1,a=0;for(let r=t.length;a=e&&s.push([n,i]),n=-1)}return t[a-1]&&a-n>=e&&s.push([n,a-1]),s}const R=32;function ns(t,e,s,{location:n=f.location,distance:i=f.distance,threshold:a=f.threshold,findAllMatches:r=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,includeMatches:l=f.includeMatches,ignoreLocation:c=f.ignoreLocation}={}){if(e.length>R)throw new Error(Vt(R));const u=e.length,h=t.length,d=Math.max(0,Math.min(n,h));let g=a,v=d;const m=o>1||l,S=m?Array(h):[];let M;for(;(M=t.indexOf(e,v))>-1;){let w=G(e,{currentLocation:M,expectedLocation:d,distance:i,ignoreLocation:c});if(g=Math.min(w,g),v=M+u,m){let I=0;for(;I=he;A-=1){let V=A-1,de=s[t.charAt(V)];if(m&&(S[V]=+!!de),j[A]=(j[A+1]<<1|1)&de,w&&(j[A]|=(C[A+1]|C[A])<<1|1|C[A+1]),j[A]&F&&(E=G(e,{errors:w,currentLocation:V,expectedLocation:d,distance:i,ignoreLocation:c}),E<=g)){if(g=E,v=V,v<=d)break;he=Math.max(1,2*d-v)}}if(G(e,{errors:w+1,currentLocation:d,expectedLocation:d,distance:i,ignoreLocation:c})>g)break;C=j}const D={isMatch:v>=0,score:Math.max(.001,E)};if(m){const w=ss(S,o);w.length?l&&(D.indices=w):D.isMatch=!1}return D}function is(t){let e={};for(let s=0,n=t.length;s{this.chunks.push({pattern:d,alphabet:is(d),startIndex:g})},h=this.pattern.length;if(h>R){let d=0;const g=h%R,v=h-g;for(;d{const{isMatch:M,score:C,indices:E}=ns(e,v,m,{location:i+S,distance:a,threshold:r,findAllMatches:o,minMatchCharLength:l,includeMatches:n,ignoreLocation:c});M&&(d=!0),h+=C,M&&E&&(u=[...u,...E])});let g={isMatch:d,score:d?h/this.chunks.length:1};return d&&n&&(g.indices=u),g}}class N{constructor(e){this.pattern=e}static isMultiMatch(e){return ge(e,this.multiRegex)}static isSingleMatch(e){return ge(e,this.singleRegex)}search(){}}function ge(t,e){const s=t.match(e);return s?s[1]:null}class as extends N{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const s=e===this.pattern;return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class rs extends N{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const n=e.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class os extends N{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const s=e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class ls extends N{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const s=!e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class cs extends N{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const s=e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class us extends N{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const s=!e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class Ee extends N{constructor(e,{location:s=f.location,threshold:n=f.threshold,distance:i=f.distance,includeMatches:a=f.includeMatches,findAllMatches:r=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,isCaseSensitive:l=f.isCaseSensitive,ignoreLocation:c=f.ignoreLocation}={}){super(e),this._bitapSearch=new Ae(e,{location:s,threshold:n,distance:i,includeMatches:a,findAllMatches:r,minMatchCharLength:o,isCaseSensitive:l,ignoreLocation:c})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class $e extends N{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let s=0,n;const i=[],a=this.pattern.length;for(;(n=e.indexOf(this.pattern,s))>-1;)s=n+a,i.push([n,s-1]);const r=!!i.length;return{isMatch:r,score:r?0:1,indices:i}}}const ae=[as,$e,os,ls,us,cs,rs,Ee],be=ae.length,hs=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,ds="|";function fs(t,e={}){return t.split(ds).map(s=>{let n=s.trim().split(hs).filter(a=>a&&!!a.trim()),i=[];for(let a=0,r=n.length;a!!(t[Y.AND]||t[Y.OR]),bs=t=>!!t[le.PATH],ys=t=>!L(t)&&Se(t)&&!ce(t),ye=t=>({[Y.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function Ce(t,e,{auto:s=!0}={}){const n=i=>{let a=Object.keys(i);const r=bs(i);if(!r&&a.length>1&&!ce(i))return n(ye(i));if(ys(i)){const l=r?i[le.PATH]:a[0],c=r?i[le.PATTERN]:i[l];if(!$(c))throw new Error(Ft(l));const u={keyId:ie(l),pattern:c};return s&&(u.searcher=oe(c,e)),u}let o={children:[],operator:a[0]};return a.forEach(l=>{const c=i[l];L(c)&&c.forEach(u=>{o.children.push(n(u))})}),o};return ce(t)||(t=ye(t)),n(t)}function vs(t,{ignoreFieldNorm:e=f.ignoreFieldNorm}){t.forEach(s=>{let n=1;s.matches.forEach(({key:i,norm:a,score:r})=>{const o=i?i.weight:null;n*=Math.pow(r===0&&o?Number.EPSILON:r,(o||1)*(e?1:a))}),s.score=n})}function _s(t,e){const s=t.matches;e.matches=[],x(s)&&s.forEach(n=>{if(!x(n.indices)||!n.indices.length)return;const{indices:i,value:a}=n;let r={indices:i,value:a};n.key&&(r.key=n.key.src),n.idx>-1&&(r.refIndex=n.idx),e.matches.push(r)})}function ws(t,e){e.score=t.score}function ks(t,e,{includeMatches:s=f.includeMatches,includeScore:n=f.includeScore}={}){const i=[];return s&&i.push(_s),n&&i.push(ws),t.map(a=>{const{idx:r}=a,o={item:e[r],refIndex:r};return i.length&&i.forEach(l=>{l(a,o)}),o})}class W{constructor(e,s={},n){this.options={...f,...s},this.options.useExtendedSearch,this._keyStore=new Kt(this.options.keys),this.setCollection(e,n)}setCollection(e,s){if(this._docs=e,s&&!(s instanceof ue))throw new Error(Zt);this._myIndex=s||Ie(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){x(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const s=[];for(let n=0,i=this._docs.length;n-1&&(l=l.slice(0,s)),ks(l,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(e){const s=oe(e,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:a,i:r,n:o})=>{if(!x(a))return;const{isMatch:l,score:c,indices:u}=s.searchIn(a);l&&i.push({item:a,idx:r,matches:[{score:c,value:a,norm:o,indices:u}]})}),i}_searchLogical(e){const s=Ce(e,this.options),n=(o,l,c)=>{if(!o.children){const{keyId:h,searcher:d}=o,g=this._findMatches({key:this._keyStore.get(h),value:this._myIndex.getValueForItemAtKeyId(l,h),searcher:d});return g&&g.length?[{idx:c,item:l,matches:g}]:[]}const u=[];for(let h=0,d=o.children.length;h{if(x(o)){let c=n(s,o,l);c.length&&(a[l]||(a[l]={idx:l,item:o,matches:[]},r.push(a[l])),c.forEach(({matches:u})=>{a[l].matches.push(...u)}))}}),r}_searchObjectList(e){const s=oe(e,this.options),{keys:n,records:i}=this._myIndex,a=[];return i.forEach(({$:r,i:o})=>{if(!x(r))return;let l=[];n.forEach((c,u)=>{l.push(...this._findMatches({key:c,value:r[u],searcher:s}))}),l.length&&a.push({idx:o,item:r,matches:l})}),a}_findMatches({key:e,value:s,searcher:n}){if(!x(s))return[];let i=[];if(L(s))s.forEach(({v:a,i:r,n:o})=>{if(!x(a))return;const{isMatch:l,score:c,indices:u}=n.searchIn(a);l&&i.push({score:c,key:e,value:a,idx:r,norm:o,indices:u})});else{const{v:a,n:r}=s,{isMatch:o,score:l,indices:c}=n.searchIn(a);o&&i.push({score:l,key:e,value:a,norm:r,indices:c})}return i}}W.version="7.0.0";W.createIndex=Ie;W.parseIndex=ts;W.config=f;W.parseQuery=Ce;gs(ms);const xs={class:"flex flex-col items-center mb-2 px-8"},Ss={class:"w-full max-w-110 flex items-center relative my-4 gap-2"},Ms=["placeholder"],Ts=p("div",{class:"i-la-search absolute left-2 text-xl opacity-40"},null,-1),Is=["title"],As={key:0,class:"i-la-star-solid"},Es={key:1,class:"i-la-star"},$s={class:"flex flex-col items-center gap-8 p-2 max-w-160 mx-auto mb-12"},Cs=["index"],Ls={class:"p-2",key:"nnn"},Os={key:0,class:"animate-pulse text-center"},Ps={__name:"SynthList",setup(t){const{isAccessGranted:e}=we(),s=P(ne),n=new W(ne,{includeScore:!0,ignoreLocation:!0,shouldSort:!0,keys:["title","slug","author"]}),i=Fe("fav-filter",!1),a=P(""),r=P(!1),o=J(()=>n.search(a.value)),l=J(()=>o.value.filter(h=>h.score<.2).sort((h,d)=>h.score>d.score?1:0).map(h=>h.item.slug)),c=J(()=>s.value.filter(h=>a.value?l.value.includes(h.slug):i.value?U.value[h.id]:!0)),u=P([]);return Ve(async()=>{u.value=await Xe("synths",{fields:["id",{stats:["views","stars"]}]})}),Ge(U,h=>{Object.values(h).filter(Boolean).length==0&&(i.value=!1)},{deep:!0,immediate:!0}),(h,d)=>{const g=Bt,v=yt;return b(),y(Z,null,[p("div",xs,[p("div",Ss,[X(p("input",{class:"w-full focus text-xl py-2 pl-9 bg-light-50 bg-opacity-100 shadow-inner border-1 border-dark-100 border-opacity-10 rounded-lg dark-bg-dark-200 outline-none focus-border-opacity-90",placeholder:"Type to search...","onUpdate:modelValue":d[0]||(d[0]=m=>a.value=m)},null,8,Ms),[[ee,a.value]]),Ts,a.value?(b(),y("div",{key:0,class:"i-la-times absolute right-2 text-xl opacity-40 hover-opacity-80 transition cursor-pointer",onClick:d[1]||(d[1]=m=>a.value="")})):k("",!0),Object.values(T(U)).filter(Boolean).length>0&&!a.value?(b(),y("button",{key:1,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl text-yellow",title:T(i)?"Only favourites are shown":"Show only favourites",onClick:d[2]||(d[2]=m=>i.value=!T(i))},[z(Ue,{name:"fade"},{default:q(()=>[T(i)?(b(),y("div",As)):(b(),y("div",Es))]),_:1})],8,Is)):k("",!0),a.value?k("",!0):(b(),y("button",{key:2,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl",title:"Suggest a new link to the collection",onClick:d[3]||(d[3]=m=>r.value=!r.value)},[p("div",{class:Ke(["i-la-plus transform transition",{"rotate-45":r.value}])},null,2)]))])]),p("div",$s,[r.value?k("",!0):(b(),se(Ye,{key:0,name:"fade"},{default:q(()=>[(b(!0),y(Z,null,_e(c.value,(m,S)=>{var M,C,E,B,F,D,w,I;return b(),y("div",{class:"flex w-full sticky",style:te([{top:`${80+S*4}px`,zIndex:S+10},{flex:"1 1 240px"}]),key:m.id,index:S},[(b(),se(g,qe({pos:S,style:{filter:!m.public&&!T(e)?"contrast(70%) blur(2px) opacity(80%)":""},key:m.id},m,{counter:(B=(E=(C=(M=u.value)==null?void 0:M.find(_=>(_==null?void 0:_.id)==(m==null?void 0:m.id)))==null?void 0:C.stats)==null?void 0:E[0])==null?void 0:B.views,stars:(I=(w=(D=(F=u.value)==null?void 0:F.find(_=>(_==null?void 0:_.id)==(m==null?void 0:m.id)))==null?void 0:D.stats)==null?void 0:w[0])==null?void 0:I.stars}),null,16,["pos","style","counter","stars"]))],12,Cs)}),128))]),_:1})),c.value.length==0||r.value?(b(),y("div",Ls,[r.value?k("",!0):(b(),y("div",Os,"We don't know such a web-app yet. ")),z(v,{class:"max-w-140 mx-auto mt-6",onSubmitted:d[4]||(d[4]=m=>r.value=!1)})])):k("",!0)])],64)}}},Ys=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":1710400063000}'),Ns={name:"index.md"},Bs=p("h1",{class:"text-center text-2xl sm-text-3xl font-bold mt-8",style:{padding:"0.1rem 1rem"}},"Online synthesizers and web piano apps",-1),Rs=p("h2",{class:"text-xl sm-text-2xl text-center my-2",style:{padding:"0 1rem"}},"Curated collection of free music creation resources",-1),zs={class:"px-4 text-lg text-center mb-8 max-w-150 mx-auto"},Ds=p("a",{class:"font-bold",href:"https://chromatone.center",target:"_blank",rel:"noopener"}," Chromatone",-1),js=p("a",{class:"font-bold",href:"https://playtronica.com",target:"_blank",rel:"noopener"}," Playtronica",-1),Ws=p("h3",{class:"font-bold text-xl"},"Welcome to the community of web-based musicians!",-1),Zs=p("p",null,[p("a",{target:"_blank",href:"https://chromatone.center/"},[p("img",{src:He,class:"max-w-16 mx-auto"})])],-1);function Fs(t,e,s,n,i,a){const r=Ps,o=pt,l=at;return b(),y("div",null,[Bs,Rs,z(r),p("div",zs,[Ds,K(" is an open source visual music language for education, research and performance. We develop a new universal way to communicate music. "),js,K(" is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Together we share our passion for online music instruments. "),z(o),Ws,Zs,z(l)])])}const Hs=ve(Ns,[["render",Fs]]);export{Ys as __pageData,Hs as default}; +import{D as Le,b,d as y,g as p,f as T,q as k,r as P,E as fe,F as Oe,G as Pe,t as O,H as Ne,I as Z,e as X,j as ee,h as K,_ as ve,s as Be,x as Re,J as te,y as z,z as q,A as se,K as ze,i as De,L as _e,C as je,M as We,N as Ze,a as Fe,c as J,o as Ve,w as Ge,T as Ue,n as Ke,O as qe,P as Ye,Q as He}from"./chunks/framework.DA3bj7zI.js";import{u as Je,f as U,_ as Qe,a as Xe}from"./chunks/useClicks.DKflLG6D.js";import{u as we}from"./chunks/theme.TKyytG40.js";import"./chunks/index.OsI8M1nP.js";const et={class:"text-center line-height-loose text-md"},tt={class:"mx-auto max-w-75ch intro md-text-lg"},st=p("div",{class:"i-mdi-share"},null,-1),nt=p("span",null,"Share to save for later",-1),it=[st,nt],at={__name:"AboutShare",setup(t){const{share:e,isSupported:s}=Le();function n(){e({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(i,a)=>(b(),y("div",et,[p("div",tt,[T(s)?(b(),y("button",{key:0,class:"mx-auto flex items-center gap-2 text-white py-2 px-4 mt-6 shadow-lg rounded-lg cursor-pointer bg-green-600 -hover-translate-y-2px transition",onClick:a[0]||(a[0]=r=>n()),"data-umami-event":"Shared via button"},it)):k("",!0)])]))}},ne=JSON.parse(`[{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6794,"public":true,"is_new":false,"stats":[2]},{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2716,"public":true,"is_new":false,"stats":[5]},{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"content":"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.\\n\\n- Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing.\\n- Groove Monkee: graciously provided the MIDI files that are used for the percussion loops.\\n- Keenan Brand: created the midi.city logo and various icons used on the site.\\n- Noun Project: various icons are used via a Pro license.\\n- Google Material Design: various icons.\\n- Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API. ","iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"content":"The **aQWERTYon** (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.\\n\\nhttps://youtu.be/hqFr4lF6u_Y","iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"content":"## What can it be used for?\\n\\nMany teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.\\n\\n## Can I use it to make my own songs?\\n\\nYes. Check out the Song Maker experiment, which lets you make and share your own songs.\\n\\n## Do I need to make an account?\\n\\nNope. Just open any experiment and start playing.\\n\\n## How were these built?\\n\\nAll our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on [Github](https://github.com/googlecreativelab/chrome-music-lab).\\n\\n## What devices do these work on?\\n\\nYou can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.","iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths","slug":"websynths","author":"WebSynths","author_link":"https://www.websynths.org/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"content":"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.\\n\\nIt also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.\\n\\nTouch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.","iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":16,"clicks":177,"public":false,"is_new":false,"stats":[15]},{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"content":" BeepBox is developed by John Nesky.\\n\\nBeepBox does not claim ownership over songs created with it, so original songs belong to their authors.\\n\\nNeither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data. ","iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":17,"clicks":10,"public":false,"is_new":true,"stats":[46]},{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":18,"clicks":17,"public":false,"is_new":false,"stats":[16]},{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"content":null,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":19,"clicks":269,"public":false,"is_new":false,"stats":[17]},{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":20,"clicks":256,"public":false,"is_new":false,"stats":[18]},{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":22,"clicks":10,"public":false,"is_new":true,"stats":[45]},{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":23,"clicks":155,"public":false,"is_new":false,"stats":[19]},{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":24,"clicks":495,"public":false,"is_new":false,"stats":[20]},{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"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. ","iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":25,"clicks":282,"public":false,"is_new":false,"stats":[21]},{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"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. ","iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":26,"clicks":320,"public":false,"is_new":false,"stats":[22]},{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"content":"https://github.com/mbitsnbites/soundbox","iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":27,"clicks":209,"public":false,"is_new":false,"stats":[23]},{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":28,"clicks":210,"public":false,"is_new":false,"stats":[24]},{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":29,"clicks":202,"public":false,"is_new":false,"stats":[25]},{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":30,"clicks":166,"public":false,"is_new":false,"stats":[26]},{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":31,"clicks":91,"public":false,"is_new":false,"stats":[27]},{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":32,"clicks":217,"public":false,"is_new":false,"stats":[28]},{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":33,"clicks":4,"public":false,"is_new":false,"stats":[29]},{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":34,"clicks":127,"public":false,"is_new":false,"stats":[30]},{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":35,"clicks":164,"public":false,"is_new":false,"stats":[31]},{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":36,"clicks":255,"public":false,"is_new":false,"stats":[32]},{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":37,"clicks":184,"public":false,"is_new":false,"stats":[33]},{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":38,"clicks":117,"public":false,"is_new":false,"stats":[34]},{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"content":"Luke Twyman - project concept, design & Ul.\\nwhitevinyldesign.com\\n@whitevinylUK\\nLuke Phillips - audio development & musical interaction.\\nfemurdesign.com\\n@lukephills\\nEdward Silverton - client & server architecture & core development.\\nedsilv.com\\n@edsilv","iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":39,"clicks":19,"public":false,"is_new":false,"stats":[35]},{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":40,"clicks":146,"public":false,"is_new":false,"stats":[36]},{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":41,"clicks":145,"public":false,"is_new":false,"stats":[37]},{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":42,"clicks":129,"public":false,"is_new":false,"stats":[38]},{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":43,"clicks":305,"public":false,"is_new":false,"stats":[39]},{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":44,"clicks":15,"public":false,"is_new":false,"stats":[40]},{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":45,"clicks":124,"public":false,"is_new":false,"stats":[41]},{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":46,"clicks":21,"public":false,"is_new":false,"stats":[42]}]`),rt={class:"text-center line-height-loose text-md"},ot={class:"mx-auto max-w-75ch intro md-text-lg"},lt={class:"p-2 flex flex-col mt-8"},ct={class:"text-4xl font-bold"},ut=p("div",{class:"text-lg"},"web synths",-1),ht={class:"p-2 flex flex-col mt-8"},dt={class:"text-4xl font-bold"},ft=p("div",{class:"text-lg"},"web musicians",-1),pt={__name:"AboutCount",setup(t){const e=P(),s=P(0),n=P(0),i=fe(s),a=fe(n),r=Oe(e);return Pe(r,async o=>{if(o){s.value=ne.length;const c=await(await fetch("https://dbs.chromatone.center/flows/trigger/0c0e8d82-8e12-44a6-867a-57ddeec9d774",{type:"GET",mode:"cors",headers:{"Content-Type":"application/json"}})).json();n.value=c.count}}),(o,l)=>(b(),y("div",rt,[p("div",ot,[p("div",{class:"flex justify-center",ref_key:"counters",ref:e},[p("div",lt,[p("div",ct,O(T(i).toFixed()),1),ut]),p("div",ht,[p("div",dt,O(T(a).toFixed()||5e3)+"+",1),ft])],512)])]))}},mt={class:"flex flex-col text-center gap-4 bg-light-700 dark-bg-dark-200 dark-bg-opacity-20 p-4 rounded-lg shadow-lg mb-8"},gt=p("div",{class:"text-xl font-bold my-2"},"Suggest a new web-synth to the collection",-1),bt=["disabled"],yt={__name:"FormSynth",emits:["submitted"],setup(t,{emit:e}){const s=e,n=Ne({url:"",text:""}),i=/[(http(s) ?): \/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/;function a(l){return i.test(l)}const r=P();async function o(){var l,c,u;try{const h=await fetch("https://dbs.chromatone.center/flows/trigger/dc8ca96f-76e6-4cac-b26c-10751746eb89",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(n)});r.value=await(h==null?void 0:h.json()),n.url="",n.text="",setTimeout(()=>{s("submitted")},2e3)}catch(h){console.error(h,(c=(l=h==null?void 0:h.errors)==null?void 0:l[0])==null?void 0:c.message,(u=h==null?void 0:h.response)==null?void 0:u.status)}}return(l,c)=>(b(),y("div",mt,[r.value?(b(),y(Z,{key:1},[K("Thanks for your suggestion!")],64)):(b(),y(Z,{key:0},[gt,X(p("input",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",type:"text",placeholder:"https://new.synth.url/","onUpdate:modelValue":c[0]||(c[0]=u=>n.url=u)},null,512),[[ee,n.url]]),X(p("textarea",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",oninput:"this.style.height = ''; this.style.height = this.scrollHeight +'px'",placeholder:"Describe the web-app and how do you use it musically","onUpdate:modelValue":c[1]||(c[1]=u=>n.text=u)},null,512),[[ee,n.text]]),p("button",{class:"text-xl py-2 px-4 rounded bg-dark-100 text-light-200 dark-bg-light-700 dark-text-dark-500 shadow-lg disabled-opacity-20",disabled:!a(n.url),onClick:c[2]||(c[2]=u=>o())},O(a(n.url)?"Submit":"Please provide a valid URL"),9,bt)],64))]))}},ke=t=>(We("data-v-f3c34bc1"),t=t(),Ze(),t),vt={key:0,class:"px-2 py-1 bg-light-800 dark-bg-dark-800 rounded-xl transition text-sm select-none absolute bottom-2 left-2 text-center z-200 flex items-center gap-1 opacity-70 hover-opacity-100",title:"Since 28 Oct 2023"},_t=ke(()=>p("div",{class:"i-la-eye"},null,-1)),wt={class:"p-0 mt-2px"},kt={class:"p-4 flex flex-col items-start justify-between gap-2",style:{flex:"10 0 200px"}},xt={class:"flex items-center gap-2 flex-0 w-full"},St={class:"transition text-xl select-none absolute top-4 left-4 text-center z-200"},Mt={class:"flex-auto"},Tt={class:"flex items-center gap-2"},It={class:"text-2xl font-bold"},At={key:0,class:"font-normal",title:"Archived locally by us"},Et=ke(()=>p("div",{class:"i-ph-archive-duotone"},null,-1)),$t=[Et],Ct={class:"flex-1"},Lt={key:1,class:"flex-1 flex items-end flex flex-wrap gap-2"},Ot=["href"],Pt={key:3,class:"text-xl p-2 absolute left-2 top-4 bg-yellow-600 rounded-xl shadow font-bold z-1000 transform -rotate-10"},Nt={__name:"SynthCard",props:{pos:{type:Number,default:0},sort:{type:Number,default:0},public:{type:Boolean,default:!1},title:{type:String,default:""},id:{type:Number,default:0},slug:{type:String,default:""},description:{type:String,default:""},cover:{type:String,default:""},url:{type:String,default:""},author:{type:String,default:""},author_link:{type:String,default:""},tags:{type:Array,default:()=>[]},archive:{type:Boolean,default:!1},archive_link:{type:String,default:""},iframe:{type:Boolean,default:null},clicks:{type:Number,default:0},stars:{type:Number,default:0},counter:{type:Number,default:0},is_new:{type:Boolean,default:null}},setup(t){const{isDark:e}=Be(),s=t,{isFormOpen:n,isAccessGranted:i}=we(),{clicksCount:a,clickSynth:r}=Je(s.id);async function o(){!s.public&&!i.value?n.value=!n.value:(r(s.id),s.iframe?window.open(s.slug+"/","_self"):window.open(s.archive?s.archive_link:s.url,"_blank"))}return(l,c)=>{var d;const u=Qe,h=Re("ClientOnly");return b(),y("button",{class:"max-w-180 w-full flex flex-wrap items-stretch text-left relative bg-light-500 dark-bg-dark-300 -hover-translate-y-6px transition duration-200 hover-shadow-lg rounded-lg overflow-hidden relative border-1 border-dark-100 border-opacity-20 shadow-sm dark-border-light-800 dark-border-opacity-20",style:te({borderColor:T(U)[t.id]?T(e)?"hsl(50deg,80%,35%)":"hsl(40deg,90%,80%)":null}),onClick:o},[p("div",{class:"cover min-h-50 bg-cover bg-center filter transition",style:te([{backgroundImage:`url(/cover/${t.slug}.webp)`},{flex:"1 1 280px"}])},[T(a)||t.counter?(b(),y("div",vt,[_t,p("div",wt,O(T(a)||t.counter),1)])):k("",!0)],4),p("div",kt,[p("div",xt,[p("div",St,O(t.sort),1),p("div",Mt,[p("span",Tt,[p("div",It,O(t.title),1),t.archive?(b(),y("span",At,$t)):k("",!0)])]),z(h,null,{default:q(()=>[z(u,{class:"text-xl mr-2 absolute z-200",id:t.id,stars:t.stars},null,8,["id","stars"])]),_:1})]),t.author?(b(),se(ze(t.author_link?"a":"div"),{key:0,class:"p-0 text-md",href:t.author_link,target:"_blank"},{default:q(()=>[K("by "+O(t.author),1)]),_:1},8,["href"])):k("",!0),p("div",Ct,[De(l.$slots,"default",{},void 0,!0)]),((d=t.tags)==null?void 0:d.length)>0?(b(),y("div",Lt,[(b(!0),y(Z,null,_e(t.tags,g=>(b(),y("div",{class:"px-2 py-1 text-sm bg-light-800 dark-bg-dark-500 rounded-lg",key:g},O(g),1))),128))])):k("",!0),t.iframe?k("",!0):(b(),y("a",{key:2,class:"absolute bottom-4 right-4 i-la-external-link-square-alt text-lg opacity-40 transition transition hover-opacity-100",onClick:c[0]||(c[0]=je(()=>{},["stop"])),href:`/${t.slug}/`,title:"Opens in a new window"},null,8,Ot)),t.is_new?(b(),y("div",Pt,"NEW!")):k("",!0)])],4)}}},Bt=ve(Nt,[["__scopeId","data-v-f3c34bc1"]]);function L(t){return Array.isArray?Array.isArray(t):Me(t)==="[object Array]"}const Rt=1/0;function zt(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-Rt?"-0":e}function Dt(t){return t==null?"":zt(t)}function $(t){return typeof t=="string"}function xe(t){return typeof t=="number"}function jt(t){return t===!0||t===!1||Wt(t)&&Me(t)=="[object Boolean]"}function Se(t){return typeof t=="object"}function Wt(t){return Se(t)&&t!==null}function x(t){return t!=null}function Q(t){return!t.trim().length}function Me(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const Zt="Incorrect 'index' type",Ft=t=>`Invalid value for key ${t}`,Vt=t=>`Pattern length exceeds max of ${t}.`,Gt=t=>`Missing ${t} property in key`,Ut=t=>`Property 'weight' in key '${t}' must be a positive integer`,pe=Object.prototype.hasOwnProperty;class Kt{constructor(e){this._keys=[],this._keyMap={};let s=0;e.forEach(n=>{let i=Te(n);this._keys.push(i),this._keyMap[i.id]=i,s+=i.weight}),this._keys.forEach(n=>{n.weight/=s})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function Te(t){let e=null,s=null,n=null,i=1,a=null;if($(t)||L(t))n=t,e=me(t),s=ie(t);else{if(!pe.call(t,"name"))throw new Error(Gt("name"));const r=t.name;if(n=r,pe.call(t,"weight")&&(i=t.weight,i<=0))throw new Error(Ut(r));e=me(r),s=ie(r),a=t.getFn}return{path:e,id:s,weight:i,src:n,getFn:a}}function me(t){return L(t)?t:t.split(".")}function ie(t){return L(t)?t.join("."):t}function qt(t,e){let s=[],n=!1;const i=(a,r,o)=>{if(x(a))if(!r[o])s.push(a);else{let l=r[o];const c=a[l];if(!x(c))return;if(o===r.length-1&&($(c)||xe(c)||jt(c)))s.push(Dt(c));else if(L(c)){n=!0;for(let u=0,h=c.length;ut.score===e.score?t.idx{this._keysMap[s.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,$(this.docs[0])?this.docs.forEach((e,s)=>{this._addString(e,s)}):this.docs.forEach((e,s)=>{this._addObject(e,s)}),this.norm.clear())}add(e){const s=this.size();$(e)?this._addString(e,s):this._addObject(e,s)}removeAt(e){this.records.splice(e,1);for(let s=e,n=this.size();s{let r=i.getFn?i.getFn(e):this.getFn(e,i.path);if(x(r)){if(L(r)){let o=[];const l=[{nestedArrIndex:-1,value:r}];for(;l.length;){const{nestedArrIndex:c,value:u}=l.pop();if(x(u))if($(u)&&!Q(u)){let h={v:u,i:c,n:this.norm.get(u)};o.push(h)}else L(u)&&u.forEach((h,d)=>{l.push({nestedArrIndex:d,value:h})})}n.$[a]=o}else if($(r)&&!Q(r)){let o={v:r,n:this.norm.get(r)};n.$[a]=o}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function Ie(t,e,{getFn:s=f.getFn,fieldNormWeight:n=f.fieldNormWeight}={}){const i=new ue({getFn:s,fieldNormWeight:n});return i.setKeys(t.map(Te)),i.setSources(e),i.create(),i}function ts(t,{getFn:e=f.getFn,fieldNormWeight:s=f.fieldNormWeight}={}){const{keys:n,records:i}=t,a=new ue({getFn:e,fieldNormWeight:s});return a.setKeys(n),a.setIndexRecords(i),a}function G(t,{errors:e=0,currentLocation:s=0,expectedLocation:n=0,distance:i=f.distance,ignoreLocation:a=f.ignoreLocation}={}){const r=e/t.length;if(a)return r;const o=Math.abs(n-s);return i?r+o/i:o?1:r}function ss(t=[],e=f.minMatchCharLength){let s=[],n=-1,i=-1,a=0;for(let r=t.length;a=e&&s.push([n,i]),n=-1)}return t[a-1]&&a-n>=e&&s.push([n,a-1]),s}const R=32;function ns(t,e,s,{location:n=f.location,distance:i=f.distance,threshold:a=f.threshold,findAllMatches:r=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,includeMatches:l=f.includeMatches,ignoreLocation:c=f.ignoreLocation}={}){if(e.length>R)throw new Error(Vt(R));const u=e.length,h=t.length,d=Math.max(0,Math.min(n,h));let g=a,v=d;const m=o>1||l,S=m?Array(h):[];let M;for(;(M=t.indexOf(e,v))>-1;){let w=G(e,{currentLocation:M,expectedLocation:d,distance:i,ignoreLocation:c});if(g=Math.min(w,g),v=M+u,m){let I=0;for(;I=he;A-=1){let V=A-1,de=s[t.charAt(V)];if(m&&(S[V]=+!!de),j[A]=(j[A+1]<<1|1)&de,w&&(j[A]|=(C[A+1]|C[A])<<1|1|C[A+1]),j[A]&F&&(E=G(e,{errors:w,currentLocation:V,expectedLocation:d,distance:i,ignoreLocation:c}),E<=g)){if(g=E,v=V,v<=d)break;he=Math.max(1,2*d-v)}}if(G(e,{errors:w+1,currentLocation:d,expectedLocation:d,distance:i,ignoreLocation:c})>g)break;C=j}const D={isMatch:v>=0,score:Math.max(.001,E)};if(m){const w=ss(S,o);w.length?l&&(D.indices=w):D.isMatch=!1}return D}function is(t){let e={};for(let s=0,n=t.length;s{this.chunks.push({pattern:d,alphabet:is(d),startIndex:g})},h=this.pattern.length;if(h>R){let d=0;const g=h%R,v=h-g;for(;d{const{isMatch:M,score:C,indices:E}=ns(e,v,m,{location:i+S,distance:a,threshold:r,findAllMatches:o,minMatchCharLength:l,includeMatches:n,ignoreLocation:c});M&&(d=!0),h+=C,M&&E&&(u=[...u,...E])});let g={isMatch:d,score:d?h/this.chunks.length:1};return d&&n&&(g.indices=u),g}}class N{constructor(e){this.pattern=e}static isMultiMatch(e){return ge(e,this.multiRegex)}static isSingleMatch(e){return ge(e,this.singleRegex)}search(){}}function ge(t,e){const s=t.match(e);return s?s[1]:null}class as extends N{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const s=e===this.pattern;return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class rs extends N{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const n=e.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class os extends N{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const s=e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class ls extends N{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const s=!e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class cs extends N{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const s=e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class us extends N{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const s=!e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class Ee extends N{constructor(e,{location:s=f.location,threshold:n=f.threshold,distance:i=f.distance,includeMatches:a=f.includeMatches,findAllMatches:r=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,isCaseSensitive:l=f.isCaseSensitive,ignoreLocation:c=f.ignoreLocation}={}){super(e),this._bitapSearch=new Ae(e,{location:s,threshold:n,distance:i,includeMatches:a,findAllMatches:r,minMatchCharLength:o,isCaseSensitive:l,ignoreLocation:c})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class $e extends N{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let s=0,n;const i=[],a=this.pattern.length;for(;(n=e.indexOf(this.pattern,s))>-1;)s=n+a,i.push([n,s-1]);const r=!!i.length;return{isMatch:r,score:r?0:1,indices:i}}}const ae=[as,$e,os,ls,us,cs,rs,Ee],be=ae.length,hs=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,ds="|";function fs(t,e={}){return t.split(ds).map(s=>{let n=s.trim().split(hs).filter(a=>a&&!!a.trim()),i=[];for(let a=0,r=n.length;a!!(t[Y.AND]||t[Y.OR]),bs=t=>!!t[le.PATH],ys=t=>!L(t)&&Se(t)&&!ce(t),ye=t=>({[Y.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function Ce(t,e,{auto:s=!0}={}){const n=i=>{let a=Object.keys(i);const r=bs(i);if(!r&&a.length>1&&!ce(i))return n(ye(i));if(ys(i)){const l=r?i[le.PATH]:a[0],c=r?i[le.PATTERN]:i[l];if(!$(c))throw new Error(Ft(l));const u={keyId:ie(l),pattern:c};return s&&(u.searcher=oe(c,e)),u}let o={children:[],operator:a[0]};return a.forEach(l=>{const c=i[l];L(c)&&c.forEach(u=>{o.children.push(n(u))})}),o};return ce(t)||(t=ye(t)),n(t)}function vs(t,{ignoreFieldNorm:e=f.ignoreFieldNorm}){t.forEach(s=>{let n=1;s.matches.forEach(({key:i,norm:a,score:r})=>{const o=i?i.weight:null;n*=Math.pow(r===0&&o?Number.EPSILON:r,(o||1)*(e?1:a))}),s.score=n})}function _s(t,e){const s=t.matches;e.matches=[],x(s)&&s.forEach(n=>{if(!x(n.indices)||!n.indices.length)return;const{indices:i,value:a}=n;let r={indices:i,value:a};n.key&&(r.key=n.key.src),n.idx>-1&&(r.refIndex=n.idx),e.matches.push(r)})}function ws(t,e){e.score=t.score}function ks(t,e,{includeMatches:s=f.includeMatches,includeScore:n=f.includeScore}={}){const i=[];return s&&i.push(_s),n&&i.push(ws),t.map(a=>{const{idx:r}=a,o={item:e[r],refIndex:r};return i.length&&i.forEach(l=>{l(a,o)}),o})}class W{constructor(e,s={},n){this.options={...f,...s},this.options.useExtendedSearch,this._keyStore=new Kt(this.options.keys),this.setCollection(e,n)}setCollection(e,s){if(this._docs=e,s&&!(s instanceof ue))throw new Error(Zt);this._myIndex=s||Ie(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){x(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const s=[];for(let n=0,i=this._docs.length;n-1&&(l=l.slice(0,s)),ks(l,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(e){const s=oe(e,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:a,i:r,n:o})=>{if(!x(a))return;const{isMatch:l,score:c,indices:u}=s.searchIn(a);l&&i.push({item:a,idx:r,matches:[{score:c,value:a,norm:o,indices:u}]})}),i}_searchLogical(e){const s=Ce(e,this.options),n=(o,l,c)=>{if(!o.children){const{keyId:h,searcher:d}=o,g=this._findMatches({key:this._keyStore.get(h),value:this._myIndex.getValueForItemAtKeyId(l,h),searcher:d});return g&&g.length?[{idx:c,item:l,matches:g}]:[]}const u=[];for(let h=0,d=o.children.length;h{if(x(o)){let c=n(s,o,l);c.length&&(a[l]||(a[l]={idx:l,item:o,matches:[]},r.push(a[l])),c.forEach(({matches:u})=>{a[l].matches.push(...u)}))}}),r}_searchObjectList(e){const s=oe(e,this.options),{keys:n,records:i}=this._myIndex,a=[];return i.forEach(({$:r,i:o})=>{if(!x(r))return;let l=[];n.forEach((c,u)=>{l.push(...this._findMatches({key:c,value:r[u],searcher:s}))}),l.length&&a.push({idx:o,item:r,matches:l})}),a}_findMatches({key:e,value:s,searcher:n}){if(!x(s))return[];let i=[];if(L(s))s.forEach(({v:a,i:r,n:o})=>{if(!x(a))return;const{isMatch:l,score:c,indices:u}=n.searchIn(a);l&&i.push({score:c,key:e,value:a,idx:r,norm:o,indices:u})});else{const{v:a,n:r}=s,{isMatch:o,score:l,indices:c}=n.searchIn(a);o&&i.push({score:l,key:e,value:a,norm:r,indices:c})}return i}}W.version="7.0.0";W.createIndex=Ie;W.parseIndex=ts;W.config=f;W.parseQuery=Ce;gs(ms);const xs={class:"flex flex-col items-center mb-2 px-8"},Ss={class:"w-full max-w-110 flex items-center relative my-4 gap-2"},Ms=["placeholder"],Ts=p("div",{class:"i-la-search absolute left-2 text-xl opacity-40"},null,-1),Is=["title"],As={key:0,class:"i-la-star-solid"},Es={key:1,class:"i-la-star"},$s={class:"flex flex-col items-center gap-8 p-2 max-w-160 mx-auto mb-12"},Cs=["index"],Ls={class:"p-2",key:"nnn"},Os={key:0,class:"animate-pulse text-center"},Ps={__name:"SynthList",setup(t){const{isAccessGranted:e}=we(),s=P(ne),n=new W(ne,{includeScore:!0,ignoreLocation:!0,shouldSort:!0,keys:["title","slug","author"]}),i=Fe("fav-filter",!1),a=P(""),r=P(!1),o=J(()=>n.search(a.value)),l=J(()=>o.value.filter(h=>h.score<.2).sort((h,d)=>h.score>d.score?1:0).map(h=>h.item.slug)),c=J(()=>s.value.filter(h=>a.value?l.value.includes(h.slug):i.value?U.value[h.id]:!0)),u=P([]);return Ve(async()=>{u.value=await Xe("synths",{fields:["id",{stats:["views","stars"]}]})}),Ge(U,h=>{Object.values(h).filter(Boolean).length==0&&(i.value=!1)},{deep:!0,immediate:!0}),(h,d)=>{const g=Bt,v=yt;return b(),y(Z,null,[p("div",xs,[p("div",Ss,[X(p("input",{class:"w-full focus text-xl py-2 pl-9 bg-light-50 bg-opacity-100 shadow-inner border-1 border-dark-100 border-opacity-10 rounded-lg dark-bg-dark-200 outline-none focus-border-opacity-90",placeholder:"Type to search...","onUpdate:modelValue":d[0]||(d[0]=m=>a.value=m)},null,8,Ms),[[ee,a.value]]),Ts,a.value?(b(),y("div",{key:0,class:"i-la-times absolute right-2 text-xl opacity-40 hover-opacity-80 transition cursor-pointer",onClick:d[1]||(d[1]=m=>a.value="")})):k("",!0),Object.values(T(U)).filter(Boolean).length>0&&!a.value?(b(),y("button",{key:1,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl text-yellow",title:T(i)?"Only favourites are shown":"Show only favourites",onClick:d[2]||(d[2]=m=>i.value=!T(i))},[z(Ue,{name:"fade"},{default:q(()=>[T(i)?(b(),y("div",As)):(b(),y("div",Es))]),_:1})],8,Is)):k("",!0),a.value?k("",!0):(b(),y("button",{key:2,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl",title:"Suggest a new link to the collection",onClick:d[3]||(d[3]=m=>r.value=!r.value)},[p("div",{class:Ke(["i-la-plus transform transition",{"rotate-45":r.value}])},null,2)]))])]),p("div",$s,[r.value?k("",!0):(b(),se(Ye,{key:0,name:"fade"},{default:q(()=>[(b(!0),y(Z,null,_e(c.value,(m,S)=>{var M,C,E,B,F,D,w,I;return b(),y("div",{class:"flex w-full sticky",style:te([{top:`${80+S*4}px`,zIndex:S+10},{flex:"1 1 240px"}]),key:m.id,index:S},[(b(),se(g,qe({pos:S,style:{filter:!m.public&&!T(e)?"contrast(70%) blur(2px) opacity(80%)":""},key:m.id},m,{counter:(B=(E=(C=(M=u.value)==null?void 0:M.find(_=>(_==null?void 0:_.id)==(m==null?void 0:m.id)))==null?void 0:C.stats)==null?void 0:E[0])==null?void 0:B.views,stars:(I=(w=(D=(F=u.value)==null?void 0:F.find(_=>(_==null?void 0:_.id)==(m==null?void 0:m.id)))==null?void 0:D.stats)==null?void 0:w[0])==null?void 0:I.stars}),null,16,["pos","style","counter","stars"]))],12,Cs)}),128))]),_:1})),c.value.length==0||r.value?(b(),y("div",Ls,[r.value?k("",!0):(b(),y("div",Os,"We don't know such a web-app yet. ")),z(v,{class:"max-w-140 mx-auto mt-6",onSubmitted:d[4]||(d[4]=m=>r.value=!1)})])):k("",!0)])],64)}}},Ys=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":1711550395000}'),Ns={name:"index.md"},Bs=p("h1",{class:"text-center text-2xl sm-text-3xl font-bold mt-8",style:{padding:"0.1rem 1rem"}},"Online synthesizers and web piano apps",-1),Rs=p("h2",{class:"text-xl sm-text-2xl text-center my-2",style:{padding:"0 1rem"}},"Curated collection of free music creation resources",-1),zs={class:"px-4 text-lg text-center mb-8 max-w-150 mx-auto"},Ds=p("a",{class:"font-bold",href:"https://chromatone.center",target:"_blank",rel:"noopener"}," Chromatone",-1),js=p("a",{class:"font-bold",href:"https://playtronica.com",target:"_blank",rel:"noopener"}," Playtronica",-1),Ws=p("h3",{class:"font-bold text-xl"},"Welcome to the community of web-based musicians!",-1),Zs=p("p",null,[p("a",{target:"_blank",href:"https://chromatone.center/"},[p("img",{src:He,class:"max-w-16 mx-auto"})])],-1);function Fs(t,e,s,n,i,a){const r=Ps,o=pt,l=at;return b(),y("div",null,[Bs,Rs,z(r),p("div",zs,[Ds,K(" is an open source visual music language for education, research and performance. We develop a new universal way to communicate music. "),js,K(" is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Together we share our passion for online music instruments. "),z(o),Ws,Zs,z(l)])])}const Hs=ve(Ns,[["render",Fs]]);export{Ys as __pageData,Hs as default}; diff --git a/assets/index.md.cf3pcfxO.lean.js b/assets/index.md.Dn_VxzHO.lean.js similarity index 99% rename from assets/index.md.cf3pcfxO.lean.js rename to assets/index.md.Dn_VxzHO.lean.js index d6e7bd08..af121ffd 100644 --- a/assets/index.md.cf3pcfxO.lean.js +++ b/assets/index.md.Dn_VxzHO.lean.js @@ -1 +1 @@ -import{D as Le,b,d as y,g as p,f as T,q as k,r as P,E as fe,F as Oe,G as Pe,t as O,H as Ne,I as Z,e as X,j as ee,h as K,_ as ve,s as Be,x as Re,J as te,y as z,z as q,A as se,K as ze,i as De,L as _e,C as je,M as We,N as Ze,a as Fe,c as J,o as Ve,w as Ge,T as Ue,n as Ke,O as qe,P as Ye,Q as He}from"./chunks/framework.HWRfC0Fd.js";import{u as Je,f as U,_ as Qe,a as Xe}from"./chunks/useClicks.CJYHtBYH.js";import{u as we}from"./chunks/theme.TIIJwiPz.js";import"./chunks/index.Q2UX5ner.js";const et={class:"text-center line-height-loose text-md"},tt={class:"mx-auto max-w-75ch intro md-text-lg"},st=p("div",{class:"i-mdi-share"},null,-1),nt=p("span",null,"Share to save for later",-1),it=[st,nt],at={__name:"AboutShare",setup(t){const{share:e,isSupported:s}=Le();function n(){e({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(i,a)=>(b(),y("div",et,[p("div",tt,[T(s)?(b(),y("button",{key:0,class:"mx-auto flex items-center gap-2 text-white py-2 px-4 mt-6 shadow-lg rounded-lg cursor-pointer bg-green-600 -hover-translate-y-2px transition",onClick:a[0]||(a[0]=r=>n()),"data-umami-event":"Shared via button"},it)):k("",!0)])]))}},ne=JSON.parse(`[{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6791,"public":true,"is_new":false,"stats":[2]},{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2716,"public":true,"is_new":false,"stats":[5]},{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"content":"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.\\n\\n- Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing.\\n- Groove Monkee: graciously provided the MIDI files that are used for the percussion loops.\\n- Keenan Brand: created the midi.city logo and various icons used on the site.\\n- Noun Project: various icons are used via a Pro license.\\n- Google Material Design: various icons.\\n- Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API. ","iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"content":"The **aQWERTYon** (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.\\n\\nhttps://youtu.be/hqFr4lF6u_Y","iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"content":"## What can it be used for?\\n\\nMany teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.\\n\\n## Can I use it to make my own songs?\\n\\nYes. Check out the Song Maker experiment, which lets you make and share your own songs.\\n\\n## Do I need to make an account?\\n\\nNope. Just open any experiment and start playing.\\n\\n## How were these built?\\n\\nAll our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on [Github](https://github.com/googlecreativelab/chrome-music-lab).\\n\\n## What devices do these work on?\\n\\nYou can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.","iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths","slug":"websynths","author":"WebSynths","author_link":"https://www.websynths.org/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"content":"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.\\n\\nIt also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.\\n\\nTouch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.","iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":16,"clicks":177,"public":false,"is_new":false,"stats":[15]},{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"content":" BeepBox is developed by John Nesky.\\n\\nBeepBox does not claim ownership over songs created with it, so original songs belong to their authors.\\n\\nNeither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data. ","iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":17,"clicks":10,"public":false,"is_new":true,"stats":[46]},{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":18,"clicks":17,"public":false,"is_new":false,"stats":[16]},{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"content":null,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":19,"clicks":269,"public":false,"is_new":false,"stats":[17]},{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":20,"clicks":256,"public":false,"is_new":false,"stats":[18]},{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":22,"clicks":10,"public":false,"is_new":true,"stats":[45]},{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":23,"clicks":155,"public":false,"is_new":false,"stats":[19]},{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":24,"clicks":495,"public":false,"is_new":false,"stats":[20]},{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"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. ","iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":25,"clicks":282,"public":false,"is_new":false,"stats":[21]},{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"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. ","iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":26,"clicks":320,"public":false,"is_new":false,"stats":[22]},{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"content":"https://github.com/mbitsnbites/soundbox","iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":27,"clicks":209,"public":false,"is_new":false,"stats":[23]},{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":28,"clicks":210,"public":false,"is_new":false,"stats":[24]},{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":29,"clicks":202,"public":false,"is_new":false,"stats":[25]},{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":30,"clicks":166,"public":false,"is_new":false,"stats":[26]},{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":31,"clicks":91,"public":false,"is_new":false,"stats":[27]},{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":32,"clicks":217,"public":false,"is_new":false,"stats":[28]},{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":33,"clicks":4,"public":false,"is_new":false,"stats":[29]},{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":34,"clicks":127,"public":false,"is_new":false,"stats":[30]},{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":35,"clicks":164,"public":false,"is_new":false,"stats":[31]},{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":36,"clicks":255,"public":false,"is_new":false,"stats":[32]},{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":37,"clicks":184,"public":false,"is_new":false,"stats":[33]},{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":38,"clicks":117,"public":false,"is_new":false,"stats":[34]},{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"content":"Luke Twyman - project concept, design & Ul.\\nwhitevinyldesign.com\\n@whitevinylUK\\nLuke Phillips - audio development & musical interaction.\\nfemurdesign.com\\n@lukephills\\nEdward Silverton - client & server architecture & core development.\\nedsilv.com\\n@edsilv","iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":39,"clicks":19,"public":false,"is_new":false,"stats":[35]},{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":40,"clicks":146,"public":false,"is_new":false,"stats":[36]},{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":41,"clicks":145,"public":false,"is_new":false,"stats":[37]},{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":42,"clicks":129,"public":false,"is_new":false,"stats":[38]},{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":43,"clicks":305,"public":false,"is_new":false,"stats":[39]},{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":44,"clicks":15,"public":false,"is_new":false,"stats":[40]},{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":45,"clicks":124,"public":false,"is_new":false,"stats":[41]},{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":46,"clicks":21,"public":false,"is_new":false,"stats":[42]}]`),rt={class:"text-center line-height-loose text-md"},ot={class:"mx-auto max-w-75ch intro md-text-lg"},lt={class:"p-2 flex flex-col mt-8"},ct={class:"text-4xl font-bold"},ut=p("div",{class:"text-lg"},"web synths",-1),ht={class:"p-2 flex flex-col mt-8"},dt={class:"text-4xl font-bold"},ft=p("div",{class:"text-lg"},"web musicians",-1),pt={__name:"AboutCount",setup(t){const e=P(),s=P(0),n=P(0),i=fe(s),a=fe(n),r=Oe(e);return Pe(r,async o=>{if(o){s.value=ne.length;const c=await(await fetch("https://dbs.chromatone.center/flows/trigger/0c0e8d82-8e12-44a6-867a-57ddeec9d774",{type:"GET",mode:"cors",headers:{"Content-Type":"application/json"}})).json();n.value=c.count}}),(o,l)=>(b(),y("div",rt,[p("div",ot,[p("div",{class:"flex justify-center",ref_key:"counters",ref:e},[p("div",lt,[p("div",ct,O(T(i).toFixed()),1),ut]),p("div",ht,[p("div",dt,O(T(a).toFixed()||5e3)+"+",1),ft])],512)])]))}},mt={class:"flex flex-col text-center gap-4 bg-light-700 dark-bg-dark-200 dark-bg-opacity-20 p-4 rounded-lg shadow-lg mb-8"},gt=p("div",{class:"text-xl font-bold my-2"},"Suggest a new web-synth to the collection",-1),bt=["disabled"],yt={__name:"FormSynth",emits:["submitted"],setup(t,{emit:e}){const s=e,n=Ne({url:"",text:""}),i=/[(http(s) ?): \/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/;function a(l){return i.test(l)}const r=P();async function o(){var l,c,u;try{const h=await fetch("https://dbs.chromatone.center/flows/trigger/dc8ca96f-76e6-4cac-b26c-10751746eb89",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(n)});r.value=await(h==null?void 0:h.json()),n.url="",n.text="",setTimeout(()=>{s("submitted")},2e3)}catch(h){console.error(h,(c=(l=h==null?void 0:h.errors)==null?void 0:l[0])==null?void 0:c.message,(u=h==null?void 0:h.response)==null?void 0:u.status)}}return(l,c)=>(b(),y("div",mt,[r.value?(b(),y(Z,{key:1},[K("Thanks for your suggestion!")],64)):(b(),y(Z,{key:0},[gt,X(p("input",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",type:"text",placeholder:"https://new.synth.url/","onUpdate:modelValue":c[0]||(c[0]=u=>n.url=u)},null,512),[[ee,n.url]]),X(p("textarea",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",oninput:"this.style.height = ''; this.style.height = this.scrollHeight +'px'",placeholder:"Describe the web-app and how do you use it musically","onUpdate:modelValue":c[1]||(c[1]=u=>n.text=u)},null,512),[[ee,n.text]]),p("button",{class:"text-xl py-2 px-4 rounded bg-dark-100 text-light-200 dark-bg-light-700 dark-text-dark-500 shadow-lg disabled-opacity-20",disabled:!a(n.url),onClick:c[2]||(c[2]=u=>o())},O(a(n.url)?"Submit":"Please provide a valid URL"),9,bt)],64))]))}},ke=t=>(We("data-v-f3c34bc1"),t=t(),Ze(),t),vt={key:0,class:"px-2 py-1 bg-light-800 dark-bg-dark-800 rounded-xl transition text-sm select-none absolute bottom-2 left-2 text-center z-200 flex items-center gap-1 opacity-70 hover-opacity-100",title:"Since 28 Oct 2023"},_t=ke(()=>p("div",{class:"i-la-eye"},null,-1)),wt={class:"p-0 mt-2px"},kt={class:"p-4 flex flex-col items-start justify-between gap-2",style:{flex:"10 0 200px"}},xt={class:"flex items-center gap-2 flex-0 w-full"},St={class:"transition text-xl select-none absolute top-4 left-4 text-center z-200"},Mt={class:"flex-auto"},Tt={class:"flex items-center gap-2"},It={class:"text-2xl font-bold"},At={key:0,class:"font-normal",title:"Archived locally by us"},Et=ke(()=>p("div",{class:"i-ph-archive-duotone"},null,-1)),$t=[Et],Ct={class:"flex-1"},Lt={key:1,class:"flex-1 flex items-end flex flex-wrap gap-2"},Ot=["href"],Pt={key:3,class:"text-xl p-2 absolute left-2 top-4 bg-yellow-600 rounded-xl shadow font-bold z-1000 transform -rotate-10"},Nt={__name:"SynthCard",props:{pos:{type:Number,default:0},sort:{type:Number,default:0},public:{type:Boolean,default:!1},title:{type:String,default:""},id:{type:Number,default:0},slug:{type:String,default:""},description:{type:String,default:""},cover:{type:String,default:""},url:{type:String,default:""},author:{type:String,default:""},author_link:{type:String,default:""},tags:{type:Array,default:()=>[]},archive:{type:Boolean,default:!1},archive_link:{type:String,default:""},iframe:{type:Boolean,default:null},clicks:{type:Number,default:0},stars:{type:Number,default:0},counter:{type:Number,default:0},is_new:{type:Boolean,default:null}},setup(t){const{isDark:e}=Be(),s=t,{isFormOpen:n,isAccessGranted:i}=we(),{clicksCount:a,clickSynth:r}=Je(s.id);async function o(){!s.public&&!i.value?n.value=!n.value:(r(s.id),s.iframe?window.open(s.slug+"/","_self"):window.open(s.archive?s.archive_link:s.url,"_blank"))}return(l,c)=>{var d;const u=Qe,h=Re("ClientOnly");return b(),y("button",{class:"max-w-180 w-full flex flex-wrap items-stretch text-left relative bg-light-500 dark-bg-dark-300 -hover-translate-y-6px transition duration-200 hover-shadow-lg rounded-lg overflow-hidden relative border-1 border-dark-100 border-opacity-20 shadow-sm dark-border-light-800 dark-border-opacity-20",style:te({borderColor:T(U)[t.id]?T(e)?"hsl(50deg,80%,35%)":"hsl(40deg,90%,80%)":null}),onClick:o},[p("div",{class:"cover min-h-50 bg-cover bg-center filter transition",style:te([{backgroundImage:`url(/cover/${t.slug}.webp)`},{flex:"1 1 280px"}])},[T(a)||t.counter?(b(),y("div",vt,[_t,p("div",wt,O(T(a)||t.counter),1)])):k("",!0)],4),p("div",kt,[p("div",xt,[p("div",St,O(t.sort),1),p("div",Mt,[p("span",Tt,[p("div",It,O(t.title),1),t.archive?(b(),y("span",At,$t)):k("",!0)])]),z(h,null,{default:q(()=>[z(u,{class:"text-xl mr-2 absolute z-200",id:t.id,stars:t.stars},null,8,["id","stars"])]),_:1})]),t.author?(b(),se(ze(t.author_link?"a":"div"),{key:0,class:"p-0 text-md",href:t.author_link,target:"_blank"},{default:q(()=>[K("by "+O(t.author),1)]),_:1},8,["href"])):k("",!0),p("div",Ct,[De(l.$slots,"default",{},void 0,!0)]),((d=t.tags)==null?void 0:d.length)>0?(b(),y("div",Lt,[(b(!0),y(Z,null,_e(t.tags,g=>(b(),y("div",{class:"px-2 py-1 text-sm bg-light-800 dark-bg-dark-500 rounded-lg",key:g},O(g),1))),128))])):k("",!0),t.iframe?k("",!0):(b(),y("a",{key:2,class:"absolute bottom-4 right-4 i-la-external-link-square-alt text-lg opacity-40 transition transition hover-opacity-100",onClick:c[0]||(c[0]=je(()=>{},["stop"])),href:`/${t.slug}/`,title:"Opens in a new window"},null,8,Ot)),t.is_new?(b(),y("div",Pt,"NEW!")):k("",!0)])],4)}}},Bt=ve(Nt,[["__scopeId","data-v-f3c34bc1"]]);function L(t){return Array.isArray?Array.isArray(t):Me(t)==="[object Array]"}const Rt=1/0;function zt(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-Rt?"-0":e}function Dt(t){return t==null?"":zt(t)}function $(t){return typeof t=="string"}function xe(t){return typeof t=="number"}function jt(t){return t===!0||t===!1||Wt(t)&&Me(t)=="[object Boolean]"}function Se(t){return typeof t=="object"}function Wt(t){return Se(t)&&t!==null}function x(t){return t!=null}function Q(t){return!t.trim().length}function Me(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const Zt="Incorrect 'index' type",Ft=t=>`Invalid value for key ${t}`,Vt=t=>`Pattern length exceeds max of ${t}.`,Gt=t=>`Missing ${t} property in key`,Ut=t=>`Property 'weight' in key '${t}' must be a positive integer`,pe=Object.prototype.hasOwnProperty;class Kt{constructor(e){this._keys=[],this._keyMap={};let s=0;e.forEach(n=>{let i=Te(n);this._keys.push(i),this._keyMap[i.id]=i,s+=i.weight}),this._keys.forEach(n=>{n.weight/=s})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function Te(t){let e=null,s=null,n=null,i=1,a=null;if($(t)||L(t))n=t,e=me(t),s=ie(t);else{if(!pe.call(t,"name"))throw new Error(Gt("name"));const r=t.name;if(n=r,pe.call(t,"weight")&&(i=t.weight,i<=0))throw new Error(Ut(r));e=me(r),s=ie(r),a=t.getFn}return{path:e,id:s,weight:i,src:n,getFn:a}}function me(t){return L(t)?t:t.split(".")}function ie(t){return L(t)?t.join("."):t}function qt(t,e){let s=[],n=!1;const i=(a,r,o)=>{if(x(a))if(!r[o])s.push(a);else{let l=r[o];const c=a[l];if(!x(c))return;if(o===r.length-1&&($(c)||xe(c)||jt(c)))s.push(Dt(c));else if(L(c)){n=!0;for(let u=0,h=c.length;ut.score===e.score?t.idx{this._keysMap[s.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,$(this.docs[0])?this.docs.forEach((e,s)=>{this._addString(e,s)}):this.docs.forEach((e,s)=>{this._addObject(e,s)}),this.norm.clear())}add(e){const s=this.size();$(e)?this._addString(e,s):this._addObject(e,s)}removeAt(e){this.records.splice(e,1);for(let s=e,n=this.size();s{let r=i.getFn?i.getFn(e):this.getFn(e,i.path);if(x(r)){if(L(r)){let o=[];const l=[{nestedArrIndex:-1,value:r}];for(;l.length;){const{nestedArrIndex:c,value:u}=l.pop();if(x(u))if($(u)&&!Q(u)){let h={v:u,i:c,n:this.norm.get(u)};o.push(h)}else L(u)&&u.forEach((h,d)=>{l.push({nestedArrIndex:d,value:h})})}n.$[a]=o}else if($(r)&&!Q(r)){let o={v:r,n:this.norm.get(r)};n.$[a]=o}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function Ie(t,e,{getFn:s=f.getFn,fieldNormWeight:n=f.fieldNormWeight}={}){const i=new ue({getFn:s,fieldNormWeight:n});return i.setKeys(t.map(Te)),i.setSources(e),i.create(),i}function ts(t,{getFn:e=f.getFn,fieldNormWeight:s=f.fieldNormWeight}={}){const{keys:n,records:i}=t,a=new ue({getFn:e,fieldNormWeight:s});return a.setKeys(n),a.setIndexRecords(i),a}function G(t,{errors:e=0,currentLocation:s=0,expectedLocation:n=0,distance:i=f.distance,ignoreLocation:a=f.ignoreLocation}={}){const r=e/t.length;if(a)return r;const o=Math.abs(n-s);return i?r+o/i:o?1:r}function ss(t=[],e=f.minMatchCharLength){let s=[],n=-1,i=-1,a=0;for(let r=t.length;a=e&&s.push([n,i]),n=-1)}return t[a-1]&&a-n>=e&&s.push([n,a-1]),s}const R=32;function ns(t,e,s,{location:n=f.location,distance:i=f.distance,threshold:a=f.threshold,findAllMatches:r=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,includeMatches:l=f.includeMatches,ignoreLocation:c=f.ignoreLocation}={}){if(e.length>R)throw new Error(Vt(R));const u=e.length,h=t.length,d=Math.max(0,Math.min(n,h));let g=a,v=d;const m=o>1||l,S=m?Array(h):[];let M;for(;(M=t.indexOf(e,v))>-1;){let w=G(e,{currentLocation:M,expectedLocation:d,distance:i,ignoreLocation:c});if(g=Math.min(w,g),v=M+u,m){let I=0;for(;I=he;A-=1){let V=A-1,de=s[t.charAt(V)];if(m&&(S[V]=+!!de),j[A]=(j[A+1]<<1|1)&de,w&&(j[A]|=(C[A+1]|C[A])<<1|1|C[A+1]),j[A]&F&&(E=G(e,{errors:w,currentLocation:V,expectedLocation:d,distance:i,ignoreLocation:c}),E<=g)){if(g=E,v=V,v<=d)break;he=Math.max(1,2*d-v)}}if(G(e,{errors:w+1,currentLocation:d,expectedLocation:d,distance:i,ignoreLocation:c})>g)break;C=j}const D={isMatch:v>=0,score:Math.max(.001,E)};if(m){const w=ss(S,o);w.length?l&&(D.indices=w):D.isMatch=!1}return D}function is(t){let e={};for(let s=0,n=t.length;s{this.chunks.push({pattern:d,alphabet:is(d),startIndex:g})},h=this.pattern.length;if(h>R){let d=0;const g=h%R,v=h-g;for(;d{const{isMatch:M,score:C,indices:E}=ns(e,v,m,{location:i+S,distance:a,threshold:r,findAllMatches:o,minMatchCharLength:l,includeMatches:n,ignoreLocation:c});M&&(d=!0),h+=C,M&&E&&(u=[...u,...E])});let g={isMatch:d,score:d?h/this.chunks.length:1};return d&&n&&(g.indices=u),g}}class N{constructor(e){this.pattern=e}static isMultiMatch(e){return ge(e,this.multiRegex)}static isSingleMatch(e){return ge(e,this.singleRegex)}search(){}}function ge(t,e){const s=t.match(e);return s?s[1]:null}class as extends N{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const s=e===this.pattern;return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class rs extends N{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const n=e.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class os extends N{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const s=e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class ls extends N{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const s=!e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class cs extends N{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const s=e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class us extends N{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const s=!e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class Ee extends N{constructor(e,{location:s=f.location,threshold:n=f.threshold,distance:i=f.distance,includeMatches:a=f.includeMatches,findAllMatches:r=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,isCaseSensitive:l=f.isCaseSensitive,ignoreLocation:c=f.ignoreLocation}={}){super(e),this._bitapSearch=new Ae(e,{location:s,threshold:n,distance:i,includeMatches:a,findAllMatches:r,minMatchCharLength:o,isCaseSensitive:l,ignoreLocation:c})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class $e extends N{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let s=0,n;const i=[],a=this.pattern.length;for(;(n=e.indexOf(this.pattern,s))>-1;)s=n+a,i.push([n,s-1]);const r=!!i.length;return{isMatch:r,score:r?0:1,indices:i}}}const ae=[as,$e,os,ls,us,cs,rs,Ee],be=ae.length,hs=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,ds="|";function fs(t,e={}){return t.split(ds).map(s=>{let n=s.trim().split(hs).filter(a=>a&&!!a.trim()),i=[];for(let a=0,r=n.length;a!!(t[Y.AND]||t[Y.OR]),bs=t=>!!t[le.PATH],ys=t=>!L(t)&&Se(t)&&!ce(t),ye=t=>({[Y.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function Ce(t,e,{auto:s=!0}={}){const n=i=>{let a=Object.keys(i);const r=bs(i);if(!r&&a.length>1&&!ce(i))return n(ye(i));if(ys(i)){const l=r?i[le.PATH]:a[0],c=r?i[le.PATTERN]:i[l];if(!$(c))throw new Error(Ft(l));const u={keyId:ie(l),pattern:c};return s&&(u.searcher=oe(c,e)),u}let o={children:[],operator:a[0]};return a.forEach(l=>{const c=i[l];L(c)&&c.forEach(u=>{o.children.push(n(u))})}),o};return ce(t)||(t=ye(t)),n(t)}function vs(t,{ignoreFieldNorm:e=f.ignoreFieldNorm}){t.forEach(s=>{let n=1;s.matches.forEach(({key:i,norm:a,score:r})=>{const o=i?i.weight:null;n*=Math.pow(r===0&&o?Number.EPSILON:r,(o||1)*(e?1:a))}),s.score=n})}function _s(t,e){const s=t.matches;e.matches=[],x(s)&&s.forEach(n=>{if(!x(n.indices)||!n.indices.length)return;const{indices:i,value:a}=n;let r={indices:i,value:a};n.key&&(r.key=n.key.src),n.idx>-1&&(r.refIndex=n.idx),e.matches.push(r)})}function ws(t,e){e.score=t.score}function ks(t,e,{includeMatches:s=f.includeMatches,includeScore:n=f.includeScore}={}){const i=[];return s&&i.push(_s),n&&i.push(ws),t.map(a=>{const{idx:r}=a,o={item:e[r],refIndex:r};return i.length&&i.forEach(l=>{l(a,o)}),o})}class W{constructor(e,s={},n){this.options={...f,...s},this.options.useExtendedSearch,this._keyStore=new Kt(this.options.keys),this.setCollection(e,n)}setCollection(e,s){if(this._docs=e,s&&!(s instanceof ue))throw new Error(Zt);this._myIndex=s||Ie(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){x(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const s=[];for(let n=0,i=this._docs.length;n-1&&(l=l.slice(0,s)),ks(l,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(e){const s=oe(e,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:a,i:r,n:o})=>{if(!x(a))return;const{isMatch:l,score:c,indices:u}=s.searchIn(a);l&&i.push({item:a,idx:r,matches:[{score:c,value:a,norm:o,indices:u}]})}),i}_searchLogical(e){const s=Ce(e,this.options),n=(o,l,c)=>{if(!o.children){const{keyId:h,searcher:d}=o,g=this._findMatches({key:this._keyStore.get(h),value:this._myIndex.getValueForItemAtKeyId(l,h),searcher:d});return g&&g.length?[{idx:c,item:l,matches:g}]:[]}const u=[];for(let h=0,d=o.children.length;h{if(x(o)){let c=n(s,o,l);c.length&&(a[l]||(a[l]={idx:l,item:o,matches:[]},r.push(a[l])),c.forEach(({matches:u})=>{a[l].matches.push(...u)}))}}),r}_searchObjectList(e){const s=oe(e,this.options),{keys:n,records:i}=this._myIndex,a=[];return i.forEach(({$:r,i:o})=>{if(!x(r))return;let l=[];n.forEach((c,u)=>{l.push(...this._findMatches({key:c,value:r[u],searcher:s}))}),l.length&&a.push({idx:o,item:r,matches:l})}),a}_findMatches({key:e,value:s,searcher:n}){if(!x(s))return[];let i=[];if(L(s))s.forEach(({v:a,i:r,n:o})=>{if(!x(a))return;const{isMatch:l,score:c,indices:u}=n.searchIn(a);l&&i.push({score:c,key:e,value:a,idx:r,norm:o,indices:u})});else{const{v:a,n:r}=s,{isMatch:o,score:l,indices:c}=n.searchIn(a);o&&i.push({score:l,key:e,value:a,norm:r,indices:c})}return i}}W.version="7.0.0";W.createIndex=Ie;W.parseIndex=ts;W.config=f;W.parseQuery=Ce;gs(ms);const xs={class:"flex flex-col items-center mb-2 px-8"},Ss={class:"w-full max-w-110 flex items-center relative my-4 gap-2"},Ms=["placeholder"],Ts=p("div",{class:"i-la-search absolute left-2 text-xl opacity-40"},null,-1),Is=["title"],As={key:0,class:"i-la-star-solid"},Es={key:1,class:"i-la-star"},$s={class:"flex flex-col items-center gap-8 p-2 max-w-160 mx-auto mb-12"},Cs=["index"],Ls={class:"p-2",key:"nnn"},Os={key:0,class:"animate-pulse text-center"},Ps={__name:"SynthList",setup(t){const{isAccessGranted:e}=we(),s=P(ne),n=new W(ne,{includeScore:!0,ignoreLocation:!0,shouldSort:!0,keys:["title","slug","author"]}),i=Fe("fav-filter",!1),a=P(""),r=P(!1),o=J(()=>n.search(a.value)),l=J(()=>o.value.filter(h=>h.score<.2).sort((h,d)=>h.score>d.score?1:0).map(h=>h.item.slug)),c=J(()=>s.value.filter(h=>a.value?l.value.includes(h.slug):i.value?U.value[h.id]:!0)),u=P([]);return Ve(async()=>{u.value=await Xe("synths",{fields:["id",{stats:["views","stars"]}]})}),Ge(U,h=>{Object.values(h).filter(Boolean).length==0&&(i.value=!1)},{deep:!0,immediate:!0}),(h,d)=>{const g=Bt,v=yt;return b(),y(Z,null,[p("div",xs,[p("div",Ss,[X(p("input",{class:"w-full focus text-xl py-2 pl-9 bg-light-50 bg-opacity-100 shadow-inner border-1 border-dark-100 border-opacity-10 rounded-lg dark-bg-dark-200 outline-none focus-border-opacity-90",placeholder:"Type to search...","onUpdate:modelValue":d[0]||(d[0]=m=>a.value=m)},null,8,Ms),[[ee,a.value]]),Ts,a.value?(b(),y("div",{key:0,class:"i-la-times absolute right-2 text-xl opacity-40 hover-opacity-80 transition cursor-pointer",onClick:d[1]||(d[1]=m=>a.value="")})):k("",!0),Object.values(T(U)).filter(Boolean).length>0&&!a.value?(b(),y("button",{key:1,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl text-yellow",title:T(i)?"Only favourites are shown":"Show only favourites",onClick:d[2]||(d[2]=m=>i.value=!T(i))},[z(Ue,{name:"fade"},{default:q(()=>[T(i)?(b(),y("div",As)):(b(),y("div",Es))]),_:1})],8,Is)):k("",!0),a.value?k("",!0):(b(),y("button",{key:2,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl",title:"Suggest a new link to the collection",onClick:d[3]||(d[3]=m=>r.value=!r.value)},[p("div",{class:Ke(["i-la-plus transform transition",{"rotate-45":r.value}])},null,2)]))])]),p("div",$s,[r.value?k("",!0):(b(),se(Ye,{key:0,name:"fade"},{default:q(()=>[(b(!0),y(Z,null,_e(c.value,(m,S)=>{var M,C,E,B,F,D,w,I;return b(),y("div",{class:"flex w-full sticky",style:te([{top:`${80+S*4}px`,zIndex:S+10},{flex:"1 1 240px"}]),key:m.id,index:S},[(b(),se(g,qe({pos:S,style:{filter:!m.public&&!T(e)?"contrast(70%) blur(2px) opacity(80%)":""},key:m.id},m,{counter:(B=(E=(C=(M=u.value)==null?void 0:M.find(_=>(_==null?void 0:_.id)==(m==null?void 0:m.id)))==null?void 0:C.stats)==null?void 0:E[0])==null?void 0:B.views,stars:(I=(w=(D=(F=u.value)==null?void 0:F.find(_=>(_==null?void 0:_.id)==(m==null?void 0:m.id)))==null?void 0:D.stats)==null?void 0:w[0])==null?void 0:I.stars}),null,16,["pos","style","counter","stars"]))],12,Cs)}),128))]),_:1})),c.value.length==0||r.value?(b(),y("div",Ls,[r.value?k("",!0):(b(),y("div",Os,"We don't know such a web-app yet. ")),z(v,{class:"max-w-140 mx-auto mt-6",onSubmitted:d[4]||(d[4]=m=>r.value=!1)})])):k("",!0)])],64)}}},Ys=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":1710400063000}'),Ns={name:"index.md"},Bs=p("h1",{class:"text-center text-2xl sm-text-3xl font-bold mt-8",style:{padding:"0.1rem 1rem"}},"Online synthesizers and web piano apps",-1),Rs=p("h2",{class:"text-xl sm-text-2xl text-center my-2",style:{padding:"0 1rem"}},"Curated collection of free music creation resources",-1),zs={class:"px-4 text-lg text-center mb-8 max-w-150 mx-auto"},Ds=p("a",{class:"font-bold",href:"https://chromatone.center",target:"_blank",rel:"noopener"}," Chromatone",-1),js=p("a",{class:"font-bold",href:"https://playtronica.com",target:"_blank",rel:"noopener"}," Playtronica",-1),Ws=p("h3",{class:"font-bold text-xl"},"Welcome to the community of web-based musicians!",-1),Zs=p("p",null,[p("a",{target:"_blank",href:"https://chromatone.center/"},[p("img",{src:He,class:"max-w-16 mx-auto"})])],-1);function Fs(t,e,s,n,i,a){const r=Ps,o=pt,l=at;return b(),y("div",null,[Bs,Rs,z(r),p("div",zs,[Ds,K(" is an open source visual music language for education, research and performance. We develop a new universal way to communicate music. "),js,K(" is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Together we share our passion for online music instruments. "),z(o),Ws,Zs,z(l)])])}const Hs=ve(Ns,[["render",Fs]]);export{Ys as __pageData,Hs as default}; +import{D as Le,b,d as y,g as p,f as T,q as k,r as P,E as fe,F as Oe,G as Pe,t as O,H as Ne,I as Z,e as X,j as ee,h as K,_ as ve,s as Be,x as Re,J as te,y as z,z as q,A as se,K as ze,i as De,L as _e,C as je,M as We,N as Ze,a as Fe,c as J,o as Ve,w as Ge,T as Ue,n as Ke,O as qe,P as Ye,Q as He}from"./chunks/framework.DA3bj7zI.js";import{u as Je,f as U,_ as Qe,a as Xe}from"./chunks/useClicks.DKflLG6D.js";import{u as we}from"./chunks/theme.TKyytG40.js";import"./chunks/index.OsI8M1nP.js";const et={class:"text-center line-height-loose text-md"},tt={class:"mx-auto max-w-75ch intro md-text-lg"},st=p("div",{class:"i-mdi-share"},null,-1),nt=p("span",null,"Share to save for later",-1),it=[st,nt],at={__name:"AboutShare",setup(t){const{share:e,isSupported:s}=Le();function n(){e({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(i,a)=>(b(),y("div",et,[p("div",tt,[T(s)?(b(),y("button",{key:0,class:"mx-auto flex items-center gap-2 text-white py-2 px-4 mt-6 shadow-lg rounded-lg cursor-pointer bg-green-600 -hover-translate-y-2px transition",onClick:a[0]||(a[0]=r=>n()),"data-umami-event":"Shared via button"},it)):k("",!0)])]))}},ne=JSON.parse(`[{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6794,"public":true,"is_new":false,"stats":[2]},{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2716,"public":true,"is_new":false,"stats":[5]},{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"content":"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.\\n\\n- Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing.\\n- Groove Monkee: graciously provided the MIDI files that are used for the percussion loops.\\n- Keenan Brand: created the midi.city logo and various icons used on the site.\\n- Noun Project: various icons are used via a Pro license.\\n- Google Material Design: various icons.\\n- Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API. ","iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"content":"The **aQWERTYon** (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.\\n\\nhttps://youtu.be/hqFr4lF6u_Y","iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"content":"## What can it be used for?\\n\\nMany teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.\\n\\n## Can I use it to make my own songs?\\n\\nYes. Check out the Song Maker experiment, which lets you make and share your own songs.\\n\\n## Do I need to make an account?\\n\\nNope. Just open any experiment and start playing.\\n\\n## How were these built?\\n\\nAll our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on [Github](https://github.com/googlecreativelab/chrome-music-lab).\\n\\n## What devices do these work on?\\n\\nYou can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.","iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths","slug":"websynths","author":"WebSynths","author_link":"https://www.websynths.org/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"content":"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.\\n\\nIt also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.\\n\\nTouch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.","iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":16,"clicks":177,"public":false,"is_new":false,"stats":[15]},{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"content":" BeepBox is developed by John Nesky.\\n\\nBeepBox does not claim ownership over songs created with it, so original songs belong to their authors.\\n\\nNeither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data. ","iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":17,"clicks":10,"public":false,"is_new":true,"stats":[46]},{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":18,"clicks":17,"public":false,"is_new":false,"stats":[16]},{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"content":null,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":19,"clicks":269,"public":false,"is_new":false,"stats":[17]},{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":20,"clicks":256,"public":false,"is_new":false,"stats":[18]},{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":22,"clicks":10,"public":false,"is_new":true,"stats":[45]},{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":23,"clicks":155,"public":false,"is_new":false,"stats":[19]},{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":24,"clicks":495,"public":false,"is_new":false,"stats":[20]},{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"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. ","iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":25,"clicks":282,"public":false,"is_new":false,"stats":[21]},{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"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. ","iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":26,"clicks":320,"public":false,"is_new":false,"stats":[22]},{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"content":"https://github.com/mbitsnbites/soundbox","iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":27,"clicks":209,"public":false,"is_new":false,"stats":[23]},{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":28,"clicks":210,"public":false,"is_new":false,"stats":[24]},{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":29,"clicks":202,"public":false,"is_new":false,"stats":[25]},{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":30,"clicks":166,"public":false,"is_new":false,"stats":[26]},{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":31,"clicks":91,"public":false,"is_new":false,"stats":[27]},{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":32,"clicks":217,"public":false,"is_new":false,"stats":[28]},{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":33,"clicks":4,"public":false,"is_new":false,"stats":[29]},{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":34,"clicks":127,"public":false,"is_new":false,"stats":[30]},{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":35,"clicks":164,"public":false,"is_new":false,"stats":[31]},{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":36,"clicks":255,"public":false,"is_new":false,"stats":[32]},{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":37,"clicks":184,"public":false,"is_new":false,"stats":[33]},{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":38,"clicks":117,"public":false,"is_new":false,"stats":[34]},{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"content":"Luke Twyman - project concept, design & Ul.\\nwhitevinyldesign.com\\n@whitevinylUK\\nLuke Phillips - audio development & musical interaction.\\nfemurdesign.com\\n@lukephills\\nEdward Silverton - client & server architecture & core development.\\nedsilv.com\\n@edsilv","iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":39,"clicks":19,"public":false,"is_new":false,"stats":[35]},{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":40,"clicks":146,"public":false,"is_new":false,"stats":[36]},{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":41,"clicks":145,"public":false,"is_new":false,"stats":[37]},{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":42,"clicks":129,"public":false,"is_new":false,"stats":[38]},{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":43,"clicks":305,"public":false,"is_new":false,"stats":[39]},{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":44,"clicks":15,"public":false,"is_new":false,"stats":[40]},{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":45,"clicks":124,"public":false,"is_new":false,"stats":[41]},{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":46,"clicks":21,"public":false,"is_new":false,"stats":[42]}]`),rt={class:"text-center line-height-loose text-md"},ot={class:"mx-auto max-w-75ch intro md-text-lg"},lt={class:"p-2 flex flex-col mt-8"},ct={class:"text-4xl font-bold"},ut=p("div",{class:"text-lg"},"web synths",-1),ht={class:"p-2 flex flex-col mt-8"},dt={class:"text-4xl font-bold"},ft=p("div",{class:"text-lg"},"web musicians",-1),pt={__name:"AboutCount",setup(t){const e=P(),s=P(0),n=P(0),i=fe(s),a=fe(n),r=Oe(e);return Pe(r,async o=>{if(o){s.value=ne.length;const c=await(await fetch("https://dbs.chromatone.center/flows/trigger/0c0e8d82-8e12-44a6-867a-57ddeec9d774",{type:"GET",mode:"cors",headers:{"Content-Type":"application/json"}})).json();n.value=c.count}}),(o,l)=>(b(),y("div",rt,[p("div",ot,[p("div",{class:"flex justify-center",ref_key:"counters",ref:e},[p("div",lt,[p("div",ct,O(T(i).toFixed()),1),ut]),p("div",ht,[p("div",dt,O(T(a).toFixed()||5e3)+"+",1),ft])],512)])]))}},mt={class:"flex flex-col text-center gap-4 bg-light-700 dark-bg-dark-200 dark-bg-opacity-20 p-4 rounded-lg shadow-lg mb-8"},gt=p("div",{class:"text-xl font-bold my-2"},"Suggest a new web-synth to the collection",-1),bt=["disabled"],yt={__name:"FormSynth",emits:["submitted"],setup(t,{emit:e}){const s=e,n=Ne({url:"",text:""}),i=/[(http(s) ?): \/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/;function a(l){return i.test(l)}const r=P();async function o(){var l,c,u;try{const h=await fetch("https://dbs.chromatone.center/flows/trigger/dc8ca96f-76e6-4cac-b26c-10751746eb89",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(n)});r.value=await(h==null?void 0:h.json()),n.url="",n.text="",setTimeout(()=>{s("submitted")},2e3)}catch(h){console.error(h,(c=(l=h==null?void 0:h.errors)==null?void 0:l[0])==null?void 0:c.message,(u=h==null?void 0:h.response)==null?void 0:u.status)}}return(l,c)=>(b(),y("div",mt,[r.value?(b(),y(Z,{key:1},[K("Thanks for your suggestion!")],64)):(b(),y(Z,{key:0},[gt,X(p("input",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",type:"text",placeholder:"https://new.synth.url/","onUpdate:modelValue":c[0]||(c[0]=u=>n.url=u)},null,512),[[ee,n.url]]),X(p("textarea",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",oninput:"this.style.height = ''; this.style.height = this.scrollHeight +'px'",placeholder:"Describe the web-app and how do you use it musically","onUpdate:modelValue":c[1]||(c[1]=u=>n.text=u)},null,512),[[ee,n.text]]),p("button",{class:"text-xl py-2 px-4 rounded bg-dark-100 text-light-200 dark-bg-light-700 dark-text-dark-500 shadow-lg disabled-opacity-20",disabled:!a(n.url),onClick:c[2]||(c[2]=u=>o())},O(a(n.url)?"Submit":"Please provide a valid URL"),9,bt)],64))]))}},ke=t=>(We("data-v-f3c34bc1"),t=t(),Ze(),t),vt={key:0,class:"px-2 py-1 bg-light-800 dark-bg-dark-800 rounded-xl transition text-sm select-none absolute bottom-2 left-2 text-center z-200 flex items-center gap-1 opacity-70 hover-opacity-100",title:"Since 28 Oct 2023"},_t=ke(()=>p("div",{class:"i-la-eye"},null,-1)),wt={class:"p-0 mt-2px"},kt={class:"p-4 flex flex-col items-start justify-between gap-2",style:{flex:"10 0 200px"}},xt={class:"flex items-center gap-2 flex-0 w-full"},St={class:"transition text-xl select-none absolute top-4 left-4 text-center z-200"},Mt={class:"flex-auto"},Tt={class:"flex items-center gap-2"},It={class:"text-2xl font-bold"},At={key:0,class:"font-normal",title:"Archived locally by us"},Et=ke(()=>p("div",{class:"i-ph-archive-duotone"},null,-1)),$t=[Et],Ct={class:"flex-1"},Lt={key:1,class:"flex-1 flex items-end flex flex-wrap gap-2"},Ot=["href"],Pt={key:3,class:"text-xl p-2 absolute left-2 top-4 bg-yellow-600 rounded-xl shadow font-bold z-1000 transform -rotate-10"},Nt={__name:"SynthCard",props:{pos:{type:Number,default:0},sort:{type:Number,default:0},public:{type:Boolean,default:!1},title:{type:String,default:""},id:{type:Number,default:0},slug:{type:String,default:""},description:{type:String,default:""},cover:{type:String,default:""},url:{type:String,default:""},author:{type:String,default:""},author_link:{type:String,default:""},tags:{type:Array,default:()=>[]},archive:{type:Boolean,default:!1},archive_link:{type:String,default:""},iframe:{type:Boolean,default:null},clicks:{type:Number,default:0},stars:{type:Number,default:0},counter:{type:Number,default:0},is_new:{type:Boolean,default:null}},setup(t){const{isDark:e}=Be(),s=t,{isFormOpen:n,isAccessGranted:i}=we(),{clicksCount:a,clickSynth:r}=Je(s.id);async function o(){!s.public&&!i.value?n.value=!n.value:(r(s.id),s.iframe?window.open(s.slug+"/","_self"):window.open(s.archive?s.archive_link:s.url,"_blank"))}return(l,c)=>{var d;const u=Qe,h=Re("ClientOnly");return b(),y("button",{class:"max-w-180 w-full flex flex-wrap items-stretch text-left relative bg-light-500 dark-bg-dark-300 -hover-translate-y-6px transition duration-200 hover-shadow-lg rounded-lg overflow-hidden relative border-1 border-dark-100 border-opacity-20 shadow-sm dark-border-light-800 dark-border-opacity-20",style:te({borderColor:T(U)[t.id]?T(e)?"hsl(50deg,80%,35%)":"hsl(40deg,90%,80%)":null}),onClick:o},[p("div",{class:"cover min-h-50 bg-cover bg-center filter transition",style:te([{backgroundImage:`url(/cover/${t.slug}.webp)`},{flex:"1 1 280px"}])},[T(a)||t.counter?(b(),y("div",vt,[_t,p("div",wt,O(T(a)||t.counter),1)])):k("",!0)],4),p("div",kt,[p("div",xt,[p("div",St,O(t.sort),1),p("div",Mt,[p("span",Tt,[p("div",It,O(t.title),1),t.archive?(b(),y("span",At,$t)):k("",!0)])]),z(h,null,{default:q(()=>[z(u,{class:"text-xl mr-2 absolute z-200",id:t.id,stars:t.stars},null,8,["id","stars"])]),_:1})]),t.author?(b(),se(ze(t.author_link?"a":"div"),{key:0,class:"p-0 text-md",href:t.author_link,target:"_blank"},{default:q(()=>[K("by "+O(t.author),1)]),_:1},8,["href"])):k("",!0),p("div",Ct,[De(l.$slots,"default",{},void 0,!0)]),((d=t.tags)==null?void 0:d.length)>0?(b(),y("div",Lt,[(b(!0),y(Z,null,_e(t.tags,g=>(b(),y("div",{class:"px-2 py-1 text-sm bg-light-800 dark-bg-dark-500 rounded-lg",key:g},O(g),1))),128))])):k("",!0),t.iframe?k("",!0):(b(),y("a",{key:2,class:"absolute bottom-4 right-4 i-la-external-link-square-alt text-lg opacity-40 transition transition hover-opacity-100",onClick:c[0]||(c[0]=je(()=>{},["stop"])),href:`/${t.slug}/`,title:"Opens in a new window"},null,8,Ot)),t.is_new?(b(),y("div",Pt,"NEW!")):k("",!0)])],4)}}},Bt=ve(Nt,[["__scopeId","data-v-f3c34bc1"]]);function L(t){return Array.isArray?Array.isArray(t):Me(t)==="[object Array]"}const Rt=1/0;function zt(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-Rt?"-0":e}function Dt(t){return t==null?"":zt(t)}function $(t){return typeof t=="string"}function xe(t){return typeof t=="number"}function jt(t){return t===!0||t===!1||Wt(t)&&Me(t)=="[object Boolean]"}function Se(t){return typeof t=="object"}function Wt(t){return Se(t)&&t!==null}function x(t){return t!=null}function Q(t){return!t.trim().length}function Me(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const Zt="Incorrect 'index' type",Ft=t=>`Invalid value for key ${t}`,Vt=t=>`Pattern length exceeds max of ${t}.`,Gt=t=>`Missing ${t} property in key`,Ut=t=>`Property 'weight' in key '${t}' must be a positive integer`,pe=Object.prototype.hasOwnProperty;class Kt{constructor(e){this._keys=[],this._keyMap={};let s=0;e.forEach(n=>{let i=Te(n);this._keys.push(i),this._keyMap[i.id]=i,s+=i.weight}),this._keys.forEach(n=>{n.weight/=s})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function Te(t){let e=null,s=null,n=null,i=1,a=null;if($(t)||L(t))n=t,e=me(t),s=ie(t);else{if(!pe.call(t,"name"))throw new Error(Gt("name"));const r=t.name;if(n=r,pe.call(t,"weight")&&(i=t.weight,i<=0))throw new Error(Ut(r));e=me(r),s=ie(r),a=t.getFn}return{path:e,id:s,weight:i,src:n,getFn:a}}function me(t){return L(t)?t:t.split(".")}function ie(t){return L(t)?t.join("."):t}function qt(t,e){let s=[],n=!1;const i=(a,r,o)=>{if(x(a))if(!r[o])s.push(a);else{let l=r[o];const c=a[l];if(!x(c))return;if(o===r.length-1&&($(c)||xe(c)||jt(c)))s.push(Dt(c));else if(L(c)){n=!0;for(let u=0,h=c.length;ut.score===e.score?t.idx{this._keysMap[s.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,$(this.docs[0])?this.docs.forEach((e,s)=>{this._addString(e,s)}):this.docs.forEach((e,s)=>{this._addObject(e,s)}),this.norm.clear())}add(e){const s=this.size();$(e)?this._addString(e,s):this._addObject(e,s)}removeAt(e){this.records.splice(e,1);for(let s=e,n=this.size();s{let r=i.getFn?i.getFn(e):this.getFn(e,i.path);if(x(r)){if(L(r)){let o=[];const l=[{nestedArrIndex:-1,value:r}];for(;l.length;){const{nestedArrIndex:c,value:u}=l.pop();if(x(u))if($(u)&&!Q(u)){let h={v:u,i:c,n:this.norm.get(u)};o.push(h)}else L(u)&&u.forEach((h,d)=>{l.push({nestedArrIndex:d,value:h})})}n.$[a]=o}else if($(r)&&!Q(r)){let o={v:r,n:this.norm.get(r)};n.$[a]=o}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function Ie(t,e,{getFn:s=f.getFn,fieldNormWeight:n=f.fieldNormWeight}={}){const i=new ue({getFn:s,fieldNormWeight:n});return i.setKeys(t.map(Te)),i.setSources(e),i.create(),i}function ts(t,{getFn:e=f.getFn,fieldNormWeight:s=f.fieldNormWeight}={}){const{keys:n,records:i}=t,a=new ue({getFn:e,fieldNormWeight:s});return a.setKeys(n),a.setIndexRecords(i),a}function G(t,{errors:e=0,currentLocation:s=0,expectedLocation:n=0,distance:i=f.distance,ignoreLocation:a=f.ignoreLocation}={}){const r=e/t.length;if(a)return r;const o=Math.abs(n-s);return i?r+o/i:o?1:r}function ss(t=[],e=f.minMatchCharLength){let s=[],n=-1,i=-1,a=0;for(let r=t.length;a=e&&s.push([n,i]),n=-1)}return t[a-1]&&a-n>=e&&s.push([n,a-1]),s}const R=32;function ns(t,e,s,{location:n=f.location,distance:i=f.distance,threshold:a=f.threshold,findAllMatches:r=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,includeMatches:l=f.includeMatches,ignoreLocation:c=f.ignoreLocation}={}){if(e.length>R)throw new Error(Vt(R));const u=e.length,h=t.length,d=Math.max(0,Math.min(n,h));let g=a,v=d;const m=o>1||l,S=m?Array(h):[];let M;for(;(M=t.indexOf(e,v))>-1;){let w=G(e,{currentLocation:M,expectedLocation:d,distance:i,ignoreLocation:c});if(g=Math.min(w,g),v=M+u,m){let I=0;for(;I=he;A-=1){let V=A-1,de=s[t.charAt(V)];if(m&&(S[V]=+!!de),j[A]=(j[A+1]<<1|1)&de,w&&(j[A]|=(C[A+1]|C[A])<<1|1|C[A+1]),j[A]&F&&(E=G(e,{errors:w,currentLocation:V,expectedLocation:d,distance:i,ignoreLocation:c}),E<=g)){if(g=E,v=V,v<=d)break;he=Math.max(1,2*d-v)}}if(G(e,{errors:w+1,currentLocation:d,expectedLocation:d,distance:i,ignoreLocation:c})>g)break;C=j}const D={isMatch:v>=0,score:Math.max(.001,E)};if(m){const w=ss(S,o);w.length?l&&(D.indices=w):D.isMatch=!1}return D}function is(t){let e={};for(let s=0,n=t.length;s{this.chunks.push({pattern:d,alphabet:is(d),startIndex:g})},h=this.pattern.length;if(h>R){let d=0;const g=h%R,v=h-g;for(;d{const{isMatch:M,score:C,indices:E}=ns(e,v,m,{location:i+S,distance:a,threshold:r,findAllMatches:o,minMatchCharLength:l,includeMatches:n,ignoreLocation:c});M&&(d=!0),h+=C,M&&E&&(u=[...u,...E])});let g={isMatch:d,score:d?h/this.chunks.length:1};return d&&n&&(g.indices=u),g}}class N{constructor(e){this.pattern=e}static isMultiMatch(e){return ge(e,this.multiRegex)}static isSingleMatch(e){return ge(e,this.singleRegex)}search(){}}function ge(t,e){const s=t.match(e);return s?s[1]:null}class as extends N{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const s=e===this.pattern;return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class rs extends N{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const n=e.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class os extends N{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const s=e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class ls extends N{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const s=!e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class cs extends N{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const s=e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class us extends N{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const s=!e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class Ee extends N{constructor(e,{location:s=f.location,threshold:n=f.threshold,distance:i=f.distance,includeMatches:a=f.includeMatches,findAllMatches:r=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,isCaseSensitive:l=f.isCaseSensitive,ignoreLocation:c=f.ignoreLocation}={}){super(e),this._bitapSearch=new Ae(e,{location:s,threshold:n,distance:i,includeMatches:a,findAllMatches:r,minMatchCharLength:o,isCaseSensitive:l,ignoreLocation:c})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class $e extends N{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let s=0,n;const i=[],a=this.pattern.length;for(;(n=e.indexOf(this.pattern,s))>-1;)s=n+a,i.push([n,s-1]);const r=!!i.length;return{isMatch:r,score:r?0:1,indices:i}}}const ae=[as,$e,os,ls,us,cs,rs,Ee],be=ae.length,hs=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,ds="|";function fs(t,e={}){return t.split(ds).map(s=>{let n=s.trim().split(hs).filter(a=>a&&!!a.trim()),i=[];for(let a=0,r=n.length;a!!(t[Y.AND]||t[Y.OR]),bs=t=>!!t[le.PATH],ys=t=>!L(t)&&Se(t)&&!ce(t),ye=t=>({[Y.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function Ce(t,e,{auto:s=!0}={}){const n=i=>{let a=Object.keys(i);const r=bs(i);if(!r&&a.length>1&&!ce(i))return n(ye(i));if(ys(i)){const l=r?i[le.PATH]:a[0],c=r?i[le.PATTERN]:i[l];if(!$(c))throw new Error(Ft(l));const u={keyId:ie(l),pattern:c};return s&&(u.searcher=oe(c,e)),u}let o={children:[],operator:a[0]};return a.forEach(l=>{const c=i[l];L(c)&&c.forEach(u=>{o.children.push(n(u))})}),o};return ce(t)||(t=ye(t)),n(t)}function vs(t,{ignoreFieldNorm:e=f.ignoreFieldNorm}){t.forEach(s=>{let n=1;s.matches.forEach(({key:i,norm:a,score:r})=>{const o=i?i.weight:null;n*=Math.pow(r===0&&o?Number.EPSILON:r,(o||1)*(e?1:a))}),s.score=n})}function _s(t,e){const s=t.matches;e.matches=[],x(s)&&s.forEach(n=>{if(!x(n.indices)||!n.indices.length)return;const{indices:i,value:a}=n;let r={indices:i,value:a};n.key&&(r.key=n.key.src),n.idx>-1&&(r.refIndex=n.idx),e.matches.push(r)})}function ws(t,e){e.score=t.score}function ks(t,e,{includeMatches:s=f.includeMatches,includeScore:n=f.includeScore}={}){const i=[];return s&&i.push(_s),n&&i.push(ws),t.map(a=>{const{idx:r}=a,o={item:e[r],refIndex:r};return i.length&&i.forEach(l=>{l(a,o)}),o})}class W{constructor(e,s={},n){this.options={...f,...s},this.options.useExtendedSearch,this._keyStore=new Kt(this.options.keys),this.setCollection(e,n)}setCollection(e,s){if(this._docs=e,s&&!(s instanceof ue))throw new Error(Zt);this._myIndex=s||Ie(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){x(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const s=[];for(let n=0,i=this._docs.length;n-1&&(l=l.slice(0,s)),ks(l,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(e){const s=oe(e,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:a,i:r,n:o})=>{if(!x(a))return;const{isMatch:l,score:c,indices:u}=s.searchIn(a);l&&i.push({item:a,idx:r,matches:[{score:c,value:a,norm:o,indices:u}]})}),i}_searchLogical(e){const s=Ce(e,this.options),n=(o,l,c)=>{if(!o.children){const{keyId:h,searcher:d}=o,g=this._findMatches({key:this._keyStore.get(h),value:this._myIndex.getValueForItemAtKeyId(l,h),searcher:d});return g&&g.length?[{idx:c,item:l,matches:g}]:[]}const u=[];for(let h=0,d=o.children.length;h{if(x(o)){let c=n(s,o,l);c.length&&(a[l]||(a[l]={idx:l,item:o,matches:[]},r.push(a[l])),c.forEach(({matches:u})=>{a[l].matches.push(...u)}))}}),r}_searchObjectList(e){const s=oe(e,this.options),{keys:n,records:i}=this._myIndex,a=[];return i.forEach(({$:r,i:o})=>{if(!x(r))return;let l=[];n.forEach((c,u)=>{l.push(...this._findMatches({key:c,value:r[u],searcher:s}))}),l.length&&a.push({idx:o,item:r,matches:l})}),a}_findMatches({key:e,value:s,searcher:n}){if(!x(s))return[];let i=[];if(L(s))s.forEach(({v:a,i:r,n:o})=>{if(!x(a))return;const{isMatch:l,score:c,indices:u}=n.searchIn(a);l&&i.push({score:c,key:e,value:a,idx:r,norm:o,indices:u})});else{const{v:a,n:r}=s,{isMatch:o,score:l,indices:c}=n.searchIn(a);o&&i.push({score:l,key:e,value:a,norm:r,indices:c})}return i}}W.version="7.0.0";W.createIndex=Ie;W.parseIndex=ts;W.config=f;W.parseQuery=Ce;gs(ms);const xs={class:"flex flex-col items-center mb-2 px-8"},Ss={class:"w-full max-w-110 flex items-center relative my-4 gap-2"},Ms=["placeholder"],Ts=p("div",{class:"i-la-search absolute left-2 text-xl opacity-40"},null,-1),Is=["title"],As={key:0,class:"i-la-star-solid"},Es={key:1,class:"i-la-star"},$s={class:"flex flex-col items-center gap-8 p-2 max-w-160 mx-auto mb-12"},Cs=["index"],Ls={class:"p-2",key:"nnn"},Os={key:0,class:"animate-pulse text-center"},Ps={__name:"SynthList",setup(t){const{isAccessGranted:e}=we(),s=P(ne),n=new W(ne,{includeScore:!0,ignoreLocation:!0,shouldSort:!0,keys:["title","slug","author"]}),i=Fe("fav-filter",!1),a=P(""),r=P(!1),o=J(()=>n.search(a.value)),l=J(()=>o.value.filter(h=>h.score<.2).sort((h,d)=>h.score>d.score?1:0).map(h=>h.item.slug)),c=J(()=>s.value.filter(h=>a.value?l.value.includes(h.slug):i.value?U.value[h.id]:!0)),u=P([]);return Ve(async()=>{u.value=await Xe("synths",{fields:["id",{stats:["views","stars"]}]})}),Ge(U,h=>{Object.values(h).filter(Boolean).length==0&&(i.value=!1)},{deep:!0,immediate:!0}),(h,d)=>{const g=Bt,v=yt;return b(),y(Z,null,[p("div",xs,[p("div",Ss,[X(p("input",{class:"w-full focus text-xl py-2 pl-9 bg-light-50 bg-opacity-100 shadow-inner border-1 border-dark-100 border-opacity-10 rounded-lg dark-bg-dark-200 outline-none focus-border-opacity-90",placeholder:"Type to search...","onUpdate:modelValue":d[0]||(d[0]=m=>a.value=m)},null,8,Ms),[[ee,a.value]]),Ts,a.value?(b(),y("div",{key:0,class:"i-la-times absolute right-2 text-xl opacity-40 hover-opacity-80 transition cursor-pointer",onClick:d[1]||(d[1]=m=>a.value="")})):k("",!0),Object.values(T(U)).filter(Boolean).length>0&&!a.value?(b(),y("button",{key:1,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl text-yellow",title:T(i)?"Only favourites are shown":"Show only favourites",onClick:d[2]||(d[2]=m=>i.value=!T(i))},[z(Ue,{name:"fade"},{default:q(()=>[T(i)?(b(),y("div",As)):(b(),y("div",Es))]),_:1})],8,Is)):k("",!0),a.value?k("",!0):(b(),y("button",{key:2,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl",title:"Suggest a new link to the collection",onClick:d[3]||(d[3]=m=>r.value=!r.value)},[p("div",{class:Ke(["i-la-plus transform transition",{"rotate-45":r.value}])},null,2)]))])]),p("div",$s,[r.value?k("",!0):(b(),se(Ye,{key:0,name:"fade"},{default:q(()=>[(b(!0),y(Z,null,_e(c.value,(m,S)=>{var M,C,E,B,F,D,w,I;return b(),y("div",{class:"flex w-full sticky",style:te([{top:`${80+S*4}px`,zIndex:S+10},{flex:"1 1 240px"}]),key:m.id,index:S},[(b(),se(g,qe({pos:S,style:{filter:!m.public&&!T(e)?"contrast(70%) blur(2px) opacity(80%)":""},key:m.id},m,{counter:(B=(E=(C=(M=u.value)==null?void 0:M.find(_=>(_==null?void 0:_.id)==(m==null?void 0:m.id)))==null?void 0:C.stats)==null?void 0:E[0])==null?void 0:B.views,stars:(I=(w=(D=(F=u.value)==null?void 0:F.find(_=>(_==null?void 0:_.id)==(m==null?void 0:m.id)))==null?void 0:D.stats)==null?void 0:w[0])==null?void 0:I.stars}),null,16,["pos","style","counter","stars"]))],12,Cs)}),128))]),_:1})),c.value.length==0||r.value?(b(),y("div",Ls,[r.value?k("",!0):(b(),y("div",Os,"We don't know such a web-app yet. ")),z(v,{class:"max-w-140 mx-auto mt-6",onSubmitted:d[4]||(d[4]=m=>r.value=!1)})])):k("",!0)])],64)}}},Ys=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":1711550395000}'),Ns={name:"index.md"},Bs=p("h1",{class:"text-center text-2xl sm-text-3xl font-bold mt-8",style:{padding:"0.1rem 1rem"}},"Online synthesizers and web piano apps",-1),Rs=p("h2",{class:"text-xl sm-text-2xl text-center my-2",style:{padding:"0 1rem"}},"Curated collection of free music creation resources",-1),zs={class:"px-4 text-lg text-center mb-8 max-w-150 mx-auto"},Ds=p("a",{class:"font-bold",href:"https://chromatone.center",target:"_blank",rel:"noopener"}," Chromatone",-1),js=p("a",{class:"font-bold",href:"https://playtronica.com",target:"_blank",rel:"noopener"}," Playtronica",-1),Ws=p("h3",{class:"font-bold text-xl"},"Welcome to the community of web-based musicians!",-1),Zs=p("p",null,[p("a",{target:"_blank",href:"https://chromatone.center/"},[p("img",{src:He,class:"max-w-16 mx-auto"})])],-1);function Fs(t,e,s,n,i,a){const r=Ps,o=pt,l=at;return b(),y("div",null,[Bs,Rs,z(r),p("div",zs,[Ds,K(" is an open source visual music language for education, research and performance. We develop a new universal way to communicate music. "),js,K(" is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Together we share our passion for online music instruments. "),z(o),Ws,Zs,z(l)])])}const Hs=ve(Ns,[["render",Fs]]);export{Ys as __pageData,Hs as default}; diff --git a/assets/isleoftune_index.md.gw8z-0YW.js b/assets/isleoftune_index.md.CagvHWez.js similarity index 76% rename from assets/isleoftune_index.md.gw8z-0YW.js rename to assets/isleoftune_index.md.CagvHWez.js index dc1bf52b..adda99cf 100644 --- a/assets/isleoftune_index.md.gw8z-0YW.js +++ b/assets/isleoftune_index.md.CagvHWez.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as n,R as i,S as o,f as l,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":44,"clicks":15,"public":false,"is_new":false,"stats":[40]},"relativePath":"isleoftune/index.md","filePath":"isleoftune/index.md","lastUpdated":0}'),f={name:"isleoftune/index.md"},b=Object.assign(f,{setup(u){const{params:e,frontmatter:m}=s();return(p,d)=>{const t=a;return c(),r("div",null,[n(t,i(o(l(e))),null,16)])}}});export{y as __pageData,b as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as i,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":44,"clicks":15,"public":false,"is_new":false,"stats":[40]},"relativePath":"isleoftune/index.md","filePath":"isleoftune/index.md","lastUpdated":0}'),f={name:"isleoftune/index.md"},b=Object.assign(f,{setup(u){const{params:e,frontmatter:m}=s();return(p,d)=>{const t=a;return c(),r("div",null,[n(t,i(o(l(e))),null,16)])}}});export{y as __pageData,b as default}; diff --git a/assets/isleoftune_index.md.gw8z-0YW.lean.js b/assets/isleoftune_index.md.CagvHWez.lean.js similarity index 76% rename from assets/isleoftune_index.md.gw8z-0YW.lean.js rename to assets/isleoftune_index.md.CagvHWez.lean.js index dc1bf52b..adda99cf 100644 --- a/assets/isleoftune_index.md.gw8z-0YW.lean.js +++ b/assets/isleoftune_index.md.CagvHWez.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as n,R as i,S as o,f as l,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":44,"clicks":15,"public":false,"is_new":false,"stats":[40]},"relativePath":"isleoftune/index.md","filePath":"isleoftune/index.md","lastUpdated":0}'),f={name:"isleoftune/index.md"},b=Object.assign(f,{setup(u){const{params:e,frontmatter:m}=s();return(p,d)=>{const t=a;return c(),r("div",null,[n(t,i(o(l(e))),null,16)])}}});export{y as __pageData,b as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as i,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":44,"clicks":15,"public":false,"is_new":false,"stats":[40]},"relativePath":"isleoftune/index.md","filePath":"isleoftune/index.md","lastUpdated":0}'),f={name:"isleoftune/index.md"},b=Object.assign(f,{setup(u){const{params:e,frontmatter:m}=s();return(p,d)=>{const t=a;return c(),r("div",null,[n(t,i(o(l(e))),null,16)])}}});export{y as __pageData,b as default}; diff --git a/assets/juno-106_index.md.6Y4xCWCG.js b/assets/juno-106_index.md.C-HewMMo.js similarity index 81% rename from assets/juno-106_index.md.6Y4xCWCG.js rename to assets/juno-106_index.md.C-HewMMo.js index 528da19a..a0f2473c 100644 --- a/assets/juno-106_index.md.6Y4xCWCG.js +++ b/assets/juno-106_index.md.C-HewMMo.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},"relativePath":"juno-106/index.md","filePath":"juno-106/index.md","lastUpdated":0}'),u={name:"juno-106/index.md"},j=Object.assign(u,{setup(d){const{params:e,frontmatter:p}=r();return(m,_)=>{const t=a;return l(),s("div",null,[n(t,o(i(c(e))),null,16)])}}});export{v as __pageData,j as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},"relativePath":"juno-106/index.md","filePath":"juno-106/index.md","lastUpdated":0}'),u={name:"juno-106/index.md"},j=Object.assign(u,{setup(d){const{params:e,frontmatter:p}=r();return(m,_)=>{const t=a;return l(),s("div",null,[n(t,o(i(c(e))),null,16)])}}});export{v as __pageData,j as default}; diff --git a/assets/juno-106_index.md.6Y4xCWCG.lean.js b/assets/juno-106_index.md.C-HewMMo.lean.js similarity index 81% rename from assets/juno-106_index.md.6Y4xCWCG.lean.js rename to assets/juno-106_index.md.C-HewMMo.lean.js index 528da19a..a0f2473c 100644 --- a/assets/juno-106_index.md.6Y4xCWCG.lean.js +++ b/assets/juno-106_index.md.C-HewMMo.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},"relativePath":"juno-106/index.md","filePath":"juno-106/index.md","lastUpdated":0}'),u={name:"juno-106/index.md"},j=Object.assign(u,{setup(d){const{params:e,frontmatter:p}=r();return(m,_)=>{const t=a;return l(),s("div",null,[n(t,o(i(c(e))),null,16)])}}});export{v as __pageData,j as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},"relativePath":"juno-106/index.md","filePath":"juno-106/index.md","lastUpdated":0}'),u={name:"juno-106/index.md"},j=Object.assign(u,{setup(d){const{params:e,frontmatter:p}=r();return(m,_)=>{const t=a;return l(),s("div",null,[n(t,o(i(c(e))),null,16)])}}});export{v as __pageData,j as default}; diff --git a/assets/meet-the-heisenberg_index.md.dH-ODu-r.js b/assets/meet-the-heisenberg_index.md.CGlS22SQ.js similarity index 76% rename from assets/meet-the-heisenberg_index.md.dH-ODu-r.js rename to assets/meet-the-heisenberg_index.md.CGlS22SQ.js index 6c30be42..8a2d8e9c 100644 --- a/assets/meet-the-heisenberg_index.md.dH-ODu-r.js +++ b/assets/meet-the-heisenberg_index.md.CGlS22SQ.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as o,R as i,S as n,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":36,"clicks":255,"public":false,"is_new":false,"stats":[32]},"relativePath":"meet-the-heisenberg/index.md","filePath":"meet-the-heisenberg/index.md","lastUpdated":0}'),d={name:"meet-the-heisenberg/index.md"},w=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=s();return(u,h)=>{const t=a;return l(),r("div",null,[o(t,i(n(c(e))),null,16)])}}});export{v as __pageData,w as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as o,R as i,S as n,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":36,"clicks":255,"public":false,"is_new":false,"stats":[32]},"relativePath":"meet-the-heisenberg/index.md","filePath":"meet-the-heisenberg/index.md","lastUpdated":0}'),d={name:"meet-the-heisenberg/index.md"},w=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=s();return(u,h)=>{const t=a;return l(),r("div",null,[o(t,i(n(c(e))),null,16)])}}});export{v as __pageData,w as default}; diff --git a/assets/meet-the-heisenberg_index.md.dH-ODu-r.lean.js b/assets/meet-the-heisenberg_index.md.CGlS22SQ.lean.js similarity index 76% rename from assets/meet-the-heisenberg_index.md.dH-ODu-r.lean.js rename to assets/meet-the-heisenberg_index.md.CGlS22SQ.lean.js index 6c30be42..8a2d8e9c 100644 --- a/assets/meet-the-heisenberg_index.md.dH-ODu-r.lean.js +++ b/assets/meet-the-heisenberg_index.md.CGlS22SQ.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as o,R as i,S as n,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":36,"clicks":255,"public":false,"is_new":false,"stats":[32]},"relativePath":"meet-the-heisenberg/index.md","filePath":"meet-the-heisenberg/index.md","lastUpdated":0}'),d={name:"meet-the-heisenberg/index.md"},w=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=s();return(u,h)=>{const t=a;return l(),r("div",null,[o(t,i(n(c(e))),null,16)])}}});export{v as __pageData,w as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as o,R as i,S as n,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":36,"clicks":255,"public":false,"is_new":false,"stats":[32]},"relativePath":"meet-the-heisenberg/index.md","filePath":"meet-the-heisenberg/index.md","lastUpdated":0}'),d={name:"meet-the-heisenberg/index.md"},w=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=s();return(u,h)=>{const t=a;return l(),r("div",null,[o(t,i(n(c(e))),null,16)])}}});export{v as __pageData,w as default}; diff --git a/assets/midi-city_index.md.6Hp5JLbP.js b/assets/midi-city_index.md.C_bw8Wmp.js similarity index 91% rename from assets/midi-city_index.md.6Hp5JLbP.js rename to assets/midi-city_index.md.C_bw8Wmp.js index 305d6d3b..5c0abade 100644 --- a/assets/midi-city_index.md.6Hp5JLbP.js +++ b/assets/midi-city_index.md.C_bw8Wmp.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as n,d as s,y as o,R as r,S as l,f as d,g as e,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const u=e("p",null,"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.",-1),m=e("ul",null,[e("li",null,"Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing."),e("li",null,"Groove Monkee: graciously provided the MIDI files that are used for the percussion loops."),e("li",null,"Keenan Brand: created the midi.city logo and various icons used on the site."),e("li",null,"Noun Project: various icons are used via a Pro license."),e("li",null,"Google Material Design: various icons."),e("li",null,"Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API.")],-1),D=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},"relativePath":"midi-city/index.md","filePath":"midi-city/index.md","lastUpdated":0}'),h={name:"midi-city/index.md"},k=Object.assign(h,{setup(p){const{params:i,frontmatter:f}=n();return(y,_)=>{const t=a;return c(),s("div",null,[o(t,r(l(d(i))),null,16),u,m])}}});export{D as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as n,d as s,y as o,R as r,S as l,f as d,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=e("p",null,"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.",-1),m=e("ul",null,[e("li",null,"Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing."),e("li",null,"Groove Monkee: graciously provided the MIDI files that are used for the percussion loops."),e("li",null,"Keenan Brand: created the midi.city logo and various icons used on the site."),e("li",null,"Noun Project: various icons are used via a Pro license."),e("li",null,"Google Material Design: various icons."),e("li",null,"Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API.")],-1),D=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},"relativePath":"midi-city/index.md","filePath":"midi-city/index.md","lastUpdated":0}'),h={name:"midi-city/index.md"},k=Object.assign(h,{setup(p){const{params:i,frontmatter:f}=n();return(y,_)=>{const t=a;return c(),s("div",null,[o(t,r(l(d(i))),null,16),u,m])}}});export{D as __pageData,k as default}; diff --git a/assets/midi-city_index.md.6Hp5JLbP.lean.js b/assets/midi-city_index.md.C_bw8Wmp.lean.js similarity index 91% rename from assets/midi-city_index.md.6Hp5JLbP.lean.js rename to assets/midi-city_index.md.C_bw8Wmp.lean.js index 305d6d3b..5c0abade 100644 --- a/assets/midi-city_index.md.6Hp5JLbP.lean.js +++ b/assets/midi-city_index.md.C_bw8Wmp.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as n,d as s,y as o,R as r,S as l,f as d,g as e,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const u=e("p",null,"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.",-1),m=e("ul",null,[e("li",null,"Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing."),e("li",null,"Groove Monkee: graciously provided the MIDI files that are used for the percussion loops."),e("li",null,"Keenan Brand: created the midi.city logo and various icons used on the site."),e("li",null,"Noun Project: various icons are used via a Pro license."),e("li",null,"Google Material Design: various icons."),e("li",null,"Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API.")],-1),D=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},"relativePath":"midi-city/index.md","filePath":"midi-city/index.md","lastUpdated":0}'),h={name:"midi-city/index.md"},k=Object.assign(h,{setup(p){const{params:i,frontmatter:f}=n();return(y,_)=>{const t=a;return c(),s("div",null,[o(t,r(l(d(i))),null,16),u,m])}}});export{D as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as n,d as s,y as o,R as r,S as l,f as d,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=e("p",null,"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.",-1),m=e("ul",null,[e("li",null,"Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing."),e("li",null,"Groove Monkee: graciously provided the MIDI files that are used for the percussion loops."),e("li",null,"Keenan Brand: created the midi.city logo and various icons used on the site."),e("li",null,"Noun Project: various icons are used via a Pro license."),e("li",null,"Google Material Design: various icons."),e("li",null,"Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API.")],-1),D=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},"relativePath":"midi-city/index.md","filePath":"midi-city/index.md","lastUpdated":0}'),h={name:"midi-city/index.md"},k=Object.assign(h,{setup(p){const{params:i,frontmatter:f}=n();return(y,_)=>{const t=a;return c(),s("div",null,[o(t,r(l(d(i))),null,16),u,m])}}});export{D as __pageData,k as default}; diff --git a/assets/midi-driven-web-audio_index.md._VpK9rcC.js b/assets/midi-driven-web-audio_index.md.qU5pFBbC.js similarity index 82% rename from assets/midi-driven-web-audio_index.md._VpK9rcC.js rename to assets/midi-driven-web-audio_index.md.qU5pFBbC.js index 7fb7adac..5e35520f 100644 --- a/assets/midi-driven-web-audio_index.md._VpK9rcC.js +++ b/assets/midi-driven-web-audio_index.md.qU5pFBbC.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s as i,d as s,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":34,"clicks":127,"public":false,"is_new":false,"stats":[30]},"relativePath":"midi-driven-web-audio/index.md","filePath":"midi-driven-web-audio/index.md","lastUpdated":0}'),c={name:"midi-driven-web-audio/index.md"},w=Object.assign(c,{setup(m){const{params:e,frontmatter:p}=i();return(u,_)=>{const a=t;return l(),s("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,w as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as i,d as s,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":34,"clicks":127,"public":false,"is_new":false,"stats":[30]},"relativePath":"midi-driven-web-audio/index.md","filePath":"midi-driven-web-audio/index.md","lastUpdated":0}'),c={name:"midi-driven-web-audio/index.md"},w=Object.assign(c,{setup(m){const{params:e,frontmatter:p}=i();return(u,_)=>{const a=t;return l(),s("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,w as default}; diff --git a/assets/midi-driven-web-audio_index.md._VpK9rcC.lean.js b/assets/midi-driven-web-audio_index.md.qU5pFBbC.lean.js similarity index 82% rename from assets/midi-driven-web-audio_index.md._VpK9rcC.lean.js rename to assets/midi-driven-web-audio_index.md.qU5pFBbC.lean.js index 7fb7adac..5e35520f 100644 --- a/assets/midi-driven-web-audio_index.md._VpK9rcC.lean.js +++ b/assets/midi-driven-web-audio_index.md.qU5pFBbC.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s as i,d as s,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":34,"clicks":127,"public":false,"is_new":false,"stats":[30]},"relativePath":"midi-driven-web-audio/index.md","filePath":"midi-driven-web-audio/index.md","lastUpdated":0}'),c={name:"midi-driven-web-audio/index.md"},w=Object.assign(c,{setup(m){const{params:e,frontmatter:p}=i();return(u,_)=>{const a=t;return l(),s("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,w as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as i,d as s,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":34,"clicks":127,"public":false,"is_new":false,"stats":[30]},"relativePath":"midi-driven-web-audio/index.md","filePath":"midi-driven-web-audio/index.md","lastUpdated":0}'),c={name:"midi-driven-web-audio/index.md"},w=Object.assign(c,{setup(m){const{params:e,frontmatter:p}=i();return(u,_)=>{const a=t;return l(),s("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,w as default}; diff --git a/assets/mod-synth_index.md.GRzJcX_z.js b/assets/mod-synth_index.md.Pqf1q9QQ.js similarity index 75% rename from assets/mod-synth_index.md.GRzJcX_z.js rename to assets/mod-synth_index.md.Pqf1q9QQ.js index 6077e385..80e4f027 100644 --- a/assets/mod-synth_index.md.GRzJcX_z.js +++ b/assets/mod-synth_index.md.Pqf1q9QQ.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as r,R as o,S as i,f as c,b as d}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":40,"clicks":146,"public":false,"is_new":false,"stats":[36]},"relativePath":"mod-synth/index.md","filePath":"mod-synth/index.md","lastUpdated":0}'),l={name:"mod-synth/index.md"},b=Object.assign(l,{setup(m){const{params:t,frontmatter:p}=s();return(_,u)=>{const e=a;return d(),n("div",null,[r(e,o(i(c(t))),null,16)])}}});export{v as __pageData,b as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as o,S as i,f as c,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":40,"clicks":146,"public":false,"is_new":false,"stats":[36]},"relativePath":"mod-synth/index.md","filePath":"mod-synth/index.md","lastUpdated":0}'),l={name:"mod-synth/index.md"},b=Object.assign(l,{setup(m){const{params:t,frontmatter:p}=s();return(_,u)=>{const e=a;return d(),n("div",null,[r(e,o(i(c(t))),null,16)])}}});export{v as __pageData,b as default}; diff --git a/assets/mod-synth_index.md.GRzJcX_z.lean.js b/assets/mod-synth_index.md.Pqf1q9QQ.lean.js similarity index 75% rename from assets/mod-synth_index.md.GRzJcX_z.lean.js rename to assets/mod-synth_index.md.Pqf1q9QQ.lean.js index 6077e385..80e4f027 100644 --- a/assets/mod-synth_index.md.GRzJcX_z.lean.js +++ b/assets/mod-synth_index.md.Pqf1q9QQ.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as r,R as o,S as i,f as c,b as d}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":40,"clicks":146,"public":false,"is_new":false,"stats":[36]},"relativePath":"mod-synth/index.md","filePath":"mod-synth/index.md","lastUpdated":0}'),l={name:"mod-synth/index.md"},b=Object.assign(l,{setup(m){const{params:t,frontmatter:p}=s();return(_,u)=>{const e=a;return d(),n("div",null,[r(e,o(i(c(t))),null,16)])}}});export{v as __pageData,b as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as o,S as i,f as c,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":40,"clicks":146,"public":false,"is_new":false,"stats":[36]},"relativePath":"mod-synth/index.md","filePath":"mod-synth/index.md","lastUpdated":0}'),l={name:"mod-synth/index.md"},b=Object.assign(l,{setup(m){const{params:t,frontmatter:p}=s();return(_,u)=>{const e=a;return d(),n("div",null,[r(e,o(i(c(t))),null,16)])}}});export{v as __pageData,b as default}; diff --git a/assets/multiplayer-piano_index.md.HrDjh3Ou.js b/assets/multiplayer-piano_index.md.Drty2YzX.js similarity index 84% rename from assets/multiplayer-piano_index.md.HrDjh3Ou.js rename to assets/multiplayer-piano_index.md.Drty2YzX.js index 6a6cf983..dc6c4f1a 100644 --- a/assets/multiplayer-piano_index.md.HrDjh3Ou.js +++ b/assets/multiplayer-piano_index.md.Drty2YzX.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as i,y as n,R as o,S as l,f as s,b as p}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":33,"clicks":4,"public":false,"is_new":false,"stats":[29]},"relativePath":"multiplayer-piano/index.md","filePath":"multiplayer-piano/index.md","lastUpdated":0}'),c={name:"multiplayer-piano/index.md"},P=Object.assign(c,{setup(m){const{params:a,frontmatter:u}=r();return(d,_)=>{const t=e;return p(),i("div",null,[n(t,o(l(s(a))),null,16)])}}});export{g as __pageData,P as default}; +import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as i,y as n,R as o,S as l,f as s,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":33,"clicks":4,"public":false,"is_new":false,"stats":[29]},"relativePath":"multiplayer-piano/index.md","filePath":"multiplayer-piano/index.md","lastUpdated":0}'),c={name:"multiplayer-piano/index.md"},P=Object.assign(c,{setup(m){const{params:a,frontmatter:u}=r();return(d,_)=>{const t=e;return p(),i("div",null,[n(t,o(l(s(a))),null,16)])}}});export{g as __pageData,P as default}; diff --git a/assets/multiplayer-piano_index.md.HrDjh3Ou.lean.js b/assets/multiplayer-piano_index.md.Drty2YzX.lean.js similarity index 84% rename from assets/multiplayer-piano_index.md.HrDjh3Ou.lean.js rename to assets/multiplayer-piano_index.md.Drty2YzX.lean.js index 6a6cf983..dc6c4f1a 100644 --- a/assets/multiplayer-piano_index.md.HrDjh3Ou.lean.js +++ b/assets/multiplayer-piano_index.md.Drty2YzX.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as i,y as n,R as o,S as l,f as s,b as p}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":33,"clicks":4,"public":false,"is_new":false,"stats":[29]},"relativePath":"multiplayer-piano/index.md","filePath":"multiplayer-piano/index.md","lastUpdated":0}'),c={name:"multiplayer-piano/index.md"},P=Object.assign(c,{setup(m){const{params:a,frontmatter:u}=r();return(d,_)=>{const t=e;return p(),i("div",null,[n(t,o(l(s(a))),null,16)])}}});export{g as __pageData,P as default}; +import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as i,y as n,R as o,S as l,f as s,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":33,"clicks":4,"public":false,"is_new":false,"stats":[29]},"relativePath":"multiplayer-piano/index.md","filePath":"multiplayer-piano/index.md","lastUpdated":0}'),c={name:"multiplayer-piano/index.md"},P=Object.assign(c,{setup(m){const{params:a,frontmatter:u}=r();return(d,_)=>{const t=e;return p(),i("div",null,[n(t,o(l(s(a))),null,16)])}}});export{g as __pageData,P as default}; diff --git a/assets/muted-io_index.md.Lsfx_ACP.js b/assets/muted-io_index.md.7HkqgXgG.js similarity index 75% rename from assets/muted-io_index.md.Lsfx_ACP.js rename to assets/muted-io_index.md.7HkqgXgG.js index 69d450d0..31bb3069 100644 --- a/assets/muted-io_index.md.Lsfx_ACP.js +++ b/assets/muted-io_index.md.7HkqgXgG.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as i,y as r,R as o,S as n,f as c,b as d}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},"relativePath":"muted-io/index.md","filePath":"muted-io/index.md","lastUpdated":0}'),l={name:"muted-io/index.md"},k=Object.assign(l,{setup(m){const{params:t,frontmatter:u}=s();return(p,_)=>{const e=a;return d(),i("div",null,[r(e,o(n(c(t))),null,16)])}}});export{v as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as i,y as r,R as o,S as n,f as c,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},"relativePath":"muted-io/index.md","filePath":"muted-io/index.md","lastUpdated":0}'),l={name:"muted-io/index.md"},k=Object.assign(l,{setup(m){const{params:t,frontmatter:u}=s();return(p,_)=>{const e=a;return d(),i("div",null,[r(e,o(n(c(t))),null,16)])}}});export{v as __pageData,k as default}; diff --git a/assets/muted-io_index.md.Lsfx_ACP.lean.js b/assets/muted-io_index.md.7HkqgXgG.lean.js similarity index 75% rename from assets/muted-io_index.md.Lsfx_ACP.lean.js rename to assets/muted-io_index.md.7HkqgXgG.lean.js index 69d450d0..31bb3069 100644 --- a/assets/muted-io_index.md.Lsfx_ACP.lean.js +++ b/assets/muted-io_index.md.7HkqgXgG.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as i,y as r,R as o,S as n,f as c,b as d}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},"relativePath":"muted-io/index.md","filePath":"muted-io/index.md","lastUpdated":0}'),l={name:"muted-io/index.md"},k=Object.assign(l,{setup(m){const{params:t,frontmatter:u}=s();return(p,_)=>{const e=a;return d(),i("div",null,[r(e,o(n(c(t))),null,16)])}}});export{v as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as i,y as r,R as o,S as n,f as c,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},"relativePath":"muted-io/index.md","filePath":"muted-io/index.md","lastUpdated":0}'),l={name:"muted-io/index.md"},k=Object.assign(l,{setup(m){const{params:t,frontmatter:u}=s();return(p,_)=>{const e=a;return d(),i("div",null,[r(e,o(n(c(t))),null,16)])}}});export{v as __pageData,k as default}; diff --git a/assets/note-sculptor_index.md.pNXoUhje.js b/assets/note-sculptor_index.md.DjHcDrJl.js similarity index 74% rename from assets/note-sculptor_index.md.pNXoUhje.js rename to assets/note-sculptor_index.md.DjHcDrJl.js index 0221746f..0c706791 100644 --- a/assets/note-sculptor_index.md.pNXoUhje.js +++ b/assets/note-sculptor_index.md.DjHcDrJl.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as o,R as n,S as l,f as c,b as i}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":42,"clicks":129,"public":false,"is_new":false,"stats":[38]},"relativePath":"note-sculptor/index.md","filePath":"note-sculptor/index.md","lastUpdated":0}'),p={name:"note-sculptor/index.md"},k=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,_)=>{const e=a;return i(),r("div",null,[o(e,n(l(c(t))),null,16)])}}});export{y as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as o,R as n,S as l,f as c,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":42,"clicks":129,"public":false,"is_new":false,"stats":[38]},"relativePath":"note-sculptor/index.md","filePath":"note-sculptor/index.md","lastUpdated":0}'),p={name:"note-sculptor/index.md"},k=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,_)=>{const e=a;return i(),r("div",null,[o(e,n(l(c(t))),null,16)])}}});export{y as __pageData,k as default}; diff --git a/assets/note-sculptor_index.md.pNXoUhje.lean.js b/assets/note-sculptor_index.md.DjHcDrJl.lean.js similarity index 74% rename from assets/note-sculptor_index.md.pNXoUhje.lean.js rename to assets/note-sculptor_index.md.DjHcDrJl.lean.js index 0221746f..0c706791 100644 --- a/assets/note-sculptor_index.md.pNXoUhje.lean.js +++ b/assets/note-sculptor_index.md.DjHcDrJl.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as o,R as n,S as l,f as c,b as i}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":42,"clicks":129,"public":false,"is_new":false,"stats":[38]},"relativePath":"note-sculptor/index.md","filePath":"note-sculptor/index.md","lastUpdated":0}'),p={name:"note-sculptor/index.md"},k=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,_)=>{const e=a;return i(),r("div",null,[o(e,n(l(c(t))),null,16)])}}});export{y as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as o,R as n,S as l,f as c,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":42,"clicks":129,"public":false,"is_new":false,"stats":[38]},"relativePath":"note-sculptor/index.md","filePath":"note-sculptor/index.md","lastUpdated":0}'),p={name:"note-sculptor/index.md"},k=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,_)=>{const e=a;return i(),r("div",null,[o(e,n(l(c(t))),null,16)])}}});export{y as __pageData,k as default}; diff --git a/assets/nv-1_index.md.4ETA3AFj.js b/assets/nv-1_index.md.AxF6N6eW.js similarity index 81% rename from assets/nv-1_index.md.4ETA3AFj.js rename to assets/nv-1_index.md.AxF6N6eW.js index 5d0c7583..d433da4d 100644 --- a/assets/nv-1_index.md.4ETA3AFj.js +++ b/assets/nv-1_index.md.AxF6N6eW.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":24,"clicks":495,"public":false,"is_new":false,"stats":[20]},"relativePath":"nv-1/index.md","filePath":"nv-1/index.md","lastUpdated":0}'),p={name:"nv-1/index.md"},b=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=r();return(u,_)=>{const a=e;return l(),s("div",null,[n(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; +import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":24,"clicks":495,"public":false,"is_new":false,"stats":[20]},"relativePath":"nv-1/index.md","filePath":"nv-1/index.md","lastUpdated":0}'),p={name:"nv-1/index.md"},b=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=r();return(u,_)=>{const a=e;return l(),s("div",null,[n(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; diff --git a/assets/nv-1_index.md.4ETA3AFj.lean.js b/assets/nv-1_index.md.AxF6N6eW.lean.js similarity index 81% rename from assets/nv-1_index.md.4ETA3AFj.lean.js rename to assets/nv-1_index.md.AxF6N6eW.lean.js index 5d0c7583..d433da4d 100644 --- a/assets/nv-1_index.md.4ETA3AFj.lean.js +++ b/assets/nv-1_index.md.AxF6N6eW.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":24,"clicks":495,"public":false,"is_new":false,"stats":[20]},"relativePath":"nv-1/index.md","filePath":"nv-1/index.md","lastUpdated":0}'),p={name:"nv-1/index.md"},b=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=r();return(u,_)=>{const a=e;return l(),s("div",null,[n(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; +import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":24,"clicks":495,"public":false,"is_new":false,"stats":[20]},"relativePath":"nv-1/index.md","filePath":"nv-1/index.md","lastUpdated":0}'),p={name:"nv-1/index.md"},b=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=r();return(u,_)=>{const a=e;return l(),s("div",null,[n(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; diff --git a/assets/olif-sy-1-k_index.md.dyYwXcMw.js b/assets/olif-sy-1-k_index.md.TAvvbtnv.js similarity index 81% rename from assets/olif-sy-1-k_index.md.dyYwXcMw.js rename to assets/olif-sy-1-k_index.md.TAvvbtnv.js index 2b85e6fb..16b2973a 100644 --- a/assets/olif-sy-1-k_index.md.dyYwXcMw.js +++ b/assets/olif-sy-1-k_index.md.TAvvbtnv.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as i,R as l,S as n,f as o,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":41,"clicks":145,"public":false,"is_new":false,"stats":[37]},"relativePath":"olif-sy-1-k/index.md","filePath":"olif-sy-1-k/index.md","lastUpdated":0}'),p={name:"olif-sy-1-k/index.md"},g=Object.assign(p,{setup(f){const{params:e,frontmatter:d}=r();return(m,u)=>{const t=a;return c(),s("div",null,[i(t,l(n(o(e))),null,16)])}}});export{v as __pageData,g as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as i,R as l,S as n,f as o,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":41,"clicks":145,"public":false,"is_new":false,"stats":[37]},"relativePath":"olif-sy-1-k/index.md","filePath":"olif-sy-1-k/index.md","lastUpdated":0}'),p={name:"olif-sy-1-k/index.md"},g=Object.assign(p,{setup(f){const{params:e,frontmatter:d}=r();return(m,u)=>{const t=a;return c(),s("div",null,[i(t,l(n(o(e))),null,16)])}}});export{v as __pageData,g as default}; diff --git a/assets/olif-sy-1-k_index.md.dyYwXcMw.lean.js b/assets/olif-sy-1-k_index.md.TAvvbtnv.lean.js similarity index 81% rename from assets/olif-sy-1-k_index.md.dyYwXcMw.lean.js rename to assets/olif-sy-1-k_index.md.TAvvbtnv.lean.js index 2b85e6fb..16b2973a 100644 --- a/assets/olif-sy-1-k_index.md.dyYwXcMw.lean.js +++ b/assets/olif-sy-1-k_index.md.TAvvbtnv.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as i,R as l,S as n,f as o,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":41,"clicks":145,"public":false,"is_new":false,"stats":[37]},"relativePath":"olif-sy-1-k/index.md","filePath":"olif-sy-1-k/index.md","lastUpdated":0}'),p={name:"olif-sy-1-k/index.md"},g=Object.assign(p,{setup(f){const{params:e,frontmatter:d}=r();return(m,u)=>{const t=a;return c(),s("div",null,[i(t,l(n(o(e))),null,16)])}}});export{v as __pageData,g as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as i,R as l,S as n,f as o,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":41,"clicks":145,"public":false,"is_new":false,"stats":[37]},"relativePath":"olif-sy-1-k/index.md","filePath":"olif-sy-1-k/index.md","lastUpdated":0}'),p={name:"olif-sy-1-k/index.md"},g=Object.assign(p,{setup(f){const{params:e,frontmatter:d}=r();return(m,u)=>{const t=a;return c(),s("div",null,[i(t,l(n(o(e))),null,16)])}}});export{v as __pageData,g as default}; diff --git a/assets/omni_index.md.nq2BAt52.js b/assets/omni_index.md.BPzyxoOJ.js similarity index 74% rename from assets/omni_index.md.nq2BAt52.js rename to assets/omni_index.md.BPzyxoOJ.js index 056c57c2..400bf285 100644 --- a/assets/omni_index.md.nq2BAt52.js +++ b/assets/omni_index.md.BPzyxoOJ.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as n,R as i,S as o,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":28,"clicks":210,"public":false,"is_new":false,"stats":[24]},"relativePath":"omni/index.md","filePath":"omni/index.md","lastUpdated":0}'),m={name:"omni/index.md"},b=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=s();return(f,u)=>{const t=a;return l(),r("div",null,[n(t,i(o(c(e))),null,16)])}}});export{y as __pageData,b as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as i,S as o,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":28,"clicks":210,"public":false,"is_new":false,"stats":[24]},"relativePath":"omni/index.md","filePath":"omni/index.md","lastUpdated":0}'),m={name:"omni/index.md"},b=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=s();return(f,u)=>{const t=a;return l(),r("div",null,[n(t,i(o(c(e))),null,16)])}}});export{y as __pageData,b as default}; diff --git a/assets/omni_index.md.nq2BAt52.lean.js b/assets/omni_index.md.BPzyxoOJ.lean.js similarity index 74% rename from assets/omni_index.md.nq2BAt52.lean.js rename to assets/omni_index.md.BPzyxoOJ.lean.js index 056c57c2..400bf285 100644 --- a/assets/omni_index.md.nq2BAt52.lean.js +++ b/assets/omni_index.md.BPzyxoOJ.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as n,R as i,S as o,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":28,"clicks":210,"public":false,"is_new":false,"stats":[24]},"relativePath":"omni/index.md","filePath":"omni/index.md","lastUpdated":0}'),m={name:"omni/index.md"},b=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=s();return(f,u)=>{const t=a;return l(),r("div",null,[n(t,i(o(c(e))),null,16)])}}});export{y as __pageData,b as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as i,S as o,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":28,"clicks":210,"public":false,"is_new":false,"stats":[24]},"relativePath":"omni/index.md","filePath":"omni/index.md","lastUpdated":0}'),m={name:"omni/index.md"},b=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=s();return(f,u)=>{const t=a;return l(),r("div",null,[n(t,i(o(c(e))),null,16)])}}});export{y as __pageData,b as default}; diff --git a/assets/online-sequencer_index.md.9EhdgJZ8.js b/assets/online-sequencer_index.md.KBCOH-xk.js similarity index 97% rename from assets/online-sequencer_index.md.9EhdgJZ8.js rename to assets/online-sequencer_index.md.KBCOH-xk.js index cf6077ff..edd70877 100644 --- a/assets/online-sequencer_index.md.9EhdgJZ8.js +++ b/assets/online-sequencer_index.md.KBCOH-xk.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as i,R as o,S as r,f as l,B as u,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const d=u('

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.

Upon 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.

History ​

Online Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.

Beginning 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.

In 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.

The 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.

Starting 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.

In 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.

Currently, the 10-Year Anniversary Contest is being held.

Features ​

Within the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.

Basic features ​

UI features include:

  • Tempo (10-999 BPM)
  • Measure count or Time count (MM: SS.ssss)
  • Time signature (2/4, 3/4, 4/4, 5/4)
  • Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)
  • Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)
  • Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)
  • Title input
  • Draw, select, and erase
  • Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)
  • Select all, Cut, Copy, and Paste
  • Zoom options
  • Export options
  • Help
  • Fullscreen
  • Tooltips

Advanced features ​

Users 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.

OS 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.

Browser and device support ​

Online 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.

Other 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.

The 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.

',22),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":26,"clicks":320,"public":false,"is_new":false,"stats":[22]},"relativePath":"online-sequencer/index.md","filePath":"online-sequencer/index.md","lastUpdated":0}'),h={name:"online-sequencer/index.md"},_=Object.assign(h,{setup(p){const{params:e,frontmatter:m}=s();return(f,b)=>{const t=a;return c(),n("div",null,[i(t,o(r(l(e))),null,16),d])}}});export{y as __pageData,_ as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as i,R as o,S as r,f as l,B as u,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const d=u('

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.

Upon 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.

History ​

Online Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.

Beginning 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.

In 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.

The 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.

Starting 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.

In 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.

Currently, the 10-Year Anniversary Contest is being held.

Features ​

Within the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.

Basic features ​

UI features include:

  • Tempo (10-999 BPM)
  • Measure count or Time count (MM: SS.ssss)
  • Time signature (2/4, 3/4, 4/4, 5/4)
  • Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)
  • Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)
  • Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)
  • Title input
  • Draw, select, and erase
  • Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)
  • Select all, Cut, Copy, and Paste
  • Zoom options
  • Export options
  • Help
  • Fullscreen
  • Tooltips

Advanced features ​

Users 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.

OS 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.

Browser and device support ​

Online 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.

Other 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.

The 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.

',22),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":26,"clicks":320,"public":false,"is_new":false,"stats":[22]},"relativePath":"online-sequencer/index.md","filePath":"online-sequencer/index.md","lastUpdated":0}'),h={name:"online-sequencer/index.md"},_=Object.assign(h,{setup(p){const{params:e,frontmatter:m}=s();return(f,b)=>{const t=a;return c(),n("div",null,[i(t,o(r(l(e))),null,16),d])}}});export{y as __pageData,_ as default}; diff --git a/assets/online-sequencer_index.md.9EhdgJZ8.lean.js b/assets/online-sequencer_index.md.KBCOH-xk.lean.js similarity index 82% rename from assets/online-sequencer_index.md.9EhdgJZ8.lean.js rename to assets/online-sequencer_index.md.KBCOH-xk.lean.js index 00ba7b3a..05f8a76a 100644 --- a/assets/online-sequencer_index.md.9EhdgJZ8.lean.js +++ b/assets/online-sequencer_index.md.KBCOH-xk.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as i,R as o,S as r,f as l,B as u,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const d=u("",22),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":26,"clicks":320,"public":false,"is_new":false,"stats":[22]},"relativePath":"online-sequencer/index.md","filePath":"online-sequencer/index.md","lastUpdated":0}'),h={name:"online-sequencer/index.md"},_=Object.assign(h,{setup(p){const{params:e,frontmatter:m}=s();return(f,b)=>{const t=a;return c(),n("div",null,[i(t,o(r(l(e))),null,16),d])}}});export{y as __pageData,_ as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as i,R as o,S as r,f as l,B as u,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const d=u("",22),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":26,"clicks":320,"public":false,"is_new":false,"stats":[22]},"relativePath":"online-sequencer/index.md","filePath":"online-sequencer/index.md","lastUpdated":0}'),h={name:"online-sequencer/index.md"},_=Object.assign(h,{setup(p){const{params:e,frontmatter:m}=s();return(f,b)=>{const t=a;return c(),n("div",null,[i(t,o(r(l(e))),null,16),d])}}});export{y as __pageData,_ as default}; diff --git a/assets/pixel-synth_index.md.WFKUMjSj.js b/assets/pixel-synth_index.md.CIxj1_zW.js similarity index 75% rename from assets/pixel-synth_index.md.WFKUMjSj.js rename to assets/pixel-synth_index.md.CIxj1_zW.js index a227c536..4cdd9f48 100644 --- a/assets/pixel-synth_index.md.WFKUMjSj.js +++ b/assets/pixel-synth_index.md.CIxj1_zW.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as i,R as n,S as l,f as c,b as o}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":32,"clicks":217,"public":false,"is_new":false,"stats":[28]},"relativePath":"pixel-synth/index.md","filePath":"pixel-synth/index.md","lastUpdated":0}'),p={name:"pixel-synth/index.md"},k=Object.assign(p,{setup(_){const{params:t,frontmatter:d}=s();return(m,u)=>{const e=a;return o(),r("div",null,[i(e,n(l(c(t))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as n,S as l,f as c,b as o}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":32,"clicks":217,"public":false,"is_new":false,"stats":[28]},"relativePath":"pixel-synth/index.md","filePath":"pixel-synth/index.md","lastUpdated":0}'),p={name:"pixel-synth/index.md"},k=Object.assign(p,{setup(_){const{params:t,frontmatter:d}=s();return(m,u)=>{const e=a;return o(),r("div",null,[i(e,n(l(c(t))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/pixel-synth_index.md.WFKUMjSj.lean.js b/assets/pixel-synth_index.md.CIxj1_zW.lean.js similarity index 75% rename from assets/pixel-synth_index.md.WFKUMjSj.lean.js rename to assets/pixel-synth_index.md.CIxj1_zW.lean.js index a227c536..4cdd9f48 100644 --- a/assets/pixel-synth_index.md.WFKUMjSj.lean.js +++ b/assets/pixel-synth_index.md.CIxj1_zW.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as i,R as n,S as l,f as c,b as o}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":32,"clicks":217,"public":false,"is_new":false,"stats":[28]},"relativePath":"pixel-synth/index.md","filePath":"pixel-synth/index.md","lastUpdated":0}'),p={name:"pixel-synth/index.md"},k=Object.assign(p,{setup(_){const{params:t,frontmatter:d}=s();return(m,u)=>{const e=a;return o(),r("div",null,[i(e,n(l(c(t))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as n,S as l,f as c,b as o}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":32,"clicks":217,"public":false,"is_new":false,"stats":[28]},"relativePath":"pixel-synth/index.md","filePath":"pixel-synth/index.md","lastUpdated":0}'),p={name:"pixel-synth/index.md"},k=Object.assign(p,{setup(_){const{params:t,frontmatter:d}=s();return(m,u)=>{const e=a;return o(),r("div",null,[i(e,n(l(c(t))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/roland50_index.md.9Kxg99A7.js b/assets/roland50_index.md.Mconyk1H.js similarity index 82% rename from assets/roland50_index.md.9Kxg99A7.js rename to assets/roland50_index.md.Mconyk1H.js index df5d4843..1f1c7f40 100644 --- a/assets/roland50_index.md.9Kxg99A7.js +++ b/assets/roland50_index.md.Mconyk1H.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as n,R as o,S as i,f as d,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const w=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":18,"clicks":17,"public":false,"is_new":false,"stats":[16]},"relativePath":"roland50/index.md","filePath":"roland50/index.md","lastUpdated":0}`),c={name:"roland50/index.md"},S=Object.assign(c,{setup(u){const{params:e,frontmatter:m}=s();return(p,h)=>{const a=t;return l(),r("div",null,[n(a,o(i(d(e))),null,16)])}}});export{w as __pageData,S as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as o,S as i,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":18,"clicks":17,"public":false,"is_new":false,"stats":[16]},"relativePath":"roland50/index.md","filePath":"roland50/index.md","lastUpdated":0}`),c={name:"roland50/index.md"},S=Object.assign(c,{setup(u){const{params:e,frontmatter:m}=s();return(p,h)=>{const a=t;return l(),r("div",null,[n(a,o(i(d(e))),null,16)])}}});export{w as __pageData,S as default}; diff --git a/assets/roland50_index.md.9Kxg99A7.lean.js b/assets/roland50_index.md.Mconyk1H.lean.js similarity index 82% rename from assets/roland50_index.md.9Kxg99A7.lean.js rename to assets/roland50_index.md.Mconyk1H.lean.js index df5d4843..1f1c7f40 100644 --- a/assets/roland50_index.md.9Kxg99A7.lean.js +++ b/assets/roland50_index.md.Mconyk1H.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as n,R as o,S as i,f as d,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const w=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":18,"clicks":17,"public":false,"is_new":false,"stats":[16]},"relativePath":"roland50/index.md","filePath":"roland50/index.md","lastUpdated":0}`),c={name:"roland50/index.md"},S=Object.assign(c,{setup(u){const{params:e,frontmatter:m}=s();return(p,h)=>{const a=t;return l(),r("div",null,[n(a,o(i(d(e))),null,16)])}}});export{w as __pageData,S as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as o,S as i,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":18,"clicks":17,"public":false,"is_new":false,"stats":[16]},"relativePath":"roland50/index.md","filePath":"roland50/index.md","lastUpdated":0}`),c={name:"roland50/index.md"},S=Object.assign(c,{setup(u){const{params:e,frontmatter:m}=s();return(p,h)=>{const a=t;return l(),r("div",null,[n(a,o(i(d(e))),null,16)])}}});export{w as __pageData,S as default}; diff --git a/assets/sample-stich_index.md.4WwbV1RN.js b/assets/sample-stich_index.md.Bijh8Pq9.js similarity index 76% rename from assets/sample-stich_index.md.4WwbV1RN.js rename to assets/sample-stich_index.md.Bijh8Pq9.js index b4c13270..015ba0e7 100644 --- a/assets/sample-stich_index.md.4WwbV1RN.js +++ b/assets/sample-stich_index.md.Bijh8Pq9.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as i,R as c,S as l,f as n,b as o}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":35,"clicks":164,"public":false,"is_new":false,"stats":[31]},"relativePath":"sample-stich/index.md","filePath":"sample-stich/index.md","lastUpdated":0}'),m={name:"sample-stich/index.md"},v=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=s();return(_,u)=>{const e=t;return o(),r("div",null,[i(e,c(l(n(a))),null,16)])}}});export{k as __pageData,v as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as c,S as l,f as n,b as o}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":35,"clicks":164,"public":false,"is_new":false,"stats":[31]},"relativePath":"sample-stich/index.md","filePath":"sample-stich/index.md","lastUpdated":0}'),m={name:"sample-stich/index.md"},v=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=s();return(_,u)=>{const e=t;return o(),r("div",null,[i(e,c(l(n(a))),null,16)])}}});export{k as __pageData,v as default}; diff --git a/assets/sample-stich_index.md.4WwbV1RN.lean.js b/assets/sample-stich_index.md.Bijh8Pq9.lean.js similarity index 76% rename from assets/sample-stich_index.md.4WwbV1RN.lean.js rename to assets/sample-stich_index.md.Bijh8Pq9.lean.js index b4c13270..015ba0e7 100644 --- a/assets/sample-stich_index.md.4WwbV1RN.lean.js +++ b/assets/sample-stich_index.md.Bijh8Pq9.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as i,R as c,S as l,f as n,b as o}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":35,"clicks":164,"public":false,"is_new":false,"stats":[31]},"relativePath":"sample-stich/index.md","filePath":"sample-stich/index.md","lastUpdated":0}'),m={name:"sample-stich/index.md"},v=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=s();return(_,u)=>{const e=t;return o(),r("div",null,[i(e,c(l(n(a))),null,16)])}}});export{k as __pageData,v as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as c,S as l,f as n,b as o}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":35,"clicks":164,"public":false,"is_new":false,"stats":[31]},"relativePath":"sample-stich/index.md","filePath":"sample-stich/index.md","lastUpdated":0}'),m={name:"sample-stich/index.md"},v=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=s();return(_,u)=>{const e=t;return o(),r("div",null,[i(e,c(l(n(a))),null,16)])}}});export{k as __pageData,v as default}; diff --git a/assets/sound-box_index.md.HGynRcEJ.js b/assets/sound-box_index.md.vcTJLzSz.js similarity index 83% rename from assets/sound-box_index.md.HGynRcEJ.js rename to assets/sound-box_index.md.vcTJLzSz.js index b51115da..67cfdfd5 100644 --- a/assets/sound-box_index.md.HGynRcEJ.js +++ b/assets/sound-box_index.md.vcTJLzSz.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as o,d as r,y as n,R as i,S as c,f as l,g as t,b as d}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const u=t("p",null,[t("a",{href:"https://github.com/mbitsnbites/soundbox",target:"_blank",rel:"noreferrer"},"https://github.com/mbitsnbites/soundbox")],-1),v=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":27,"clicks":209,"public":false,"is_new":false,"stats":[23]},"relativePath":"sound-box/index.md","filePath":"sound-box/index.md","lastUpdated":0}`),p={name:"sound-box/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:b}=o();return(_,f)=>{const s=a;return d(),r("div",null,[n(s,i(c(l(e))),null,16),u])}}});export{v as __pageData,y as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as r,y as n,R as i,S as c,f as l,g as t,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=t("p",null,[t("a",{href:"https://github.com/mbitsnbites/soundbox",target:"_blank",rel:"noreferrer"},"https://github.com/mbitsnbites/soundbox")],-1),v=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":27,"clicks":209,"public":false,"is_new":false,"stats":[23]},"relativePath":"sound-box/index.md","filePath":"sound-box/index.md","lastUpdated":0}`),p={name:"sound-box/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:b}=o();return(_,f)=>{const s=a;return d(),r("div",null,[n(s,i(c(l(e))),null,16),u])}}});export{v as __pageData,y as default}; diff --git a/assets/sound-box_index.md.HGynRcEJ.lean.js b/assets/sound-box_index.md.vcTJLzSz.lean.js similarity index 83% rename from assets/sound-box_index.md.HGynRcEJ.lean.js rename to assets/sound-box_index.md.vcTJLzSz.lean.js index b51115da..67cfdfd5 100644 --- a/assets/sound-box_index.md.HGynRcEJ.lean.js +++ b/assets/sound-box_index.md.vcTJLzSz.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as o,d as r,y as n,R as i,S as c,f as l,g as t,b as d}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const u=t("p",null,[t("a",{href:"https://github.com/mbitsnbites/soundbox",target:"_blank",rel:"noreferrer"},"https://github.com/mbitsnbites/soundbox")],-1),v=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":27,"clicks":209,"public":false,"is_new":false,"stats":[23]},"relativePath":"sound-box/index.md","filePath":"sound-box/index.md","lastUpdated":0}`),p={name:"sound-box/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:b}=o();return(_,f)=>{const s=a;return d(),r("div",null,[n(s,i(c(l(e))),null,16),u])}}});export{v as __pageData,y as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as r,y as n,R as i,S as c,f as l,g as t,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=t("p",null,[t("a",{href:"https://github.com/mbitsnbites/soundbox",target:"_blank",rel:"noreferrer"},"https://github.com/mbitsnbites/soundbox")],-1),v=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":27,"clicks":209,"public":false,"is_new":false,"stats":[23]},"relativePath":"sound-box/index.md","filePath":"sound-box/index.md","lastUpdated":0}`),p={name:"sound-box/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:b}=o();return(_,f)=>{const s=a;return d(),r("div",null,[n(s,i(c(l(e))),null,16),u])}}});export{v as __pageData,y as default}; diff --git a/assets/sound-trap_index.md.aHWlI-uv.js b/assets/sound-trap_index.md.DPgmLcVq.js similarity index 75% rename from assets/sound-trap_index.md.aHWlI-uv.js rename to assets/sound-trap_index.md.DPgmLcVq.js index ff7bbd94..d83af040 100644 --- a/assets/sound-trap_index.md.aHWlI-uv.js +++ b/assets/sound-trap_index.md.DPgmLcVq.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as n,R as o,S as p,f as d,b as i}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":45,"clicks":124,"public":false,"is_new":false,"stats":[41]},"relativePath":"sound-trap/index.md","filePath":"sound-trap/index.md","lastUpdated":0}'),c={name:"sound-trap/index.md"},k=Object.assign(c,{setup(l){const{params:a,frontmatter:u}=s();return(m,_)=>{const t=e;return i(),r("div",null,[n(t,o(p(d(a))),null,16)])}}});export{v as __pageData,k as default}; +import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as o,S as p,f as d,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":45,"clicks":124,"public":false,"is_new":false,"stats":[41]},"relativePath":"sound-trap/index.md","filePath":"sound-trap/index.md","lastUpdated":0}'),c={name:"sound-trap/index.md"},k=Object.assign(c,{setup(l){const{params:a,frontmatter:u}=s();return(m,_)=>{const t=e;return i(),r("div",null,[n(t,o(p(d(a))),null,16)])}}});export{v as __pageData,k as default}; diff --git a/assets/sound-trap_index.md.aHWlI-uv.lean.js b/assets/sound-trap_index.md.DPgmLcVq.lean.js similarity index 75% rename from assets/sound-trap_index.md.aHWlI-uv.lean.js rename to assets/sound-trap_index.md.DPgmLcVq.lean.js index ff7bbd94..d83af040 100644 --- a/assets/sound-trap_index.md.aHWlI-uv.lean.js +++ b/assets/sound-trap_index.md.DPgmLcVq.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as n,R as o,S as p,f as d,b as i}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":45,"clicks":124,"public":false,"is_new":false,"stats":[41]},"relativePath":"sound-trap/index.md","filePath":"sound-trap/index.md","lastUpdated":0}'),c={name:"sound-trap/index.md"},k=Object.assign(c,{setup(l){const{params:a,frontmatter:u}=s();return(m,_)=>{const t=e;return i(),r("div",null,[n(t,o(p(d(a))),null,16)])}}});export{v as __pageData,k as default}; +import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as o,S as p,f as d,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":45,"clicks":124,"public":false,"is_new":false,"stats":[41]},"relativePath":"sound-trap/index.md","filePath":"sound-trap/index.md","lastUpdated":0}'),c={name:"sound-trap/index.md"},k=Object.assign(c,{setup(l){const{params:a,frontmatter:u}=s();return(m,_)=>{const t=e;return i(),r("div",null,[n(t,o(p(d(a))),null,16)])}}});export{v as __pageData,k as default}; diff --git a/assets/soundfont_index.md.UQL3MRqg.js b/assets/soundfont_index.md.B2d0-Ban.js similarity index 80% rename from assets/soundfont_index.md.UQL3MRqg.js rename to assets/soundfont_index.md.B2d0-Ban.js index 9cc12e76..8772dc7f 100644 --- a/assets/soundfont_index.md.UQL3MRqg.js +++ b/assets/soundfont_index.md.B2d0-Ban.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as o,R as r,S as i,f as l,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},"relativePath":"soundfont/index.md","filePath":"soundfont/index.md","lastUpdated":0}'),p={name:"soundfont/index.md"},x=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,f)=>{const e=a;return c(),n("div",null,[o(e,r(i(l(t))),null,16)])}}});export{g as __pageData,x as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as o,R as r,S as i,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},"relativePath":"soundfont/index.md","filePath":"soundfont/index.md","lastUpdated":0}'),p={name:"soundfont/index.md"},x=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,f)=>{const e=a;return c(),n("div",null,[o(e,r(i(l(t))),null,16)])}}});export{g as __pageData,x as default}; diff --git a/assets/soundfont_index.md.UQL3MRqg.lean.js b/assets/soundfont_index.md.B2d0-Ban.lean.js similarity index 80% rename from assets/soundfont_index.md.UQL3MRqg.lean.js rename to assets/soundfont_index.md.B2d0-Ban.lean.js index 9cc12e76..8772dc7f 100644 --- a/assets/soundfont_index.md.UQL3MRqg.lean.js +++ b/assets/soundfont_index.md.B2d0-Ban.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as o,R as r,S as i,f as l,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},"relativePath":"soundfont/index.md","filePath":"soundfont/index.md","lastUpdated":0}'),p={name:"soundfont/index.md"},x=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,f)=>{const e=a;return c(),n("div",null,[o(e,r(i(l(t))),null,16)])}}});export{g as __pageData,x as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as o,R as r,S as i,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},"relativePath":"soundfont/index.md","filePath":"soundfont/index.md","lastUpdated":0}'),p={name:"soundfont/index.md"},x=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,f)=>{const e=a;return c(),n("div",null,[o(e,r(i(l(t))),null,16)])}}});export{g as __pageData,x as default}; diff --git a/assets/style.wjRr_zZm.css b/assets/style.CTytDMrM.css similarity index 95% rename from assets/style.wjRr_zZm.css rename to assets/style.CTytDMrM.css index c1453a7a..18b2674b 100644 --- a/assets/style.wjRr_zZm.css +++ b/assets/style.CTytDMrM.css @@ -1 +1 @@ -*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.i-la-external-link-square-alt{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M5 5v22h22V5zm2 2h18v18H7zm6 3v2h5.563L9.28 21.281l1.438 1.438L20 13.437V19h2v-9z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-eye{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 8C7.664 8 1.25 15.344 1.25 15.344L.656 16l.594.656s5.848 6.668 13.625 7.282c.371.046.742.062 1.125.062s.754-.016 1.125-.063c7.777-.613 13.625-7.28 13.625-7.28l.594-.657l-.594-.656S24.336 8 16 8m0 2c2.203 0 4.234.602 6 1.406A6.89 6.89 0 0 1 23 15a6.995 6.995 0 0 1-6.219 6.969c-.02.004-.043-.004-.062 0c-.239.011-.477.031-.719.031c-.266 0-.523-.016-.781-.031A6.995 6.995 0 0 1 9 15c0-1.305.352-2.52.969-3.563h-.031C11.717 10.617 13.773 10 16 10m0 2a3 3 0 1 0 .002 6.002A3 3 0 0 0 16 12m-8.75.938A9.006 9.006 0 0 0 7 15c0 1.754.5 3.395 1.375 4.781A23.196 23.196 0 0 1 3.531 16a23.93 23.93 0 0 1 3.719-3.063zm17.5 0A23.93 23.93 0 0 1 28.469 16a23.196 23.196 0 0 1-4.844 3.781A8.929 8.929 0 0 0 25 15c0-.715-.094-1.398-.25-2.063z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-plus{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M15 5v10H5v2h10v10h2V17h10v-2H17V5z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-search{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M19 3C13.488 3 9 7.488 9 13c0 2.395.84 4.59 2.25 6.313L3.281 27.28l1.439 1.44l7.968-7.969A9.922 9.922 0 0 0 19 23c5.512 0 10-4.488 10-10S24.512 3 19 3m0 2c4.43 0 8 3.57 8 8s-3.57 8-8 8s-8-3.57-8-8s3.57-8 8-8'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-star{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' 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'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-star-solid{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' 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'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-sun{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M15 3v5h2V3zM7.5 6.094L6.094 7.5l3.531 3.563l1.438-1.438zm17 0l-3.563 3.531l1.438 1.438L25.906 7.5zM16 9c-3.855 0-7 3.145-7 7s3.145 7 7 7s7-3.145 7-7s-3.145-7-7-7m0 2c2.773 0 5 2.227 5 5s-2.227 5-5 5s-5-2.227-5-5s2.227-5 5-5M3 15v2h5v-2zm21 0v2h5v-2zM9.625 20.938L6.094 24.5L7.5 25.906l3.563-3.531zm12.75 0l-1.438 1.437l3.563 3.531l1.406-1.406zM15 24v5h2v-5z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-times{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M7.219 5.781L5.78 7.22L14.563 16L5.78 24.781l1.44 1.439L16 17.437l8.781 8.782l1.438-1.438L17.437 16l8.782-8.781L24.78 5.78L16 14.563z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-mdi-share{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m21 12l-7-7v4C7 10 4 15 3 20c2.5-3.5 6-5.1 11-5.1V19z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-ph-archive-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M216 96v96a8 8 0 0 1-8 8H48a8 8 0 0 1-8-8V96Z' opacity='.2'/%3E%3Cpath d='M224 48H32a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16v88a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-88a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16m-16 144H48v-88h160Zm16-104H32V64h192zM96 136a8 8 0 0 1 8-8h48a8 8 0 0 1 0 16h-48a8 8 0 0 1-8-8'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-ph-user-circle-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M224 128a95.76 95.76 0 0 1-31.8 71.37A72 72 0 0 0 128 160a40 40 0 1 0-40-40a40 40 0 0 0 40 40a72 72 0 0 0-64.2 39.37A96 96 0 1 1 224 128' opacity='.2'/%3E%3Cpath d='M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24M74.08 197.5a64 64 0 0 1 107.84 0a87.83 87.83 0 0 1-107.84 0M96 120a32 32 0 1 1 32 32a32 32 0 0 1-32-32m97.76 66.41a79.66 79.66 0 0 0-36.06-28.75a48 48 0 1 0-59.4 0a79.66 79.66 0 0 0-36.06 28.75a88 88 0 1 1 131.52 0'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-tabler-moon-2{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M16.418 4.157a8 8 0 0 0 0 15.686'/%3E%3Cpath d='M3 12a9 9 0 1 0 18 0a9 9 0 1 0-18 0'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.bottom-0{bottom:0}.bottom-2{bottom:.5rem}.bottom-4{bottom:1rem}.left-2{left:.5rem}.left-4{left:1rem}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-4{top:1rem}.z-100{z-index:100}.z-1000{z-index:1000}.z-200{z-index:200}.z-2000{z-index:2000}.grid{display:grid}.mx-auto{margin-left:auto;margin-right:auto}.my,.my-4{margin-top:1rem;margin-bottom:1rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-8{margin-bottom:2rem}.mr-2{margin-right:.5rem}.mt-2px{margin-top:2px}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.h-70svh{height:70svh}.h-70vh{height:70vh}.max-w-110{max-width:27.5rem}.max-w-140{max-width:35rem}.max-w-150{max-width:37.5rem}.max-w-16{max-width:4rem}.max-w-160{max-width:40rem}.max-w-180{max-width:45rem}.max-w-45ch{max-width:45ch}.max-w-55ch{max-width:55ch}.max-w-75ch{max-width:75ch}.min-h-100svh{min-height:100svh}.min-h-40dvh{min-height:40dvh}.min-h-50{min-height:12.5rem}.w-12{width:3rem}.w-24{width:6rem}.w-full{width:100%}.flex{display:flex}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.-hover-translate-y-2px:hover{--un-translate-y:-2px;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.-hover-translate-y-6px:hover{--un-translate-y:-6px;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.active-translate-y-0:active{--un-translate-y:0;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.-rotate-10{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:-10deg;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.rotate-45{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:45deg;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.transform{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.overflow-hidden{overflow:hidden}.border,.border-1{border-width:1px}.border-2{border-width:2px}.border-dark-100{--un-border-opacity:1;border-color:rgb(60 60 60 / var(--un-border-opacity))}.border-dark-800{--un-border-opacity:1;border-color:rgb(24 24 24 / var(--un-border-opacity))}.border-green-700{--un-border-opacity:1;border-color:rgb(21 128 61 / var(--un-border-opacity))}.border-light-300,.dark .dark-border-light-300{--un-border-opacity:1;border-color:rgb(248 249 250 / var(--un-border-opacity))}.border-red-700{--un-border-opacity:1;border-color:rgb(185 28 28 / var(--un-border-opacity))}.dark .dark-border-green-800{--un-border-opacity:1;border-color:rgb(22 101 52 / var(--un-border-opacity))}.dark .dark-border-light-800{--un-border-opacity:1;border-color:rgb(222 226 230 / var(--un-border-opacity))}.dark .dark-border-red-300{--un-border-opacity:1;border-color:rgb(252 165 165 / var(--un-border-opacity))}.border-opacity-10{--un-border-opacity:.1}.border-opacity-20,.dark .dark-border-opacity-20{--un-border-opacity:.2}.border-opacity-60{--un-border-opacity:.6}.dark .dark-border-opacity-40{--un-border-opacity:.4}.focus-border-opacity-90:focus{--un-border-opacity:.9}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border-solid{border-style:solid}.bg-dark-100{--un-bg-opacity:1;background-color:rgb(60 60 60 / var(--un-bg-opacity))}.bg-green-400{--un-bg-opacity:1;background-color:rgb(74 222 128 / var(--un-bg-opacity))}.bg-green-600{--un-bg-opacity:1;background-color:rgb(22 163 74 / var(--un-bg-opacity))}.bg-light-100{--un-bg-opacity:1;background-color:rgb(252 252 252 / var(--un-bg-opacity))}.bg-light-200{--un-bg-opacity:1;background-color:rgb(250 250 250 / var(--un-bg-opacity))}.bg-light-300{--un-bg-opacity:1;background-color:rgb(248 249 250 / var(--un-bg-opacity))}.bg-light-50{--un-bg-opacity:1;background-color:rgb(253 253 253 / var(--un-bg-opacity))}.bg-light-500{--un-bg-opacity:1;background-color:rgb(242 242 242 / var(--un-bg-opacity))}.bg-light-700,.dark .dark-bg-light-700{--un-bg-opacity:1;background-color:rgb(233 236 239 / var(--un-bg-opacity))}.bg-light-800{--un-bg-opacity:1;background-color:rgb(222 226 230 / var(--un-bg-opacity))}.bg-yellow-600{--un-bg-opacity:1;background-color:rgb(202 138 4 / var(--un-bg-opacity))}.dark .dark-bg-dark-200{--un-bg-opacity:1;background-color:rgb(50 50 50 / var(--un-bg-opacity))}.dark .dark-bg-dark-300{--un-bg-opacity:1;background-color:rgb(45 45 45 / var(--un-bg-opacity))}.dark .dark-bg-dark-400{--un-bg-opacity:1;background-color:rgb(34 34 34 / var(--un-bg-opacity))}.dark .dark-bg-dark-500{--un-bg-opacity:1;background-color:rgb(31 31 31 / var(--un-bg-opacity))}.dark .dark-bg-dark-800{--un-bg-opacity:1;background-color:rgb(24 24 24 / var(--un-bg-opacity))}.dark .dark-bg-green-700{--un-bg-opacity:1;background-color:rgb(21 128 61 / var(--un-bg-opacity))}.dark .dark-hover-bg-dark-100:hover{--un-bg-opacity:1;background-color:rgb(60 60 60 / var(--un-bg-opacity))}.hover-bg-light-100:hover{--un-bg-opacity:1;background-color:rgb(252 252 252 / var(--un-bg-opacity))}.bg-opacity-100{--un-bg-opacity:1}.bg-opacity-60,.dark .dark-bg-opacity-60{--un-bg-opacity:.6}.bg-opacity-70{--un-bg-opacity:.7}.bg-opacity-80,.dark .dark-bg-opacity-80{--un-bg-opacity:.8}.dark .dark-bg-opacity-20{--un-bg-opacity:.2}.dark .dark-bg-opacity-40{--un-bg-opacity:.4}.bg-cover{background-size:cover}.bg-center{background-position:center}.p-0{padding:0}.p-2{padding:.5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-8{padding:2rem}.px,.px-4{padding-left:1rem;padding-right:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pl-9{padding-left:2.25rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.dark .dark-text-dark-500{--un-text-opacity:1;color:rgb(31 31 31 / var(--un-text-opacity))}.text-light-200{--un-text-opacity:1;color:rgb(250 250 250 / var(--un-text-opacity))}.text-light-700{--un-text-opacity:1;color:rgb(233 236 239 / var(--un-text-opacity))}.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.text-yellow{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity))}.font-300{font-weight:300}.font-600{font-weight:600}.font-bold{font-weight:700}.font-normal{font-weight:400}.leading-loose,.line-height-loose{line-height:2}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.underline{text-decoration-line:underline}.tab{-moz-tab-size:4;-o-tab-size:4;tab-size:4}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.hover-opacity-100:hover{opacity:1}.hover-opacity-50:hover{opacity:.5}.hover-opacity-80:hover{opacity:.8}.hover-opacity-90:hover{opacity:.9}.disabled-opacity-20:disabled{opacity:.2}.disabled-opacity-40:disabled{opacity:.4}.shadow{--un-shadow:var(--un-shadow-inset) 0 1px 3px 0 var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 1px 2px -1px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-inner{--un-shadow:inset 0 2px 4px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-lg{--un-shadow:var(--un-shadow-inset) 0 10px 15px -3px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 4px 6px -4px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-md{--un-shadow:var(--un-shadow-inset) 0 4px 6px -1px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 2px 4px -2px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-sm{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-xl{--un-shadow:var(--un-shadow-inset) 0 20px 25px -5px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 8px 10px -6px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.hover-shadow-2xl:hover{--un-shadow:var(--un-shadow-inset) 0 25px 50px -12px var(--un-shadow-color, rgb(0 0 0 / .25));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.hover-shadow-lg:hover{--un-shadow:var(--un-shadow-inset) 0 10px 15px -3px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 4px 6px -4px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.active-shadow-md:active{--un-shadow:var(--un-shadow-inset) 0 4px 6px -1px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 2px 4px -2px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.outline{outline-style:solid}.outline-none{outline:2px solid transparent;outline-offset:2px}.backdrop-blur{--un-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.backdrop-blur-xl{--un-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.grayscale-0{--un-grayscale:grayscale(0);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.grayscale-50{--un-grayscale:grayscale(.5);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.grayscale-70{--un-grayscale:grayscale(.7);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.grayscale-80{--un-grayscale:grayscale(.8);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.hover-grayscale-0:hover{--un-grayscale:grayscale(0);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.filter{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease,.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (min-width: 640px){.sm-text-2xl{font-size:1.5rem;line-height:2rem}.sm-text-3xl{font-size:1.875rem;line-height:2.25rem}}@media (min-width: 768px){.md-p-4{padding:1rem}.md-text-lg{font-size:1.125rem;line-height:1.75rem}}.pwa-toast{position:fixed;right:0;bottom:0;margin:16px;padding:12px;border:1px solid #8885;border-radius:4px;z-index:100;text-align:left;box-shadow:3px 4px 5px #8885;background-color:gray}.pwa-toast #pwa-message{margin-bottom:8px}.pwa-toast button{border:1px solid #8885;outline:none;margin-right:5px;border-radius:2px;padding:3px 10px}html{overscroll-behavior-y:none;font-family:Circe,ui-sans-sefir,sans-serif;scroll-snap-type:proximity}html.dark{--un-bg-opacity:1;background-color:rgb(60 60 60 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(233 236 239 / var(--un-text-opacity))}a:hover{text-decoration-line:underline}.noise{position:relative}.noise:before{content:"";position:fixed;z-index:-1;display:block;top:0;left:0;bottom:0;right:0;background-size:cover;background-repeat:no-repeat;background-position:center top}.noise:before{background-image:linear-gradient(#9991,#2224)}.dark .noise:before{background-image:linear-gradient(#3339,#eee4)}#content{line-height:2}#content p,#content h1,#content h2,#content h3,#content h4,#content h5,#content h6,#content li{margin-left:auto;margin-right:auto;max-width:40rem;padding-top:.5rem;padding-bottom:.5rem}.list-enter-active{transition:all .3s ease-out}.list-enter-from{opacity:0;z-index:20;transform:translateY(-100%)}.list-leave-to{opacity:0;transform:translateY(30px)}.list-leave-active{transition:all .4s ease-in}.list-move{transition:transform .8s ease-in-out}.list-item{z-index:1}.panel-enter-active{transition:all .2s ease-out}.panel-enter-from{opacity:0;z-index:-20;transform:translateY(100%)}.panel-leave-to{opacity:0;transform:translateY(100px)}.panel-leave-active{transition:all .4s ease-in}.panel-move{transition:transform .8s ease-in-out}.panel-item{z-index:-20}.slide-enter-active,.slide-leave-active{transition:all .5s ease-in-out}.slide-enter-to{transform:translateY(0)}.slide-enter-from,.slide-leave-to{transform:translateY(100%)}.slide-leave-from{transform:translateY(0)}.scale-slide-enter-active,.scale-slide-leave-active{transition:all .85s ease}.scale-slide-enter-from{top:-100%}.scale-slide-enter-to{top:0%}.scale-slide-leave-from{transform:scale(1)}.scale-slide-leave-to{transform:scale(.8)}.fade-enter-active{transition:all .5s ease}.fade-leave-to,.fade-enter-from{opacity:0}.fall{background-color:#ccc3}.fall-enter-active{transition:all .9s ease-out}.fall-leave-active,.fall-leave-to{transform:scale(.95)}.fall-enter-from{background-color:#fff;transform:translatey(-10px)}.dark .fall-enter-from{background-color:#000}@font-face{font-family:Circe;src:url(/assets/Circe-Regular.G4y10qCH.eot);src:local("Circe"),local("Circe-Regular"),url(/assets/Circe-Regular.G4y10qCH.eot?#iefix) format("embedded-opentype"),url(/assets/Circe-Regular.C8GddYak.woff) format("woff"),url(/assets/Circe-Regular.89Yvrprf.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Circe;src:url(/assets/Circe-ExtraLight.fJQ2JlHq.eot);src:local("Circe ExtraLight"),local("Circe-ExtraLight"),url(/assets/Circe-ExtraLight.fJQ2JlHq.eot?#iefix) format("embedded-opentype"),url(/assets/Circe-ExtraLight.z1vVK6fc.woff) format("woff"),url(/assets/Circe-ExtraLight.L5XlwBrl.ttf) format("truetype");font-weight:200;font-style:normal}@font-face{font-family:Circe;src:url(/assets/Circe-Thin.Vq0h4NEo.eot);src:local("Circe Thin"),local("Circe-Thin"),url(/assets/Circe-Thin.Vq0h4NEo.eot?#iefix) format("embedded-opentype"),url(/assets/Circe-Thin.MW32u0X7.woff) format("woff"),url(/assets/Circe-Thin.Hn2IMeEa.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:Circe;src:url(/assets/Circe-Light.4o552gUT.eot);src:local("Circe Light"),local("Circe-Light"),url(/assets/Circe-Light.4o552gUT.eot?#iefix) format("embedded-opentype"),url(/assets/Circe-Light.lY_D4voX.woff) format("woff"),url(/assets/Circe-Light.yYA22SBH.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:Circe;src:url(/assets/Circe-Bold.PYbrWOBe.eot);src:local("Circe Bold"),local("Circe-Bold"),url(/assets/Circe-Bold.PYbrWOBe.eot?#iefix) format("embedded-opentype"),url(/assets/Circe-Bold.hXhgneJG.woff) format("woff"),url(/assets/Circe-Bold.TTkSbgXT.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Circe;src:url(/assets/Circe-ExtraBold.NhFFKkzJ.eot);src:local("Circe ExtraBold"),local("Circe-ExtraBold"),url(/assets/Circe-ExtraBold.NhFFKkzJ.eot?#iefix) format("embedded-opentype"),url(/assets/Circe-ExtraBold.0yxrF8zE.woff) format("woff"),url(/assets/Circe-ExtraBold.ij6Sdhyz.ttf) format("truetype");font-weight:800;font-style:normal}.card img[data-v-f3c34bc1]{--un-grayscale:grayscale(.7);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.card img[data-v-f3c34bc1]:hover{--un-grayscale:grayscale(0);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.cover[data-v-f3c34bc1]{opacity:.9;--un-grayscale:grayscale(.8);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}button:hover .cover[data-v-f3c34bc1]{opacity:1;--un-grayscale:grayscale(0);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.dark a{color:#fff!important}.intro p{margin-top:1rem;margin-bottom:1rem}.intro a{font-weight:700;text-decoration-line:underline}input:disabled{opacity:.5} +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.i-la-external-link-square-alt{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M5 5v22h22V5zm2 2h18v18H7zm6 3v2h5.563L9.28 21.281l1.438 1.438L20 13.437V19h2v-9z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-eye{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 8C7.664 8 1.25 15.344 1.25 15.344L.656 16l.594.656s5.848 6.668 13.625 7.282c.371.046.742.062 1.125.062s.754-.016 1.125-.063c7.777-.613 13.625-7.28 13.625-7.28l.594-.657l-.594-.656S24.336 8 16 8m0 2c2.203 0 4.234.602 6 1.406A6.89 6.89 0 0 1 23 15a6.995 6.995 0 0 1-6.219 6.969c-.02.004-.043-.004-.062 0c-.239.011-.477.031-.719.031c-.266 0-.523-.016-.781-.031A6.995 6.995 0 0 1 9 15c0-1.305.352-2.52.969-3.563h-.031C11.717 10.617 13.773 10 16 10m0 2a3 3 0 1 0 .002 6.002A3 3 0 0 0 16 12m-8.75.938A9.006 9.006 0 0 0 7 15c0 1.754.5 3.395 1.375 4.781A23.196 23.196 0 0 1 3.531 16a23.93 23.93 0 0 1 3.719-3.063zm17.5 0A23.93 23.93 0 0 1 28.469 16a23.196 23.196 0 0 1-4.844 3.781A8.929 8.929 0 0 0 25 15c0-.715-.094-1.398-.25-2.063z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-plus{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M15 5v10H5v2h10v10h2V17h10v-2H17V5z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-search{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M19 3C13.488 3 9 7.488 9 13c0 2.395.84 4.59 2.25 6.313L3.281 27.28l1.439 1.44l7.968-7.969A9.922 9.922 0 0 0 19 23c5.512 0 10-4.488 10-10S24.512 3 19 3m0 2c4.43 0 8 3.57 8 8s-3.57 8-8 8s-8-3.57-8-8s3.57-8 8-8'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-star{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' 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'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-star-solid{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' 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'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-sun{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M15 3v5h2V3zM7.5 6.094L6.094 7.5l3.531 3.563l1.438-1.438zm17 0l-3.563 3.531l1.438 1.438L25.906 7.5zM16 9c-3.855 0-7 3.145-7 7s3.145 7 7 7s7-3.145 7-7s-3.145-7-7-7m0 2c2.773 0 5 2.227 5 5s-2.227 5-5 5s-5-2.227-5-5s2.227-5 5-5M3 15v2h5v-2zm21 0v2h5v-2zM9.625 20.938L6.094 24.5L7.5 25.906l3.563-3.531zm12.75 0l-1.438 1.437l3.563 3.531l1.406-1.406zM15 24v5h2v-5z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-la-times{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M7.219 5.781L5.78 7.22L14.563 16L5.78 24.781l1.44 1.439L16 17.437l8.781 8.782l1.438-1.438L17.437 16l8.782-8.781L24.78 5.78L16 14.563z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-mdi-share{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m21 12l-7-7v4C7 10 4 15 3 20c2.5-3.5 6-5.1 11-5.1V19z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-ph-archive-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M216 96v96a8 8 0 0 1-8 8H48a8 8 0 0 1-8-8V96Z' opacity='.2'/%3E%3Cpath d='M224 48H32a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16v88a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-88a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16m-16 144H48v-88h160Zm16-104H32V64h192zM96 136a8 8 0 0 1 8-8h48a8 8 0 0 1 0 16h-48a8 8 0 0 1-8-8'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-ph-user-circle-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M224 128a95.76 95.76 0 0 1-31.8 71.37A72 72 0 0 0 128 160a40 40 0 1 0-40-40a40 40 0 0 0 40 40a72 72 0 0 0-64.2 39.37A96 96 0 1 1 224 128' opacity='.2'/%3E%3Cpath d='M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24M74.08 197.5a64 64 0 0 1 107.84 0a87.83 87.83 0 0 1-107.84 0M96 120a32 32 0 1 1 32 32a32 32 0 0 1-32-32m97.76 66.41a79.66 79.66 0 0 0-36.06-28.75a48 48 0 1 0-59.4 0a79.66 79.66 0 0 0-36.06 28.75a88 88 0 1 1 131.52 0'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.i-tabler-moon-2{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M16.418 4.157a8 8 0 0 0 0 15.686'/%3E%3Cpath d='M3 12a9 9 0 1 0 18 0a9 9 0 1 0-18 0'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;vertical-align:middle;width:1.2em;height:1.2em}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.bottom-0{bottom:0}.bottom-2{bottom:.5rem}.bottom-4{bottom:1rem}.left-2{left:.5rem}.left-4{left:1rem}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-4{top:1rem}.z-100{z-index:100}.z-1000{z-index:1000}.z-200{z-index:200}.z-2000{z-index:2000}.grid{display:grid}.mx-auto{margin-left:auto;margin-right:auto}.my,.my-4{margin-top:1rem;margin-bottom:1rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-8{margin-bottom:2rem}.mr-2{margin-right:.5rem}.mt-2px{margin-top:2px}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.h-70svh{height:70svh}.h-70vh{height:70vh}.max-w-110{max-width:27.5rem}.max-w-140{max-width:35rem}.max-w-150{max-width:37.5rem}.max-w-16{max-width:4rem}.max-w-160{max-width:40rem}.max-w-180{max-width:45rem}.max-w-45ch{max-width:45ch}.max-w-55ch{max-width:55ch}.max-w-75ch{max-width:75ch}.min-h-100svh{min-height:100svh}.min-h-40dvh{min-height:40dvh}.min-h-50{min-height:12.5rem}.w-12{width:3rem}.w-24{width:6rem}.w-full{width:100%}.flex{display:flex}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.-hover-translate-y-2px:hover{--un-translate-y:-2px;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.-hover-translate-y-6px:hover{--un-translate-y:-6px;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.active-translate-y-0:active{--un-translate-y:0;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.-rotate-10{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:-10deg;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.rotate-45{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:45deg;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.transform{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.overflow-hidden{overflow:hidden}.border,.border-1{border-width:1px}.border-2{border-width:2px}.border-dark-100{--un-border-opacity:1;border-color:rgb(60 60 60 / var(--un-border-opacity))}.border-dark-800{--un-border-opacity:1;border-color:rgb(24 24 24 / var(--un-border-opacity))}.border-green-700{--un-border-opacity:1;border-color:rgb(21 128 61 / var(--un-border-opacity))}.border-light-300,.dark .dark-border-light-300{--un-border-opacity:1;border-color:rgb(248 249 250 / var(--un-border-opacity))}.border-red-700{--un-border-opacity:1;border-color:rgb(185 28 28 / var(--un-border-opacity))}.dark .dark-border-green-800{--un-border-opacity:1;border-color:rgb(22 101 52 / var(--un-border-opacity))}.dark .dark-border-light-800{--un-border-opacity:1;border-color:rgb(222 226 230 / var(--un-border-opacity))}.dark .dark-border-red-300{--un-border-opacity:1;border-color:rgb(252 165 165 / var(--un-border-opacity))}.border-opacity-10{--un-border-opacity:.1}.border-opacity-20,.dark .dark-border-opacity-20{--un-border-opacity:.2}.border-opacity-60{--un-border-opacity:.6}.dark .dark-border-opacity-40{--un-border-opacity:.4}.focus-border-opacity-90:focus{--un-border-opacity:.9}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border-solid{border-style:solid}.bg-dark-100{--un-bg-opacity:1;background-color:rgb(60 60 60 / var(--un-bg-opacity))}.bg-green-400{--un-bg-opacity:1;background-color:rgb(74 222 128 / var(--un-bg-opacity))}.bg-green-600{--un-bg-opacity:1;background-color:rgb(22 163 74 / var(--un-bg-opacity))}.bg-light-100{--un-bg-opacity:1;background-color:rgb(252 252 252 / var(--un-bg-opacity))}.bg-light-200{--un-bg-opacity:1;background-color:rgb(250 250 250 / var(--un-bg-opacity))}.bg-light-300{--un-bg-opacity:1;background-color:rgb(248 249 250 / var(--un-bg-opacity))}.bg-light-50{--un-bg-opacity:1;background-color:rgb(253 253 253 / var(--un-bg-opacity))}.bg-light-500{--un-bg-opacity:1;background-color:rgb(242 242 242 / var(--un-bg-opacity))}.bg-light-700,.dark .dark-bg-light-700{--un-bg-opacity:1;background-color:rgb(233 236 239 / var(--un-bg-opacity))}.bg-light-800{--un-bg-opacity:1;background-color:rgb(222 226 230 / var(--un-bg-opacity))}.bg-yellow-600{--un-bg-opacity:1;background-color:rgb(202 138 4 / var(--un-bg-opacity))}.dark .dark-bg-dark-200{--un-bg-opacity:1;background-color:rgb(50 50 50 / var(--un-bg-opacity))}.dark .dark-bg-dark-300{--un-bg-opacity:1;background-color:rgb(45 45 45 / var(--un-bg-opacity))}.dark .dark-bg-dark-400{--un-bg-opacity:1;background-color:rgb(34 34 34 / var(--un-bg-opacity))}.dark .dark-bg-dark-500{--un-bg-opacity:1;background-color:rgb(31 31 31 / var(--un-bg-opacity))}.dark .dark-bg-dark-800{--un-bg-opacity:1;background-color:rgb(24 24 24 / var(--un-bg-opacity))}.dark .dark-bg-green-700{--un-bg-opacity:1;background-color:rgb(21 128 61 / var(--un-bg-opacity))}.dark .dark-hover-bg-dark-100:hover{--un-bg-opacity:1;background-color:rgb(60 60 60 / var(--un-bg-opacity))}.hover-bg-light-100:hover{--un-bg-opacity:1;background-color:rgb(252 252 252 / var(--un-bg-opacity))}.bg-opacity-100{--un-bg-opacity:1}.bg-opacity-60,.dark .dark-bg-opacity-60{--un-bg-opacity:.6}.bg-opacity-70{--un-bg-opacity:.7}.bg-opacity-80,.dark .dark-bg-opacity-80{--un-bg-opacity:.8}.dark .dark-bg-opacity-20{--un-bg-opacity:.2}.dark .dark-bg-opacity-40{--un-bg-opacity:.4}.bg-cover{background-size:cover}.bg-center{background-position:center}.p-0{padding:0}.p-2{padding:.5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-8{padding:2rem}.px,.px-4{padding-left:1rem;padding-right:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pl-9{padding-left:2.25rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.dark .dark-text-dark-500{--un-text-opacity:1;color:rgb(31 31 31 / var(--un-text-opacity))}.text-light-200{--un-text-opacity:1;color:rgb(250 250 250 / var(--un-text-opacity))}.text-light-700{--un-text-opacity:1;color:rgb(233 236 239 / var(--un-text-opacity))}.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.text-yellow{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity))}.font-300{font-weight:300}.font-600{font-weight:600}.font-bold{font-weight:700}.font-normal{font-weight:400}.leading-loose,.line-height-loose{line-height:2}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.underline{text-decoration-line:underline}.tab{-moz-tab-size:4;-o-tab-size:4;tab-size:4}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.hover-opacity-100:hover{opacity:1}.hover-opacity-50:hover{opacity:.5}.hover-opacity-80:hover{opacity:.8}.hover-opacity-90:hover{opacity:.9}.disabled-opacity-20:disabled{opacity:.2}.disabled-opacity-40:disabled{opacity:.4}.shadow{--un-shadow:var(--un-shadow-inset) 0 1px 3px 0 var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 1px 2px -1px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-inner{--un-shadow:inset 0 2px 4px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-lg{--un-shadow:var(--un-shadow-inset) 0 10px 15px -3px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 4px 6px -4px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-md{--un-shadow:var(--un-shadow-inset) 0 4px 6px -1px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 2px 4px -2px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-sm{--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.shadow-xl{--un-shadow:var(--un-shadow-inset) 0 20px 25px -5px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 8px 10px -6px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.hover-shadow-2xl:hover{--un-shadow:var(--un-shadow-inset) 0 25px 50px -12px var(--un-shadow-color, rgb(0 0 0 / .25));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.hover-shadow-lg:hover{--un-shadow:var(--un-shadow-inset) 0 10px 15px -3px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 4px 6px -4px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.active-shadow-md:active{--un-shadow:var(--un-shadow-inset) 0 4px 6px -1px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 2px 4px -2px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.outline{outline-style:solid}.outline-none{outline:2px solid transparent;outline-offset:2px}.backdrop-blur{--un-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.backdrop-blur-xl{--un-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia);backdrop-filter:var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)}.grayscale-0{--un-grayscale:grayscale(0);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.grayscale-50{--un-grayscale:grayscale(.5);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.grayscale-70{--un-grayscale:grayscale(.7);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.grayscale-80{--un-grayscale:grayscale(.8);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.hover-grayscale-0:hover{--un-grayscale:grayscale(0);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.filter{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease,.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (min-width: 640px){.sm-text-2xl{font-size:1.5rem;line-height:2rem}.sm-text-3xl{font-size:1.875rem;line-height:2.25rem}}@media (min-width: 768px){.md-p-4{padding:1rem}.md-text-lg{font-size:1.125rem;line-height:1.75rem}}.pwa-toast{position:fixed;right:0;bottom:0;margin:16px;padding:12px;border:1px solid #8885;border-radius:4px;z-index:100;text-align:left;box-shadow:3px 4px 5px #8885;background-color:gray}.pwa-toast #pwa-message{margin-bottom:8px}.pwa-toast button{border:1px solid #8885;outline:none;margin-right:5px;border-radius:2px;padding:3px 10px}html{overscroll-behavior-y:none;font-family:Circe,ui-sans-sefir,sans-serif;scroll-snap-type:proximity}html.dark{--un-bg-opacity:1;background-color:rgb(60 60 60 / var(--un-bg-opacity));--un-text-opacity:1;color:rgb(233 236 239 / var(--un-text-opacity))}a:hover{text-decoration-line:underline}.noise{position:relative}.noise:before{content:"";position:fixed;z-index:-1;display:block;top:0;left:0;bottom:0;right:0;background-size:cover;background-repeat:no-repeat;background-position:center top}.noise:before{background-image:linear-gradient(#9991,#2224)}.dark .noise:before{background-image:linear-gradient(#3339,#eee4)}#content{line-height:2}#content p,#content h1,#content h2,#content h3,#content h4,#content h5,#content h6,#content li{margin-left:auto;margin-right:auto;max-width:40rem;padding-top:.5rem;padding-bottom:.5rem}.list-enter-active{transition:all .3s ease-out}.list-enter-from{opacity:0;z-index:20;transform:translateY(-100%)}.list-leave-to{opacity:0;transform:translateY(30px)}.list-leave-active{transition:all .4s ease-in}.list-move{transition:transform .8s ease-in-out}.list-item{z-index:1}.panel-enter-active{transition:all .2s ease-out}.panel-enter-from{opacity:0;z-index:-20;transform:translateY(100%)}.panel-leave-to{opacity:0;transform:translateY(100px)}.panel-leave-active{transition:all .4s ease-in}.panel-move{transition:transform .8s ease-in-out}.panel-item{z-index:-20}.slide-enter-active,.slide-leave-active{transition:all .5s ease-in-out}.slide-enter-to{transform:translateY(0)}.slide-enter-from,.slide-leave-to{transform:translateY(100%)}.slide-leave-from{transform:translateY(0)}.scale-slide-enter-active,.scale-slide-leave-active{transition:all .85s ease}.scale-slide-enter-from{top:-100%}.scale-slide-enter-to{top:0%}.scale-slide-leave-from{transform:scale(1)}.scale-slide-leave-to{transform:scale(.8)}.fade-enter-active{transition:all .5s ease}.fade-leave-to,.fade-enter-from{opacity:0}.fall{background-color:#ccc3}.fall-enter-active{transition:all .9s ease-out}.fall-leave-active,.fall-leave-to{transform:scale(.95)}.fall-enter-from{background-color:#fff;transform:translatey(-10px)}.dark .fall-enter-from{background-color:#000}@font-face{font-family:Circe;src:url(/assets/Circe-Regular.bjLXSoIf.eot);src:local("Circe"),local("Circe-Regular"),url(/assets/Circe-Regular.bjLXSoIf.eot?#iefix) format("embedded-opentype"),url(/assets/Circe-Regular.LwZ11hqR.woff) format("woff"),url(/assets/Circe-Regular.Dz1i-umt.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Circe;src:url(/assets/Circe-ExtraLight.B8lDYmUe.eot);src:local("Circe ExtraLight"),local("Circe-ExtraLight"),url(/assets/Circe-ExtraLight.B8lDYmUe.eot?#iefix) format("embedded-opentype"),url(/assets/Circe-ExtraLight.DPW9Urp9.woff) format("woff"),url(/assets/Circe-ExtraLight.vleXAGuU.ttf) format("truetype");font-weight:200;font-style:normal}@font-face{font-family:Circe;src:url(/assets/Circe-Thin.BWrSHg0S.eot);src:local("Circe Thin"),local("Circe-Thin"),url(/assets/Circe-Thin.BWrSHg0S.eot?#iefix) format("embedded-opentype"),url(/assets/Circe-Thin.xbfa7Rfs.woff) format("woff"),url(/assets/Circe-Thin.efYgx4Rq.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:Circe;src:url(/assets/Circe-Light.DijnnaBR.eot);src:local("Circe Light"),local("Circe-Light"),url(/assets/Circe-Light.DijnnaBR.eot?#iefix) format("embedded-opentype"),url(/assets/Circe-Light.CVj8Pi-h.woff) format("woff"),url(/assets/Circe-Light.DJgDbZIE.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:Circe;src:url(/assets/Circe-Bold.9hutY4F7.eot);src:local("Circe Bold"),local("Circe-Bold"),url(/assets/Circe-Bold.9hutY4F7.eot?#iefix) format("embedded-opentype"),url(/assets/Circe-Bold.CFeGCd4k.woff) format("woff"),url(/assets/Circe-Bold.BNORJuBd.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Circe;src:url(/assets/Circe-ExtraBold.2EUUqTMm.eot);src:local("Circe ExtraBold"),local("Circe-ExtraBold"),url(/assets/Circe-ExtraBold.2EUUqTMm.eot?#iefix) format("embedded-opentype"),url(/assets/Circe-ExtraBold.DTLGsXzM.woff) format("woff"),url(/assets/Circe-ExtraBold.CKPpJ2HL.ttf) format("truetype");font-weight:800;font-style:normal}.card img[data-v-f3c34bc1]{--un-grayscale:grayscale(.7);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.card img[data-v-f3c34bc1]:hover{--un-grayscale:grayscale(0);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.cover[data-v-f3c34bc1]{opacity:.9;--un-grayscale:grayscale(.8);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}button:hover .cover[data-v-f3c34bc1]{opacity:1;--un-grayscale:grayscale(0);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.dark a{color:#fff!important}.intro p{margin-top:1rem;margin-bottom:1rem}.intro a{font-weight:700;text-decoration-line:underline}input:disabled{opacity:.5} diff --git a/assets/sympathetic_index.md.gT5FhYkD.js b/assets/sympathetic_index.md.B9hVY9QB.js similarity index 76% rename from assets/sympathetic_index.md.gT5FhYkD.js rename to assets/sympathetic_index.md.B9hVY9QB.js index d2d9b0ea..9aa1fd4b 100644 --- a/assets/sympathetic_index.md.gT5FhYkD.js +++ b/assets/sympathetic_index.md.B9hVY9QB.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as i,R as n,S as o,f as c,b as m}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},"relativePath":"sympathetic/index.md","filePath":"sympathetic/index.md","lastUpdated":0}'),p={name:"sympathetic/index.md"},k=Object.assign(p,{setup(d){const{params:t,frontmatter:l}=s();return(u,_)=>{const e=a;return m(),r("div",null,[i(e,n(o(c(t))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as n,S as o,f as c,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},"relativePath":"sympathetic/index.md","filePath":"sympathetic/index.md","lastUpdated":0}'),p={name:"sympathetic/index.md"},k=Object.assign(p,{setup(d){const{params:t,frontmatter:l}=s();return(u,_)=>{const e=a;return m(),r("div",null,[i(e,n(o(c(t))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/sympathetic_index.md.gT5FhYkD.lean.js b/assets/sympathetic_index.md.B9hVY9QB.lean.js similarity index 76% rename from assets/sympathetic_index.md.gT5FhYkD.lean.js rename to assets/sympathetic_index.md.B9hVY9QB.lean.js index d2d9b0ea..9aa1fd4b 100644 --- a/assets/sympathetic_index.md.gT5FhYkD.lean.js +++ b/assets/sympathetic_index.md.B9hVY9QB.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as i,R as n,S as o,f as c,b as m}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},"relativePath":"sympathetic/index.md","filePath":"sympathetic/index.md","lastUpdated":0}'),p={name:"sympathetic/index.md"},k=Object.assign(p,{setup(d){const{params:t,frontmatter:l}=s();return(u,_)=>{const e=a;return m(),r("div",null,[i(e,n(o(c(t))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as n,S as o,f as c,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},"relativePath":"sympathetic/index.md","filePath":"sympathetic/index.md","lastUpdated":0}'),p={name:"sympathetic/index.md"},k=Object.assign(p,{setup(d){const{params:t,frontmatter:l}=s();return(u,_)=>{const e=a;return m(),r("div",null,[i(e,n(o(c(t))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/tanguy-synth_index.md.LICvHysz.js b/assets/tanguy-synth_index.md.DIyIIeiH.js similarity index 76% rename from assets/tanguy-synth_index.md.LICvHysz.js rename to assets/tanguy-synth_index.md.DIyIIeiH.js index 64f94fa2..9fd11759 100644 --- a/assets/tanguy-synth_index.md.LICvHysz.js +++ b/assets/tanguy-synth_index.md.DIyIIeiH.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as r,R as o,S as i,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":38,"clicks":117,"public":false,"is_new":false,"stats":[34]},"relativePath":"tanguy-synth/index.md","filePath":"tanguy-synth/index.md","lastUpdated":0}'),u={name:"tanguy-synth/index.md"},b=Object.assign(u,{setup(d){const{params:t,frontmatter:p}=s();return(m,_)=>{const a=e;return l(),n("div",null,[r(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; +import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":38,"clicks":117,"public":false,"is_new":false,"stats":[34]},"relativePath":"tanguy-synth/index.md","filePath":"tanguy-synth/index.md","lastUpdated":0}'),u={name:"tanguy-synth/index.md"},b=Object.assign(u,{setup(d){const{params:t,frontmatter:p}=s();return(m,_)=>{const a=e;return l(),n("div",null,[r(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; diff --git a/assets/tanguy-synth_index.md.LICvHysz.lean.js b/assets/tanguy-synth_index.md.DIyIIeiH.lean.js similarity index 76% rename from assets/tanguy-synth_index.md.LICvHysz.lean.js rename to assets/tanguy-synth_index.md.DIyIIeiH.lean.js index 64f94fa2..9fd11759 100644 --- a/assets/tanguy-synth_index.md.LICvHysz.lean.js +++ b/assets/tanguy-synth_index.md.DIyIIeiH.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as r,R as o,S as i,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":38,"clicks":117,"public":false,"is_new":false,"stats":[34]},"relativePath":"tanguy-synth/index.md","filePath":"tanguy-synth/index.md","lastUpdated":0}'),u={name:"tanguy-synth/index.md"},b=Object.assign(u,{setup(d){const{params:t,frontmatter:p}=s();return(m,_)=>{const a=e;return l(),n("div",null,[r(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; +import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":38,"clicks":117,"public":false,"is_new":false,"stats":[34]},"relativePath":"tanguy-synth/index.md","filePath":"tanguy-synth/index.md","lastUpdated":0}'),u={name:"tanguy-synth/index.md"},b=Object.assign(u,{setup(d){const{params:t,frontmatter:p}=s();return(m,_)=>{const a=e;return l(),n("div",null,[r(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; diff --git a/assets/theremin_index.md.0wNNSky6.js b/assets/theremin_index.md.liVXJJN1.js similarity index 81% rename from assets/theremin_index.md.0wNNSky6.js rename to assets/theremin_index.md.liVXJJN1.js index 54e99d13..319f5af8 100644 --- a/assets/theremin_index.md.0wNNSky6.js +++ b/assets/theremin_index.md.liVXJJN1.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as n,R as i,S as m,f as o,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},"relativePath":"theremin/index.md","filePath":"theremin/index.md","lastUpdated":0}'),l={name:"theremin/index.md"},x=Object.assign(l,{setup(p){const{params:e,frontmatter:d}=r();return(u,_)=>{const t=a;return c(),s("div",null,[n(t,i(m(o(e))),null,16)])}}});export{k as __pageData,x as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as i,S as m,f as o,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},"relativePath":"theremin/index.md","filePath":"theremin/index.md","lastUpdated":0}'),l={name:"theremin/index.md"},x=Object.assign(l,{setup(p){const{params:e,frontmatter:d}=r();return(u,_)=>{const t=a;return c(),s("div",null,[n(t,i(m(o(e))),null,16)])}}});export{k as __pageData,x as default}; diff --git a/assets/theremin_index.md.0wNNSky6.lean.js b/assets/theremin_index.md.liVXJJN1.lean.js similarity index 81% rename from assets/theremin_index.md.0wNNSky6.lean.js rename to assets/theremin_index.md.liVXJJN1.lean.js index 54e99d13..319f5af8 100644 --- a/assets/theremin_index.md.0wNNSky6.lean.js +++ b/assets/theremin_index.md.liVXJJN1.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as n,R as i,S as m,f as o,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},"relativePath":"theremin/index.md","filePath":"theremin/index.md","lastUpdated":0}'),l={name:"theremin/index.md"},x=Object.assign(l,{setup(p){const{params:e,frontmatter:d}=r();return(u,_)=>{const t=a;return c(),s("div",null,[n(t,i(m(o(e))),null,16)])}}});export{k as __pageData,x as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as i,S as m,f as o,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},"relativePath":"theremin/index.md","filePath":"theremin/index.md","lastUpdated":0}'),l={name:"theremin/index.md"},x=Object.assign(l,{setup(p){const{params:e,frontmatter:d}=r();return(u,_)=>{const t=a;return c(),s("div",null,[n(t,i(m(o(e))),null,16)])}}});export{k as __pageData,x as default}; diff --git a/assets/touch-pianist_index.md.r-ME8R9y.js b/assets/touch-pianist_index.md.C3vy7JwD.js similarity index 89% rename from assets/touch-pianist_index.md.r-ME8R9y.js rename to assets/touch-pianist_index.md.C3vy7JwD.js index 210f46e0..60b91b0a 100644 --- a/assets/touch-pianist_index.md.r-ME8R9y.js +++ b/assets/touch-pianist_index.md.C3vy7JwD.js @@ -1 +1 @@ -import{_ as s}from"./chunks/SynthPage.2tYMmOk8.js";import{s as o,d as i,y as r,R as n,S as c,f as l,g as e,b as u}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const p=e("p",null,"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.",-1),h=e("p",null,"It also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.",-1),m=e("p",null,"Touch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.",-1),P=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":16,"clicks":177,"public":false,"is_new":false,"stats":[15]},"relativePath":"touch-pianist/index.md","filePath":"touch-pianist/index.md","lastUpdated":0}'),f={name:"touch-pianist/index.md"},x=Object.assign(f,{setup(d){const{params:t,frontmatter:_}=o();return(y,v)=>{const a=s;return u(),i("div",null,[r(a,n(c(l(t))),null,16),p,h,m])}}});export{P as __pageData,x as default}; +import{_ as s}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as i,y as r,R as n,S as c,f as l,g as e,b as u}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.",-1),h=e("p",null,"It also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.",-1),m=e("p",null,"Touch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.",-1),P=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":16,"clicks":177,"public":false,"is_new":false,"stats":[15]},"relativePath":"touch-pianist/index.md","filePath":"touch-pianist/index.md","lastUpdated":0}'),f={name:"touch-pianist/index.md"},x=Object.assign(f,{setup(d){const{params:t,frontmatter:_}=o();return(y,v)=>{const a=s;return u(),i("div",null,[r(a,n(c(l(t))),null,16),p,h,m])}}});export{P as __pageData,x as default}; diff --git a/assets/touch-pianist_index.md.r-ME8R9y.lean.js b/assets/touch-pianist_index.md.C3vy7JwD.lean.js similarity index 89% rename from assets/touch-pianist_index.md.r-ME8R9y.lean.js rename to assets/touch-pianist_index.md.C3vy7JwD.lean.js index 210f46e0..60b91b0a 100644 --- a/assets/touch-pianist_index.md.r-ME8R9y.lean.js +++ b/assets/touch-pianist_index.md.C3vy7JwD.lean.js @@ -1 +1 @@ -import{_ as s}from"./chunks/SynthPage.2tYMmOk8.js";import{s as o,d as i,y as r,R as n,S as c,f as l,g as e,b as u}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const p=e("p",null,"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.",-1),h=e("p",null,"It also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.",-1),m=e("p",null,"Touch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.",-1),P=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":16,"clicks":177,"public":false,"is_new":false,"stats":[15]},"relativePath":"touch-pianist/index.md","filePath":"touch-pianist/index.md","lastUpdated":0}'),f={name:"touch-pianist/index.md"},x=Object.assign(f,{setup(d){const{params:t,frontmatter:_}=o();return(y,v)=>{const a=s;return u(),i("div",null,[r(a,n(c(l(t))),null,16),p,h,m])}}});export{P as __pageData,x as default}; +import{_ as s}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as i,y as r,R as n,S as c,f as l,g as e,b as u}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.",-1),h=e("p",null,"It also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.",-1),m=e("p",null,"Touch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.",-1),P=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":16,"clicks":177,"public":false,"is_new":false,"stats":[15]},"relativePath":"touch-pianist/index.md","filePath":"touch-pianist/index.md","lastUpdated":0}'),f={name:"touch-pianist/index.md"},x=Object.assign(f,{setup(d){const{params:t,frontmatter:_}=o();return(y,v)=>{const a=s;return u(),i("div",null,[r(a,n(c(l(t))),null,16),p,h,m])}}});export{P as __pageData,x as default}; diff --git a/assets/touchme_index.md.m_em8ndk.js b/assets/touchme_index.md.BA04O2GJ.js similarity index 81% rename from assets/touchme_index.md.m_em8ndk.js rename to assets/touchme_index.md.BA04O2GJ.js index 9f48fd0e..d4cf513a 100644 --- a/assets/touchme_index.md.m_em8ndk.js +++ b/assets/touchme_index.md.BA04O2GJ.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as o,y as s,R as n,S as c,f as i,b as m}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},"relativePath":"touchme/index.md","filePath":"touchme/index.md","lastUpdated":0}'),l={name:"touchme/index.md"},k=Object.assign(l,{setup(p){const{params:e,frontmatter:u}=r();return(h,_)=>{const t=a;return m(),o("div",null,[s(t,n(c(i(e))),null,16)])}}});export{y as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as o,y as s,R as n,S as c,f as i,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},"relativePath":"touchme/index.md","filePath":"touchme/index.md","lastUpdated":0}'),l={name:"touchme/index.md"},k=Object.assign(l,{setup(p){const{params:e,frontmatter:u}=r();return(h,_)=>{const t=a;return m(),o("div",null,[s(t,n(c(i(e))),null,16)])}}});export{y as __pageData,k as default}; diff --git a/assets/touchme_index.md.m_em8ndk.lean.js b/assets/touchme_index.md.BA04O2GJ.lean.js similarity index 81% rename from assets/touchme_index.md.m_em8ndk.lean.js rename to assets/touchme_index.md.BA04O2GJ.lean.js index 9f48fd0e..d4cf513a 100644 --- a/assets/touchme_index.md.m_em8ndk.lean.js +++ b/assets/touchme_index.md.BA04O2GJ.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as o,y as s,R as n,S as c,f as i,b as m}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},"relativePath":"touchme/index.md","filePath":"touchme/index.md","lastUpdated":0}'),l={name:"touchme/index.md"},k=Object.assign(l,{setup(p){const{params:e,frontmatter:u}=r();return(h,_)=>{const t=a;return m(),o("div",null,[s(t,n(c(i(e))),null,16)])}}});export{y as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as o,y as s,R as n,S as c,f as i,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},"relativePath":"touchme/index.md","filePath":"touchme/index.md","lastUpdated":0}'),l={name:"touchme/index.md"},k=Object.assign(l,{setup(p){const{params:e,frontmatter:u}=r();return(h,_)=>{const t=a;return m(),o("div",null,[s(t,n(c(i(e))),null,16)])}}});export{y as __pageData,k as default}; diff --git a/assets/typedrummer_index.md.a07jZSo7.js b/assets/typedrummer_index.md.DmcuwI39.js similarity index 82% rename from assets/typedrummer_index.md.a07jZSo7.js rename to assets/typedrummer_index.md.DmcuwI39.js index fea88a68..c7c2fd95 100644 --- a/assets/typedrummer_index.md.a07jZSo7.js +++ b/assets/typedrummer_index.md.DmcuwI39.js @@ -1 +1 @@ -import{_ as r}from"./chunks/SynthPage.2tYMmOk8.js";import{s as a,d as s,y as m,R as o,S as n,f as c,b as p}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":46,"clicks":21,"public":false,"is_new":false,"stats":[42]},"relativePath":"typedrummer/index.md","filePath":"typedrummer/index.md","lastUpdated":0}'),i={name:"typedrummer/index.md"},v=Object.assign(i,{setup(d){const{params:e,frontmatter:l}=a();return(u,_)=>{const t=r;return p(),s("div",null,[m(t,o(n(c(e))),null,16)])}}});export{k as __pageData,v as default}; +import{_ as r}from"./chunks/SynthPage.DHgkhPru.js";import{s as a,d as s,y as m,R as o,S as n,f as c,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":46,"clicks":21,"public":false,"is_new":false,"stats":[42]},"relativePath":"typedrummer/index.md","filePath":"typedrummer/index.md","lastUpdated":0}'),i={name:"typedrummer/index.md"},v=Object.assign(i,{setup(d){const{params:e,frontmatter:l}=a();return(u,_)=>{const t=r;return p(),s("div",null,[m(t,o(n(c(e))),null,16)])}}});export{k as __pageData,v as default}; diff --git a/assets/typedrummer_index.md.a07jZSo7.lean.js b/assets/typedrummer_index.md.DmcuwI39.lean.js similarity index 82% rename from assets/typedrummer_index.md.a07jZSo7.lean.js rename to assets/typedrummer_index.md.DmcuwI39.lean.js index fea88a68..c7c2fd95 100644 --- a/assets/typedrummer_index.md.a07jZSo7.lean.js +++ b/assets/typedrummer_index.md.DmcuwI39.lean.js @@ -1 +1 @@ -import{_ as r}from"./chunks/SynthPage.2tYMmOk8.js";import{s as a,d as s,y as m,R as o,S as n,f as c,b as p}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":46,"clicks":21,"public":false,"is_new":false,"stats":[42]},"relativePath":"typedrummer/index.md","filePath":"typedrummer/index.md","lastUpdated":0}'),i={name:"typedrummer/index.md"},v=Object.assign(i,{setup(d){const{params:e,frontmatter:l}=a();return(u,_)=>{const t=r;return p(),s("div",null,[m(t,o(n(c(e))),null,16)])}}});export{k as __pageData,v as default}; +import{_ as r}from"./chunks/SynthPage.DHgkhPru.js";import{s as a,d as s,y as m,R as o,S as n,f as c,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":46,"clicks":21,"public":false,"is_new":false,"stats":[42]},"relativePath":"typedrummer/index.md","filePath":"typedrummer/index.md","lastUpdated":0}'),i={name:"typedrummer/index.md"},v=Object.assign(i,{setup(d){const{params:e,frontmatter:l}=a();return(u,_)=>{const t=r;return p(),s("div",null,[m(t,o(n(c(e))),null,16)])}}});export{k as __pageData,v as default}; diff --git a/assets/video-sampler_index.md.656zZ_4g.js b/assets/video-sampler_index.md.Dym51vwm.js similarity index 75% rename from assets/video-sampler_index.md.656zZ_4g.js rename to assets/video-sampler_index.md.Dym51vwm.js index 6cdf54a0..f837cc97 100644 --- a/assets/video-sampler_index.md.656zZ_4g.js +++ b/assets/video-sampler_index.md.Dym51vwm.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as i,R as n,S as o,f as l,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":20,"clicks":256,"public":false,"is_new":false,"stats":[18]},"relativePath":"video-sampler/index.md","filePath":"video-sampler/index.md","lastUpdated":0}'),p={name:"video-sampler/index.md"},P=Object.assign(p,{setup(d){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return c(),r("div",null,[i(a,n(o(l(e))),null,16)])}}});export{y as __pageData,P as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as n,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":20,"clicks":256,"public":false,"is_new":false,"stats":[18]},"relativePath":"video-sampler/index.md","filePath":"video-sampler/index.md","lastUpdated":0}'),p={name:"video-sampler/index.md"},P=Object.assign(p,{setup(d){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return c(),r("div",null,[i(a,n(o(l(e))),null,16)])}}});export{y as __pageData,P as default}; diff --git a/assets/video-sampler_index.md.656zZ_4g.lean.js b/assets/video-sampler_index.md.Dym51vwm.lean.js similarity index 75% rename from assets/video-sampler_index.md.656zZ_4g.lean.js rename to assets/video-sampler_index.md.Dym51vwm.lean.js index 6cdf54a0..f837cc97 100644 --- a/assets/video-sampler_index.md.656zZ_4g.lean.js +++ b/assets/video-sampler_index.md.Dym51vwm.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as r,y as i,R as n,S as o,f as l,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":20,"clicks":256,"public":false,"is_new":false,"stats":[18]},"relativePath":"video-sampler/index.md","filePath":"video-sampler/index.md","lastUpdated":0}'),p={name:"video-sampler/index.md"},P=Object.assign(p,{setup(d){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return c(),r("div",null,[i(a,n(o(l(e))),null,16)])}}});export{y as __pageData,P as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as n,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":20,"clicks":256,"public":false,"is_new":false,"stats":[18]},"relativePath":"video-sampler/index.md","filePath":"video-sampler/index.md","lastUpdated":0}'),p={name:"video-sampler/index.md"},P=Object.assign(p,{setup(d){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return c(),r("div",null,[i(a,n(o(l(e))),null,16)])}}});export{y as __pageData,P as default}; diff --git a/assets/virtual-piano_index.md.9m-wbGCk.js b/assets/virtual-piano_index.md.CDW6WFuf.js similarity index 87% rename from assets/virtual-piano_index.md.9m-wbGCk.js rename to assets/virtual-piano_index.md.CDW6WFuf.js index 5d6821f7..f044333b 100644 --- a/assets/virtual-piano_index.md.9m-wbGCk.js +++ b/assets/virtual-piano_index.md.CDW6WFuf.js @@ -1 +1 @@ -import{_ as n}from"./chunks/SynthPage.2tYMmOk8.js";import{s as o,d as s,y as r,R as i,S as l,f as u,g as e,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const d=e("p",null,"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.",-1),p=e("p",null,"You 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.",-1),m=e("p",null,"Create your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own.",-1),w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":25,"clicks":282,"public":false,"is_new":false,"stats":[21]},"relativePath":"virtual-piano/index.md","filePath":"virtual-piano/index.md","lastUpdated":0}'),_={name:"virtual-piano/index.md"},x=Object.assign(_,{setup(h){const{params:a,frontmatter:f}=o();return(y,v)=>{const t=n;return c(),s("div",null,[r(t,i(l(u(a))),null,16),d,p,m])}}});export{w as __pageData,x as default}; +import{_ as n}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as s,y as r,R as i,S as l,f as u,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const d=e("p",null,"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.",-1),p=e("p",null,"You 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.",-1),m=e("p",null,"Create your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own.",-1),w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":25,"clicks":282,"public":false,"is_new":false,"stats":[21]},"relativePath":"virtual-piano/index.md","filePath":"virtual-piano/index.md","lastUpdated":0}'),_={name:"virtual-piano/index.md"},x=Object.assign(_,{setup(h){const{params:a,frontmatter:f}=o();return(y,v)=>{const t=n;return c(),s("div",null,[r(t,i(l(u(a))),null,16),d,p,m])}}});export{w as __pageData,x as default}; diff --git a/assets/virtual-piano_index.md.9m-wbGCk.lean.js b/assets/virtual-piano_index.md.CDW6WFuf.lean.js similarity index 87% rename from assets/virtual-piano_index.md.9m-wbGCk.lean.js rename to assets/virtual-piano_index.md.CDW6WFuf.lean.js index 5d6821f7..f044333b 100644 --- a/assets/virtual-piano_index.md.9m-wbGCk.lean.js +++ b/assets/virtual-piano_index.md.CDW6WFuf.lean.js @@ -1 +1 @@ -import{_ as n}from"./chunks/SynthPage.2tYMmOk8.js";import{s as o,d as s,y as r,R as i,S as l,f as u,g as e,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const d=e("p",null,"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.",-1),p=e("p",null,"You 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.",-1),m=e("p",null,"Create your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own.",-1),w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":25,"clicks":282,"public":false,"is_new":false,"stats":[21]},"relativePath":"virtual-piano/index.md","filePath":"virtual-piano/index.md","lastUpdated":0}'),_={name:"virtual-piano/index.md"},x=Object.assign(_,{setup(h){const{params:a,frontmatter:f}=o();return(y,v)=>{const t=n;return c(),s("div",null,[r(t,i(l(u(a))),null,16),d,p,m])}}});export{w as __pageData,x as default}; +import{_ as n}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as s,y as r,R as i,S as l,f as u,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const d=e("p",null,"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.",-1),p=e("p",null,"You 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.",-1),m=e("p",null,"Create your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own.",-1),w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":25,"clicks":282,"public":false,"is_new":false,"stats":[21]},"relativePath":"virtual-piano/index.md","filePath":"virtual-piano/index.md","lastUpdated":0}'),_={name:"virtual-piano/index.md"},x=Object.assign(_,{setup(h){const{params:a,frontmatter:f}=o();return(y,v)=>{const t=n;return c(),s("div",null,[r(t,i(l(u(a))),null,16),d,p,m])}}});export{w as __pageData,x as default}; diff --git a/assets/waveform_index.md.QmdF15tC.js b/assets/waveform_index.md.CU21Le1y.js similarity index 75% rename from assets/waveform_index.md.QmdF15tC.js rename to assets/waveform_index.md.CU21Le1y.js index b4f34c0b..7b285492 100644 --- a/assets/waveform_index.md.QmdF15tC.js +++ b/assets/waveform_index.md.CU21Le1y.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as o,y as s,R as n,S as i,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6791,"public":true,"is_new":false,"stats":[2]},"relativePath":"waveform/index.md","filePath":"waveform/index.md","lastUpdated":0}'),m={name:"waveform/index.md"},b=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=r();return(f,_)=>{const e=t;return l(),o("div",null,[s(e,n(i(c(a))),null,16)])}}});export{y as __pageData,b as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as o,y as s,R as n,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6794,"public":true,"is_new":false,"stats":[2]},"relativePath":"waveform/index.md","filePath":"waveform/index.md","lastUpdated":0}'),m={name:"waveform/index.md"},b=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=r();return(f,_)=>{const e=t;return l(),o("div",null,[s(e,n(i(c(a))),null,16)])}}});export{y as __pageData,b as default}; diff --git a/assets/waveform_index.md.QmdF15tC.lean.js b/assets/waveform_index.md.CU21Le1y.lean.js similarity index 75% rename from assets/waveform_index.md.QmdF15tC.lean.js rename to assets/waveform_index.md.CU21Le1y.lean.js index b4f34c0b..7b285492 100644 --- a/assets/waveform_index.md.QmdF15tC.lean.js +++ b/assets/waveform_index.md.CU21Le1y.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as o,y as s,R as n,S as i,f as c,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6791,"public":true,"is_new":false,"stats":[2]},"relativePath":"waveform/index.md","filePath":"waveform/index.md","lastUpdated":0}'),m={name:"waveform/index.md"},b=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=r();return(f,_)=>{const e=t;return l(),o("div",null,[s(e,n(i(c(a))),null,16)])}}});export{y as __pageData,b as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as o,y as s,R as n,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6794,"public":true,"is_new":false,"stats":[2]},"relativePath":"waveform/index.md","filePath":"waveform/index.md","lastUpdated":0}'),m={name:"waveform/index.md"},b=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=r();return(f,_)=>{const e=t;return l(),o("div",null,[s(e,n(i(c(a))),null,16)])}}});export{y as __pageData,b as default}; diff --git a/assets/web-audio-synth-v2_index.md.6oStb7PN.js b/assets/web-audio-synth-v2_index.md.DfHaKltn.js similarity index 75% rename from assets/web-audio-synth-v2_index.md.6oStb7PN.js rename to assets/web-audio-synth-v2_index.md.DfHaKltn.js index 7d9592c0..e9777d59 100644 --- a/assets/web-audio-synth-v2_index.md.6oStb7PN.js +++ b/assets/web-audio-synth-v2_index.md.DfHaKltn.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as r,R as i,S as o,f as l,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":43,"clicks":305,"public":false,"is_new":false,"stats":[39]},"relativePath":"web-audio-synth-v2/index.md","filePath":"web-audio-synth-v2/index.md","lastUpdated":0}'),d={name:"web-audio-synth-v2/index.md"},g=Object.assign(d,{setup(u){const{params:e,frontmatter:p}=s();return(m,_)=>{const t=a;return c(),n("div",null,[r(t,i(o(l(e))),null,16)])}}});export{y as __pageData,g as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as i,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":43,"clicks":305,"public":false,"is_new":false,"stats":[39]},"relativePath":"web-audio-synth-v2/index.md","filePath":"web-audio-synth-v2/index.md","lastUpdated":0}'),d={name:"web-audio-synth-v2/index.md"},g=Object.assign(d,{setup(u){const{params:e,frontmatter:p}=s();return(m,_)=>{const t=a;return c(),n("div",null,[r(t,i(o(l(e))),null,16)])}}});export{y as __pageData,g as default}; diff --git a/assets/web-audio-synth-v2_index.md.6oStb7PN.lean.js b/assets/web-audio-synth-v2_index.md.DfHaKltn.lean.js similarity index 75% rename from assets/web-audio-synth-v2_index.md.6oStb7PN.lean.js rename to assets/web-audio-synth-v2_index.md.DfHaKltn.lean.js index 7d9592c0..e9777d59 100644 --- a/assets/web-audio-synth-v2_index.md.6oStb7PN.lean.js +++ b/assets/web-audio-synth-v2_index.md.DfHaKltn.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as r,R as i,S as o,f as l,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":43,"clicks":305,"public":false,"is_new":false,"stats":[39]},"relativePath":"web-audio-synth-v2/index.md","filePath":"web-audio-synth-v2/index.md","lastUpdated":0}'),d={name:"web-audio-synth-v2/index.md"},g=Object.assign(d,{setup(u){const{params:e,frontmatter:p}=s();return(m,_)=>{const t=a;return c(),n("div",null,[r(t,i(o(l(e))),null,16)])}}});export{y as __pageData,g as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as i,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":43,"clicks":305,"public":false,"is_new":false,"stats":[39]},"relativePath":"web-audio-synth-v2/index.md","filePath":"web-audio-synth-v2/index.md","lastUpdated":0}'),d={name:"web-audio-synth-v2/index.md"},g=Object.assign(d,{setup(u){const{params:e,frontmatter:p}=s();return(m,_)=>{const t=a;return c(),n("div",null,[r(t,i(o(l(e))),null,16)])}}});export{y as __pageData,g as default}; diff --git a/assets/web-modular_index.md.OnRXJCu2.js b/assets/web-modular_index.md.BlpY_Crm.js similarity index 81% rename from assets/web-modular_index.md.OnRXJCu2.js rename to assets/web-modular_index.md.BlpY_Crm.js index f4e189e9..ed3097fb 100644 --- a/assets/web-modular_index.md.OnRXJCu2.js +++ b/assets/web-modular_index.md.BlpY_Crm.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as o,R as l,S as n,f as c,b as i}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":29,"clicks":202,"public":false,"is_new":false,"stats":[25]},"relativePath":"web-modular/index.md","filePath":"web-modular/index.md","lastUpdated":0}'),d={name:"web-modular/index.md"},k=Object.assign(d,{setup(m){const{params:e,frontmatter:u}=r();return(p,_)=>{const a=t;return i(),s("div",null,[o(a,l(n(c(e))),null,16)])}}});export{w as __pageData,k as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as o,R as l,S as n,f as c,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":29,"clicks":202,"public":false,"is_new":false,"stats":[25]},"relativePath":"web-modular/index.md","filePath":"web-modular/index.md","lastUpdated":0}'),d={name:"web-modular/index.md"},k=Object.assign(d,{setup(m){const{params:e,frontmatter:u}=r();return(p,_)=>{const a=t;return i(),s("div",null,[o(a,l(n(c(e))),null,16)])}}});export{w as __pageData,k as default}; diff --git a/assets/web-modular_index.md.OnRXJCu2.lean.js b/assets/web-modular_index.md.BlpY_Crm.lean.js similarity index 81% rename from assets/web-modular_index.md.OnRXJCu2.lean.js rename to assets/web-modular_index.md.BlpY_Crm.lean.js index f4e189e9..ed3097fb 100644 --- a/assets/web-modular_index.md.OnRXJCu2.lean.js +++ b/assets/web-modular_index.md.BlpY_Crm.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s as r,d as s,y as o,R as l,S as n,f as c,b as i}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":29,"clicks":202,"public":false,"is_new":false,"stats":[25]},"relativePath":"web-modular/index.md","filePath":"web-modular/index.md","lastUpdated":0}'),d={name:"web-modular/index.md"},k=Object.assign(d,{setup(m){const{params:e,frontmatter:u}=r();return(p,_)=>{const a=t;return i(),s("div",null,[o(a,l(n(c(e))),null,16)])}}});export{w as __pageData,k as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as o,R as l,S as n,f as c,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":29,"clicks":202,"public":false,"is_new":false,"stats":[25]},"relativePath":"web-modular/index.md","filePath":"web-modular/index.md","lastUpdated":0}'),d={name:"web-modular/index.md"},k=Object.assign(d,{setup(m){const{params:e,frontmatter:u}=r();return(p,_)=>{const a=t;return i(),s("div",null,[o(a,l(n(c(e))),null,16)])}}});export{w as __pageData,k as default}; diff --git a/assets/web-sid_index.md.0IOPw0KA.js b/assets/web-sid_index.md.ByPZsRUf.js similarity index 76% rename from assets/web-sid_index.md.0IOPw0KA.js rename to assets/web-sid_index.md.ByPZsRUf.js index 102a7932..eb1a894c 100644 --- a/assets/web-sid_index.md.0IOPw0KA.js +++ b/assets/web-sid_index.md.ByPZsRUf.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as i,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":23,"clicks":155,"public":false,"is_new":false,"stats":[19]},"relativePath":"web-sid/index.md","filePath":"web-sid/index.md","lastUpdated":0}'),c={name:"web-sid/index.md"},k=Object.assign(c,{setup(p){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return l(),i("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as i,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":23,"clicks":155,"public":false,"is_new":false,"stats":[19]},"relativePath":"web-sid/index.md","filePath":"web-sid/index.md","lastUpdated":0}'),c={name:"web-sid/index.md"},k=Object.assign(c,{setup(p){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return l(),i("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/web-sid_index.md.0IOPw0KA.lean.js b/assets/web-sid_index.md.ByPZsRUf.lean.js similarity index 76% rename from assets/web-sid_index.md.0IOPw0KA.lean.js rename to assets/web-sid_index.md.ByPZsRUf.lean.js index 102a7932..eb1a894c 100644 --- a/assets/web-sid_index.md.0IOPw0KA.lean.js +++ b/assets/web-sid_index.md.ByPZsRUf.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as i,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":23,"clicks":155,"public":false,"is_new":false,"stats":[19]},"relativePath":"web-sid/index.md","filePath":"web-sid/index.md","lastUpdated":0}'),c={name:"web-sid/index.md"},k=Object.assign(c,{setup(p){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return l(),i("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as i,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":23,"clicks":155,"public":false,"is_new":false,"stats":[19]},"relativePath":"web-sid/index.md","filePath":"web-sid/index.md","lastUpdated":0}'),c={name:"web-sid/index.md"},k=Object.assign(c,{setup(p){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return l(),i("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/websynths_index.md.azq6AXsw.js b/assets/websynths_index.md.CFZlS4ic.js similarity index 74% rename from assets/websynths_index.md.azq6AXsw.js rename to assets/websynths_index.md.CFZlS4ic.js index 72eebd42..167d81df 100644 --- a/assets/websynths_index.md.azq6AXsw.js +++ b/assets/websynths_index.md.CFZlS4ic.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as r,R as o,S as i,f as l,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths","slug":"websynths","author":"WebSynths","author_link":"https://www.websynths.org/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},"relativePath":"websynths/index.md","filePath":"websynths/index.md","lastUpdated":0}'),p={name:"websynths/index.md"},g=Object.assign(p,{setup(m){const{params:t,frontmatter:_}=s();return(d,h)=>{const e=a;return c(),n("div",null,[r(e,o(i(l(t))),null,16)])}}});export{w as __pageData,g as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as o,S as i,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths","slug":"websynths","author":"WebSynths","author_link":"https://www.websynths.org/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},"relativePath":"websynths/index.md","filePath":"websynths/index.md","lastUpdated":0}'),p={name:"websynths/index.md"},g=Object.assign(p,{setup(m){const{params:t,frontmatter:_}=s();return(d,h)=>{const e=a;return c(),n("div",null,[r(e,o(i(l(t))),null,16)])}}});export{w as __pageData,g as default}; diff --git a/assets/websynths_index.md.azq6AXsw.lean.js b/assets/websynths_index.md.CFZlS4ic.lean.js similarity index 74% rename from assets/websynths_index.md.azq6AXsw.lean.js rename to assets/websynths_index.md.CFZlS4ic.lean.js index 72eebd42..167d81df 100644 --- a/assets/websynths_index.md.azq6AXsw.lean.js +++ b/assets/websynths_index.md.CFZlS4ic.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.2tYMmOk8.js";import{s,d as n,y as r,R as o,S as i,f as l,b as c}from"./chunks/framework.HWRfC0Fd.js";import"./chunks/useClicks.CJYHtBYH.js";import"./chunks/index.Q2UX5ner.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths","slug":"websynths","author":"WebSynths","author_link":"https://www.websynths.org/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},"relativePath":"websynths/index.md","filePath":"websynths/index.md","lastUpdated":0}'),p={name:"websynths/index.md"},g=Object.assign(p,{setup(m){const{params:t,frontmatter:_}=s();return(d,h)=>{const e=a;return c(),n("div",null,[r(e,o(i(l(t))),null,16)])}}});export{w as __pageData,g as default}; +import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as o,S as i,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths","slug":"websynths","author":"WebSynths","author_link":"https://www.websynths.org/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},"relativePath":"websynths/index.md","filePath":"websynths/index.md","lastUpdated":0}'),p={name:"websynths/index.md"},g=Object.assign(p,{setup(m){const{params:t,frontmatter:_}=s();return(d,h)=>{const e=a;return c(),n("div",null,[r(e,o(i(l(t))),null,16)])}}});export{w as __pageData,g as default}; diff --git a/auth.html b/auth.html index 87363406..6c7f1977 100644 --- a/auth.html +++ b/auth.html @@ -5,13 +5,13 @@ Directus auth links | Online web audio instruments collection - - + + - - - - + + + + @@ -42,7 +42,7 @@ - + \ No newline at end of file diff --git a/auth/accept.html b/auth/accept.html index c8e57c49..5c41bd3e 100644 --- a/auth/accept.html +++ b/auth/accept.html @@ -5,13 +5,13 @@ Accept an invite | Online web audio instruments collection - - + + - - - - + + + + @@ -42,7 +42,7 @@

ACCEPT INVITE PAGE

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/auth/index.html b/auth/index.html index 68096f57..a64c7131 100644 --- a/auth/index.html +++ b/auth/index.html @@ -5,14 +5,14 @@ Login | Online web audio instruments collection - - + + - - - - - + + + + + @@ -43,7 +43,7 @@
Login to your account
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/auth/invite.html b/auth/invite.html index 97675f60..e53e4d89 100644 --- a/auth/invite.html +++ b/auth/invite.html @@ -5,13 +5,13 @@ Invite | Online web audio instruments collection - - + + - - - - + + + + @@ -42,7 +42,7 @@

Invite a new user PAGE

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/auth/logout.html b/auth/logout.html index d2e105c1..19811d2b 100644 --- a/auth/logout.html +++ b/auth/logout.html @@ -5,13 +5,13 @@ Log Out | Online web audio instruments collection - - + + - - - - + + + + @@ -42,7 +42,7 @@

LOGIN PAGE

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/auth/reset.html b/auth/reset.html index c976146a..20f3eaf9 100644 --- a/auth/reset.html +++ b/auth/reset.html @@ -5,13 +5,13 @@ Reset password | Online web audio instruments collection - - + + - - - - + + + + @@ -42,7 +42,7 @@

PASSWORD RESET PAGE

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/bassoon/index.html b/bassoon/index.html index 73d97de5..270ce6b6 100644 --- a/bassoon/index.html +++ b/bassoon/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Bassoon Tracker
by Steffest
FM
tracker
8-bit
low-fi
Browser-based old-school Amiga Music Tracker in plain old JavaScript.
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/beepbox/index.html b/beepbox/index.html index d9ad49ee..93f41ab5 100644 --- a/beepbox/index.html +++ b/beepbox/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -49,7 +49,7 @@ All song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song! BeepBox is a passion project, and will always be free to use.

BeepBox is developed by John Nesky.

BeepBox does not claim ownership over songs created with it, so original songs belong to their authors.

Neither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data.

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/blokdust/index.html b/blokdust/index.html index 8c093e04..f5e1031d 100644 --- a/blokdust/index.html +++ b/blokdust/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
creative
sequencer
BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.

Luke Twyman - project concept, design & Ul. whitevinyldesign.com @whitevinylUK Luke Phillips - audio development & musical interaction. femurdesign.com @lukephills Edward Silverton - client & server architecture & core development. edsilv.com @edsilv

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/cardboard-synth/index.html b/cardboard-synth/index.html index 30a48138..0a23e84d 100644 --- a/cardboard-synth/index.html +++ b/cardboard-synth/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/chrome-lab/index.html b/chrome-lab/index.html index b549006d..25ea78fe 100644 --- a/chrome-lab/index.html +++ b/chrome-lab/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Chrome Music Lab
by Google
Educational
Keyboard
MIDI
Poly
Piano
Analysis
Mic
Visuals
Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.

What can it be used for? ​

Many teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.

Can I use it to make my own songs? ​

Yes. Check out the Song Maker experiment, which lets you make and share your own songs.

Do I need to make an account? ​

Nope. Just open any experiment and start playing.

How were these built? ​

All our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on Github.

What devices do these work on? ​

You can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/disco-computer/index.html b/disco-computer/index.html index 8b64dcc1..5c4bb520 100644 --- a/disco-computer/index.html +++ b/disco-computer/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Disco-computer
by Patrick Sawyer
polyphonic
fm
keyboard
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/dotpiano/index.html b/dotpiano/index.html index 1ac1df55..2806fd54 100644 --- a/dotpiano/index.html +++ b/dotpiano/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Dotpiano
by Alex Chen and Yotam Mann
polyphonic
midi
keyboard
Multiplayer
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/dx7/index.html b/dx7/index.html index acc22377..74530636 100644 --- a/dx7/index.html +++ b/dx7/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/elementary/index.html b/elementary/index.html index 388d95b5..19ab147c 100644 --- a/elementary/index.html +++ b/elementary/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Elementary synth
by Chromatone
chromatone
polyphonic
keyboard
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/groove-pizza/index.html b/groove-pizza/index.html index c354d94a..1409b1e2 100644 --- a/groove-pizza/index.html +++ b/groove-pizza/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
drums
sequencer
Educational
Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 1e188806..f7cb7ec9 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"sound-box_index.md":"HGynRcEJ","auth_index.md":"n2YQLYnx","dotpiano_index.md":"y0oBIdM9","auth.md":"EzrJ2Dtm","touchme_index.md":"m_em8ndk","muted-io_index.md":"Lsfx_ACP","ableton_index.md":"8DfCPC2G","soundfont_index.md":"UQL3MRqg","theremin_index.md":"0wNNSky6","midi-city_index.md":"6Hp5JLbP","virtual-piano_index.md":"9m-wbGCk","sympathetic_index.md":"gT5FhYkD","multiplayer-piano_index.md":"HrDjh3Ou","cardboard-synth_index.md":"9HVAVqO5","midi-driven-web-audio_index.md":"_VpK9rcC","sample-stich_index.md":"4WwbV1RN","online-sequencer_index.md":"9EhdgJZ8","tanguy-synth_index.md":"LICvHysz","web-audio-synth-v2_index.md":"6oStb7PN","sound-trap_index.md":"aHWlI-uv","auth_invite.md":"0Ao_I84l","auth_reset.md":"CD545pEH","omni_index.md":"nq2BAt52","bassoon_index.md":"t4QY1DDS","meet-the-heisenberg_index.md":"dH-ODu-r","disco-computer_index.md":"CijxVoeF","aqwertyon_index.md":"sy_D1v3t","chrome-lab_index.md":"-7aR30bi","acid-machine-2_index.md":"3Csm2P_h","waveform_index.md":"QmdF15tC","auth_accept.md":"7cs-uWFD","readme.md":"4ThR-heF","dx7_index.md":"gR5JXkJK","websynths_index.md":"azq6AXsw","index.md":"cf3pcfxO","pixel-synth_index.md":"WFKUMjSj","juno-106_index.md":"6Y4xCWCG","touch-pianist_index.md":"r-ME8R9y","elementary_index.md":"6CiyeB9r","groove-pizza_index.md":"5djMEmMm","beepbox_index.md":"95bPjioH","auth_logout.md":"HN7sWFid","blokdust_index.md":"3G1OFo-y","isleoftune_index.md":"gw8z-0YW","mod-synth_index.md":"GRzJcX_z","olif-sy-1-k_index.md":"dyYwXcMw","note-sculptor_index.md":"pNXoUhje","web-sid_index.md":"0IOPw0KA","typedrummer_index.md":"a07jZSo7","nv-1_index.md":"4ETA3AFj","web-modular_index.md":"OnRXJCu2","video-sampler_index.md":"656zZ_4g","roland50_index.md":"9Kxg99A7"} +{"dx7_index.md":"CTqZumAe","ableton_index.md":"Cg4KKF7N","readme.md":"D9FcETfF","bassoon_index.md":"BTdiYICS","auth_reset.md":"DcV3kbsy","disco-computer_index.md":"wWuluDm_","auth_logout.md":"Cewl1AND","auth_index.md":"QeBiS1Uo","theremin_index.md":"liVXJJN1","sympathetic_index.md":"B9hVY9QB","soundfont_index.md":"B2d0-Ban","elementary_index.md":"BwvTZPnD","web-modular_index.md":"BlpY_Crm","chrome-lab_index.md":"BvBA9nEa","midi-driven-web-audio_index.md":"qU5pFBbC","aqwertyon_index.md":"DeEJlWSG","waveform_index.md":"CU21Le1y","multiplayer-piano_index.md":"Drty2YzX","cardboard-synth_index.md":"lsU4RynP","blokdust_index.md":"BZXK4-FO","tanguy-synth_index.md":"DIyIIeiH","mod-synth_index.md":"Pqf1q9QQ","note-sculptor_index.md":"DjHcDrJl","web-audio-synth-v2_index.md":"DfHaKltn","olif-sy-1-k_index.md":"TAvvbtnv","sound-trap_index.md":"DPgmLcVq","isleoftune_index.md":"CagvHWez","typedrummer_index.md":"DmcuwI39","auth_invite.md":"DdrEzK2j","pixel-synth_index.md":"CIxj1_zW","auth.md":"D0LWfyqF","auth_accept.md":"Fnf3Jp_6","websynths_index.md":"CFZlS4ic","touchme_index.md":"BA04O2GJ","muted-io_index.md":"7HkqgXgG","touch-pianist_index.md":"C3vy7JwD","web-sid_index.md":"ByPZsRUf","nv-1_index.md":"AxF6N6eW","virtual-piano_index.md":"CDW6WFuf","sound-box_index.md":"vcTJLzSz","groove-pizza_index.md":"BlSmjWiK","online-sequencer_index.md":"KBCOH-xk","sample-stich_index.md":"Bijh8Pq9","beepbox_index.md":"DCxpwyWi","dotpiano_index.md":"BE4cP1vy","omni_index.md":"BPzyxoOJ","juno-106_index.md":"C-HewMMo","roland50_index.md":"Mconyk1H","video-sampler_index.md":"Dym51vwm","index.md":"Dn_VxzHO","acid-machine-2_index.md":"CCZ5MGY2","meet-the-heisenberg_index.md":"CGlS22SQ","midi-city_index.md":"C_bw8Wmp"} diff --git a/index.html b/index.html index a8cbaa35..a5298ffb 100644 --- a/index.html +++ b/index.html @@ -5,15 +5,15 @@ Web synths | Online web audio instruments collection - - + + - - - - - - + + + + + + @@ -147,7 +147,7 @@ Edward Silverton - client & server architecture & core development. edsilv.com @edsilv" data-v-f3c34bc1>
Chromatone is an open source visual music language for education, research and performance. We develop a new universal way to communicate music. Playtronica is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Together we share our passion for online music instruments.
0
web synths
0+
web musicians

Welcome to the community of web-based musicians!

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/isleoftune/index.html b/isleoftune/index.html index 36ab4432..0b9cb9c2 100644 --- a/isleoftune/index.html +++ b/isleoftune/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Isle of Tune
by Jim Hall
game
sequencer
Draw an island, where everything plays music.
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/juno-106/index.html b/juno-106/index.html index edd1eabf..837a8245 100644 --- a/juno-106/index.html +++ b/juno-106/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/meet-the-heisenberg/index.html b/meet-the-heisenberg/index.html index 3251fb1b..d324e71a 100644 --- a/meet-the-heisenberg/index.html +++ b/meet-the-heisenberg/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/midi-city/index.html b/midi-city/index.html index 92d540b5..e4c26883 100644 --- a/midi-city/index.html +++ b/midi-city/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -47,7 +47,7 @@
midi.city is a free online synthesizer, built by Jack. midi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.

midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.

  • Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing.
  • Groove Monkee: graciously provided the MIDI files that are used for the percussion loops.
  • Keenan Brand: created the midi.city logo and various icons used on the site.
  • Noun Project: various icons are used via a Pro license.
  • Google Material Design: various icons.
  • Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API.
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/midi-driven-web-audio/index.html b/midi-driven-web-audio/index.html index 787aada2..3df6f88e 100644 --- a/midi-driven-web-audio/index.html +++ b/midi-driven-web-audio/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/mod-synth/index.html b/mod-synth/index.html index 95882444..572d1714 100644 --- a/mod-synth/index.html +++ b/mod-synth/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/multiplayer-piano/index.html b/multiplayer-piano/index.html index ce276259..135091d2 100644 --- a/multiplayer-piano/index.html +++ b/multiplayer-piano/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Multiplayer Piano
by Brandon Lockaby
Piano
MIDI
Poly
Multiplayer
Online piano, that can be played by any site visitor together in a virtual room or alone.
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/muted-io/index.html b/muted-io/index.html index 0a51f817..15cb11e8 100644 --- a/muted-io/index.html +++ b/muted-io/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/note-sculptor/index.html b/note-sculptor/index.html index f537349d..62afd05e 100644 --- a/note-sculptor/index.html +++ b/note-sculptor/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Note Sculptor
by Ruin Technology
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/nv-1/index.html b/nv-1/index.html index e5305d54..5c11ff01 100644 --- a/nv-1/index.html +++ b/nv-1/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/olif-sy-1-k/index.html b/olif-sy-1-k/index.html index 7103a91f..38c070ad 100644 --- a/olif-sy-1-k/index.html +++ b/olif-sy-1-k/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/omni/index.html b/omni/index.html index de2d52ed..a07e15c5 100644 --- a/omni/index.html +++ b/omni/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/online-sequencer/index.html b/online-sequencer/index.html index e344cc5f..a9367dbe 100644 --- a/online-sequencer/index.html +++ b/online-sequencer/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@

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.

Upon 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.

History ​

Online Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.

Beginning 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.

In 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.

The 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.

Starting 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.

In 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.

Currently, the 10-Year Anniversary Contest is being held.

Features ​

Within the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.

Basic features ​

UI features include:

  • Tempo (10-999 BPM)
  • Measure count or Time count (MM: SS.ssss)
  • Time signature (2/4, 3/4, 4/4, 5/4)
  • Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)
  • Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)
  • Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)
  • Title input
  • Draw, select, and erase
  • Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)
  • Select all, Cut, Copy, and Paste
  • Zoom options
  • Export options
  • Help
  • Fullscreen
  • Tooltips

Advanced features ​

Users 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.

OS 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.

Browser and device support ​

Online 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.

Other 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.

The 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.

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/pixel-synth/index.html b/pixel-synth/index.html index aa27a568..f5e5ad87 100644 --- a/pixel-synth/index.html +++ b/pixel-synth/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/roland50/index.html b/roland50/index.html index b27f215a..60929f33 100644 --- a/roland50/index.html +++ b/roland50/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -46,7 +46,7 @@
Roland 50 Studio
by Yuri Suzuki
drum machine
SP404
TR808
TB303
Step sequencer
It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download. On top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/sample-stich/index.html b/sample-stich/index.html index f53e7a99..795e3548 100644 --- a/sample-stich/index.html +++ b/sample-stich/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 6295e9ce..e4e558e7 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://synth.playtronica.com/README2024-03-14T07:07:43.000Zhttps://synth.playtronica.com/auth2024-03-14T07:07:43.000Zhttps://synth.playtronica.com/auth/accept2024-03-14T07:07:43.000Zhttps://synth.playtronica.com/auth/2024-03-14T07:07:43.000Zhttps://synth.playtronica.com/auth/invite2024-03-14T07:07:43.000Zhttps://synth.playtronica.com/auth/logout2024-03-14T07:07:43.000Zhttps://synth.playtronica.com/auth/reset2024-03-14T07:07:43.000Zhttps://synth.playtronica.com/2024-03-14T07:07:43.000Zhttps://synth.playtronica.com/dotpiano/https://synth.playtronica.com/waveform/https://synth.playtronica.com/juno-106/https://synth.playtronica.com/elementary/https://synth.playtronica.com/dx7/https://synth.playtronica.com/touchme/https://synth.playtronica.com/muted-io/https://synth.playtronica.com/soundfont/https://synth.playtronica.com/midi-city/https://synth.playtronica.com/aqwertyon/https://synth.playtronica.com/chrome-lab/https://synth.playtronica.com/websynths/https://synth.playtronica.com/sympathetic/https://synth.playtronica.com/ableton/https://synth.playtronica.com/theremin/https://synth.playtronica.com/touch-pianist/https://synth.playtronica.com/beepbox/https://synth.playtronica.com/roland50/https://synth.playtronica.com/disco-computer/https://synth.playtronica.com/video-sampler/https://synth.playtronica.com/bassoon/https://synth.playtronica.com/web-sid/https://synth.playtronica.com/nv-1/https://synth.playtronica.com/virtual-piano/https://synth.playtronica.com/online-sequencer/https://synth.playtronica.com/sound-box/https://synth.playtronica.com/omni/https://synth.playtronica.com/web-modular/https://synth.playtronica.com/acid-machine-2/https://synth.playtronica.com/groove-pizza/https://synth.playtronica.com/pixel-synth/https://synth.playtronica.com/multiplayer-piano/https://synth.playtronica.com/midi-driven-web-audio/https://synth.playtronica.com/sample-stich/https://synth.playtronica.com/meet-the-heisenberg/https://synth.playtronica.com/cardboard-synth/https://synth.playtronica.com/tanguy-synth/https://synth.playtronica.com/blokdust/https://synth.playtronica.com/mod-synth/https://synth.playtronica.com/olif-sy-1-k/https://synth.playtronica.com/note-sculptor/https://synth.playtronica.com/web-audio-synth-v2/https://synth.playtronica.com/isleoftune/https://synth.playtronica.com/sound-trap/https://synth.playtronica.com/typedrummer/ \ No newline at end of file +https://synth.playtronica.com/README2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/auth2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/auth/accept2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/auth/2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/auth/invite2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/auth/logout2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/auth/reset2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/dotpiano/https://synth.playtronica.com/waveform/https://synth.playtronica.com/juno-106/https://synth.playtronica.com/elementary/https://synth.playtronica.com/dx7/https://synth.playtronica.com/touchme/https://synth.playtronica.com/muted-io/https://synth.playtronica.com/soundfont/https://synth.playtronica.com/midi-city/https://synth.playtronica.com/aqwertyon/https://synth.playtronica.com/chrome-lab/https://synth.playtronica.com/websynths/https://synth.playtronica.com/sympathetic/https://synth.playtronica.com/ableton/https://synth.playtronica.com/theremin/https://synth.playtronica.com/touch-pianist/https://synth.playtronica.com/beepbox/https://synth.playtronica.com/roland50/https://synth.playtronica.com/disco-computer/https://synth.playtronica.com/video-sampler/https://synth.playtronica.com/bassoon/https://synth.playtronica.com/web-sid/https://synth.playtronica.com/nv-1/https://synth.playtronica.com/virtual-piano/https://synth.playtronica.com/online-sequencer/https://synth.playtronica.com/sound-box/https://synth.playtronica.com/omni/https://synth.playtronica.com/web-modular/https://synth.playtronica.com/acid-machine-2/https://synth.playtronica.com/groove-pizza/https://synth.playtronica.com/pixel-synth/https://synth.playtronica.com/multiplayer-piano/https://synth.playtronica.com/midi-driven-web-audio/https://synth.playtronica.com/sample-stich/https://synth.playtronica.com/meet-the-heisenberg/https://synth.playtronica.com/cardboard-synth/https://synth.playtronica.com/tanguy-synth/https://synth.playtronica.com/blokdust/https://synth.playtronica.com/mod-synth/https://synth.playtronica.com/olif-sy-1-k/https://synth.playtronica.com/note-sculptor/https://synth.playtronica.com/web-audio-synth-v2/https://synth.playtronica.com/isleoftune/https://synth.playtronica.com/sound-trap/https://synth.playtronica.com/typedrummer/ \ No newline at end of file diff --git a/sound-box/index.html b/sound-box/index.html index dae03aaf..3bf2ef80 100644 --- a/sound-box/index.html +++ b/sound-box/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/sound-trap/index.html b/sound-trap/index.html index f97dd256..50b75efa 100644 --- a/sound-trap/index.html +++ b/sound-trap/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/soundfont/index.html b/soundfont/index.html index 0d0637e2..f8f792f1 100644 --- a/soundfont/index.html +++ b/soundfont/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Soundfont Sampler Synth
by Chromatone
Poly
Keyboard
Sampler
MIDI
Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box.
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/sw.js b/sw.js index da20888e..f55c798e 100644 --- a/sw.js +++ b/sw.js @@ -1 +1 @@ -if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()})).then((()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e})));self.define=(n,l)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let d={};const a=e=>i(e,r),o={module:{uri:r},exports:d,require:a};s[r]=Promise.all(n.map((e=>o[e]||a(e)))).then((e=>(l(...e),d)))}}define(["./workbox-f3e6b16a"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"404.html",revision:"9265cbc9370973d75b7d93b5a8a4622a"},{url:"ableton/index.html",revision:"807b9fdde2ae3feb6e720302d40c32a9"},{url:"acid-machine-2/index.html",revision:"32dc56e4d2cf9cda34ccc5934bc4552b"},{url:"aqwertyon/index.html",revision:"b8f7a4c7b31c98fd7ddda28ffa859f8e"},{url:"archive/synthescheisse/index.html",revision:"723c41e4238ba7b9cacdc5e4649a2dee"},{url:"archive/synthescheisse/SYNTHESCHEISSE_files/script.js",revision:"0f2f9610db3c70bf3ef8128066641621"},{url:"archive/synthescheisse/SYNTHESCHEISSE_files/style.css",revision:"4f047b48cc6fa6eac39a6b6026a8e350"},{url:"assets/ableton_index.md.8DfCPC2G.js",revision:null},{url:"assets/ableton_index.md.8DfCPC2G.lean.js",revision:null},{url:"assets/acid-machine-2_index.md.3Csm2P_h.js",revision:null},{url:"assets/acid-machine-2_index.md.3Csm2P_h.lean.js",revision:null},{url:"assets/app.P7SYvjp3.js",revision:null},{url:"assets/aqwertyon_index.md.sy_D1v3t.js",revision:null},{url:"assets/aqwertyon_index.md.sy_D1v3t.lean.js",revision:null},{url:"assets/auth_accept.md.7cs-uWFD.js",revision:null},{url:"assets/auth_accept.md.7cs-uWFD.lean.js",revision:null},{url:"assets/auth_index.md.n2YQLYnx.js",revision:null},{url:"assets/auth_index.md.n2YQLYnx.lean.js",revision:null},{url:"assets/auth_invite.md.0Ao_I84l.js",revision:null},{url:"assets/auth_invite.md.0Ao_I84l.lean.js",revision:null},{url:"assets/auth_logout.md.HN7sWFid.js",revision:null},{url:"assets/auth_logout.md.HN7sWFid.lean.js",revision:null},{url:"assets/auth_reset.md.CD545pEH.js",revision:null},{url:"assets/auth_reset.md.CD545pEH.lean.js",revision:null},{url:"assets/auth.md.EzrJ2Dtm.js",revision:null},{url:"assets/auth.md.EzrJ2Dtm.lean.js",revision:null},{url:"assets/bassoon_index.md.t4QY1DDS.js",revision:null},{url:"assets/bassoon_index.md.t4QY1DDS.lean.js",revision:null},{url:"assets/beepbox_index.md.95bPjioH.js",revision:null},{url:"assets/beepbox_index.md.95bPjioH.lean.js",revision:null},{url:"assets/blokdust_index.md.3G1OFo-y.js",revision:null},{url:"assets/blokdust_index.md.3G1OFo-y.lean.js",revision:null},{url:"assets/cardboard-synth_index.md.9HVAVqO5.js",revision:null},{url:"assets/cardboard-synth_index.md.9HVAVqO5.lean.js",revision:null},{url:"assets/chrome-lab_index.md.-7aR30bi.js",revision:null},{url:"assets/chrome-lab_index.md.-7aR30bi.lean.js",revision:null},{url:"assets/chunks/framework.HWRfC0Fd.js",revision:null},{url:"assets/chunks/index.Q2UX5ner.js",revision:null},{url:"assets/chunks/SynthPage.2tYMmOk8.js",revision:null},{url:"assets/chunks/theme.TIIJwiPz.js",revision:null},{url:"assets/chunks/useClicks.CJYHtBYH.js",revision:null},{url:"assets/chunks/virtual_pwa-register.45FOQ76u.js",revision:null},{url:"assets/chunks/workbox-window.prod.es5.prqDwDSL.js",revision:null},{url:"assets/disco-computer_index.md.CijxVoeF.js",revision:null},{url:"assets/disco-computer_index.md.CijxVoeF.lean.js",revision:null},{url:"assets/dotpiano_index.md.y0oBIdM9.js",revision:null},{url:"assets/dotpiano_index.md.y0oBIdM9.lean.js",revision:null},{url:"assets/dx7_index.md.gR5JXkJK.js",revision:null},{url:"assets/dx7_index.md.gR5JXkJK.lean.js",revision:null},{url:"assets/elementary_index.md.6CiyeB9r.js",revision:null},{url:"assets/elementary_index.md.6CiyeB9r.lean.js",revision:null},{url:"assets/groove-pizza_index.md.5djMEmMm.js",revision:null},{url:"assets/groove-pizza_index.md.5djMEmMm.lean.js",revision:null},{url:"assets/index.md.cf3pcfxO.js",revision:null},{url:"assets/index.md.cf3pcfxO.lean.js",revision:null},{url:"assets/isleoftune_index.md.gw8z-0YW.js",revision:null},{url:"assets/isleoftune_index.md.gw8z-0YW.lean.js",revision:null},{url:"assets/juno-106_index.md.6Y4xCWCG.js",revision:null},{url:"assets/juno-106_index.md.6Y4xCWCG.lean.js",revision:null},{url:"assets/meet-the-heisenberg_index.md.dH-ODu-r.js",revision:null},{url:"assets/meet-the-heisenberg_index.md.dH-ODu-r.lean.js",revision:null},{url:"assets/midi-city_index.md.6Hp5JLbP.js",revision:null},{url:"assets/midi-city_index.md.6Hp5JLbP.lean.js",revision:null},{url:"assets/midi-driven-web-audio_index.md._VpK9rcC.js",revision:null},{url:"assets/midi-driven-web-audio_index.md._VpK9rcC.lean.js",revision:null},{url:"assets/mod-synth_index.md.GRzJcX_z.js",revision:null},{url:"assets/mod-synth_index.md.GRzJcX_z.lean.js",revision:null},{url:"assets/multiplayer-piano_index.md.HrDjh3Ou.js",revision:null},{url:"assets/multiplayer-piano_index.md.HrDjh3Ou.lean.js",revision:null},{url:"assets/muted-io_index.md.Lsfx_ACP.js",revision:null},{url:"assets/muted-io_index.md.Lsfx_ACP.lean.js",revision:null},{url:"assets/note-sculptor_index.md.pNXoUhje.js",revision:null},{url:"assets/note-sculptor_index.md.pNXoUhje.lean.js",revision:null},{url:"assets/nv-1_index.md.4ETA3AFj.js",revision:null},{url:"assets/nv-1_index.md.4ETA3AFj.lean.js",revision:null},{url:"assets/olif-sy-1-k_index.md.dyYwXcMw.js",revision:null},{url:"assets/olif-sy-1-k_index.md.dyYwXcMw.lean.js",revision:null},{url:"assets/omni_index.md.nq2BAt52.js",revision:null},{url:"assets/omni_index.md.nq2BAt52.lean.js",revision:null},{url:"assets/online-sequencer_index.md.9EhdgJZ8.js",revision:null},{url:"assets/online-sequencer_index.md.9EhdgJZ8.lean.js",revision:null},{url:"assets/pixel-synth_index.md.WFKUMjSj.js",revision:null},{url:"assets/pixel-synth_index.md.WFKUMjSj.lean.js",revision:null},{url:"assets/README.md.4ThR-heF.js",revision:null},{url:"assets/README.md.4ThR-heF.lean.js",revision:null},{url:"assets/roland50_index.md.9Kxg99A7.js",revision:null},{url:"assets/roland50_index.md.9Kxg99A7.lean.js",revision:null},{url:"assets/sample-stich_index.md.4WwbV1RN.js",revision:null},{url:"assets/sample-stich_index.md.4WwbV1RN.lean.js",revision:null},{url:"assets/sound-box_index.md.HGynRcEJ.js",revision:null},{url:"assets/sound-box_index.md.HGynRcEJ.lean.js",revision:null},{url:"assets/sound-trap_index.md.aHWlI-uv.js",revision:null},{url:"assets/sound-trap_index.md.aHWlI-uv.lean.js",revision:null},{url:"assets/soundfont_index.md.UQL3MRqg.js",revision:null},{url:"assets/soundfont_index.md.UQL3MRqg.lean.js",revision:null},{url:"assets/style.wjRr_zZm.css",revision:null},{url:"assets/sympathetic_index.md.gT5FhYkD.js",revision:null},{url:"assets/sympathetic_index.md.gT5FhYkD.lean.js",revision:null},{url:"assets/tanguy-synth_index.md.LICvHysz.js",revision:null},{url:"assets/tanguy-synth_index.md.LICvHysz.lean.js",revision:null},{url:"assets/theremin_index.md.0wNNSky6.js",revision:null},{url:"assets/theremin_index.md.0wNNSky6.lean.js",revision:null},{url:"assets/touch-pianist_index.md.r-ME8R9y.js",revision:null},{url:"assets/touch-pianist_index.md.r-ME8R9y.lean.js",revision:null},{url:"assets/touchme_index.md.m_em8ndk.js",revision:null},{url:"assets/touchme_index.md.m_em8ndk.lean.js",revision:null},{url:"assets/typedrummer_index.md.a07jZSo7.js",revision:null},{url:"assets/typedrummer_index.md.a07jZSo7.lean.js",revision:null},{url:"assets/video-sampler_index.md.656zZ_4g.js",revision:null},{url:"assets/video-sampler_index.md.656zZ_4g.lean.js",revision:null},{url:"assets/virtual-piano_index.md.9m-wbGCk.js",revision:null},{url:"assets/virtual-piano_index.md.9m-wbGCk.lean.js",revision:null},{url:"assets/waveform_index.md.QmdF15tC.js",revision:null},{url:"assets/waveform_index.md.QmdF15tC.lean.js",revision:null},{url:"assets/web-audio-synth-v2_index.md.6oStb7PN.js",revision:null},{url:"assets/web-audio-synth-v2_index.md.6oStb7PN.lean.js",revision:null},{url:"assets/web-modular_index.md.OnRXJCu2.js",revision:null},{url:"assets/web-modular_index.md.OnRXJCu2.lean.js",revision:null},{url:"assets/web-sid_index.md.0IOPw0KA.js",revision:null},{url:"assets/web-sid_index.md.0IOPw0KA.lean.js",revision:null},{url:"assets/websynths_index.md.azq6AXsw.js",revision:null},{url:"assets/websynths_index.md.azq6AXsw.lean.js",revision:null},{url:"auth.html",revision:"4ee7982e307099597ac938be941faa10"},{url:"auth/accept.html",revision:"8aea5b84cb0683aa7665aba80a8a50f3"},{url:"auth/index.html",revision:"b5eb9fde3b484a3db25301aef1b1408c"},{url:"auth/invite.html",revision:"f338957a963c918cc54d560d725fd8a3"},{url:"auth/logout.html",revision:"864db9e9608a877b3df14b20d6c21a29"},{url:"auth/reset.html",revision:"e03298a4cf4094e133b9f3d7a2345eac"},{url:"bassoon/index.html",revision:"62f9f1b42d0daee0eb36f610db8e77b1"},{url:"beepbox/index.html",revision:"4d0fab9d63c6557d924b65dbd6ca4b4d"},{url:"blokdust/index.html",revision:"fe22355c8578ff18eb2f8c239737b0eb"},{url:"cardboard-synth/index.html",revision:"60f4e1415886f4e47e81c2196fbe75f0"},{url:"chrome-lab/index.html",revision:"d3534981aac1bcc4189ed15c399b2a9c"},{url:"click-logo.svg",revision:"f15e71cb394926c5f8c08f64186d2d49"},{url:"cover/ableton.webp",revision:"ff3a22aa28084b93c0aad2e6569657e0"},{url:"cover/acid-machine-2.webp",revision:"29fcf6a6ce374dfc8391fe6544b5f08e"},{url:"cover/aqwertyon.webp",revision:"afab8d4bdeccf669a03617c5ce738fb7"},{url:"cover/bassoon.webp",revision:"68d4a434861c2f294623fe762e694ee6"},{url:"cover/beepbox.webp",revision:"e4f93e998951d212c5b678b425769537"},{url:"cover/blokdust.webp",revision:"0613b83a920d709a268d9de2284a0354"},{url:"cover/cardboard-synth.webp",revision:"f93526fee97f6674940ca367cb841b58"},{url:"cover/chrome-lab.webp",revision:"d18ee6ca84364e4d175efa054a736fd9"},{url:"cover/disco-computer.webp",revision:"5dd18857caabf0cf1320d82537daa7d1"},{url:"cover/dotpiano.webp",revision:"c08549fc8ca38e2f4b6d1853b947ad3f"},{url:"cover/dx7.webp",revision:"a401e52d21c6d5e44240645b09d9f9c6"},{url:"cover/elementary.webp",revision:"6368b81c56ee656371254dd87bb421e8"},{url:"cover/groove-pizza.webp",revision:"ace880a23d7a39082a02a011d15ef278"},{url:"cover/isleoftune.webp",revision:"4aa136591dee0383df4d60b551bb94d8"},{url:"cover/juno-106.webp",revision:"08c31646032ced1d4c48d295b9c0ca94"},{url:"cover/meet-the-heisenberg.webp",revision:"52318d42eb06e04073f209dd1f1e5c41"},{url:"cover/midi-city.webp",revision:"fecb8bf989aba90045bd17cfd0748576"},{url:"cover/midi-driven-web-audio.webp",revision:"897bbc54b77f1e0905ad454063a13189"},{url:"cover/mod-synth.webp",revision:"7d47cac35b80190a3bce223d47756ae0"},{url:"cover/multiplayer-piano.webp",revision:"70e6eba35fc631046c89637286b57f29"},{url:"cover/muted-io.webp",revision:"d03f4b77e5d8cddc8adc45c0a67abd50"},{url:"cover/note-sculptor.webp",revision:"67c78a7120358915332faa419a2e1f45"},{url:"cover/nv-1.webp",revision:"4c286383b8df97fae10976500d5456a9"},{url:"cover/olif-sy-1-k.webp",revision:"829a8b74f7a628fa5f319e39077687a2"},{url:"cover/omni.webp",revision:"413b121431478a3ea4aa3b3e26e19bc7"},{url:"cover/online-sequencer.webp",revision:"a5f83fc41f430f8ff6ddf9f45fbc57eb"},{url:"cover/pixel-synth.webp",revision:"f6457eb849297fbd07d5172a39573b4e"},{url:"cover/roland50.webp",revision:"1a9fe1ddb1dcd07cb42cd52567ca7173"},{url:"cover/sample-stich.webp",revision:"2019a72c6963aebca1eb7e73fc5d8737"},{url:"cover/sound-box.webp",revision:"9bc7cf72ec4b983786028af651bfb97a"},{url:"cover/sound-trap.webp",revision:"424d3e69d2cabbbd222fa63e03333693"},{url:"cover/soundfont.webp",revision:"c534fa79bd1c6f0c93244189778d400b"},{url:"cover/sympathetic.webp",revision:"3b98478cb9627398e816503b41ad91c8"},{url:"cover/tanguy-synth.webp",revision:"7dc2b96bdd88af09c835d1b3f6db0249"},{url:"cover/theremin.webp",revision:"fc256e4ea00b9e7d39fa76ef97677a55"},{url:"cover/touch-pianist.webp",revision:"75cf9432de7a642fe1c71f3dab956857"},{url:"cover/touchme.webp",revision:"c64942d3fbdba893f09b720dac8ecf2f"},{url:"cover/typedrummer.webp",revision:"8d7be4a5046e7335cf6b91caea120e43"},{url:"cover/video-sampler.webp",revision:"d4b4af73791843f35f796824011cd4aa"},{url:"cover/virtual-piano.webp",revision:"ef9aacb9a39f6908c9d326c7ce588a8a"},{url:"cover/waveform.webp",revision:"fafd71aa1fb141d388d2df6d2e89b06e"},{url:"cover/web-audio-synth-v2.webp",revision:"14206290388166cf6cb7c4023c8b0503"},{url:"cover/web-modular.webp",revision:"ba22a1a127d07da1f494af6b4b1960bf"},{url:"cover/web-sid.webp",revision:"428998a4856ef3aff09ddd0e0d34bc7d"},{url:"cover/websynths.webp",revision:"d4d2b2796350e9cd786b3b68e1b225ff"},{url:"disco-computer/index.html",revision:"21fbe6a379016b18340593fdc721ec68"},{url:"dotpiano/index.html",revision:"c2cde2cb3fb8e8cc7fb5d73b35f9def6"},{url:"dx7/index.html",revision:"659e036a9ba599356d2f304e13fd7138"},{url:"elementary/index.html",revision:"bcf7b03ef48f154b7bc983dcc2fbb064"},{url:"groove-pizza/index.html",revision:"7f6d0c90154e29be41a000c12368d5e0"},{url:"icon.png",revision:"eb8e7369ba634f3bd1a96d889be50f7d"},{url:"index.html",revision:"37bf95ea903f3f277ea20b517ab73b0e"},{url:"isleoftune/index.html",revision:"fc4b8f43c26449924134cb2748127314"},{url:"juno-106/index.html",revision:"52c248f8b48b7a40a764ddc6cfb2aecd"},{url:"line.svg",revision:"4866b853d0c5c97e9f654fa32580076a"},{url:"logo.svg",revision:"134c144f78e462c4672fc8f64e69df9e"},{url:"meet-the-heisenberg/index.html",revision:"45275452a4f85c6fae11844d06b5cc9c"},{url:"midi-city/index.html",revision:"511f5f9ecce2a58b4bd67d2f1178165d"},{url:"midi-driven-web-audio/index.html",revision:"d5a51b6be8b68f763eafc8063dc3f4ce"},{url:"mod-synth/index.html",revision:"4f3045858581514af04edfa33cdd117f"},{url:"multiplayer-piano/index.html",revision:"19be8d0d890420e2b4711bc0186996cb"},{url:"muted-io/index.html",revision:"f8a6804129e4847078b014f3e35e4234"},{url:"note-sculptor/index.html",revision:"434f62b81622c2cf94fe7443e14fb581"},{url:"nv-1/index.html",revision:"2889053b60cd53790df9f9410987867d"},{url:"olif-sy-1-k/index.html",revision:"667f5613b2b177e1d96f5ce8a724207c"},{url:"omni/index.html",revision:"dd7e8bd44b024fef510ed49774c1ccb3"},{url:"online-sequencer/index.html",revision:"2a9c4baf10e20a704593048b9857682a"},{url:"pixel-synth/index.html",revision:"d3f470c6138b4bcf384991e96929d74c"},{url:"pl-logo.webp",revision:"9f0d66adf550fa40e8b2e03ff997eb34"},{url:"README.html",revision:"1cdd7096f2c70919d2ba1c270067fc1f"},{url:"roland50/index.html",revision:"009ef9f40153622cfe334aa57fc87163"},{url:"sample-stich/index.html",revision:"5c2b46f8ecb6c9f3d1780bad8fe75a41"},{url:"sound-box/index.html",revision:"b75bf6ee028ab7dc021845a117061dab"},{url:"sound-trap/index.html",revision:"ed9850a1fa673f058d47ed091c0602a7"},{url:"soundfont/index.html",revision:"2ef5d58f4788635720c56f45bc5b95c3"},{url:"sympathetic/index.html",revision:"bb3c0eab1acf2c6de746bcec1215aebd"},{url:"tanguy-synth/index.html",revision:"9e5fe264eb303a475bb7dc59f0b56bf3"},{url:"theremin/index.html",revision:"88ed4739bad70723c5a05d4fe565cfb5"},{url:"touch-pianist/index.html",revision:"f75958c37174c4a7bdb5a969a9b47c95"},{url:"touchme/index.html",revision:"7a053899584af6a8f2801a4b311515bf"},{url:"typedrummer/index.html",revision:"f5d4a4f3a6af13eaf21f2d85c12c1de7"},{url:"video-sampler/index.html",revision:"94545c93087b8527587ccce892d1c8a3"},{url:"virtual-piano/index.html",revision:"e4445be609839a39c7d02c1dd9447216"},{url:"waveform/index.html",revision:"46ddd6d559803a5229bc19adfa8e3a89"},{url:"web-audio-synth-v2/index.html",revision:"8eb24dd584f116314f08e68a60a00abc"},{url:"web-modular/index.html",revision:"8f7f046bcba481e6b3512e3c554276f3"},{url:"web-sid/index.html",revision:"7d514d838dc3233f8f31fdb0357eb45e"},{url:"websynths/index.html",revision:"324e5d994fb0173b03a177289d1738f4"},{url:"logo.svg",revision:"134c144f78e462c4672fc8f64e69df9e"},{url:"icon.png",revision:"eb8e7369ba634f3bd1a96d889be50f7d"},{url:"manifest.webmanifest",revision:"aee00a3fc5429948aa59c7d1c9d825cc"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))})); +if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()})).then((()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e})));self.define=(n,l)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let d={};const a=e=>i(e,r),o={module:{uri:r},exports:d,require:a};s[r]=Promise.all(n.map((e=>o[e]||a(e)))).then((e=>(l(...e),d)))}}define(["./workbox-f3e6b16a"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"404.html",revision:"6e97cb5605ff5724501ed8e04f9e9efb"},{url:"ableton/index.html",revision:"087506780227a2543c78288fd9ff25ef"},{url:"acid-machine-2/index.html",revision:"367fbe76ff7b1846869e0b7c855d439f"},{url:"aqwertyon/index.html",revision:"34344d0a0f63e3dbcd0b3e505a598019"},{url:"archive/synthescheisse/index.html",revision:"723c41e4238ba7b9cacdc5e4649a2dee"},{url:"archive/synthescheisse/SYNTHESCHEISSE_files/script.js",revision:"0f2f9610db3c70bf3ef8128066641621"},{url:"archive/synthescheisse/SYNTHESCHEISSE_files/style.css",revision:"4f047b48cc6fa6eac39a6b6026a8e350"},{url:"assets/ableton_index.md.Cg4KKF7N.js",revision:null},{url:"assets/ableton_index.md.Cg4KKF7N.lean.js",revision:null},{url:"assets/acid-machine-2_index.md.CCZ5MGY2.js",revision:null},{url:"assets/acid-machine-2_index.md.CCZ5MGY2.lean.js",revision:null},{url:"assets/app.C-uuTtMw.js",revision:null},{url:"assets/aqwertyon_index.md.DeEJlWSG.js",revision:null},{url:"assets/aqwertyon_index.md.DeEJlWSG.lean.js",revision:null},{url:"assets/auth_accept.md.Fnf3Jp_6.js",revision:null},{url:"assets/auth_accept.md.Fnf3Jp_6.lean.js",revision:null},{url:"assets/auth_index.md.QeBiS1Uo.js",revision:null},{url:"assets/auth_index.md.QeBiS1Uo.lean.js",revision:null},{url:"assets/auth_invite.md.DdrEzK2j.js",revision:null},{url:"assets/auth_invite.md.DdrEzK2j.lean.js",revision:null},{url:"assets/auth_logout.md.Cewl1AND.js",revision:null},{url:"assets/auth_logout.md.Cewl1AND.lean.js",revision:null},{url:"assets/auth_reset.md.DcV3kbsy.js",revision:null},{url:"assets/auth_reset.md.DcV3kbsy.lean.js",revision:null},{url:"assets/auth.md.D0LWfyqF.js",revision:null},{url:"assets/auth.md.D0LWfyqF.lean.js",revision:null},{url:"assets/bassoon_index.md.BTdiYICS.js",revision:null},{url:"assets/bassoon_index.md.BTdiYICS.lean.js",revision:null},{url:"assets/beepbox_index.md.DCxpwyWi.js",revision:null},{url:"assets/beepbox_index.md.DCxpwyWi.lean.js",revision:null},{url:"assets/blokdust_index.md.BZXK4-FO.js",revision:null},{url:"assets/blokdust_index.md.BZXK4-FO.lean.js",revision:null},{url:"assets/cardboard-synth_index.md.lsU4RynP.js",revision:null},{url:"assets/cardboard-synth_index.md.lsU4RynP.lean.js",revision:null},{url:"assets/chrome-lab_index.md.BvBA9nEa.js",revision:null},{url:"assets/chrome-lab_index.md.BvBA9nEa.lean.js",revision:null},{url:"assets/chunks/framework.DA3bj7zI.js",revision:null},{url:"assets/chunks/index.OsI8M1nP.js",revision:null},{url:"assets/chunks/SynthPage.DHgkhPru.js",revision:null},{url:"assets/chunks/theme.TKyytG40.js",revision:null},{url:"assets/chunks/useClicks.DKflLG6D.js",revision:null},{url:"assets/chunks/virtual_pwa-register.DS-1DR2V.js",revision:null},{url:"assets/chunks/workbox-window.prod.es5.DFjpnwFp.js",revision:null},{url:"assets/disco-computer_index.md.wWuluDm_.js",revision:null},{url:"assets/disco-computer_index.md.wWuluDm_.lean.js",revision:null},{url:"assets/dotpiano_index.md.BE4cP1vy.js",revision:null},{url:"assets/dotpiano_index.md.BE4cP1vy.lean.js",revision:null},{url:"assets/dx7_index.md.CTqZumAe.js",revision:null},{url:"assets/dx7_index.md.CTqZumAe.lean.js",revision:null},{url:"assets/elementary_index.md.BwvTZPnD.js",revision:null},{url:"assets/elementary_index.md.BwvTZPnD.lean.js",revision:null},{url:"assets/groove-pizza_index.md.BlSmjWiK.js",revision:null},{url:"assets/groove-pizza_index.md.BlSmjWiK.lean.js",revision:null},{url:"assets/index.md.Dn_VxzHO.js",revision:null},{url:"assets/index.md.Dn_VxzHO.lean.js",revision:null},{url:"assets/isleoftune_index.md.CagvHWez.js",revision:null},{url:"assets/isleoftune_index.md.CagvHWez.lean.js",revision:null},{url:"assets/juno-106_index.md.C-HewMMo.js",revision:null},{url:"assets/juno-106_index.md.C-HewMMo.lean.js",revision:null},{url:"assets/meet-the-heisenberg_index.md.CGlS22SQ.js",revision:null},{url:"assets/meet-the-heisenberg_index.md.CGlS22SQ.lean.js",revision:null},{url:"assets/midi-city_index.md.C_bw8Wmp.js",revision:null},{url:"assets/midi-city_index.md.C_bw8Wmp.lean.js",revision:null},{url:"assets/midi-driven-web-audio_index.md.qU5pFBbC.js",revision:null},{url:"assets/midi-driven-web-audio_index.md.qU5pFBbC.lean.js",revision:null},{url:"assets/mod-synth_index.md.Pqf1q9QQ.js",revision:null},{url:"assets/mod-synth_index.md.Pqf1q9QQ.lean.js",revision:null},{url:"assets/multiplayer-piano_index.md.Drty2YzX.js",revision:null},{url:"assets/multiplayer-piano_index.md.Drty2YzX.lean.js",revision:null},{url:"assets/muted-io_index.md.7HkqgXgG.js",revision:null},{url:"assets/muted-io_index.md.7HkqgXgG.lean.js",revision:null},{url:"assets/note-sculptor_index.md.DjHcDrJl.js",revision:null},{url:"assets/note-sculptor_index.md.DjHcDrJl.lean.js",revision:null},{url:"assets/nv-1_index.md.AxF6N6eW.js",revision:null},{url:"assets/nv-1_index.md.AxF6N6eW.lean.js",revision:null},{url:"assets/olif-sy-1-k_index.md.TAvvbtnv.js",revision:null},{url:"assets/olif-sy-1-k_index.md.TAvvbtnv.lean.js",revision:null},{url:"assets/omni_index.md.BPzyxoOJ.js",revision:null},{url:"assets/omni_index.md.BPzyxoOJ.lean.js",revision:null},{url:"assets/online-sequencer_index.md.KBCOH-xk.js",revision:null},{url:"assets/online-sequencer_index.md.KBCOH-xk.lean.js",revision:null},{url:"assets/pixel-synth_index.md.CIxj1_zW.js",revision:null},{url:"assets/pixel-synth_index.md.CIxj1_zW.lean.js",revision:null},{url:"assets/README.md.D9FcETfF.js",revision:null},{url:"assets/README.md.D9FcETfF.lean.js",revision:null},{url:"assets/roland50_index.md.Mconyk1H.js",revision:null},{url:"assets/roland50_index.md.Mconyk1H.lean.js",revision:null},{url:"assets/sample-stich_index.md.Bijh8Pq9.js",revision:null},{url:"assets/sample-stich_index.md.Bijh8Pq9.lean.js",revision:null},{url:"assets/sound-box_index.md.vcTJLzSz.js",revision:null},{url:"assets/sound-box_index.md.vcTJLzSz.lean.js",revision:null},{url:"assets/sound-trap_index.md.DPgmLcVq.js",revision:null},{url:"assets/sound-trap_index.md.DPgmLcVq.lean.js",revision:null},{url:"assets/soundfont_index.md.B2d0-Ban.js",revision:null},{url:"assets/soundfont_index.md.B2d0-Ban.lean.js",revision:null},{url:"assets/style.CTytDMrM.css",revision:null},{url:"assets/sympathetic_index.md.B9hVY9QB.js",revision:null},{url:"assets/sympathetic_index.md.B9hVY9QB.lean.js",revision:null},{url:"assets/tanguy-synth_index.md.DIyIIeiH.js",revision:null},{url:"assets/tanguy-synth_index.md.DIyIIeiH.lean.js",revision:null},{url:"assets/theremin_index.md.liVXJJN1.js",revision:null},{url:"assets/theremin_index.md.liVXJJN1.lean.js",revision:null},{url:"assets/touch-pianist_index.md.C3vy7JwD.js",revision:null},{url:"assets/touch-pianist_index.md.C3vy7JwD.lean.js",revision:null},{url:"assets/touchme_index.md.BA04O2GJ.js",revision:null},{url:"assets/touchme_index.md.BA04O2GJ.lean.js",revision:null},{url:"assets/typedrummer_index.md.DmcuwI39.js",revision:null},{url:"assets/typedrummer_index.md.DmcuwI39.lean.js",revision:null},{url:"assets/video-sampler_index.md.Dym51vwm.js",revision:null},{url:"assets/video-sampler_index.md.Dym51vwm.lean.js",revision:null},{url:"assets/virtual-piano_index.md.CDW6WFuf.js",revision:null},{url:"assets/virtual-piano_index.md.CDW6WFuf.lean.js",revision:null},{url:"assets/waveform_index.md.CU21Le1y.js",revision:null},{url:"assets/waveform_index.md.CU21Le1y.lean.js",revision:null},{url:"assets/web-audio-synth-v2_index.md.DfHaKltn.js",revision:null},{url:"assets/web-audio-synth-v2_index.md.DfHaKltn.lean.js",revision:null},{url:"assets/web-modular_index.md.BlpY_Crm.js",revision:null},{url:"assets/web-modular_index.md.BlpY_Crm.lean.js",revision:null},{url:"assets/web-sid_index.md.ByPZsRUf.js",revision:null},{url:"assets/web-sid_index.md.ByPZsRUf.lean.js",revision:null},{url:"assets/websynths_index.md.CFZlS4ic.js",revision:null},{url:"assets/websynths_index.md.CFZlS4ic.lean.js",revision:null},{url:"auth.html",revision:"404fec823b31532fdc37e19ce29ba505"},{url:"auth/accept.html",revision:"c6d9abb7a0cc88c8df6d83dc13a500b5"},{url:"auth/index.html",revision:"b795eaa6a663520ee0481ab8c11104fe"},{url:"auth/invite.html",revision:"16b295c50de2d84d0b694d4f6f839832"},{url:"auth/logout.html",revision:"035bcf1780d7afa135fc4423e91d62f9"},{url:"auth/reset.html",revision:"a6f664f6e6bf0e48daa8c04204e1fcce"},{url:"bassoon/index.html",revision:"87a0cfb835f05a40b5b13364b3100492"},{url:"beepbox/index.html",revision:"65d815622c84b7e97a76a73751473fef"},{url:"blokdust/index.html",revision:"e28501dcc7156f1df55883e72eacab63"},{url:"cardboard-synth/index.html",revision:"5a1f7c03064681d814bf11bf167fc7b0"},{url:"chrome-lab/index.html",revision:"929ae42a6ca3f5d4a7be1075edea4468"},{url:"click-logo.svg",revision:"f15e71cb394926c5f8c08f64186d2d49"},{url:"cover/ableton.webp",revision:"ff3a22aa28084b93c0aad2e6569657e0"},{url:"cover/acid-machine-2.webp",revision:"29fcf6a6ce374dfc8391fe6544b5f08e"},{url:"cover/aqwertyon.webp",revision:"afab8d4bdeccf669a03617c5ce738fb7"},{url:"cover/bassoon.webp",revision:"68d4a434861c2f294623fe762e694ee6"},{url:"cover/beepbox.webp",revision:"e4f93e998951d212c5b678b425769537"},{url:"cover/blokdust.webp",revision:"0613b83a920d709a268d9de2284a0354"},{url:"cover/cardboard-synth.webp",revision:"f93526fee97f6674940ca367cb841b58"},{url:"cover/chrome-lab.webp",revision:"d18ee6ca84364e4d175efa054a736fd9"},{url:"cover/disco-computer.webp",revision:"5dd18857caabf0cf1320d82537daa7d1"},{url:"cover/dotpiano.webp",revision:"c08549fc8ca38e2f4b6d1853b947ad3f"},{url:"cover/dx7.webp",revision:"a401e52d21c6d5e44240645b09d9f9c6"},{url:"cover/elementary.webp",revision:"6368b81c56ee656371254dd87bb421e8"},{url:"cover/groove-pizza.webp",revision:"ace880a23d7a39082a02a011d15ef278"},{url:"cover/isleoftune.webp",revision:"4aa136591dee0383df4d60b551bb94d8"},{url:"cover/juno-106.webp",revision:"08c31646032ced1d4c48d295b9c0ca94"},{url:"cover/meet-the-heisenberg.webp",revision:"52318d42eb06e04073f209dd1f1e5c41"},{url:"cover/midi-city.webp",revision:"fecb8bf989aba90045bd17cfd0748576"},{url:"cover/midi-driven-web-audio.webp",revision:"897bbc54b77f1e0905ad454063a13189"},{url:"cover/mod-synth.webp",revision:"7d47cac35b80190a3bce223d47756ae0"},{url:"cover/multiplayer-piano.webp",revision:"70e6eba35fc631046c89637286b57f29"},{url:"cover/muted-io.webp",revision:"d03f4b77e5d8cddc8adc45c0a67abd50"},{url:"cover/note-sculptor.webp",revision:"67c78a7120358915332faa419a2e1f45"},{url:"cover/nv-1.webp",revision:"4c286383b8df97fae10976500d5456a9"},{url:"cover/olif-sy-1-k.webp",revision:"829a8b74f7a628fa5f319e39077687a2"},{url:"cover/omni.webp",revision:"413b121431478a3ea4aa3b3e26e19bc7"},{url:"cover/online-sequencer.webp",revision:"a5f83fc41f430f8ff6ddf9f45fbc57eb"},{url:"cover/pixel-synth.webp",revision:"f6457eb849297fbd07d5172a39573b4e"},{url:"cover/roland50.webp",revision:"1a9fe1ddb1dcd07cb42cd52567ca7173"},{url:"cover/sample-stich.webp",revision:"2019a72c6963aebca1eb7e73fc5d8737"},{url:"cover/sound-box.webp",revision:"9bc7cf72ec4b983786028af651bfb97a"},{url:"cover/sound-trap.webp",revision:"424d3e69d2cabbbd222fa63e03333693"},{url:"cover/soundfont.webp",revision:"c534fa79bd1c6f0c93244189778d400b"},{url:"cover/sympathetic.webp",revision:"3b98478cb9627398e816503b41ad91c8"},{url:"cover/tanguy-synth.webp",revision:"7dc2b96bdd88af09c835d1b3f6db0249"},{url:"cover/theremin.webp",revision:"fc256e4ea00b9e7d39fa76ef97677a55"},{url:"cover/touch-pianist.webp",revision:"75cf9432de7a642fe1c71f3dab956857"},{url:"cover/touchme.webp",revision:"c64942d3fbdba893f09b720dac8ecf2f"},{url:"cover/typedrummer.webp",revision:"8d7be4a5046e7335cf6b91caea120e43"},{url:"cover/video-sampler.webp",revision:"d4b4af73791843f35f796824011cd4aa"},{url:"cover/virtual-piano.webp",revision:"ef9aacb9a39f6908c9d326c7ce588a8a"},{url:"cover/waveform.webp",revision:"fafd71aa1fb141d388d2df6d2e89b06e"},{url:"cover/web-audio-synth-v2.webp",revision:"14206290388166cf6cb7c4023c8b0503"},{url:"cover/web-modular.webp",revision:"ba22a1a127d07da1f494af6b4b1960bf"},{url:"cover/web-sid.webp",revision:"428998a4856ef3aff09ddd0e0d34bc7d"},{url:"cover/websynths.webp",revision:"d4d2b2796350e9cd786b3b68e1b225ff"},{url:"disco-computer/index.html",revision:"0b63216c966e3f27c0e86605923c2bb4"},{url:"dotpiano/index.html",revision:"389f6024180970b01ac5e0a9eaeecfca"},{url:"dx7/index.html",revision:"7dccb6fac72cf1ab2eb700427315925f"},{url:"elementary/index.html",revision:"3f580458d264b90701197750369aee2f"},{url:"groove-pizza/index.html",revision:"a836e197e2896431bbd0ca17d180f540"},{url:"icon.png",revision:"eb8e7369ba634f3bd1a96d889be50f7d"},{url:"index.html",revision:"98e67aa473575369ad7b6230ad334ecc"},{url:"isleoftune/index.html",revision:"aec5c6919f540a4fa4b6d69d58c3d6b5"},{url:"juno-106/index.html",revision:"1ca6977772b02b5cc765d5489215aa27"},{url:"line.svg",revision:"4866b853d0c5c97e9f654fa32580076a"},{url:"logo.svg",revision:"134c144f78e462c4672fc8f64e69df9e"},{url:"meet-the-heisenberg/index.html",revision:"2266ca9a79f60385c4b76f59c58c5851"},{url:"midi-city/index.html",revision:"742e1c2d3a37469d4cf271304f1ba1f8"},{url:"midi-driven-web-audio/index.html",revision:"16eadc4901d20ff62beaaed94fcf50c2"},{url:"mod-synth/index.html",revision:"6915188fbdd122a74d4ed53d8c2c7155"},{url:"multiplayer-piano/index.html",revision:"1e87a7729fab88fb39758641cb532557"},{url:"muted-io/index.html",revision:"a1ef34b459f10ac0543309dd5a319f8e"},{url:"note-sculptor/index.html",revision:"593dc6c097292dd204169862a2d944a3"},{url:"nv-1/index.html",revision:"bffc75adcae8a3d58ee862ea0e8b21ce"},{url:"olif-sy-1-k/index.html",revision:"04f46b56d35f52d665238709ed819b50"},{url:"omni/index.html",revision:"e37bc1cfd4069cf16b0c9898d19d8a06"},{url:"online-sequencer/index.html",revision:"1ad329c501828a6e3773fe4ae291405a"},{url:"pixel-synth/index.html",revision:"725b38f89c4ddd2d11c81730576c337b"},{url:"pl-logo.webp",revision:"9f0d66adf550fa40e8b2e03ff997eb34"},{url:"README.html",revision:"c94f77a846c55f44b4bceb252a823941"},{url:"roland50/index.html",revision:"43e2affd72a3566aaf4838d7f8a79e61"},{url:"sample-stich/index.html",revision:"4940987a32eb847f31bafd8b353aa032"},{url:"sound-box/index.html",revision:"08653072be002e1f15649159e00fa2f1"},{url:"sound-trap/index.html",revision:"84159284e8b91f824312854ec0871da0"},{url:"soundfont/index.html",revision:"c25ba3354ca7da3d1cead0aab46ce9ff"},{url:"sympathetic/index.html",revision:"7250786ae1e8e62f287d65c272d075f0"},{url:"tanguy-synth/index.html",revision:"5c953836a62278dc49213e34afdb1fcb"},{url:"theremin/index.html",revision:"c089d405743467747c6220837f3d4262"},{url:"touch-pianist/index.html",revision:"f2f970c99ed19ed00005084961a3bcd3"},{url:"touchme/index.html",revision:"af403cd60a8805d1455105e5877fecaa"},{url:"typedrummer/index.html",revision:"75fe296786069596b5f95e022b45b4e1"},{url:"video-sampler/index.html",revision:"448144566303b11df907e256863ac3b1"},{url:"virtual-piano/index.html",revision:"6f51ad1ecaaa90cf7adb66913b48007a"},{url:"waveform/index.html",revision:"5ebbed0232e3430bd33872fd9908d75d"},{url:"web-audio-synth-v2/index.html",revision:"a90aa0a6780dbcc254a849f266e4c7ba"},{url:"web-modular/index.html",revision:"15e983fafc912dd230a603750013e9b5"},{url:"web-sid/index.html",revision:"212ac931f67c8a3ba1ccb7100cf5f919"},{url:"websynths/index.html",revision:"d2b8bce3e566342f7e78597a89cf7316"},{url:"logo.svg",revision:"134c144f78e462c4672fc8f64e69df9e"},{url:"icon.png",revision:"eb8e7369ba634f3bd1a96d889be50f7d"},{url:"manifest.webmanifest",revision:"aee00a3fc5429948aa59c7d1c9d825cc"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))})); diff --git a/sympathetic/index.html b/sympathetic/index.html index aa1c7fae..fa886f92 100644 --- a/sympathetic/index.html +++ b/sympathetic/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Sympathetic Synthesizer System Mk 1
by Stuart Memo
keyboard
midi
additive
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/tanguy-synth/index.html b/tanguy-synth/index.html index a6ac0212..3e16b74a 100644 --- a/tanguy-synth/index.html +++ b/tanguy-synth/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Tanguy synth
by Luke Teaford
monophonic
additive
keyboard
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/theremin/index.html b/theremin/index.html index dedc8742..a67d9a66 100644 --- a/theremin/index.html +++ b/theremin/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/touch-pianist/index.html b/touch-pianist/index.html index b7e8485e..0326c811 100644 --- a/touch-pianist/index.html +++ b/touch-pianist/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Touch Pianist
by EarSlap
entertainment
piano

Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.

It also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.

Touch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/touchme/index.html b/touchme/index.html index 432cefdd..3b2501e2 100644 --- a/touchme/index.html +++ b/touchme/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
chromatone
playtronica
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/typedrummer/index.html b/typedrummer/index.html index 0a79729e..88bf3bd8 100644 --- a/typedrummer/index.html +++ b/typedrummer/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
Type Drummer
by Kyle Stetz
sequencer
drums
Keyboard
Type your drum loops
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/video-sampler/index.html b/video-sampler/index.html index 6fb4b512..d32fec41 100644 --- a/video-sampler/index.html +++ b/video-sampler/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/virtual-piano/index.html b/virtual-piano/index.html index dc67a4ad..92040853 100644 --- a/virtual-piano/index.html +++ b/virtual-piano/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
VirtualPiano.eu
by WebSyrup
midi
keyboard

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.

You 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.

Create your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own.

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/waveform/index.html b/waveform/index.html index 454c94de..66213cea 100644 --- a/waveform/index.html +++ b/waveform/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -44,8 +44,8 @@ -
Waveform
by Qvantor
playtronica
polyphonic
midi
Made with 🧡 by
Playtronica &Chromatone
- +
Waveform
by Qvantor
playtronica
polyphonic
midi
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/web-audio-synth-v2/index.html b/web-audio-synth-v2/index.html index b616adcd..d929b3e6 100644 --- a/web-audio-synth-v2/index.html +++ b/web-audio-synth-v2/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/web-modular/index.html b/web-modular/index.html index eb158ce7..7424709a 100644 --- a/web-modular/index.html +++ b/web-modular/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file diff --git a/web-sid/index.html b/web-sid/index.html index e0cb3eaf..3f689d00 100644 --- a/web-sid/index.html +++ b/web-sid/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@
WebSID Commodore 64
by Igor Zinken
polyphonic
keyboard
midi
additive
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/websynths/index.html b/websynths/index.html index ebf5758f..b43fb69e 100644 --- a/websynths/index.html +++ b/websynths/index.html @@ -5,16 +5,16 @@ Web synths | Online web audio instruments collection - - + + - - - - - - - + + + + + + + @@ -45,7 +45,7 @@ - + \ No newline at end of file