diff --git a/app.py b/app.py
index 321926e19ffefdc6a2b161c21034633fb919fc17..d728980d7c9e3be70c4f0617badc409ec3931d7d 100644
--- a/app.py
+++ b/app.py
@@ -40,7 +40,7 @@ logger.info("Done.")
# Create the app.
logger.info("Creating app...")
-app = Flask(__name__)
+app = Flask(__name__, static_url_path="")
logger.info("Done.")
# Route for the loading page.
diff --git a/source/ui/src/app.html b/source/ui/src/app.html
index 97027429e75c53c5ec7b4583304d7c2f20a30503..7c2d5fe99eec63c028c105e2b71a88d6f4665970 100644
--- a/source/ui/src/app.html
+++ b/source/ui/src/app.html
@@ -1,12 +1,18 @@
-
-
-
-
- %svelte.head%
-
-
- %svelte.body%
-
+
+
+
+
+
+
+
+
+
+
+ %svelte.head%
+
+
+ %svelte.body%
+
diff --git a/source/ui/src/config/styles.json b/source/ui/src/config/styles.json
new file mode 100644
index 0000000000000000000000000000000000000000..4506c9c61bf7f08029e37c7a2d6162a09f155b06
--- /dev/null
+++ b/source/ui/src/config/styles.json
@@ -0,0 +1,9 @@
+{
+ "piano": "Piano",
+ "chamber": "Chamber Music",
+ "rock_and_metal": "Rock and Metal",
+ "synth": "Synthesizer",
+ "church": "Church",
+ "timpani_strings_harp": "Timpani, Contrabass, Harp",
+ "country": "Country"
+}
diff --git a/source/ui/src/lib/ComposeButton.svelte b/source/ui/src/lib/ComposeButton.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..58616691ecc25c07cfa8f3fda8bce06633b52718
--- /dev/null
+++ b/source/ui/src/lib/ComposeButton.svelte
@@ -0,0 +1,29 @@
+
+
+
+
+
diff --git a/source/ui/src/lib/DensityOptions.svelte b/source/ui/src/lib/DensityOptions.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..f5a787731c6ea7d2a2bf9b0492ec3cc079fdbc45
--- /dev/null
+++ b/source/ui/src/lib/DensityOptions.svelte
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
diff --git a/source/ui/src/lib/NoteTokens.svelte b/source/ui/src/lib/NoteTokens.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..cdf39bc4cbec9e0bf8cee0115d207116f0b815b3
--- /dev/null
+++ b/source/ui/src/lib/NoteTokens.svelte
@@ -0,0 +1,31 @@
+
+ Tokenized notes
+
+ PIECE_START TRACK_START INST=DRUMS DENSITY=6 BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42
+ TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38
+ NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35
+ NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1
+ NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1
+ NOTE_OFF=35 NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1
+ NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42
+ TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42
+ TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38
+ NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35
+ NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42
+ TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1
+ NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1
+ NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42
+
+
+
+
diff --git a/source/ui/src/lib/NoteVisualisation.svelte b/source/ui/src/lib/NoteVisualisation.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..f3a9d95ee08cf4d278f2c6df60f0d3c5ada55da0
--- /dev/null
+++ b/source/ui/src/lib/NoteVisualisation.svelte
@@ -0,0 +1,21 @@
+
+ Visualised notes
+
+
+
+
diff --git a/source/ui/src/lib/Playback.svelte b/source/ui/src/lib/Playback.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..2fef85a52367c192408c206ba202d4afcee5d6b9
--- /dev/null
+++ b/source/ui/src/lib/Playback.svelte
@@ -0,0 +1,18 @@
+
+
+
+
+
diff --git a/source/ui/src/lib/Radio.svelte b/source/ui/src/lib/Radio.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..76dfde5115561242f982122380836ce237c3ac9b
--- /dev/null
+++ b/source/ui/src/lib/Radio.svelte
@@ -0,0 +1,63 @@
+
+
+
+ {#each options as option, i}
+
+ {/each}
+
+
+
+
diff --git a/source/ui/src/lib/StyleOptions.svelte b/source/ui/src/lib/StyleOptions.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..42719479aa764d0f66fe07f36bfdc59cc22d083d
--- /dev/null
+++ b/source/ui/src/lib/StyleOptions.svelte
@@ -0,0 +1,93 @@
+
+
+
+
+
diff --git a/source/ui/src/lib/StyleOptionsButton.svelte b/source/ui/src/lib/StyleOptionsButton.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..2124acc37ce8937eaaf7b83ee42c182fcc61ddfd
--- /dev/null
+++ b/source/ui/src/lib/StyleOptionsButton.svelte
@@ -0,0 +1,14 @@
+
+
+
+
+
diff --git a/source/ui/src/lib/TemperatureOptions.svelte b/source/ui/src/lib/TemperatureOptions.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..05dc3123f17d4886d06417300c01435a818acd82
--- /dev/null
+++ b/source/ui/src/lib/TemperatureOptions.svelte
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
diff --git a/source/ui/src/lib/stores.ts b/source/ui/src/lib/stores.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1db935579170b2ff9969311f13b1c4ea043c2c79
--- /dev/null
+++ b/source/ui/src/lib/stores.ts
@@ -0,0 +1,6 @@
+import { writable } from 'svelte/store';
+
+import type { Writable } from 'svelte/store';
+
+export const loading: Writable = writable(false);
+export const playing: Writable = writable(true);
diff --git a/source/ui/src/routes/index.svelte b/source/ui/src/routes/index.svelte
index 5982b0ae37dddc9f0a4528bcb91aefdfa249fbd9..77a718b8aad0da233871ac544404b06fcc52af17 100644
--- a/source/ui/src/routes/index.svelte
+++ b/source/ui/src/routes/index.svelte
@@ -1,2 +1,62 @@
-Welcome to SvelteKit
-Visit kit.svelte.dev to read the documentation
+
+
+
+ Composer
+ A hundred thousand songs used to train. One AI model. Infinite compositions.
+
+
+
+
+
+
+
+
diff --git a/source/ui/static/chamber.svg b/source/ui/static/chamber.svg
new file mode 100644
index 0000000000000000000000000000000000000000..19aeaf88f1f78664c0b1073c2697e8462e001200
--- /dev/null
+++ b/source/ui/static/chamber.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/source/ui/static/church.svg b/source/ui/static/church.svg
new file mode 100644
index 0000000000000000000000000000000000000000..87c9a8097195a9f2c6f8d42bcf86b8e415fa5000
--- /dev/null
+++ b/source/ui/static/church.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/source/ui/static/compose.png b/source/ui/static/compose.png
new file mode 100644
index 0000000000000000000000000000000000000000..8452daac7ffed9d22903a35aa2307f1397845dfd
Binary files /dev/null and b/source/ui/static/compose.png differ
diff --git a/source/ui/static/country.svg b/source/ui/static/country.svg
new file mode 100644
index 0000000000000000000000000000000000000000..c723c6830b49c68b9418e59dbe507c41f111c254
--- /dev/null
+++ b/source/ui/static/country.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/source/ui/static/download.wav b/source/ui/static/download.wav
new file mode 100644
index 0000000000000000000000000000000000000000..daa1e40fe193d35691ec740406788ebd4454a99b
Binary files /dev/null and b/source/ui/static/download.wav differ
diff --git a/source/ui/static/piano.svg b/source/ui/static/piano.svg
new file mode 100644
index 0000000000000000000000000000000000000000..358c4e7152808e7dd3a4c3ff7d8393f18171ccb7
--- /dev/null
+++ b/source/ui/static/piano.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/source/ui/static/rock_and_metal.svg b/source/ui/static/rock_and_metal.svg
new file mode 100644
index 0000000000000000000000000000000000000000..e720a0cbd1168821794ff078797e996a99ff5814
--- /dev/null
+++ b/source/ui/static/rock_and_metal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/source/ui/static/script.js b/source/ui/static/script.js
new file mode 100644
index 0000000000000000000000000000000000000000..b7cbfd7de291dc6582fc786e84929b99834e970f
--- /dev/null
+++ b/source/ui/static/script.js
@@ -0,0 +1,67 @@
+function compose() {
+
+ // Get the value of the select with id selected_midi_program.
+ var selected_music_style = document.getElementById("selected_music_style").value;
+ var selected_density = document.getElementById("selected_density").value;
+ var selected_temperature = document.getElementById("selected_temperature").value;
+
+ var xhr = new XMLHttpRequest();
+ xhr.open("POST", "compose", true);
+ xhr.setRequestHeader("Content-Type", "application/json");
+ xhr.send(JSON.stringify({
+ music_style: selected_music_style,
+ density: selected_density,
+ temperature: selected_temperature
+ }));
+
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState == 4 && xhr.status == 200) {
+ var response = JSON.parse(xhr.responseText);
+ console.log(response);
+
+ if (response.status == "OK") {
+
+ // Replace the inner html of the div with id token_sequence with the token sequence.
+ document.getElementById("token_sequence").innerHTML = response.tokens;
+
+ // Replace the source of the audio element with id audio..
+ var audio = document.getElementById("audio_id");
+ audio.src = response.audio;
+
+ // Replace the source of the image element with id image.
+ var image = document.getElementById("image_id");
+ image.src = response.image;
+
+ }
+ else {
+ alert("Error: " + response.error);
+ }
+ }
+ }
+}
+
+
+function post_command(command_name, command_parameters, reload) {
+ var xhr = new XMLHttpRequest();
+ xhr.open("POST", "/command", true);
+ xhr.setRequestHeader("Content-Type", "application/json");
+ xhr.send(JSON.stringify({command_name: command_name, command_parameters: command_parameters}));
+
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState == 4 && xhr.status == 200) {
+ var response = JSON.parse(xhr.responseText);
+ if (response.status == "OK") {
+
+ // Reload the page if requested.
+ if (reload) {
+ console.log("Reloading.");
+ load_cells();
+ }
+
+ }
+ else {
+ alert("Error: " + response.error);
+ }
+ }
+ }
+}
diff --git a/source/ui/static/style.css b/source/ui/static/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..38efe2490f6d0e164076a2d194c9a36a668dca45
--- /dev/null
+++ b/source/ui/static/style.css
@@ -0,0 +1,21 @@
+body {
+ /* width: 100%; */
+ padding: 2rem;
+ font-family: 'Lato', sans-serif;
+ background-color: hsl(0 0% 1%);
+}
+
+
+h1 {
+ font-family: 'Italiana', serif;
+ letter-spacing: 0.05ch;
+}
+
+
+body, h1 {
+ color: hsl(0 0% 97%);
+}
+
+/* #options h3 {
+ font-weight: 700;
+} */
diff --git a/source/ui/static/synth.svg b/source/ui/static/synth.svg
new file mode 100644
index 0000000000000000000000000000000000000000..76bb68d272351fe96c951655dbf292acbcf0e2a2
--- /dev/null
+++ b/source/ui/static/synth.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/source/ui/static/timpani_strings_harp.svg b/source/ui/static/timpani_strings_harp.svg
new file mode 100644
index 0000000000000000000000000000000000000000..9b55a1522ef2bc5c344d65994c376d8f0041dbe7
--- /dev/null
+++ b/source/ui/static/timpani_strings_harp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/source/ui/svelte.config.js b/source/ui/svelte.config.js
index 9ae00617823b379d70eea704fe62397caebeaf8c..1c418390d755418d3cfbeda05eccbb9e7b7a5afc 100644
--- a/source/ui/svelte.config.js
+++ b/source/ui/svelte.config.js
@@ -8,6 +8,7 @@ const config = {
kit: {
adapter: adapter({
pages: '../../templates',
+ assets: '../../static',
}),
prerender: {
default: true,
diff --git a/static/_app/assets/pages/index.svelte-de534b64.css b/static/_app/assets/pages/index.svelte-de534b64.css
new file mode 100644
index 0000000000000000000000000000000000000000..8280c6b25b7041ebe01dec50db3ffca45dd92589
--- /dev/null
+++ b/static/_app/assets/pages/index.svelte-de534b64.css
@@ -0,0 +1 @@
+button.svelte-tf23mt{width:3.2rem;aspect-ratio:1 / 1;cursor:pointer}fieldset.svelte-1r9pswz.svelte-1r9pswz{position:relative;padding:0;border:none;margin-top:1rem}legend.svelte-1r9pswz.svelte-1r9pswz{text-align:center;font-size:1.25rem;font-weight:700;padding:0}.grid.svelte-1r9pswz.svelte-1r9pswz{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;width:min-content;margin:1rem auto}img.svelte-1r9pswz.svelte-1r9pswz{width:100%;height:100%;filter:invert(1);margin:auto}label.svelte-1r9pswz.svelte-1r9pswz{background-color:transparent;border-radius:.375rem;transition:background-color .25s;cursor:pointer}label.svelte-1r9pswz>div.svelte-1r9pswz{width:3rem;aspect-ratio:1 / 1}input.svelte-1r9pswz.svelte-1r9pswz{position:fixed;opacity:0;pointer-events:none}label[data-selected=true].svelte-1r9pswz.svelte-1r9pswz{background-color:#f7f7f7;border-radius:.375rem}label[data-selected=true].svelte-1r9pswz img.svelte-1r9pswz{filter:none}@media (min-width: 600px) and (max-width: 899px){.grid.svelte-1r9pswz.svelte-1r9pswz{display:flex;flex-direction:row}}@media (min-width: 900px){.grid.svelte-1r9pswz.svelte-1r9pswz{grid-template-columns:repeat(4,1fr)}}.options.svelte-1m848u0{display:flex;flex-direction:row;justify-content:center;width:100%;margin:auto}label.svelte-1m848u0{display:block;margin-bottom:1rem;padding:.5rem;border:2px solid hsl(0 0% 97%);border-right:none;text-align:center;transition:background-color .25s;cursor:pointer}label.svelte-1m848u0:nth-of-type(1){border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-right-width:0}label.svelte-1m848u0:last-of-type{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem;border-right:2px solid hsl(0 0% 97%)}label[data-selected=true].svelte-1m848u0{background-color:#fff;color:#333;font-weight:700}label.svelte-1m848u0:focus{outline:red}input.svelte-1m848u0{position:fixed;opacity:0;pointer-events:none}fieldset.svelte-1cq0vc2{padding:0;border:none;margin-top:1rem}legend.svelte-1cq0vc2{text-align:center;font-size:1.25rem;font-weight:700;padding:0;margin-bottom:1rem}fieldset.svelte-nlqy14{padding:0;border:none;margin-top:1rem}legend.svelte-nlqy14{text-align:center;font-size:1.25rem;font-weight:700;padding:0;margin-bottom:1rem}button.svelte-aq73nm{display:block;font-size:1.2rem;font-family:Lato,sans-serif;font-weight:700;color:#f7f7f7;background:transparent;border:3px solid hsl(0 0% 97%);border-radius:.375rem;padding:.5rem 1rem;cursor:pointer;margin:1rem auto 2rem}button[disabled].svelte-aq73nm{border-color:gray;color:gray;cursor:initial}audio.svelte-1e9isw9{width:100%;margin:1rem auto}@media (min-width: 600px){audio.svelte-1e9isw9{max-width:40rem}}section.svelte-1tzlz20{border:2px solid hsl(0 0% 80%);border-radius:.375rem;padding:1rem}img.svelte-1tzlz20{display:block;margin:auto;max-width:100%}section.svelte-1sitrxx{border:2px solid hsl(0 0% 80%);border-radius:.375rem;padding:1rem}main.svelte-1m4hhxp{width:100%;display:flex;flex-direction:column;gap:1rem;margin:0 auto}h1.svelte-1m4hhxp{font-size:1.5rem;border-left:.25ch solid hsl(0 0% 97%);padding-left:.5ch}p.svelte-1m4hhxp{font-size:2.25rem}#options.svelte-1m4hhxp{display:flex;flex-direction:column;justify-content:space-between}@media (min-width: 600px){main.svelte-1m4hhxp{max-width:60rem}}@media (min-width: 900px){#options.svelte-1m4hhxp{display:flex;flex-direction:row;justify-content:space-between}}
diff --git a/static/_app/chunks/index-a16eaf24.js b/static/_app/chunks/index-a16eaf24.js
new file mode 100644
index 0000000000000000000000000000000000000000..a20844e7028c6414f77755bd6d6468b6736ff8c1
--- /dev/null
+++ b/static/_app/chunks/index-a16eaf24.js
@@ -0,0 +1 @@
+import{E as f,s as l}from"./index-bc271058.js";const e=[];function h(n,u=f){let o;const i=new Set;function r(t){if(l(n,t)&&(n=t,o)){const c=!e.length;for(const s of i)s[1](),e.push(s,n);if(c){for(let s=0;s{i.delete(s),i.size===0&&(o(),o=null)}}return{set:r,update:b,subscribe:p}}export{h as w};
diff --git a/static/_app/chunks/index-bc271058.js b/static/_app/chunks/index-bc271058.js
new file mode 100644
index 0000000000000000000000000000000000000000..5b0ed0894da58dc0a3f861d96272e9244fb4d3b3
--- /dev/null
+++ b/static/_app/chunks/index-bc271058.js
@@ -0,0 +1 @@
+function v(){}function F(t,n){for(const e in n)t[e]=n[e];return t}function L(t){return t()}function M(){return Object.create(null)}function p(t){t.forEach(L)}function H(t){return typeof t=="function"}function lt(t,n){return t!=t?n==n:t!==n||t&&typeof t=="object"||typeof t=="function"}let g;function ot(t,n){return g||(g=document.createElement("a")),g.href=n,t===g.href}function I(t){return Object.keys(t).length===0}function G(t,...n){if(t==null)return v;const e=t.subscribe(...n);return e.unsubscribe?()=>e.unsubscribe():e}function ut(t,n,e){t.$$.on_destroy.push(G(n,e))}function st(t,n,e,i){if(t){const c=T(t,n,e,i);return t[0](c)}}function T(t,n,e,i){return t[1]&&i?F(e.ctx.slice(),t[1](i(n))):e.ctx}function ft(t,n,e,i){if(t[2]&&i){const c=t[2](i(e));if(n.dirty===void 0)return c;if(typeof c=="object"){const s=[],l=Math.max(n.dirty.length,c.length);for(let o=0;o32){const n=[],e=t.ctx.length/32;for(let i=0;i>1);e(c)<=i?t=c+1:n=c}return t}function Q(t){if(t.hydrate_init)return;t.hydrate_init=!0;let n=t.childNodes;if(t.nodeName==="HEAD"){const r=[];for(let u=0;u0&&n[e[c]].claim_order<=u?c+1:W(1,c,y=>n[e[y]].claim_order,u))-1;i[r]=e[a]+1;const f=a+1;e[f]=r,c=Math.max(f,c)}const s=[],l=[];let o=n.length-1;for(let r=e[c]+1;r!=0;r=i[r-1]){for(s.push(n[r-1]);o>=r;o--)l.push(n[o]);o--}for(;o>=0;o--)l.push(n[o]);s.reverse(),l.sort((r,u)=>r.claim_order-u.claim_order);for(let r=0,u=0;r=s[u].claim_order;)u++;const a=ut.removeEventListener(n,e,i)}function gt(t,n,e){e==null?t.removeAttribute(n):t.getAttribute(n)!==e&&t.setAttribute(n,e)}function X(t){return Array.from(t.childNodes)}function Y(t){t.claim_info===void 0&&(t.claim_info={last_index:0,total_claimed:0})}function O(t,n,e,i,c=!1){Y(t);const s=(()=>{for(let l=t.claim_info.last_index;l=0;l--){const o=t[l];if(n(o)){const r=e(o);return r===void 0?t.splice(l,1):t[l]=r,c?r===void 0&&t.claim_info.last_index--:t.claim_info.last_index=l,o}}return i()})();return s.claim_order=t.claim_info.total_claimed,t.claim_info.total_claimed+=1,s}function Z(t,n,e,i){return O(t,c=>c.nodeName===n,c=>{const s=[];for(let l=0;lc.removeAttribute(l))},()=>i(n))}function xt(t,n,e){return Z(t,n,e,V)}function tt(t,n){return O(t,e=>e.nodeType===3,e=>{const i=""+n;if(e.data.startsWith(i)){if(e.data.length!==i.length)return e.splitText(i.length)}else e.data=i},()=>N(n),!0)}function bt(t){return tt(t," ")}function $t(t,n){n=""+n,t.wholeText!==n&&(t.data=n)}function wt(t,n,e,i){e===null?t.style.removeProperty(n):t.style.setProperty(n,e,i?"important":"")}let m;function h(t){m=t}function A(){if(!m)throw new Error("Function called outside component initialization");return m}function Et(t){A().$$.on_mount.push(t)}function kt(t){A().$$.after_update.push(t)}function jt(t,n){A().$$.context.set(t,n)}const d=[],q=[],b=[],B=[],P=Promise.resolve();let k=!1;function z(){k||(k=!0,P.then(D))}function vt(){return z(),P}function j(t){b.push(t)}const E=new Set;let x=0;function D(){const t=m;do{for(;x{$.delete(t),i&&(e&&t.d(1),i())}),t.o(n)}}function Ct(t,n){const e={},i={},c={$$scope:1};let s=t.length;for(;s--;){const l=t[s],o=n[s];if(o){for(const r in l)r in o||(i[r]=1);for(const r in o)c[r]||(e[r]=o[r],c[r]=1);t[s]=o}else for(const r in l)c[r]=1}for(const l in i)l in e||(e[l]=void 0);return e}function Mt(t){return typeof t=="object"&&t!==null?t:{}}function qt(t){t&&t.c()}function Bt(t,n){t&&t.l(n)}function it(t,n,e,i){const{fragment:c,on_mount:s,on_destroy:l,after_update:o}=t.$$;c&&c.m(n,e),i||j(()=>{const r=s.map(L).filter(H);l?l.push(...r):p(r),t.$$.on_mount=[]}),o.forEach(j)}function rt(t,n){const e=t.$$;e.fragment!==null&&(p(e.on_destroy),e.fragment&&e.fragment.d(n),e.on_destroy=e.fragment=null,e.ctx=[])}function ct(t,n){t.$$.dirty[0]===-1&&(d.push(t),z(),t.$$.dirty.fill(0)),t.$$.dirty[n/31|0]|=1<{const C=S.length?S[0]:y;return u.ctx&&c(u.ctx[f],u.ctx[f]=C)&&(!u.skip_bound&&u.bound[f]&&u.bound[f](C),a&&ct(t,f)),y}):[],u.update(),a=!0,p(u.before_update),u.fragment=i?i(u.ctx):!1,n.target){if(n.hydrate){J();const f=X(n.target);u.fragment&&u.fragment.l(f),f.forEach(U)}else u.fragment&&u.fragment.c();n.intro&&et(t.$$.fragment),it(t,n.target,n.anchor,n.customElement),K(),D()}h(r)}class Tt{$destroy(){rt(this,1),this.$destroy=v}$on(n,e){const i=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return i.push(e),()=>{const c=i.indexOf(e);c!==-1&&i.splice(c,1)}}$set(n){this.$$set&&!I(n)&&(this.$$.skip_bound=!0,this.$$set(n),this.$$.skip_bound=!1)}}export{Mt as A,rt as B,F as C,vt as D,v as E,st as F,at as G,_t as H,ft as I,R as J,ot as K,yt as L,ht as M,ut as N,Tt as S,X as a,gt as b,xt as c,U as d,V as e,wt as f,dt as g,tt as h,Lt as i,$t as j,mt as k,pt as l,bt as m,Nt as n,St as o,At as p,et as q,jt as r,lt as s,N as t,kt as u,Et as v,qt as w,Bt as x,it as y,Ct as z};
diff --git a/templates/_app/error.svelte-5990926f.js b/static/_app/error.svelte-b9cb04fa.js
similarity index 55%
rename from templates/_app/error.svelte-5990926f.js
rename to static/_app/error.svelte-b9cb04fa.js
index 8520b8cca72aa022485dcb85976e714e23f15360..bdfc736d43b9e77dc45f388994e18ac2fca69473 100644
--- a/templates/_app/error.svelte-5990926f.js
+++ b/static/_app/error.svelte-b9cb04fa.js
@@ -1 +1 @@
-import{S as w,i as y,s as z,e as E,t as v,c as d,a as b,h as P,d as o,g as n,J as R,j as N,k as S,l as C,m as j,n as H}from"./chunks/index-60624bc8.js";function J(r){let l,t=r[1].frame+"",a;return{c(){l=E("pre"),a=v(t)},l(f){l=d(f,"PRE",{});var s=b(l);a=P(s,t),s.forEach(o)},m(f,s){n(f,l,s),R(l,a)},p(f,s){s&2&&t!==(t=f[1].frame+"")&&N(a,t)},d(f){f&&o(l)}}}function h(r){let l,t=r[1].stack+"",a;return{c(){l=E("pre"),a=v(t)},l(f){l=d(f,"PRE",{});var s=b(l);a=P(s,t),s.forEach(o)},m(f,s){n(f,l,s),R(l,a)},p(f,s){s&2&&t!==(t=f[1].stack+"")&&N(a,t)},d(f){f&&o(l)}}}function A(r){let l,t,a,f,s=r[1].message+"",c,k,u,p,i=r[1].frame&&J(r),_=r[1].stack&&h(r);return{c(){l=E("h1"),t=v(r[0]),a=S(),f=E("pre"),c=v(s),k=S(),i&&i.c(),u=S(),_&&_.c(),p=C()},l(e){l=d(e,"H1",{});var m=b(l);t=P(m,r[0]),m.forEach(o),a=j(e),f=d(e,"PRE",{});var q=b(f);c=P(q,s),q.forEach(o),k=j(e),i&&i.l(e),u=j(e),_&&_.l(e),p=C()},m(e,m){n(e,l,m),R(l,t),n(e,a,m),n(e,f,m),R(f,c),n(e,k,m),i&&i.m(e,m),n(e,u,m),_&&_.m(e,m),n(e,p,m)},p(e,[m]){m&1&&N(t,e[0]),m&2&&s!==(s=e[1].message+"")&&N(c,s),e[1].frame?i?i.p(e,m):(i=J(e),i.c(),i.m(u.parentNode,u)):i&&(i.d(1),i=null),e[1].stack?_?_.p(e,m):(_=h(e),_.c(),_.m(p.parentNode,p)):_&&(_.d(1),_=null)},i:H,o:H,d(e){e&&o(l),e&&o(a),e&&o(f),e&&o(k),i&&i.d(e),e&&o(u),_&&_.d(e),e&&o(p)}}}function F({error:r,status:l}){return{props:{error:r,status:l}}}function B(r,l,t){let{status:a}=l,{error:f}=l;return r.$$set=s=>{"status"in s&&t(0,a=s.status),"error"in s&&t(1,f=s.error)},[a,f]}class G extends w{constructor(l){super(),y(this,l,B,A,z,{status:0,error:1})}}export{G as default,F as load};
+import{S as w,i as y,s as z,e as E,t as v,c as d,a as b,h as P,d as o,g as u,J as R,j as N,k as S,l as C,m as j,E as H}from"./chunks/index-bc271058.js";function J(r){let l,t=r[1].frame+"",a;return{c(){l=E("pre"),a=v(t)},l(f){l=d(f,"PRE",{});var s=b(l);a=P(s,t),s.forEach(o)},m(f,s){u(f,l,s),R(l,a)},p(f,s){s&2&&t!==(t=f[1].frame+"")&&N(a,t)},d(f){f&&o(l)}}}function h(r){let l,t=r[1].stack+"",a;return{c(){l=E("pre"),a=v(t)},l(f){l=d(f,"PRE",{});var s=b(l);a=P(s,t),s.forEach(o)},m(f,s){u(f,l,s),R(l,a)},p(f,s){s&2&&t!==(t=f[1].stack+"")&&N(a,t)},d(f){f&&o(l)}}}function A(r){let l,t,a,f,s=r[1].message+"",c,k,n,p,i=r[1].frame&&J(r),_=r[1].stack&&h(r);return{c(){l=E("h1"),t=v(r[0]),a=S(),f=E("pre"),c=v(s),k=S(),i&&i.c(),n=S(),_&&_.c(),p=C()},l(e){l=d(e,"H1",{});var m=b(l);t=P(m,r[0]),m.forEach(o),a=j(e),f=d(e,"PRE",{});var q=b(f);c=P(q,s),q.forEach(o),k=j(e),i&&i.l(e),n=j(e),_&&_.l(e),p=C()},m(e,m){u(e,l,m),R(l,t),u(e,a,m),u(e,f,m),R(f,c),u(e,k,m),i&&i.m(e,m),u(e,n,m),_&&_.m(e,m),u(e,p,m)},p(e,[m]){m&1&&N(t,e[0]),m&2&&s!==(s=e[1].message+"")&&N(c,s),e[1].frame?i?i.p(e,m):(i=J(e),i.c(),i.m(n.parentNode,n)):i&&(i.d(1),i=null),e[1].stack?_?_.p(e,m):(_=h(e),_.c(),_.m(p.parentNode,p)):_&&(_.d(1),_=null)},i:H,o:H,d(e){e&&o(l),e&&o(a),e&&o(f),e&&o(k),i&&i.d(e),e&&o(n),_&&_.d(e),e&&o(p)}}}function F({error:r,status:l}){return{props:{error:r,status:l}}}function B(r,l,t){let{status:a}=l,{error:f}=l;return r.$$set=s=>{"status"in s&&t(0,a=s.status),"error"in s&&t(1,f=s.error)},[a,f]}class G extends w{constructor(l){super(),y(this,l,B,A,z,{status:0,error:1})}}export{G as default,F as load};
diff --git a/static/_app/layout.svelte-b226a993.js b/static/_app/layout.svelte-b226a993.js
new file mode 100644
index 0000000000000000000000000000000000000000..90fc05390f7219e124ebaadd984f05b894d5c735
--- /dev/null
+++ b/static/_app/layout.svelte-b226a993.js
@@ -0,0 +1 @@
+import{S as l,i,s as r,F as u,G as f,H as _,I as c,q as p,o as d}from"./chunks/index-bc271058.js";function m(n){let s;const o=n[1].default,e=u(o,n,n[0],null);return{c(){e&&e.c()},l(t){e&&e.l(t)},m(t,a){e&&e.m(t,a),s=!0},p(t,[a]){e&&e.p&&(!s||a&1)&&f(e,o,t,t[0],s?c(o,t[0],a,null):_(t[0]),null)},i(t){s||(p(e,t),s=!0)},o(t){d(e,t),s=!1},d(t){e&&e.d(t)}}}function $(n,s,o){let{$$slots:e={},$$scope:t}=s;return n.$$set=a=>{"$$scope"in a&&o(0,t=a.$$scope)},[t,e]}class h extends l{constructor(s){super(),i(this,s,$,m,r,{})}}export{h as default};
diff --git a/templates/_app/manifest.json b/static/_app/manifest.json
similarity index 59%
rename from templates/_app/manifest.json
rename to static/_app/manifest.json
index bb0512826f20d00f5ea6b88d7817203740e8d743..22478048d1fdec38e0ca551f3d1cff5a815a6b33 100644
--- a/templates/_app/manifest.json
+++ b/static/_app/manifest.json
@@ -1,10 +1,11 @@
{
".svelte-kit/runtime/client/start.js": {
- "file": "start-b41bef43.js",
+ "file": "start-c175317f.js",
"src": ".svelte-kit/runtime/client/start.js",
"isEntry": true,
"imports": [
- "_index-60624bc8.js"
+ "_index-bc271058.js",
+ "_index-a16eaf24.js"
],
"dynamicImports": [
".svelte-kit/runtime/components/layout.svelte",
@@ -13,33 +14,43 @@
]
},
".svelte-kit/runtime/components/layout.svelte": {
- "file": "layout.svelte-e3a1ab0e.js",
+ "file": "layout.svelte-b226a993.js",
"src": ".svelte-kit/runtime/components/layout.svelte",
"isEntry": true,
"isDynamicEntry": true,
"imports": [
- "_index-60624bc8.js"
+ "_index-bc271058.js"
]
},
".svelte-kit/runtime/components/error.svelte": {
- "file": "error.svelte-5990926f.js",
+ "file": "error.svelte-b9cb04fa.js",
"src": ".svelte-kit/runtime/components/error.svelte",
"isEntry": true,
"isDynamicEntry": true,
"imports": [
- "_index-60624bc8.js"
+ "_index-bc271058.js"
]
},
"src/routes/index.svelte": {
- "file": "pages/index.svelte-47304b27.js",
+ "file": "pages/index.svelte-8e87fac9.js",
"src": "src/routes/index.svelte",
"isEntry": true,
"isDynamicEntry": true,
"imports": [
- "_index-60624bc8.js"
+ "_index-bc271058.js",
+ "_index-a16eaf24.js"
+ ],
+ "css": [
+ "assets/pages/index.svelte-de534b64.css"
]
},
- "_index-60624bc8.js": {
- "file": "chunks/index-60624bc8.js"
+ "_index-bc271058.js": {
+ "file": "chunks/index-bc271058.js"
+ },
+ "_index-a16eaf24.js": {
+ "file": "chunks/index-a16eaf24.js",
+ "imports": [
+ "_index-bc271058.js"
+ ]
}
}
\ No newline at end of file
diff --git a/static/_app/pages/index.svelte-8e87fac9.js b/static/_app/pages/index.svelte-8e87fac9.js
new file mode 100644
index 0000000000000000000000000000000000000000..543726398bfb3ad3eb1d8d8b5894845dfe9014a7
--- /dev/null
+++ b/static/_app/pages/index.svelte-8e87fac9.js
@@ -0,0 +1,27 @@
+import{S as C,i as B,s as z,e as u,k as m,c as h,a as f,d as c,m as v,K as x,b as N,g as D,J as o,L as se,t as M,h as $,j as J,E as p,M as ne,w as y,x as b,y as S,q as R,o as w,B as k,N as le}from"../chunks/index-bc271058.js";import{w as Ee}from"../chunks/index-a16eaf24.js";const Te="Piano",ae="Chamber Music",re="Rock and Metal",Oe="Synthesizer",oe="Church",ie="Timpani, Contrabass, Harp",Ne="Country";var G={piano:Te,chamber:ae,rock_and_metal:re,synth:Oe,church:oe,timpani_strings_harp:ie,country:Ne};function X(T,e,s){const n=T.slice();return n[4]=e[s],n[6]=s,n}function Z(T){let e,s,n,a,_,l,E,t,r,i,O,g;return{c(){e=u("label"),s=u("div"),n=u("img"),l=m(),E=u("input"),r=m(),this.h()},l(d){e=h(d,"LABEL",{"data-selected":!0,class:!0});var I=f(e);s=h(I,"DIV",{class:!0});var L=f(s);n=h(L,"IMG",{src:!0,alt:!0,class:!0}),L.forEach(c),l=v(I),E=h(I,"INPUT",{type:!0,class:!0}),r=v(I),I.forEach(c),this.h()},h(){x(n.src,a=`${T[4]}.svg`)||N(n,"src",a),N(n,"alt",_=G[T[4]]),N(n,"class","svelte-1r9pswz"),N(s,"class","svelte-1r9pswz"),N(E,"type","radio"),E.__value=t=T[4],E.value=E.__value,N(E,"class","svelte-1r9pswz"),T[3][0].push(E),N(e,"data-selected",i=T[0]===T[4]),N(e,"class","svelte-1r9pswz")},m(d,I){D(d,e,I),o(e,s),o(s,n),o(e,l),o(e,E),E.checked=E.__value===T[0],o(e,r),O||(g=se(E,"change",T[2]),O=!0)},p(d,I){I&1&&(E.checked=E.__value===d[0]),I&1&&i!==(i=d[0]===d[4])&&N(e,"data-selected",i)},d(d){d&&c(e),T[3][0].splice(T[3][0].indexOf(E),1),O=!1,g()}}}function ce(T){let e,s,n=(G[T[0]]||"Synthesizer")+"",a,_,l,E=T[1],t=[];for(let r=0;r{"options"in t&&s(0,n=t.options),"type"in t&&s(2,a=t.type)},[n,_,a,E,l]}class _e extends C{constructor(e){super(),B(this,e,de,fe,z,{options:0,type:2})}}function Fe(T){let e,s,n,a,_,l,E;return l=new _e({props:{options:T[0],type:pe}}),{c(){e=u("div"),s=u("fieldset"),n=u("legend"),a=M("Note density"),_=m(),y(l.$$.fragment),this.h()},l(t){e=h(t,"DIV",{});var r=f(e);s=h(r,"FIELDSET",{class:!0});var i=f(s);n=h(i,"LEGEND",{class:!0});var O=f(n);a=$(O,"Note density"),O.forEach(c),_=v(i),b(l.$$.fragment,i),i.forEach(c),r.forEach(c),this.h()},h(){N(n,"class","svelte-1cq0vc2"),N(s,"class","svelte-1cq0vc2")},m(t,r){D(t,e,r),o(e,s),o(s,n),o(n,a),o(s,_),S(l,s,null),E=!0},p,i(t){E||(R(l.$$.fragment,t),E=!0)},o(t){w(l.$$.fragment,t),E=!1},d(t){t&&c(e),k(l)}}}const pe="density";function me(T){return[["Low","Medium","High"]]}class ve extends C{constructor(e){super(),B(this,e,me,Fe,z,{})}}function Ae(T){let e,s,n,a,_,l,E;return l=new _e({props:{options:T[0],type:Ie}}),{c(){e=u("div"),s=u("fieldset"),n=u("legend"),a=M("Temperature"),_=m(),y(l.$$.fragment),this.h()},l(t){e=h(t,"DIV",{});var r=f(e);s=h(r,"FIELDSET",{class:!0});var i=f(s);n=h(i,"LEGEND",{class:!0});var O=f(n);a=$(O,"Temperature"),O.forEach(c),_=v(i),b(l.$$.fragment,i),i.forEach(c),r.forEach(c),this.h()},h(){N(n,"class","svelte-nlqy14"),N(s,"class","svelte-nlqy14")},m(t,r){D(t,e,r),o(e,s),o(s,n),o(n,a),o(s,_),S(l,s,null),E=!0},p,i(t){E||(R(l.$$.fragment,t),E=!0)},o(t){w(l.$$.fragment,t),E=!1},d(t){t&&c(e),k(l)}}}const Ie="temperature";function ge(T){return[["Low","Medium","High","Very High"]]}class De extends C{constructor(e){super(),B(this,e,ge,Ae,z,{})}}const Le=Ee(!1);function Me(T){let e,s;return{c(){e=u("button"),s=M(T[1]),this.h()},l(n){e=h(n,"BUTTON",{class:!0});var a=f(e);s=$(a,T[1]),a.forEach(c),this.h()},h(){e.disabled=T[0],N(e,"class","svelte-aq73nm")},m(n,a){D(n,e,a),o(e,s)},p(n,[a]){a&2&&J(s,n[1]),a&1&&(e.disabled=n[0])},i:p,o:p,d(n){n&&c(e)}}}function $e(T,e,s){let n,a;return le(T,Le,_=>s(0,a=_)),T.$$.update=()=>{T.$$.dirty&1&&s(1,n=a?"Composing...":"Compose \u2728")},[a,n]}class ye extends C{constructor(e){super(),B(this,e,$e,Me,z,{})}}function be(T){let e,s;return{c(){e=u("audio"),this.h()},l(n){e=h(n,"AUDIO",{src:!0,class:!0}),f(e).forEach(c),this.h()},h(){e.controls=!0,x(e.src,s="download.wav")||N(e,"src",s),N(e,"class","svelte-1e9isw9")},m(n,a){D(n,e,a)},p,i:p,o:p,d(n){n&&c(e)}}}class Se extends C{constructor(e){super(),B(this,e,null,be,z,{})}}function Re(T){let e,s,n,a,_,l;return{c(){e=u("section"),s=u("h2"),n=M("Visualised notes"),a=m(),_=u("img"),this.h()},l(E){e=h(E,"SECTION",{class:!0});var t=f(e);s=h(t,"H2",{});var r=f(s);n=$(r,"Visualised notes"),r.forEach(c),a=v(t),_=h(t,"IMG",{src:!0,alt:!0,class:!0}),t.forEach(c),this.h()},h(){x(_.src,l="compose.png")||N(_,"src",l),N(_,"alt","MIDI notes of composition"),N(_,"class","svelte-1tzlz20"),N(e,"class","svelte-1tzlz20")},m(E,t){D(E,e,t),o(e,s),o(s,n),o(e,a),o(e,_)},p,i:p,o:p,d(E){E&&c(e)}}}class we extends C{constructor(e){super(),B(this,e,null,Re,z,{})}}function ke(T){let e,s,n,a,_,l;return{c(){e=u("section"),s=u("h2"),n=M("Tokenized notes"),a=m(),_=u("p"),l=M(`PIECE_START TRACK_START INST=DRUMS DENSITY=6 BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42
+ TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38
+ NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35
+ NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1
+ NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1
+ NOTE_OFF=35 NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1
+ NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42
+ TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42
+ TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38
+ NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35
+ NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42
+ TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1
+ NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1
+ NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42`),this.h()},l(E){e=h(E,"SECTION",{class:!0});var t=f(e);s=h(t,"H2",{});var r=f(s);n=$(r,"Tokenized notes"),r.forEach(c),a=v(t),_=h(t,"P",{});var i=f(_);l=$(i,`PIECE_START TRACK_START INST=DRUMS DENSITY=6 BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42
+ TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38
+ NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35
+ NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1
+ NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1
+ NOTE_OFF=35 NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1
+ NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42
+ TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42
+ TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38
+ NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35
+ NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42
+ TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1
+ NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1
+ NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42`),i.forEach(c),t.forEach(c),this.h()},h(){N(e,"class","svelte-1sitrxx")},m(E,t){D(E,e,t),o(e,s),o(s,n),o(e,a),o(e,_),o(_,l)},p,i:p,o:p,d(E){E&&c(e)}}}class Ce extends C{constructor(e){super(),B(this,e,null,ke,z,{})}}function Be(T){let e,s,n,a,_,l,E,t,r,i,O,g,d,I,L,K,P,j,V,Y,q,U;return r=new he({}),O=new ve({}),d=new De({}),L=new ye({}),P=new Se({}),V=new we({}),q=new Ce({}),{c(){e=u("main"),s=u("h1"),n=M("Composer"),a=m(),_=u("p"),l=M("A hundred thousand songs used to train. One AI model. Infinite compositions."),E=m(),t=u("section"),y(r.$$.fragment),i=m(),y(O.$$.fragment),g=m(),y(d.$$.fragment),I=m(),y(L.$$.fragment),K=m(),y(P.$$.fragment),j=m(),y(V.$$.fragment),Y=m(),y(q.$$.fragment),this.h()},l(F){e=h(F,"MAIN",{class:!0});var A=f(e);s=h(A,"H1",{class:!0});var Q=f(s);n=$(Q,"Composer"),Q.forEach(c),a=v(A),_=h(A,"P",{class:!0});var W=f(_);l=$(W,"A hundred thousand songs used to train. One AI model. Infinite compositions."),W.forEach(c),E=v(A),t=h(A,"SECTION",{id:!0,class:!0});var H=f(t);b(r.$$.fragment,H),i=v(H),b(O.$$.fragment,H),g=v(H),b(d.$$.fragment,H),H.forEach(c),I=v(A),b(L.$$.fragment,A),K=v(A),b(P.$$.fragment,A),j=v(A),b(V.$$.fragment,A),Y=v(A),b(q.$$.fragment,A),A.forEach(c),this.h()},h(){N(s,"class","svelte-1m4hhxp"),N(_,"class","svelte-1m4hhxp"),N(t,"id","options"),N(t,"class","svelte-1m4hhxp"),N(e,"class","svelte-1m4hhxp")},m(F,A){D(F,e,A),o(e,s),o(s,n),o(e,a),o(e,_),o(_,l),o(e,E),o(e,t),S(r,t,null),o(t,i),S(O,t,null),o(t,g),S(d,t,null),o(e,I),S(L,e,null),o(e,K),S(P,e,null),o(e,j),S(V,e,null),o(e,Y),S(q,e,null),U=!0},p,i(F){U||(R(r.$$.fragment,F),R(O.$$.fragment,F),R(d.$$.fragment,F),R(L.$$.fragment,F),R(P.$$.fragment,F),R(V.$$.fragment,F),R(q.$$.fragment,F),U=!0)},o(F){w(r.$$.fragment,F),w(O.$$.fragment,F),w(d.$$.fragment,F),w(L.$$.fragment,F),w(P.$$.fragment,F),w(V.$$.fragment,F),w(q.$$.fragment,F),U=!1},d(F){F&&c(e),k(r),k(O),k(d),k(L),k(P),k(V),k(q)}}}class Ve extends C{constructor(e){super(),B(this,e,null,Be,z,{})}}export{Ve as default};
diff --git a/static/_app/start-c175317f.js b/static/_app/start-c175317f.js
new file mode 100644
index 0000000000000000000000000000000000000000..d0db3b080184231c9c13dfbc38f5af59f4acf5ba
--- /dev/null
+++ b/static/_app/start-c175317f.js
@@ -0,0 +1 @@
+var et=Object.defineProperty,tt=Object.defineProperties;var nt=Object.getOwnPropertyDescriptors;var fe=Object.getOwnPropertySymbols;var Te=Object.prototype.hasOwnProperty,De=Object.prototype.propertyIsEnumerable;var Ie=(n,e,t)=>e in n?et(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,P=(n,e)=>{for(var t in e||(e={}))Te.call(e,t)&&Ie(n,t,e[t]);if(fe)for(var t of fe(e))De.call(e,t)&&Ie(n,t,e[t]);return n},ne=(n,e)=>tt(n,nt(e));var Ve=(n,e)=>{var t={};for(var s in n)Te.call(n,s)&&e.indexOf(s)<0&&(t[s]=n[s]);if(n!=null&&fe)for(var s of fe(n))e.indexOf(s)<0&&De.call(n,s)&&(t[s]=n[s]);return t};import{S as rt,i as st,s as it,e as at,c as ot,a as ct,d as V,b as we,f as B,g as q,t as lt,h as ft,j as ut,k as dt,l as C,m as pt,n as M,o as j,p as F,q as I,r as ht,u as _t,v as $e,w as z,x as se,y as J,z as ie,A as ae,B as K,C as oe,D as qe}from"./chunks/index-bc271058.js";import{w as ue}from"./chunks/index-a16eaf24.js";let ze="",He="";function mt(n){ze=n.base,He=n.assets||ze}function gt(n){let e,t,s;const l=[n[1]||{}];var c=n[0][0];function f(r){let i={};for(let a=0;a{K(d,1)}),F()}c?(e=new c(f()),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else c&&e.$set(a)},i(r){s||(e&&I(e.$$.fragment,r),s=!0)},o(r){e&&j(e.$$.fragment,r),s=!1},d(r){r&&V(t),e&&K(e,r)}}}function wt(n){let e,t,s;const l=[n[1]||{}];var c=n[0][0];function f(r){let i={$$slots:{default:[$t]},$$scope:{ctx:r}};for(let a=0;a{K(d,1)}),F()}c?(e=new c(f(r)),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else c&&e.$set(a)},i(r){s||(e&&I(e.$$.fragment,r),s=!0)},o(r){e&&j(e.$$.fragment,r),s=!1},d(r){r&&V(t),e&&K(e,r)}}}function bt(n){let e,t,s;const l=[n[2]||{}];var c=n[0][1];function f(r){let i={};for(let a=0;a{K(d,1)}),F()}c?(e=new c(f()),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else c&&e.$set(a)},i(r){s||(e&&I(e.$$.fragment,r),s=!0)},o(r){e&&j(e.$$.fragment,r),s=!1},d(r){r&&V(t),e&&K(e,r)}}}function yt(n){let e,t,s;const l=[n[2]||{}];var c=n[0][1];function f(r){let i={$$slots:{default:[vt]},$$scope:{ctx:r}};for(let a=0;a{K(d,1)}),F()}c?(e=new c(f(r)),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else c&&e.$set(a)},i(r){s||(e&&I(e.$$.fragment,r),s=!0)},o(r){e&&j(e.$$.fragment,r),s=!1},d(r){r&&V(t),e&&K(e,r)}}}function vt(n){let e,t,s;const l=[n[3]||{}];var c=n[0][2];function f(r){let i={};for(let a=0;a{K(d,1)}),F()}c?(e=new c(f()),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else c&&e.$set(a)},i(r){s||(e&&I(e.$$.fragment,r),s=!0)},o(r){e&&j(e.$$.fragment,r),s=!1},d(r){r&&V(t),e&&K(e,r)}}}function $t(n){let e,t,s,l;const c=[yt,bt],f=[];function r(i,a){return i[0][2]?0:1}return e=r(n),t=f[e]=c[e](n),{c(){t.c(),s=C()},l(i){t.l(i),s=C()},m(i,a){f[e].m(i,a),q(i,s,a),l=!0},p(i,a){let d=e;e=r(i),e===d?f[e].p(i,a):(M(),j(f[d],1,1,()=>{f[d]=null}),F(),t=f[e],t?t.p(i,a):(t=f[e]=c[e](i),t.c()),I(t,1),t.m(s.parentNode,s))},i(i){l||(I(t),l=!0)},o(i){j(t),l=!1},d(i){f[e].d(i),i&&V(s)}}}function Je(n){let e,t=n[5]&&Ke(n);return{c(){e=at("div"),t&&t.c(),this.h()},l(s){e=ot(s,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var l=ct(e);t&&t.l(l),l.forEach(V),this.h()},h(){we(e,"id","svelte-announcer"),we(e,"aria-live","assertive"),we(e,"aria-atomic","true"),B(e,"position","absolute"),B(e,"left","0"),B(e,"top","0"),B(e,"clip","rect(0 0 0 0)"),B(e,"clip-path","inset(50%)"),B(e,"overflow","hidden"),B(e,"white-space","nowrap"),B(e,"width","1px"),B(e,"height","1px")},m(s,l){q(s,e,l),t&&t.m(e,null)},p(s,l){s[5]?t?t.p(s,l):(t=Ke(s),t.c(),t.m(e,null)):t&&(t.d(1),t=null)},d(s){s&&V(e),t&&t.d()}}}function Ke(n){let e;return{c(){e=lt(n[6])},l(t){e=ft(t,n[6])},m(t,s){q(t,e,s)},p(t,s){s&64&&ut(e,t[6])},d(t){t&&V(e)}}}function kt(n){let e,t,s,l,c;const f=[wt,gt],r=[];function i(d,R){return d[0][1]?0:1}e=i(n),t=r[e]=f[e](n);let a=n[4]&&Je(n);return{c(){t.c(),s=dt(),a&&a.c(),l=C()},l(d){t.l(d),s=pt(d),a&&a.l(d),l=C()},m(d,R){r[e].m(d,R),q(d,s,R),a&&a.m(d,R),q(d,l,R),c=!0},p(d,[R]){let y=e;e=i(d),e===y?r[e].p(d,R):(M(),j(r[y],1,1,()=>{r[y]=null}),F(),t=r[e],t?t.p(d,R):(t=r[e]=f[e](d),t.c()),I(t,1),t.m(s.parentNode,s)),d[4]?a?a.p(d,R):(a=Je(d),a.c(),a.m(l.parentNode,l)):a&&(a.d(1),a=null)},i(d){c||(I(t),c=!0)},o(d){j(t),c=!1},d(d){r[e].d(d),d&&V(s),a&&a.d(d),d&&V(l)}}}function Et(n,e,t){let{stores:s}=e,{page:l}=e,{components:c}=e,{props_0:f=null}=e,{props_1:r=null}=e,{props_2:i=null}=e;ht("__svelte__",s),_t(s.page.notify);let a=!1,d=!1,R=null;return $e(()=>{const y=s.page.subscribe(()=>{a&&(t(5,d=!0),t(6,R=document.title||"untitled page"))});return t(4,a=!0),y}),n.$$set=y=>{"stores"in y&&t(7,s=y.stores),"page"in y&&t(8,l=y.page),"components"in y&&t(0,c=y.components),"props_0"in y&&t(1,f=y.props_0),"props_1"in y&&t(2,r=y.props_1),"props_2"in y&&t(3,i=y.props_2)},n.$$.update=()=>{n.$$.dirty&384&&s.page.set(l)},[c,f,r,i,a,d,R,s,l]}class Rt extends rt{constructor(e){super(),st(this,e,Et,kt,it,{stores:7,page:8,components:0,props_0:1,props_1:2,props_2:3})}}const St="modulepreload",Be={},Lt="/_app/",be=function(e,t){return!t||t.length===0?e():Promise.all(t.map(s=>{if(s=`${Lt}${s}`,s in Be)return;Be[s]=!0;const l=s.endsWith(".css"),c=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${c}`))return;const f=document.createElement("link");if(f.rel=l?"stylesheet":St,l||(f.as="script",f.crossOrigin=""),f.href=s,document.head.appendChild(f),l)return new Promise((r,i)=>{f.addEventListener("load",r),f.addEventListener("error",()=>i(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>e())},Ut={},Ee=[()=>be(()=>import("./layout.svelte-b226a993.js"),["layout.svelte-b226a993.js","chunks/index-bc271058.js"]),()=>be(()=>import("./error.svelte-b9cb04fa.js"),["error.svelte-b9cb04fa.js","chunks/index-bc271058.js"]),()=>be(()=>import("./pages/index.svelte-8e87fac9.js"),["pages/index.svelte-8e87fac9.js","assets/pages/index.svelte-de534b64.css","chunks/index-bc271058.js","chunks/index-a16eaf24.js"])],At={"":[[0,2],[1]]};function We(n){return n instanceof Error||n&&n.name&&n.message?n:new Error(JSON.stringify(n))}function Ye(n){if(n.fallthrough)throw new Error("fallthrough is no longer supported. Use matchers instead: https://kit.svelte.dev/docs/routing#advanced-routing-matching");if("maxage"in n)throw new Error("maxage should be replaced with cache: { maxage }");const e=n.status&&n.status>=400&&n.status<=599&&!n.redirect;if(n.error||e){const t=n.status;if(!n.error&&e)return{status:t||500,error:new Error};const s=typeof n.error=="string"?new Error(n.error):n.error;return s instanceof Error?!t||t<400||t>599?(console.warn('"error" returned from load() without a valid status code \u2014 defaulting to 500'),{status:500,error:s}):{status:t,error:s}:{status:500,error:new Error(`"error" property returned from load() must be a string or instance of Error, received type "${typeof s}"`)}}if(n.redirect){if(!n.status||Math.floor(n.status/100)!==3)return{status:500,error:new Error('"redirect" property returned from load() must be accompanied by a 3xx status code')};if(typeof n.redirect!="string")return{status:500,error:new Error('"redirect" property returned from load() must be a string')}}if(n.dependencies&&(!Array.isArray(n.dependencies)||n.dependencies.some(t=>typeof t!="string")))return{status:500,error:new Error('"dependencies" property returned from load() must be of type string[]')};if(n.context)throw new Error('You are returning "context" from a load function. "context" was renamed to "stuff", please adjust your code accordingly.');return n}function Nt(n,e){return n==="/"||e==="ignore"?n:e==="never"?n.endsWith("/")?n.slice(0,-1):n:e==="always"&&!n.endsWith("/")?n+"/":n}function Ot(n){let e=5381,t=n.length;if(typeof n=="string")for(;t;)e=e*33^n.charCodeAt(--t);else for(;t;)e=e*33^n[--t];return(e>>>0).toString(36)}function Me(n){let e=n.baseURI;if(!e){const t=n.getElementsByTagName("base");e=t.length?t[0].href:n.URL}return e}function ke(){return{x:pageXOffset,y:pageYOffset}}function Fe(n){return n.composedPath().find(t=>t instanceof Node&&t.nodeName.toUpperCase()==="A")}function Ge(n){return n instanceof SVGAElement?new URL(n.href.baseVal,document.baseURI):new URL(n.href)}function Xe(n){const e=ue(n);let t=!0;function s(){t=!0,e.update(f=>f)}function l(f){t=!1,e.set(f)}function c(f){let r;return e.subscribe(i=>{(r===void 0||t&&i!==r)&&f(r=i)})}return{notify:s,set:l,subscribe:c}}function xt(){const{set:n,subscribe:e}=ue(!1),t="1651126615853";let s;async function l(){clearTimeout(s);const f=await fetch(`${He}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(f.ok){const{version:r}=await f.json(),i=r!==t;return i&&(n(!0),clearTimeout(s)),i}else throw new Error(`Version check failed: ${f.status}`)}return{subscribe:e,check:l}}function Pt(n,e){let s=`script[sveltekit\\:data-type="data"][sveltekit\\:data-url=${JSON.stringify(typeof n=="string"?n:n.url)}]`;e&&typeof e.body=="string"&&(s+=`[sveltekit\\:data-body="${Ot(e.body)}"]`);const l=document.querySelector(s);if(l&&l.textContent){const c=JSON.parse(l.textContent),{body:f}=c,r=Ve(c,["body"]);return Promise.resolve(new Response(f,r))}return fetch(n,e)}const Ct=/^(\.\.\.)?(\w+)(?:=(\w+))?$/;function jt(n){const e=[],t=[];let s=!0;return{pattern:n===""?/^\/$/:new RegExp(`^${decodeURIComponent(n).split(/(?:@[a-zA-Z0-9_-]+)?(?:\/|$)/).map((c,f,r)=>{const i=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(c);if(i)return e.push(i[1]),t.push(i[2]),"(?:/(.*))?";const a=f===r.length-1;return c&&"/"+c.split(/\[(.+?)\]/).map((d,R)=>{if(R%2){const[,y,Z,G]=Ct.exec(d);return e.push(Z),t.push(G),y?"(.*?)":"([^/]+?)"}return a&&d.includes(".")&&(s=!1),d.normalize().replace(/%5[Bb]/g,"[").replace(/%5[Dd]/g,"]").replace(/#/g,"%23").replace(/\?/g,"%3F").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}).join("")}).join("")}${s?"/?":""}$`),names:e,types:t}}function It(n,e,t,s){const l={};for(let c=0;c{const{pattern:i,names:a,types:d}=jt(l);return{id:l,exec:R=>{const y=i.exec(R);if(y)return It(y,a,d,t)},a:c.map(R=>n[R]),b:f.map(R=>n[R]),has_shadow:!!r}})}const Qe="sveltekit:scroll",W="sveltekit:index",ye=Tt(Ee,At,Ut),Dt=Ee[0](),Vt=Ee[1](),Ze={};let re={};try{re=JSON.parse(sessionStorage[Qe])}catch{}function ve(n){re[n]=ke()}function qt({target:n,session:e,base:t,trailing_slash:s}){var Ce;const l=new Map,c=[],f={url:Xe({}),page:Xe({}),navigating:ue(null),session:ue(e),updated:xt()},r={id:null,promise:null},i={before_navigate:[],after_navigate:[]};let a={branch:[],error:null,session_id:0,stuff:Ze,url:null},d=!1,R=!0,y=!1,Z=1,G=null,Re,Se,Le=!1;f.session.subscribe(async o=>{Se=o,Le&&(Z+=1,_e(new URL(location.href),[],!0))}),Le=!0;let X=!0,T=(Ce=history.state)==null?void 0:Ce[W];T||(T=Date.now(),history.replaceState(ne(P({},history.state),{[W]:T}),"",location.href));const de=re[T];de&&(history.scrollRestoration="manual",scrollTo(de.x,de.y));let pe=!1,he,Ue;async function Ae(o,{noscroll:p=!1,replaceState:w=!1,keepfocus:u=!1,state:h={}},b){const _=new URL(o,Me(document));if(X)return ge({url:_,scroll:p?ke():null,keepfocus:u,redirect_chain:b,details:{state:h,replaceState:w},accepted:()=>{},blocked:()=>{}});await ee(_)}async function Ne(o){const p=Pe(o);if(!p)throw new Error("Attempted to prefetch a URL that does not belong to this app");return r.promise=xe(p,!1),r.id=p.id,r.promise}async function _e(o,p,w,u){var g,$,S;const h=Pe(o),b=Ue={};let _=h&&await xe(h,w);if(!_&&o.origin===location.origin&&o.pathname===location.pathname&&(_=await Q({status:404,error:new Error(`Not found: ${o.pathname}`),url:o,routeId:null})),!_)return await ee(o),!1;if(Ue!==b)return!1;if(c.length=0,_.redirect)if(p.length>10||p.includes(o.pathname))_=await Q({status:500,error:new Error("Redirect loop"),url:o,routeId:null});else return X?Ae(new URL(_.redirect,o).href,{},[...p,o.pathname]):await ee(new URL(_.redirect,location.href)),!1;else(($=(g=_.props)==null?void 0:g.page)==null?void 0:$.status)>=400&&await f.updated.check()&&await ee(o);if(y=!0,u&&u.details){const{details:k}=u,E=k.replaceState?0:1;k.state[W]=T+=E,history[k.replaceState?"replaceState":"pushState"](k.state,"",o)}if(d?(a=_.state,Re.$set(_.props)):Oe(_),u){const{scroll:k,keepfocus:E}=u;if(!E){const m=document.body,A=m.getAttribute("tabindex");(S=getSelection())==null||S.removeAllRanges(),m.tabIndex=-1,m.focus(),A!==null?m.setAttribute("tabindex",A):m.removeAttribute("tabindex")}if(await qe(),R){const m=o.hash&&document.getElementById(o.hash.slice(1));k?scrollTo(k.x,k.y):m?m.scrollIntoView():scrollTo(0,0)}}else await qe();r.promise=null,r.id=null,R=!0,y=!1,_.props.page&&(he=_.props.page);const v=_.state.branch[_.state.branch.length-1];return X=(v==null?void 0:v.module.router)!==!1,!0}function Oe(o){a=o.state;const p=document.querySelector("style[data-sveltekit]");if(p&&p.remove(),he=o.props.page,Re=new Rt({target:n,props:ne(P({},o.props),{stores:f}),hydrate:!0}),d=!0,X){const w={from:null,to:new URL(location.href)};i.after_navigate.forEach(u=>u(w))}}async function me({url:o,params:p,stuff:w,branch:u,status:h,error:b,routeId:_}){var m,A;const v=u.filter(Boolean),g=v.find(U=>{var O;return(O=U.loaded)==null?void 0:O.redirect}),$={redirect:(m=g==null?void 0:g.loaded)==null?void 0:m.redirect,state:{url:o,params:p,branch:u,error:b,stuff:w,session_id:Z},props:{components:v.map(U=>U.module.default)}};for(let U=0;U{Object.defineProperty($.props.page,O,{get:()=>{throw new Error(`$page.${O} has been replaced by $page.url.${L}`)}})};U("origin","origin"),U("path","pathname"),U("query","searchParams")}const k=v[v.length-1],E=(A=k==null?void 0:k.loaded)==null?void 0:A.cache;if(E){const U=o.pathname+o.search;let O=!1;const L=()=>{l.get(U)===$&&l.delete(U),x(),clearTimeout(N)},N=setTimeout(L,E.maxage*1e3),x=f.session.subscribe(()=>{O&&L()});O=!0,l.set(U,$)}return $}async function H({status:o,error:p,module:w,url:u,params:h,stuff:b,props:_,routeId:v}){const g={module:w,uses:{params:new Set,url:!1,session:!1,stuff:!1,dependencies:new Set},loaded:null,stuff:b};function $(E){const{href:m}=new URL(E,u);g.uses.dependencies.add(m)}_&&g.uses.dependencies.add(u.href);const S={};for(const E in h)Object.defineProperty(S,E,{get(){return g.uses.params.add(E),h[E]},enumerable:!0});const k=Se;if(w.load){const E={routeId:v,params:S,props:_||{},get url(){return g.uses.url=!0,u},get session(){return g.uses.session=!0,k},get stuff(){return g.uses.stuff=!0,P({},b)},fetch(A,U){const O=typeof A=="string"?A:A.url;return $(O),d?fetch(A,U):Pt(A,U)},status:o!=null?o:null,error:p!=null?p:null},m=await w.load.call(null,E);if(!m)throw new Error("load function must return a value");g.loaded=Ye(m),g.loaded.stuff&&(g.stuff=g.loaded.stuff),g.loaded.dependencies&&g.loaded.dependencies.forEach($)}else _&&(g.loaded=Ye({props:_}));return g}async function xe({id:o,url:p,params:w,route:u},h){var A,U,O;if(r.id===o&&r.promise)return r.promise;if(!h){const L=l.get(o);if(L)return L}const{a:b,b:_,has_shadow:v}=u,g=a.url&&{url:o!==a.url.pathname+a.url.search,params:Object.keys(w).filter(L=>a.params[L]!==w[L]),session:Z!==a.session_id};let $=[],S=Ze,k=!1,E=200,m=null;b.forEach(L=>L());e:for(let L=0;LD.uses.params.has(Y))||g.session&&D.uses.session||Array.from(D.uses.dependencies).some(Y=>c.some(le=>le(Y)))||k&&D.uses.stuff){let Y={};const le=v&&L===b.length-1;if(le){const te=await fetch(`${p.pathname}${p.pathname.endsWith("/")?"":"/"}__data.json${p.search}`,{headers:{"x-sveltekit-load":"true"}});if(te.ok){const je=te.headers.get("x-sveltekit-location");if(je)return{redirect:je,props:{},state:a};Y=te.status===204?{}:await te.json()}else E=te.status,m=new Error("Failed to load data")}if(m||(N=await H({module:x,url:p,params:w,props:Y,stuff:S,routeId:u.id})),N&&(le&&(N.uses.url=!0),N.loaded)){if(N.loaded.error&&(E=N.loaded.status,m=N.loaded.error),N.loaded.redirect)return{redirect:N.loaded.redirect,props:{},state:a};N.loaded.stuff&&(k=!0)}}else N=D}catch(x){E=500,m=We(x)}if(m){for(;L--;)if(_[L]){let x,D,ce=L;for(;!(D=$[ce]);)ce-=1;try{if(x=await H({status:E,error:m,module:await _[L](),url:p,params:w,stuff:D.stuff,routeId:u.id}),(A=x==null?void 0:x.loaded)!=null&&A.error)continue;(U=x==null?void 0:x.loaded)!=null&&U.stuff&&(S=P(P({},S),x.loaded.stuff)),$=$.slice(0,ce+1).concat(x);break e}catch{continue}}return await Q({status:E,error:m,url:p,routeId:u.id})}else(O=N==null?void 0:N.loaded)!=null&&O.stuff&&(S=P(P({},S),N.loaded.stuff)),$.push(N)}return await me({url:p,params:w,stuff:S,branch:$,status:E,error:m,routeId:u.id})}async function Q({status:o,error:p,url:w,routeId:u}){var v,g;const h={},b=await H({module:await Dt,url:w,params:h,stuff:{},routeId:u}),_=await H({status:o,error:p,module:await Vt,url:w,params:h,stuff:b&&b.loaded&&b.loaded.stuff||{},routeId:u});return await me({url:w,params:h,stuff:P(P({},(v=b==null?void 0:b.loaded)==null?void 0:v.stuff),(g=_==null?void 0:_.loaded)==null?void 0:g.stuff),branch:[b,_],status:o,error:p,routeId:u})}function Pe(o){if(o.origin!==location.origin||!o.pathname.startsWith(t))return;const p=decodeURI(o.pathname.slice(t.length)||"/");for(const w of ye){const u=w.exec(p);if(u)return{id:o.pathname+o.search,route:w,params:u,url:o}}}async function ge({url:o,scroll:p,keepfocus:w,redirect_chain:u,details:h,accepted:b,blocked:_}){const v=a.url;let g=!1;const $={from:v,to:o,cancel:()=>g=!0};if(i.before_navigate.forEach(m=>m($)),g){_();return}const S=Nt(o.pathname,s),k=new URL(o.origin+S+o.search+o.hash);if(ve(T),b(),d&&f.navigating.set({from:a.url,to:k}),await _e(k,u,!1,{scroll:p,keepfocus:w,details:h})){const m={from:v,to:k};i.after_navigate.forEach(A=>A(m)),f.navigating.set(null)}}function ee(o){return location.href=o.href,new Promise(()=>{})}return{after_navigate:o=>{$e(()=>(i.after_navigate.push(o),()=>{const p=i.after_navigate.indexOf(o);i.after_navigate.splice(p,1)}))},before_navigate:o=>{$e(()=>(i.before_navigate.push(o),()=>{const p=i.before_navigate.indexOf(o);i.before_navigate.splice(p,1)}))},disable_scroll_handling:()=>{(y||!d)&&(R=!1)},goto:(o,p={})=>Ae(o,p,[]),invalidate:o=>{if(typeof o=="function")c.push(o);else{const{href:p}=new URL(o,location.href);c.push(w=>w===p)}return G||(G=Promise.resolve().then(async()=>{await _e(new URL(location.href),[],!0),G=null})),G},prefetch:async o=>{const p=new URL(o,Me(document));await Ne(p)},prefetch_routes:async o=>{const w=(o?ye.filter(u=>o.some(h=>u.exec(h))):ye).map(u=>Promise.all(u.a.map(h=>h())));await Promise.all(w)},_start_router:()=>{history.scrollRestoration="manual",addEventListener("beforeunload",u=>{let h=!1;const b={from:a.url,to:null,cancel:()=>h=!0};i.before_navigate.forEach(_=>_(b)),h?(u.preventDefault(),u.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{if(document.visibilityState==="hidden"){ve(T);try{sessionStorage[Qe]=JSON.stringify(re)}catch{}}});const o=u=>{const h=Fe(u);h&&h.href&&h.hasAttribute("sveltekit:prefetch")&&Ne(Ge(h))};let p;const w=u=>{clearTimeout(p),p=setTimeout(()=>{var h;(h=u.target)==null||h.dispatchEvent(new CustomEvent("sveltekit:trigger_prefetch",{bubbles:!0}))},20)};addEventListener("touchstart",o),addEventListener("mousemove",w),addEventListener("sveltekit:trigger_prefetch",o),addEventListener("click",u=>{if(!X||u.button||u.which!==1||u.metaKey||u.ctrlKey||u.shiftKey||u.altKey||u.defaultPrevented)return;const h=Fe(u);if(!h||!h.href)return;const b=h instanceof SVGAElement,_=Ge(h);if(!b&&_.origin==="null")return;const v=(h.getAttribute("rel")||"").split(/\s+/);if(h.hasAttribute("download")||v.includes("external")||h.hasAttribute("sveltekit:reload")||(b?h.target.baseVal:h.target))return;const[g,$]=_.href.split("#");if($!==void 0&&g===location.href.split("#")[0]){pe=!0,ve(T),f.page.set(ne(P({},he),{url:_})),f.page.notify();return}ge({url:_,scroll:h.hasAttribute("sveltekit:noscroll")?ke():null,keepfocus:!1,redirect_chain:[],details:{state:{},replaceState:_.href===location.href},accepted:()=>u.preventDefault(),blocked:()=>u.preventDefault()})}),addEventListener("popstate",u=>{if(u.state&&X){if(u.state[W]===T)return;ge({url:new URL(location.href),scroll:re[u.state[W]],keepfocus:!1,redirect_chain:[],details:null,accepted:()=>{T=u.state[W]},blocked:()=>{const h=T-u.state[W];history.go(h)}})}}),addEventListener("hashchange",()=>{pe&&(pe=!1,history.replaceState(ne(P({},history.state),{[W]:++T}),"",location.href))})},_hydrate:async({status:o,error:p,nodes:w,params:u,routeId:h})=>{const b=new URL(location.href),_=[];let v={},g,$;try{for(let S=0;S
\ No newline at end of file
diff --git a/static/church.svg b/static/church.svg
new file mode 100644
index 0000000000000000000000000000000000000000..87c9a8097195a9f2c6f8d42bcf86b8e415fa5000
--- /dev/null
+++ b/static/church.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/compose.png b/static/compose.png
new file mode 100644
index 0000000000000000000000000000000000000000..8452daac7ffed9d22903a35aa2307f1397845dfd
Binary files /dev/null and b/static/compose.png differ
diff --git a/static/country.svg b/static/country.svg
new file mode 100644
index 0000000000000000000000000000000000000000..c723c6830b49c68b9418e59dbe507c41f111c254
--- /dev/null
+++ b/static/country.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/download.wav b/static/download.wav
new file mode 100644
index 0000000000000000000000000000000000000000..daa1e40fe193d35691ec740406788ebd4454a99b
Binary files /dev/null and b/static/download.wav differ
diff --git a/templates/favicon.png b/static/favicon.png
similarity index 100%
rename from templates/favicon.png
rename to static/favicon.png
diff --git a/static/piano.svg b/static/piano.svg
new file mode 100644
index 0000000000000000000000000000000000000000..358c4e7152808e7dd3a4c3ff7d8393f18171ccb7
--- /dev/null
+++ b/static/piano.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/rock_and_metal.svg b/static/rock_and_metal.svg
new file mode 100644
index 0000000000000000000000000000000000000000..e720a0cbd1168821794ff078797e996a99ff5814
--- /dev/null
+++ b/static/rock_and_metal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/style.css b/static/style.css
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..38efe2490f6d0e164076a2d194c9a36a668dca45 100644
--- a/static/style.css
+++ b/static/style.css
@@ -0,0 +1,21 @@
+body {
+ /* width: 100%; */
+ padding: 2rem;
+ font-family: 'Lato', sans-serif;
+ background-color: hsl(0 0% 1%);
+}
+
+
+h1 {
+ font-family: 'Italiana', serif;
+ letter-spacing: 0.05ch;
+}
+
+
+body, h1 {
+ color: hsl(0 0% 97%);
+}
+
+/* #options h3 {
+ font-weight: 700;
+} */
diff --git a/static/synth.svg b/static/synth.svg
new file mode 100644
index 0000000000000000000000000000000000000000..76bb68d272351fe96c951655dbf292acbcf0e2a2
--- /dev/null
+++ b/static/synth.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/timpani_strings_harp.svg b/static/timpani_strings_harp.svg
new file mode 100644
index 0000000000000000000000000000000000000000..9b55a1522ef2bc5c344d65994c376d8f0041dbe7
--- /dev/null
+++ b/static/timpani_strings_harp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/templates/_app/chunks/index-60624bc8.js b/templates/_app/chunks/index-60624bc8.js
deleted file mode 100644
index 7084d3a2702149c9ee2666efd384cf2f1b04fe62..0000000000000000000000000000000000000000
--- a/templates/_app/chunks/index-60624bc8.js
+++ /dev/null
@@ -1 +0,0 @@
-function B(){}function F(t,n){for(const e in n)t[e]=n[e];return t}function T(t){return t()}function v(){return Object.create(null)}function p(t){t.forEach(T)}function H(t){return typeof t=="function"}function rt(t,n){return t!=t?n==n:t!==n||t&&typeof t=="object"||typeof t=="function"}function I(t){return Object.keys(t).length===0}function ct(t,n,e,r){if(t){const c=O(t,n,e,r);return t[0](c)}}function O(t,n,e,r){return t[1]&&r?F(e.ctx.slice(),t[1](r(n))):e.ctx}function lt(t,n,e,r){if(t[2]&&r){const c=t[2](r(e));if(n.dirty===void 0)return c;if(typeof c=="object"){const f=[],l=Math.max(n.dirty.length,c.length);for(let o=0;o32){const n=[],e=t.ctx.length/32;for(let r=0;r>1);e(c)<=r?t=c+1:n=c}return t}function W(t){if(t.hydrate_init)return;t.hydrate_init=!0;let n=t.childNodes;if(t.nodeName==="HEAD"){const i=[];for(let u=0;u0&&n[e[c]].claim_order<=u?c+1:L(1,c,y=>n[e[y]].claim_order,u))-1;r[i]=e[s]+1;const a=s+1;e[a]=i,c=Math.max(a,c)}const f=[],l=[];let o=n.length-1;for(let i=e[c]+1;i!=0;i=r[i-1]){for(f.push(n[i-1]);o>=i;o--)l.push(n[o]);o--}for(;o>=0;o--)l.push(n[o]);f.reverse(),l.sort((i,u)=>i.claim_order-u.claim_order);for(let i=0,u=0;i=f[u].claim_order;)u++;const s=u{for(let l=t.claim_info.last_index;l=0;l--){const o=t[l];if(n(o)){const i=e(o);return i===void 0?t.splice(l,1):t[l]=i,c?i===void 0&&t.claim_info.last_index--:t.claim_info.last_index=l,o}}return r()})();return f.claim_order=t.claim_info.total_claimed,t.claim_info.total_claimed+=1,f}function X(t,n,e,r){return P(t,c=>c.nodeName===n,c=>{const f=[];for(let l=0;lc.removeAttribute(l))},()=>r(n))}function _t(t,n,e){return X(t,n,e,R)}function Y(t,n){return P(t,e=>e.nodeType===3,e=>{const r=""+n;if(e.data.startsWith(r)){if(e.data.length!==r.length)return e.splitText(r.length)}else e.data=r},()=>j(n),!0)}function ht(t){return Y(t," ")}function mt(t,n){n=""+n,t.wholeText!==n&&(t.data=n)}function pt(t,n,e,r){e===null?t.style.removeProperty(n):t.style.setProperty(n,e,r?"important":"")}let m;function h(t){m=t}function A(){if(!m)throw new Error("Function called outside component initialization");return m}function yt(t){A().$$.on_mount.push(t)}function gt(t){A().$$.after_update.push(t)}function xt(t,n){A().$$.context.set(t,n)}const _=[],C=[],x=[],M=[],q=Promise.resolve();let k=!1;function z(){k||(k=!0,q.then(D))}function bt(){return z(),q}function E(t){x.push(t)}const w=new Set;let g=0;function D(){const t=m;do{for(;g<_.length;){const n=_[g];g++,h(n),Z(n.$$)}for(h(null),_.length=0,g=0;C.length;)C.pop()();for(let n=0;n{b.delete(t),r&&(e&&t.d(1),r())}),t.o(n)}}function Et(t,n){const e={},r={},c={$$scope:1};let f=t.length;for(;f--;){const l=t[f],o=n[f];if(o){for(const i in l)i in o||(r[i]=1);for(const i in o)c[i]||(e[i]=o[i],c[i]=1);t[f]=o}else for(const i in l)c[i]=1}for(const l in r)l in e||(e[l]=void 0);return e}function jt(t){return typeof t=="object"&&t!==null?t:{}}function At(t){t&&t.c()}function Nt(t,n){t&&t.l(n)}function nt(t,n,e,r){const{fragment:c,on_mount:f,on_destroy:l,after_update:o}=t.$$;c&&c.m(n,e),r||E(()=>{const i=f.map(T).filter(H);l?l.push(...i):p(i),t.$$.on_mount=[]}),o.forEach(E)}function et(t,n){const e=t.$$;e.fragment!==null&&(p(e.on_destroy),e.fragment&&e.fragment.d(n),e.on_destroy=e.fragment=null,e.ctx=[])}function it(t,n){t.$$.dirty[0]===-1&&(_.push(t),z(),t.$$.dirty.fill(0)),t.$$.dirty[n/31|0]|=1<{const S=N.length?N[0]:y;return u.ctx&&c(u.ctx[a],u.ctx[a]=S)&&(!u.skip_bound&&u.bound[a]&&u.bound[a](S),s&&it(t,a)),y}):[],u.update(),s=!0,p(u.before_update),u.fragment=r?r(u.ctx):!1,n.target){if(n.hydrate){G();const a=U(n.target);u.fragment&&u.fragment.l(a),a.forEach(Q)}else u.fragment&&u.fragment.c();n.intro&&tt(t.$$.fragment),nt(t,n.target,n.anchor,n.customElement),J(),D()}h(i)}class vt{$destroy(){et(this,1),this.$destroy=B}$on(n,e){const r=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return r.push(e),()=>{const c=r.indexOf(e);c!==-1&&r.splice(c,1)}}$set(n){this.$$set&&!I(n)&&(this.$$.skip_bound=!0,this.$$set(n),this.$$.skip_bound=!1)}}export{Et as A,jt as B,et as C,F as D,bt as E,ct as F,ot as G,ut as H,lt as I,K as J,vt as S,U as a,dt as b,_t as c,Q as d,R as e,pt as f,ft as g,Y as h,St as i,mt as j,at as k,st as l,ht as m,B as n,$t as o,kt as p,wt as q,tt as r,rt as s,j as t,xt as u,gt as v,yt as w,At as x,Nt as y,nt as z};
diff --git a/templates/_app/layout.svelte-e3a1ab0e.js b/templates/_app/layout.svelte-e3a1ab0e.js
deleted file mode 100644
index d3ea571cf10f0c2db6ba1c4aab689644102aa583..0000000000000000000000000000000000000000
--- a/templates/_app/layout.svelte-e3a1ab0e.js
+++ /dev/null
@@ -1 +0,0 @@
-import{S as o,i,s as r,F as u,G as f,H as _,I as c,r as p,p as d}from"./chunks/index-60624bc8.js";function m(n){let s;const l=n[1].default,e=u(l,n,n[0],null);return{c(){e&&e.c()},l(t){e&&e.l(t)},m(t,a){e&&e.m(t,a),s=!0},p(t,[a]){e&&e.p&&(!s||a&1)&&f(e,l,t,t[0],s?c(l,t[0],a,null):_(t[0]),null)},i(t){s||(p(e,t),s=!0)},o(t){d(e,t),s=!1},d(t){e&&e.d(t)}}}function $(n,s,l){let{$$slots:e={},$$scope:t}=s;return n.$$set=a=>{"$$scope"in a&&l(0,t=a.$$scope)},[t,e]}class h extends o{constructor(s){super(),i(this,s,$,m,r,{})}}export{h as default};
diff --git a/templates/_app/pages/index.svelte-47304b27.js b/templates/_app/pages/index.svelte-47304b27.js
deleted file mode 100644
index 34b037e605524f4d594f454d4a2285f11b77c7ff..0000000000000000000000000000000000000000
--- a/templates/_app/pages/index.svelte-47304b27.js
+++ /dev/null
@@ -1 +0,0 @@
-import{S as y,i as K,s as V,e as v,t as c,k as W,c as u,a as _,h,d as l,m as b,b as q,g as x,J as o,n as k}from"../chunks/index-60624bc8.js";function A(E){let e,d,r,a,m,s,p,f;return{c(){e=v("h1"),d=c("Welcome to SvelteKit"),r=W(),a=v("p"),m=c("Visit "),s=v("a"),p=c("kit.svelte.dev"),f=c(" to read the documentation"),this.h()},l(t){e=u(t,"H1",{});var i=_(e);d=h(i,"Welcome to SvelteKit"),i.forEach(l),r=b(t),a=u(t,"P",{});var n=_(a);m=h(n,"Visit "),s=u(n,"A",{href:!0});var S=_(s);p=h(S,"kit.svelte.dev"),S.forEach(l),f=h(n," to read the documentation"),n.forEach(l),this.h()},h(){q(s,"href","https://kit.svelte.dev")},m(t,i){x(t,e,i),o(e,d),x(t,r,i),x(t,a,i),o(a,m),o(a,s),o(s,p),o(a,f)},p:k,i:k,o:k,d(t){t&&l(e),t&&l(r),t&&l(a)}}}class H extends y{constructor(e){super(),K(this,e,null,A,V,{})}}export{H as default};
diff --git a/templates/_app/start-b41bef43.js b/templates/_app/start-b41bef43.js
deleted file mode 100644
index 1992bd602f1eb1b571ffc2dcc0c48357d6f653e4..0000000000000000000000000000000000000000
--- a/templates/_app/start-b41bef43.js
+++ /dev/null
@@ -1 +0,0 @@
-var st=Object.defineProperty,rt=Object.defineProperties;var it=Object.getOwnPropertyDescriptors;var ue=Object.getOwnPropertySymbols;var Ve=Object.prototype.hasOwnProperty,qe=Object.prototype.propertyIsEnumerable;var De=(n,e,t)=>e in n?st(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,P=(n,e)=>{for(var t in e||(e={}))Ve.call(e,t)&&De(n,t,e[t]);if(ue)for(var t of ue(e))qe.call(e,t)&&De(n,t,e[t]);return n},se=(n,e)=>rt(n,it(e));var ze=(n,e)=>{var t={};for(var r in n)Ve.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&ue)for(var r of ue(n))e.indexOf(r)<0&&qe.call(n,r)&&(t[r]=n[r]);return t};import{n as be,s as et,S as at,i as ot,e as ct,c as lt,a as ft,d as V,b as ye,f as B,g as q,t as ut,h as dt,j as pt,k as ht,l as C,m as _t,o as M,p as j,q as F,r as I,u as mt,v as gt,w as Ee,x as z,y as ie,z as J,A as ae,B as oe,C as K,D as ce,E as Je}from"./chunks/index-60624bc8.js";const Z=[];function de(n,e=be){let t;const r=new Set;function l(s){if(et(n,s)&&(n=s,t)){const i=!Z.length;for(const a of r)a[1](),Z.push(a,n);if(i){for(let a=0;a{r.delete(a),r.size===0&&(t(),t=null)}}return{set:l,update:o,subscribe:f}}let Ke="",tt="";function wt(n){Ke=n.base,tt=n.assets||Ke}function bt(n){let e,t,r;const l=[n[1]||{}];var o=n[0][0];function f(s){let i={};for(let a=0;a{K(d,1)}),F()}o?(e=new o(f()),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else o&&e.$set(a)},i(s){r||(e&&I(e.$$.fragment,s),r=!0)},o(s){e&&j(e.$$.fragment,s),r=!1},d(s){s&&V(t),e&&K(e,s)}}}function yt(n){let e,t,r;const l=[n[1]||{}];var o=n[0][0];function f(s){let i={$$slots:{default:[Et]},$$scope:{ctx:s}};for(let a=0;a{K(d,1)}),F()}o?(e=new o(f(s)),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else o&&e.$set(a)},i(s){r||(e&&I(e.$$.fragment,s),r=!0)},o(s){e&&j(e.$$.fragment,s),r=!1},d(s){s&&V(t),e&&K(e,s)}}}function vt(n){let e,t,r;const l=[n[2]||{}];var o=n[0][1];function f(s){let i={};for(let a=0;a{K(d,1)}),F()}o?(e=new o(f()),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else o&&e.$set(a)},i(s){r||(e&&I(e.$$.fragment,s),r=!0)},o(s){e&&j(e.$$.fragment,s),r=!1},d(s){s&&V(t),e&&K(e,s)}}}function $t(n){let e,t,r;const l=[n[2]||{}];var o=n[0][1];function f(s){let i={$$slots:{default:[kt]},$$scope:{ctx:s}};for(let a=0;a{K(d,1)}),F()}o?(e=new o(f(s)),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else o&&e.$set(a)},i(s){r||(e&&I(e.$$.fragment,s),r=!0)},o(s){e&&j(e.$$.fragment,s),r=!1},d(s){s&&V(t),e&&K(e,s)}}}function kt(n){let e,t,r;const l=[n[3]||{}];var o=n[0][2];function f(s){let i={};for(let a=0;a{K(d,1)}),F()}o?(e=new o(f()),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else o&&e.$set(a)},i(s){r||(e&&I(e.$$.fragment,s),r=!0)},o(s){e&&j(e.$$.fragment,s),r=!1},d(s){s&&V(t),e&&K(e,s)}}}function Et(n){let e,t,r,l;const o=[$t,vt],f=[];function s(i,a){return i[0][2]?0:1}return e=s(n),t=f[e]=o[e](n),{c(){t.c(),r=C()},l(i){t.l(i),r=C()},m(i,a){f[e].m(i,a),q(i,r,a),l=!0},p(i,a){let d=e;e=s(i),e===d?f[e].p(i,a):(M(),j(f[d],1,1,()=>{f[d]=null}),F(),t=f[e],t?t.p(i,a):(t=f[e]=o[e](i),t.c()),I(t,1),t.m(r.parentNode,r))},i(i){l||(I(t),l=!0)},o(i){j(t),l=!1},d(i){f[e].d(i),i&&V(r)}}}function Be(n){let e,t=n[5]&&We(n);return{c(){e=ct("div"),t&&t.c(),this.h()},l(r){e=lt(r,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var l=ft(e);t&&t.l(l),l.forEach(V),this.h()},h(){ye(e,"id","svelte-announcer"),ye(e,"aria-live","assertive"),ye(e,"aria-atomic","true"),B(e,"position","absolute"),B(e,"left","0"),B(e,"top","0"),B(e,"clip","rect(0 0 0 0)"),B(e,"clip-path","inset(50%)"),B(e,"overflow","hidden"),B(e,"white-space","nowrap"),B(e,"width","1px"),B(e,"height","1px")},m(r,l){q(r,e,l),t&&t.m(e,null)},p(r,l){r[5]?t?t.p(r,l):(t=We(r),t.c(),t.m(e,null)):t&&(t.d(1),t=null)},d(r){r&&V(e),t&&t.d()}}}function We(n){let e;return{c(){e=ut(n[6])},l(t){e=dt(t,n[6])},m(t,r){q(t,e,r)},p(t,r){r&64&&pt(e,t[6])},d(t){t&&V(e)}}}function Rt(n){let e,t,r,l,o;const f=[yt,bt],s=[];function i(d,R){return d[0][1]?0:1}e=i(n),t=s[e]=f[e](n);let a=n[4]&&Be(n);return{c(){t.c(),r=ht(),a&&a.c(),l=C()},l(d){t.l(d),r=_t(d),a&&a.l(d),l=C()},m(d,R){s[e].m(d,R),q(d,r,R),a&&a.m(d,R),q(d,l,R),o=!0},p(d,[R]){let y=e;e=i(d),e===y?s[e].p(d,R):(M(),j(s[y],1,1,()=>{s[y]=null}),F(),t=s[e],t?t.p(d,R):(t=s[e]=f[e](d),t.c()),I(t,1),t.m(r.parentNode,r)),d[4]?a?a.p(d,R):(a=Be(d),a.c(),a.m(l.parentNode,l)):a&&(a.d(1),a=null)},i(d){o||(I(t),o=!0)},o(d){j(t),o=!1},d(d){s[e].d(d),d&&V(r),a&&a.d(d),d&&V(l)}}}function St(n,e,t){let{stores:r}=e,{page:l}=e,{components:o}=e,{props_0:f=null}=e,{props_1:s=null}=e,{props_2:i=null}=e;mt("__svelte__",r),gt(r.page.notify);let a=!1,d=!1,R=null;return Ee(()=>{const y=r.page.subscribe(()=>{a&&(t(5,d=!0),t(6,R=document.title||"untitled page"))});return t(4,a=!0),y}),n.$$set=y=>{"stores"in y&&t(7,r=y.stores),"page"in y&&t(8,l=y.page),"components"in y&&t(0,o=y.components),"props_0"in y&&t(1,f=y.props_0),"props_1"in y&&t(2,s=y.props_1),"props_2"in y&&t(3,i=y.props_2)},n.$$.update=()=>{n.$$.dirty&384&&r.page.set(l)},[o,f,s,i,a,d,R,r,l]}class Lt extends at{constructor(e){super(),ot(this,e,St,Rt,et,{stores:7,page:8,components:0,props_0:1,props_1:2,props_2:3})}}const Ut="modulepreload",Ye={},At="/_app/",ve=function(e,t){return!t||t.length===0?e():Promise.all(t.map(r=>{if(r=`${At}${r}`,r in Ye)return;Ye[r]=!0;const l=r.endsWith(".css"),o=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${r}"]${o}`))return;const f=document.createElement("link");if(f.rel=l?"stylesheet":Ut,l||(f.as="script",f.crossOrigin=""),f.href=r,document.head.appendChild(f),l)return new Promise((s,i)=>{f.addEventListener("load",s),f.addEventListener("error",()=>i(new Error(`Unable to preload CSS for ${r}`)))})})).then(()=>e())},Nt={},Se=[()=>ve(()=>import("./layout.svelte-e3a1ab0e.js"),["layout.svelte-e3a1ab0e.js","chunks/index-60624bc8.js"]),()=>ve(()=>import("./error.svelte-5990926f.js"),["error.svelte-5990926f.js","chunks/index-60624bc8.js"]),()=>ve(()=>import("./pages/index.svelte-47304b27.js"),["pages/index.svelte-47304b27.js","chunks/index-60624bc8.js"])],Ot={"":[[0,2],[1]]};function Me(n){return n instanceof Error||n&&n.name&&n.message?n:new Error(JSON.stringify(n))}function Fe(n){if(n.fallthrough)throw new Error("fallthrough is no longer supported. Use matchers instead: https://kit.svelte.dev/docs/routing#advanced-routing-matching");if("maxage"in n)throw new Error("maxage should be replaced with cache: { maxage }");const e=n.status&&n.status>=400&&n.status<=599&&!n.redirect;if(n.error||e){const t=n.status;if(!n.error&&e)return{status:t||500,error:new Error};const r=typeof n.error=="string"?new Error(n.error):n.error;return r instanceof Error?!t||t<400||t>599?(console.warn('"error" returned from load() without a valid status code \u2014 defaulting to 500'),{status:500,error:r}):{status:t,error:r}:{status:500,error:new Error(`"error" property returned from load() must be a string or instance of Error, received type "${typeof r}"`)}}if(n.redirect){if(!n.status||Math.floor(n.status/100)!==3)return{status:500,error:new Error('"redirect" property returned from load() must be accompanied by a 3xx status code')};if(typeof n.redirect!="string")return{status:500,error:new Error('"redirect" property returned from load() must be a string')}}if(n.dependencies&&(!Array.isArray(n.dependencies)||n.dependencies.some(t=>typeof t!="string")))return{status:500,error:new Error('"dependencies" property returned from load() must be of type string[]')};if(n.context)throw new Error('You are returning "context" from a load function. "context" was renamed to "stuff", please adjust your code accordingly.');return n}function xt(n,e){return n==="/"||e==="ignore"?n:e==="never"?n.endsWith("/")?n.slice(0,-1):n:e==="always"&&!n.endsWith("/")?n+"/":n}function Pt(n){let e=5381,t=n.length;if(typeof n=="string")for(;t;)e=e*33^n.charCodeAt(--t);else for(;t;)e=e*33^n[--t];return(e>>>0).toString(36)}function Ge(n){let e=n.baseURI;if(!e){const t=n.getElementsByTagName("base");e=t.length?t[0].href:n.URL}return e}function Re(){return{x:pageXOffset,y:pageYOffset}}function Xe(n){return n.composedPath().find(t=>t instanceof Node&&t.nodeName.toUpperCase()==="A")}function Ze(n){return n instanceof SVGAElement?new URL(n.href.baseVal,document.baseURI):new URL(n.href)}function He(n){const e=de(n);let t=!0;function r(){t=!0,e.update(f=>f)}function l(f){t=!1,e.set(f)}function o(f){let s;return e.subscribe(i=>{(s===void 0||t&&i!==s)&&f(s=i)})}return{notify:r,set:l,subscribe:o}}function Ct(){const{set:n,subscribe:e}=de(!1),t="1651120415467";let r;async function l(){clearTimeout(r);const f=await fetch(`${tt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(f.ok){const{version:s}=await f.json(),i=s!==t;return i&&(n(!0),clearTimeout(r)),i}else throw new Error(`Version check failed: ${f.status}`)}return{subscribe:e,check:l}}function jt(n,e){let r=`script[sveltekit\\:data-type="data"][sveltekit\\:data-url=${JSON.stringify(typeof n=="string"?n:n.url)}]`;e&&typeof e.body=="string"&&(r+=`[sveltekit\\:data-body="${Pt(e.body)}"]`);const l=document.querySelector(r);if(l&&l.textContent){const o=JSON.parse(l.textContent),{body:f}=o,s=ze(o,["body"]);return Promise.resolve(new Response(f,s))}return fetch(n,e)}const It=/^(\.\.\.)?(\w+)(?:=(\w+))?$/;function Tt(n){const e=[],t=[];let r=!0;return{pattern:n===""?/^\/$/:new RegExp(`^${decodeURIComponent(n).split(/(?:@[a-zA-Z0-9_-]+)?(?:\/|$)/).map((o,f,s)=>{const i=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(o);if(i)return e.push(i[1]),t.push(i[2]),"(?:/(.*))?";const a=f===s.length-1;return o&&"/"+o.split(/\[(.+?)\]/).map((d,R)=>{if(R%2){const[,y,H,G]=It.exec(d);return e.push(H),t.push(G),y?"(.*?)":"([^/]+?)"}return a&&d.includes(".")&&(r=!1),d.normalize().replace(/%5[Bb]/g,"[").replace(/%5[Dd]/g,"]").replace(/#/g,"%23").replace(/\?/g,"%3F").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}).join("")}).join("")}${r?"/?":""}$`),names:e,types:t}}function Dt(n,e,t,r){const l={};for(let o=0;o{const{pattern:i,names:a,types:d}=Tt(l);return{id:l,exec:R=>{const y=i.exec(R);if(y)return Dt(y,a,d,t)},a:o.map(R=>n[R]),b:f.map(R=>n[R]),has_shadow:!!s}})}const nt="sveltekit:scroll",W="sveltekit:index",$e=Vt(Se,Ot,Nt),qt=Se[0](),zt=Se[1](),Qe={};let re={};try{re=JSON.parse(sessionStorage[nt])}catch{}function ke(n){re[n]=Re()}function Jt({target:n,session:e,base:t,trailing_slash:r}){var Ie;const l=new Map,o=[],f={url:He({}),page:He({}),navigating:de(null),session:de(e),updated:Ct()},s={id:null,promise:null},i={before_navigate:[],after_navigate:[]};let a={branch:[],error:null,session_id:0,stuff:Qe,url:null},d=!1,R=!0,y=!1,H=1,G=null,Le,Ue,Ae=!1;f.session.subscribe(async c=>{Ue=c,Ae&&(H+=1,me(new URL(location.href),[],!0))}),Ae=!0;let X=!0,T=(Ie=history.state)==null?void 0:Ie[W];T||(T=Date.now(),history.replaceState(se(P({},history.state),{[W]:T}),"",location.href));const pe=re[T];pe&&(history.scrollRestoration="manual",scrollTo(pe.x,pe.y));let he=!1,_e,Ne;async function Oe(c,{noscroll:p=!1,replaceState:w=!1,keepfocus:u=!1,state:h={}},b){const _=new URL(c,Ge(document));if(X)return we({url:_,scroll:p?Re():null,keepfocus:u,redirect_chain:b,details:{state:h,replaceState:w},accepted:()=>{},blocked:()=>{}});await te(_)}async function xe(c){const p=je(c);if(!p)throw new Error("Attempted to prefetch a URL that does not belong to this app");return s.promise=Ce(p,!1),s.id=p.id,s.promise}async function me(c,p,w,u){var g,$,S;const h=je(c),b=Ne={};let _=h&&await Ce(h,w);if(!_&&c.origin===location.origin&&c.pathname===location.pathname&&(_=await ee({status:404,error:new Error(`Not found: ${c.pathname}`),url:c,routeId:null})),!_)return await te(c),!1;if(Ne!==b)return!1;if(o.length=0,_.redirect)if(p.length>10||p.includes(c.pathname))_=await ee({status:500,error:new Error("Redirect loop"),url:c,routeId:null});else return X?Oe(new URL(_.redirect,c).href,{},[...p,c.pathname]):await te(new URL(_.redirect,location.href)),!1;else(($=(g=_.props)==null?void 0:g.page)==null?void 0:$.status)>=400&&await f.updated.check()&&await te(c);if(y=!0,u&&u.details){const{details:k}=u,E=k.replaceState?0:1;k.state[W]=T+=E,history[k.replaceState?"replaceState":"pushState"](k.state,"",c)}if(d?(a=_.state,Le.$set(_.props)):Pe(_),u){const{scroll:k,keepfocus:E}=u;if(!E){const m=document.body,A=m.getAttribute("tabindex");(S=getSelection())==null||S.removeAllRanges(),m.tabIndex=-1,m.focus(),A!==null?m.setAttribute("tabindex",A):m.removeAttribute("tabindex")}if(await Je(),R){const m=c.hash&&document.getElementById(c.hash.slice(1));k?scrollTo(k.x,k.y):m?m.scrollIntoView():scrollTo(0,0)}}else await Je();s.promise=null,s.id=null,R=!0,y=!1,_.props.page&&(_e=_.props.page);const v=_.state.branch[_.state.branch.length-1];return X=(v==null?void 0:v.module.router)!==!1,!0}function Pe(c){a=c.state;const p=document.querySelector("style[data-sveltekit]");if(p&&p.remove(),_e=c.props.page,Le=new Lt({target:n,props:se(P({},c.props),{stores:f}),hydrate:!0}),d=!0,X){const w={from:null,to:new URL(location.href)};i.after_navigate.forEach(u=>u(w))}}async function ge({url:c,params:p,stuff:w,branch:u,status:h,error:b,routeId:_}){var m,A;const v=u.filter(Boolean),g=v.find(U=>{var O;return(O=U.loaded)==null?void 0:O.redirect}),$={redirect:(m=g==null?void 0:g.loaded)==null?void 0:m.redirect,state:{url:c,params:p,branch:u,error:b,stuff:w,session_id:H},props:{components:v.map(U=>U.module.default)}};for(let U=0;U{Object.defineProperty($.props.page,O,{get:()=>{throw new Error(`$page.${O} has been replaced by $page.url.${L}`)}})};U("origin","origin"),U("path","pathname"),U("query","searchParams")}const k=v[v.length-1],E=(A=k==null?void 0:k.loaded)==null?void 0:A.cache;if(E){const U=c.pathname+c.search;let O=!1;const L=()=>{l.get(U)===$&&l.delete(U),x(),clearTimeout(N)},N=setTimeout(L,E.maxage*1e3),x=f.session.subscribe(()=>{O&&L()});O=!0,l.set(U,$)}return $}async function Q({status:c,error:p,module:w,url:u,params:h,stuff:b,props:_,routeId:v}){const g={module:w,uses:{params:new Set,url:!1,session:!1,stuff:!1,dependencies:new Set},loaded:null,stuff:b};function $(E){const{href:m}=new URL(E,u);g.uses.dependencies.add(m)}_&&g.uses.dependencies.add(u.href);const S={};for(const E in h)Object.defineProperty(S,E,{get(){return g.uses.params.add(E),h[E]},enumerable:!0});const k=Ue;if(w.load){const E={routeId:v,params:S,props:_||{},get url(){return g.uses.url=!0,u},get session(){return g.uses.session=!0,k},get stuff(){return g.uses.stuff=!0,P({},b)},fetch(A,U){const O=typeof A=="string"?A:A.url;return $(O),d?fetch(A,U):jt(A,U)},status:c!=null?c:null,error:p!=null?p:null},m=await w.load.call(null,E);if(!m)throw new Error("load function must return a value");g.loaded=Fe(m),g.loaded.stuff&&(g.stuff=g.loaded.stuff),g.loaded.dependencies&&g.loaded.dependencies.forEach($)}else _&&(g.loaded=Fe({props:_}));return g}async function Ce({id:c,url:p,params:w,route:u},h){var A,U,O;if(s.id===c&&s.promise)return s.promise;if(!h){const L=l.get(c);if(L)return L}const{a:b,b:_,has_shadow:v}=u,g=a.url&&{url:c!==a.url.pathname+a.url.search,params:Object.keys(w).filter(L=>a.params[L]!==w[L]),session:H!==a.session_id};let $=[],S=Qe,k=!1,E=200,m=null;b.forEach(L=>L());e:for(let L=0;LD.uses.params.has(Y))||g.session&&D.uses.session||Array.from(D.uses.dependencies).some(Y=>o.some(fe=>fe(Y)))||k&&D.uses.stuff){let Y={};const fe=v&&L===b.length-1;if(fe){const ne=await fetch(`${p.pathname}${p.pathname.endsWith("/")?"":"/"}__data.json${p.search}`,{headers:{"x-sveltekit-load":"true"}});if(ne.ok){const Te=ne.headers.get("x-sveltekit-location");if(Te)return{redirect:Te,props:{},state:a};Y=ne.status===204?{}:await ne.json()}else E=ne.status,m=new Error("Failed to load data")}if(m||(N=await Q({module:x,url:p,params:w,props:Y,stuff:S,routeId:u.id})),N&&(fe&&(N.uses.url=!0),N.loaded)){if(N.loaded.error&&(E=N.loaded.status,m=N.loaded.error),N.loaded.redirect)return{redirect:N.loaded.redirect,props:{},state:a};N.loaded.stuff&&(k=!0)}}else N=D}catch(x){E=500,m=Me(x)}if(m){for(;L--;)if(_[L]){let x,D,le=L;for(;!(D=$[le]);)le-=1;try{if(x=await Q({status:E,error:m,module:await _[L](),url:p,params:w,stuff:D.stuff,routeId:u.id}),(A=x==null?void 0:x.loaded)!=null&&A.error)continue;(U=x==null?void 0:x.loaded)!=null&&U.stuff&&(S=P(P({},S),x.loaded.stuff)),$=$.slice(0,le+1).concat(x);break e}catch{continue}}return await ee({status:E,error:m,url:p,routeId:u.id})}else(O=N==null?void 0:N.loaded)!=null&&O.stuff&&(S=P(P({},S),N.loaded.stuff)),$.push(N)}return await ge({url:p,params:w,stuff:S,branch:$,status:E,error:m,routeId:u.id})}async function ee({status:c,error:p,url:w,routeId:u}){var v,g;const h={},b=await Q({module:await qt,url:w,params:h,stuff:{},routeId:u}),_=await Q({status:c,error:p,module:await zt,url:w,params:h,stuff:b&&b.loaded&&b.loaded.stuff||{},routeId:u});return await ge({url:w,params:h,stuff:P(P({},(v=b==null?void 0:b.loaded)==null?void 0:v.stuff),(g=_==null?void 0:_.loaded)==null?void 0:g.stuff),branch:[b,_],status:c,error:p,routeId:u})}function je(c){if(c.origin!==location.origin||!c.pathname.startsWith(t))return;const p=decodeURI(c.pathname.slice(t.length)||"/");for(const w of $e){const u=w.exec(p);if(u)return{id:c.pathname+c.search,route:w,params:u,url:c}}}async function we({url:c,scroll:p,keepfocus:w,redirect_chain:u,details:h,accepted:b,blocked:_}){const v=a.url;let g=!1;const $={from:v,to:c,cancel:()=>g=!0};if(i.before_navigate.forEach(m=>m($)),g){_();return}const S=xt(c.pathname,r),k=new URL(c.origin+S+c.search+c.hash);if(ke(T),b(),d&&f.navigating.set({from:a.url,to:k}),await me(k,u,!1,{scroll:p,keepfocus:w,details:h})){const m={from:v,to:k};i.after_navigate.forEach(A=>A(m)),f.navigating.set(null)}}function te(c){return location.href=c.href,new Promise(()=>{})}return{after_navigate:c=>{Ee(()=>(i.after_navigate.push(c),()=>{const p=i.after_navigate.indexOf(c);i.after_navigate.splice(p,1)}))},before_navigate:c=>{Ee(()=>(i.before_navigate.push(c),()=>{const p=i.before_navigate.indexOf(c);i.before_navigate.splice(p,1)}))},disable_scroll_handling:()=>{(y||!d)&&(R=!1)},goto:(c,p={})=>Oe(c,p,[]),invalidate:c=>{if(typeof c=="function")o.push(c);else{const{href:p}=new URL(c,location.href);o.push(w=>w===p)}return G||(G=Promise.resolve().then(async()=>{await me(new URL(location.href),[],!0),G=null})),G},prefetch:async c=>{const p=new URL(c,Ge(document));await xe(p)},prefetch_routes:async c=>{const w=(c?$e.filter(u=>c.some(h=>u.exec(h))):$e).map(u=>Promise.all(u.a.map(h=>h())));await Promise.all(w)},_start_router:()=>{history.scrollRestoration="manual",addEventListener("beforeunload",u=>{let h=!1;const b={from:a.url,to:null,cancel:()=>h=!0};i.before_navigate.forEach(_=>_(b)),h?(u.preventDefault(),u.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{if(document.visibilityState==="hidden"){ke(T);try{sessionStorage[nt]=JSON.stringify(re)}catch{}}});const c=u=>{const h=Xe(u);h&&h.href&&h.hasAttribute("sveltekit:prefetch")&&xe(Ze(h))};let p;const w=u=>{clearTimeout(p),p=setTimeout(()=>{var h;(h=u.target)==null||h.dispatchEvent(new CustomEvent("sveltekit:trigger_prefetch",{bubbles:!0}))},20)};addEventListener("touchstart",c),addEventListener("mousemove",w),addEventListener("sveltekit:trigger_prefetch",c),addEventListener("click",u=>{if(!X||u.button||u.which!==1||u.metaKey||u.ctrlKey||u.shiftKey||u.altKey||u.defaultPrevented)return;const h=Xe(u);if(!h||!h.href)return;const b=h instanceof SVGAElement,_=Ze(h);if(!b&&_.origin==="null")return;const v=(h.getAttribute("rel")||"").split(/\s+/);if(h.hasAttribute("download")||v.includes("external")||h.hasAttribute("sveltekit:reload")||(b?h.target.baseVal:h.target))return;const[g,$]=_.href.split("#");if($!==void 0&&g===location.href.split("#")[0]){he=!0,ke(T),f.page.set(se(P({},_e),{url:_})),f.page.notify();return}we({url:_,scroll:h.hasAttribute("sveltekit:noscroll")?Re():null,keepfocus:!1,redirect_chain:[],details:{state:{},replaceState:_.href===location.href},accepted:()=>u.preventDefault(),blocked:()=>u.preventDefault()})}),addEventListener("popstate",u=>{if(u.state&&X){if(u.state[W]===T)return;we({url:new URL(location.href),scroll:re[u.state[W]],keepfocus:!1,redirect_chain:[],details:null,accepted:()=>{T=u.state[W]},blocked:()=>{const h=T-u.state[W];history.go(h)}})}}),addEventListener("hashchange",()=>{he&&(he=!1,history.replaceState(se(P({},history.state),{[W]:++T}),"",location.href))})},_hydrate:async({status:c,error:p,nodes:w,params:u,routeId:h})=>{const b=new URL(location.href),_=[];let v={},g,$;try{for(let S=0;S
-
-
-
-
- Composer
-
-
-
-
-
-
-
-
-
-
Style
-
-
-
Density
-
-
-
Temperature
-
-
-
-
-
-
-
Compose
-
-
PIECE_START
-
-
-
-
\ No newline at end of file
diff --git a/templates/index.html b/templates/index.html
index 8d047168c0b6221e00dc4624fc9bbabd91b743fa..207e9cd40be51faf5e664eab287d9d33a96bd871 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -1,27 +1,99 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
Welcome to SvelteKit
-
Visit kit.svelte.dev to read the documentation
+
Composer
+ A hundred thousand songs used to train. One AI model. Infinite compositions.
+
+
+
+ Visualised notes
+
+
+ Tokenized notes
+ PIECE_START TRACK_START INST=DRUMS DENSITY=6 BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42
+ TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38
+ NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35
+ NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1
+ NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1
+ NOTE_OFF=35 NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1
+ NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42
+ TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42
+ TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38
+ NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35
+ NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42
+ TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1
+ NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1
+ NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42
+
+
+
-
-
+