diff --git a/.gitattributes b/.gitattributes index b0417145d7f7ddb681e18b946808a02dcb221d25..026354662dec787eaa67b592e4d7c3d14187368e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -36,3 +36,33 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text source/docs/assets/choir_bwv407.wav filter=lfs diff=lfs merge=lfs -text diagnostic.wav filter=lfs diff=lfs merge=lfs -text source/docs/assets/slakh_test_Track01876.wav filter=lfs diff=lfs merge=lfs -text +examples/fma-15769.wav filter=lfs diff=lfs merge=lfs -text +examples/fma-22472.wav filter=lfs diff=lfs merge=lfs -text +examples/fma-23371.wav filter=lfs diff=lfs merge=lfs -text +examples/fma-37119.wav filter=lfs diff=lfs merge=lfs -text +examples/fma-42761.wav filter=lfs diff=lfs merge=lfs -text +examples/fma-68838.wav filter=lfs diff=lfs merge=lfs -text +examples/fma-7481.wav filter=lfs diff=lfs merge=lfs -text +examples/fma-75782.wav filter=lfs diff=lfs merge=lfs -text +examples/guitar-funk.wav filter=lfs diff=lfs merge=lfs -text +examples/guitar-jazz-chords.wav filter=lfs diff=lfs merge=lfs -text +examples/guitar-jazz-lead.wav filter=lfs diff=lfs merge=lfs -text +examples/guitar-rock.wav filter=lfs diff=lfs merge=lfs -text +examples/slakh-band.wav filter=lfs diff=lfs merge=lfs -text +examples/slakh-studio.wav filter=lfs diff=lfs merge=lfs -text +soundfonts/GeneralUser_GS.sf2 filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/fma-15769.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/fma-22472.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/fma-23371.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/fma-37119.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/fma-42761.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/fma-68838.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/fma-7481.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/fma-75782.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/guitar-funk.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/guitar-jazz-chords.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/guitar-jazz-lead.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/guitar-rock.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/slakh-band.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/examples/slakh-studio.wav filter=lfs diff=lfs merge=lfs -text +source/demo/web/public/soundfonts/GeneralUser_GS.sf2 filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md index 2b50f6ebc811d019e94e1e0920346bf8e814dc67..81b0392ac8e974ee8822d466fb49a436e59c4aef 100644 --- a/README.md +++ b/README.md @@ -21,38 +21,40 @@ custom_headers: # Hendrix -Choose an audio file, record with your microphone, or try the short demo -clip. Hendrix predicts notes and instrument families, draws a piano roll, -plays the result, and lets you download a MIDI file. +Hear a recording, see its notes, and turn it into MIDI. -Audio decoding and model inference run on your device. The app does not upload -your recording. It downloads the checked 195.3 MB FP32 D26 model on first use. -WebGPU is preferred; WebAssembly supplies a CPU fallback. Start with two -seconds: speed and memory use depend on your browser and device. +Explore 14 music clips: full-band mixes, guitar performances, electronic music, +rock, folk, pop, hip-hop, and instrumental tracks. Each clip comes with prepared +Hendrix predictions, so you can listen and download MIDI right away. Press play +and drag the **Original ↔ MIDI** slider to blend the recording with its +transcription. Seek through the waveform or mute individual instrument parts. +MIDI plays with sampled instruments from GeneralUser GS by S. Christian Collins. -If the embedded app runs slowly, [open the app directly](https://jackboyla-hendrix.static.hf.space/) -to enable browser isolation and up to four CPU threads. Microphone access also -depends on browser permissions. Predictions are a research result and may -miss notes, assign the wrong instrument, or give poor note endings. MIDI -playback uses a simple browser synth. +Choose a file or record with your microphone to transcribe your own audio. +Decoding and inference run on your device; the app does not upload your recording. +The first live transcription downloads 195.3 MB of model graphs and the browser +runtime. WebGPU is preferred, with a WebAssembly CPU fallback. Start with two +seconds on slower devices. The example library needs no model download. -The example is a two-second excerpt (6–8 seconds of the repo's preview) from -Slakh2100 test Track01876, cropped from the existing project demo. Slakh2100 -is by Ethan Manilow, Gordon Wichern, Prem Seetharaman, and Jonathan Le Roux, -available on [Zenodo](https://zenodo.org/records/4599666) under -[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). We do not -redistribute the local YouTube diagnostic audio. +[Open the app directly](https://jackboyla-hendrix.static.hf.space/) for the full +listening view. Microphone access depends on browser permissions. Predictions +can miss notes, choose the wrong instrument, or give poor note endings. -Model: 46.5M-parameter D26, derived from YPTF-MoE+Multi. `models/fp32/manifest.json` -records the source checkpoint and graph hashes. `deployment.json` records the -app build and file hashes. This Space includes only the checked FP32 release. +The example audio comes from Free Music Archive, GuitarSet, and Slakh2100 under +CC BY licenses. Clips are cropped to at most 12 seconds and converted to mono +16 kHz audio. [Full creator, source, license, and crop credits](https://huggingface.co/spaces/jackboyla/hendrix/blob/main/examples/CREDITS.md) +accompany the clips. Prepared notes come from the fixed Hendrix model, not +reference annotations. [GeneralUser GS license](https://huggingface.co/spaces/jackboyla/hendrix/blob/main/soundfonts/LICENSE.txt). -[Source, methods, results, and deployment commands](https://github.com/jackboyla/hendrix) +The 46.5M-parameter model derives from YPTF-MoE+Multi. +`models/fp32/manifest.json` records the source checkpoint and checked FP32 graph +hashes. `deployment.json` records the app source and file hashes. This static +Space needs no server-side inference or GPU. -This is a static Space: hosting requires no server-side inference or GPU. +[Source, methods, results, and deployment commands](https://github.com/jackboyla/hendrix) -The `source/` directory contains the app source used for this deployment. -To rebuild and publish from that snapshot: +The `source/` directory contains the exact app source and prepared audio assets +used for this deployment. To rebuild and publish from that snapshot: ```bash cd source @@ -63,5 +65,5 @@ uv run --no-project --with huggingface_hub==0.36.2 python \ ``` Omit `--upload` to build and check a local package. Each run prints the staging -directory. The script keeps the model hashes fixed and refuses to change an -existing Space's visibility or SDK. +directory. The script checks the model and example hashes and refuses to change +an existing Space's visibility or SDK. diff --git a/assets/PianoRollCanvas-RGNgcwXI.js b/assets/PianoRollCanvas-RGNgcwXI.js new file mode 100644 index 0000000000000000000000000000000000000000..71f7f6a8f5dfcf71c5e9b5eb76c54e45c7b89c85 --- /dev/null +++ b/assets/PianoRollCanvas-RGNgcwXI.js @@ -0,0 +1 @@ +import{f as e,l as t,t as n}from"./style-3Z1guUf2.js";var r=e(),i=t();function a(e){let{rollRef:t,audio:a,setUserScrolled:o}=e,s=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let e=s.current,r=new n(e);t.current=r;let i=t=>{t.preventDefault();let n=e.getBoundingClientRect(),i=Math.exp(-t.deltaY*.01);if(t.altKey){r.zoomPitch(i,t.clientY-n.top),o(!0);return}if(t.ctrlKey||t.metaKey){r.zoomTime(i,t.clientX-n.left),o(!0);return}if(t.shiftKey){let e=t.deltaX===0?t.deltaY:t.deltaX;e!==0&&r.scrollBy(e/r.pxPerSec)}else t.deltaX!==0&&r.scrollBy(t.deltaX/r.pxPerSec),t.deltaY!==0&&r.scrollPitchBy(-t.deltaY);o(!0)},c=null,l=t=>{let n=e.getBoundingClientRect(),i=t{let n=e.getBoundingClientRect(),r=t.clientX-n.left;r>=56?(c={wasPlaying:a.state===`started`},c.wasPlaying&&a.pause(),l(t.clientX)):u={x:r,y:t.clientY-n.top},t.preventDefault()},f=t=>{if(c){l(t.clientX);return}let n=e.getBoundingClientRect();if(u){let e=t.clientX-n.left,i=t.clientY-n.top,a=e-u.x,s=i-u.y;a!==0&&r.zoomPitch(Math.exp(a*.01),i),s!==0&&r.scrollPitchBy(s),u={x:e,y:i},o(!0);return}e.style.cursor=t.clientX-n.left<56?`ew-resize`:`default`},p=()=>{c&&=(a.seek(a.seconds),c.wasPlaying&&a.play(),null),u=null},m=null,h=null,g=e=>({dx:Math.abs(e[0].clientX-e[1].clientX),dy:Math.abs(e[0].clientY-e[1].clientY)}),_=e=>{e.touches.length===2?(h=g(e.touches),m=null,e.preventDefault()):e.touches.length===1&&(m={x:e.touches[0].clientX,y:e.touches[0].clientY})},v=t=>{let n=e.getBoundingClientRect();if(h&&t.touches.length===2){t.preventDefault();let e=g(t.touches),i=(t.touches[0].clientX+t.touches[1].clientX)/2-n.left,a=(t.touches[0].clientY+t.touches[1].clientY)/2-n.top;h.dx>12&&e.dx>12&&r.zoomTime(e.dx/h.dx,i),h.dy>12&&e.dy>12&&r.zoomPitch(e.dy/h.dy,a),h=e,o(!0)}else if(m&&t.touches.length===1){t.preventDefault();let e=t.touches[0];r.scrollBy(-(e.clientX-m.x)/r.pxPerSec),r.scrollPitchBy(e.clientY-m.y),m={x:e.clientX,y:e.clientY},o(!0)}},y=e=>{e.touches.length<2&&(h=null),e.touches.length===0&&(m=null)};return e.addEventListener(`wheel`,i,{passive:!1}),e.addEventListener(`touchstart`,_,{passive:!1}),e.addEventListener(`touchmove`,v,{passive:!1}),e.addEventListener(`touchend`,y,{passive:!1}),e.addEventListener(`mousedown`,d),window.addEventListener(`mousemove`,f),window.addEventListener(`mouseup`,p),()=>{e.removeEventListener(`wheel`,i),e.removeEventListener(`touchstart`,_),e.removeEventListener(`touchmove`,v),e.removeEventListener(`touchend`,y),e.removeEventListener(`mousedown`,d),window.removeEventListener(`mousemove`,f),window.removeEventListener(`mouseup`,p)}},[a,t,o]),(0,i.jsx)(`section`,{className:`relative col-start-1 overflow-hidden rounded-card border border-line bg-[linear-gradient(180deg,rgba(255,255,255,0.02),transparent_60px),#0a0b0e] p-0 shadow-[0_1px_0_rgba(255,255,255,0.04)_inset,0_18px_40px_-28px_rgba(0,0,0,0.9)] animate-rise [animation-delay:0.12s]`,children:(0,i.jsx)(`canvas`,{className:`block h-[420px] w-full`,width:1200,height:400,ref:s})})}export{a as t}; \ No newline at end of file diff --git a/assets/local-CA5z8jv5.css b/assets/local-CA5z8jv5.css new file mode 100644 index 0000000000000000000000000000000000000000..987204876fa579a7fbdd7fbe539c9d021d902412 --- /dev/null +++ b/assets/local-CA5z8jv5.css @@ -0,0 +1 @@ +:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{color:#f4f0e9;background:#111216;margin:0}.local-shell{--ink:#f4f0e9;--muted:#9b9ba5;--peach:#efb58c;--line:#ffffff12;width:min(1240px,100% - 64px);margin:0 auto;padding:26px 0 36px;font-family:Hanken Grotesk,Inter,ui-sans-serif,system-ui,sans-serif}.local-shell button,.local-shell input,.local-shell select{font:inherit}.demo-nav{justify-content:space-between;align-items:center;gap:24px;display:flex}.demo-brand{color:var(--ink);letter-spacing:-1.5px;align-items:center;gap:10px;font-size:26px;font-weight:750;text-decoration:none;display:inline-flex}.demo-brand svg{width:30px;height:30px;color:var(--peach)}.brand-period{color:var(--peach)}.demo-nav>div{align-items:center;gap:28px;font-size:12px;display:flex}.demo-nav a:not(.demo-brand){color:#c3c1c7;text-decoration:none}.demo-nav a:hover{color:var(--peach)}.privacy-pill{color:#b1c4b8;background:#a7c6b408;border:1px solid #a7c6b41f;border-radius:999px;align-items:center;gap:7px;padding:8px 11px;font-size:11px;display:inline-flex}.privacy-pill svg{width:14px;height:14px}.local-hero{justify-content:space-between;align-items:center;gap:44px;padding:54px 0 34px;display:flex}.eyebrow{color:#a5a0a5;letter-spacing:.18em;margin:0 0 12px;font-size:9px;font-weight:700}.local-hero h1{letter-spacing:-.055em;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(42px,5.1vw,66px);font-weight:400;line-height:1.02}.local-hero h1 em{color:var(--peach);font-weight:400}.local-hero>div>p:last-child{color:#b8b4bc;max-width:470px;margin:18px 0 0;font-size:14px;line-height:1.7}.hero-art{flex:0 0 330px;width:290px;padding:12px 20px 0}.hero-notes{color:#b4b1bc;width:100%;display:block}.hero-art>span{text-align:center;color:#a39daa;letter-spacing:.08em;margin-top:20px;font-size:10px;display:block}.hero-art>span>span{color:var(--peach);padding:0 12px}.upload-panel{background:#191a1f;border:1px dashed #ffffff24;border-radius:14px;justify-content:space-between;align-items:center;gap:20px;margin-bottom:30px;padding:20px 24px;transition:border-color .15s,background .15s;display:flex}.upload-panel.dragging{border-color:var(--peach);background:#30251f}.upload-copy{align-items:center;gap:16px;display:flex}.upload-icon{color:#c4b7ab;background:#ffffff03;border:1px solid #ffffff10;border-radius:12px;flex:none;place-items:center;width:44px;height:44px;display:grid}.upload-icon svg{width:20px;height:20px}.upload-copy strong{font-size:14px;font-weight:600}.upload-copy p{color:var(--muted);margin:5px 0 0;font-size:11px}.upload-actions{flex:none;gap:9px;display:flex}.primary-button,.secondary-button,.record-button{appearance:none;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:10px 15px;text-decoration:none;display:inline-flex;font-size:12px!important;font-weight:650!important}.primary-button{background:var(--peach);color:#22170f;border:1px solid var(--peach)}.primary-button:hover{background:#f4c29e}.secondary-button{color:#ddd6d2;background:#ffffff04;border:1px solid #ffffff1c}.record-button{color:#fff;background:#ae4857;animation:1.3s infinite pulse-record}.primary-button svg,.secondary-button svg,.record-button svg{width:14px;height:14px}button:disabled{cursor:not-allowed;opacity:.4}.primary-button:has(input:disabled){cursor:not-allowed;opacity:.4}.demo-workspace{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:28px;display:grid}.example-library{min-width:0;scroll-margin-top:20px}.library-heading{justify-content:space-between;align-items:center;gap:10px;display:flex}.library-heading .eyebrow{margin-bottom:7px;font-size:8px}.library-heading h2{letter-spacing:-.03em;margin:0;font-family:Georgia,serif;font-size:22px;font-weight:400;line-height:1.2}.example-count{color:#c3bbca;background:#ffffff07;border:1px solid #ffffff10;border-radius:5px;flex:none;padding:4px 6px;font-size:9px}.library-intro{color:var(--muted);margin:10px 0 16px;font-size:11px;line-height:1.55}.category-tabs{flex-wrap:wrap;gap:5px;margin-bottom:16px;display:flex}.category-tabs button{color:#9b96a2;background:0 0;border-color:#0000;border-radius:999px;padding:5px 9px;font-size:10px}.category-tabs button[aria-pressed=true]{color:#e8bd9f;background:#efb58c17;border-color:#efb58c28}.example-list{scrollbar-width:thin;scrollbar-color:#ffffff20 transparent;gap:6px;max-height:553px;padding-right:5px;display:grid;overflow-y:auto}.example-card{text-align:left;color:#eee9e3;background:#ffffff02;border:1px solid #0000;border-radius:10px;align-items:center;gap:12px;width:100%;min-height:86px;padding:11px 9px;display:flex;position:relative}.example-card:hover{background:#ffffff06;border-color:#ffffff15}.example-card.selected{background:#efb58c09;border-color:#efb58c34}.clip-art{background:color-mix(in srgb, var(--clip-color) 13%, #1b1a20);height:48px;color:var(--clip-color);border-radius:8px;flex:0 0 44px;align-items:center;padding:7px;display:grid}.clip-art svg{width:100%;height:25px}.clip-info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.clip-info strong{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.clip-info>span{color:#9f99a3;text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.clip-info .clip-tags{color:var(--clip-color);font-size:8px}.clip-tags>span{color:#77717d;padding:0 6px}.clip-open{color:var(--clip-color);opacity:.8;flex:0 0 10px}.clip-open svg{width:10px;height:10px}.library-note{color:#8a8490;margin:15px 4px 0 0;font-size:9px;line-height:1.6}.library-note a{color:#b7adb9;margin-top:4px;text-decoration:none;display:inline-block}.library-empty{color:#c7bfcb;font-size:12px;line-height:1.6}.listening-room{background:#191a20;border:1px solid #ffffff17;border-radius:16px;min-width:0;overflow:hidden;box-shadow:0 12px 48px #00000012}.track-header{justify-content:space-between;align-items:center;gap:24px;padding:23px 24px 18px;display:flex}.track-header>div{min-width:0}.track-header .eyebrow{color:var(--peach);margin-bottom:8px;font-size:8px}.track-header h2{letter-spacing:-.025em;margin:0;font-family:Georgia,serif;font-size:26px;font-weight:400;line-height:1.15}.chosen-file{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin:8px 0 0;font-size:11px;overflow:hidden}.download-button{color:#e1d3c6;white-space:nowrap;border:1px solid #fff2;border-radius:7px;align-items:center;gap:7px;padding:9px 11px;font-size:11px;text-decoration:none;display:inline-flex}.download-button svg{width:13px;height:13px}.download-button:hover{color:var(--peach);border-color:#efb58c66}.roll-toolbar{border-top:1px solid var(--line);background:#ffffff02;justify-content:space-between;align-items:center;padding:11px 23px;display:flex}.roll-toolbar>span:last-child{letter-spacing:.14em;color:#706b78;font-size:8px}.roll-label{color:#b6b0bd;align-items:center;gap:7px;font-size:10px;display:flex}.status-dot{background:#77717c;border-radius:50%;width:5px;height:5px}.status-dot.ready{background:#a5c6b4;box-shadow:0 0 7px #a5c6b433}.roll-stage{background:#0e0f13;padding:0 12px;position:relative}.roll-stage section{box-shadow:none;border:none;border-radius:0;animation:none}.roll-stage canvas{height:282px}.roll-empty{text-align:center;pointer-events:none;background:#0e0f13c4;flex-direction:column;justify-content:center;align-items:center;padding:20px;display:flex;position:absolute;inset:0}.roll-empty svg{opacity:.6;max-width:200px;margin-bottom:22px}.roll-empty strong{color:#d6cfda;font-size:13px;font-weight:500}.roll-empty span{color:#8d8794;margin-top:7px;font-size:11px}.instrument-row{border-bottom:1px solid var(--line);background:#14151a;flex-wrap:wrap;align-items:center;gap:5px 8px;min-height:37px;padding:10px 20px;display:flex}.instrument-row button{color:#b2abba;background:0 0;border-color:#0000;border-radius:4px;align-items:center;gap:5px;padding:3px 5px;font-size:9px;display:inline-flex}.instrument-row button[aria-pressed=false]{opacity:.4;text-decoration:line-through}.instrument-row i{border-radius:50%;width:5px;height:5px}.instrument-row>span{color:#77717f;font-size:10px}.player{padding:15px 24px 17px}.transport-row{align-items:center;gap:12px;display:flex}.play-button{background:var(--peach);color:#332215;border:none;border-radius:50%;flex:none;place-items:center;width:38px;height:38px;padding:0;display:grid}.play-button:hover{background:#f4c29e}.play-button svg{width:13px;height:13px}.play-clock{color:#c8c0cc;font-variant-numeric:tabular-nums;font-family:ui-monospace,monospace;font-size:10px}.play-clock.duration{color:#81798a}.waveform-seek{color:#d2b49e;flex:1;min-width:0;height:35px;position:relative}.waveform-seek svg{width:100%;height:35px}.waveform-seek input{appearance:none;opacity:.001;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.waveform-seek:focus-within{outline:1px solid var(--peach);outline-offset:5px;border-radius:3px}.restart-button{color:#a198ac;background:0 0;border:none;padding:3px;font-size:23px!important}.blend-control{border-top:1px solid var(--line);margin-top:17px;padding-top:15px}.blend-heading{color:#ded6e1;justify-content:space-between;align-items:center;gap:10px;font-size:11px;display:flex}.blend-readout{font-variant-numeric:tabular-nums;color:#8f879b;font-size:9px}.blend-slider-row{align-items:center;gap:14px;margin:10px 0 7px;display:flex}.blend-slider-row button{color:#b2a9bd;background:0 0;border:none;min-width:44px;padding:2px 0;font-size:10px}.blend-slider-row button.active{color:var(--peach)}.local-shell .mix-slider{appearance:none;background:linear-gradient(to right, #efb58c 0%, #efb58c var(--mix-percent), #45404c var(--mix-percent), #45404c 100%);cursor:pointer;border:none;border-radius:9px;flex:1;width:auto;min-width:0;height:4px}.local-shell .mix-slider::-webkit-slider-thumb{appearance:none;background:#f4e7dd;border:3px solid #29232c;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 1px #f4e7dd}.local-shell .mix-slider::-moz-range-thumb{background:#f4e7dd;border:2px solid #29232c;border-radius:50%;width:9px;height:9px}.local-shell .mix-slider:disabled{cursor:not-allowed;opacity:.4}.blend-hint{color:#81798d;margin:0;font-size:9px;line-height:1.5}.transcription-panel{border-top:1px solid var(--line);background:#ffffff02;padding:15px 24px 17px}.transcription-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.limit-label{color:#9d94a7;align-items:center;gap:8px;font-size:10px;display:flex}.limit-label select{color:#cec5d5;background:#26232b;border:1px solid #ffffff15;border-radius:5px;padding:6px 8px;font-size:10px}.transcribe-button{color:#2a222e;background:#eee6dc;border:none;border-radius:6px;justify-content:center;align-items:center;gap:12px;margin-left:auto;padding:8px 12px;display:inline-flex;font-size:11px!important;font-weight:650!important}.transcribe-button:hover{background:#f5f0e9}.transcribe-button>span{font-size:15px;line-height:1}.run-status{color:#a69dac;margin:11px 0 0;font-size:10px;line-height:1.5}.run-status.error{color:#f39d9d}.download-hint{color:#77707f;margin:6px 0 0;font-size:9px;line-height:1.5}.progress-track{background:#ffffff10;border-radius:4px;height:3px;margin-top:14px;overflow:hidden}.progress-track>div{background:var(--peach);height:100%;transition:width .2s}.local-footer{border-top:1px solid var(--line);grid-template-columns:300px minmax(0,1fr);gap:28px;margin-top:36px;padding-top:22px;display:grid}.local-footer .demo-brand{gap:7px;font-size:18px}.local-footer .demo-brand svg{color:#a89aab;width:21px;height:21px}.local-footer p{color:#8d8496;margin:5px 0;font-size:10px;line-height:1.7}.local-footer>div:last-child>p:first-child{color:#b6abba}.runtime-details{color:#a39aad;margin-top:11px;font-size:10px}.runtime-details summary{cursor:pointer}.capability-card{margin-top:10px!important}.local-footer-links{flex-wrap:wrap;gap:16px;margin-top:8px;display:flex}.local-footer-links a{color:#d0c1d1;text-decoration:none}.diagnostic-output{overflow-wrap:anywhere;font:10px/1.6 ui-monospace,monospace}.run-diagnostics{margin-top:8px}.local-shell :is(button,a,select,input):focus-visible,.primary-button:focus-within{outline:2px solid var(--peach);outline-offset:4px}@keyframes pulse-record{50%{box-shadow:0 0 0 5px #ae485720}}@media (width>=1500px){.local-shell{padding-top:34px}}@media (width<=1000px){.local-shell{width:calc(100% - 40px)}.demo-workspace,.local-footer{grid-template-columns:260px minmax(0,1fr);gap:20px}.privacy-pill{display:none}.hero-art{flex-basis:240px;padding:0}.upload-panel{padding:18px}.track-header{gap:12px;padding:20px 18px}.track-header h2{font-size:24px}.download-button{padding:8px;font-size:10px}.player,.transcription-panel{padding-left:18px;padding-right:18px}}@media (width<=760px){.local-shell{width:calc(100% - 32px);padding-top:18px}.demo-brand{font-size:24px}.demo-nav>div{gap:20px;font-size:11px}.local-hero{gap:20px;padding:36px 0 25px}.local-hero h1{font-size:51px}.local-hero .eyebrow{font-size:8px}.local-hero>div>p:last-child{max-width:390px;margin-top:16px;font-size:13px}.hero-art{display:none}.upload-panel{flex-direction:column;align-items:stretch;gap:15px;margin-bottom:26px}.upload-actions{width:100%}.upload-actions>*{flex:1}.upload-copy{gap:12px}.demo-workspace{flex-direction:column;gap:22px;display:flex}.example-library,.listening-room{width:100%}.library-heading{align-items:center}.library-heading h2{font-size:24px}.library-intro{margin:8px 0 12px}.category-tabs{margin-bottom:12px}.example-list{scroll-snap-type:x mandatory;gap:8px;max-height:none;padding:0 0 10px;display:flex;overflow-x:auto}.example-card{scroll-snap-align:start;border-color:#ffffff0b;flex:0 0 220px;min-width:0;min-height:89px}.clip-info strong{font-size:12px}.clip-info>span{font-size:10px}.clip-info .clip-tags{font-size:9px}.library-note{margin-top:1px;font-size:9px}.library-note a{margin-left:4px;display:inline}.track-header{flex-wrap:wrap;align-items:start}.track-header>div{flex:1}.track-header h2{font-size:25px}.download-button{padding:8px;font-size:9px}.roll-stage canvas{height:250px}.roll-toolbar{padding:10px 17px}.instrument-row{padding:9px 12px}.instrument-row button{font-size:10px}.player{padding:14px 17px 16px}.transport-row{gap:10px}.blend-hint{font-size:10px}.blend-slider-row button{font-size:11px}.blend-readout{font-size:9px}.transcription-panel{padding:14px 17px 17px}.run-status{font-size:11px}.local-footer{grid-template-columns:1fr;gap:13px;margin-top:28px;padding-top:20px}.local-footer p{font-size:11px}}@media (width<=380px){.demo-nav>div{gap:12px}.local-hero h1{font-size:46px}.eyebrow{letter-spacing:.13em}.download-button{padding:7px}.download-button svg{display:none}.transcription-actions{gap:8px}.limit-label{gap:5px;font-size:9px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}} diff --git a/assets/local-r9il2Qob.js b/assets/local-r9il2Qob.js new file mode 100644 index 0000000000000000000000000000000000000000..83b3ad97e262bb1f6158aa121bdd37fe4dc3057a --- /dev/null +++ b/assets/local-r9il2Qob.js @@ -0,0 +1,4 @@ +import{a as e,d as t,f as n,i as r,l as i,n as a,o,p as s,u as c}from"./style-3Z1guUf2.js";import{t as l}from"./PianoRollCanvas-RGNgcwXI.js";var u=n(),d=t(),f=[[`acoustic_piano`,[0,1,3,6,7]],[`electric_piano`,[2,4,5]],[`chromatic_percussion`,p(8,16)],[`organ`,p(16,24)],[`acoustic_guitar`,[24,25]],[`clean_electric_guitar`,[26,27,28]],[`distorted_electric_guitar`,[29,30,31]],[`acoustic_bass`,[32,35]],[`electric_bass`,[33,34,36,37,38,39]],[`violin`,[40]],[`viola`,[41]],[`cello`,[42]],[`contrabass`,[43]],[`orchestral_harp`,[46]],[`timpani`,[47]],[`string_ensemble`,[48,49,44,45]],[`synth_strings`,[50,51]],[`voice`,[52,53,54,100,101]],[`orchestra_hit`,[55]],[`trumpet`,[56,59]],[`trombone`,[57]],[`tuba`,[58]],[`french_horn`,[60]],[`brass_section`,[61,62,63]],[`soprano_and_alto_sax`,[64,65]],[`tenor_sax`,[66]],[`baritone_sax`,[67]],[`oboe`,[68]],[`english_horn`,[69]],[`bassoon`,[70]],[`clarinet`,[71]],[`flutes`,p(72,80)],[`synth_lead`,p(80,88)],[`synth_pad`,p(88,96)]];function p(e,t){return Array.from({length:t-e},(t,n)=>e+n)}var m=new Map;for(let[e,t]of f)for(let n of t)m.set(n,e);function h(e){return e.isDrum?`drums`:m.get(e.program)??`program_${e.program}`}function g(e){if(e===0)return{type:`PAD`,value:0};if(e===1)return{type:`EOS`,value:0};if(e===2)return{type:`UNK`,value:0};if(e<=208)return{type:`shift`,value:e-3};if(e<=336)return{type:`pitch`,value:e-209};if(e<=338)return{type:`velocity`,value:e-337};if(e===339)return{type:`tie`,value:0};if(e<=467)return{type:`program`,value:e-340};if(e<=595)return{type:`drum`,value:e-468};throw Error(`unknown token ${e}`)}function _(e,t){let n=e.map(g),r=null,i=[],a=[],o=-1;for(let e=0;e0&&(l=c+e.value);else if(e.type===`drum`)s.push({isDrum:!0,program:128,time:l/100,velocity:1,pitch:e.value});else if(e.type===`program`)r=e.value;else if(e.type===`velocity`)u=e.value;else if(e.type===`pitch`&&r!==null&&u!==null){let t=`${r}:${e.value}`;if(u>0)a.push([r,e.value]);else{let e=a.findIndex(([e,n])=>`${e}:${n}`===t);if(e<0)continue;a.splice(e,1)}s.push({isDrum:!1,program:r,time:l/100,velocity:u,pitch:e.value})}else if(e.type===`EOS`)break;return s.sort((e,t)=>(e.time??0)-(t.time??0)||Number(e.isDrum)-Number(t.isDrum)||e.program-t.program||e.velocity-t.velocity||e.pitch-t.pitch),i.sort((e,t)=>Number(e.isDrum)-Number(t.isDrum)||e.program-t.program||e.pitch-t.pitch),{notes:s,ties:i,lastActivity:a,start:t}}function v(e){let t=new Map,n=[];e.sort((e,t)=>(e.time??0)-(t.time??0)||Number(e.isDrum)-Number(t.isDrum)||e.pitch-t.pitch||e.velocity-t.velocity||e.program-t.program);for(let r of e){if(r.time===null)continue;if(r.isDrum){n.push({onset:r.time,offset:r.time+.01,pitch:r.pitch,program:128,isDrum:!0,velocity:1});continue}let e=`${r.pitch}:${r.program}`;if(r.velocity===1){let i=t.get(e);i!==void 0&&i.time!==null&&n.push({onset:i.time,offset:r.time,pitch:r.pitch,program:r.program,isDrum:!1,velocity:i.velocity}),t.set(e,r)}else{let i=t.get(e);t.delete(e),i!==void 0&&i.time!==null&&n.push({onset:i.time,offset:r.time,pitch:r.pitch,program:r.program,isDrum:!1,velocity:i.velocity})}}for(let e of t.values())e.time!==null&&n.push({onset:e.time,offset:e.time+.01,pitch:e.pitch,program:e.program,isDrum:!1,velocity:1});return n}function y(e){let t=new Map;for(let n of e){let e=`${n.pitch}:${n.program}:${Number(n.isDrum)}`,r=t.get(e)??[];r.push(n),t.set(e,r)}let n=[];for(let e of t.values()){e.sort((e,t)=>e.onset-t.onset);for(let t=1;te[t].onset&&(e[t-1].offset=e[t].onset);n.push(...e.filter(e=>e.onsete.onset-t.onset||Number(e.isDrum)-Number(t.isDrum)||e.program-t.program||e.velocity-t.velocity||e.pitch-t.pitch)}function b(e,t,n){let r=[];for(let n=0;n<13;n++){let i=e.map((e,r)=>_(e[n],r*t)),a=[],o=null;for(let e of i){if(o!==null){let t=new Set(e.ties.map(e=>`${e.program}:${e.pitch}`));for(let[n,r]of o)t.has(`${n}:${r}`)||a.push({isDrum:!1,program:n,time:e.start,velocity:0,pitch:r})}a.push(...e.notes),o=e.lastActivity}r.push(v(a))}return y(r.flat()).filter(e=>e.onset({...e,offset:Math.min(n,Math.max(e.offset,e.onset+.01))}))}var x=16e3,ee=32767,S=2048,C=1024;async function te(e,t){let n=new AudioContext;try{let r=await n.decodeAudioData(await e.arrayBuffer()),i=t===void 0?r.duration:Math.min(r.duration,t),a=Math.max(1,Math.ceil(i*x)),o=new OfflineAudioContext(1,a,x),s=o.createBuffer(1,r.length,r.sampleRate),c=s.getChannelData(0);for(let e=0;e>=1;this.reversed[t]=r}}magnitude(e,t,n){for(let t=0;t.5-.5*Math.cos(2*Math.PI*t/S));function E(e,t){let n=e;for(;n<0||n>=t;)n=n<0?-n:2*t-2-n;return n}function D(e){if(e.length!==32767)throw Error(`expected ${ee} samples, got ${e.length}`);let t=new Float32Array(S),n=new Float32Array(110*C),r=S/2;for(let i=0;i<110;i++){let a=i*300-r;for(let n=0;n0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=O(t,n),t in ie)return;ie[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:re,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},ae=Object.defineProperty,oe=Object.getOwnPropertyDescriptor,se=Object.getOwnPropertyNames,ce=Object.prototype.hasOwnProperty,A=(e=>typeof s<`u`?s:typeof Proxy<`u`?new Proxy(e,{get:(e,t)=>(typeof s<`u`?s:e)[t]}):e)(function(e){if(typeof s<`u`)return s.apply(this,arguments);throw Error(`Dynamic require of "`+e+`" is not supported`)}),j=(e,t)=>()=>(e&&(t=e(e=0)),t),le=(e,t)=>{for(var n in t)ae(e,n,{get:t[n],enumerable:!0})},ue=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of se(t))!ce.call(e,i)&&i!==n&&ae(e,i,{get:()=>t[i],enumerable:!(r=oe(t,i))||r.enumerable});return e},M=e=>ue(ae({},`__esModule`,{value:!0}),e),de,fe,pe,me,N,P=j(()=>{de=new Map,fe=[],pe=(e,t,n)=>{if(t&&typeof t.init==`function`&&typeof t.createInferenceSessionHandler==`function`){let r=de.get(e);if(r===void 0)de.set(e,{backend:t,priority:n});else{if(r.priority>n)return;if(r.priority===n&&r.backend!==t)throw Error(`cannot register backend "${e}" using priority ${n}`)}if(n>=0){let t=fe.indexOf(e);t!==-1&&fe.splice(t,1);for(let t=0;t{let t=de.get(e);if(!t)return`backend not found.`;if(t.initialized)return t.backend;if(t.aborted)return t.error;{let n=!!t.initPromise;try{return n||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(e){return n||(t.error=`${e}`,t.aborted=!0),t.error}finally{delete t.initPromise}}},N=async e=>{let t=e.executionProviders||[],n=t.map(e=>typeof e==`string`?e:e.name),r=n.length===0?fe:n,i,a=[],o=new Set;for(let e of r){let t=await me(e);typeof t==`string`?a.push({name:e,err:t}):(i||=t,i===t&&o.add(e))}if(!i)throw Error(`no available backend found. ERR: ${a.map(e=>`[${e.name}] ${e.err}`).join(`, `)}`);for(let{name:e,err:t}of a)n.includes(e)&&console.warn(`removing requested execution provider "${e}" from session options because it is not available: ${t}`);let s=t.filter(e=>o.has(typeof e==`string`?e:e.name));return[i,new Proxy(e,{get:(e,t)=>t===`executionProviders`?s:Reflect.get(e,t)})]}}),he=j(()=>{P()}),ge,_e=j(()=>{ge=`1.27.0`}),F,I,ve=j(()=>{_e(),F=`warning`,I={wasm:{},webgl:{},webgpu:{},versions:{common:ge},set logLevel(e){if(e!==void 0){if(typeof e!=`string`||[`verbose`,`info`,`warning`,`error`,`fatal`].indexOf(e)===-1)throw Error(`Unsupported logging level: ${e}`);F=e}},get logLevel(){return F}},Object.defineProperty(I,"logLevel",{enumerable:!0})}),L,ye=j(()=>{ve(),L=I}),be,xe,Se=j(()=>{be=(e,t)=>{let n=typeof document<`u`?document.createElement(`canvas`):new OffscreenCanvas(1,1);n.width=e.dims[3],n.height=e.dims[2];let r=n.getContext(`2d`);if(r!=null){let i,a;t?.tensorLayout!==void 0&&t.tensorLayout===`NHWC`?(i=e.dims[2],a=e.dims[3]):(i=e.dims[3],a=e.dims[2]);let o=t?.format===void 0?`RGB`:t.format,s=t?.norm,c,l;s===void 0||s.mean===void 0?c=[255,255,255,255]:typeof s.mean==`number`?c=[s.mean,s.mean,s.mean,s.mean]:(c=[s.mean[0],s.mean[1],s.mean[2],0],s.mean[3]!==void 0&&(c[3]=s.mean[3])),s===void 0||s.bias===void 0?l=[0,0,0,0]:typeof s.bias==`number`?l=[s.bias,s.bias,s.bias,s.bias]:(l=[s.bias[0],s.bias[1],s.bias[2],0],s.bias[3]!==void 0&&(l[3]=s.bias[3]));let u=a*i,d=0,f=u,p=u*2,m=-1;o===`RGBA`?(d=0,f=u,p=u*2,m=u*3):o===`RGB`?(d=0,f=u,p=u*2):o===`RBG`&&(d=0,p=u,f=u*2);for(let t=0;t{let n=typeof document<`u`?document.createElement(`canvas`).getContext(`2d`):new OffscreenCanvas(1,1).getContext(`2d`),r;if(n!=null){let i,a,o;t?.tensorLayout!==void 0&&t.tensorLayout===`NHWC`?(i=e.dims[2],a=e.dims[1],o=e.dims[3]):(i=e.dims[3],a=e.dims[2],o=e.dims[1]);let s=t!==void 0&&t.format!==void 0?t.format:`RGB`,c=t?.norm,l,u;c===void 0||c.mean===void 0?l=[255,255,255,255]:typeof c.mean==`number`?l=[c.mean,c.mean,c.mean,c.mean]:(l=[c.mean[0],c.mean[1],c.mean[2],255],c.mean[3]!==void 0&&(l[3]=c.mean[3])),c===void 0||c.bias===void 0?u=[0,0,0,0]:typeof c.bias==`number`?u=[c.bias,c.bias,c.bias,c.bias]:(u=[c.bias[0],c.bias[1],c.bias[2],0],c.bias[3]!==void 0&&(u[3]=c.bias[3]));let d=a*i;if(t!==void 0&&(t.format!==void 0&&o===4&&t.format!==`RGBA`||o===3&&t.format!==`RGB`&&t.format!==`BGR`))throw Error(`Tensor format doesn't match input tensor dims`);let f=0,p=1,m=2,h=3,g=0,_=d,v=d*2,y=-1;s===`RGBA`?(g=0,_=d,v=d*2,y=d*3):s===`RGB`?(g=0,_=d,v=d*2):s===`RBG`&&(g=0,v=d,_=d*2),r=n.createImageData(i,a);for(let t=0;t{Ie(),R=(e,t)=>{if(e===void 0)throw Error(`Image buffer must be defined`);if(t.height===void 0||t.width===void 0)throw Error(`Image height and width must be defined`);if(t.tensorLayout===`NHWC`)throw Error(`NHWC Tensor layout is not supported yet`);let{height:n,width:r}=t,i=t.norm??{mean:255,bias:0},a,o;a=typeof i.mean==`number`?[i.mean,i.mean,i.mean,i.mean]:[i.mean[0],i.mean[1],i.mean[2],i.mean[3]??255],o=typeof i.bias==`number`?[i.bias,i.bias,i.bias,i.bias]:[i.bias[0],i.bias[1],i.bias[2],i.bias[3]??0];let s=t.format===void 0?`RGBA`:t.format,c=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:`RGB`,l=n*r,u=c===`RGBA`?new Float32Array(l*4):new Float32Array(l*3),d=4,f=0,p=1,m=2,h=3,g=0,_=l,v=l*2,y=-1;s===`RGB`&&(d=3,f=0,p=1,m=2,h=-1),c===`RGBA`?y=l*3:c===`RBG`?(g=0,v=l,_=l*2):c===`BGR`&&(v=0,_=l,g=l*2);for(let t=0;t{let n=typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement,r=typeof ImageData<`u`&&e instanceof ImageData,i=typeof ImageBitmap<`u`&&e instanceof ImageBitmap,a=typeof e==`string`,o,s=t??{},c=()=>{if(typeof document<`u`)return document.createElement(`canvas`);if(typeof OffscreenCanvas<`u`)return new OffscreenCanvas(1,1);throw Error(`Canvas is not supported`)},l=e=>typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||e instanceof OffscreenCanvas?e.getContext(`2d`):null;if(n){let n=c();n.width=e.width,n.height=e.height;let r=l(n);if(r!=null){let n=e.height,i=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(n=t.resizedHeight,i=t.resizedWidth),t!==void 0){if(s=t,t.tensorFormat!==void 0)throw Error(`Image input config format must be RGBA for HTMLImageElement`);s.tensorFormat=`RGBA`,s.height=n,s.width=i}else s.tensorFormat=`RGBA`,s.height=n,s.width=i;r.drawImage(e,0,0),o=r.getImageData(0,0,i,n).data}else throw Error(`Can not access image data`)}else if(r){let n,r;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(n=t.resizedHeight,r=t.resizedWidth):(n=e.height,r=e.width),t!==void 0&&(s=t),s.format=`RGBA`,s.height=n,s.width=r,t!==void 0){let t=c();t.width=r,t.height=n;let i=l(t);if(i!=null)i.putImageData(e,0,0),o=i.getImageData(0,0,r,n).data;else throw Error(`Can not access image data`)}else o=e.data}else if(i){if(t===void 0)throw Error(`Please provide image config with format for Imagebitmap`);let n=c();n.width=e.width,n.height=e.height;let r=l(n);if(r!=null){let t=e.height,n=e.width;return r.drawImage(e,0,0,n,t),o=r.getImageData(0,0,n,t).data,s.height=t,s.width=n,R(o,s)}else throw Error(`Can not access image data`)}else{if(a)return new Promise((t,n)=>{let r=c(),i=l(r);if(!e||!i)return n();let a=new Image;a.crossOrigin=`Anonymous`,a.src=e,a.onload=()=>{r.width=a.width,r.height=a.height,i.drawImage(a,0,0,r.width,r.height);let e=i.getImageData(0,0,r.width,r.height);s.height=r.height,s.width=r.width,t(R(e.data,s))}});throw Error(`Input data provided is not supported - aborted tensor creation`)}if(o!==void 0)return R(o,s);throw Error(`Input data provided is not supported - aborted tensor creation`)},we=(e,t)=>{let{width:n,height:r,download:i,dispose:a}=t;return new B({location:`texture`,type:`float32`,texture:e,dims:[1,r,n,4],download:i,dispose:a})},Te=(e,t)=>{let{dataType:n,dims:r,download:i,dispose:a}=t;return new B({location:`gpu-buffer`,type:n??`float32`,gpuBuffer:e,dims:r,download:i,dispose:a})},z=(e,t)=>{let{dataType:n,dims:r,download:i,dispose:a}=t;return new B({location:`ml-tensor`,type:n??`float32`,mlTensor:e,dims:r,download:i,dispose:a})},Ee=(e,t,n)=>new B({location:`cpu-pinned`,type:e,data:t,dims:n??[t.length]})}),Oe,ke,Ae,je,Me=j(()=>{Oe=new Map([[`float32`,Float32Array],[`uint8`,Uint8Array],[`int8`,Int8Array],[`uint16`,Uint16Array],[`int16`,Int16Array],[`int32`,Int32Array],[`bool`,Uint8Array],[`float64`,Float64Array],[`uint32`,Uint32Array],[`int4`,Uint8Array],[`uint4`,Uint8Array]]),ke=new Map([[Float32Array,`float32`],[Uint8Array,`uint8`],[Int8Array,`int8`],[Uint16Array,`uint16`],[Int16Array,`int16`],[Int32Array,`int32`],[Float64Array,`float64`],[Uint32Array,`uint32`]]),Ae=!1,je=()=>{if(!Ae){Ae=!0;let e=typeof BigInt64Array<`u`&&BigInt64Array.from,t=typeof BigUint64Array<`u`&&BigUint64Array.from,n=globalThis.Float16Array,r=typeof n<`u`&&n.from;e&&(Oe.set(`int64`,BigInt64Array),ke.set(BigInt64Array,`int64`)),t&&(Oe.set(`uint64`,BigUint64Array),ke.set(BigUint64Array,`uint64`)),r?(Oe.set(`float16`,n),ke.set(n,`float16`)):Oe.set(`float16`,Uint16Array)}}}),Ne,Pe,Fe=j(()=>{Ie(),Ne=e=>{let t=1;for(let n=0;n{switch(e.location){case`cpu`:return new B(e.type,e.data,t);case`cpu-pinned`:return new B({location:`cpu-pinned`,data:e.data,type:e.type,dims:t});case`texture`:return new B({location:`texture`,texture:e.texture,type:e.type,dims:t});case`gpu-buffer`:return new B({location:`gpu-buffer`,gpuBuffer:e.gpuBuffer,type:e.type,dims:t});case`ml-tensor`:return new B({location:`ml-tensor`,mlTensor:e.mlTensor,type:e.type,dims:t});default:throw Error(`tensorReshape: tensor location ${e.location} is not supported`)}}}),B,Ie=j(()=>{Se(),De(),Me(),Fe(),B=class{constructor(e,t,n){je();let r,i;if(typeof e==`object`&&`location`in e)switch(this.dataLocation=e.location,r=e.type,i=e.dims,e.location){case`cpu-pinned`:{let t=Oe.get(r);if(!t)throw TypeError(`unsupported type "${r}" to create tensor from pinned buffer`);if(!(e.data instanceof t))throw TypeError(`buffer should be of type ${t.name}`);this.cpuData=e.data;break}case`texture`:if(r!==`float32`)throw TypeError(`unsupported type "${r}" to create tensor from texture`);this.gpuTextureData=e.texture,this.downloader=e.download,this.disposer=e.dispose;break;case`gpu-buffer`:if(r!==`float32`&&r!==`float16`&&r!==`int32`&&r!==`int64`&&r!==`uint32`&&r!==`uint8`&&r!==`bool`&&r!==`uint4`&&r!==`int4`)throw TypeError(`unsupported type "${r}" to create tensor from gpu buffer`);this.gpuBufferData=e.gpuBuffer,this.downloader=e.download,this.disposer=e.dispose;break;case`ml-tensor`:if(r!==`float32`&&r!==`float16`&&r!==`int32`&&r!==`int64`&&r!==`uint32`&&r!==`uint64`&&r!==`int8`&&r!==`uint8`&&r!==`bool`&&r!==`uint4`&&r!==`int4`)throw TypeError(`unsupported type "${r}" to create tensor from MLTensor`);this.mlTensorData=e.mlTensor,this.downloader=e.download,this.disposer=e.dispose;break;default:throw Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let a,o;if(typeof e==`string`)if(r=e,o=n,e===`string`){if(!Array.isArray(t))throw TypeError(`A string tensor's data must be a string array.`);a=t}else{let n=Oe.get(e);if(n===void 0)throw TypeError(`Unsupported tensor type: ${e}.`);if(Array.isArray(t)){if(e===`float16`&&n===Uint16Array||e===`uint4`||e===`int4`)throw TypeError(`Creating a ${e} tensor from number array is not supported. Please use ${n.name} as data.`);a=e===`uint64`||e===`int64`?n.from(t,BigInt):n.from(t)}else if(t instanceof n)a=t;else if(t instanceof Uint8ClampedArray)if(e===`uint8`)a=Uint8Array.from(t);else throw TypeError(`A Uint8ClampedArray tensor's data must be type of uint8`);else if(e===`float16`&&t instanceof Uint16Array&&n!==Uint16Array)a=new globalThis.Float16Array(t.buffer,t.byteOffset,t.length);else throw TypeError(`A ${r} tensor's data must be type of ${n}`)}else if(o=t,Array.isArray(e)){if(e.length===0)throw TypeError(`Tensor type cannot be inferred from an empty array.`);let t=typeof e[0];if(t===`string`)r=`string`,a=e;else if(t===`boolean`)r=`bool`,a=Uint8Array.from(e);else throw TypeError(`Invalid element type of data array: ${t}.`)}else if(e instanceof Uint8ClampedArray)r=`uint8`,a=Uint8Array.from(e);else{let t=ke.get(e.constructor);if(t===void 0)throw TypeError(`Unsupported type for tensor data: ${e.constructor}.`);r=t,a=e}if(o===void 0)o=[a.length];else if(!Array.isArray(o))throw TypeError(`A tensor's dims must be a number array`);i=o,this.cpuData=a,this.dataLocation=`cpu`}let a=Ne(i);if(this.cpuData&&a!==this.cpuData.length&&!((r===`uint4`||r===`int4`)&&Math.ceil(a/2)===this.cpuData.length))throw Error(`Tensor's size(${a}) does not match data length(${this.cpuData.length}).`);this.type=r,this.dims=i,this.size=a}static async fromImage(e,t){return Ce(e,t)}static fromTexture(e,t){return we(e,t)}static fromGpuBuffer(e,t){return Te(e,t)}static fromMLTensor(e,t){return z(e,t)}static fromPinnedBuffer(e,t,n){return Ee(e,t,n)}toDataURL(e){return be(this,e)}toImageData(e){return xe(this,e)}get data(){if(this.ensureValid(),!this.cpuData)throw Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw Error(`The data is not stored as a WebGL texture.`);return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw Error(`The data is not stored as a WebGPU buffer.`);return this.gpuBufferData}get mlTensor(){if(this.ensureValid(),!this.mlTensorData)throw Error(`The data is not stored as a WebNN MLTensor.`);return this.mlTensorData}async getData(e){switch(this.ensureValid(),this.dataLocation){case`cpu`:case`cpu-pinned`:return this.data;case`texture`:case`gpu-buffer`:case`ml-tensor`:if(!this.downloader)throw Error(`The current tensor is not created with a specified data downloader.`);if(this.isDownloading)throw Error(`The current tensor is being downloaded.`);try{this.isDownloading=!0;let t=await this.downloader();return this.downloader=void 0,this.dataLocation=`cpu`,this.cpuData=t,e&&this.disposer&&(this.disposer(),this.disposer=void 0),t}finally{this.isDownloading=!1}default:throw Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw Error(`The current tensor is being downloaded.`);this.disposer&&=(this.disposer(),void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.mlTensorData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation=`none`}ensureValid(){if(this.dataLocation===`none`)throw Error(`The tensor is disposed.`)}reshape(e){if(this.ensureValid(),this.downloader||this.disposer)throw Error(`Cannot reshape a tensor that owns GPU resource.`);return Pe(this,e)}}}),V,Le=j(()=>{Ie(),V=B}),Re,ze,Be,Ve,He,Ue,We=j(()=>{ve(),Re=(e,t)=>{(typeof I.trace>`u`?!I.wasm.trace:!I.trace)||console.timeStamp(`${e}::ORT::${t}`)},ze=(e,t)=>{let n=Error().stack?.split(/\r\n|\r|\n/g)||[],r=!1;for(let i=0;i{(typeof I.trace>`u`?!I.wasm.trace:!I.trace)||ze(`BEGIN`,e)},Ve=e=>{(typeof I.trace>`u`?!I.wasm.trace:!I.trace)||ze(`END`,e)},He=e=>{(typeof I.trace>`u`?!I.wasm.trace:!I.trace)||console.time(`ORT::${e}`)},Ue=e=>{(typeof I.trace>`u`?!I.wasm.trace:!I.trace)||console.timeEnd(`ORT::${e}`)}}),Ge,Ke=j(()=>{P(),Le(),We(),Ge=class e{constructor(e){this.handler=e}async run(e,t,n){Be(),He(`InferenceSession.run`);let r={},i={};if(typeof e!=`object`||!e||e instanceof V||Array.isArray(e))throw TypeError(`'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.`);let a=!0;if(typeof t==`object`){if(t===null)throw TypeError(`Unexpected argument[1]: cannot be null.`);if(t instanceof V)throw TypeError(`'fetches' cannot be a Tensor`);if(Array.isArray(t)){if(t.length===0)throw TypeError(`'fetches' cannot be an empty array.`);a=!1;for(let e of t){if(typeof e!=`string`)throw TypeError(`'fetches' must be a string array or an object.`);if(this.outputNames.indexOf(e)===-1)throw RangeError(`'fetches' contains invalid output name: ${e}.`);r[e]=null}if(typeof n==`object`&&n)i=n;else if(typeof n<`u`)throw TypeError(`'options' must be an object.`)}else{let e=!1,o=Object.getOwnPropertyNames(t);for(let n of this.outputNames)if(o.indexOf(n)!==-1){let i=t[n];(i===null||i instanceof V)&&(e=!0,a=!1,r[n]=i)}if(e){if(typeof n==`object`&&n)i=n;else if(typeof n<`u`)throw TypeError(`'options' must be an object.`)}else i=t}}else if(typeof t<`u`)throw TypeError(`Unexpected argument[1]: must be 'fetches' or 'options'.`);for(let t of this.inputNames)if(typeof e[t]>`u`)throw Error(`input '${t}' is missing in 'feeds'.`);if(a)for(let e of this.outputNames)r[e]=null;let o=await this.handler.run(e,r,i),s={};for(let e in o)if(Object.hasOwnProperty.call(o,e)){let t=o[e];t instanceof V?s[e]=t:s[e]=new V(t.type,t.data,t.dims)}return Ue(`InferenceSession.run`),Ve(),s}async release(){return this.handler.dispose()}static async create(t,n,r,i){Be(),He(`InferenceSession.create`);let a,o={};if(typeof t==`string`){if(a=t,typeof n==`object`&&n)o=n;else if(typeof n<`u`)throw TypeError(`'options' must be an object.`)}else if(t instanceof Uint8Array){if(a=t,typeof n==`object`&&n)o=n;else if(typeof n<`u`)throw TypeError(`'options' must be an object.`)}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<`u`&&t instanceof SharedArrayBuffer){let e=t,s=0,c=t.byteLength;if(typeof n==`object`&&n)o=n;else if(typeof n==`number`){if(s=n,!Number.isSafeInteger(s))throw RangeError(`'byteOffset' must be an integer.`);if(s<0||s>=e.byteLength)throw RangeError(`'byteOffset' is out of range [0, ${e.byteLength}).`);if(c=t.byteLength-s,typeof r==`number`){if(c=r,!Number.isSafeInteger(c))throw RangeError(`'byteLength' must be an integer.`);if(c<=0||s+c>e.byteLength)throw RangeError(`'byteLength' is out of range (0, ${e.byteLength-s}].`);if(typeof i==`object`&&i)o=i;else if(typeof i<`u`)throw TypeError(`'options' must be an object.`)}else if(typeof r<`u`)throw TypeError(`'byteLength' must be a number.`)}else if(typeof n<`u`)throw TypeError(`'options' must be an object.`);a=new Uint8Array(e,s,c)}else throw TypeError(`Unexpected argument[0]: must be 'path' or 'buffer'.`);let[s,c]=await N(o),l=await s.createInferenceSessionHandler(a,c);return Ue(`InferenceSession.create`),Ve(),new e(l)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}}}),qe,Je=j(()=>{Ke(),qe=Ge}),Ye=j(()=>{}),Xe=j(()=>{}),Ze=j(()=>{}),Qe=j(()=>{});le({},{InferenceSession:()=>qe,TRACE:()=>Re,TRACE_EVENT_BEGIN:()=>He,TRACE_EVENT_END:()=>Ue,TRACE_FUNC_BEGIN:()=>Be,TRACE_FUNC_END:()=>Ve,Tensor:()=>V,env:()=>L,registerBackend:()=>pe});var $e=j(()=>{he(),ye(),Je(),Le(),Ye(),Xe(),We(),Ze(),Qe()}),et=j(()=>{}),tt={};le(tt,{default:()=>it});var nt,rt,it,at=j(()=>{Hn(),Mt(),Ct(),nt=`ort-wasm-proxy-worker`,rt=globalThis.self?.name===nt,rt&&(self.onmessage=e=>{let{type:t,in:n}=e.data;try{switch(t){case`init-wasm`:jt(n.wasm).then(()=>{An(n).then(()=>{postMessage({type:t})},e=>{postMessage({type:t,err:e})})},e=>{postMessage({type:t,err:e})});break;case`init-ep`:{let{epName:e,env:r}=n;jn(r,e).then(()=>{postMessage({type:t})},e=>{postMessage({type:t,err:e})});break}case`copy-from`:{let{buffer:e}=n,r=Fn(e);postMessage({type:t,out:r});break}case`create`:{let{model:e,options:r}=n;In(e,r).then(e=>{postMessage({type:t,out:e})},e=>{postMessage({type:t,err:e})});break}case`release`:Ln(n),postMessage({type:t});break;case`run`:{let{sessionId:e,inputIndices:r,inputs:i,outputIndices:a,options:o}=n;zn(e,r,i,a,Array(a.length).fill(null),o).then(e=>{e.some(e=>e[3]!==`cpu`)?postMessage({type:t,err:`Proxy does not support non-cpu tensor location.`}):postMessage({type:t,out:e},Vn([...i,...e]))},e=>{postMessage({type:t,err:e})});break}case`end-profiling`:Bn(n),postMessage({type:t});break;default:}}catch(e){postMessage({type:t,err:e})}}),it=rt?null:e=>new Worker(e??H,{type:`module`,name:nt})}),ot={};le(ot,{default:()=>ct});async function st(e={}){var t=e,n=!!globalThis.window,r=!!globalThis.WorkerGlobalScope,i=r&&self.name?.startsWith(`em-pthread`);t.mountExternalData=(e,n)=>{e.startsWith(`./`)&&(e=e.substring(2)),(t.Vc||=new Map).set(e,n)},t.unmountExternalData=()=>{delete t.Vc},globalThis.SharedArrayBuffer??new WebAssembly.Memory({initial:0,maximum:0,shared:!0}).buffer.constructor;let a=()=>{let e=e=>(...t)=>{let n=Kt;return t=e(...t),Kt==n?t:new Promise((e,t)=>{$t={resolve:e,reject:t}})};(()=>{for(let n of[`_OrtAppendExecutionProvider`,`_OrtCreateSession`,`_OrtRun`,`_OrtRunWithBinding`,`_OrtBindInput`])t[n]=e(t[n])})(),typeof jsepRunAsync<`u`&&(t._OrtRun=jsepRunAsync(t._OrtRun),t._OrtRunWithBinding=jsepRunAsync(t._OrtRunWithBinding)),a=void 0};t.asyncInit=()=>{a?.()};var o,s,c=(e,t)=>{throw t},l=import.meta.url,u=``;if(n||r){try{u=new URL(`.`,l).href}catch{}r&&(s=e=>{var t=new XMLHttpRequest;return t.open(`GET`,e,!1),t.responseType=`arraybuffer`,t.send(null),new Uint8Array(t.response)}),o=async e=>{if(ee(e))return new Promise((t,n)=>{var r=new XMLHttpRequest;r.open(`GET`,e,!0),r.responseType=`arraybuffer`,r.onload=()=>{r.status==200||r.status==0&&r.response?t(r.response):n(r.status)},r.onerror=n,r.send(null)});var t=await fetch(e,{credentials:`same-origin`});if(t.ok)return t.arrayBuffer();throw Error(t.status+` : `+t.url)}}var d,f,p,m,h,g,_=console.log.bind(console),v=console.error.bind(console),y=_,b=v,x=!1,ee=e=>e.startsWith(`file://`);function S(){R.buffer!=te.buffer&&se()}if(i){let e=function(n){try{var r=n.data,i=r.Pc;if(i===`load`){let n=[];self.onmessage=e=>n.push(e),g=()=>{postMessage({Pc:`loaded`});for(let t of n)e(t);self.onmessage=e};for(let e of r.ee)t[e]&&!t[e].proxy||(t[e]=(...t)=>{postMessage({Pc:`callHandler`,de:e,args:t})},e==`print`&&(y=t[e]),e==`printErr`&&(b=t[e]));R=r.ke,se(),f=r.le,le(),Co()}else if(i===`run`){(function(e){var t=(S(),D)[e+52>>>2>>>0];e=(S(),D)[e+56>>>2>>>0],Ui(t,t-e),Q(t)})(r.Oc),Pi(r.Oc,0,0,1,0,0),be(),It(r.Oc),C||=(di(),!0);try{Ce(r.ie,r.Xc)}catch(e){if(e!=`unwind`)throw e}}else r.target!==`setimmediate`&&(i===`checkMailbox`?C&&Lt():i&&(b(`worker: received unknown command ${i}`),b(r)))}catch(e){throw Fi(),e}};var C=!1;self.onunhandledrejection=e=>{throw e.reason||e},self.onmessage=e}var te,w,ne,T,E,D,re,O,ie,k,ae,oe=!1;function se(){var e=R.buffer;t.HEAP8=te=new Int8Array(e),ne=new Int16Array(e),t.HEAPU8=w=new Uint8Array(e),T=new Uint16Array(e),t.HEAP32=E=new Int32Array(e),t.HEAPU32=D=new Uint32Array(e),re=new Float32Array(e),O=new Float64Array(e),ie=new BigInt64Array(e),k=new BigUint64Array(e)}function ce(){oe=!0,i?g():Ia.$b()}function A(e){throw b(e=`Aborted(`+e+`)`),x=!0,e=new WebAssembly.RuntimeError(e+`. Build with -sASSERTIONS for more info.`),h?.(e),e}function j(){return{a:{f:Ee,J:Oe,k:Ne,p:Pe,l:Fe,sa:B,b:Ie,ca:V,Ja:Re,q:ze,da:We,Za:Ge,Fa:Ke,Ha:qe,_a:Je,Xa:Ye,Qa:Xe,Wa:Ze,oa:Qe,Ga:$e,Yb:et,Ya:tt,Zb:nt,db:rt,Da:dt,Tb:ft,Rb:vt,Ca:bt,M:xt,I:St,Sb:Tt,ja:Mt,Ub:Nt,Ta:Pt,Wb:Rt,Ka:Bt,Pb:Vt,ka:Ht,Sa:It,ab:Ut,U:nn,n:un,c:mt,rb:q,w:dn,L:fn,z:pn,j:mn,o:hn,sb:gn,G:_n,T:vn,h:yn,u:bn,m:xn,i:Sn,Na:Cn,Oa:Dn,Pa:On,La:kn,Ma:An,Qb:Nn,eb:Pn,cb:Ln,Y:Bn,qb:Vn,la:Hn,bb:Fn,fb:Un,$a:Wn,Xb:Gn,N:Mn,gb:Kn,X:qn,Vb:Jn,nb:mr,C:hr,ra:gr,qa:_r,pb:vr,W:yr,v:br,mb:xr,lb:Sr,kb:Cr,ob:wr,jb:Tr,ib:Er,hb:Dr,Ua:jr,Va:Mr,Ia:_e,V:X,na:Nr,Ra:Pr,ma:Ir,Cb:xo,xa:ho,Db:bo,ya:mo,F:no,e:Ha,s:Ba,x:za,B:Qa,Fb:uo,ba:lo,D:Ga,za:fo,$:go,ga:co,Gb:so,Hb:oo,Ba:ro,Aa:ao,Ib:io,wa:yo,aa:po,d:Va,A:Wa,r:Ua,Bb:So,t:qa,y:eo,H:Ka,E:Ja,K:to,R:_o,ia:Za,_:vo,Kb:Xa,Lb:Ya,Jb:$a,g:Lr,a:R,Ob:he,Eb:Rr,ha:zr,O:Br,pa:Vr,Mb:Hr,ta:Ur,Q:Wr,yb:Gr,zb:Kr,ua:qr,ea:Jr,P:Yr,Ea:Xr,va:Zr,Z:Qr,wb:$r,_b:ei,S:ti,Ab:ni,tb:ri,ub:ai,vb:oi,fa:si,xb:ci,Nb:li}}}async function le(){function e(e,n){var r=Ia=e.exports;e={};for(let[t,n]of Object.entries(r))typeof n==`function`?(r=Gt(n),e[t]=r):e[t]=n;return Ia=e,Ia=(function(){var e=Ia,t=e=>t=>e(t)>>>0,n=e=>()=>e()>>>0;return(e=Object.assign({},e)).ac=t(e.ac),e.Dc=n(e.Dc),e.Fc=t(e.Fc),e.sd=(e=>(t,n)=>e(t,n)>>>0)(e.sd),e.xd=t(e.xd),e.yd=n(e.yd),e.Cd=t(e.Cd),e})(),ve.push(Ia.jd),ui=(e=Ia).ac,di=e.bc,t._OrtInit=e.cc,t._OrtGetLastError=e.dc,t._OrtCreateSessionOptions=e.ec,t._OrtAppendExecutionProvider=e.fc,t._OrtAddFreeDimensionOverride=e.gc,t._OrtAddSessionConfigEntry=e.hc,t._OrtReleaseSessionOptions=e.ic,t._OrtCreateSession=e.jc,t._OrtReleaseSession=e.kc,t._OrtGetInputOutputCount=e.lc,t._OrtGetInputOutputMetadata=e.mc,t._OrtFree=e.nc,t._OrtCreateTensor=e.oc,t._OrtGetTensorData=e.pc,t._OrtReleaseTensor=e.qc,t._OrtCreateRunOptions=e.rc,t._OrtAddRunConfigEntry=e.sc,t._OrtReleaseRunOptions=e.tc,t._OrtCreateBinding=e.uc,t._OrtBindInput=e.vc,t._OrtBindOutput=e.wc,t._OrtClearBoundOutputs=e.xc,t._OrtReleaseBinding=e.yc,t._OrtRunWithBinding=e.zc,t._OrtRun=e.Ac,t._OrtEndProfiling=e.Bc,fi=t._OrtGetWebGpuDevice=e.Cc,pi=e.Dc,mi=t._free=e.Ec,hi=t._malloc=e.Fc,gi=t._wgpuBufferRelease=e.Gc,_i=t._wgpuCreateInstance=e.Hc,vi=e.Ic,yi=e.Jc,bi=e.Kc,xi=e.Lc,Si=e.Mc,Ci=e.Qc,wi=e._c,Ti=e.$c,Ei=e.ad,Di=e.cd,Oi=e.dd,ki=e.ed,Ai=e.fd,ji=e.gd,Mi=e.hd,Ni=e.id,Pi=e.ld,Fi=e.md,Ii=e.nd,Li=e.od,Ri=e.pd,zi=e.qd,Bi=e.rd,Vi=e.sd,Z=e.td,Hi=e.ud,Ui=e.vd,Q=e.wd,Wi=e.xd,$=e.yd,Gi=e.zd,Ki=e.Ad,qi=e.Bd,Ji=e.Cd,Yi=e.Dd,Xi=e.Ed,Zi=e.Fd,Qi=e.Gd,$i=e.Hd,ea=e.Id,ta=e.Jd,na=e.Kd,ra=e.Ld,ia=e.Md,aa=e.Nd,oa=e.Od,sa=e.Pd,ca=e.Qd,la=e.Rd,ua=e.Sd,da=e.Ud,fa=e.Vd,pa=e.Wd,ma=e.Xd,ha=e.Zd,ga=e._d,_a=e.$d,va=e.ae,ya=e.be,ba=e.ce,xa=e.qe,Sa=e.re,Ca=e.se,wa=e.te,Ta=e.ue,Ea=e.ve,Da=e.we,Oa=e.xe,ka=e.ye,Aa=e.ze,ja=e.Ae,Ma=e.$e,Na=e.af,Pa=e.bf,Fa=e.cf,f=n,Ia}var n,r=j();return t.instantiateWasm?new Promise(n=>{t.instantiateWasm(r,(t,r)=>{n(e(t,r))})}):i?e(new WebAssembly.Instance(f,j()),f):(ae??=t.locateFile?t.locateFile?t.locateFile(`ort-wasm-simd-threaded.asyncify.wasm`,u):u+`ort-wasm-simd-threaded.asyncify.wasm`:new URL(`/assets/ort-wasm-simd-threaded.asyncify-CvvOzbbq.wasm`,``+import.meta.url).href,n=await(async function(e){var t=ae;if(!d&&!ee(t))try{var n=fetch(t,{credentials:`same-origin`});return await WebAssembly.instantiateStreaming(n,e)}catch(e){b(`wasm streaming compile failed: ${e}`),b(`falling back to ArrayBuffer instantiation`)}return(async function(e,t){try{var n=await(async function(e){if(!d)try{var t=await o(e);return new Uint8Array(t)}catch{}if(e==ae&&d)e=new Uint8Array(d);else{if(!s)throw`both async and sync fetching of the wasm failed`;e=s(e)}return e})(e);return await WebAssembly.instantiate(n,t)}catch(e){b(`failed to asynchronously prepare wasm: ${e}`),A(e)}})(t,e)})(r),e(n.instance,n.module))}class ue{name=`ExitStatus`;constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var M=e=>{e.terminate(),e.onmessage=()=>{}},de=[],fe=0,pe=null,me=e=>{F.length==0&&(Se(),xe(F[0]));var t=F.pop();if(!t)return 6;I.push(t),L[e.Oc]=t,t.Oc=e.Oc;var n={Pc:`run`,ie:e.he,Xc:e.Xc,Oc:e.Oc};return t.postMessage(n,e.Zc),0},N=0,P=(e,t,...n)=>{var r,i=16*n.length,a=$(),o=Wi(i),s=o>>>3;for(r of n)typeof r==`bigint`?((S(),ie)[s++>>>0]=1n,(S(),ie)[s++>>>0]=r):((S(),ie)[s++>>>0]=0n,(S(),O)[s++>>>0]=r);return e=Ii(e,0,i,o,t),Q(a),e};function he(e){if(i)return P(0,1,e);if(p=e,!(0{if(p=e,i)throw ge(e),`unwind`;he(e)},F=[],I=[],ve=[],L={},ye=e=>{var t=e.Oc;delete L[t],F.push(e),I.splice(I.indexOf(e),1),e.Oc=0,Li(t)};function be(){ve.forEach(e=>e())}var xe=e=>new Promise(n=>{e.onmessage=r=>{var i=r.data;if(r=i.Pc,i.Wc&&i.Wc!=pi()){var a=L[i.Wc];a?a.postMessage(i,i.Zc):b(`Internal error! Worker sent a message "${r}" to target pthread ${i.Wc}, but that thread no longer exists!`)}else r===`checkMailbox`?Lt():r===`spawnThread`?me(i):r===`cleanupThread`?G(()=>{ye(L[i.je])}):r===`loaded`?(e.loaded=!0,n(e)):i.target===`setimmediate`?e.postMessage(i):r===`uncaughtException`?e.onerror(i.error):r===`callHandler`?t[i.de](...i.args):r&&b(`worker sent an unknown command ${r}`)},e.onerror=e=>{throw b(`worker sent an error! ${e.filename}:${e.lineno}: ${e.message}`),e};var r,i=[];for(r of[])t.propertyIsEnumerable(r)&&i.push(r);e.postMessage({Pc:`load`,ee:i,ke:R,le:f})});function Se(){var e=new Worker((()=>{let e=URL;return import.meta.url>`file:`&&import.meta.url<`file;`?new e(`ort.webgpu.bundle.min.mjs`,import.meta.url):new URL(import.meta.url)})(),{type:`module`,workerData:`em-pthread`,name:`em-pthread`});F.push(e)}var R,Ce=(e,t)=>{N=0,e=Xi(e,t),0-9007199254740992>e||9007199254740992>>=0);return(S(),te)[t.Rc+12>>>0]==0&&(ke(t,!0),Te--),Ae(t,!1),we.push(t),Ji(e)}var De=0,Oe=()=>{Z(0,0);var e=we.pop();Gi(e.Yc),De=0};function ke(e,t){t=+!!t,(S(),te)[e.Rc+12>>>0]=t}function Ae(e,t){t=+!!t,(S(),te)[e.Rc+13>>>0]=t}class je{constructor(e){this.Yc=e,this.Rc=e-24}}var Me=e=>{var t=De;if(!t)return Hi(0),0;var n=new je(t);(S(),D)[n.Rc+16>>>2>>>0]=t;var r=(S(),D)[n.Rc+4>>>2>>>0];if(!r)return Hi(0),t;for(var i of e){if(i===0||i===r)break;if(qi(i,r,n.Rc+16))return Hi(i),t}return Hi(r),t};function Ne(){return Me([])}function Pe(e){return Me([e>>>0])}function Fe(e,t,n,r){return Me([e>>>0,t>>>0,n>>>0,r>>>0])}var B=()=>{var e=we.pop();e||A(`no exception to throw`);var t=e.Yc;throw(S(),te)[e.Rc+13>>>0]==0&&(we.push(e),Ae(e,!0),ke(e,!1),Te++),Ki(t),De=t};function Ie(e,t,n){var r=new je(e>>>=0);throw t>>>=0,n>>>=0,(S(),D)[r.Rc+16>>>2>>>0]=0,(S(),D)[r.Rc+4>>>2>>>0]=t,(S(),D)[r.Rc+8>>>2>>>0]=n,Ki(e),Te++,De=e}var V=()=>Te;function Le(e,t,n,r){return i?P(2,1,e,t,n,r):Re(e,t,n,r)}function Re(e,t,n,r){if(e>>>=0,t>>>=0,n>>>=0,r>>>=0,!globalThis.SharedArrayBuffer)return 6;var a=[];return i&&a.length===0?Le(e,t,n,r):(e={he:n,Oc:e,Xc:r,Zc:a},i?(e.Pc=`spawnThread`,postMessage(e,a),0):me(e))}function ze(e){throw De||=e>>>0,De}var Be=globalThis.TextDecoder&&new TextDecoder,Ve=(e,t,n,r)=>{if(n=t+n,r)return n;for(;e[t]&&!(t>=n);)++t;return t},He=(e,t=0,n,r)=>{if(16<(n=Ve(e,t>>>=0,n,r))-t&&e.buffer&&Be)return Be.decode(e.buffer instanceof ArrayBuffer?e.subarray(t,n):e.slice(t,n));for(r=``;t(i=(240&i)==224?(15&i)<<12|a<<6|o:(7&i)<<18|a<<12|o<<6|63&e[t++])?r+=String.fromCharCode(i):(i-=65536,r+=String.fromCharCode(55296|i>>10,56320|1023&i))}}else r+=String.fromCharCode(i)}return r},Ue=(e,t,n)=>(e>>>=0)?He((S(),w),e,t,n):``;function We(e,t,n){return i?P(3,1,e,t,n):0}function Ge(e,t){if(i)return P(4,1,e,t)}function Ke(e,t){if(i)return P(5,1,e,t)}function qe(e,t,n){if(i)return P(6,1,e,t,n)}function Je(e,t,n){return i?P(7,1,e,t,n):0}function Ye(e,t){if(i)return P(8,1,e,t)}function Xe(e,t,n){if(i)return P(9,1,e,t,n)}function Ze(e,t,n,r){if(i)return P(10,1,e,t,n,r)}function Qe(e,t,n,r){if(i)return P(11,1,e,t,n,r)}function $e(e,t,n,r){if(i)return P(12,1,e,t,n,r)}function et(e){if(i)return P(13,1,e)}function tt(e,t){if(i)return P(14,1,e,t)}function nt(e,t,n){if(i)return P(15,1,e,t,n)}var rt=()=>A(``),it=e=>{e>>>=0;for(var t=``;;){var n=(S(),w)[e++>>>0];if(!n)return t;t+=String.fromCharCode(n)}},at={},ot={},st={},ct=class extends Error{constructor(e){super(e),this.name=`BindingError`}};function lt(e,t,n={}){return(function(e,t,n={}){var r=t.name;if(!e)throw new ct(`type "${r}" must have a positive integer typeid pointer`);if(ot.hasOwnProperty(e)){if(n.fe)return;throw new ct(`Cannot register type '${r}' twice`)}ot[e]=t,delete st[e],at.hasOwnProperty(e)&&(t=at[e],delete at[e],t.forEach(e=>e()))})(e,t,n)}var ut=(e,t,n)=>{switch(t){case 1:return n?e=>(S(),te)[e>>>0]:e=>(S(),w)[e>>>0];case 2:return n?e=>(S(),ne)[e>>>1>>>0]:e=>(S(),T)[e>>>1>>>0];case 4:return n?e=>(S(),E)[e>>>2>>>0]:e=>(S(),D)[e>>>2>>>0];case 8:return n?e=>(S(),ie)[e>>>3>>>0]:e=>(S(),k)[e>>>3>>>0];default:throw TypeError(`invalid integer width (${t}): ${e}`)}};function dt(e,t,n,r,i){e>>>=0,n>>>=0,t=it(t>>>0);let a=e=>e;if(r=r===0n){let e=8*n;a=t=>BigInt.asUintN(e,t),i=a(i)}lt(e,{name:t,Nc:a,Tc:(e,t)=>(typeof t==`number`&&(t=BigInt(t)),t),Sc:ut(t,n,!r),Uc:null})}function ft(e,t,n,r){lt(e>>>=0,{name:t=it(t>>>0),Nc:function(e){return!!e},Tc:function(e,t){return t?n:r},Sc:function(e){return this.Nc((S(),w)[e>>>0])},Uc:null})}var pt=[],H=[0,1,,1,null,1,!0,1,!1,1];function mt(e){9<(e>>>=0)&&--H[e+1]===0&&(H[e]=void 0,pt.push(e))}var U=e=>{if(!e)throw new ct(`Cannot use deleted val. handle = ${e}`);return H[e]},ht=e=>{switch(e){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let t=pt.pop()||H.length;return H[t]=e,H[t+1]=1,t}};function gt(e){return this.Nc((S(),D)[e>>>2>>>0])}var _t={name:`emscripten::val`,Nc:e=>{var t=U(e);return mt(e),t},Tc:(e,t)=>ht(t),Sc:gt,Uc:null};function vt(e){return lt(e>>>0,_t)}var yt=(e,t)=>{switch(t){case 4:return function(e){return this.Nc((S(),re)[e>>>2>>>0])};case 8:return function(e){return this.Nc((S(),O)[e>>>3>>>0])};default:throw TypeError(`invalid float width (${t}): ${e}`)}};function bt(e,t,n){n>>>=0,lt(e>>>=0,{name:t=it(t>>>0),Nc:e=>e,Tc:(e,t)=>t,Sc:yt(t,n),Uc:null})}function xt(e,t,n,r,i){e>>>=0,n>>>=0,t=it(t>>>0);let a=e=>e;if(r===0){var o=32-8*n;a=e=>e<>>o,i=a(i)}lt(e,{name:t,Nc:a,Tc:(e,t)=>t,Sc:ut(t,n,r!==0),Uc:null})}function St(e,t,n){function r(e){var t=(S(),D)[e>>>2>>>0];return e=(S(),D)[e+4>>>2>>>0],new i((S(),te).buffer,e,t)}var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][t];lt(e>>>=0,{name:n=it(n>>>0),Nc:r,Sc:r},{fe:!0})}var Ct=(e,t,n)=>{var r=(S(),w);if(t>>>=0,0=o){if(t>=n)break;r[t++>>>0]=o}else if(2047>=o){if(t+1>=n)break;r[t++>>>0]=192|o>>6,r[t++>>>0]=128|63&o}else if(65535>=o){if(t+2>=n)break;r[t++>>>0]=224|o>>12,r[t++>>>0]=128|o>>6&63,r[t++>>>0]=128|63&o}else{if(t+3>=n)break;r[t++>>>0]=240|o>>18,r[t++>>>0]=128|o>>12&63,r[t++>>>0]=128|o>>6&63,r[t++>>>0]=128|63&o,a++}}r[t>>>0]=0,e=t-i}else e=0;return e},wt=e=>{for(var t=0,n=0;n=r?t++:2047>=r?t+=2:55296<=r&&57343>=r?(t+=4,++n):t+=3}return t};function Tt(e,t){lt(e>>>=0,{name:t=it(t>>>0),Nc(e){var t=(S(),D)[e>>>2>>>0];return t=Ue(e+4,t,!0),mi(e),t},Tc(e,t){t instanceof ArrayBuffer&&(t=new Uint8Array(t));var n=typeof t==`string`;if(!(n||ArrayBuffer.isView(t)&&t.BYTES_PER_ELEMENT==1))throw new ct(`Cannot pass non-string to std::string`);var r=n?wt(t):t.length,i=hi(4+r+1),a=i+4;return(S(),D)[i>>>2>>>0]=r,n?Ct(t,a,r+1):(S(),w).set(t,a>>>0),e!==null&&e.push(mi,i),i},Sc:gt,Uc(e){mi(e)}})}var Et=globalThis.TextDecoder?new TextDecoder(`utf-16le`):void 0,Dt=(e,t,n)=>{if(e>>>=1,16<(t=Ve((S(),T),e,t/2,n))-e&&Et)return Et.decode((S(),T).slice(e,t));for(n=``;e>>0];n+=String.fromCharCode(r)}return n},Ot=(e,t,n)=>{if(n??=2147483647,2>n)return 0;var r=t;n=(n-=2)<2*e.length?n/2:e.length;for(var i=0;i>>1>>>0]=a,t+=2}return(S(),ne)[t>>>1>>>0]=0,t-r},kt=e=>2*e.length,At=(e,t,n)=>{var r=``;e>>>=2;for(var i=0;!(i>=t/4);i++){var a=(S(),D)[e+i>>>0];if(!a&&!n)break;r+=String.fromCodePoint(a)}return r},jt=(e,t,n)=>{if(t>>>=0,n??=2147483647,4>n)return 0;var r=t;n=r+n-4;for(var i=0;i>>2>>>0]=a,(t+=4)+4>n)break}return(S(),E)[t>>>2>>>0]=0,t-r},W=e=>{for(var t=0,n=0;n>>=0,t>>>=0,n=it(n>>>=0),t===2)var r=Dt,i=Ot,a=kt;else r=At,i=jt,a=W;lt(e,{name:n,Nc:e=>{var n=(S(),D)[e>>>2>>>0];return n=r(e+4,n*t,!0),mi(e),n},Tc:(e,r)=>{if(typeof r!=`string`)throw new ct(`Cannot pass non-string to C++ string type ${n}`);var o=a(r),s=hi(4+o+t);return(S(),D)[s>>>2>>>0]=o/t,i(r,s+4,o+t),e!==null&&e.push(mi,s),s},Sc:gt,Uc(e){mi(e)}})}function Nt(e,t){lt(e>>>=0,{ge:!0,name:t=it(t>>>0),Nc:()=>{},Tc:()=>{}})}function Pt(e){Pi(e>>>0,!r,1,!n,131072,!1),be()}var G=e=>{if(!x)try{if(e(),!(0Number((navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)||[])[2]);function It(e){e>>>=0,Ft||(Atomics.waitAsync((S(),E),e>>>2,e).value.then(Lt),e+=128,Atomics.store((S(),E),e>>>2,1))}var Lt=()=>G(()=>{var e=pi();e&&(It(e),Bi())});function Rt(e,t){(e>>>=0)==t>>>0?setTimeout(Lt):i?postMessage({Wc:e,Pc:`checkMailbox`}):(e=L[e])&&e.postMessage({Pc:`checkMailbox`})}var zt=[];function Bt(e,t,n,r,i){for(t>>>=0,i>>>=0,zt.length=0,n=i>>>3,r=i+r>>>3;n>>0]?(S(),ie)[n++>>>0]:(S(),O)[n++>>>0];zt.push(a)}return(t?Ra[t]:La[e])(...zt)}var Vt=()=>{N=0};function Ht(e){e>>>=0,i?postMessage({Pc:`cleanupThread`,je:e}):ye(L[e])}function Ut(e){}var Wt=e=>{try{e()}catch(e){A(e)}};function Gt(e){var t=(...t)=>{Jt.push(e);try{return e(...t)}finally{x||(Jt.pop(),Kt&&K===1&&Jt.length===0&&(K=0,N+=1,Wt(Na),typeof Fibers<`u`&&Fibers.De()))}};return Zt.set(e,t),t}var K=0,Kt=null,qt=0,Jt=[],Yt=new Map,Xt=new Map,Zt=new Map,Qt=0,$t=null,en=[],tn=e=>(function(e){if(!x){if(K===0){var t=!1,n=!1;e((e=0)=>{if(!x&&(qt=e,t=!0,n)){K=2,Wt(()=>Pa(Kt)),typeof MainLoop<`u`&&MainLoop.Yd&&MainLoop.resume(),e=!1;try{var r=(function(){var e=(S(),E)[Kt+8>>>2>>>0];return e=Xt.get(e),e=Zt.get(e),--N,e()})()}catch(t){r=t,e=!0}var i=!1;if(!Kt){var a=$t;a&&($t=null,(e?a.reject:a.resolve)(r),i=!0)}if(e&&!i)throw r}}),n=!0,t||(K=1,Kt=(function(){var e=hi(65548),t=e+12;if((S(),D)[e>>>2>>>0]=t,(S(),D)[e+4>>>2>>>0]=t+65536,t=Jt[0],!Yt.has(t)){var n=Qt++;Yt.set(t,n),Xt.set(n,t)}return t=Yt.get(t),(S(),E)[e+8>>>2>>>0]=t,e})(),typeof MainLoop<`u`&&MainLoop.Yd&&MainLoop.pause(),Wt(()=>Ma(Kt)))}else K===2?(K=0,Wt(Fa),mi(Kt),Kt=null,en.forEach(G)):A(`invalid state: ${K}`);return qt}})(t=>{e().then(t)});function nn(e){return e>>>=0,tn(async()=>ht(await U(e)))}var rn=[],an=e=>{var t=rn.length;return rn.push(e),t},on=(e,t)=>{for(var n=Array(e),r=0;r>>2>>>0],o=ot[a];if(o===void 0)throw e=`parameter ${r}`,a=ui(a),t=it(a),mi(a),new ct(`${e} has unknown type ${t}`);n[i]=o}return n},sn=(e,t,n)=>{var r=[];return e=e(r,n),r.length&&((S(),D)[t>>>2>>>0]=ht(r)),e},cn={},ln=e=>{var t=cn[e];return t===void 0?it(e):t};function un(e,t,n){var[r,...i]=on(e,t>>>0);t=r.Tc.bind(r);var a=i.map(e=>e.Sc.bind(e));e--;var o={toValue:U};switch(e=a.map((e,t)=>{var n=`argFromPtr${t}`;return o[n]=e,`${n}(args${t?`+`+8*t:``})`}),n){case 0:var s=`toValue(handle)`;break;case 2:s=`new (toValue(handle))`;break;case 3:s=``;break;case 1:o.getStringOrSymbol=ln,s=`toValue(handle)[getStringOrSymbol(methodName)]`}return s+=`(${e})`,r.ge||(o.toReturnWire=t,o.emval_returnValue=sn,s=`return emval_returnValue(toReturnWire, destructorsRef, ${s})`),s=`return function (handle, methodName, destructorsRef, args) { + ${s} + }`,n=Function(Object.keys(o),s)(...Object.values(o)),s=`methodCaller<(${i.map(e=>e.name)}) => ${r.name}>`,an(Object.defineProperty(n,"name",{value:s}))}function q(e,t){return t>>>=0,(e=U(e>>>0))==U(t)}function dn(e){return(e>>>=0)?(e=ln(e),ht(globalThis[e])):ht(globalThis)}function fn(e){return e=ln(e>>>0),ht(t[e])}function pn(e,t){return t>>>=0,e=U(e>>>0),t=U(t),ht(e[t])}function mn(e){9<(e>>>=0)&&(H[e+1]+=1)}function hn(e,t,n,r,i){return rn[e>>>0](t>>>0,n>>>0,r>>>0,i>>>0)}function gn(e,t,n,r,i){return hn(e>>>0,t>>>0,n>>>0,r>>>0,i>>>0)}function _n(){return ht([])}function vn(e){e=U(e>>>0);for(var t=Array(e.length),n=0;n>>0))}function bn(){return ht({})}function xn(e){for(var t=U(e>>>=0);t.length;){var n=t.pop();t.pop()(n)}mt(e)}function Sn(e,t,n){t>>>=0,n>>>=0,e=U(e>>>0),t=U(t),n=U(n),e[t]=n}function Cn(e,t){e=z(e),t>>>=0,e=new Date(1e3*e),(S(),E)[t>>>2>>>0]=e.getUTCSeconds(),(S(),E)[t+4>>>2>>>0]=e.getUTCMinutes(),(S(),E)[t+8>>>2>>>0]=e.getUTCHours(),(S(),E)[t+12>>>2>>>0]=e.getUTCDate(),(S(),E)[t+16>>>2>>>0]=e.getUTCMonth(),(S(),E)[t+20>>>2>>>0]=e.getUTCFullYear()-1900,(S(),E)[t+24>>>2>>>0]=e.getUTCDay(),e=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,(S(),E)[t+28>>>2>>>0]=e}var wn=e=>e%4==0&&(e%100!=0||e%400==0),Tn=[0,31,60,91,121,152,182,213,244,274,305,335],En=[0,31,59,90,120,151,181,212,243,273,304,334];function Dn(e,t){e=z(e),t>>>=0,e=new Date(1e3*e),(S(),E)[t>>>2>>>0]=e.getSeconds(),(S(),E)[t+4>>>2>>>0]=e.getMinutes(),(S(),E)[t+8>>>2>>>0]=e.getHours(),(S(),E)[t+12>>>2>>>0]=e.getDate(),(S(),E)[t+16>>>2>>>0]=e.getMonth(),(S(),E)[t+20>>>2>>>0]=e.getFullYear()-1900,(S(),E)[t+24>>>2>>>0]=e.getDay();var n=(wn(e.getFullYear())?Tn:En)[e.getMonth()]+e.getDate()-1|0;(S(),E)[t+28>>>2>>>0]=n,(S(),E)[t+36>>>2>>>0]=-60*e.getTimezoneOffset(),n=new Date(e.getFullYear(),6,1).getTimezoneOffset();var r=new Date(e.getFullYear(),0,1).getTimezoneOffset();e=0|(n!=r&&e.getTimezoneOffset()==Math.min(r,n)),(S(),E)[t+32>>>2>>>0]=e}function On(e){e>>>=0;var t=new Date((S(),E)[e+20>>>2>>>0]+1900,(S(),E)[e+16>>>2>>>0],(S(),E)[e+12>>>2>>>0],(S(),E)[e+8>>>2>>>0],(S(),E)[e+4>>>2>>>0],(S(),E)[e>>>2>>>0],0),n=(S(),E)[e+32>>>2>>>0],r=t.getTimezoneOffset(),i=new Date(t.getFullYear(),6,1).getTimezoneOffset(),a=new Date(t.getFullYear(),0,1).getTimezoneOffset(),o=Math.min(a,i);return 0>n?(S(),E)[e+32>>>2>>>0]=+(i!=a&&o==r):0>>2>>>0]=t.getDay(),n=(wn(t.getFullYear())?Tn:En)[t.getMonth()]+t.getDate()-1|0,(S(),E)[e+28>>>2>>>0]=n,(S(),E)[e>>>2>>>0]=t.getSeconds(),(S(),E)[e+4>>>2>>>0]=t.getMinutes(),(S(),E)[e+8>>>2>>>0]=t.getHours(),(S(),E)[e+12>>>2>>>0]=t.getDate(),(S(),E)[e+16>>>2>>>0]=t.getMonth(),(S(),E)[e+20>>>2>>>0]=t.getYear(),e=t.getTime(),BigInt(isNaN(e)?-1:e/1e3)}function kn(e,t,n,r,a,o,s){return i?P(16,1,e,t,n,r,a,o,s):-52}function An(e,t,n,r,a,o){if(i)return P(17,1,e,t,n,r,a,o)}var jn={},Mn=()=>performance.timeOrigin+performance.now();function Nn(e,t){return i?P(18,1,e,t):(jn[e]&&(clearTimeout(jn[e].id),delete jn[e]),t&&(jn[e]={id:setTimeout(()=>{delete jn[e],G(()=>zi(e,performance.timeOrigin+performance.now()))},t),Ce:t}),0)}function Pn(e,t,n,r){e>>>=0,t>>>=0,n>>>=0,r>>>=0;var i=new Date().getFullYear(),a=new Date(i,0,1).getTimezoneOffset();i=new Date(i,6,1).getTimezoneOffset();var o=Math.max(a,i);(S(),D)[e>>>2>>>0]=60*o,(S(),E)[t>>>2>>>0]=+(a!=i),e=(t=e=>{var t=Math.abs(e);return`UTC${0<=e?`-`:`+`}${String(Math.floor(t/60)).padStart(2,`0`)}${String(t%60).padStart(2,`0`)}`})(a),t=t(i),iDate.now(),In=1;function Ln(e,t,n){if(n>>>=0,!(0<=e&&3>=e))return 28;if(e===0)e=Date.now();else{if(!In)return 52;e=performance.timeOrigin+performance.now()}return e=Math.round(1e6*e),(S(),ie)[n>>>3>>>0]=BigInt(e),0}var Rn=[],zn=(e,t)=>{Rn.length=0;for(var n;n=(S(),w)[e++>>>0];){var r=n!=105;t+=(r&=n!=112)&&t%8?4:0,Rn.push(n==112?(S(),D)[t>>>2>>>0]:n==106?(S(),ie)[t>>>3>>>0]:n==105?(S(),E)[t>>>2>>>0]:(S(),O)[t>>>3>>>0]),t+=r?8:4}return Rn};function Bn(e,t,n){return e>>>=0,t=zn(t>>>0,n>>>0),Ra[e](...t)}function Vn(e,t,n){return e>>>=0,t=zn(t>>>0,n>>>0),Ra[e](...t)}var Hn=()=>{};function Un(e,t){return b(Ue(e>>>0,t>>>0))}var Wn=()=>{throw N+=1,`unwind`};function Gn(){return 4294901760}var Kn=()=>1,qn=()=>navigator.hardwareConcurrency;function Jn(e){e>>>=0;var t=(S(),w).length;if(e<=t||4294901760=n;n*=2){var r=t*(1+.2/n);r=Math.min(r,e+100663296);e:{r=(Math.min(4294901760,65536*Math.ceil(Math.max(e,r)/65536))-R.buffer.byteLength+65535)/65536|0;try{R.grow(r),se();var i=1;break e}catch{}i=void 0}if(i)return!0}return!1}var Yn=e=>{var t=wt(e)+1,n=Wi(t);return Ct(e,n,t),n},Xn=(e,t)=>{(S(),D)[e>>>2>>>0]=t;var n=(S(),D)[e>>>2>>>0];(S(),D)[e+4>>>2>>>0]=(t-n)/4294967296},Zn=e=>(S(),D)[e>>>2>>>0]+4294967296*(S(),E)[e+4>>>2>>>0],J=[],Qn=(e,t)=>{J[e>>>0]=t},$n=[],er=[],tr=(e,t)=>{er[e]=new Promise(n=>t.finally(()=>n(e)))},Y=e=>{if(e)return J[e>>>0]},nr=(e,t)=>{for(e=(S(),D)[e>>>2>>>0];e;e=(S(),D)[e>>>2>>>0])t[(S(),E)[e+4>>>2>>>0]](e)},rr=(e,t,n)=>{(S(),D)[e>>>2>>>0]=t,(S(),D)[e+4>>>2>>>0]=n},ir=e=>{var t=(S(),D)[e>>>2>>>0];return e=(S(),D)[e+4>>>2>>>0],Ue(t,e)},ar=e=>{var t=(S(),D)[e>>>2>>>0];return e=(S(),D)[e+4>>>2>>>0],t?Ue(t,e):e===0?``:void 0},or=e=>{var t=ar(e+4),n=(n=(S(),D)[e+12>>>2>>>0])?Y(n):`auto`;if(e+=16){var r=Y((S(),D)[e+4>>>2>>>0]),i=(S(),D)[e+16>>>2>>>0],a=(S(),D)[e+20>>>2>>>0];if(i){for(var o={},s=0;s>>3>>>0]}i=o}else i=void 0;e={module:r,constants:i,entryPoint:ar(e+8)}}else e=void 0;return{label:t,layout:n,compute:e}},sr=(e,t)=>{function n(n,r){n=e[n],(S(),D)[t+r>>>2>>>0]=n}n(`maxTextureDimension1D`,4),n(`maxTextureDimension2D`,8),n(`maxTextureDimension3D`,12),n(`maxTextureArrayLayers`,16),n(`maxBindGroups`,20),n(`maxBindGroupsPlusVertexBuffers`,24),n(`maxBindingsPerBindGroup`,28),n(`maxDynamicUniformBuffersPerPipelineLayout`,32),n(`maxDynamicStorageBuffersPerPipelineLayout`,36),n(`maxSampledTexturesPerShaderStage`,40),n(`maxSamplersPerShaderStage`,44),n(`maxStorageBuffersPerShaderStage`,48),n(`maxStorageTexturesPerShaderStage`,52),n(`maxUniformBuffersPerShaderStage`,56),n(`minUniformBufferOffsetAlignment`,80),n(`minStorageBufferOffsetAlignment`,84),Xn(t+64,e.maxUniformBufferBindingSize),Xn(t+72,e.maxStorageBufferBindingSize),n(`maxVertexBuffers`,88),Xn(t+96,e.maxBufferSize),n(`maxVertexAttributes`,104),n(`maxVertexBufferArrayStride`,108),n(`maxInterStageShaderVariables`,112),n(`maxColorAttachments`,116),n(`maxColorAttachmentBytesPerSample`,120),n(`maxComputeWorkgroupStorageSize`,124),n(`maxComputeInvocationsPerWorkgroup`,128),n(`maxComputeWorkgroupSizeX`,132),n(`maxComputeWorkgroupSizeY`,136),n(`maxComputeWorkgroupSizeZ`,140),n(`maxComputeWorkgroupsPerDimension`,144),e.Be!==void 0&&n(`maxImmediateSize`,148)},cr=[,`validation`,`out-of-memory`,`internal`],lr=[,`compatibility`,`core`],ur={1:`core-features-and-limits`,2:`depth-clip-control`,3:`depth32float-stencil8`,4:`texture-compression-bc`,5:`texture-compression-bc-sliced-3d`,6:`texture-compression-etc2`,7:`texture-compression-astc`,8:`texture-compression-astc-sliced-3d`,9:`timestamp-query`,10:`indirect-first-instance`,11:`shader-f16`,12:`rg11b10ufloat-renderable`,13:`bgra8unorm-storage`,14:`float32-filterable`,15:`float32-blendable`,16:`clip-distances`,17:`dual-source-blending`,18:`subgroups`,19:`texture-formats-tier1`,20:`texture-formats-tier2`,21:`primitive-index`,22:`texture-component-swizzle`,327692:`chromium-experimental-unorm16-texture-formats`,327729:`chromium-experimental-multi-draw-indirect`},dr=[,`low-power`,`high-performance`],fr=[,`occlusion`,`timestamp`],pr={undefined:1,unknown:1,destroyed:2};function mr(e,t,n,r,i,a){t=z(t),n=z(n),r>>>=0,i>>>=0,a>>>=0;var o=Y(e>>>0);if(e={},a){var s=(S(),D)[a+12>>>2>>>0];if(s){var c=(S(),D)[a+16>>>2>>>0];e.requiredFeatures=Array.from((S(),D).subarray(c>>>2>>>0,c+4*s>>>2>>>0),e=>ur[e])}var l=(S(),D)[a+20>>>2>>>0];if(l){let t=function(e,t,n=!1){t=l+t,(t=(S(),D)[t>>>2>>>0])==4294967295||n&&t==0||(u[e]=t)},n=function(e,t){t=l+t;var n=(S(),D)[t>>>2>>>0],r=(S(),D)[t+4>>>2>>>0];n==4294967295&&r==4294967295||(u[e]=Zn(t))};var u={};t(`maxTextureDimension1D`,4),t(`maxTextureDimension2D`,8),t(`maxTextureDimension3D`,12),t(`maxTextureArrayLayers`,16),t(`maxBindGroups`,20),t(`maxBindGroupsPlusVertexBuffers`,24),t(`maxDynamicUniformBuffersPerPipelineLayout`,32),t(`maxDynamicStorageBuffersPerPipelineLayout`,36),t(`maxSampledTexturesPerShaderStage`,40),t(`maxSamplersPerShaderStage`,44),t(`maxStorageBuffersPerShaderStage`,48),t(`maxStorageTexturesPerShaderStage`,52),t(`maxUniformBuffersPerShaderStage`,56),t(`minUniformBufferOffsetAlignment`,80),t(`minStorageBufferOffsetAlignment`,84),n(`maxUniformBufferBindingSize`,64),n(`maxStorageBufferBindingSize`,72),t(`maxVertexBuffers`,88),n(`maxBufferSize`,96),t(`maxVertexAttributes`,104),t(`maxVertexBufferArrayStride`,108),t(`maxInterStageShaderVariables`,112),t(`maxColorAttachments`,116),t(`maxColorAttachmentBytesPerSample`,120),t(`maxComputeWorkgroupStorageSize`,124),t(`maxComputeInvocationsPerWorkgroup`,128),t(`maxComputeWorkgroupSizeX`,132),t(`maxComputeWorkgroupSizeY`,136),t(`maxComputeWorkgroupSizeZ`,140),t(`maxComputeWorkgroupsPerDimension`,144),t(`maxImmediateSize`,148,!0),e.requiredLimits=u}(s=(S(),D)[a+24>>>2>>>0])&&(s={label:ar(s+4)},e.defaultQueue=s),e.label=ar(a+4)}N+=1,tr(t,o.requestDevice(e).then(e=>{--N,G(()=>{J[i>>>0]=e.queue,J[r>>>0]=e,N+=1,tr(n,e.lost.then(t=>{G(()=>{e.onuncapturederror=()=>{};var r=$(),i=Yn(t.message);Oi(n,pr[t.reason],i),Q(r)}),--N})),e.onuncapturederror=e=>{var t=5;e.error instanceof GPUValidationError?t=2:e.error instanceof GPUOutOfMemoryError?t=3:e.error instanceof GPUInternalError&&(t=4);var n=$();e=Yn(e.error.message),Ni(r,t,e),Q(n)},`adapterInfo`in e||(e.adapterInfo=o.info),Mi(t,1,r,0)})},e=>{--N,G(()=>{var i=$(),a=Yn(e.message);Mi(t,3,r,a),n&&Oi(n,4,a),Q(i)})}))}function hr(e){var t=Y(e>>>=0),n=$n[e];if(n){for(var r=0;r>>=0;var r=Y(e>>>=0);n==4294967295&&(n=void 0);try{var i=r.getMappedRange(t>>>0,n)}catch{return 0}var a=Vi(16,i.byteLength);return(S(),w).set(new Uint8Array(i),a>>>0),$n[e].push(()=>mi(a)),a}function _r(e,t,n){n>>>=0;var r=Y(e>>>=0);n==4294967295&&(n=void 0);try{var i=r.getMappedRange(t>>>0,n)}catch{return 0}var a=Vi(16,i.byteLength);return(S(),w).fill(0,a,i.byteLength),$n[e].push(()=>{new Uint8Array(i).set((S(),w).subarray(a>>>0,a+i.byteLength>>>0)),mi(a)}),a}function vr(e,t,n,r,i){e>>>=0,t=z(t),n=z(n),i>>>=0;var a=Y(e);$n[e]=[],i==4294967295&&(i=void 0),N+=1,tr(t,a.mapAsync(n,r>>>0,i).then(()=>{--N,G(()=>{ki(t,1,0)})},n=>{--N,G(()=>{$();var r=Yn(n.message);ki(t,n.name===`AbortError`?4:n.name===`OperationError`?3:0,r),delete $n[e]})}))}function yr(e){var t=Y(e>>>=0),n=$n[e];if(n){for(var r=0;r>>0]}function xr(e,t,n){e>>>=0,t>>>=0,n>>>=0;var r=!!(S(),D)[t+32>>>2>>>0];t={label:ar(t+4),usage:(S(),D)[t+16>>>2>>>0],size:Zn(t+24),mappedAtCreation:r},e=Y(e);try{var i=e.createBuffer(t)}catch{return!1}return J[n>>>0]=i,r&&($n[n]=[]),!0}function Sr(e,t,n,r){e>>>=0,t=z(t),r>>>=0,n=or(n>>>0),e=Y(e),N+=1,tr(t,e.createComputePipelineAsync(n).then(e=>{--N,G(()=>{J[r>>>0]=e,Di(t,1,r,0)})},e=>{--N,G(()=>{var n=$(),i=Yn(e.message);Di(t,e.reason===`validation`?3:e.reason===`internal`?4:0,r,i),Q(n)})}))}function Cr(e,t,n){e>>>=0,t>>>=0,n>>>=0;var r=(S(),D)[t>>>2>>>0],i=(S(),E)[r+4>>>2>>>0];t={label:ar(t+4),code:``},i===2&&(t.code=ir(r+8)),e=Y(e).createShaderModule(t),J[n>>>0]=e}var wr=e=>{(e=Y(e)).onuncapturederror=null,e.destroy()};function Tr(e,t){t=z(t),e=Y(e>>>0),N+=1,tr(t,e.popErrorScope().then(e=>{--N,G(()=>{var n=5;e?e instanceof GPUValidationError?n=2:e instanceof GPUOutOfMemoryError?n=3:e instanceof GPUInternalError&&(n=4):n=1;var r=$(),i=e?Yn(e.message):0;Ai(t,1,n,i),Q(r)})},e=>{--N,G(()=>{var n=$(),r=Yn(e.message);Ai(t,1,5,r),Q(n)})}))}function Er(e,t,n,r){if(t=z(t),r>>>=0,n>>>=0){var i={featureLevel:lr[(S(),E)[n+4>>>2>>>0]],powerPreference:dr[(S(),E)[n+8>>>2>>>0]],forceFallbackAdapter:!!(S(),D)[n+12>>>2>>>0]};(e=(S(),D)[n>>>2>>>0])!==0&&(S(),i.Fe=!!(S(),D)[e+8>>>2>>>0])}`gpu`in navigator?(N+=1,tr(t,navigator.gpu.requestAdapter(i).then(e=>{--N,G(()=>{if(e)J[r>>>0]=e,ji(t,1,r,0);else{var n=$(),i=Yn(`WebGPU not available on this browser (requestAdapter returned null)`);ji(t,3,r,i),Q(n)}})},e=>{--N,G(()=>{var n=$(),i=Yn(e.message);ji(t,4,r,i),Q(n)})}))):(i=$(),e=Yn(`WebGPU not available on this browser (navigator.gpu is not available)`),ji(t,3,r,e),Q(i))}function Dr(e,t,n){return e>>>=0,t>>>=0,n>>>=0,tn(async()=>{var r=[];if(n){var i=(S(),E)[n>>>2>>>0];r.length=t+1,r[t]=new Promise(e=>setTimeout(e,i,0))}else r.length=t;for(var a=0;a{if(!Or){var e,t={USER:`web_user`,LOGNAME:`web_user`,PATH:`/`,PWD:`/`,HOME:`/home/web_user`,LANG:(globalThis.navigator?.language??`C`).replace(`-`,`_`)+`.UTF-8`,_:`./this.program`};for(e in kr)kr[e]===void 0?delete t[e]:t[e]=kr[e];var n=[];for(e in t)n.push(`${e}=${t[e]}`);Or=n}return Or};function jr(e,t){if(i)return P(19,1,e,t);e>>>=0,t>>>=0;var n,r=0,a=0;for(n of Ar()){var o=t+r;(S(),D)[e+a>>>2>>>0]=o,r+=Ct(n,o,1/0)+1,a+=4}return 0}function Mr(e,t){if(i)return P(20,1,e,t);e>>>=0,t>>>=0;var n=Ar();for(var r of((S(),D)[e>>>2>>>0]=n.length,e=0,n))e+=wt(r)+1;return(S(),D)[t>>>2>>>0]=e,0}function X(e){return i?P(21,1,e):52}function Nr(e,t,n,r){return i?P(22,1,e,t,n,r):52}function Pr(e,t,n,r){return i?P(23,1,e,t,n,r):70}var Fr=[null,[],[]];function Ir(e,t,n,r){if(i)return P(24,1,e,t,n,r);t>>>=0,n>>>=0,r>>>=0;for(var a=0,o=0;o>>2>>>0],c=(S(),D)[t+4>>>2>>>0];t+=8;for(var l=0;l>>0],f=Fr[u];d===0||d===10?((u===1?y:b)(He(f)),f.length=0):f.push(d)}a+=c}return(S(),D)[r>>>2>>>0]=a,0}function Lr(e){return e>>>0}function Rr(e,t){return sr(Y(e>>>0).limits,t>>>0),1}function zr(e,t){return Y(e>>>0).features.has(ur[t])}function Br(e){return BigInt(Y(e>>>0).size)}function Vr(e){return BigInt(Y(e>>>0).usage)}function Hr(e,t){if(e>>>=0,t>>>=0){var n=ar(t+4);n={label:n,timestampWrites:t=(t=(S(),D)[t+12>>>2>>>0])===0?void 0:{querySet:Y((S(),D)[t+4>>>2>>>0]),beginningOfPassWriteIndex:(S(),D)[t+8>>>2>>>0],endOfPassWriteIndex:(S(),D)[t+12>>>2>>>0]}}}return t=Y(e),e=Si(0),n=t.beginComputePass(n),J[e>>>0]=n,e}function Ur(e,t,n,r){n=z(n),(r=z(r))==-1&&(r=void 0),(e=Y(e>>>0)).clearBuffer(Y(t>>>0),n,r)}function Wr(e,t,n,r,i,a){n=z(n),i=z(i),a=z(a),Y(e>>>0).copyBufferToBuffer(Y(t>>>0),n,Y(r>>>0),i,a)}function Gr(e){var t=Y(e>>>0);return e=bi(0),t=t.finish(),J[e>>>0]=t,e}function Kr(e,t,n,r,i,a){a=z(a),Y(e>>>0).resolveQuerySet(Y(t>>>0),n,r,Y(i>>>0),a)}function qr(e,t,n,r){Y(e>>>0).dispatchWorkgroups(t,n,r)}function Jr(e,t,n){n=z(n),Y(e>>>0).dispatchWorkgroupsIndirect(Y(t>>>0),n)}function Yr(e){Y(e>>>0).end()}function Xr(e,t,n,r,i){r>>>=0,i>>>=0,e=Y(e>>>0),n=Y(n>>>0),r==0?e.setBindGroup(t,n):e.setBindGroup(t,n,(S(),D),i>>>2,r)}function Zr(e,t){Y(e>>>0).setPipeline(Y(t>>>0))}function Qr(e,t,n){Y(e>>>0).Ee(Y(t>>>0),n)}function $r(e,t){var n=Y(e>>>0);return e=yi(0),t=n.getBindGroupLayout(t),J[e>>>0]=t,e}function ei(e,t){function n(e){var t=(S(),D)[e+8>>>2>>>0],n=(S(),D)[e+32>>>2>>>0],r=(S(),D)[e+36>>>2>>>0],i=0;return nr(e,{327681:e=>{i=(S(),D)[e+8>>>2>>>0]}}),t?((n=Zn(e+24))==-1&&(n=void 0),t={buffer:Y(t),offset:Zn(e+16),size:n}):t=Y(n||r||i),{binding:(S(),D)[e+4>>>2>>>0],resource:t}}e>>>=0,t={label:ar((t>>>=0)+4),layout:Y((S(),D)[t+12>>>2>>>0]),entries:(function(e,t){for(var r=[],i=0;i>>2>>>0],(S(),D)[t+20>>>2>>>0])},e=Y(e);var r=vi(0);return Qn(r,e.createBindGroup(t)),r}function ti(e,t){var n;return e>>>=0,(t>>>=0)&&(n={label:ar(t+4)}),t=Y(e),e=xi(0),n=t.createCommandEncoder(n),J[e>>>0]=n,e}function ni(e,t){e>>>=0,t>>>=0,t={type:fr[(S(),E)[t+12>>>2>>>0]],count:(S(),D)[t+16>>>2>>>0]};var n=Y(e);return e=Ci(0),t=n.createQuerySet(t),J[e>>>0]=t,e}function ri(e,t){e=Y(e>>>0).adapterInfo,t>>>=0,(S(),D)[t+52>>>2>>>0]=e.subgroupMinSize,(S(),D)[t+56>>>2>>>0]=e.subgroupMaxSize;var n=e.vendor+e.architecture+e.device+e.description,r=wt(n)+1,i=hi(r);return i&&Ct(n,i,r),n=i,r=wt(e.vendor),rr(t+4,n,r),n+=r,r=wt(e.architecture),rr(t+12,n,r),n+=r,r=wt(e.device),rr(t+20,n,r),rr(t+28,n+r,wt(e.description)),(S(),E)[t+36>>>2>>>0]=2,e=e.isFallbackAdapter?3:4,(S(),E)[t+40>>>2>>>0]=e,(S(),D)[t+44>>>2>>>0]=0,(S(),D)[t+48>>>2>>>0]=0,1}var ii={"core-features-and-limits":1,"depth-clip-control":2,"depth32float-stencil8":3,"texture-compression-bc":4,"texture-compression-bc-sliced-3d":5,"texture-compression-etc2":6,"texture-compression-astc":7,"texture-compression-astc-sliced-3d":8,"timestamp-query":9,"indirect-first-instance":10,"shader-f16":11,"rg11b10ufloat-renderable":12,"bgra8unorm-storage":13,"float32-filterable":14,"float32-blendable":15,"clip-distances":16,"dual-source-blending":17,subgroups:18,"texture-formats-tier1":19,"texture-formats-tier2":20,"primitive-index":21,"texture-component-swizzle":22,"chromium-experimental-unorm16-texture-formats":327692,"chromium-experimental-multi-draw-indirect":327729};function ai(e,t){t>>>=0;var n=Y(e>>>0);e=hi(4*n.features.size);var r=0,i=0;for(let t of n.features)0<=(n=ii[t])&&((S(),E)[e+r>>>2>>>0]=n,r+=4,i++);(S(),D)[t+4>>>2>>>0]=e,(S(),D)[t>>>2>>>0]=i}function oi(e,t){return sr(Y(e>>>0).limits,t>>>0),1}function si(e,t){Y(e>>>0).pushErrorScope(cr[t])}function ci(e,t,n){t>>>=0,n>>>=0,e=Y(e>>>0),t=Array.from((S(),E).subarray(n>>>2>>>0,n+4*t>>>2>>>0),e=>Y(e)),e.submit(t)}function li(e,t,n,r,i){n=z(n),r>>>=0,i>>>=0,e=Y(e>>>0),t=Y(t>>>0),r=(S(),w).subarray(r>>>0,r+i>>>0),e.writeBuffer(t,n,r,0,i)}i||(function(){for(var e=t.numThreads-1;e--;)Se();de.push(async()=>{var e=(async function(){if(!i)return Promise.all(F.map(xe))})();fe++,await e,--fe==0&&pe&&(e=pe,pe=null,e())})})(),i||(R=new WebAssembly.Memory({initial:256,maximum:65536,shared:!0}),se()),t.wasmBinary&&(d=t.wasmBinary),t.stackSave=()=>$(),t.stackRestore=e=>Q(e),t.stackAlloc=e=>Wi(e),t.setValue=function(e,t,n=`i8`){switch(n.endsWith(`*`)&&(n=`*`),n){case`i1`:case`i8`:(S(),te)[e>>>0]=t;break;case`i16`:(S(),ne)[e>>>1>>>0]=t;break;case`i32`:(S(),E)[e>>>2>>>0]=t;break;case`i64`:(S(),ie)[e>>>3>>>0]=BigInt(t);break;case`float`:(S(),re)[e>>>2>>>0]=t;break;case`double`:(S(),O)[e>>>3>>>0]=t;break;case`*`:(S(),D)[e>>>2>>>0]=t;break;default:A(`invalid type for setValue: ${n}`)}},t.getValue=function(e,t=`i8`){switch(t.endsWith(`*`)&&(t=`*`),t){case`i1`:case`i8`:return(S(),te)[e>>>0];case`i16`:return(S(),ne)[e>>>1>>>0];case`i32`:return(S(),E)[e>>>2>>>0];case`i64`:return(S(),ie)[e>>>3>>>0];case`float`:return(S(),re)[e>>>2>>>0];case`double`:return(S(),O)[e>>>3>>>0];case`*`:return(S(),D)[e>>>2>>>0];default:A(`invalid type for getValue: ${t}`)}},t.UTF8ToString=Ue,t.stringToUTF8=Ct,t.lengthBytesUTF8=wt;var ui,di,fi,pi,mi,hi,gi,_i,vi,yi,bi,xi,Si,Ci,wi,Ti,Ei,Di,Oi,ki,Ai,ji,Mi,Ni,Pi,Fi,Ii,Li,Ri,zi,Bi,Vi,Z,Hi,Ui,Q,Wi,$,Gi,Ki,qi,Ji,Yi,Xi,Zi,Qi,$i,ea,ta,na,ra,ia,aa,oa,sa,ca,la,ua,da,fa,pa,ma,ha,ga,_a,va,ya,ba,xa,Sa,Ca,wa,Ta,Ea,Da,Oa,ka,Aa,ja,Ma,Na,Pa,Fa,Ia,La=[he,ge,Le,We,Ge,Ke,qe,Je,Ye,Xe,Ze,Qe,$e,et,tt,nt,kn,An,Nn,jr,Mr,X,Nr,Pr,Ir],Ra={1028716:(e,n,r,i,a)=>{if(t===void 0||!t.Vc)return 1;if((e=Ue(Number(e>>>0))).startsWith(`./`)&&(e=e.substring(2)),!(e=t.Vc.get(e)))return 2;if(n=Number(n>>>0),r=Number(r>>>0),i=Number(i>>>0),n+r>e.byteLength)return 3;try{let o=e.subarray(n,n+r);switch(a){case 0:(S(),w).set(o,i>>>0);break;case 1:t.bd?t.bd(i,o):t.pe(i,o);break;default:return 4}return 0}catch{return 4}},1029540:(e,n,r)=>{t.Td(e,(S(),w).subarray(n>>>0,n+r>>>0))},1029604:()=>t.ne(),1029646:e=>{t.kd(e)},1029683:()=>typeof wasmOffsetConverter<`u`};function za(e,t,n,r){var i=$();try{return ia(e,t,n,r)}catch(e){if(Q(i),e!==e+0)throw e;Z(1,0)}}function Ba(e,t,n){var r=$();try{return ta(e,t,n)}catch(e){if(Q(r),e!==e+0)throw e;Z(1,0)}}function Va(e){var t=$();try{Zi(e)}catch(e){if(Q(t),e!==e+0)throw e;Z(1,0)}}function Ha(e,t){var n=$();try{return Xi(e,t)}catch(e){if(Q(n),e!==e+0)throw e;Z(1,0)}}function Ua(e,t,n){var r=$();try{Yi(e,t,n)}catch(e){if(Q(r),e!==e+0)throw e;Z(1,0)}}function Wa(e,t){var n=$();try{aa(e,t)}catch(e){if(Q(n),e!==e+0)throw e;Z(1,0)}}function Ga(e,t,n,r,i,a,o){var s=$();try{return ea(e,t,n,r,i,a,o)}catch(e){if(Q(s),e!==e+0)throw e;Z(1,0)}}function Ka(e,t,n,r,i,a){var o=$();try{Qi(e,t,n,r,i,a)}catch(e){if(Q(o),e!==e+0)throw e;Z(1,0)}}function qa(e,t,n,r){var i=$();try{ra(e,t,n,r)}catch(e){if(Q(i),e!==e+0)throw e;Z(1,0)}}function Ja(e,t,n,r,i,a,o){var s=$();try{sa(e,t,n,r,i,a,o)}catch(e){if(Q(s),e!==e+0)throw e;Z(1,0)}}function Ya(e,t,n,r,i,a,o){var s=$();try{ca(e,t,n,r,i,a,o)}catch(e){if(Q(s),e!==e+0)throw e;Z(1,0)}}function Xa(e,t,n,r,i,a,o,s){var c=$();try{_a(e,t,n,r,i,a,o,s)}catch(e){if(Q(c),e!==e+0)throw e;Z(1,0)}}function Za(e,t,n,r,i,a,o,s,c,l,u,d){var f=$();try{la(e,t,n,r,i,a,o,s,c,l,u,d)}catch(e){if(Q(f),e!==e+0)throw e;Z(1,0)}}function Qa(e,t,n,r,i){var a=$();try{return oa(e,t,n,r,i)}catch(e){if(Q(a),e!==e+0)throw e;Z(1,0)}}function $a(e,t,n,r,i,a){var o=$();try{va(e,t,n,r,i,a)}catch(e){if(Q(o),e!==e+0)throw e;Z(1,0)}}function eo(e,t,n,r,i){var a=$();try{$i(e,t,n,r,i)}catch(e){if(Q(a),e!==e+0)throw e;Z(1,0)}}function to(e,t,n,r,i,a,o,s){var c=$();try{na(e,t,n,r,i,a,o,s)}catch(e){if(Q(c),e!==e+0)throw e;Z(1,0)}}function no(e){var t=$();try{return ya(e)}catch(e){if(Q(t),e!==e+0)throw e;Z(1,0)}}function ro(e,t,n){var r=$();try{return ba(e,t,n)}catch(e){if(Q(r),e!==e+0)throw e;Z(1,0)}}function io(e,t){var n=$();try{return ja(e,t)}catch(e){if(Q(n),e!==e+0)throw e;return Z(1,0),0n}}function ao(e){var t=$();try{return ua(e)}catch(e){if(Q(t),e!==e+0)throw e;return Z(1,0),0n}}function oo(e,t,n,r){var i=$();try{return xa(e,t,n,r)}catch(e){if(Q(i),e!==e+0)throw e;Z(1,0)}}function so(e,t,n,r,i){var a=$();try{return Sa(e,t,n,r,i)}catch(e){if(Q(a),e!==e+0)throw e;Z(1,0)}}function co(e,t,n,r,i,a){var o=$();try{return Ca(e,t,n,r,i,a)}catch(e){if(Q(o),e!==e+0)throw e;Z(1,0)}}function lo(e,t,n,r,i,a){var o=$();try{return ha(e,t,n,r,i,a)}catch(e){if(Q(o),e!==e+0)throw e;Z(1,0)}}function uo(e,t,n,r,i,a){var o=$();try{return wa(e,t,n,r,i,a)}catch(e){if(Q(o),e!==e+0)throw e;Z(1,0)}}function fo(e,t,n,r,i,a,o,s){var c=$();try{return ga(e,t,n,r,i,a,o,s)}catch(e){if(Q(c),e!==e+0)throw e;Z(1,0)}}function po(e,t,n,r,i){var a=$();try{return Ta(e,t,n,r,i)}catch(e){if(Q(a),e!==e+0)throw e;return Z(1,0),0n}}function mo(e,t,n,r){var i=$();try{return Ea(e,t,n,r)}catch(e){if(Q(i),e!==e+0)throw e;Z(1,0)}}function ho(e,t,n,r){var i=$();try{return Da(e,t,n,r)}catch(e){if(Q(i),e!==e+0)throw e;Z(1,0)}}function go(e,t,n,r,i,a,o,s,c,l,u,d){var f=$();try{return Oa(e,t,n,r,i,a,o,s,c,l,u,d)}catch(e){if(Q(f),e!==e+0)throw e;Z(1,0)}}function _o(e,t,n,r,i,a,o,s,c,l,u){var d=$();try{ka(e,t,n,r,i,a,o,s,c,l,u)}catch(e){if(Q(d),e!==e+0)throw e;Z(1,0)}}function vo(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){var g=$();try{Aa(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h)}catch(e){if(Q(g),e!==e+0)throw e;Z(1,0)}}function yo(e,t,n){var r=$();try{return fa(e,t,n)}catch(e){if(Q(r),e!==e+0)throw e;return Z(1,0),0n}}function bo(e,t,n){var r=$();try{return da(e,t,n)}catch(e){if(Q(r),e!==e+0)throw e;Z(1,0)}}function xo(e,t,n){var r=$();try{return pa(e,t,n)}catch(e){if(Q(r),e!==e+0)throw e;Z(1,0)}}function So(e,t,n,r){var i=$();try{ma(e,t,n,r)}catch(e){if(Q(i),e!==e+0)throw e;Z(1,0)}}function Co(){if(0{let n=new WeakMap,r,i,a=1;t.webgpuRegisterDevice=e=>{if(i!==void 0)throw Error(`another WebGPU EP inference session is being created.`);if(e){var t=n.get(e);if(!t){let r=((e,t=0)=>{var n=Ei(t);return t=Ti(t,n),J[n>>>0]=e.queue,J[t>>>0]=e,t})(e,t=_i(0));t=[a++,t,r],n.set(e,t)}return r=e,i=t[0],t}r=void 0,i=0};let o=new Map;t.webgpuOnCreateSession=t=>{if(i!==void 0){var n=i;if(i=void 0,t){let i=fi(n);o.set(t,i),n===0&&e(r??Y(i))}r=void 0}},t.webgpuOnReleaseSession=e=>{o.delete(e)};let s=Symbol(`gpuBufferMetadata`);t.webgpuRegisterBuffer=(e,t,n)=>{if(n)return e[s]=[n,NaN],n;if(n=e[s])return n[1]++,n[0];if((t=o.get(t))===void 0)throw Error(`Invalid session handle passed to webgpuRegisterBuffer`);return t=((e,t=0)=>(e.mapState===`unmapped`||A(),t=wi(t),J[t>>>0]=e,t))(e,t),e[s]=[t,1],t},t.webgpuUnregisterBuffer=e=>{let t=e[s];if(!t)throw Error(`Buffer is not registered`);t[1]--,t[1]===0&&(gi(t[0]),delete e[s])},t.webgpuGetBuffer=e=>Y(e),t.webgpuCreateDownloader=(e,t,n)=>{if((n=o.get(n))===void 0)throw Error(`Invalid session handle passed to webgpuRegisterBuffer`);let r=Y(n),i=16*Math.ceil(Number(t)/16);return async()=>{let n=r.createBuffer({size:i,usage:9});try{let a=r.createCommandEncoder();return a.copyBufferToBuffer(e,0,n,0,i),r.queue.submit([a.finish()]),await n.mapAsync(GPUMapMode.READ),n.getMappedRange().slice(0,t)}finally{n.destroy()}}},t.bd=(e,t)=>{var n=t.buffer;let a=t.byteOffset,o=t.byteLength;if(t=16*Math.ceil(Number(o)/16),e=Y(e),!r){var s=fi(i);r=Y(s)}let c=(s=r.createBuffer({mappedAtCreation:!0,size:t,usage:6})).getMappedRange();new Uint8Array(c).set(new Uint8Array(n,a,o)),s.unmap(),(n=r.createCommandEncoder()).copyBufferToBuffer(s,0,e,0,t),r.queue.submit([n.finish()]),s.destroy()}},t.webnnInit=e=>{let n=e[0];[t.ne,t.kd,t.webnnEnsureTensor,t.Td,t.webnnDownloadTensor,t.me,t.webnnEnableTraceEvent]=e.slice(1),t.webnnReleaseTensorId=t.kd,t.webnnUploadTensor=t.Td,t.webnnRegisterMLContext=t.me,t.webnnOnRunStart=e=>n.onRunStart(e),t.webnnOnRunEnd=n.onRunEnd.bind(n),t.webnnOnReleaseSession=e=>{n.onReleaseSession(e)},t.webnnCreateMLTensorDownloader=(e,t)=>n.createMLTensorDownloader(e,t),t.webnnRegisterMLTensor=(e,t,r,i)=>n.registerMLTensor(e,t,r,i),t.webnnCreateMLContext=e=>n.createMLContext(e),t.webnnRegisterMLConstant=(e,r,i,a,o,s)=>n.registerMLConstant(e,r,i,a,o,t.Vc,s),t.webnnRegisterGraphInput=n.registerGraphInput.bind(n),t.webnnIsGraphInput=n.isGraphInput.bind(n),t.webnnRegisterGraphOutput=n.registerGraphOutput.bind(n),t.webnnIsGraphOutput=n.isGraphOutput.bind(n),t.webnnCreateTemporaryTensor=n.createTemporaryTensor.bind(n),t.webnnIsGraphInputOutputTypeSupported=n.isGraphInputOutputTypeSupported.bind(n)},oe?t:new Promise((e,t)=>{m=e,h=t})}var ct,lt,ut=j(()=>{ct=st,lt=globalThis.self?.name?.startsWith(`em-pthread`),lt&&st()}),dt,ft,pt,H,mt,U,ht,gt,_t,vt,yt,bt,xt,St,Ct=j(()=>{et(),dt=typeof location>`u`?void 0:location.origin,ft=import.meta.url>`file:`&&import.meta.url<`file;`,pt=()=>ft?new URL(new URL(`ort.webgpu.bundle.min.mjs`,import.meta.url).href,dt).href:import.meta.url,H=pt(),mt=()=>{if(H&&!H.startsWith(`blob:`))return H.substring(0,H.lastIndexOf(`/`)+1)},U=(e,t)=>{try{let n=t??H;return(n?new URL(e,n):new URL(e)).origin===dt}catch{return!1}},ht=(e,t)=>{let n=t??H;try{return(n?new URL(e,n):new URL(e)).href}catch{return}},gt=(e,t)=>`${t??`./`}${e}`,_t=async e=>{let t=await(await fetch(e,{credentials:`same-origin`})).blob();return URL.createObjectURL(t)},vt=async e=>(await k(async()=>{let{default:t}=await import(e);return{default:t}},[])).default,yt=(at(),M(tt)).default,bt=async()=>{if(!H)throw Error(`Failed to load proxy worker: cannot determine the script source URL.`);if(U(H))return[void 0,yt()];let e=await _t(H);return[e,yt(e)]},xt=(ut(),M(ot)).default,St=async(e,t,n,r)=>{let i=xt&&!(e||t);if(i)if(H)i=U(H)||r&&!n;else if(r&&!n)i=!0;else throw Error(`cannot determine the script source URL.`);if(i)return[void 0,xt];{let r=`ort-wasm-simd-threaded.asyncify.mjs`,i=e??ht(r,t),a=n&&i&&!U(i,t),o=a?await _t(i):i??gt(r,t);return[a?o:void 0,await vt(o)]}}}),wt,Tt,Et,Dt,Ot,kt,At,jt,W,Mt=j(()=>{Ct(),Tt=!1,Et=!1,Dt=!1,Ot=()=>{if(typeof SharedArrayBuffer>`u`)return!1;try{return typeof MessageChannel<`u`&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},kt=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},At=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,19,1,17,0,65,1,253,15,65,2,253,15,65,3,253,15,253,147,2,11]))}catch{return!1}},jt=async e=>{if(Tt)return Promise.resolve();if(Et)throw Error(`multiple calls to 'initializeWebAssembly()' detected.`);if(Dt)throw Error(`previous call to 'initializeWebAssembly()' failed.`);Et=!0;let t=e.initTimeout,n=e.numThreads;if(e.simd!==!1){if(e.simd===`relaxed`){if(!At())throw Error(`Relaxed WebAssembly SIMD is not supported in the current environment.`)}else if(!kt())throw Error(`WebAssembly SIMD is not supported in the current environment.`)}let r=Ot();n>1&&!r&&(typeof self<`u`&&!self.crossOriginIsolated&&console.warn(`env.wasm.numThreads is set to `+n+`, but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info.`),console.warn(`WebAssembly multi-threading is not supported in the current environment. Falling back to single-threading.`),e.numThreads=n=1);let i=e.wasmPaths,a=typeof i==`string`?i:void 0,o=i?.mjs,s=o?.href??o,c=i?.wasm,l=c?.href??c,u=e.wasmBinary,[d,f]=await St(s,a,n>1,!!u||!!l),p=!1,m=[];if(t>0&&m.push(new Promise(e=>{setTimeout(()=>{p=!0,e()},t)})),m.push(new Promise((e,t)=>{let r={numThreads:n};if(u)r.wasmBinary=u,r.locateFile=e=>e;else if(l||a)r.locateFile=e=>l??a+e;else if(s&&s.indexOf(`blob:`)!==0)r.locateFile=e=>new URL(e,s).href;else if(d){let e=mt();e&&(r.locateFile=t=>e+t)}f(r).then(t=>{Et=!1,Tt=!0,wt=t,e(),d&&URL.revokeObjectURL(d)},e=>{Et=!1,Dt=!0,t(e)})})),await Promise.race(m),p)throw Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},W=()=>{if(Tt&&wt)return wt;throw Error(`WebAssembly is not initialized yet.`)}}),Nt,Pt,G,Ft=j(()=>{Mt(),Nt=(e,t)=>{let n=W(),r=n.lengthBytesUTF8(e)+1,i=n._malloc(r);return n.stringToUTF8(e,i,r),t.push(i),i},Pt=(e,t,n,r)=>{if(typeof e==`object`&&e){if(n.has(e))throw Error(`Circular reference in options`);n.add(e)}Object.entries(e).forEach(([e,i])=>{let a=t?t+e:e;if(typeof i==`object`)Pt(i,a+`.`,n,r);else if(typeof i==`string`||typeof i==`number`)r(a,i.toString());else if(typeof i==`boolean`)r(a,i?`1`:`0`);else throw Error(`Can't handle extra config type: ${typeof i}`)})},G=e=>{let t=W(),n=t.stackSave();try{let n=t.PTR_SIZE,r=t.stackAlloc(2*n);t._OrtGetLastError(r,r+n);let i=Number(t.getValue(r,n===4?`i32`:`i64`)),a=t.getValue(r+n,`*`),o=a?t.UTF8ToString(a):``;throw Error(`${e} ERROR_CODE: ${i}, ERROR_MESSAGE: ${o}`)}finally{t.stackRestore(n)}}}),It,Lt=j(()=>{Mt(),Ft(),It=e=>{let t=W(),n=0,r=[],i=e||{};try{if(e?.logSeverityLevel===void 0)i.logSeverityLevel=2;else if(typeof e.logSeverityLevel!=`number`||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw Error(`log severity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)i.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!=`number`||!Number.isInteger(e.logVerbosityLevel))throw Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(i.terminate=!1);let a=0;return e?.tag!==void 0&&(a=Nt(e.tag,r)),n=t._OrtCreateRunOptions(i.logSeverityLevel,i.logVerbosityLevel,!!i.terminate,a),n===0&&G(`Can't create run options.`),e?.extra!==void 0&&Pt(e.extra,``,new WeakSet,(e,i)=>{let a=Nt(e,r),o=Nt(i,r);t._OrtAddRunConfigEntry(n,a,o)!==0&&G(`Can't set a run config entry: ${e} - ${i}.`)}),[n,r]}catch(e){throw n!==0&&t._OrtReleaseRunOptions(n),r.forEach(e=>t._free(e)),e}}}),Rt,zt,Bt,Vt,Ht,Ut,Wt,Gt=j(()=>{Mt(),Ft(),Rt=e=>{switch(e){case`disabled`:return 0;case`basic`:return 1;case`extended`:return 2;case`layout`:return 3;case`all`:return 99;default:throw Error(`unsupported graph optimization level: ${e}`)}},zt=e=>{switch(e){case`sequential`:return 0;case`parallel`:return 1;default:throw Error(`unsupported execution mode: ${e}`)}},Bt=e=>{e.extra||={},e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||=`1`,e.executionProviders&&e.executionProviders.some(e=>(typeof e==`string`?e:e.name)===`webgpu`)&&(e.enableMemPattern=!1)},Vt=(e,t,n,r)=>{let i=Nt(t,r),a=Nt(n,r);W()._OrtAddSessionConfigEntry(e,i,a)!==0&&G(`Can't set a session config entry: ${t} - ${n}.`)},Ht=(e,t,n,r)=>{let i=Nt(t,r),a=Nt(n,r);e.push([i,a])},Ut=async(e,t,n)=>{let r=t.executionProviders;for(let i of r){let r=typeof i==`string`?i:i.name,a=[];switch(r){case`webnn`:if(r=`WEBNN`,Vt(e,`session.disable_quant_qdq`,`1`,n),Vt(e,`session.disable_qdq_constant_folding`,`1`,n),typeof i!=`string`){let t=i?.deviceType;t&&Vt(e,`deviceType`,t,n)}break;case`webgpu`:{r=`WebGPU`;let e;if(typeof i!=`string`){let r=i;if(r.device)if(typeof GPUDevice<`u`&&r.device instanceof GPUDevice)e=r.device;else throw Error(`Invalid GPU device set in WebGPU EP options.`);let{enableGraphCapture:o}=t;if(typeof o==`boolean`&&o&&Ht(a,`enableGraphCapture`,`1`,n),typeof r.preferredLayout==`string`&&Ht(a,`preferredLayout`,r.preferredLayout,n),r.forceCpuNodeNames){let e=Array.isArray(r.forceCpuNodeNames)?r.forceCpuNodeNames:[r.forceCpuNodeNames];Ht(a,`forceCpuNodeNames`,e.join(` +`),n)}r.validationMode&&Ht(a,`validationMode`,r.validationMode,n)}let o=W().webgpuRegisterDevice(e);if(o){let[e,t,r]=o;Ht(a,`deviceId`,e.toString(),n),Ht(a,`webgpuInstance`,t.toString(),n),Ht(a,`webgpuDevice`,r.toString(),n)}}break;case`wasm`:case`cpu`:continue;default:throw Error(`not supported execution provider: ${r}`)}let o=Nt(r,n),s=a.length,c=0,l=0;if(s>0){c=W()._malloc(s*W().PTR_SIZE),n.push(c),l=W()._malloc(s*W().PTR_SIZE),n.push(l);for(let e=0;e{let t=W(),n=0,r=[],i=e||{};Bt(i);try{let e=Rt(i.graphOptimizationLevel??`all`),a=zt(i.executionMode??`sequential`),o=typeof i.logId==`string`?Nt(i.logId,r):0,s=i.logSeverityLevel??2;if(!Number.isInteger(s)||s<0||s>4)throw Error(`log severity level is not valid: ${s}`);let c=i.logVerbosityLevel??0;if(!Number.isInteger(c)||c<0||c>4)throw Error(`log verbosity level is not valid: ${c}`);let l=typeof i.optimizedModelFilePath==`string`?Nt(i.optimizedModelFilePath,r):0;if(n=t._OrtCreateSessionOptions(e,!!i.enableCpuMemArena,!!i.enableMemPattern,a,!!i.enableProfiling,0,o,s,c,l),n===0&&G(`Can't create session options.`),i.executionProviders&&await Ut(n,i,r),i.enableGraphCapture!==void 0){if(typeof i.enableGraphCapture!=`boolean`)throw Error(`enableGraphCapture must be a boolean value: ${i.enableGraphCapture}`);Vt(n,`enableGraphCapture`,i.enableGraphCapture.toString(),r)}if(i.freeDimensionOverrides)for(let[e,a]of Object.entries(i.freeDimensionOverrides)){if(typeof e!=`string`)throw Error(`free dimension override name must be a string: ${e}`);if(typeof a!=`number`||!Number.isInteger(a)||a<0)throw Error(`free dimension override value must be a non-negative integer: ${a}`);let i=Nt(e,r);t._OrtAddFreeDimensionOverride(n,i,a)!==0&&G(`Can't set a free dimension override: ${e} - ${a}.`)}return i.extra!==void 0&&Pt(i.extra,``,new WeakSet,(e,t)=>{Vt(n,e,t,r)}),[n,r]}catch(e){throw n!==0&&t._OrtReleaseSessionOptions(n)!==0&&G(`Can't release session options.`),r.forEach(e=>t._free(e)),e}}}),K,Kt,qt,Jt,Yt,Xt,Zt,Qt,$t=j(()=>{K=e=>{switch(e){case`int8`:return 3;case`uint8`:return 2;case`bool`:return 9;case`int16`:return 5;case`uint16`:return 4;case`int32`:return 6;case`uint32`:return 12;case`float16`:return 10;case`float32`:return 1;case`float64`:return 11;case`string`:return 8;case`int64`:return 7;case`uint64`:return 13;case`int4`:return 22;case`uint4`:return 21;default:throw Error(`unsupported data type: ${e}`)}},Kt=e=>{switch(e){case 3:return`int8`;case 2:return`uint8`;case 9:return`bool`;case 5:return`int16`;case 4:return`uint16`;case 6:return`int32`;case 12:return`uint32`;case 10:return`float16`;case 1:return`float32`;case 11:return`float64`;case 8:return`string`;case 7:return`int64`;case 13:return`uint64`;case 22:return`int4`;case 21:return`uint4`;default:throw Error(`unsupported data type: ${e}`)}},qt=(e,t)=>{let n=[-1,4,1,1,2,2,4,8,-1,1,2,8,4,8,-1,-1,-1,-1,-1,-1,-1,.5,.5][e],r=typeof t==`number`?t:t.reduce((e,t)=>e*t,1);return n>0?Math.ceil(r*n):void 0},Jt=e=>{switch(e){case`float16`:return typeof Float16Array<`u`?Float16Array:Uint16Array;case`float32`:return Float32Array;case`uint8`:return Uint8Array;case`int8`:return Int8Array;case`uint16`:return Uint16Array;case`int16`:return Int16Array;case`int32`:return Int32Array;case`bool`:return Uint8Array;case`float64`:return Float64Array;case`uint32`:return Uint32Array;case`int64`:return BigInt64Array;case`uint64`:return BigUint64Array;default:throw Error(`unsupported type: ${e}`)}},Yt=e=>{switch(e){case`verbose`:return 0;case`info`:return 1;case`warning`:return 2;case`error`:return 3;case`fatal`:return 4;default:throw Error(`unsupported logging level: ${e}`)}},Xt=e=>e===`float32`||e===`float16`||e===`int32`||e===`int64`||e===`uint32`||e===`uint8`||e===`bool`||e===`uint4`||e===`int4`,Zt=e=>e===`float32`||e===`float16`||e===`int32`||e===`int64`||e===`uint32`||e===`uint64`||e===`int8`||e===`uint8`||e===`bool`||e===`uint4`||e===`int4`,Qt=e=>{switch(e){case`none`:return 0;case`cpu`:return 1;case`cpu-pinned`:return 2;case`texture`:return 3;case`gpu-buffer`:return 4;case`ml-tensor`:return 5;default:throw Error(`unsupported data location: ${e}`)}}}),en,tn=j(()=>{et(),en=async e=>{if(typeof e==`string`){let t=await fetch(e);if(!t.ok)throw Error(`failed to load external data file: ${e}`);let n=t.headers.get(`Content-Length`),r=n?parseInt(n,10):0;if(r<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw Error(`failed to load external data file: ${e}, no response body.`);let n=t.body.getReader(),i;try{i=new ArrayBuffer(r)}catch(e){if(e instanceof RangeError){let e=Math.ceil(r/65536);i=new WebAssembly.Memory({initial:e,maximum:e}).buffer}else throw e}let a=0;for(;;){let{done:e,value:t}=await n.read();if(e)break;let r=t.byteLength;new Uint8Array(i,a,r).set(t),a+=r}return new Uint8Array(i,0,r)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)}}),nn,rn=j(()=>{$t(),nn=(e,t)=>new(Jt(t))(e)}),an,on,sn,cn,ln,un,q,dn=j(()=>{$t(),an=[`V`,`I`,`W`,`E`,`F`],on=(e,t)=>{console.log(`[${an[e]},${new Date().toISOString()}]${t}`)},ln=(e,t)=>{sn=e,cn=t},un=(e,t)=>{let n=Yt(e);n>=Yt(sn)&&on(n,typeof t==`function`?t():t)},q=(...e)=>{cn&&un(...e)}}),fn,pn,mn,hn,gn,_n,vn,yn,bn,xn,Sn,Cn=j(()=>{$t(),dn(),fn=new Map([[`float32`,32],[`float16`,16],[`int32`,32],[`uint32`,32],[`int64`,64],[`uint64`,64],[`int8`,8],[`uint8`,8],[`int4`,4],[`uint4`,4]]),pn=(e,t)=>{if(t===`int32`)return e;let n=fn.get(t);if(!n)throw Error(`WebNN backend does not support data type: ${t}`);let r=n/8;if(e.byteLength%r!==0)throw Error(`Invalid Uint8Array length - must be a multiple of ${r}.`);let i=e.byteLength/r,a=new(Jt(t))(e.buffer,e.byteOffset,i);switch(t){case`int64`:case`uint64`:{let e=new Int32Array(i);for(let t=0;t2147483647n||n<-2147483648n)throw Error(`Can not convert int64 data to int32 - value out of range.`);e[t]=Number(n)}return new Uint8Array(e.buffer)}case`int8`:case`uint8`:case`uint32`:{if(t===`uint32`&&a.some(e=>e>2147483647))throw Error(`Can not convert uint32 data to int32 - value out of range.`);let e=Int32Array.from(a,Number);return new Uint8Array(e.buffer)}default:throw Error(`Unsupported data conversion from ${t} to 'int32'`)}},mn=(e,t)=>{if(t===`int32`)return e;if(e.byteLength%4!=0)throw Error(`Invalid Uint8Array length - must be a multiple of 4 (int32).`);let n=e.byteLength/4,r=new Int32Array(e.buffer,e.byteOffset,n);switch(t){case`int64`:{let e=BigInt64Array.from(r,BigInt);return new Uint8Array(e.buffer)}case`uint64`:{if(r.some(e=>e<0))throw Error(`Can not convert int32 data to uin64 - negative value found.`);let e=BigUint64Array.from(r,BigInt);return new Uint8Array(e.buffer)}case`int8`:{if(r.some(e=>e<-128||e>127))throw Error(`Can not convert int32 data to int8 - value out of range.`);let e=Int8Array.from(r,Number);return new Uint8Array(e.buffer)}case`uint8`:if(r.some(e=>e<0||e>255))throw Error(`Can not convert int32 data to uint8 - value out of range.`);return Uint8Array.from(r,Number);case`uint32`:{if(r.some(e=>e<0))throw Error(`Can not convert int32 data to uint32 - negative value found.`);let e=Uint32Array.from(r,Number);return new Uint8Array(e.buffer)}default:throw Error(`Unsupported data conversion from 'int32' to ${t}`)}},hn=1,gn=()=>hn++,_n=new Map([[`int8`,`int32`],[`uint8`,`int32`],[`uint32`,`int32`],[`int64`,`int32`]]),vn=(e,t)=>{let n=fn.get(e);if(!n)throw Error(`WebNN backend does not support data type: ${e}`);return t.length>0?Math.ceil(t.reduce((e,t)=>e*t)*n/8):0},yn=class{constructor(e){this.isDataConverted=!1;let{sessionId:t,context:n,tensor:r,dataType:i,shape:a,fallbackDataType:o}=e;this.sessionId=t,this.mlContext=n,this.mlTensor=r,this.dataType=i,this.tensorShape=a,this.fallbackDataType=o}get tensor(){return this.mlTensor}get type(){return this.dataType}get fallbackType(){return this.fallbackDataType}get shape(){return this.tensorShape}get byteLength(){return vn(this.dataType,this.tensorShape)}destroy(){q(`verbose`,()=>`[WebNN] TensorWrapper.destroy`),this.mlTensor.destroy()}write(e){this.mlContext.writeTensor(this.mlTensor,e)}async read(e){if(this.fallbackDataType){let t=await this.mlContext.readTensor(this.mlTensor),n=mn(new Uint8Array(t),this.dataType);if(e){(e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)).set(n);return}else return new Uint8Array(n).buffer}else return e?this.mlContext.readTensor(this.mlTensor,e):this.mlContext.readTensor(this.mlTensor)}canReuseTensor(e,t,n){return this.mlContext===e&&this.dataType===t&&this.tensorShape.length===n.length&&this.tensorShape.every((e,t)=>e===n[t])}setIsDataConverted(e){this.isDataConverted=e}},bn=class{constructor(e,t){this.tensorManager=e,this.wrapper=t}get tensorWrapper(){return this.wrapper}releaseTensor(){this.tensorWrapper&&(this.tensorManager.releaseTensor(this.tensorWrapper),this.wrapper=void 0)}async ensureTensor(e,t,n,r){let i=this.tensorManager.getMLContext(e),a=this.tensorManager.getMLOpSupportLimits(e),o;if(!a?.input.dataTypes.includes(t)){if(o=_n.get(t),!o||a?.input.dataTypes.includes(o))throw Error(`WebNN backend does not support data type: ${t}`);q(`verbose`,()=>`[WebNN] TensorIdTracker.ensureTensor: fallback dataType from ${t} to ${o}`)}if(this.wrapper){if(this.wrapper.canReuseTensor(i,t,n))return this.wrapper.tensor;if(r){if(this.wrapper.byteLength!==vn(t,n))throw Error(`Unable to copy data to tensor with different size.`);this.activeUpload=new Uint8Array(await this.wrapper.read())}this.tensorManager.releaseTensor(this.wrapper)}let s=typeof MLTensorUsage>`u`?void 0:MLTensorUsage.READ|MLTensorUsage.WRITE;return this.wrapper=await this.tensorManager.getCachedTensor(e,t,n,s,!0,!0,o),r&&this.activeUpload&&(this.wrapper.write(this.activeUpload),this.activeUpload=void 0),this.wrapper.tensor}upload(e){let t=e;if(this.wrapper){if(this.wrapper.fallbackType)if(this.wrapper.fallbackType===`int32`)t=pn(e,this.wrapper.type),this.wrapper.setIsDataConverted(!0);else throw Error(`Unsupported fallback data type: ${this.wrapper.fallbackType}`);if(e.byteLength===this.wrapper.byteLength){this.wrapper.write(t);return}else q(`verbose`,()=>`Data size does not match tensor size. Releasing tensor.`),this.releaseTensor()}this.activeUpload?this.activeUpload.set(t):this.activeUpload=new Uint8Array(t)}async download(e){if(this.activeUpload){let t=this.wrapper?.isDataConverted?mn(this.activeUpload,this.wrapper?.type):this.activeUpload;if(e){e instanceof ArrayBuffer?new Uint8Array(e).set(t):new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(t);return}else return t.buffer}if(!this.wrapper)throw Error(`Tensor has not been created.`);return e?this.wrapper.read(e):this.wrapper.read()}},xn=class{constructor(e){this.backend=e,this.tensorTrackersById=new Map,this.freeTensors=[],this.externalTensors=new Set}getMLContext(e){let t=this.backend.getMLContext(e);if(!t)throw Error(`MLContext not found for session.`);return t}getMLOpSupportLimits(e){return this.backend.getMLOpSupportLimits(e)}reserveTensorId(){let e=gn();return this.tensorTrackersById.set(e,new bn(this)),e}releaseTensorId(e){let t=this.tensorTrackersById.get(e);t&&(this.tensorTrackersById.delete(e),t.tensorWrapper&&this.releaseTensor(t.tensorWrapper))}async ensureTensor(e,t,n,r,i){q(`verbose`,()=>`[WebNN] TensorManager.ensureTensor {tensorId: ${t}, dataType: ${n}, shape: ${r}, copyOld: ${i}}`);let a=this.tensorTrackersById.get(t);if(!a)throw Error(`Tensor not found.`);return a.ensureTensor(e,n,r,i)}upload(e,t){let n=this.tensorTrackersById.get(e);if(!n)throw Error(`Tensor not found.`);n.upload(t)}async download(e,t){q(`verbose`,()=>`[WebNN] TensorManager.download {tensorId: ${e}, dstBuffer: ${t?.byteLength}}`);let n=this.tensorTrackersById.get(e);if(!n)throw Error(`Tensor not found.`);return n.download(t)}releaseTensorsForSession(e){for(let t of this.freeTensors)t.sessionId===e&&t.destroy();this.freeTensors=this.freeTensors.filter(t=>t.sessionId!==e)}registerTensor(e,t,n,r){let i=this.getMLContext(e),a=gn(),o=new yn({sessionId:e,context:i,tensor:t,dataType:n,shape:r});return this.tensorTrackersById.set(a,new bn(this,o)),this.externalTensors.add(o),a}async getCachedTensor(e,t,n,r,i,a,o){let s=this.getMLContext(e);for(let[r,i]of this.freeTensors.entries())if(i.canReuseTensor(s,t,n)){q(`verbose`,()=>`[WebNN] Reusing tensor {dataType: ${t}, ${o?`fallbackDataType: ${o},`:``} shape: ${n}`);let i=this.freeTensors.splice(r,1)[0];return i.sessionId=e,i}q(`verbose`,()=>`[WebNN] MLContext.createTensor {dataType: ${t}, ${o?`fallbackDataType: ${o},`:``} shape: ${n}}`);let c=await s.createTensor({dataType:o??t,shape:n,dimensions:n,usage:r,writable:i,readable:a});return new yn({sessionId:e,context:s,tensor:c,dataType:t,shape:n,fallbackDataType:o})}releaseTensor(e){this.externalTensors.has(e)&&this.externalTensors.delete(e),this.freeTensors.push(e)}},Sn=(...e)=>new xn(...e)}),wn={};le(wn,{WebNNBackend:()=>Dn});var Tn,En,Dn,On=j(()=>{$t(),Mt(),rn(),Cn(),dn(),Tn=new Map([[1,`float32`],[10,`float16`],[6,`int32`],[12,`uint32`],[7,`int64`],[13,`uint64`],[22,`int4`],[21,`uint4`],[3,`int8`],[2,`uint8`],[9,`uint8`]]),En=(e,t)=>{if(e===t)return!0;if(e===void 0||t===void 0)return!1;let n=Object.keys(e).sort(),r=Object.keys(t).sort();return n.length===r.length&&n.every((n,i)=>n===r[i]&&e[n]===t[n])},Dn=class{constructor(e){this.tensorManager=Sn(this),this.mlContextBySessionId=new Map,this.sessionIdsByMLContext=new Map,this.mlContextCache=[],this.sessionGraphInputs=new Map,this.sessionGraphOutputs=new Map,this.temporaryGraphInputs=[],this.temporaryGraphOutputs=[],this.temporarySessionTensorIds=new Map,this.mlOpSupportLimitsBySessionId=new Map,ln(e.logLevel,!!e.debug)}get currentSessionId(){if(this.activeSessionId===void 0)throw Error(`No active session`);return this.activeSessionId}onRunStart(e){q(`verbose`,()=>`[WebNN] onRunStart {sessionId: ${e}}`),this.activeSessionId=e}onRunEnd(e){q(`verbose`,()=>`[WebNN] onRunEnd {sessionId: ${e}}`);let t=this.temporarySessionTensorIds.get(e);if(t){for(let e of t)q(`verbose`,()=>`[WebNN] releasing temporary tensor {tensorId: ${e}}`),this.tensorManager.releaseTensorId(e);this.temporarySessionTensorIds.delete(e),this.activeSessionId=void 0}}async createMLContext(e){if(e instanceof GPUDevice){let t=this.mlContextCache.findIndex(t=>t.gpuDevice===e);if(t!==-1)return this.mlContextCache[t].mlContext;{let t=await navigator.ml.createContext(e);return this.mlContextCache.push({gpuDevice:e,mlContext:t}),t}}else if(e===void 0){let e=this.mlContextCache.findIndex(e=>e.options===void 0&&e.gpuDevice===void 0);if(e!==-1)return this.mlContextCache[e].mlContext;{let e=await navigator.ml.createContext();return this.mlContextCache.push({mlContext:e}),e}}let t=this.mlContextCache.findIndex(t=>En(t.options,e));if(t!==-1)return this.mlContextCache[t].mlContext;{let t=await navigator.ml.createContext(e);return this.mlContextCache.push({options:e,mlContext:t}),t}}registerMLContext(e,t){this.mlContextBySessionId.set(e,t);let n=this.sessionIdsByMLContext.get(t);n||(n=new Set,this.sessionIdsByMLContext.set(t,n)),n.add(e),this.mlOpSupportLimitsBySessionId.has(e)||this.mlOpSupportLimitsBySessionId.set(e,t.opSupportLimits()),this.temporaryGraphInputs.length>0&&(this.sessionGraphInputs.set(e,this.temporaryGraphInputs),this.temporaryGraphInputs=[]),this.temporaryGraphOutputs.length>0&&(this.sessionGraphOutputs.set(e,this.temporaryGraphOutputs),this.temporaryGraphOutputs=[])}onReleaseSession(e){this.sessionGraphInputs.delete(e),this.sessionGraphOutputs.delete(e);let t=this.mlContextBySessionId.get(e);if(!t)return;this.tensorManager.releaseTensorsForSession(e),this.mlContextBySessionId.delete(e),this.mlOpSupportLimitsBySessionId.delete(e);let n=this.sessionIdsByMLContext.get(t);if(n.delete(e),n.size===0){this.sessionIdsByMLContext.delete(t);let e=this.mlContextCache.findIndex(e=>e.mlContext===t);e!==-1&&this.mlContextCache.splice(e,1)}}getMLContext(e){return this.mlContextBySessionId.get(e)}getMLOpSupportLimits(e){return this.mlOpSupportLimitsBySessionId.get(e)}reserveTensorId(){return this.tensorManager.reserveTensorId()}releaseTensorId(e){q(`verbose`,()=>`[WebNN] releaseTensorId {tensorId: ${e}}`),this.tensorManager.releaseTensorId(e)}async ensureTensor(e,t,n,r,i){let a=Tn.get(n);if(!a)throw Error(`Unsupported ONNX data type: ${n}`);return this.tensorManager.ensureTensor(e??this.currentSessionId,t,a,r,i)}async createTemporaryTensor(e,t,n){q(`verbose`,()=>`[WebNN] createTemporaryTensor {onnxDataType: ${t}, shape: ${n}}`);let r=Tn.get(t);if(!r)throw Error(`Unsupported ONNX data type: ${t}`);let i=this.tensorManager.reserveTensorId();await this.tensorManager.ensureTensor(e,i,r,n,!1);let a=this.temporarySessionTensorIds.get(e);return a?a.push(i):this.temporarySessionTensorIds.set(e,[i]),i}uploadTensor(e,t){if(!W().shouldTransferToMLTensor)throw Error(`Trying to upload to a MLTensor while shouldTransferToMLTensor is false`);q(`verbose`,()=>`[WebNN] uploadTensor {tensorId: ${e}, data: ${t.byteLength}}`),this.tensorManager.upload(e,t)}async downloadTensor(e,t){return this.tensorManager.download(e,t)}createMLTensorDownloader(e,t){return async()=>{let n=await this.tensorManager.download(e);return nn(n,t)}}registerMLTensor(e,t,n,r){let i=Tn.get(n);if(!i)throw Error(`Unsupported ONNX data type: ${n}`);let a=this.tensorManager.registerTensor(e,t,i,r);return q(`verbose`,()=>`[WebNN] registerMLTensor {tensor: ${t}, dataType: ${i}, dimensions: ${r}} -> {tensorId: ${a}}`),a}registerMLConstant(e,t,n,r,i,a,o=!1){if(!a)throw Error(`External mounted files are not available.`);let s=e;e.startsWith(`./`)&&(s=e.substring(2));let c=a.get(s);if(!c)throw Error(`File with name ${s} not found in preloaded files.`);if(t+n>c.byteLength)throw Error(`Out of bounds: data offset and length exceed the external file data size.`);let l=c.slice(t,t+n).buffer,u;switch(i.dataType){case`float32`:u=new Float32Array(l);break;case`float16`:u=typeof Float16Array<`u`?new Float16Array(l):new Uint16Array(l);break;case`int32`:u=new Int32Array(l);break;case`uint32`:u=new Uint32Array(l);break;case`int64`:if(o){let e=pn(new Uint8Array(l),`int64`);u=new Int32Array(e.buffer),i.dataType=`int32`}else u=new BigInt64Array(l);break;case`uint64`:u=new BigUint64Array(l);break;case`int8`:u=new Int8Array(l);break;case`int4`:case`uint4`:case`uint8`:u=new Uint8Array(l);break;default:throw Error(`Unsupported data type: ${i.dataType} in creating WebNN Constant from external data.`)}return q(`verbose`,()=>`[WebNN] registerMLConstant {dataType: ${i.dataType}, shape: ${i.shape}}} ${o?`(Note: it was int64 data type and registered to int32 as workaround)`:``}`),r.constant(i,u)}registerGraphInput(e){this.temporaryGraphInputs.push(e)}registerGraphOutput(e){this.temporaryGraphOutputs.push(e)}isGraphInput(e,t){let n=this.sessionGraphInputs.get(e);return n?n.includes(t):!1}isGraphOutput(e,t){let n=this.sessionGraphOutputs.get(e);return n?n.includes(t):!1}isGraphInputOutputTypeSupported(e,t,n=!0){let r=Tn.get(K(t)),i=this.mlOpSupportLimitsBySessionId.get(e);return typeof r>`u`?!1:n?!!i?.input.dataTypes.includes(r):!!i?.output.dataTypes.includes(r)}flush(){}}}),kn,An,jn,Mn,Nn,Pn,Fn,In,Ln,Rn,zn,Bn,Vn,Hn=j(()=>{$e(),Lt(),Gt(),$t(),Mt(),Ft(),tn(),kn=(e,t)=>{W()._OrtInit(e,t)!==0&&G(`Can't initialize onnxruntime.`)},An=async e=>{kn(e.wasm.numThreads,Yt(e.logLevel))},jn=async(e,t)=>{W().asyncInit?.();let n=e.webgpu.adapter;if(t===`webgpu`){if(typeof navigator>`u`||!navigator.gpu)throw Error(`WebGPU is not supported in current environment`);if(n){if(typeof n.limits!=`object`||typeof n.features!=`object`||typeof n.requestDevice!=`function`)throw Error("Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.")}else{let t=e.webgpu.powerPreference;if(t!==void 0&&t!==`low-power`&&t!==`high-performance`)throw Error(`Invalid powerPreference setting: "${t}"`);let r=e.webgpu.forceFallbackAdapter;if(r!==void 0&&typeof r!=`boolean`)throw Error(`Invalid forceFallbackAdapter setting: "${r}"`);if(n=await navigator.gpu.requestAdapter({powerPreference:t,forceFallbackAdapter:r}),!n)throw Error(`Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.`)}}if(t===`webnn`&&(typeof navigator>`u`||!navigator.ml))throw Error(`WebNN is not supported in current environment`);if(t===`webgpu`&&W().webgpuInit(t=>{e.webgpu.device=t}),t===`webnn`){let t=new(On(),M(wn)).WebNNBackend(e);W().webnnInit([t,()=>t.reserveTensorId(),e=>t.releaseTensorId(e),async(e,n,r,i,a)=>t.ensureTensor(e,n,r,i,a),(e,n)=>{t.uploadTensor(e,n)},async(e,n)=>t.downloadTensor(e,n),(e,n)=>t.registerMLContext(e,n),!!e.trace])}},Mn=new Map,Nn=e=>{let t=W(),n=t.stackSave();try{let n=t.PTR_SIZE,r=t.stackAlloc(2*n);t._OrtGetInputOutputCount(e,r,r+n)!==0&&G(`Can't get session input/output count.`);let i=n===4?`i32`:`i64`;return[Number(t.getValue(r,i)),Number(t.getValue(r+n,i))]}finally{t.stackRestore(n)}},Pn=(e,t)=>{let n=W(),r=n.stackSave(),i=0;try{let r=n.PTR_SIZE,a=n.stackAlloc(2*r);n._OrtGetInputOutputMetadata(e,t,a,a+r)!==0&&G(`Can't get session input/output metadata.`);let o=Number(n.getValue(a,`*`));i=Number(n.getValue(a+r,`*`));let s=n.HEAP32[i/4];if(s===0)return[o,0];let c=n.HEAPU32[i/4+1],l=[];for(let e=0;e{let t=W(),n=t._malloc(e.byteLength);if(n===0)throw Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,n),[n,e.byteLength]},In=async(e,t)=>{let n,r,i=W();Array.isArray(e)?[n,r]=e:e.buffer===i.HEAPU8.buffer?[n,r]=[e.byteOffset,e.byteLength]:[n,r]=Fn(e);let a=0,o=0,s=0,c=[],l=[],u=[];try{if([o,c]=await Wt(t),t?.externalData&&i.mountExternalData){let e=[];for(let n of t.externalData){let t=typeof n==`string`?n:n.path;e.push(en(typeof n==`string`?n:n.data).then(e=>{i.mountExternalData(t,e)}))}await Promise.all(e)}for(let e of t?.executionProviders??[])if((typeof e==`string`?e:e.name)===`webnn`){if(i.shouldTransferToMLTensor=!1,typeof e!=`string`){let t=e,n=t?.context,r=t?.gpuDevice,a=t?.deviceType,o=t?.powerPreference;n?i.currentContext=n:r?i.currentContext=await i.webnnCreateMLContext(r):i.currentContext=await i.webnnCreateMLContext({deviceType:a,powerPreference:o})}else i.currentContext=await i.webnnCreateMLContext();break}a=await i._OrtCreateSession(n,r,o),i.webgpuOnCreateSession?.(a),a===0&&G(`Can't create a session.`),i.jsepOnCreateSession?.(),i.currentContext&&(i.webnnRegisterMLContext(a,i.currentContext),i.currentContext=void 0,i.shouldTransferToMLTensor=!0);let[e,d]=Nn(a),f=!!t?.enableGraphCapture,p=[],m=[],h=[],g=[],_=[];for(let t=0;te===`gpu-buffer`||e===`ml-tensor`||e===`ml-tensor-cpu-output`)&&(s=i._OrtCreateBinding(a),s===0&&G(`Can't create IO binding.`),v={handle:s,outputPreferredLocations:_,outputPreferredLocationsEncoded:_.map(e=>e===`ml-tensor-cpu-output`?`ml-tensor`:e).map(e=>Qt(e))}),Mn.set(a,[a,l,u,v,f,!1]),[a,p,m,h,g]}catch(e){throw l.forEach(e=>i._OrtFree(e)),u.forEach(e=>i._OrtFree(e)),s!==0&&i._OrtReleaseBinding(s)!==0&&G(`Can't release IO binding.`),a!==0&&i._OrtReleaseSession(a)!==0&&G(`Can't release session.`),e}finally{i._free(n),o!==0&&i._OrtReleaseSessionOptions(o)!==0&&G(`Can't release session options.`),c.forEach(e=>i._free(e)),i.unmountExternalData?.()}},Ln=e=>{let t=W(),n=Mn.get(e);if(!n)throw Error(`cannot release session. invalid session id: ${e}`);let[r,i,a,o,s]=n;o&&(s&&t._OrtClearBoundOutputs(o.handle)!==0&&G(`Can't clear bound outputs.`),t._OrtReleaseBinding(o.handle)!==0&&G(`Can't release IO binding.`)),t.jsepOnReleaseSession?.(e),t.webnnOnReleaseSession?.(e),t.webgpuOnReleaseSession?.(e),i.forEach(e=>t._OrtFree(e)),a.forEach(e=>t._OrtFree(e)),t._OrtReleaseSession(r)!==0&&G(`Can't release session.`),Mn.delete(e)},Rn=async(e,t,n,r,i,a,o=!1)=>{if(!e){t.push(0);return}let s=W(),c=s.PTR_SIZE,l=e[0],u=e[1],d=e[3],f=d,p,m;if(l===`string`&&(d===`gpu-buffer`||d===`ml-tensor`))throw Error(`String tensor is not supported on GPU.`);if(o&&d!==`gpu-buffer`)throw Error(`External buffer must be provided for input/output index ${a} when enableGraphCapture is true.`);if(d===`gpu-buffer`){let t=e[2].gpuBuffer;m=qt(K(l),u);{let e=s.webgpuRegisterBuffer;if(!e)throw Error(`Tensor location "gpu-buffer" is not supported without using WebGPU.`);p=e(t,r)}}else if(d===`ml-tensor`){let t=e[2].mlTensor;m=qt(K(l),u);let n=s.webnnRegisterMLTensor;if(!n)throw Error(`Tensor location "ml-tensor" is not supported without using WebNN.`);p=n(r,t,K(l),u)}else{let t=e[2];if(Array.isArray(t)){m=c*t.length,p=s._malloc(m),n.push(p);for(let e=0;es.setValue(g+t*c,e,c===4?`i32`:`i64`));let e=s._OrtCreateTensor(K(l),p,m,g,u.length,Qt(f));e===0&&G(`Can't create tensor for input/output. session=${r}, index=${a}.`),t.push(e)}finally{s.stackRestore(h)}},zn=async(e,t,n,r,i,a)=>{let o=W(),s=o.PTR_SIZE,c=Mn.get(e);if(!c)throw Error(`cannot run inference. invalid session id: ${e}`);let l=c[0],u=c[1],d=c[2],f=c[3],p=c[4],m=c[5],h=t.length,g=r.length,_=0,v=[],y=[],b=[],x=[],ee=[],S=o.stackSave(),C=o.stackAlloc(h*s),te=o.stackAlloc(h*s),w=o.stackAlloc(g*s),ne=o.stackAlloc(g*s);try{[_,v]=It(a),He(`wasm prepareInputOutputTensor`);for(let r=0;re*t,1);u=Kt(a);let _=f?.outputPreferredLocations[r[t]];if(u===`string`){if(_===`gpu-buffer`||_===`ml-tensor`)throw Error(`String tensor is not supported on GPU.`);let e=[];for(let t=0;t0){let t=o.webgpuGetBuffer;if(!t)throw Error(`preferredLocation "gpu-buffer" is not supported without using WebGPU.`);let r=t(d),i=qt(a,g);if(i===void 0||!Xt(u))throw Error(`Unsupported data type: ${u}`);l=!0;{o.webgpuRegisterBuffer(r,e,d);let t=o.webgpuCreateDownloader(r,i,e);S.push([u,h,{gpuBuffer:r,download:async()=>{let e=await t();return new(Jt(u))(e)},dispose:()=>{o._OrtReleaseTensor(n)!==0&&G(`Can't release tensor.`)}},`gpu-buffer`])}}else if(_===`ml-tensor`&&g>0){let t=o.webnnEnsureTensor,r=o.webnnIsGraphInputOutputTypeSupported;if(!t||!r)throw Error(`preferredLocation "ml-tensor" is not supported without using WebNN.`);if(qt(a,g)===void 0||!Zt(u))throw Error(`Unsupported data type: ${u}`);if(!r(e,u,!1))throw Error(`preferredLocation "ml-tensor" for ${u} output is not supported by current WebNN Context.`);let i=await t(e,d,a,h,!1);l=!0,S.push([u,h,{mlTensor:i,download:o.webnnCreateMLTensorDownloader(d,u),dispose:()=>{o.webnnReleaseTensorId(d),o._OrtReleaseTensor(n)}},`ml-tensor`])}else if(_===`ml-tensor-cpu-output`&&g>0){let e=o.webnnCreateMLTensorDownloader(d,u)(),t=S.length;l=!0,T.push((async()=>{let r=[t,await e];return o.webnnReleaseTensorId(d),o._OrtReleaseTensor(n),r})()),S.push([u,h,[],`cpu`])}else{let e=new(Jt(u))(g);new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(o.HEAPU8.subarray(d,d+e.byteLength)),S.push([u,h,e,`cpu`])}}finally{o.stackRestore(a),u===`string`&&d&&o._free(d),l||o._OrtReleaseTensor(n)}}f&&!p&&(o._OrtClearBoundOutputs(f.handle)!==0&&G(`Can't clear bound outputs.`),Mn.set(e,[l,u,d,f,p,!1]));for(let[e,t]of await Promise.all(T))S[e][2]=t;return Ue(`wasm ProcessOutputTensor`),S}finally{o.webnnOnRunEnd?.(l),o.stackRestore(S),n.forEach(e=>{e&&e[3]===`gpu-buffer`&&o.webgpuUnregisterBuffer(e[2].gpuBuffer)}),i.forEach(e=>{e&&e[3]===`gpu-buffer`&&o.webgpuUnregisterBuffer(e[2].gpuBuffer)}),y.forEach(e=>o._OrtReleaseTensor(e)),b.forEach(e=>o._OrtReleaseTensor(e)),x.forEach(e=>o._free(e)),_!==0&&o._OrtReleaseRunOptions(_),v.forEach(e=>o._free(e))}},Bn=e=>{let t=W(),n=Mn.get(e);if(!n)throw Error(`invalid session id`);let r=n[0],i=t._OrtEndProfiling(r);i===0&&G(`Can't get an profile file name.`),t._OrtFree(i)},Vn=e=>{let t=[];for(let n of e){let e=n[2];!Array.isArray(e)&&`buffer`in e&&t.push(e.buffer)}return t}}),Un,Wn,Gn,Kn,qn,Jn,Yn,Xn,Zn,J,Qn,$n,er,tr,Y,nr,rr,ir,ar=j(()=>{$e(),Hn(),Mt(),Ct(),Un=()=>!!L.wasm.proxy&&typeof document<`u`,Gn=!1,Kn=!1,qn=!1,Xn=new Map,Zn=(e,t)=>{let n=Xn.get(e);n?n.push(t):Xn.set(e,[t])},J=()=>{if(Gn||!Kn||qn||!Wn)throw Error(`worker not ready`)},Qn=e=>{switch(e.data.type){case`init-wasm`:Gn=!1,e.data.err?(qn=!0,Yn[1](e.data.err)):(Kn=!0,Yn[0]()),Jn&&=(URL.revokeObjectURL(Jn),void 0);break;case`init-ep`:case`copy-from`:case`create`:case`release`:case`run`:case`end-profiling`:{let t=Xn.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}default:}},$n=async()=>{if(!Kn){if(Gn)throw Error(`multiple calls to 'initWasm()' detected.`);if(qn)throw Error(`previous call to 'initWasm()' failed.`);if(Gn=!0,Un())return new Promise((e,t)=>{Wn?.terminate(),bt().then(([n,r])=>{try{Wn=r,Wn.onerror=e=>t(e),Wn.onmessage=Qn,Yn=[e,t];let i={type:`init-wasm`,in:L};!i.in.wasm.wasmPaths&&(n||ft)&&(i.in.wasm.wasmPaths={wasm:new URL(`/assets/ort-wasm-simd-threaded.asyncify-CvvOzbbq.wasm`,``+import.meta.url).href}),Wn.postMessage(i),Jn=n}catch(e){t(e)}},t)});try{await jt(L.wasm),await An(L),Kn=!0}catch(e){throw qn=!0,e}finally{Gn=!1}}},er=async e=>{if(Un())return J(),new Promise((t,n)=>{Zn(`init-ep`,[t,n]);let r={type:`init-ep`,in:{epName:e,env:L}};Wn.postMessage(r)});await jn(L,e)},tr=async e=>Un()?(J(),new Promise((t,n)=>{Zn(`copy-from`,[t,n]);let r={type:`copy-from`,in:{buffer:e}};Wn.postMessage(r,[e.buffer])})):Fn(e),Y=async(e,t)=>{if(Un()){if(t?.preferredOutputLocation)throw Error(`session option "preferredOutputLocation" is not supported for proxy.`);return J(),new Promise((n,r)=>{Zn(`create`,[n,r]);let i={type:`create`,in:{model:e,options:{...t}}},a=[];e instanceof Uint8Array&&a.push(e.buffer),Wn.postMessage(i,a)})}else return In(e,t)},nr=async e=>{if(Un())return J(),new Promise((t,n)=>{Zn(`release`,[t,n]);let r={type:`release`,in:e};Wn.postMessage(r)});Ln(e)},rr=async(e,t,n,r,i,a)=>{if(Un()){if(n.some(e=>e[3]!==`cpu`))throw Error(`input tensor on GPU is not supported for proxy.`);if(i.some(e=>e))throw Error(`pre-allocated output tensor is not supported for proxy.`);return J(),new Promise((i,o)=>{Zn(`run`,[i,o]);let s=n,c={type:`run`,in:{sessionId:e,inputIndices:t,inputs:s,outputIndices:r,options:a}};Wn.postMessage(c,Vn(s))})}else return zn(e,t,n,r,i,a)},ir=async e=>{if(Un())return J(),new Promise((t,n)=>{Zn(`end-profiling`,[t,n]);let r={type:`end-profiling`,in:e};Wn.postMessage(r)});Bn(e)}}),or,sr,cr,lr=j(()=>{$e(),ar(),$t(),et(),tn(),or=(e,t)=>{switch(e.location){case`cpu`:return[e.type,e.dims,e.data,`cpu`];case`gpu-buffer`:return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},`gpu-buffer`];case`ml-tensor`:return[e.type,e.dims,{mlTensor:e.mlTensor},`ml-tensor`];default:throw Error(`invalid data location: ${e.location} for ${t()}`)}},sr=e=>{switch(e[3]){case`cpu`:return new V(e[0],e[2],e[1]);case`gpu-buffer`:{let t=e[0];if(!Xt(t))throw Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:n,download:r,dispose:i}=e[2];return V.fromGpuBuffer(n,{dataType:t,dims:e[1],download:r,dispose:i})}case`ml-tensor`:{let t=e[0];if(!Zt(t))throw Error(`not supported data type: ${t} for deserializing MLTensor tensor`);let{mlTensor:n,download:r,dispose:i}=e[2];return V.fromMLTensor(n,{dataType:t,dims:e[1],download:r,dispose:i})}default:throw Error(`invalid data location: ${e[3]}`)}},cr=class{async fetchModelAndCopyToWasmMemory(e){return tr(await en(e))}async loadModel(e,t){Be();let n;n=typeof e==`string`?await this.fetchModelAndCopyToWasmMemory(e):e,[this.sessionId,this.inputNames,this.outputNames,this.inputMetadata,this.outputMetadata]=await Y(n,t),Ve()}async dispose(){return nr(this.sessionId)}async run(e,t,n){Be();let r=[],i=[];Object.entries(e).forEach(e=>{let t=e[0],n=e[1],a=this.inputNames.indexOf(t);if(a===-1)throw Error(`invalid input '${t}'`);r.push(n),i.push(a)});let a=[],o=[];Object.entries(t).forEach(e=>{let t=e[0],n=e[1],r=this.outputNames.indexOf(t);if(r===-1)throw Error(`invalid output '${t}'`);a.push(n),o.push(r)});let s=r.map((e,t)=>or(e,()=>`input "${this.inputNames[i[t]]}"`)),c=a.map((e,t)=>e?or(e,()=>`output "${this.outputNames[o[t]]}"`):null),l=await rr(this.sessionId,i,s,o,c,n),u={};for(let e=0;efr,initializeFlags:()=>dr,wasmBackend:()=>pr});var dr,fr,pr,mr=j(()=>{$e(),ar(),lr(),dr=()=>{(typeof L.wasm.initTimeout!=`number`||L.wasm.initTimeout<0)&&(L.wasm.initTimeout=0);let e=L.wasm.simd;if(typeof e!=`boolean`&&e!==void 0&&e!==`fixed`&&e!==`relaxed`&&(console.warn(`Property "env.wasm.simd" is set to unknown value "${e}". Reset it to \`false\` and ignore SIMD feature checking.`),L.wasm.simd=!1),typeof L.wasm.proxy!=`boolean`&&(L.wasm.proxy=!1),typeof L.wasm.trace!=`boolean`&&(L.wasm.trace=!1),typeof L.wasm.numThreads!=`number`||!Number.isInteger(L.wasm.numThreads)||L.wasm.numThreads<=0)if(typeof self<`u`&&!self.crossOriginIsolated)L.wasm.numThreads=1;else{let e=typeof navigator>`u`?A(`node:os`).cpus().length:navigator.hardwareConcurrency;L.wasm.numThreads=Math.min(4,Math.ceil((e||1)/2))}},fr=class{async init(e){dr(),await $n(),await er(e)}async createInferenceSessionHandler(e,t){let n=new cr;return await n.loadModel(e,t),n}},pr=new fr});$e(),$e(),$e();var hr=`1.27.0`;{let e=(mr(),M(ur)).wasmBackend;pe(`webgpu`,e,5),pe(`webnn`,e,5),pe(`cpu`,e,10),pe(`wasm`,e,10)}Object.defineProperty(L.versions,"web",{value:hr,enumerable:!0});function gr(e,t){let n=e[t];if(!(e instanceof Uint16Array))return Number(n);let r=n&32768?-1:1,i=n>>10&31,a=n&1023;return i===0?r*2**-14*(a/1024):i===31?a?NaN:r*(1/0):r*2**(i-15)*(1+a/1024)}function _r(e){let t=e.info;return[t.vendor,t.architecture,t.device,t.description].filter(Boolean).join(` · `)||`WebGPU adapter`}function vr(){if(!globalThis.crossOriginIsolated)return 1;let e=navigator.hardwareConcurrency||1;return Math.min(4,Math.ceil(e/2))}function yr(){let e=vr();return`WebAssembly CPU · ${e} ${e===1?`thread`:`threads`}`}async function br(e){if(e===`wasm`||!globalThis.isSecureContext||!navigator.gpu)return{supported:!0,adapter:yr(),shaderF16:!1,backend:`wasm`};let t=await navigator.gpu.requestAdapter({powerPreference:`high-performance`});return t?{supported:!0,adapter:_r(t),shaderF16:t.features.has(`shader-f16`),backend:`webgpu`}:{supported:!0,adapter:yr(),shaderF16:!1,backend:`wasm`}}var xr=new Float32Array(1),Sr=new Uint32Array(xr.buffer);function Cr(e){xr[0]=e;let t=Sr[0],n=t>>16&32768,r=(t>>23&255)-127+15,i=t&8388607;return r<=0?r<-10?n:(i=(i|8388608)>>1-r,n|i+4096>>13):r>=31?n|(i?32256:31744):(i+=4096,i&8388608&&(i=0,r+=1,r>=31)?n|31744:n|r<<10|i>>13)}function wr(e,t){if(t===`fp32`)return e;let n=new Uint16Array(e.length);for(let t=0;to&&(o=r,a=e)}r.push(a)}return{tokens:r,arrayType:n.constructor?.name||`unknown`,finiteValues:i,totalValues:n.length}}var Dr=class e{cacheLocation;encoder;crossCache;decoder;manifest;precision;adapter;backend;constructor(e,t,n,r,i,a,o){this.cacheLocation=r,this.encoder=i,this.crossCache=a,this.decoder=o,this.manifest=e,this.precision=e.precision,this.adapter=t,this.backend=n}static async create(t=`/models`,n=()=>{},r,i=!0,a=`webgpu`){L.logLevel=`error`,L.wasm.wasmPaths=`/ort/`;let o;if(a===`webgpu`){if(!globalThis.isSecureContext||!navigator.gpu)throw Error(`WebGPU needs Safari or Chrome over HTTPS (localhost also works). `);n(`Checking WebGPU…`);let e=await navigator.gpu.requestAdapter({powerPreference:`high-performance`});if(!e)throw Error(`No WebGPU adapter is available.`);L.webgpu.adapter=e,o=_r(e)}else n(`Starting the local CPU runtime…`),L.wasm.numThreads=vr(),o=yr(),i=!1;let s=r??`fp32`;if(a===`wasm`&&s===`fp16`)throw Error(`The CPU browser path uses the verified FP32 model.`);if(a===`webgpu`&&s===`fp16`&&!L.webgpu.adapter?.features.has(`shader-f16`))throw Error(`This WebGPU adapter cannot run the FP16 model.`);let c=`${t}/${s}`;n(`Loading the ${s.toUpperCase()} model…`);let l=await fetch(`${c}/manifest.json`,{cache:`no-cache`});if(!l.ok)throw Error(`${s.toUpperCase()} model manifest: HTTP ${l.status}`);let u=await l.json();if(u.precision!==s)throw Error(`Model precision does not match this GPU.`);let d={executionProviders:[a],graphOptimizationLevel:`all`,logSeverityLevel:3};n(`Compiling the encoder…`);let f=await qe.create(`${c}/encoder.onnx`,{...d,...i?{preferredOutputLocation:`gpu-buffer`}:{}});n(`Compiling the attention cache…`);let p=await qe.create(`${c}/cross_cache.onnx`,{...d,...i?{preferredOutputLocation:`gpu-buffer`}:{}});n(`Compiling the note decoder…`);let m={logits:`cpu`};for(let e=0;e<8;e++)m[`layer_${e}_present_self_key`]=`gpu-buffer`,m[`layer_${e}_present_self_value`]=`gpu-buffer`;let h=await qe.create(`${c}/decoder_step.onnx`,{...d,...i?{preferredOutputLocation:m}:{}});return new e(u,o,a,i?`gpu`:`cpu`,f,p,h)}async transcribeSegment(e,t){if(t?.aborted)throw new DOMException(`Cancelled`,`AbortError`);let n=this.precision===`fp16`?`float16`:`float32`,r=new V(n,wr(e,this.precision),[1,110,C]),i=performance.now(),a=await this.encoder.run({spectrogram:r}),o=performance.now()-i;r.dispose();let s=a.encoder_hidden_states,c=performance.now(),l=await this.crossCache.run({encoder_hidden_states:s}),u=performance.now()-c;s.dispose();let d=this.crossCache.outputNames.map(e=>l[e]),f=Array.from({length:16},()=>new V(n,this.precision===`fp16`?new Uint16Array:new Float32Array,[13,6,0,64])),p=Array(13).fill(0),m=Array(13).fill(!0),h=Array.from({length:13},()=>[]),g=`unknown`,_=0,v=0,y=[],b=0,x=0;try{for(let e=0;eo[e]);for(let e of f)e.dispose();f=l,p=c;for(let e=0;e<13;e++){let t=m[e]?c[e]:0;h[e].push(t),t===1&&(m[e]=!1)}if(m.every(e=>!e))break;e%8==7&&await new Promise(e=>requestAnimationFrame(()=>e()))}return{channels:h,diagnostics:{precision:this.precision,backend:this.backend,cacheLocation:this.cacheLocation,logitsArray:g,steps:b,endedChannels:m.filter(e=>!e).length,finiteLogits:_,totalLogits:v,firstTokens:y,channelPreviews:h.slice(0,3).map(e=>e.slice(0,12)),encoderMs:o,crossCacheMs:u,decoderMs:x}}}finally{for(let e of f)e.dispose();for(let e of d)e.dispose()}}async dispose(){await Promise.all([this.encoder.release(),this.crossCache.release(),this.decoder.release()])}};function Or(e){let t=e&127,n=[];for(;(e>>=7)>0;)t=t<<8|e&127|128;for(;n.push(t&255),t&128;)t>>=8;return n}function kr(e){return[e>>8&255,e&255]}function Ar(e){return[e>>24&255,e>>16&255,e>>8&255,e&255]}function jr(e,t){return[...Array.from(e).map(e=>e.charCodeAt(0)),...Ar(t.length),...t]}function Mr(e){let t=new Map;for(let n of e){let e=n.isDrum?`drums`:String(n.program),r=t.get(e)??[];r.push(n),t.set(e,r)}let n=[];n.push(jr(`MTrk`,[0,255,81,3,7,161,32,0,255,47,0]));let r=0;for(let[e,i]of t){let t=e===`drums`;for(;r===9;)r++;let a=t?9:r++%16,o=t?0:Number(e),s=[];t||s.push({tick:0,order:0,bytes:[192|a,o&127]});for(let e of i){let t=Math.max(0,Math.round(e.onset*960)),n=Math.max(t+1,Math.round(e.offset*960));s.push({tick:t,order:1,bytes:[144|a,e.pitch&127,100]}),s.push({tick:n,order:0,bytes:[128|a,e.pitch&127,0]})}s.sort((e,t)=>e.tick-t.tick||e.order-t.order);let c=[],l=0;for(let e of s)c.push(...Or(e.tick-l),...e.bytes),l=e.tick;c.push(0,255,47,0),n.push(jr(`MTrk`,c))}let i=jr(`MThd`,[...kr(1),...kr(n.length),...kr(480)]);return new Blob([new Uint8Array([...i,...n.flat()])],{type:`audio/midi`})}var X=i();function Nr({peaks:e,progress:t=0,className:n=``}){return(0,X.jsx)(`svg`,{className:n,viewBox:`0 0 ${e.length*4} 40`,preserveAspectRatio:`none`,"aria-hidden":`true`,children:e.map((n,r)=>(0,X.jsx)(`rect`,{x:r*4,y:20-Math.max(2,n*17),width:2.2,height:Math.max(4,n*34),rx:1.1,fill:`currentColor`,opacity:r/e.length<=t?1:.32},r))})}function Pr(){return(0,X.jsxs)(`svg`,{viewBox:`0 0 32 32`,fill:`none`,"aria-hidden":`true`,children:[(0,X.jsx)(`rect`,{width:`32`,height:`32`,rx:`10`,fill:`currentColor`}),(0,X.jsx)(`path`,{d:`M9 11v10m7-15v20m7-15v10`,stroke:`#17151b`,strokeWidth:`3`,strokeLinecap:`round`})]})}function Fr(){return(0,X.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:(0,X.jsx)(`path`,{d:`M12 16V3m-5 5 5-5 5 5M4 15v5a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-5`})})}function Ir(){return(0,X.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,"aria-hidden":`true`,children:[(0,X.jsx)(`rect`,{x:`9`,y:`2`,width:`6`,height:`13`,rx:`3`}),(0,X.jsx)(`path`,{d:`M5 11a7 7 0 0 0 14 0m-7 7v4m-4 0h8`})]})}function Lr(){return(0,X.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,X.jsx)(`path`,{d:`m12 3 8 3v6c0 5-8 9-8 9s-8-4-8-9V6l8-3Z`}),(0,X.jsx)(`path`,{d:`m8 12 3 3 5-6`})]})}function Rr(){return(0,X.jsxs)(`svg`,{className:`hero-notes`,viewBox:`0 0 290 105`,fill:`none`,"aria-hidden":`true`,children:[[12,32,52,72,92].map(e=>(0,X.jsx)(`path`,{d:`M0 ${e}H290`,stroke:`currentColor`,opacity:`.12`},e)),[[12,22,52],[42,42,74],[66,12,35],[104,64,78],[148,42,64],[170,22,46],[202,12,48],[230,64,45]].map(([e,t,n],r)=>(0,X.jsx)(`rect`,{x:e,y:t,width:n,height:`9`,rx:`3`,fill:r%3==0?`#efb58c`:r%3==1?`#b6aadf`:`#a5c6b4`,opacity:`.85`},r)),(0,X.jsx)(`path`,{d:`M130 0v105`,stroke:`#f2c9ae`,strokeWidth:`1.5`}),(0,X.jsx)(`circle`,{cx:`130`,cy:`3`,r:`3`,fill:`#f2c9ae`})]})}var zr=new URLSearchParams(window.location.search),Br=zr.get(`precision`),Vr=Br===`fp32`||Br===`fp16`?Br:void 0,Hr=zr.get(`cache`)!==`cpu`,Ur=zr.get(`backend`),Wr=Ur===`wasm`||Ur===`webgpu`?Ur:void 0,Gr={"Full band":`#efb58c`,Guitar:`#a7c6b4`,Electronic:`#b8a5df`,Rock:`#e7a4a4`,Folk:`#d5c095`,Pop:`#d9aacb`,"Hip-Hop":`#acb8df`,Instrumental:`#9ebec8`},Kr={acoustic_piano:`Piano`,electric_piano:`Electric piano`,chromatic_percussion:`Percussion`,clean_electric_guitar:`Electric guitar`,distorted_electric_guitar:`Electric guitar`,acoustic_guitar:`Acoustic guitar`,string_ensemble:`Strings`,singing_voice:`Voice`,singing_voice_chorus:`Choir`,soprano_and_alto_sax:`Saxophone`,flutes:`Flute`},qr=e=>Kr[e]??e.replaceAll(`_`,` `).replace(/^./,e=>e.toUpperCase()),Jr=e=>`${Math.floor(e/60)}:${Math.floor(e%60).toString().padStart(2,`0`)}`;function Yr(e){let t=Math.max(1,Math.ceil(e.length/56)),n=Array.from({length:56},(n,r)=>{let i=0,a=0;for(let n=r*t;n(e/r)**.65)}function Xr(){let t=(0,u.useRef)(null),n=t.current??=new c({soundfontUrl:`/soundfonts/GeneralUser_GS.sf2`}),i=(0,u.useRef)(null),s=(0,u.useRef)(null),d=(0,u.useRef)(null),f=(0,u.useRef)(null),[p,m]=(0,u.useState)(null),[g,_]=(0,u.useState)([]),[v,y]=(0,u.useState)(!1),[ee,S]=(0,u.useState)(`All`),[C,ne]=(0,u.useState)(null),[T,E]=(0,u.useState)(null),[re,O]=(0,u.useState)(`idle`),[ie,k]=(0,u.useState)(`Choose a clip below, or bring your own recording.`),[ae,oe]=(0,u.useState)(0),[se,ce]=(0,u.useState)([]),[A,j]=(0,u.useState)(null),[le,ue]=(0,u.useState)(12),[M,de]=(0,u.useState)(0),[fe,pe]=(0,u.useState)(Array(56).fill(0)),[me,N]=(0,u.useState)(!1),[P,he]=(0,u.useState)(!1),[ge,_e]=(0,u.useState)(``),[F,I]=(0,u.useState)(0),[ve,L]=(0,u.useState)(!1),[ye,be]=(0,u.useState)(0),[xe,Se]=(0,u.useState)(!1),[R,Ce]=(0,u.useState)(new Set),[we,Te]=(0,u.useState)(!1),[,z]=(0,u.useState)(!1);(0,u.useEffect)(()=>{br(Wr).then(m).catch(e=>m({supported:!1,adapter:``,shaderF16:!1,backend:`wasm`,reason:String(e)}))},[]),(0,u.useEffect)(()=>{let e=!0;return fetch(`/examples/catalog.json`).then(e=>{if(!e.ok)throw Error(`Example library unavailable`);return e.json()}).then(async t=>{if(!e)return;let n=[...t.examples].sort((e,n)=>Number(n.id===t.default_example)-Number(e.id===t.default_example));_(n),n.length&&await je(()=>Oe(n[0]))}).catch(()=>{e&&y(!0)}),()=>{e=!1}},[]),(0,u.useEffect)(()=>{n.setMix(F)},[n,F]),(0,u.useEffect)(()=>{let e=0,t=0,r=a=>{i.current?.setPlayhead(n.seconds),i.current?.render(),a-t>80&&(be(n.seconds),L(n.state===`started`),Se(n.synthesisMode!==`loading`),t=a),e=requestAnimationFrame(r)};return e=requestAnimationFrame(r),()=>cancelAnimationFrame(e)},[n]),(0,u.useEffect)(()=>()=>{d.current?.abort(),f.current?.stream.getTracks().forEach(e=>e.stop())},[]),(0,u.useEffect)(()=>()=>{A&&URL.revokeObjectURL(A)},[A]);function Ee(e){d.current?.abort(),n.reset(),i.current?.clear(),E(e),ne(null),ce([]),Ce(new Set),de(0),pe(Array(56).fill(0)),oe(0),O(`idle`),_e(``),j(null),k(`${e.name} is ready. Your recording stays on this device.`)}function De(e,t){ce(e),de(t),Ce(new Set),i.current?.setDuration(t);let r=document.querySelector(`.roll-stage canvas`);r&&i.current&&t&&i.current.zoomTime((r.clientWidth-56)/t/i.current.pxPerSec,56);for(let t of e){let e={pitch:t.pitch,start:t.onset,end:t.offset,instrument:h(t)};i.current?.addNote(e),i.current?.setNoteEnd(e,t.offset),n.scheduleNote({instrument:e.instrument,pitch:t.pitch,start:t.onset,end:t.offset})}t>0&&n.scheduleStop(t),j(URL.createObjectURL(Mr(e)))}async function Oe(e,t=!1){t&&await n.unlock(),k(`Opening ${e.title}…`);let[r,i]=await Promise.all([fetch(e.audio_url),fetch(e.notes_url)]);if(!r.ok||!i.ok)throw Error(`This clip could not load. Please try another.`);let[a,o]=await Promise.all([r.blob(),i.json()]),s=new File([a],`${e.title}.wav`,{type:`audio/wav`});Ee(s),ne(e),ue(12),pe(e.peaks),await n.loadWav(s),De(o.notes,o.duration),O(`done`),oe(1),k(`Ready to listen. Press play, then blend the original recording with MIDI.`),t&&await n.play()}async function ke(e){Ee(e),await n.loadWav(e);let t=Math.min(n.duration,le);de(t),t>0&&n.scheduleStop(t),I(0)}async function Ae(){if(!navigator.mediaDevices?.getUserMedia||typeof MediaRecorder>`u`)throw Error(`Recording is unavailable in this browser. Choose an audio file instead.`);n.pause();let e=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1,echoCancellation:!1,noiseSuppression:!1}}),t;try{t=new MediaRecorder(e)}catch(t){throw e.getTracks().forEach(e=>e.stop()),t}let r={recorder:t,stream:e,chunks:[]};f.current=r,t.ondataavailable=e=>{e.data.size&&r.chunks.push(e.data)},t.onstop=()=>{let n=new Blob(r.chunks,{type:t.mimeType||`audio/mp4`});e.getTracks().forEach(e=>e.stop()),f.current=null,N(!1),je(()=>ke(new File([n],`Your recording.${n.type.includes(`webm`)?`webm`:n.type.includes(`ogg`)?`ogg`:`m4a`}`,{type:n.type})))};try{t.start(250)}catch(t){throw e.getTracks().forEach(e=>e.stop()),f.current=null,t}N(!0),k(`Recording… stop when you have enough audio.`)}async function je(e){he(!0);try{await e()}catch(e){O(`error`),k(e instanceof Error?e.message:String(e))}finally{he(!1)}}async function Me(){if(!T||!p?.supported)return;let e=new AbortController;d.current?.abort(),d.current=e,O(`loading`),oe(0),_e(``),ce([]),j(null),Ce(new Set),n.reset(),i.current?.clear(),await n.unlock().catch(()=>{});let t=n.loadWav(T).catch(()=>{}),r=performance.now();try{k(`Reading your recording…`);let[n]=await Promise.all([te(T,le),t]);e.signal.throwIfAborted();let i=n.subarray(0,Math.min(n.length,Math.round(le*x))),a=i.length/x;pe(Yr(i)),de(a);let o=w(i);s.current||=await Dr.create(`/models`,t=>{e.signal.aborted||k(`Preparing Hendrix for your first transcription…`)},Vr,Hr,p.backend),e.signal.throwIfAborted();let c=s.current;O(`running`);let l=[],u=[];for(let t=0;tee===`All`||e.category===ee);return(0,X.jsxs)(`main`,{className:`local-shell`,children:[(0,X.jsxs)(`nav`,{className:`demo-nav`,"aria-label":`Main navigation`,children:[(0,X.jsxs)(`a`,{className:`demo-brand`,href:`/`,children:[(0,X.jsx)(Pr,{}),(0,X.jsxs)(`span`,{children:[`hendrix`,(0,X.jsx)(`span`,{className:`brand-period`,children:`.`})]})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`a`,{href:`#examples`,children:`Explore examples`}),(0,X.jsx)(`a`,{href:`#about`,children:`About`}),(0,X.jsxs)(`span`,{className:`privacy-pill`,children:[(0,X.jsx)(Lr,{}),` Audio stays on your device`]})]})]}),(0,X.jsxs)(`header`,{className:`local-hero`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`p`,{className:`eyebrow`,children:`MUSIC TRANSCRIPTION, WITHOUT THE UPLOAD`}),(0,X.jsxs)(`h1`,{children:[`Hear the music.`,(0,X.jsx)(`br`,{}),(0,X.jsx)(`em`,{children:`See the notes.`})]}),(0,X.jsx)(`p`,{children:`Turn a recording into editable MIDI. Hear what Hendrix finds, blend it with the original, and make it your own.`})]}),(0,X.jsxs)(`div`,{className:`hero-art`,children:[(0,X.jsx)(Rr,{}),(0,X.jsxs)(`span`,{children:[`sound `,(0,X.jsx)(`span`,{children:`→`}),` notes `,(0,X.jsx)(`span`,{children:`→`}),` your next idea`]})]})]}),(0,X.jsxs)(`section`,{className:`upload-panel ${we?`dragging`:``}`,"aria-label":`Upload a recording`,onDragOver:e=>{e.preventDefault(),B||Te(!0)},onDragLeave:()=>Te(!1),onDrop:e=>{e.preventDefault(),Te(!1);let t=e.dataTransfer.files[0];t&&!B&&je(()=>ke(t))},children:[(0,X.jsxs)(`div`,{className:`upload-copy`,children:[(0,X.jsx)(`span`,{className:`upload-icon`,children:(0,X.jsx)(Fr,{})}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`strong`,{children:`Bring your own music`}),(0,X.jsx)(`p`,{children:`Drop an audio file here. MP3, WAV, M4A, and more.`})]})]}),(0,X.jsxs)(`div`,{className:`upload-actions`,children:[(0,X.jsxs)(`label`,{className:`primary-button`,children:[(0,X.jsx)(Fr,{}),` Choose audio`,(0,X.jsx)(`input`,{type:`file`,accept:`audio/*`,disabled:B,hidden:!0,onChange:e=>{let t=e.target.files?.[0];t&&je(()=>ke(t)),e.target.value=``}})]}),(0,X.jsxs)(`button`,{className:me?`record-button`:`secondary-button`,disabled:!me&&(!p?.supported||B),onClick:()=>me?f.current?.recorder.stop():void je(Ae),children:[(0,X.jsx)(Ir,{}),me?`Stop recording`:`Record here`]})]})]}),(0,X.jsxs)(`div`,{className:`demo-workspace`,children:[(0,X.jsxs)(`aside`,{className:`example-library`,id:`examples`,"aria-label":`Example library`,children:[(0,X.jsxs)(`div`,{className:`library-heading`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`p`,{className:`eyebrow`,children:`A FEW PLACES TO START`}),(0,X.jsx)(`h2`,{children:`Press play on something.`})]}),(0,X.jsxs)(`span`,{className:`example-count`,children:[g.length,` clips`]})]}),(0,X.jsx)(`p`,{className:`library-intro`,children:`Real recordings and full-band mixes, ready to compare.`}),(0,X.jsx)(`div`,{className:`category-tabs`,"aria-label":`Filter examples`,children:[`All`,`Guitar`,`Rock`,`Electronic`,`Folk`].map(e=>(0,X.jsx)(`button`,{"aria-pressed":ee===e,onClick:()=>S(e),children:e},e))}),(0,X.jsx)(`div`,{className:`example-list`,children:Le.map(e=>(0,X.jsxs)(`button`,{className:`example-card ${C?.id===e.id?`selected`:``}`,style:{"--clip-color":Gr[e.category]??`#b6aadf`},disabled:B,"aria-pressed":C?.id===e.id,"aria-label":`Load ${e.title}`,onClick:()=>void je(()=>Oe(e,!0)),children:[(0,X.jsx)(`span`,{className:`clip-art`,children:(0,X.jsx)(Nr,{peaks:e.peaks.slice(0,14),progress:1})}),(0,X.jsxs)(`span`,{className:`clip-info`,children:[(0,X.jsx)(`strong`,{children:e.title}),(0,X.jsx)(`span`,{children:e.artist}),(0,X.jsxs)(`span`,{className:`clip-tags`,children:[e.category,(0,X.jsx)(`span`,{children:`·`}),Math.round(e.duration),`s`]})]}),(0,X.jsx)(`span`,{className:`clip-open`,children:(0,X.jsx)(o,{})})]},e.id))}),v&&(0,X.jsx)(`p`,{className:`library-empty`,children:`Examples could not load. You can still choose your own recording.`}),!g.length&&!v&&(0,X.jsx)(`p`,{className:`library-empty`,children:`Opening the collection…`}),(0,X.jsxs)(`p`,{className:`library-note`,children:[`Example transcriptions are prepared so you can listen right away. `,(0,X.jsx)(`a`,{href:`/examples/CREDITS.md`,target:`_blank`,rel:`noreferrer`,children:`Audio credits ↗`})]})]}),(0,X.jsxs)(`section`,{className:`listening-room`,"aria-label":`Listening workspace`,children:[(0,X.jsxs)(`div`,{className:`track-header`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`p`,{className:`eyebrow`,children:C?C.category:`YOUR RECORDING`}),(0,X.jsx)(`h2`,{children:V}),(0,X.jsx)(`p`,{className:`chosen-file`,children:C?.artist??(T?T.name:`Choose an example or an audio file to get started.`)})]}),A&&(0,X.jsxs)(`a`,{className:`download-button`,href:A,download:`${V}.mid`,children:[(0,X.jsx)(r,{}),` Download MIDI`]})]}),(0,X.jsxs)(`div`,{className:`roll-toolbar`,children:[(0,X.jsxs)(`span`,{className:`roll-label`,children:[(0,X.jsx)(`span`,{className:Ie?`status-dot ready`:`status-dot`}),Ie?`${se.length} notes · ${Pe.length} instruments`:`Your notes will appear here`]}),(0,X.jsx)(`span`,{children:`PIANO ROLL`})]}),(0,X.jsxs)(`div`,{className:`roll-stage`,children:[(0,X.jsx)(l,{rollRef:i,audio:n,setUserScrolled:z}),!se.length&&(0,X.jsxs)(`div`,{className:`roll-empty`,children:[(0,X.jsx)(Rr,{}),(0,X.jsx)(`strong`,{children:Fe?`Listening for notes…`:Ie?`No notes found in this clip`:`From sound to something you can play.`}),(0,X.jsx)(`span`,{children:Fe?`Hendrix is working on your device.`:`Choose a clip to see its notes here.`})]})]}),(0,X.jsxs)(`div`,{className:`instrument-row`,"aria-label":`Predicted instruments`,children:[Pe.map(e=>(0,X.jsxs)(`button`,{"aria-pressed":!R.has(e),"aria-label":`${R.has(e)?`Unmute`:`Mute`} ${qr(e)}`,onClick:()=>Ne(e),onMouseEnter:()=>i.current?.setHighlightedInstrument(e),onMouseLeave:()=>i.current?.setHighlightedInstrument(null),children:[(0,X.jsx)(`i`,{style:{background:a(e)}}),qr(e)]},e)),!Pe.length&&(0,X.jsx)(`span`,{children:`Instrument colors appear with your transcription.`})]}),(0,X.jsxs)(`div`,{className:`player`,children:[(0,X.jsxs)(`div`,{className:`transport-row`,children:[(0,X.jsx)(`button`,{className:`play-button ${ve?`playing`:``}`,disabled:!M||Fe||P,"aria-label":ve?`Pause playback`:`Play recording`,onClick:()=>{ve?n.pause():n.play().catch(e=>k(String(e)))},children:ve?(0,X.jsx)(e,{}):(0,X.jsx)(o,{})}),(0,X.jsx)(`span`,{className:`play-clock`,children:Jr(Math.min(ye,M))}),(0,X.jsxs)(`div`,{className:`waveform-seek`,children:[(0,X.jsx)(Nr,{peaks:fe,progress:M?ye/M:0}),(0,X.jsx)(`input`,{"aria-label":`Playback position`,type:`range`,min:0,max:M||1,step:`0.01`,value:Math.min(ye,M),disabled:!M||Fe,onChange:e=>n.seek(Number(e.target.value))})]}),(0,X.jsx)(`span`,{className:`play-clock duration`,children:Jr(M)}),(0,X.jsx)(`button`,{className:`restart-button`,disabled:!M||Fe,onClick:()=>n.seek(0),"aria-label":`Restart playback`,children:`↺`})]}),(0,X.jsxs)(`div`,{className:`blend-control`,children:[(0,X.jsxs)(`div`,{className:`blend-heading`,children:[(0,X.jsx)(`span`,{children:`Hear the difference`}),(0,X.jsxs)(`span`,{className:`blend-readout`,children:[Math.round((1-F)*100),`% original / `,Math.round(F*100),`% MIDI`]})]}),(0,X.jsxs)(`div`,{className:`blend-slider-row`,children:[(0,X.jsx)(`button`,{onClick:()=>I(0),disabled:!Ie,className:F===0?`active`:``,children:`Original`}),(0,X.jsx)(`input`,{className:`mix-slider`,"aria-label":`Original and MIDI blend`,"aria-valuetext":`${Math.round((1-F)*100)} percent original, ${Math.round(F*100)} percent MIDI`,type:`range`,min:`0`,max:`1`,step:`0.01`,value:F,disabled:!Ie||!xe,style:{"--mix-percent":`${F*100}%`},onChange:e=>I(Number(e.target.value))}),(0,X.jsx)(`button`,{onClick:()=>I(1),disabled:!Ie||!xe,className:F===1?`active`:``,children:`MIDI`})]}),(0,X.jsxs)(`p`,{className:`blend-hint`,children:[Ie?`Drag while playing to move between the recording and its transcription.`:`Transcribe your recording to compare it with MIDI.`,!xe&&` Instrument sounds are loading…`]})]})]}),(0,X.jsxs)(`div`,{className:`transcription-panel`,children:[(0,X.jsxs)(`div`,{className:`transcription-actions`,children:[(0,X.jsxs)(`label`,{className:`limit-label`,children:[`Transcribe first`,(0,X.jsxs)(`select`,{disabled:B,value:le,onChange:e=>ue(Number(e.target.value)),children:[(0,X.jsx)(`option`,{value:2.05,children:`2 seconds`}),(0,X.jsx)(`option`,{value:6,children:`6 seconds`}),(0,X.jsx)(`option`,{value:12,children:`12 seconds`}),(0,X.jsx)(`option`,{value:30,children:`30 seconds`}),(0,X.jsx)(`option`,{value:60,children:`60 seconds`})]})]}),(0,X.jsxs)(`button`,{className:`transcribe-button`,"aria-label":`Transcribe audio`,onClick:()=>void Me(),disabled:!T||!p?.supported||B,children:[Fe?`Transcribing…`:C&&Ie?`Transcribe again`:`Transcribe audio`,(0,X.jsx)(`span`,{children:`↗`})]}),Fe&&(0,X.jsx)(`button`,{className:`secondary-button`,onClick:()=>{d.current?.abort(),k(`Cancelling…`)},children:`Cancel`}),!1]}),Fe&&(0,X.jsx)(`div`,{className:`progress-track`,role:`progressbar`,"aria-label":`Transcription progress`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(ae*100),children:(0,X.jsx)(`div`,{style:{width:`${ae*100}%`}})}),(0,X.jsx)(`p`,{role:`status`,"aria-live":`polite`,className:re===`error`?`run-status error`:`run-status`,children:ie}),(0,X.jsx)(`p`,{className:`download-hint`,children:`Your first live transcription downloads the 195 MB model. Examples are ready without it.`})]})]})]}),(0,X.jsxs)(`footer`,{className:`local-footer`,id:`about`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`a`,{className:`demo-brand`,href:`/`,children:[(0,X.jsx)(Pr,{}),(0,X.jsx)(`span`,{children:`hendrix.`})]}),(0,X.jsx)(`p`,{children:`Music in. Editable notes out.`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`p`,{children:`Runs in your browser. Your recordings stay with you.`}),(0,X.jsx)(`p`,{children:`Predictions may miss notes or get an instrument or note length wrong. Listen, edit, and make it yours.`}),(0,X.jsxs)(`details`,{className:`runtime-details`,children:[(0,X.jsx)(`summary`,{children:`About this demo`}),(0,X.jsx)(`p`,{className:`capability-card`,children:p?.supported?`${p.adapter} · Hendrix · 195 MB model`:p?.reason??`Checking your browser…`}),(0,X.jsx)(`p`,{children:`Example notes are prepared Hendrix predictions. Choose “Transcribe again” to run the model on your device. MIDI plays through the GeneralUser GS instrument library by S. Christian Collins.`}),ge&&(0,X.jsxs)(`details`,{className:`run-diagnostics`,children:[(0,X.jsx)(`summary`,{children:`Transcription details`}),(0,X.jsx)(`p`,{className:`diagnostic-output`,children:ge})]}),(0,X.jsxs)(`div`,{className:`local-footer-links`,children:[(0,X.jsx)(`a`,{href:`https://github.com/jackboyla/hendrix`,target:`_blank`,rel:`noreferrer`,children:`Source & research ↗`}),(0,X.jsx)(`a`,{href:`/examples/CREDITS.md`,target:`_blank`,rel:`noreferrer`,children:`Audio credits ↗`}),(0,X.jsx)(`a`,{href:`/local.html?backend=wasm`,children:`Use CPU processing`})]})]})]})]})]})}(0,d.createRoot)(document.getElementById(`root`)).render((0,X.jsx)(Xr,{})); \ No newline at end of file diff --git a/assets/style-3Z1guUf2.js b/assets/style-3Z1guUf2.js new file mode 100644 index 0000000000000000000000000000000000000000..b11cb1c268b5625daf9fd1d8a8f11dd3cd156349 --- /dev/null +++ b/assets/style-3Z1guUf2.js @@ -0,0 +1,220 @@ +var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),t=(e=>typeof require<`u`?require:typeof Proxy<`u`?new Proxy(e,{get:(e,t)=>(typeof require<`u`?require:e)[t]}):e)(function(e){if(typeof require<`u`)return require.apply(this,arguments);throw Error('Calling `require` for "'+e+"\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.")});(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var n=e((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&ne(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&ne(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var ee=new MessageChannel,te=ee.port2;ee.port1.onmessage=D,O=function(){te.postMessage(null)}}else O=function(){_(D,0)};function ne(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,ne(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),r=e(((e,t)=>{t.exports=n()})),i=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ee(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var te=/\/+/g;function ne(e,t){return typeof e==`object`&&e&&e.key!=null?ee(``+e.key):t.toString(36)}function re(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function ie(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,ie(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+ne(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(te,`$&/`)+`/`),ie(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(te,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=i()})),o=e((e=>{var t=a();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=o()})),c=e((e=>{var t=r(),n=a(),i=s();function o(e){var t=`https://react.dev/errors/`+e;if(1le||(e.current=ce[le],ce[le]=null,le--)}function N(e,t){le++,ce[le]=e.current,e.current=t}var P=j(null),ue=j(null),de=j(null),fe=j(null);function pe(e,t){switch(N(de,t),N(ue,e),N(P,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}M(P),N(P,e)}function me(){M(P),M(ue),M(de)}function he(e){e.memoizedState!==null&&N(fe,e);var t=P.current,n=Hd(t,e.type);t!==n&&(N(ue,e),N(P,n))}function ge(e){ue.current===e&&(M(P),M(ue)),fe.current===e&&(M(fe),Qf._currentValue=se)}var _e,ve;function ye(e){if(_e===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);_e=t&&t[1]||``,ve=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{be=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?ye(n):``}function Se(e,t){switch(e.tag){case 26:case 27:case 5:return ye(e.type);case 16:return ye(`Lazy`);case 13:return e.child!==t&&t!==null?ye(`Suspense Fallback`):ye(`Suspense`);case 19:return ye(`SuspenseList`);case 0:case 15:return xe(e.type,!1);case 11:return xe(e.type.render,!1);case 1:return xe(e.type,!0);case 31:return ye(`Activity`);default:return``}}function Ce(e){try{var t=``,n=null;do t+=Se(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var we=Object.prototype.hasOwnProperty,Te=t.unstable_scheduleCallback,Ee=t.unstable_cancelCallback,De=t.unstable_shouldYield,Oe=t.unstable_requestPaint,ke=t.unstable_now,Ae=t.unstable_getCurrentPriorityLevel,je=t.unstable_ImmediatePriority,Me=t.unstable_UserBlockingPriority,Ne=t.unstable_NormalPriority,Pe=t.unstable_LowPriority,Fe=t.unstable_IdlePriority,Ie=t.log,Le=t.unstable_setDisableYieldValue,Re=null,ze=null;function Be(e){if(typeof Ie==`function`&&Le(e),ze&&typeof ze.setStrictMode==`function`)try{ze.setStrictMode(Re,e)}catch{}}var Ve=Math.clz32?Math.clz32:We,He=Math.log,Ue=Math.LN2;function We(e){return e>>>=0,e===0?32:31-(He(e)/Ue|0)|0}var Ge=256,Ke=262144,qe=4194304;function Je(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ye(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Je(n))):i=Je(o):i=Je(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Je(n))):i=Je(o)):i=Je(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function Xe(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Ze(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Qe(){var e=qe;return qe<<=1,!(qe&62914560)&&(qe=4194304),e}function $e(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function et(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function tt(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),mn=!1;if(pn)try{var hn={};Object.defineProperty(hn,"passive",{get:function(){mn=!0}}),window.addEventListener(`test`,hn,hn),window.removeEventListener(`test`,hn,hn)}catch{mn=!1}var gn=null,_n=null,vn=null;function yn(){if(vn)return vn;var e,t=_n,n=t.length,r,i=`value`in gn?gn.value:gn.textContent,a=i.length;for(e=0;e=Zn),er=` `,tr=!1;function nr(e,t){switch(e){case`keyup`:return Yn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function rr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var ir=!1;function ar(e,t){switch(e){case`compositionend`:return rr(t);case`keypress`:return t.which===32?(tr=!0,er):null;case`textInput`:return e=t.data,e===er&&tr?null:e;default:return null}}function or(e,t){if(ir)return e===`compositionend`||!Xn&&nr(e,t)?(e=yn(),vn=_n=gn=null,ir=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Or(n)}}function Ar(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ar(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function jr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Bt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Bt(e.document)}return t}function Mr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Nr=pn&&`documentMode`in document&&11>=document.documentMode,Pr=null,Fr=null,Ir=null,Lr=!1;function Rr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Lr||Pr==null||Pr!==Bt(r)||(r=Pr,`selectionStart`in r&&Mr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Ir&&Dr(Ir,r)||(Ir=r,r=Td(Fr,`onSelect`),0>=o,i-=o,Ai=1<<32-Ve(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),o=a(_,o,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),F&&Mi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(i,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(i,h),s=a(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(i,h),F&&Mi(i,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(i,v.value,l),v!==null&&(s=a(v,s,g),d===null?u=v:d.sibling=v,d=v);return F&&Mi(i,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,i,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=a(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(i,e)}),F&&Mi(i,g),u}function b(e,r,a,c){if(typeof a==`object`&&a&&a.type===y&&a.key===null&&(a=a.props.children),typeof a==`object`&&a){switch(a.$$typeof){case _:a:{for(var l=a.key;r!==null;){if(r.key===l){if(l=a.type,l===y){if(r.tag===7){n(e,r.sibling),c=i(r,a.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===O&&ja(l)===r.type){n(e,r.sibling),c=i(r,a.props),Ra(c,a),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}a.type===y?(c=_i(a.props.children,e.mode,c,a.key),c.return=e,e=c):(c=gi(a.type,a.key,a.props,null,e.mode,c),Ra(c,a),c.return=e,e=c)}return s(e);case v:a:{for(l=a.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),c=i(r,a.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=bi(a,e.mode,c),c.return=e,e=c}return s(e);case O:return a=ja(a),b(e,r,a,c)}if(oe(a))return h(e,r,a,c);if(re(a)){if(l=re(a),typeof l!=`function`)throw Error(o(150));return a=l.call(a),g(e,r,a,c)}if(typeof a.then==`function`)return b(e,r,La(a),c);if(a.$$typeof===C)return b(e,r,oa(e,a),c);za(e,a)}return typeof a==`string`&&a!==``||typeof a==`number`||typeof a==`bigint`?(a=``+a,r!==null&&r.tag===6?(n(e,r.sibling),c=i(r,a),c.return=e,e=c):(n(e,r),c=vi(a,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Ia=0;var i=b(e,t,n,r);return Fa=null,i}catch(t){if(t===Ta||t===Da)throw t;var a=fi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Va=Ba(!0),Ha=Ba(!1),Ua=!1;function Wa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ga(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ka(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function qa(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,zl&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=li(e),ci(e,null,n),t}return ai(e,r,t,n),li(e)}function Ja(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,rt(e,n)}}function Ya(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Xa=!1;function Za(){if(Xa){var e=ga;if(e!==null)throw e}}function Qa(e,t,n,r){Xa=!1;var i=e.updateQueue;Ua=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(q&f)===f:(r&f)===f){f!==0&&f===I&&(Xa=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:Ua=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Kl|=o,e.lanes=o,e.memoizedState=d}}function $a(e,t){if(typeof e!=`function`)throw Error(o(191,e));e.call(t)}function eo(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=k.T,s={};k.T=s,Ls(e,!1,t,n);try{var c=i(),l=k.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Is(e,t,ya(c,r),mu(e)):Is(e,t,r,mu(e))}catch(n){Is(e,t,{then:function(){},status:`rejected`,reason:n},mu())}finally{A.p=a,o!==null&&s.types!==null&&(o.types=s.types),k.T=o}}function Es(){}function Ds(e,t,n,r){if(e.tag!==5)throw Error(o(476));var i=Os(e).queue;Ts(e,i,t,se,n===null?Es:function(){return ks(e),n(r)})}function Os(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:se,baseState:se,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vo,lastRenderedState:se},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vo,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ks(e){var t=Os(e);t.next===null&&(t=e.alternate.memoizedState),Is(e,t.next.queue,{},mu())}function As(){return aa(Qf)}function js(){return Io().memoizedState}function Ms(){return Io().memoizedState}function Ns(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=mu();e=Ka(n);var r=qa(t,e,n);r!==null&&(X(r,t,n),Ja(r,t,n)),t={cache:fa()},e.payload=t;return}t=t.return}}function Ps(e,t,n){var r=mu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Rs(e)?zs(t,n):(n=oi(e,t,n,r),n!==null&&(X(n,e,r),Bs(n,t,r)))}function Fs(e,t,n){Is(e,t,n,mu())}function Is(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Rs(e))zs(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Er(s,o))return ai(e,t,i,0),Bl===null&&ii(),!1}catch{}if(n=oi(e,t,i,r),n!==null)return X(n,e,r),Bs(n,t,r),!0}return!1}function Ls(e,t,n,r){if(r={lane:2,revertLane:ud(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Rs(e)){if(t)throw Error(o(479))}else t=oi(e,n,r,2),t!==null&&X(t,e,2)}function Rs(e){var t=e.alternate;return e===L||t!==null&&t===L}function zs(e,t){bo=yo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Bs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,rt(e,n)}}var Vs={readContext:aa,use:zo,useCallback:Eo,useContext:Eo,useEffect:Eo,useImperativeHandle:Eo,useLayoutEffect:Eo,useInsertionEffect:Eo,useMemo:Eo,useReducer:Eo,useRef:Eo,useState:Eo,useDebugValue:Eo,useDeferredValue:Eo,useTransition:Eo,useSyncExternalStore:Eo,useId:Eo,useHostTransitionStatus:Eo,useFormState:Eo,useActionState:Eo,useOptimistic:Eo,useMemoCache:Eo,useCacheRefresh:Eo};Vs.useEffectEvent=Eo;var Hs={readContext:aa,use:zo,useCallback:function(e,t){return Fo().memoizedState=[e,t===void 0?null:t],e},useContext:aa,useEffect:ps,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),ds(4194308,4,ys.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ds(4194308,4,e,t)},useInsertionEffect:function(e,t){ds(4,2,e,t)},useMemo:function(e,t){var n=Fo();t=t===void 0?null:t;var r=e();if(xo){Be(!0);try{e()}finally{Be(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Fo();if(n!==void 0){var i=n(t);if(xo){Be(!0);try{n(t)}finally{Be(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Ps.bind(null,L,e),[r.memoizedState,e]},useRef:function(e){var t=Fo();return e={current:e},t.memoizedState=e},useState:function(e){e=z(e);var t=e.queue,n=Fs.bind(null,L,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:B,useDeferredValue:function(e,t){return Cs(Fo(),e,t)},useTransition:function(){var e=z(!1);return e=Ts.bind(null,L,e.queue,!0,!1),Fo().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=L,i=Fo();if(F){if(n===void 0)throw Error(o(407));n=n()}else{if(n=t(),Bl===null)throw Error(o(349));q&127||Go(r,t,n)}i.memoizedState=n;var a={value:n,getSnapshot:t};return i.queue=a,ps(qo.bind(null,r,a,e),[e]),r.flags|=2048,ls(9,{destroy:void 0},Ko.bind(null,r,a,n,t),null),n},useId:function(){var e=Fo(),t=Bl.identifierPrefix;if(F){var n=ji,r=Ai;n=(r&~(1<<32-Ve(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=So++,0<\/script>`,a=a.removeChild(a.firstChild);break;case`select`:a=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a=typeof r.is==`string`?s.createElement(i,{is:r.is}):s.createElement(i)}}a[ut]=t,a[dt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)a.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=a;a:switch(Pd(a,i,r),i){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Fc(t)}}return Bc(t),Ic(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Fc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(o(166));if(e=de.current,Gi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,i=Li,i!==null)switch(i.tag){case 27:case 5:r=i.memoizedProps}e[ut]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||jd(e.nodeValue,n)),e||Hi(t,!0)}else e=Bd(e).createTextNode(r),e[ut]=t,t.stateNode=e}return Bc(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Gi(t),n!==null){if(e===null){if(!r)throw Error(o(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(o(557));e[ut]=t}else Ki(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Bc(t),e=!1}else n=qi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(po(t),t):(po(t),null);if(t.flags&128)throw Error(o(558))}return Bc(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=Gi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!i)throw Error(o(318));if(i=t.memoizedState,i=i===null?null:i.dehydrated,!i)throw Error(o(317));i[ut]=t}else Ki(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Bc(t),i=!1}else i=qi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(po(t),t):(po(t),null)}return po(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,i=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(i=r.alternate.memoizedState.cachePool.pool),a=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(a=r.memoizedState.cachePool.pool),a!==i&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Rc(t,t.updateQueue),Bc(t),null);case 4:return me(),e===null&&xd(t.stateNode.containerInfo),Bc(t),null;case 10:return $i(t.type),Bc(t),null;case 19:if(M(mo),r=t.memoizedState,r===null)return Bc(t),null;if(i=(t.flags&128)!=0,a=r.rendering,a===null)if(i)zc(r,!1);else{if(Gl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(a=ho(e),a!==null){for(t.flags|=128,zc(r,!1),e=a.updateQueue,t.updateQueue=e,Rc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)hi(n,e),n=n.sibling;return N(mo,mo.current&1|2),F&&Mi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&ke()>nu&&(t.flags|=128,i=!0,zc(r,!1),t.lanes=4194304)}else{if(!i)if(e=ho(a),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,Rc(t,e),zc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!a.alternate&&!F)return Bc(t),null}else 2*ke()-r.renderingStartTime>nu&&n!==536870912&&(t.flags|=128,i=!0,zc(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(e=r.last,e===null?t.child=a:e.sibling=a,r.last=a)}return r.tail===null?(Bc(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=ke(),e.sibling=null,n=mo.current,N(mo,i?n&1|2:n&1),F&&Mi(t,r.treeForkCount),e);case 22:case 23:return po(t),ao(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Bc(t),t.subtreeFlags&6&&(t.flags|=8192)):Bc(t),n=t.updateQueue,n!==null&&Rc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&M(xa),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),$i(da),Bc(t),null;case 25:return null;case 30:return null}throw Error(o(156,t.tag))}function Hc(e,t){switch(Fi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return $i(da),me(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ge(t),null;case 31:if(t.memoizedState!==null){if(po(t),t.alternate===null)throw Error(o(340));Ki()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(po(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(o(340));Ki()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return M(mo),null;case 4:return me(),null;case 10:return $i(t.type),null;case 22:case 23:return po(t),ao(),e!==null&&M(xa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return $i(da),null;case 25:return null;default:return null}}function Uc(e,t){switch(Fi(t),t.tag){case 3:$i(da),me();break;case 26:case 27:case 5:ge(t);break;case 4:me();break;case 31:t.memoizedState!==null&&po(t);break;case 13:po(t);break;case 19:M(mo);break;case 10:$i(t.type);break;case 22:case 23:po(t),ao(),e!==null&&M(xa);break;case 24:$i(da)}}function Wc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Gu(t,t.return,e)}}function Gc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Gu(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Gu(t,t.return,e)}}function Kc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{eo(t,n)}catch(t){Gu(e,e.return,t)}}}function qc(e,t,n){n.props=Ys(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Gu(e,t,n)}}function Jc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Gu(e,t,n)}}function Yc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Gu(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Gu(e,t,n)}else n.current=null}function Xc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Gu(e,e.return,t)}}function Zc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[dt]=t}catch(t){Gu(e,e.return,t)}}function Qc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function $c(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Qc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function el(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=rn));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(el(e,t,n),e=e.sibling;e!==null;)el(e,t,n),e=e.sibling}function tl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(tl(e,t,n),e=e.sibling;e!==null;)tl(e,t,n),e=e.sibling}function nl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[ut]=e,t[dt]=n}catch(t){Gu(e,e.return,t)}}var rl=!1,il=!1,al=!1,ol=typeof WeakSet==`function`?WeakSet:Set,sl=null;function cl(e,t){if(e=e.containerInfo,Rd=sp,e=jr(e),Mr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,a=r.focusNode;r=r.focusOffset;try{n.nodeType,a.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||i!==0&&f.nodeType!==3||(c=s+i),f!==a||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===i&&(c=s),p===a&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,sl=t;sl!==null;)if(t=sl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,sl=e;else for(;sl!==null;){switch(t=sl,a=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(a,r,n),a[ut]=e,Ct(a),r=a;break a;case`link`:var s=Vf(`link`,`href`,i).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=kr(s,h),v=kr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,k.T=null,n=uu,uu=null;var a=ou,s=cu;if(au=0,su=ou=null,cu=0,zl&6)throw Error(o(331));var c=zl;if(zl|=4,Fl(a.current),kl(a,a.current,s,n),zl=c,Z(0,!1),ze&&typeof ze.onPostCommitFiberRoot==`function`)try{ze.onPostCommitFiberRoot(Re,a)}catch{}return!0}finally{A.p=i,k.T=r,Vu(e,t)}}function Wu(e,t,n){t=Si(n,t),t=tc(e.stateNode,t,2),e=qa(e,t,2),e!==null&&(et(e,2),id(e))}function Gu(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(iu===null||!iu.has(r))){e=Si(n,e),n=nc(2),r=qa(t,n,2),r!==null&&(rc(n,r,t,e),et(r,2),id(r));break}}t=t.return}}function Ku(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new G;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Ul=!0,i.add(n),e=qu.bind(null,e,t,n),t.then(e,e))}function qu(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Bl===e&&(q&n)===n&&(Gl===4||Gl===3&&(q&62914560)===q&&300>ke()-eu?!(zl&2)&&Su(e,0):Jl|=n,Xl===q&&(Xl=0)),id(e)}function Ju(e,t){t===0&&(t=Qe()),e=si(e,t),e!==null&&(et(e,t),id(e))}function Yu(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Ju(e,n)}function Xu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(o(314))}r!==null&&r.delete(t),Ju(e,n)}function Zu(e,t){return Te(e,t)}var Qu=null,$u=null,ed=!1,td=!1,nd=!1,rd=0;function id(e){e!==$u&&e.next===null&&($u===null?Qu=$u=e:$u=$u.next=e),td=!0,ed||(ed=!0,ld())}function Z(e,t){if(!nd&&td){nd=!0;do for(var n=!1,r=Qu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Ve(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,cd(r,a))}else a=q,a=Ye(r,r===Bl?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||Xe(r,a)||(n=!0,cd(r,a));r=r.next}while(n);nd=!1}}function Q(){ad()}function ad(){td=ed=!1;var e=0;rd!==0&&Gd()&&(e=rd);for(var t=ke(),n=null,r=Qu;r!==null;){var i=r.next,a=od(r,t);a===0?(r.next=null,n===null?Qu=i:n.next=i,i===null&&($u=n)):(n=r,(e!==0||a&3)&&(td=!0)),r=i}au!==0&&au!==5||Z(e,!1),rd!==0&&(rd=0)}function od(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Ht(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),Ct(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Ht(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Ht(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Ht(n.imageSizes)+`"]`)):i+=`[href="`+Ht(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),Ct(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Ht(r)+`"][href="`+Ht(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),Ct(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=St(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);Ct(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=St(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),Ct(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=St(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),Ct(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var i=(i=de.current)?gf(i):null;if(!i)throw Error(o(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=St(i).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var a=St(i).hoistableStyles,s=a.get(e);if(s||(i=i.ownerDocument||i,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},a.set(e,s),(a=i.querySelector(jf(e)))&&!a._p&&(s.instance=a,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),a||Nf(i,e,n,s.state))),t&&r===null)throw Error(o(528,``));return s}if(t&&r!==null)throw Error(o(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=St(i).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(o(444,e))}}function Af(e){return`href="`+Ht(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),Ct(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Ht(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Ht(n.href)+`"]`);if(r)return t.instance=r,Ct(r),r;var i=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Ct(r),Pd(r,`style`,i),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:i=Af(n.href);var a=e.querySelector(jf(i));if(a)return t.state.loading|=4,t.instance=a,Ct(a),a;r=Mf(n),(i=mf.get(i))&&Rf(r,i),a=(e.ownerDocument||e).createElement(`link`),Ct(a);var s=a;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(a,`link`,r),t.state.loading|=4,Lf(a,n.precedence,e),t.instance=a;case`script`:return a=Pf(n.src),(i=e.querySelector(Ff(a)))?(t.instance=i,Ct(i),i):(r=n,(i=mf.get(a))&&(r=h({},n),zf(r,i)),e=e.ownerDocument||e,i=e.createElement(`script`),Ct(i),Pd(i,`link`,r),e.head.appendChild(i),t.instance=i);case`void`:return null;default:throw Error(o(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Ct(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),Ct(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=c()})),u=`15.1.22`,d=e(((e,t)=>{function n(e){if(Array.isArray(e))return e}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})),f=e(((e,t)=>{function n(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})),p=e(((e,t)=>{function n(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{var n=p();function r(e,t){if(e){if(typeof e==`string`)return n(e,t);var r={}.toString.call(e).slice(8,-1);return r===`Object`&&e.constructor&&(r=e.constructor.name),r===`Map`||r===`Set`?Array.from(e):r===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports})),h=e(((e,t)=>{function n(){throw TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})),g=e(((e,t)=>{var n=d(),r=f(),i=m(),a=h();function o(e,t){return n(e)||r(e,t)||i(e,t)||a()}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports})),_=e(((e,t)=>{function n(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})),v=e(((e,t)=>{function n(e){"@babel/helpers - typeof";return t.exports=n=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},t.exports.__esModule=!0,t.exports.default=t.exports,n(e)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})),y=e(((e,t)=>{var n=v().default;function r(e,t){if(n(e)!=`object`||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t||`default`);if(n(i)!=`object`)return i;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports})),b=e(((e,t)=>{var n=v().default,r=y();function i(e){var t=r(e,`string`);return n(t)==`symbol`?t:t+``}t.exports=i,t.exports.__esModule=!0,t.exports.default=t.exports})),x=e(((e,t)=>{var n=b();function r(e,t){for(var r=0;r{(function(n,r){typeof e==`object`&&t!==void 0?r(e,g(),_(),x()):typeof define==`function`&&define.amd?define([`exports`,`@babel/runtime/helpers/slicedToArray`,`@babel/runtime/helpers/classCallCheck`,`@babel/runtime/helpers/createClass`],r):(n=typeof globalThis<`u`?globalThis:n||self,r(n.automationEvents={},n._slicedToArray,n._classCallCheck,n._createClass))})(e,(function(e,t,n,r){var i=function(e,t,n){return{endTime:t,insertTime:n,type:`exponentialRampToValue`,value:e}},a=function(e,t,n){return{endTime:t,insertTime:n,type:`linearRampToValue`,value:e}},o=function(e,t){return{startTime:t,type:`setValue`,value:e}},s=function(e,t,n){return{duration:n,startTime:t,type:`setValueCurve`,values:e}},c=function(e,t,n){var r=n.startTime,i=n.target,a=n.timeConstant;return i+(t-i)*Math.exp((r-e)/a)},l=function(e){return e.type===`exponentialRampToValue`},u=function(e){return e.type===`linearRampToValue`},d=function(e){return l(e)||u(e)},f=function(e){return e.type===`setValue`},p=function(e){return e.type===`setValueCurve`},m=function(e,t,n,r){var i=e[t];return i===void 0?r:d(i)||f(i)?i.value:p(i)?i.values[i.values.length-1]:c(n,m(e,t-1,i.startTime,r),i)},h=function(e,t,n,r,i){return n===void 0?[r.insertTime,i]:d(n)?[n.endTime,n.value]:f(n)?[n.startTime,n.value]:p(n)?[n.startTime+n.duration,n.values[n.values.length-1]]:[n.startTime,m(e,t-1,n.startTime,i)]},g=function(e){return e.type===`cancelAndHold`},_=function(e){return e.type===`cancelScheduledValues`},v=function(e){return g(e)||_(e)?e.cancelTime:l(e)||u(e)?e.endTime:e.startTime},y=function(e,t,n,r){var i=r.endTime,a=r.value;return n===a?a:0=t:v(n)>=t}),r=this._automationEvents[n];if(n!==-1&&(this._automationEvents=this._automationEvents.slice(0,n)),g(e)){var c=this._automationEvents[this._automationEvents.length-1];if(r!==void 0&&d(r)){if(c!==void 0&&w(c))throw Error(`The internal list is malformed.`);var f=c===void 0?r.insertTime:p(c)?c.startTime+c.duration:v(c),m=c===void 0?this._defaultValue:p(c)?c.values[c.values.length-1]:c.value,h=l(r)?y(t,f,m,r):b(t,f,m,r),x=l(r)?i(h,t,this._currenTime):a(h,t,this._currenTime);this._automationEvents.push(x)}if(c!==void 0&&w(c)&&this._automationEvents.push(o(this.getValue(t),t)),c!==void 0&&p(c)&&c.startTime+c.duration>t){var S=t-c.startTime;this._automationEvents[this._automationEvents.length-1]=s(C(c.values,c.duration,S),c.startTime,S)}}}else{var T=this._automationEvents.findIndex(function(e){return v(e)>t}),E=T===-1?this._automationEvents[this._automationEvents.length-1]:this._automationEvents[T-1];if(E!==void 0&&p(E)&&v(E)+E.duration>t)return!1;var D=l(e)?i(e.value,e.endTime,this._currenTime):u(e)?a(e.value,t,this._currenTime):e;if(T===-1)this._automationEvents.push(D);else{if(p(e)&&t+e.duration>v(this._automationEvents[T]))return!1;this._automationEvents.splice(T,0,D)}}return!0}},{key:`flush`,value:function(e){var t=this._automationEvents.findIndex(function(t){return v(t)>e});if(t>1){var n=this._automationEvents.slice(t-1),r=n[0];w(r)&&n.unshift(o(m(this._automationEvents,t-2,r.startTime,this._defaultValue),r.startTime)),this._automationEvents=n}}},{key:`getValue`,value:function(e){if(this._automationEvents.length===0)return this._defaultValue;var n=this._automationEvents.findIndex(function(t){return v(t)>e}),r=this._automationEvents[n],i=(n===-1?this._automationEvents.length:n)-1,a=this._automationEvents[i];if(a!==void 0&&w(a)&&(r===void 0||!d(r)||r.insertTime>e))return c(e,m(this._automationEvents,i-1,a.startTime,this._defaultValue),a);if(a!==void 0&&f(a)&&(r===void 0||!d(r)))return a.value;if(a!==void 0&&p(a)&&(r===void 0||!d(r)||a.startTime+a.duration>e))return enew DOMException(``,`AbortError`),w=e=>(t,n,[r,i,a],o)=>{e(t[i],[n,r,a],e=>e[0]===n&&e[1]===r,o)},T=e=>(t,n,r)=>{let i=[];for(let e=0;e(t,n)=>{e.set(t,{activeInputs:new Set,passiveInputs:new WeakMap,renderer:n})},D=new WeakSet,O=new WeakMap,ee=new WeakMap,te=new WeakMap,ne=new WeakMap,re=new WeakMap,ie=new WeakMap,ae=new WeakMap,oe=new WeakMap,k=new WeakMap,A={construct(){return A}},se=e=>{try{new new Proxy(e,A)}catch{return!1}return!0},ce=/^import(?:(?:[\s]+[\w]+|(?:[\s]+[\w]+[\s]*,)?[\s]*\{[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?(?:[\s]*,[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?)*[\s]*}|(?:[\s]+[\w]+[\s]*,)?[\s]*\*[\s]+as[\s]+[\w]+)[\s]+from)?(?:[\s]*)("([^"\\]|\\.)+"|'([^'\\]|\\.)+')(?:[\s]*);?/,le=(e,t)=>{let n=[],r=e.replace(/^[\s]+/,``),i=r.match(ce);for(;i!==null;){let e=i[1].slice(1,-1),a=i[0].replace(/([\s]+)?;?$/,``).replace(e,new URL(e,t).toString());n.push(a),r=r.slice(i[0].length).replace(/^[\s]+/,``),i=r.match(ce)}return[n.join(`;`),r]},j=e=>{if(e!==void 0&&!Array.isArray(e))throw TypeError(`The parameterDescriptors property of given value for processorCtor is not an array.`)},M=e=>{if(!se(e))throw TypeError(`The given value for processorCtor should be a constructor.`);if(e.prototype===null||typeof e.prototype!=`object`)throw TypeError(`The given value for processorCtor should have a prototype.`)},N=(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{let p=0;return(m,h,g={credentials:`omit`})=>{let _=u.get(m);if(_!==void 0&&_.has(h))return Promise.resolve();let v=l.get(m);if(v!==void 0){let e=v.get(h);if(e!==void 0)return e}let y=a(m),b=y.audioWorklet===void 0?i(h).then(([e,t])=>{let[r,i]=le(e,t);return n(`${r};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${i} +})})(window,'_AWGS')`)}).then(()=>{let e=f._AWGS.pop();if(e===void 0)throw SyntaxError();r(y.currentTime,y.sampleRate,()=>e(class{},void 0,(e,n)=>{if(e.trim()===``)throw t();let r=oe.get(y);if(r!==void 0){if(r.has(e))throw t();M(n),j(n.parameterDescriptors),r.set(e,n)}else M(n),j(n.parameterDescriptors),oe.set(y,new Map([[e,n]]))},y.sampleRate,void 0,void 0))}):Promise.all([i(h),Promise.resolve(e(d,d))]).then(([[e,t],n])=>{let r=p+1;p=r;let[i,a]=le(e,t),l=`${i};((AudioWorkletProcessor,registerProcessor)=>{${a} +})(${n?`AudioWorkletProcessor`:`class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}`},(n,p)=>registerProcessor(n,class extends p{${n?``:`__c = (a) => a.forEach(e=>this.__b.add(e.buffer));`}process(i,o,p){${n?``:`i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));`}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${r}',class extends AudioWorkletProcessor{process(){return !1}})`,u=new Blob([l],{type:`application/javascript; charset=utf-8`}),d=URL.createObjectURL(u);return y.audioWorklet.addModule(d,g).then(()=>{if(s(y))return y;let e=o(y);return e.audioWorklet.addModule(d,g).then(()=>e)}).then(e=>{if(c===null)throw SyntaxError();try{new c(e,`__sac${r}`)}catch{throw SyntaxError()}}).finally(()=>URL.revokeObjectURL(d))});return v===void 0?l.set(m,new Map([[h,b]])):v.set(h,b),b.then(()=>{let e=u.get(m);e===void 0?u.set(m,new Set([h])):e.add(h)}).finally(()=>{let e=l.get(m);e!==void 0&&e.delete(h)}),b}},P=(e,t)=>{let n=e.get(t);if(n===void 0)throw Error(`A value with the given key could not be found.`);return n},ue=(e,t)=>{let n=Array.from(e).filter(t);if(n.length>1)throw Error(`More than one element was found.`);if(n.length===0)throw Error(`No element was found.`);let[r]=n;return e.delete(r),r},de=(e,t,n,r)=>{let i=P(e,t),a=ue(i,e=>e[0]===n&&e[1]===r);return i.size===0&&e.delete(t),a},fe=e=>P(ie,e),pe=e=>{if(D.has(e))throw Error(`The AudioNode is already stored.`);D.add(e),fe(e).forEach(e=>e(!0))},me=e=>`port`in e,he=e=>{if(!D.has(e))throw Error(`The AudioNode is not stored.`);D.delete(e),fe(e).forEach(e=>e(!1))},ge=(e,t)=>{!me(e)&&t.every(e=>e.size===0)&&he(e)},_e=(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{let p=new WeakMap;return(m,h,g,_,v)=>{let{activeInputs:y,passiveInputs:b}=a(h),{outputs:x}=a(m),S=s(m),C=a=>{let s=c(h),l=c(m);if(a)e(y,m,de(b,m,g,_),!1),!v&&!d(m)&&n(l,s,g,_),f(h)&&pe(h);else{t(b,_,r(y,m,g,_),!1),!v&&!d(m)&&i(l,s,g,_);let e=o(h);if(e===0)u(h)&&ge(h,y);else{let t=p.get(h);t!==void 0&&clearTimeout(t),p.set(h,setTimeout(()=>{u(h)&&ge(h,y)},e*1e3))}}};return l(x,[h,g,_],e=>e[0]===h&&e[1]===g&&e[2]===_,!0)?(S.add(C),u(m)?e(y,m,[g,_,C],!0):t(b,_,[m,g,C],!0),!0):!1}},ve=e=>(t,n,[r,i,a],o)=>{let s=t.get(r);s===void 0?t.set(r,new Set([[i,n,a]])):e(s,[i,n,a],e=>e[0]===i&&e[1]===n,o)},ye=e=>(t,n)=>{let r=e(t,{channelCount:1,channelCountMode:`explicit`,channelInterpretation:`discrete`,gain:0});n.connect(r).connect(t.destination);let i=()=>{n.removeEventListener(`ended`,i),n.disconnect(r),r.disconnect()};n.addEventListener(`ended`,i)},be=e=>(t,n)=>{e(t).add(n)},xe={channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`,fftSize:2048,maxDecibels:-30,minDecibels:-100,smoothingTimeConstant:.8},Se=(e,t,n,r,i,a)=>class extends e{constructor(e,n){let o=i(e),s=r(o,{...xe,...n}),c=a(o)?t():null;super(e,!1,s,c),this._nativeAnalyserNode=s}get fftSize(){return this._nativeAnalyserNode.fftSize}set fftSize(e){this._nativeAnalyserNode.fftSize=e}get frequencyBinCount(){return this._nativeAnalyserNode.frequencyBinCount}get maxDecibels(){return this._nativeAnalyserNode.maxDecibels}set maxDecibels(e){let t=this._nativeAnalyserNode.maxDecibels;if(this._nativeAnalyserNode.maxDecibels=e,!(e>this._nativeAnalyserNode.minDecibels))throw this._nativeAnalyserNode.maxDecibels=t,n()}get minDecibels(){return this._nativeAnalyserNode.minDecibels}set minDecibels(e){let t=this._nativeAnalyserNode.minDecibels;if(this._nativeAnalyserNode.minDecibels=e,!(this._nativeAnalyserNode.maxDecibels>e))throw this._nativeAnalyserNode.minDecibels=t,n()}get smoothingTimeConstant(){return this._nativeAnalyserNode.smoothingTimeConstant}set smoothingTimeConstant(e){this._nativeAnalyserNode.smoothingTimeConstant=e}getByteFrequencyData(e){this._nativeAnalyserNode.getByteFrequencyData(e)}getByteTimeDomainData(e){this._nativeAnalyserNode.getByteTimeDomainData(e)}getFloatFrequencyData(e){this._nativeAnalyserNode.getFloatFrequencyData(e)}getFloatTimeDomainData(e){this._nativeAnalyserNode.getFloatTimeDomainData(e)}},Ce=(e,t)=>e.context===t,we=(e,t,n)=>()=>{let r=new WeakMap,i=async(i,a)=>{let o=t(i);return Ce(o,a)||(o=e(a,{channelCount:o.channelCount,channelCountMode:o.channelCountMode,channelInterpretation:o.channelInterpretation,fftSize:o.fftSize,maxDecibels:o.maxDecibels,minDecibels:o.minDecibels,smoothingTimeConstant:o.smoothingTimeConstant})),r.set(a,o),await n(i,a,o),o};return{render(e,t){let n=r.get(t);return n===void 0?i(e,t):Promise.resolve(n)}}},Te=e=>{try{e.copyToChannel(new Float32Array(1),0,-1)}catch{return!1}return!0},Ee=()=>new DOMException(``,`IndexSizeError`),De=e=>{e.getChannelData=(t=>n=>{try{return t.call(e,n)}catch(e){throw e.code===12?Ee():e}})(e.getChannelData)},Oe={numberOfChannels:1},ke=(e,t,n,r,i,a,o,s)=>{let c=null;return class l{constructor(l){if(i===null)throw Error(`Missing the native OfflineAudioContext constructor.`);let{length:u,numberOfChannels:d,sampleRate:f}={...Oe,...l};c===null&&(c=new i(1,1,44100));let p=r!==null&&t(a,a)?new r({length:u,numberOfChannels:d,sampleRate:f}):c.createBuffer(d,u,f);if(p.numberOfChannels===0)throw n();return typeof p.copyFromChannel==`function`?t(Te,()=>Te(p))||s(p):(o(p),De(p)),e.add(p),p}static[Symbol.hasInstance](t){return typeof t==`object`&&!!t&&Object.getPrototypeOf(t)===l.prototype||e.has(t)}}},Ae=-34028234663852886e22,je=34028234663852886e22,Me=e=>D.has(e),Ne={buffer:null,channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`,loop:!1,loopEnd:0,loopStart:0,playbackRate:1},Pe=(e,t,n,r,i,a,o,s)=>class extends e{constructor(e,r){let s=a(e),c={...Ne,...r},l=i(s,c),u=o(s),d=u?t():null;super(e,!1,l,d),this._audioBufferSourceNodeRenderer=d,this._isBufferNullified=!1,this._isBufferSet=c.buffer!==null,this._nativeAudioBufferSourceNode=l,this._onended=null,this._playbackRate=n(this,u,l.playbackRate,je,Ae)}get buffer(){return this._isBufferNullified?null:this._nativeAudioBufferSourceNode.buffer}set buffer(e){if(this._nativeAudioBufferSourceNode.buffer=e,e!==null){if(this._isBufferSet)throw r();this._isBufferSet=!0}}get loop(){return this._nativeAudioBufferSourceNode.loop}set loop(e){this._nativeAudioBufferSourceNode.loop=e}get loopEnd(){return this._nativeAudioBufferSourceNode.loopEnd}set loopEnd(e){this._nativeAudioBufferSourceNode.loopEnd=e}get loopStart(){return this._nativeAudioBufferSourceNode.loopStart}set loopStart(e){this._nativeAudioBufferSourceNode.loopStart=e}get onended(){return this._onended}set onended(e){let t=typeof e==`function`?s(this,e):null;this._nativeAudioBufferSourceNode.onended=t;let n=this._nativeAudioBufferSourceNode.onended;this._onended=n!==null&&n===t?e:n}get playbackRate(){return this._playbackRate}start(e=0,t=0,n){if(this._nativeAudioBufferSourceNode.start(e,t,n),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.start=n===void 0?[e,t]:[e,t,n]),this.context.state!==`closed`){pe(this);let e=()=>{this._nativeAudioBufferSourceNode.removeEventListener(`ended`,e),Me(this)&&he(this)};this._nativeAudioBufferSourceNode.addEventListener(`ended`,e)}}stop(e=0){this._nativeAudioBufferSourceNode.stop(e),this._audioBufferSourceNodeRenderer!==null&&(this._audioBufferSourceNodeRenderer.stop=e)}},Fe=(e,t,n,r,i)=>()=>{let a=new WeakMap,o=null,s=null,c=async(c,l)=>{let u=n(c),d=Ce(u,l);return d||(u=t(l,{buffer:u.buffer,channelCount:u.channelCount,channelCountMode:u.channelCountMode,channelInterpretation:u.channelInterpretation,loop:u.loop,loopEnd:u.loopEnd,loopStart:u.loopStart,playbackRate:u.playbackRate.value}),o!==null&&u.start(...o),s!==null&&u.stop(s)),a.set(l,u),d?await e(l,c.playbackRate,u.playbackRate):await r(l,c.playbackRate,u.playbackRate),await i(c,l,u),u};return{set start(e){o=e},set stop(e){s=e},render(e,t){let n=a.get(t);return n===void 0?c(e,t):Promise.resolve(n)}}},Ie=e=>`playbackRate`in e,Le=e=>`frequency`in e&&`gain`in e,Re=e=>`offset`in e,ze=e=>!(`frequency`in e)&&`gain`in e,Be=e=>`detune`in e&&`frequency`in e&&!(`gain`in e),Ve=e=>`pan`in e,He=e=>P(O,e),Ue=e=>P(te,e),We=(e,t)=>{let{activeInputs:n}=He(e);n.forEach(n=>n.forEach(([n])=>{t.includes(e)||We(n,[...t,e])}));let r=Ie(e)?[e.playbackRate]:me(e)?Array.from(e.parameters.values()):Le(e)?[e.Q,e.detune,e.frequency,e.gain]:Re(e)?[e.offset]:ze(e)?[e.gain]:Be(e)?[e.detune,e.frequency]:Ve(e)?[e.pan]:[];for(let e of r){let n=Ue(e);n!==void 0&&n.activeInputs.forEach(([e])=>We(e,t))}Me(e)&&he(e)},Ge=e=>{We(e.destination,[])},Ke=e=>e===void 0||typeof e==`number`||typeof e==`string`&&(e===`balanced`||e===`interactive`||e===`playback`),qe=(e,t,n,r,i,a,o,s,c)=>class extends e{constructor(e={}){if(c===null)throw Error(`Missing the native AudioContext constructor.`);let t;try{t=new c(e)}catch(e){throw e.code===12&&e.message===`sampleRate is not in range`?n():e}if(t===null)throw r();if(!Ke(e.latencyHint))throw TypeError(`The provided value '${e.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);if(e.sampleRate!==void 0&&t.sampleRate!==e.sampleRate)throw n();super(t,2);let{latencyHint:i}=e,{sampleRate:a}=t;if(this._baseLatency=typeof t.baseLatency==`number`?t.baseLatency:i===`balanced`?512/a:i===`interactive`||i===void 0?256/a:i===`playback`?1024/a:Math.max(2,Math.min(128,Math.round(i*a/128)))*128/a,this._nativeAudioContext=t,c.name===`webkitAudioContext`?(this._nativeGainNode=t.createGain(),this._nativeOscillatorNode=t.createOscillator(),this._nativeGainNode.gain.value=1e-37,this._nativeOscillatorNode.connect(this._nativeGainNode).connect(t.destination),this._nativeOscillatorNode.start()):(this._nativeGainNode=null,this._nativeOscillatorNode=null),this._state=null,t.state===`running`){this._state=`suspended`;let e=()=>{this._state===`suspended`&&(this._state=null),t.removeEventListener(`statechange`,e)};t.addEventListener(`statechange`,e)}}get baseLatency(){return this._baseLatency}get state(){return this._state===null?this._nativeAudioContext.state:this._state}close(){return this.state===`closed`?this._nativeAudioContext.close().then(()=>{throw t()}):(this._state===`suspended`&&(this._state=null),this._nativeAudioContext.close().then(()=>{this._nativeGainNode!==null&&this._nativeOscillatorNode!==null&&(this._nativeOscillatorNode.stop(),this._nativeGainNode.disconnect(),this._nativeOscillatorNode.disconnect()),Ge(this)}))}createMediaElementSource(e){return new i(this,{mediaElement:e})}createMediaStreamDestination(){return new a(this)}createMediaStreamSource(e){return new o(this,{mediaStream:e})}createMediaStreamTrackSource(e){return new s(this,{mediaStreamTrack:e})}resume(){return this._state===`suspended`?new Promise((e,t)=>{let n=()=>{this._nativeAudioContext.removeEventListener(`statechange`,n),this._nativeAudioContext.state===`running`?e():this.resume().then(e,t)};this._nativeAudioContext.addEventListener(`statechange`,n)}):this._nativeAudioContext.resume().catch(e=>{throw e===void 0||e.code===15?t():e})}suspend(){return this._nativeAudioContext.suspend().catch(e=>{throw e===void 0?t():e})}},Je=(e,t,n,r,i,a,o,s)=>class extends e{constructor(e,n){let r=a(e),c=o(r),l=i(r,n,c),u=c?t(s):null;super(e,!1,l,u),this._isNodeOfNativeOfflineAudioContext=c,this._nativeAudioDestinationNode=l}get channelCount(){return this._nativeAudioDestinationNode.channelCount}set channelCount(e){if(this._isNodeOfNativeOfflineAudioContext)throw r();if(e>this._nativeAudioDestinationNode.maxChannelCount)throw n();this._nativeAudioDestinationNode.channelCount=e}get channelCountMode(){return this._nativeAudioDestinationNode.channelCountMode}set channelCountMode(e){if(this._isNodeOfNativeOfflineAudioContext)throw r();this._nativeAudioDestinationNode.channelCountMode=e}get maxChannelCount(){return this._nativeAudioDestinationNode.maxChannelCount}},Ye=e=>{let t=new WeakMap,n=async(n,r)=>{let i=r.destination;return t.set(r,i),await e(n,r,i),i};return{render(e,r){let i=t.get(r);return i===void 0?n(e,r):Promise.resolve(i)}}},Xe=(e,t,n,r,i,a,o,s)=>(c,l)=>{let u=l.listener,{forwardX:d,forwardY:f,forwardZ:p,positionX:m,positionY:h,positionZ:g,upX:_,upY:v,upZ:y}=u.forwardX===void 0?(()=>{let d=new Float32Array(1),f=t(l,{channelCount:1,channelCountMode:`explicit`,channelInterpretation:`speakers`,numberOfInputs:9}),p=o(l),m=!1,h=[0,0,-1,0,1,0],g=[0,0,0],_=()=>{if(m)return;m=!0;let e=r(l,256,9,0);e.onaudioprocess=({inputBuffer:e})=>{let t=[a(e,d,0),a(e,d,1),a(e,d,2),a(e,d,3),a(e,d,4),a(e,d,5)];t.some((e,t)=>e!==h[t])&&(u.setOrientation(...t),h=t);let n=[a(e,d,6),a(e,d,7),a(e,d,8)];n.some((e,t)=>e!==g[t])&&(u.setPosition(...n),g=n)},f.connect(e)},v=e=>t=>{t!==h[e]&&(h[e]=t,u.setOrientation(...h))},y=e=>t=>{t!==g[e]&&(g[e]=t,u.setPosition(...g))},b=(t,r,a)=>{let o=n(l,{channelCount:1,channelCountMode:`explicit`,channelInterpretation:`discrete`,offset:r});o.connect(f,0,t),o.start(),Object.defineProperty(o.offset,"defaultValue",{get(){return r}});let u=e({context:c},p,o.offset,je,Ae);return s(u,`value`,e=>()=>e.call(u),e=>t=>{try{e.call(u,t)}catch(e){if(e.code!==9)throw e}_(),p&&a(t)}),u.cancelAndHoldAtTime=(e=>p?()=>{throw i()}:(...t)=>{let n=e.apply(u,t);return _(),n})(u.cancelAndHoldAtTime),u.cancelScheduledValues=(e=>p?()=>{throw i()}:(...t)=>{let n=e.apply(u,t);return _(),n})(u.cancelScheduledValues),u.exponentialRampToValueAtTime=(e=>p?()=>{throw i()}:(...t)=>{let n=e.apply(u,t);return _(),n})(u.exponentialRampToValueAtTime),u.linearRampToValueAtTime=(e=>p?()=>{throw i()}:(...t)=>{let n=e.apply(u,t);return _(),n})(u.linearRampToValueAtTime),u.setTargetAtTime=(e=>p?()=>{throw i()}:(...t)=>{let n=e.apply(u,t);return _(),n})(u.setTargetAtTime),u.setValueAtTime=(e=>p?()=>{throw i()}:(...t)=>{let n=e.apply(u,t);return _(),n})(u.setValueAtTime),u.setValueCurveAtTime=(e=>p?()=>{throw i()}:(...t)=>{let n=e.apply(u,t);return _(),n})(u.setValueCurveAtTime),u};return{forwardX:b(0,0,v(0)),forwardY:b(1,0,v(1)),forwardZ:b(2,-1,v(2)),positionX:b(6,0,y(0)),positionY:b(7,0,y(1)),positionZ:b(8,0,y(2)),upX:b(3,0,v(3)),upY:b(4,1,v(4)),upZ:b(5,0,v(5))}})():u;return{get forwardX(){return d},get forwardY(){return f},get forwardZ(){return p},get positionX(){return m},get positionY(){return h},get positionZ(){return g},get upX(){return _},get upY(){return v},get upZ(){return y}}},Ze=e=>`context`in e,Qe=e=>Ze(e[0]),$e=(e,t,n,r)=>{for(let t of e)if(n(t)){if(r)return!1;throw Error(`The set contains at least one similar element.`)}return e.add(t),!0},et=(e,t,[n,r],i)=>{$e(e,[t,n,r],e=>e[0]===t&&e[1]===n,i)},tt=(e,[t,n,r],i)=>{let a=e.get(t);a===void 0?e.set(t,new Set([[n,r]])):$e(a,[n,r],e=>e[0]===n,i)},nt=e=>`inputs`in e,rt=(e,t,n,r)=>{if(nt(t)){let i=t.inputs[r];return e.connect(i,n,0),[i,n,0]}return e.connect(t,n,r),[t,n,r]},it=(e,t,n)=>{for(let r of e)if(r[0]===t&&r[1]===n)return e.delete(r),r;return null},at=(e,t,n)=>ue(e,e=>e[0]===t&&e[1]===n),ot=(e,t)=>{if(!fe(e).delete(t))throw Error(`Missing the expected event listener.`)},st=(e,t,n)=>{let r=P(e,t),i=ue(r,e=>e[0]===n);return r.size===0&&e.delete(t),i},ct=(e,t,n,r)=>{nt(t)?e.disconnect(t.inputs[r],n,0):e.disconnect(t,n,r)},lt=e=>P(ee,e),ut=e=>P(ne,e),dt=e=>ae.has(e),ft=e=>!D.has(e),pt=(e,t)=>new Promise(n=>{if(t!==null)n(!0);else{let t=e.createScriptProcessor(256,1,1),r=e.createGain(),i=e.createBuffer(1,2,44100),a=i.getChannelData(0);a[0]=1,a[1]=1;let o=e.createBufferSource();o.buffer=i,o.loop=!0,o.connect(t).connect(e.destination),o.connect(r),o.disconnect(r),t.onaudioprocess=r=>{let i=r.inputBuffer.getChannelData(0);Array.prototype.some.call(i,e=>e===1)?n(!0):n(!1),o.stop(),t.onaudioprocess=null,o.disconnect(t),t.disconnect(e.destination)},o.start()}}),mt=(e,t)=>{let n=new Map;for(let t of e)for(let e of t){let t=n.get(e);n.set(e,t===void 0?1:t+1)}n.forEach((e,n)=>t(n,e))},ht=e=>`context`in e,gt=e=>{let t=new Map;e.connect=(e=>(n,r=0,i=0)=>{let a=ht(n)?e(n,r,i):e(n,r),o=t.get(n);return o===void 0?t.set(n,[{input:i,output:r}]):o.every(e=>e.input!==i||e.output!==r)&&o.push({input:i,output:r}),a})(e.connect.bind(e)),e.disconnect=(n=>(r,i,a)=>{if(n.apply(e),r===void 0)t.clear();else if(typeof r==`number`)for(let[e,n]of t){let i=n.filter(e=>e.output!==r);i.length===0?t.delete(e):t.set(e,i)}else if(t.has(r))if(i===void 0)t.delete(r);else{let e=t.get(r);if(e!==void 0){let n=e.filter(e=>e.output!==i&&(e.input!==a||a===void 0));n.length===0?t.delete(r):t.set(r,n)}}for(let[n,r]of t)r.forEach(t=>{ht(n)?e.connect(n,t.output,t.input):e.connect(n,t.output)})})(e.disconnect)},_t=(e,t,n,r)=>{let{activeInputs:i,passiveInputs:a}=Ue(t),{outputs:o}=He(e),s=fe(e),c=o=>{let s=lt(e),c=ut(t);o?(et(i,e,st(a,e,n),!1),!r&&!dt(e)&&s.connect(c,n)):(tt(a,at(i,e,n),!1),!r&&!dt(e)&&s.disconnect(c,n))};return $e(o,[t,n],e=>e[0]===t&&e[1]===n,!0)?(s.add(c),Me(e)?et(i,e,[n,c],!0):tt(a,[e,n,c],!0),!0):!1},vt=(e,t,n,r)=>{let{activeInputs:i,passiveInputs:a}=He(t),o=it(i[r],e,n);return o===null?[de(a,e,n,r)[2],!1]:[o[2],!0]},yt=(e,t,n)=>{let{activeInputs:r,passiveInputs:i}=Ue(t),a=it(r,e,n);return a===null?[st(i,e,n)[1],!1]:[a[2],!0]},bt=(e,t,n,r,i)=>{let[a,o]=vt(e,n,r,i);if(a!==null&&(ot(e,a),o&&!t&&!dt(e)&&ct(lt(e),lt(n),r,i)),Me(n)){let{activeInputs:e}=He(n);ge(n,e)}},xt=(e,t,n,r)=>{let[i,a]=yt(e,n,r);i!==null&&(ot(e,i),a&&!t&&!dt(e)&<(e).disconnect(ut(n),r))},St=(e,t)=>{let n=He(e),r=[];for(let i of n.outputs)Qe(i)?bt(e,t,...i):xt(e,t,...i),r.push(i[0]);return n.outputs.clear(),r},Ct=(e,t,n)=>{let r=He(e),i=[];for(let a of r.outputs)a[1]===n&&(Qe(a)?bt(e,t,...a):xt(e,t,...a),i.push(a[0]),r.outputs.delete(a));return i},wt=(e,t,n,r,i)=>{let a=He(e);return Array.from(a.outputs).filter(e=>e[0]===n&&(r===void 0||e[1]===r)&&(i===void 0||e[2]===i)).map(n=>(Qe(n)?bt(e,t,...n):xt(e,t,...n),a.outputs.delete(n),n[0]))},Tt=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h)=>class extends l{constructor(t,r,i,a){super(i),this._context=t,this._nativeAudioNode=i;let o=u(t);d(o)&&!0!==n(pt,()=>pt(o,h))&>(i),ee.set(this,i),ie.set(this,new Set),t.state!==`closed`&&r&&pe(this),e(this,a,i)}get channelCount(){return this._nativeAudioNode.channelCount}set channelCount(e){this._nativeAudioNode.channelCount=e}get channelCountMode(){return this._nativeAudioNode.channelCountMode}set channelCountMode(e){this._nativeAudioNode.channelCountMode=e}get channelInterpretation(){return this._nativeAudioNode.channelInterpretation}set channelInterpretation(e){this._nativeAudioNode.channelInterpretation=e}get context(){return this._context}get numberOfInputs(){return this._nativeAudioNode.numberOfInputs}get numberOfOutputs(){return this._nativeAudioNode.numberOfOutputs}connect(e,n=0,s=0){if(n<0||n>=this._nativeAudioNode.numberOfOutputs)throw i();let l=m(u(this._context));if(f(e)||p(e))throw a();if(Ze(e)){let i=lt(e);try{let t=rt(this._nativeAudioNode,i,n,s),r=ft(this);(l||r)&&this._nativeAudioNode.disconnect(...t),this.context.state!==`closed`&&!r&&ft(e)&&pe(e)}catch(e){throw e.code===12?a():e}return t(this,e,n,s,l)&&mt(c([this],e),r(l)),e}let d=ut(e);if(d.name===`playbackRate`&&d.maxValue===1024)throw o();try{this._nativeAudioNode.connect(d,n),(l||ft(this))&&this._nativeAudioNode.disconnect(d,n)}catch(e){throw e.code===12?a():e}_t(this,e,n,l)&&mt(c([this],e),r(l))}disconnect(e,t,n){let r,o=m(u(this._context));if(e===void 0)r=St(this,o);else if(typeof e==`number`){if(e<0||e>=this.numberOfOutputs)throw i();r=Ct(this,o,e)}else{if(t!==void 0&&(t<0||t>=this.numberOfOutputs)||Ze(e)&&n!==void 0&&(n<0||n>=e.numberOfInputs))throw i();if(r=wt(this,o,e,t,n),r.length===0)throw a()}for(let e of r)mt(c([this],e),s)}},Et=(e,t,n,r,i,a,o,s,c,l,u,d,f)=>(p,m,h,g=null,_=null)=>{let v=h.value,y=new S.AutomationEventList(v),b=m?r(y):null,x={get defaultValue(){return v},get maxValue(){return g===null?h.maxValue:g},get minValue(){return _===null?h.minValue:_},get value(){return h.value},set value(e){h.value=e,x.setValueAtTime(e,p.context.currentTime)},cancelAndHoldAtTime(e){if(typeof h.cancelAndHoldAtTime==`function`)b===null&&y.flush(p.context.currentTime),y.add(i(e)),h.cancelAndHoldAtTime(e);else{let t=Array.from(y).pop();b===null&&y.flush(p.context.currentTime),y.add(i(e));let n=Array.from(y).pop();h.cancelScheduledValues(e),t!==n&&n!==void 0&&(n.type===`exponentialRampToValue`?h.exponentialRampToValueAtTime(n.value,n.endTime):n.type===`linearRampToValue`?h.linearRampToValueAtTime(n.value,n.endTime):n.type===`setValue`?h.setValueAtTime(n.value,n.startTime):n.type===`setValueCurve`&&h.setValueCurveAtTime(n.values,n.startTime,n.duration))}return x},cancelScheduledValues(e){return b===null&&y.flush(p.context.currentTime),y.add(a(e)),h.cancelScheduledValues(e),x},exponentialRampToValueAtTime(e,t){if(e===0||!Number.isFinite(t)||t<0)throw RangeError();let n=p.context.currentTime;return b===null&&y.flush(n),Array.from(y).length===0&&(y.add(l(v,n)),h.setValueAtTime(v,n)),y.add(o(e,t)),h.exponentialRampToValueAtTime(e,t),x},linearRampToValueAtTime(e,t){let n=p.context.currentTime;return b===null&&y.flush(n),Array.from(y).length===0&&(y.add(l(v,n)),h.setValueAtTime(v,n)),y.add(s(e,t)),h.linearRampToValueAtTime(e,t),x},setTargetAtTime(e,t,n){return b===null&&y.flush(p.context.currentTime),y.add(c(e,t,n)),h.setTargetAtTime(e,t,n),x},setValueAtTime(e,t){return b===null&&y.flush(p.context.currentTime),y.add(l(e,t)),h.setValueAtTime(e,t),x},setValueCurveAtTime(e,t,n){let r=e instanceof Float32Array?e:new Float32Array(e);if(d!==null&&d.name===`webkitAudioContext`){let e=t+n,i=p.context.sampleRate,a=Math.ceil(t*i),o=Math.floor(e*i),s=o-a,c=new Float32Array(s);for(let e=0;e({replay(t){for(let n of e)if(n.type===`exponentialRampToValue`){let{endTime:e,value:r}=n;t.exponentialRampToValueAtTime(r,e)}else if(n.type===`linearRampToValue`){let{endTime:e,value:r}=n;t.linearRampToValueAtTime(r,e)}else if(n.type===`setTarget`){let{startTime:e,target:r,timeConstant:i}=n;t.setTargetAtTime(r,e,i)}else if(n.type===`setValue`){let{startTime:e,value:r}=n;t.setValueAtTime(r,e)}else if(n.type===`setValueCurve`){let{duration:e,startTime:r,values:i}=n;t.setValueCurveAtTime(i,r,e)}else throw Error(`Can't apply an unknown automation.`)}}),Ot=class{constructor(e){this._map=new Map(e)}get size(){return this._map.size}entries(){return this._map.entries()}forEach(e,t=null){return this._map.forEach((n,r)=>e.call(t,n,r,this))}get(e){return this._map.get(e)}has(e){return this._map.has(e)}keys(){return this._map.keys()}values(){return this._map.values()}},kt={channelCount:2,channelCountMode:`explicit`,channelInterpretation:`speakers`,numberOfInputs:1,numberOfOutputs:1,parameterData:{},processorOptions:{}},At=(e,t,n,r,i,a,o,s,c,l,u,d,f,p)=>class extends t{constructor(t,p,m){let h=s(t),g=c(h),_=u({...kt,...m});f(_);let v=oe.get(h)?.get(p),y=i(g||h.state!==`closed`?h:o(h)??h,g?null:t.baseLatency,l,p,v,_),b=g?r(p,_,v):null;super(t,!0,y,b);let x=[];y.parameters.forEach((e,t)=>{let r=n(this,g,e);x.push([t,r])}),this._nativeAudioWorkletNode=y,this._onprocessorerror=null,this._parameters=new Ot(x),g&&e(h,this);let{activeInputs:S}=a(this);d(y,S)}get onprocessorerror(){return this._onprocessorerror}set onprocessorerror(e){let t=typeof e==`function`?p(this,e):null;this._nativeAudioWorkletNode.onprocessorerror=t;let n=this._nativeAudioWorkletNode.onprocessorerror;this._onprocessorerror=n!==null&&n===t?e:n}get parameters(){return this._parameters===null?this._nativeAudioWorkletNode.parameters:this._parameters}get port(){return this._nativeAudioWorkletNode.port}};function jt(e,t,n,r,i){if(typeof e.copyFromChannel==`function`)t[n].byteLength===0&&(t[n]=new Float32Array(128)),e.copyFromChannel(t[n],r,i);else{let a=e.getChannelData(r);if(t[n].byteLength===0)t[n]=a.slice(i,i+128);else{let e=new Float32Array(a.buffer,i*Float32Array.BYTES_PER_ELEMENT,128);t[n].set(e)}}}var Mt=(e,t,n,r,i)=>{typeof e.copyToChannel==`function`?t[n].byteLength!==0&&e.copyToChannel(t[n],r,i):t[n].byteLength!==0&&e.getChannelData(r).set(t[n],i)},Nt=(e,t)=>{let n=[];for(let r=0;rP(P(k,e),lt(t)),Ft=async(e,t,n,r,i,a,o)=>{let s=t===null?Math.ceil(e.context.length/128)*128:t.length,c=r.channelCount*r.numberOfInputs,l=i.reduce((e,t)=>e+t,0),u=l===0?null:n.createBuffer(l,s,n.sampleRate);if(a===void 0)throw Error(`Missing the processor constructor.`);let d=He(e),f=await Pt(n,e),p=Nt(r.numberOfInputs,r.channelCount),m=Nt(r.numberOfOutputs,i),h=Array.from(e.parameters.keys()).reduce((e,t)=>({...e,[t]:new Float32Array(128)}),{});for(let l=0;l0&&t!==null)for(let e=0;e{jt(t,h,e,c+n,l)});for(let e=0;ed.activeInputs[t].size===0?[]:e),t=o(l/n.sampleRate,n.sampleRate,()=>f.process(e,m,h));if(u!==null)for(let e=0,t=0;e(g,_,v)=>{let y=new WeakMap,b=null,x=async(s,x)=>{let S=u(s),C=null,w=Ce(S,x),T=Array.isArray(_.outputChannelCount)?_.outputChannelCount:Array.from(_.outputChannelCount);if(d===null){let e=T.reduce((e,t)=>e+t,0),n=i(x,{channelCount:Math.max(1,e),channelCountMode:`explicit`,channelInterpretation:`discrete`,numberOfOutputs:Math.max(1,e)}),a=[];for(let e=0;e{let c=new f(n,Math.ceil(s.context.length/128)*128,x.sampleRate),l=[],u=[];for(let e=0;e<_.numberOfInputs;e+=1)l.push(o(c,{channelCount:_.channelCount,channelCountMode:_.channelCountMode,channelInterpretation:_.channelInterpretation,gain:1})),u.push(i(c,{channelCount:_.channelCount,channelCountMode:`explicit`,channelInterpretation:`discrete`,numberOfOutputs:_.channelCount}));let d=await Promise.all(Array.from(s.parameters.values()).map(async e=>{let t=a(c,{channelCount:1,channelCountMode:`explicit`,channelInterpretation:`discrete`,offset:e.value});return await p(c,e,t.offset),t})),g=r(c,{channelCount:1,channelCountMode:`explicit`,channelInterpretation:`speakers`,numberOfInputs:Math.max(1,e+t)});for(let e=0;e<_.numberOfInputs;e+=1){l[e].connect(u[e]);for(let t=0;t<_.channelCount;t+=1)u[e].connect(g,t,e*_.channelCount+t)}for(let[t,n]of d.entries())n.connect(g,0,e+t),n.start(0);return g.connect(c.destination),await Promise.all(l.map(e=>m(s,c,e))),h(c)})(),x,_,T,v,l)}let e=await b,t=n(x,{buffer:null,channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`,loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),[c,u,d]=C;e!==null&&(t.buffer=e,t.start(0)),t.connect(c);for(let e=0,t=0;eclass extends m{constructor(t,n){super(t,n),this._nativeContext=t,this._audioWorklet=e===void 0?void 0:{addModule:(t,n)=>e(this,t,n)}}get audioWorklet(){return this._audioWorklet}createAnalyser(){return new t(this)}createBiquadFilter(){return new i(this)}createBuffer(e,t,r){return new n({length:t,numberOfChannels:e,sampleRate:r})}createBufferSource(){return new r(this)}createChannelMerger(e=6){return new a(this,{numberOfInputs:e})}createChannelSplitter(e=6){return new o(this,{numberOfOutputs:e})}createConstantSource(){return new s(this)}createConvolver(){return new c(this)}createDelay(e=1){return new u(this,{maxDelayTime:e})}createDynamicsCompressor(){return new d(this)}createGain(){return new f(this)}createIIRFilter(e,t){return new p(this,{feedback:t,feedforward:e})}createOscillator(){return new h(this)}createPanner(){return new g(this)}createPeriodicWave(e,t,n={disableNormalization:!1}){return new _(this,{...n,imag:t,real:e})}createStereoPanner(){return new v(this)}createWaveShaper(){return new y(this)}decodeAudioData(e,t,n){return l(this._nativeContext,e).then(e=>(typeof t==`function`&&t(e),e),e=>{throw typeof n==`function`&&n(e),e})}},Rt={Q:1,channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`,detune:0,frequency:350,gain:0,type:`lowpass`},zt=(e,t,n,r,i,a,o,s)=>class extends e{constructor(e,r){let c=a(e),l=i(c,{...Rt,...r}),u=o(c),d=u?n():null;super(e,!1,l,d),this._Q=t(this,u,l.Q,je,Ae),this._detune=t(this,u,l.detune,1200*Math.log2(je),-1200*Math.log2(je)),this._frequency=t(this,u,l.frequency,e.sampleRate/2,0),this._gain=t(this,u,l.gain,40*Math.log10(je),Ae),this._nativeBiquadFilterNode=l,s(this,1)}get detune(){return this._detune}get frequency(){return this._frequency}get gain(){return this._gain}get Q(){return this._Q}get type(){return this._nativeBiquadFilterNode.type}set type(e){this._nativeBiquadFilterNode.type=e}getFrequencyResponse(e,t,n){try{this._nativeBiquadFilterNode.getFrequencyResponse(e,t,n)}catch(e){throw e.code===11?r():e}if(e.length!==t.length||t.length!==n.length)throw r()}},Bt=(e,t,n,r,i)=>()=>{let a=new WeakMap,o=async(o,s)=>{let c=n(o),l=Ce(c,s);return l||(c=t(s,{Q:c.Q.value,channelCount:c.channelCount,channelCountMode:c.channelCountMode,channelInterpretation:c.channelInterpretation,detune:c.detune.value,frequency:c.frequency.value,gain:c.gain.value,type:c.type})),a.set(s,c),l?(await e(s,o.Q,c.Q),await e(s,o.detune,c.detune),await e(s,o.frequency,c.frequency),await e(s,o.gain,c.gain)):(await r(s,o.Q,c.Q),await r(s,o.detune,c.detune),await r(s,o.frequency,c.frequency),await r(s,o.gain,c.gain)),await i(o,s,c),c};return{render(e,t){let n=a.get(t);return n===void 0?o(e,t):Promise.resolve(n)}}},Vt=(e,t)=>(n,r)=>{let i=t.get(n);if(i!==void 0)return i;let a=e.get(n);if(a!==void 0)return a;try{let i=r();return i instanceof Promise?(e.set(n,i),i.catch(()=>!1).then(r=>(e.delete(n),t.set(n,r),r))):(t.set(n,i),i)}catch{return t.set(n,!1),!1}},Ht={channelCount:1,channelCountMode:`explicit`,channelInterpretation:`speakers`,numberOfInputs:6},Ut=(e,t,n,r,i)=>class extends e{constructor(e,a){let o=r(e),s=n(o,{...Ht,...a}),c=i(o)?t():null;super(e,!1,s,c)}},Wt=(e,t,n)=>()=>{let r=new WeakMap,i=async(i,a)=>{let o=t(i);return Ce(o,a)||(o=e(a,{channelCount:o.channelCount,channelCountMode:o.channelCountMode,channelInterpretation:o.channelInterpretation,numberOfInputs:o.numberOfInputs})),r.set(a,o),await n(i,a,o),o};return{render(e,t){let n=r.get(t);return n===void 0?i(e,t):Promise.resolve(n)}}},Gt={channelCount:6,channelCountMode:`explicit`,channelInterpretation:`discrete`,numberOfOutputs:6},Kt=(e,t,n,r,i,a)=>class extends e{constructor(e,o){let s=r(e),c=n(s,a({...Gt,...o})),l=i(s)?t():null;super(e,!1,c,l)}},qt=(e,t,n)=>()=>{let r=new WeakMap,i=async(i,a)=>{let o=t(i);return Ce(o,a)||(o=e(a,{channelCount:o.channelCount,channelCountMode:o.channelCountMode,channelInterpretation:o.channelInterpretation,numberOfOutputs:o.numberOfOutputs})),r.set(a,o),await n(i,a,o),o};return{render(e,t){let n=r.get(t);return n===void 0?i(e,t):Promise.resolve(n)}}},Jt=e=>(t,n,r)=>e(n,t,r),Yt=e=>(t,n,r=0,i=0)=>{let a=t[r];if(a===void 0)throw e();return ht(n)?a.connect(n,0,i):a.connect(n,0)},Xt=e=>(t,n)=>{let r=e(t,{buffer:null,channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`,loop:!1,loopEnd:0,loopStart:0,playbackRate:1});return r.buffer=t.createBuffer(1,2,44100),r.loop=!0,r.connect(n),r.start(),()=>{r.stop(),r.disconnect(n)}},Zt={channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`,offset:1},Qt=(e,t,n,r,i,a,o)=>class extends e{constructor(e,o){let s=i(e),c=r(s,{...Zt,...o}),l=a(s),u=l?n():null;super(e,!1,c,u),this._constantSourceNodeRenderer=u,this._nativeConstantSourceNode=c,this._offset=t(this,l,c.offset,je,Ae),this._onended=null}get offset(){return this._offset}get onended(){return this._onended}set onended(e){let t=typeof e==`function`?o(this,e):null;this._nativeConstantSourceNode.onended=t;let n=this._nativeConstantSourceNode.onended;this._onended=n!==null&&n===t?e:n}start(e=0){if(this._nativeConstantSourceNode.start(e),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.start=e),this.context.state!==`closed`){pe(this);let e=()=>{this._nativeConstantSourceNode.removeEventListener(`ended`,e),Me(this)&&he(this)};this._nativeConstantSourceNode.addEventListener(`ended`,e)}}stop(e=0){this._nativeConstantSourceNode.stop(e),this._constantSourceNodeRenderer!==null&&(this._constantSourceNodeRenderer.stop=e)}},$t=(e,t,n,r,i)=>()=>{let a=new WeakMap,o=null,s=null,c=async(c,l)=>{let u=n(c),d=Ce(u,l);return d||(u=t(l,{channelCount:u.channelCount,channelCountMode:u.channelCountMode,channelInterpretation:u.channelInterpretation,offset:u.offset.value}),o!==null&&u.start(o),s!==null&&u.stop(s)),a.set(l,u),d?await e(l,c.offset,u.offset):await r(l,c.offset,u.offset),await i(c,l,u),u};return{set start(e){o=e},set stop(e){s=e},render(e,t){let n=a.get(t);return n===void 0?c(e,t):Promise.resolve(n)}}},en=e=>t=>(e[0]=t,e[0]),tn={buffer:null,channelCount:2,channelCountMode:`clamped-max`,channelInterpretation:`speakers`,disableNormalization:!1},nn=(e,t,n,r,i,a)=>class extends e{constructor(e,o){let s=r(e),c={...tn,...o},l=n(s,c),u=i(s)?t():null;super(e,!1,l,u),this._isBufferNullified=!1,this._nativeConvolverNode=l,c.buffer!==null&&a(this,c.buffer.duration)}get buffer(){return this._isBufferNullified?null:this._nativeConvolverNode.buffer}set buffer(e){if(this._nativeConvolverNode.buffer=e,e===null&&this._nativeConvolverNode.buffer!==null){let e=this._nativeConvolverNode.context;this._nativeConvolverNode.buffer=e.createBuffer(1,1,e.sampleRate),this._isBufferNullified=!0,a(this,0)}else this._isBufferNullified=!1,a(this,this._nativeConvolverNode.buffer===null?0:this._nativeConvolverNode.buffer.duration)}get normalize(){return this._nativeConvolverNode.normalize}set normalize(e){this._nativeConvolverNode.normalize=e}},rn=(e,t,n)=>()=>{let r=new WeakMap,i=async(i,a)=>{let o=t(i);return Ce(o,a)||(o=e(a,{buffer:o.buffer,channelCount:o.channelCount,channelCountMode:o.channelCountMode,channelInterpretation:o.channelInterpretation,disableNormalization:!o.normalize})),r.set(a,o),nt(o)?await n(i,a,o.inputs[0]):await n(i,a,o),o};return{render(e,t){let n=r.get(t);return n===void 0?i(e,t):Promise.resolve(n)}}},an=(e,t)=>(n,r,i)=>{if(t===null)throw Error(`Missing the native OfflineAudioContext constructor.`);try{return new t(n,r,i)}catch(t){throw t.name===`SyntaxError`?e():t}},on=()=>new DOMException(``,`DataCloneError`),sn=e=>{let{port1:t,port2:n}=new MessageChannel;return new Promise(r=>{let i=()=>{n.onmessage=null,t.close(),n.close(),r()};n.onmessage=()=>i();try{t.postMessage(e,[e])}catch{}finally{i()}})},cn=(e,t,n,r,i,a,o,s,c,l,u)=>(d,f)=>{let p=o(d)?d:a(d);if(i.has(f)){let e=n();return Promise.reject(e)}try{i.add(f)}catch{}return t(c,()=>c(p))?p.decodeAudioData(f).then(n=>(sn(f).catch(()=>{}),t(s,()=>s(n))||u(n),e.add(n),n)):new Promise((t,n)=>{let i=async()=>{try{await sn(f)}catch{}},a=e=>{n(e),i()};try{p.decodeAudioData(f,n=>{typeof n.copyFromChannel!=`function`&&(l(n),De(n)),e.add(n),i().then(()=>t(n))},e=>{a(e===null?r():e)})}catch(e){a(e)}})},ln=(e,t,n,r,i,a,o,s)=>(c,l)=>{let u=t.get(c);if(u===void 0)throw Error(`Missing the expected cycle count.`);let d=s(a(c.context));if(u===l){if(t.delete(c),!d&&o(c)){let t=r(c),{outputs:a}=n(c);for(let n of a)if(Qe(n))e(t,r(n[0]),n[1],n[2]);else{let e=i(n[0]);t.connect(e,n[1])}}}else t.set(c,u-l)},un={channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`,delayTime:0,maxDelayTime:1},dn=(e,t,n,r,i,a,o)=>class extends e{constructor(e,s){let c=i(e),l={...un,...s},u=r(c,l),d=a(c),f=d?n(l.maxDelayTime):null;super(e,!1,u,f),this._delayTime=t(this,d,u.delayTime),o(this,l.maxDelayTime)}get delayTime(){return this._delayTime}},fn=(e,t,n,r,i)=>a=>{let o=new WeakMap,s=async(s,c)=>{let l=n(s),u=Ce(l,c);return u||(l=t(c,{channelCount:l.channelCount,channelCountMode:l.channelCountMode,channelInterpretation:l.channelInterpretation,delayTime:l.delayTime.value,maxDelayTime:a})),o.set(c,l),u?await e(c,s.delayTime,l.delayTime):await r(c,s.delayTime,l.delayTime),await i(s,c,l),l};return{render(e,t){let n=o.get(t);return n===void 0?s(e,t):Promise.resolve(n)}}},pn=e=>(t,n,r,i)=>e(t[i],e=>e[0]===n&&e[1]===r),mn=e=>(t,n)=>{e(t).delete(n)},hn=e=>`delayTime`in e,gn=(e,t,n)=>function r(i,a){let o=Ze(a)?a:n(e,a);if(hn(o))return[];if(i[0]===o)return[i];if(i.includes(o))return[];let{outputs:s}=t(o);return Array.from(s).map(e=>r([...i,o],e[0])).reduce((e,t)=>e.concat(t),[])},_n=(e,t,n)=>{let r=t[n];if(r===void 0)throw e();return r},vn=e=>(t,n=void 0,r=void 0,i=0)=>n===void 0?t.forEach(e=>e.disconnect()):typeof n==`number`?_n(e,t,n).disconnect():ht(n)?r===void 0?t.forEach(e=>e.disconnect(n)):i===void 0?_n(e,t,r).disconnect(n,0):_n(e,t,r).disconnect(n,0,i):r===void 0?t.forEach(e=>e.disconnect(n)):_n(e,t,r).disconnect(n,0),yn={attack:.003,channelCount:2,channelCountMode:`clamped-max`,channelInterpretation:`speakers`,knee:30,ratio:12,release:.25,threshold:-24},bn=(e,t,n,r,i,a,o,s)=>class extends e{constructor(e,i){let c=a(e),l=r(c,{...yn,...i}),u=o(c),d=u?n():null;super(e,!1,l,d),this._attack=t(this,u,l.attack),this._knee=t(this,u,l.knee),this._nativeDynamicsCompressorNode=l,this._ratio=t(this,u,l.ratio),this._release=t(this,u,l.release),this._threshold=t(this,u,l.threshold),s(this,.006)}get attack(){return this._attack}get channelCount(){return this._nativeDynamicsCompressorNode.channelCount}set channelCount(e){let t=this._nativeDynamicsCompressorNode.channelCount;if(this._nativeDynamicsCompressorNode.channelCount=e,e>2)throw this._nativeDynamicsCompressorNode.channelCount=t,i()}get channelCountMode(){return this._nativeDynamicsCompressorNode.channelCountMode}set channelCountMode(e){let t=this._nativeDynamicsCompressorNode.channelCountMode;if(this._nativeDynamicsCompressorNode.channelCountMode=e,e===`max`)throw this._nativeDynamicsCompressorNode.channelCountMode=t,i()}get knee(){return this._knee}get ratio(){return this._ratio}get reduction(){return typeof this._nativeDynamicsCompressorNode.reduction.value==`number`?this._nativeDynamicsCompressorNode.reduction.value:this._nativeDynamicsCompressorNode.reduction}get release(){return this._release}get threshold(){return this._threshold}},xn=(e,t,n,r,i)=>()=>{let a=new WeakMap,o=async(o,s)=>{let c=n(o),l=Ce(c,s);return l||(c=t(s,{attack:c.attack.value,channelCount:c.channelCount,channelCountMode:c.channelCountMode,channelInterpretation:c.channelInterpretation,knee:c.knee.value,ratio:c.ratio.value,release:c.release.value,threshold:c.threshold.value})),a.set(s,c),l?(await e(s,o.attack,c.attack),await e(s,o.knee,c.knee),await e(s,o.ratio,c.ratio),await e(s,o.release,c.release),await e(s,o.threshold,c.threshold)):(await r(s,o.attack,c.attack),await r(s,o.knee,c.knee),await r(s,o.ratio,c.ratio),await r(s,o.release,c.release),await r(s,o.threshold,c.threshold)),await i(o,s,c),c};return{render(e,t){let n=a.get(t);return n===void 0?o(e,t):Promise.resolve(n)}}},Sn=()=>new DOMException(``,`EncodingError`),Cn=e=>t=>new Promise((n,r)=>{if(e===null){r(SyntaxError());return}let i=e.document.head;if(i===null)r(SyntaxError());else{let a=e.document.createElement(`script`),o=new Blob([t],{type:`application/javascript`}),s=URL.createObjectURL(o),c=e.onerror,l=()=>{e.onerror=c,URL.revokeObjectURL(s)};e.onerror=(t,n,i,a,o)=>{if(n===s||n===e.location.href&&i===1&&a===1)return l(),r(o),!1;if(c!==null)return c(t,n,i,a,o)},a.onerror=()=>{l(),r(SyntaxError())},a.onload=()=>{l(),n()},a.src=s,a.type=`module`,i.appendChild(a)}}),wn=e=>class{constructor(e){this._nativeEventTarget=e,this._listeners=new WeakMap}addEventListener(t,n,r){if(n!==null){let i=this._listeners.get(n);i===void 0&&(i=e(this,n),typeof n==`function`&&this._listeners.set(n,i)),this._nativeEventTarget.addEventListener(t,i,r)}}dispatchEvent(e){return this._nativeEventTarget.dispatchEvent(e)}removeEventListener(e,t,n){let r=t===null?void 0:this._listeners.get(t);this._nativeEventTarget.removeEventListener(e,r===void 0?null:r,n)}},Tn=e=>(t,n,r)=>{Object.defineProperties(e,{currentFrame:{configurable:!0,get(){return Math.round(t*n)}},currentTime:{configurable:!0,get(){return t}}});try{return r()}finally{e!==null&&(delete e.currentFrame,delete e.currentTime)}},En=e=>async t=>{try{let e=await fetch(t);if(e.ok)return[await e.text(),e.url]}catch{}throw e()},Dn={channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`,gain:1},On=(e,t,n,r,i,a)=>class extends e{constructor(e,o){let s=i(e),c=r(s,{...Dn,...o}),l=a(s),u=l?n():null;super(e,!1,c,u),this._gain=t(this,l,c.gain,je,Ae)}get gain(){return this._gain}},kn=(e,t,n,r,i)=>()=>{let a=new WeakMap,o=async(o,s)=>{let c=n(o),l=Ce(c,s);return l||(c=t(s,{channelCount:c.channelCount,channelCountMode:c.channelCountMode,channelInterpretation:c.channelInterpretation,gain:c.gain.value})),a.set(s,c),l?await e(s,o.gain,c.gain):await r(s,o.gain,c.gain),await i(o,s,c),c};return{render(e,t){let n=a.get(t);return n===void 0?o(e,t):Promise.resolve(n)}}},An=(e,t)=>n=>t(e,n),jn=e=>t=>{let n=e(t);if(n.renderer===null)throw Error(`Missing the renderer of the given AudioNode in the audio graph.`);return n.renderer},Mn=e=>t=>e.get(t)??0,Nn=e=>t=>{let n=e(t);if(n.renderer===null)throw Error(`Missing the renderer of the given AudioParam in the audio graph.`);return n.renderer},Pn=e=>t=>e.get(t),Fn=()=>new DOMException(``,`InvalidStateError`),In=e=>t=>{let n=e.get(t);if(n===void 0)throw Fn();return n},Ln=(e,t)=>n=>{let r=e.get(n);if(r!==void 0)return r;if(t===null)throw Error(`Missing the native OfflineAudioContext constructor.`);return r=new t(1,1,44100),e.set(n,r),r},Rn=e=>t=>{let n=e.get(t);if(n===void 0)throw Error(`The context has no set of AudioWorkletNodes.`);return n},zn=()=>new DOMException(``,`InvalidAccessError`),Bn=e=>{e.getFrequencyResponse=(t=>(n,r,i)=>{if(n.length!==r.length||r.length!==i.length)throw zn();return t.call(e,n,r,i)})(e.getFrequencyResponse)},Vn={channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`},Hn=(e,t,n,r,i,a)=>class extends e{constructor(e,o){let s=r(e),c=i(s),l={...Vn,...o},u=t(s,c?null:e.baseLatency,l),d=c?n(l.feedback,l.feedforward):null;super(e,!1,u,d),Bn(u),this._nativeIIRFilterNode=u,a(this,1)}getFrequencyResponse(e,t,n){return this._nativeIIRFilterNode.getFrequencyResponse(e,t,n)}},Un=(e,t,n,r,i,a,o,s,c,l,u)=>{let d=l.length,f=s;for(let s=0;s{let i=n instanceof Float64Array?n:new Float64Array(n),a=r instanceof Float64Array?r:new Float64Array(r),o=i.length,s=a.length,c=Math.min(o,s);if(i[0]!==1){for(let e=0;e(a,o)=>{let s=new WeakMap,c=null,l=async(l,u)=>{let d=null,f=t(l),p=Ce(f,u);if(u.createIIRFilter===void 0?d=e(u,{buffer:null,channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`,loop:!1,loopEnd:0,loopStart:0,playbackRate:1}):p||(f=u.createIIRFilter(o,a)),s.set(u,d===null?f:d),d!==null){if(c===null){if(n===null)throw Error(`Missing the native OfflineAudioContext constructor.`);let e=new n(l.context.destination.channelCount,l.context.length,u.sampleRate);c=(async()=>(await r(l,e,e.destination),Wn(await i(e),u,a,o)))()}let e=await c;return d.buffer=e,d.start(0),d}return await r(l,u,f),f};return{render(e,t){let n=s.get(t);return n===void 0?l(e,t):Promise.resolve(n)}}},Kn=(e,t,n,r,i,a)=>o=>(s,c)=>{let l=e.get(s);if(l===void 0){if(!o&&a(s)){let e=r(s),{outputs:a}=n(s);for(let n of a)if(Qe(n))t(e,r(n[0]),n[1],n[2]);else{let t=i(n[0]);e.disconnect(t,n[1])}}e.set(s,c)}else e.set(s,l+c)},qn=(e,t)=>n=>t(e.get(n))||t(n),Jn=(e,t)=>n=>e.has(n)||t(n),Yn=(e,t)=>n=>e.has(n)||t(n),Xn=(e,t)=>n=>t(e.get(n))||t(n),Zn=e=>t=>e!==null&&t instanceof e,Qn=e=>t=>e!==null&&typeof e.AudioNode==`function`&&t instanceof e.AudioNode,$n=e=>t=>e!==null&&typeof e.AudioParam==`function`&&t instanceof e.AudioParam,er=(e,t)=>n=>e(n)||t(n),tr=e=>t=>e!==null&&t instanceof e,nr=e=>e!==null&&e.isSecureContext,rr=(e,t,n,r)=>class extends e{constructor(e,i){let a=n(e),o=t(a,i);if(r(a))throw TypeError();super(e,!0,o,null),this._nativeMediaElementAudioSourceNode=o}get mediaElement(){return this._nativeMediaElementAudioSourceNode.mediaElement}},ir={channelCount:2,channelCountMode:`explicit`,channelInterpretation:`speakers`},ar=(e,t,n,r)=>class extends e{constructor(e,i){let a=n(e);if(r(a))throw TypeError();let o=t(a,{...ir,...i});super(e,!1,o,null),this._nativeMediaStreamAudioDestinationNode=o}get stream(){return this._nativeMediaStreamAudioDestinationNode.stream}},or=(e,t,n,r)=>class extends e{constructor(e,i){let a=n(e),o=t(a,i);if(r(a))throw TypeError();super(e,!0,o,null),this._nativeMediaStreamAudioSourceNode=o}get mediaStream(){return this._nativeMediaStreamAudioSourceNode.mediaStream}},sr=(e,t,n)=>class extends e{constructor(e,r){let i=t(n(e),r);super(e,!0,i,null)}},cr=(e,t,n,r,i,a)=>class extends n{constructor(n,a){super(n),this._nativeContext=n,re.set(this,n),r(n)&&i.set(n,new Set),this._destination=new e(this,a),this._listener=t(this,n),this._onstatechange=null}get currentTime(){return this._nativeContext.currentTime}get destination(){return this._destination}get listener(){return this._listener}get onstatechange(){return this._onstatechange}set onstatechange(e){let t=typeof e==`function`?a(this,e):null;this._nativeContext.onstatechange=t;let n=this._nativeContext.onstatechange;this._onstatechange=n!==null&&n===t?e:n}get sampleRate(){return this._nativeContext.sampleRate}get state(){return this._nativeContext.state}},lr=e=>{let t=new Uint32Array([1179011410,40,1163280727,544501094,16,131073,44100,176400,1048580,1635017060,4,0]);try{let n=e.decodeAudioData(t.buffer,()=>{});return n===void 0?!1:(n.catch(()=>{}),!0)}catch{}return!1},ur=(e,t)=>(n,r,i)=>{let a=new Set;return n.connect=(i=>(o,s=0,c=0)=>{let l=a.size===0;if(t(o))return i.call(n,o,s,c),e(a,[o,s,c],e=>e[0]===o&&e[1]===s&&e[2]===c,!0),l&&r(),o;i.call(n,o,s),e(a,[o,s],e=>e[0]===o&&e[1]===s,!0),l&&r()})(n.connect),n.disconnect=(e=>(r,o,s)=>{let c=a.size>0;if(r===void 0)e.apply(n),a.clear();else if(typeof r==`number`){e.call(n,r);for(let e of a)e[1]===r&&a.delete(e)}else{t(r)?e.call(n,r,o,s):e.call(n,r,o);for(let e of a)e[0]===r&&(o===void 0||e[1]===o)&&(s===void 0||e[2]===s)&&a.delete(e)}let l=a.size===0;c&&l&&i()})(n.disconnect),n},dr=(e,t,n)=>{let r=t[n];r!==void 0&&r!==e[n]&&(e[n]=r)},fr=(e,t)=>{dr(e,t,`channelCount`),dr(e,t,`channelCountMode`),dr(e,t,`channelInterpretation`)},pr=e=>typeof e.getFloatTimeDomainData==`function`,mr=e=>{e.getFloatTimeDomainData=t=>{let n=new Uint8Array(t.length);e.getByteTimeDomainData(n);let r=Math.max(n.length,e.fftSize);for(let e=0;e(n,r)=>{let i=n.createAnalyser();if(fr(i,r),!(r.maxDecibels>r.minDecibels))throw t();return dr(i,r,`fftSize`),dr(i,r,`maxDecibels`),dr(i,r,`minDecibels`),dr(i,r,`smoothingTimeConstant`),e(pr,()=>pr(i))||mr(i),i},gr=e=>e===null?null:e.hasOwnProperty(`AudioBuffer`)?e.AudioBuffer:null,_r=(e,t,n)=>{let r=t[n];r!==void 0&&r!==e[n].value&&(e[n].value=r)},vr=e=>{e.start=(t=>{let n=!1;return(r=0,i=0,a)=>{if(n)throw Fn();t.call(e,r,i,a),n=!0}})(e.start)},yr=e=>{e.start=(t=>(n=0,r=0,i)=>{if(typeof i==`number`&&i<0||r<0||n<0)throw RangeError(`The parameters can't be negative.`);t.call(e,n,r,i)})(e.start)},br=e=>{e.stop=(t=>(n=0)=>{if(n<0)throw RangeError(`The parameter can't be negative.`);t.call(e,n)})(e.stop)},xr=(e,t,n,r,i,a,o,s,c,l,u)=>(d,f)=>{let p=d.createBufferSource();return fr(p,f),_r(p,f,`playbackRate`),dr(p,f,`buffer`),dr(p,f,`loop`),dr(p,f,`loopEnd`),dr(p,f,`loopStart`),t(n,()=>n(d))||vr(p),t(r,()=>r(d))||c(p),t(i,()=>i(d))||l(p,d),t(a,()=>a(d))||yr(p),t(o,()=>o(d))||u(p,d),t(s,()=>s(d))||br(p),e(d,p),p},Sr=e=>e===null?null:e.hasOwnProperty(`AudioContext`)?e.AudioContext:e.hasOwnProperty(`webkitAudioContext`)?e.webkitAudioContext:null,Cr=(e,t)=>(n,r,i)=>{let a=n.destination;if(a.channelCount!==r)try{a.channelCount=r}catch{}i&&a.channelCountMode!==`explicit`&&(a.channelCountMode=`explicit`),a.maxChannelCount===0&&Object.defineProperty(a,"maxChannelCount",{value:r});let o=e(n,{channelCount:r,channelCountMode:a.channelCountMode,channelInterpretation:a.channelInterpretation,gain:1});return t(o,`channelCount`,e=>()=>e.call(o),e=>t=>{e.call(o,t);try{a.channelCount=t}catch(e){if(t>a.maxChannelCount)throw e}}),t(o,`channelCountMode`,e=>()=>e.call(o),e=>t=>{e.call(o,t),a.channelCountMode=t}),t(o,`channelInterpretation`,e=>()=>e.call(o),e=>t=>{e.call(o,t),a.channelInterpretation=t}),Object.defineProperty(o,"maxChannelCount",{get:()=>a.maxChannelCount}),o.connect(a),o},wr=e=>e===null?null:e.hasOwnProperty(`AudioWorkletNode`)?e.AudioWorkletNode:null,Tr=e=>{let{port1:t}=new MessageChannel;try{t.postMessage(e)}finally{t.close()}},Er=(e,t,n,r,i)=>(a,o,s,c,l,u)=>{if(s!==null)try{let t=new s(a,c,u),r=new Map,o=null;if(Object.defineProperties(t,{channelCount:{get:()=>u.channelCount,set:()=>{throw e()}},channelCountMode:{get:()=>`explicit`,set:()=>{throw e()}},onprocessorerror:{get:()=>o,set:e=>{typeof o==`function`&&t.removeEventListener(`processorerror`,o),o=typeof e==`function`?e:null,typeof o==`function`&&t.addEventListener(`processorerror`,o)}}}),t.addEventListener=(e=>(...n)=>{if(n[0]===`processorerror`){let e=typeof n[1]==`function`?n[1]:typeof n[1]==`object`&&n[1]!==null&&typeof n[1].handleEvent==`function`?n[1].handleEvent:null;if(e!==null){let t=r.get(n[1]);t===void 0?(n[1]=t=>{t.type===`error`?(Object.defineProperties(t,{type:{value:`processorerror`}}),e(t)):e(new ErrorEvent(n[0],{...t}))},r.set(e,n[1])):n[1]=t}}return e.call(t,`error`,n[1],n[2]),e.call(t,...n)})(t.addEventListener),t.removeEventListener=(e=>(...n)=>{if(n[0]===`processorerror`){let e=r.get(n[1]);e!==void 0&&(r.delete(n[1]),n[1]=e)}return e.call(t,`error`,n[1],n[2]),e.call(t,n[0],n[1],n[2])})(t.removeEventListener),u.numberOfOutputs!==0){let e=n(a,{channelCount:1,channelCountMode:`explicit`,channelInterpretation:`discrete`,gain:0});return t.connect(e).connect(a.destination),i(t,()=>e.disconnect(),()=>e.connect(a.destination))}return t}catch(e){throw e.code===11?r():e}if(l===void 0)throw r();return Tr(u),t(a,o,l,u)},Dr=(e,t)=>e===null?512:Math.max(512,Math.min(16384,2**Math.round(Math.log2(e*t)))),Or=e=>new Promise((t,n)=>{let{port1:r,port2:i}=new MessageChannel;r.onmessage=({data:e})=>{r.close(),i.close(),t(e)},r.onmessageerror=({data:e})=>{r.close(),i.close(),n(e)},i.postMessage(e)}),kr=async(e,t)=>new e(await Or(t)),Ar=(e,t,n,r)=>{let i=k.get(e);i===void 0&&(i=new WeakMap,k.set(e,i));let a=kr(n,r);return i.set(t,a),a},jr=(e,t,n,r,i,a,o,s,c,l,u,d,f)=>(p,m,h,g)=>{if(g.numberOfInputs===0&&g.numberOfOutputs===0)throw c();let _=Array.isArray(g.outputChannelCount)?g.outputChannelCount:Array.from(g.outputChannelCount);if(_.some(e=>e<1))throw c();if(_.length!==g.numberOfOutputs)throw t();if(g.channelCountMode!==`explicit`)throw c();let v=g.channelCount*g.numberOfInputs,y=_.reduce((e,t)=>e+t,0),b=h.parameterDescriptors===void 0?0:h.parameterDescriptors.length;if(v+b>6||y>6)throw c();let x=new MessageChannel,S=[],C=[];for(let e=0;ee===void 0?0:e},maxValue:{get:()=>t===void 0?je:t},minValue:{get:()=>n===void 0?Ae:n}}),w.push(i)}let T=r(p,{channelCount:1,channelCountMode:`explicit`,channelInterpretation:`speakers`,numberOfInputs:Math.max(1,v+b)}),E=Dr(m,p.sampleRate),D=s(p,E,v+b,Math.max(1,y)),O=i(p,{channelCount:Math.max(1,y),channelCountMode:`explicit`,channelInterpretation:`discrete`,numberOfOutputs:Math.max(1,y)}),ee=[];for(let e=0;e{let n=w[t];return n.connect(T,0,v+t),n.start(0),[e,n.offset]}));T.connect(D);let ne=g.channelInterpretation,re=null,ie=g.numberOfOutputs===0?[D]:ee,ae={get bufferSize(){return E},get channelCount(){return g.channelCount},set channelCount(e){throw n()},get channelCountMode(){return g.channelCountMode},set channelCountMode(e){throw n()},get channelInterpretation(){return ne},set channelInterpretation(e){for(let t of S)t.channelInterpretation=e;ne=e},get context(){return D.context},get inputs(){return S},get numberOfInputs(){return g.numberOfInputs},get numberOfOutputs(){return g.numberOfOutputs},get onprocessorerror(){return re},set onprocessorerror(e){typeof re==`function`&&ae.removeEventListener(`processorerror`,re),re=typeof e==`function`?e:null,typeof re==`function`&&ae.addEventListener(`processorerror`,re)},get parameters(){return te},get port(){return x.port2},addEventListener(...e){return D.addEventListener(e[0],e[1],e[2])},connect:e.bind(null,ie),disconnect:l.bind(null,ie),dispatchEvent(...e){return D.dispatchEvent(e[0])},removeEventListener(...e){return D.removeEventListener(e[0],e[1],e[2])}},oe=new Map;x.port1.addEventListener=(e=>(...t)=>{if(t[0]===`message`){let e=typeof t[1]==`function`?t[1]:typeof t[1]==`object`&&t[1]!==null&&typeof t[1].handleEvent==`function`?t[1].handleEvent:null;if(e!==null){let n=oe.get(t[1]);n===void 0?(t[1]=t=>{u(p.currentTime,p.sampleRate,()=>e(t))},oe.set(e,t[1])):t[1]=n}}return e.call(x.port1,t[0],t[1],t[2])})(x.port1.addEventListener),x.port1.removeEventListener=(e=>(...t)=>{if(t[0]===`message`){let e=oe.get(t[1]);e!==void 0&&(oe.delete(t[1]),t[1]=e)}return e.call(x.port1,t[0],t[1],t[2])})(x.port1.removeEventListener);let k=null;Object.defineProperty(x.port1,"onmessage",{get:()=>k,set:e=>{typeof k==`function`&&x.port1.removeEventListener(`message`,k),k=typeof e==`function`?e:null,typeof k==`function`&&(x.port1.addEventListener(`message`,k),x.port1.start())}}),h.prototype.port=x.port1;let A=null;Ar(p,ae,h,g).then(e=>A=e);let se=Nt(g.numberOfInputs,g.channelCount),ce=Nt(g.numberOfOutputs,_),le=h.parameterDescriptors===void 0?[]:h.parameterDescriptors.reduce((e,{name:t})=>({...e,[t]:new Float32Array(128)}),{}),j=!0,M=()=>{g.numberOfOutputs>0&&D.disconnect(O);for(let e=0,t=0;e{if(A!==null){let n=d(ae);for(let r=0;r{jt(e,le,t,v+n,r)});for(let e=0;e{if(n[t].size>0)return N.set(t,E/128),e;let r=N.get(t);return r===void 0?[]:(e.every(e=>e.every(e=>e===0))&&(r===1?N.delete(t):N.set(t,r-1)),e)});j=u(p.currentTime+r/p.sampleRate,p.sampleRate,()=>A.process(e,ce,le));for(let e=0,n=0;eD.connect(ue).connect(p.destination),fe=()=>{D.disconnect(ue),ue.disconnect()};return de(),f(ae,()=>{if(j){fe(),g.numberOfOutputs>0&&D.connect(O);for(let e=0,t=0;e{j&&(de(),M()),P=!1})},Mr=(e,t)=>{let n=e.createBiquadFilter();return fr(n,t),_r(n,t,`Q`),_r(n,t,`detune`),_r(n,t,`frequency`),_r(n,t,`gain`),dr(n,t,`type`),n},Nr=(e,t)=>(n,r)=>{let i=n.createChannelMerger(r.numberOfInputs);return e!==null&&e.name===`webkitAudioContext`&&t(n,i),fr(i,r),i},Pr=e=>{let t=e.numberOfOutputs;Object.defineProperty(e,"channelCount",{get:()=>t,set:e=>{if(e!==t)throw Fn()}}),Object.defineProperty(e,"channelCountMode",{get:()=>`explicit`,set:e=>{if(e!==`explicit`)throw Fn()}}),Object.defineProperty(e,"channelInterpretation",{get:()=>`discrete`,set:e=>{if(e!==`discrete`)throw Fn()}})},Fr=(e,t)=>{let n=e.createChannelSplitter(t.numberOfOutputs);return fr(n,t),Pr(n),n},Ir=(e,t,n,r,i)=>(a,o)=>{if(a.createConstantSource===void 0)return n(a,o);let s=a.createConstantSource();return fr(s,o),_r(s,o,`offset`),t(r,()=>r(a))||yr(s),t(i,()=>i(a))||br(s),e(a,s),s},Lr=(e,t)=>(e.connect=t.connect.bind(t),e.disconnect=t.disconnect.bind(t),e),Rr=(e,t,n,r)=>(i,{offset:a,...o})=>{let s=i.createBuffer(1,2,44100),c=t(i,{buffer:null,channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`,loop:!1,loopEnd:0,loopStart:0,playbackRate:1}),l=n(i,{...o,gain:a}),u=s.getChannelData(0);return u[0]=1,u[1]=1,c.buffer=s,c.loop=!0,e(i,c),r(Lr({get bufferSize(){},get channelCount(){return l.channelCount},set channelCount(e){l.channelCount=e},get channelCountMode(){return l.channelCountMode},set channelCountMode(e){l.channelCountMode=e},get channelInterpretation(){return l.channelInterpretation},set channelInterpretation(e){l.channelInterpretation=e},get context(){return l.context},get inputs(){return[]},get numberOfInputs(){return c.numberOfInputs},get numberOfOutputs(){return l.numberOfOutputs},get offset(){return l.gain},get onended(){return c.onended},set onended(e){c.onended=e},addEventListener(...e){return c.addEventListener(e[0],e[1],e[2])},dispatchEvent(...e){return c.dispatchEvent(e[0])},removeEventListener(...e){return c.removeEventListener(e[0],e[1],e[2])},start(e=0){c.start.call(c,e)},stop(e=0){c.stop.call(c,e)}},l),()=>c.connect(l),()=>c.disconnect(l))},zr=(e,t)=>(n,r)=>{let i=n.createConvolver();if(fr(i,r),r.disableNormalization===i.normalize&&(i.normalize=!r.disableNormalization),dr(i,r,`buffer`),r.channelCount>2||(t(i,`channelCount`,e=>()=>e.call(i),t=>n=>{if(n>2)throw e();return t.call(i,n)}),r.channelCountMode===`max`))throw e();return t(i,`channelCountMode`,e=>()=>e.call(i),t=>n=>{if(n===`max`)throw e();return t.call(i,n)}),i},Br=(e,t)=>{let n=e.createDelay(t.maxDelayTime);return fr(n,t),_r(n,t,`delayTime`),n},Vr=e=>(t,n)=>{let r=t.createDynamicsCompressor();if(fr(r,n),n.channelCount>2||n.channelCountMode===`max`)throw e();return _r(r,n,`attack`),_r(r,n,`knee`),_r(r,n,`ratio`),_r(r,n,`release`),_r(r,n,`threshold`),r},Hr=(e,t)=>{let n=e.createGain();return fr(n,t),_r(n,t,`gain`),n},Ur=e=>(t,n,r)=>{if(t.createIIRFilter===void 0)return e(t,n,r);let i=t.createIIRFilter(r.feedforward,r.feedback);return fr(i,r),i};function Wr(e,t){let n=t[0]*t[0]+t[1]*t[1];return[(e[0]*t[0]+e[1]*t[1])/n,(e[1]*t[0]-e[0]*t[1])/n]}function Gr(e,t){return[e[0]*t[0]-e[1]*t[1],e[0]*t[1]+e[1]*t[0]]}function Kr(e,t){let n=[0,0];for(let r=e.length-1;r>=0;--r)n=Gr(n,t),n[0]+=e[r];return n}var qr=(e,t,n,r)=>(i,a,{channelCount:o,channelCountMode:s,channelInterpretation:c,feedback:l,feedforward:u})=>{let d=Dr(a,i.sampleRate),f=l instanceof Float64Array?l:new Float64Array(l),p=u instanceof Float64Array?u:new Float64Array(u),m=f.length,h=p.length,g=Math.min(m,h);if(m===0||m>20)throw r();if(f[0]===0)throw t();if(h===0||h>20)throw r();if(p[0]===0)throw t();if(f[0]!==1){for(let e=0;e{let t=e.inputBuffer,n=e.outputBuffer,r=t.numberOfChannels;for(let e=0;ee.createMediaElementSource(t.mediaElement),Yr=(e,t)=>{let n=e.createMediaStreamDestination();return fr(n,t),n.numberOfOutputs===1&&Object.defineProperty(n,"numberOfOutputs",{get:()=>0}),n},Xr=(e,{mediaStream:t})=>{let n=t.getAudioTracks();n.sort((e,t)=>e.idt.id));let r=n.slice(0,1),i=e.createMediaStreamSource(new MediaStream(r));return Object.defineProperty(i,"mediaStream",{value:t}),i},Zr=(e,t)=>(n,{mediaStreamTrack:r})=>{if(typeof n.createMediaStreamTrackSource==`function`)return n.createMediaStreamTrackSource(r);let i=new MediaStream([r]),a=n.createMediaStreamSource(i);if(r.kind!==`audio`)throw e();if(t(n))throw TypeError();return a},Qr=e=>e===null?null:e.hasOwnProperty(`OfflineAudioContext`)?e.OfflineAudioContext:e.hasOwnProperty(`webkitOfflineAudioContext`)?e.webkitOfflineAudioContext:null,$r=(e,t,n,r,i,a)=>(o,s)=>{let c=o.createOscillator();return fr(c,s),_r(c,s,`detune`),_r(c,s,`frequency`),s.periodicWave===void 0?dr(c,s,`type`):c.setPeriodicWave(s.periodicWave),t(n,()=>n(o))||yr(c),t(r,()=>r(o))||a(c,o),t(i,()=>i(o))||br(c),e(o,c),c},ei=e=>(t,n)=>{let r=t.createPanner();return r.orientationX===void 0?e(t,n):(fr(r,n),_r(r,n,`orientationX`),_r(r,n,`orientationY`),_r(r,n,`orientationZ`),_r(r,n,`positionX`),_r(r,n,`positionY`),_r(r,n,`positionZ`),dr(r,n,`coneInnerAngle`),dr(r,n,`coneOuterAngle`),dr(r,n,`coneOuterGain`),dr(r,n,`distanceModel`),dr(r,n,`maxDistance`),dr(r,n,`panningModel`),dr(r,n,`refDistance`),dr(r,n,`rolloffFactor`),r)},ti=(e,t,n,r,i,a,o,s,c,l)=>(u,{coneInnerAngle:d,coneOuterAngle:f,coneOuterGain:p,distanceModel:m,maxDistance:h,orientationX:g,orientationY:_,orientationZ:v,panningModel:y,positionX:b,positionY:x,positionZ:S,refDistance:C,rolloffFactor:w,...T})=>{let E=u.createPanner();if(T.channelCount>2||T.channelCountMode===`max`)throw o();fr(E,T);let D={channelCount:1,channelCountMode:`explicit`,channelInterpretation:`discrete`},O=n(u,{...D,channelInterpretation:`speakers`,numberOfInputs:6}),ee=r(u,{...T,gain:1}),te=r(u,{...D,gain:1}),ne=r(u,{...D,gain:0}),re=r(u,{...D,gain:0}),ie=r(u,{...D,gain:0}),ae=r(u,{...D,gain:0}),oe=r(u,{...D,gain:0}),k=i(u,256,6,1),A=a(u,{...D,curve:new Float32Array([1,1]),oversample:`none`}),se=[g,_,v],ce=[b,x,S],le=new Float32Array(1);k.onaudioprocess=({inputBuffer:e})=>{let t=[c(e,le,0),c(e,le,1),c(e,le,2)];t.some((e,t)=>e!==se[t])&&(E.setOrientation(...t),se=t);let n=[c(e,le,3),c(e,le,4),c(e,le,5)];n.some((e,t)=>e!==ce[t])&&(E.setPosition(...n),ce=n)},Object.defineProperty(ne.gain,"defaultValue",{get:()=>0}),Object.defineProperty(re.gain,"defaultValue",{get:()=>0}),Object.defineProperty(ie.gain,"defaultValue",{get:()=>0}),Object.defineProperty(ae.gain,"defaultValue",{get:()=>0}),Object.defineProperty(oe.gain,"defaultValue",{get:()=>0});let j={get bufferSize(){},get channelCount(){return E.channelCount},set channelCount(e){if(e>2)throw o();ee.channelCount=e,E.channelCount=e},get channelCountMode(){return E.channelCountMode},set channelCountMode(e){if(e===`max`)throw o();ee.channelCountMode=e,E.channelCountMode=e},get channelInterpretation(){return E.channelInterpretation},set channelInterpretation(e){ee.channelInterpretation=e,E.channelInterpretation=e},get coneInnerAngle(){return E.coneInnerAngle},set coneInnerAngle(e){E.coneInnerAngle=e},get coneOuterAngle(){return E.coneOuterAngle},set coneOuterAngle(e){E.coneOuterAngle=e},get coneOuterGain(){return E.coneOuterGain},set coneOuterGain(e){if(e<0||e>1)throw t();E.coneOuterGain=e},get context(){return E.context},get distanceModel(){return E.distanceModel},set distanceModel(e){E.distanceModel=e},get inputs(){return[ee]},get maxDistance(){return E.maxDistance},set maxDistance(e){if(e<0)throw RangeError();E.maxDistance=e},get numberOfInputs(){return E.numberOfInputs},get numberOfOutputs(){return E.numberOfOutputs},get orientationX(){return te.gain},get orientationY(){return ne.gain},get orientationZ(){return re.gain},get panningModel(){return E.panningModel},set panningModel(e){E.panningModel=e},get positionX(){return ie.gain},get positionY(){return ae.gain},get positionZ(){return oe.gain},get refDistance(){return E.refDistance},set refDistance(e){if(e<0)throw RangeError();E.refDistance=e},get rolloffFactor(){return E.rolloffFactor},set rolloffFactor(e){if(e<0)throw RangeError();E.rolloffFactor=e},addEventListener(...e){return ee.addEventListener(e[0],e[1],e[2])},dispatchEvent(...e){return ee.dispatchEvent(e[0])},removeEventListener(...e){return ee.removeEventListener(e[0],e[1],e[2])}};return d!==j.coneInnerAngle&&(j.coneInnerAngle=d),f!==j.coneOuterAngle&&(j.coneOuterAngle=f),p!==j.coneOuterGain&&(j.coneOuterGain=p),m!==j.distanceModel&&(j.distanceModel=m),h!==j.maxDistance&&(j.maxDistance=h),g!==j.orientationX.value&&(j.orientationX.value=g),_!==j.orientationY.value&&(j.orientationY.value=_),v!==j.orientationZ.value&&(j.orientationZ.value=v),y!==j.panningModel&&(j.panningModel=y),b!==j.positionX.value&&(j.positionX.value=b),x!==j.positionY.value&&(j.positionY.value=x),S!==j.positionZ.value&&(j.positionZ.value=S),C!==j.refDistance&&(j.refDistance=C),w!==j.rolloffFactor&&(j.rolloffFactor=w),(se[0]!==1||se[1]!==0||se[2]!==0)&&E.setOrientation(...se),(ce[0]!==0||ce[1]!==0||ce[2]!==0)&&E.setPosition(...ce),l(Lr(j,E),()=>{ee.connect(E),e(ee,A,0,0),A.connect(te).connect(O,0,0),A.connect(ne).connect(O,0,1),A.connect(re).connect(O,0,2),A.connect(ie).connect(O,0,3),A.connect(ae).connect(O,0,4),A.connect(oe).connect(O,0,5),O.connect(k).connect(u.destination)},()=>{ee.disconnect(E),s(ee,A,0,0),A.disconnect(te),te.disconnect(O),A.disconnect(ne),ne.disconnect(O),A.disconnect(re),re.disconnect(O),A.disconnect(ie),ie.disconnect(O),A.disconnect(ae),ae.disconnect(O),A.disconnect(oe),oe.disconnect(O),O.disconnect(k),k.disconnect(u.destination)})},ni=e=>(t,{disableNormalization:n,imag:r,real:i})=>{let a=r instanceof Float32Array?r:new Float32Array(r),o=i instanceof Float32Array?i:new Float32Array(i),s=t.createPeriodicWave(o,a,{disableNormalization:n});if(Array.from(r).length<2)throw e();return s},ri=(e,t,n,r)=>e.createScriptProcessor(t,n,r),ii=(e,t)=>(n,r)=>{let i=r.channelCountMode;if(i===`clamped-max`)throw t();if(n.createStereoPanner===void 0)return e(n,r);let a=n.createStereoPanner();return fr(a,r),_r(a,r,`pan`),Object.defineProperty(a,"channelCountMode",{get:()=>i,set:e=>{if(e!==i)throw t()}}),a},ai=(e,t,n,r,i,a)=>{let o=16385,s=new Float32Array([1,1]),c=Math.PI/2,l={channelCount:1,channelCountMode:`explicit`,channelInterpretation:`discrete`},u={...l,oversample:`none`},d=(e,t,i,a)=>{let d=new Float32Array(o),f=new Float32Array(o);for(let e=0;e{let f=new Float32Array(o),p=new Float32Array(o),m=new Float32Array(o),h=new Float32Array(o),g=8192;for(let e=0;eg){let t=(e-g)/(o-1-g)*c;f[e]=Math.cos(t),p[e]=Math.sin(t),m[e]=0,h[e]=1}else{let t=e/(o-1-g)*c;f[e]=1,p[e]=0,m[e]=Math.cos(t),h[e]=Math.sin(t)}let _=t(e,{channelCount:2,channelCountMode:`explicit`,channelInterpretation:`discrete`,numberOfOutputs:2}),v=n(e,{...l,gain:0}),y=r(e,{...u,curve:f}),b=n(e,{...l,gain:0}),x=r(e,{...u,curve:p}),S=r(e,{...u,curve:s}),C=n(e,{...l,gain:0}),w=r(e,{...u,curve:m}),T=n(e,{...l,gain:0}),E=r(e,{...u,curve:h});return{connectGraph(){i.connect(_),i.connect(S.inputs===void 0?S:S.inputs[0]),_.connect(v,0),_.connect(b,0),_.connect(C,1),_.connect(T,1),S.connect(a),a.connect(y.inputs===void 0?y:y.inputs[0]),a.connect(x.inputs===void 0?x:x.inputs[0]),a.connect(w.inputs===void 0?w:w.inputs[0]),a.connect(E.inputs===void 0?E:E.inputs[0]),y.connect(v.gain),x.connect(b.gain),w.connect(C.gain),E.connect(T.gain),v.connect(d,0,0),C.connect(d,0,0),b.connect(d,0,1),T.connect(d,0,1)},disconnectGraph(){i.disconnect(_),i.disconnect(S.inputs===void 0?S:S.inputs[0]),_.disconnect(v,0),_.disconnect(b,0),_.disconnect(C,1),_.disconnect(T,1),S.disconnect(a),a.disconnect(y.inputs===void 0?y:y.inputs[0]),a.disconnect(x.inputs===void 0?x:x.inputs[0]),a.disconnect(w.inputs===void 0?w:w.inputs[0]),a.disconnect(E.inputs===void 0?E:E.inputs[0]),y.disconnect(v.gain),x.disconnect(b.gain),w.disconnect(C.gain),E.disconnect(T.gain),v.disconnect(d,0,0),C.disconnect(d,0,0),b.disconnect(d,0,1),T.disconnect(d,0,1)}}},p=(e,t,n,r,a)=>{if(t===1)return d(e,n,r,a);if(t===2)return f(e,n,r,a);throw i()};return(t,{channelCount:r,channelCountMode:o,pan:s,...c})=>{if(o===`max`)throw i();let l=e(t,{...c,channelCount:1,channelCountMode:o,numberOfInputs:2}),u=n(t,{...c,channelCount:r,channelCountMode:o,gain:1}),d=n(t,{channelCount:1,channelCountMode:`explicit`,channelInterpretation:`discrete`,gain:s}),{connectGraph:f,disconnectGraph:m}=p(t,r,u,d,l);Object.defineProperty(d.gain,"defaultValue",{get:()=>0}),Object.defineProperty(d.gain,"maxValue",{get:()=>1}),Object.defineProperty(d.gain,"minValue",{get:()=>-1});let h={get bufferSize(){},get channelCount(){return u.channelCount},set channelCount(e){u.channelCount!==e&&(g&&m(),{connectGraph:f,disconnectGraph:m}=p(t,e,u,d,l),g&&f()),u.channelCount=e},get channelCountMode(){return u.channelCountMode},set channelCountMode(e){if(e===`clamped-max`||e===`max`)throw i();u.channelCountMode=e},get channelInterpretation(){return u.channelInterpretation},set channelInterpretation(e){u.channelInterpretation=e},get context(){return u.context},get inputs(){return[u]},get numberOfInputs(){return u.numberOfInputs},get numberOfOutputs(){return u.numberOfOutputs},get pan(){return d.gain},addEventListener(...e){return u.addEventListener(e[0],e[1],e[2])},dispatchEvent(...e){return u.dispatchEvent(e[0])},removeEventListener(...e){return u.removeEventListener(e[0],e[1],e[2])}},g=!1;return a(Lr(h,l),()=>{f(),g=!0},()=>{m(),g=!1})}},oi=(e,t,n,r,i,a,o)=>(s,c)=>{let l=s.createWaveShaper();if(a!==null&&a.name===`webkitAudioContext`&&s.createGain().gain.automationRate===void 0)return n(s,c);fr(l,c);let u=c.curve===null||c.curve instanceof Float32Array?c.curve:new Float32Array(c.curve);if(u!==null&&u.length<2)throw t();dr(l,{curve:u},`curve`),dr(l,c,`oversample`);let d=null,f=!1;return o(l,`curve`,e=>()=>e.call(l),t=>n=>(t.call(l,n),f&&(r(n)&&d===null?d=e(s,l):!r(n)&&d!==null&&(d(),d=null)),n)),i(l,()=>{f=!0,r(l.curve)&&(d=e(s,l))},()=>{f=!1,d!==null&&(d(),d=null)})},si=(e,t,n,r,i)=>(a,{curve:o,oversample:s,...c})=>{let l=a.createWaveShaper(),u=a.createWaveShaper();fr(l,c),fr(u,c);let d=n(a,{...c,gain:1}),f=n(a,{...c,gain:-1}),p=n(a,{...c,gain:1}),m=n(a,{...c,gain:-1}),h=null,g=!1,_=null,v={get bufferSize(){},get channelCount(){return l.channelCount},set channelCount(e){d.channelCount=e,f.channelCount=e,l.channelCount=e,p.channelCount=e,u.channelCount=e,m.channelCount=e},get channelCountMode(){return l.channelCountMode},set channelCountMode(e){d.channelCountMode=e,f.channelCountMode=e,l.channelCountMode=e,p.channelCountMode=e,u.channelCountMode=e,m.channelCountMode=e},get channelInterpretation(){return l.channelInterpretation},set channelInterpretation(e){d.channelInterpretation=e,f.channelInterpretation=e,l.channelInterpretation=e,p.channelInterpretation=e,u.channelInterpretation=e,m.channelInterpretation=e},get context(){return l.context},get curve(){return _},set curve(n){if(n!==null&&n.length<2)throw t();if(n===null)l.curve=n,u.curve=n;else{let e=n.length,t=new Float32Array(e+2-e%2),r=new Float32Array(e+2-e%2);t[0]=n[0],r[0]=-n[e-1];let i=Math.ceil((e+1)/2),a=(e+1)/2-1;for(let o=1;o{d.connect(l).connect(p),d.connect(f).connect(u).connect(m).connect(p),g=!0,r(_)&&(h=e(a,d))},()=>{d.disconnect(l),l.disconnect(p),d.disconnect(f),f.disconnect(u),u.disconnect(m),m.disconnect(p),g=!1,h!==null&&(h(),h=null)})},ci=()=>new DOMException(``,`NotSupportedError`),li={numberOfChannels:1},ui=(e,t,n,r,i)=>class extends e{constructor(e,n,i){let a;if(typeof e==`number`&&n!==void 0&&i!==void 0)a={length:n,numberOfChannels:e,sampleRate:i};else if(typeof e==`object`)a=e;else throw Error(`The given parameters are not valid.`);let{length:o,numberOfChannels:s,sampleRate:c}={...li,...a},l=r(s,o,c);t(lr,()=>lr(l))||l.addEventListener(`statechange`,(()=>{let e=0,t=n=>{this._state===`running`&&(e>0?(l.removeEventListener(`statechange`,t),n.stopImmediatePropagation(),this._waitForThePromiseToSettle(n)):e+=1)};return t})()),super(l,s),this._length=o,this._nativeOfflineAudioContext=l,this._state=null}get length(){return this._nativeOfflineAudioContext.length===void 0?this._length:this._nativeOfflineAudioContext.length}get state(){return this._state===null?this._nativeOfflineAudioContext.state:this._state}startRendering(){return this._state===`running`?Promise.reject(n()):(this._state=`running`,i(this.destination,this._nativeOfflineAudioContext).finally(()=>{this._state=null,Ge(this)}))}_waitForThePromiseToSettle(e){this._state===null?this._nativeOfflineAudioContext.dispatchEvent(e):setTimeout(()=>this._waitForThePromiseToSettle(e))}},di={channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`,detune:0,frequency:440,periodicWave:void 0,type:`sine`},fi=(e,t,n,r,i,a,o)=>class extends e{constructor(e,o){let s=i(e),c={...di,...o},l=n(s,c),u=a(s),d=u?r():null,f=e.sampleRate/2;super(e,!1,l,d),this._detune=t(this,u,l.detune,153600,-153600),this._frequency=t(this,u,l.frequency,f,-f),this._nativeOscillatorNode=l,this._onended=null,this._oscillatorNodeRenderer=d,this._oscillatorNodeRenderer!==null&&c.periodicWave!==void 0&&(this._oscillatorNodeRenderer.periodicWave=c.periodicWave)}get detune(){return this._detune}get frequency(){return this._frequency}get onended(){return this._onended}set onended(e){let t=typeof e==`function`?o(this,e):null;this._nativeOscillatorNode.onended=t;let n=this._nativeOscillatorNode.onended;this._onended=n!==null&&n===t?e:n}get type(){return this._nativeOscillatorNode.type}set type(e){this._nativeOscillatorNode.type=e,this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=null)}setPeriodicWave(e){this._nativeOscillatorNode.setPeriodicWave(e),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.periodicWave=e)}start(e=0){if(this._nativeOscillatorNode.start(e),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.start=e),this.context.state!==`closed`){pe(this);let e=()=>{this._nativeOscillatorNode.removeEventListener(`ended`,e),Me(this)&&he(this)};this._nativeOscillatorNode.addEventListener(`ended`,e)}}stop(e=0){this._nativeOscillatorNode.stop(e),this._oscillatorNodeRenderer!==null&&(this._oscillatorNodeRenderer.stop=e)}},pi=(e,t,n,r,i)=>()=>{let a=new WeakMap,o=null,s=null,c=null,l=async(l,u)=>{let d=n(l),f=Ce(d,u);return f||(d=t(u,{channelCount:d.channelCount,channelCountMode:d.channelCountMode,channelInterpretation:d.channelInterpretation,detune:d.detune.value,frequency:d.frequency.value,periodicWave:o===null?void 0:o,type:d.type}),s!==null&&d.start(s),c!==null&&d.stop(c)),a.set(u,d),f?(await e(u,l.detune,d.detune),await e(u,l.frequency,d.frequency)):(await r(u,l.detune,d.detune),await r(u,l.frequency,d.frequency)),await i(l,u,d),d};return{set periodicWave(e){o=e},set start(e){s=e},set stop(e){c=e},render(e,t){let n=a.get(t);return n===void 0?l(e,t):Promise.resolve(n)}}},mi={channelCount:2,channelCountMode:`clamped-max`,channelInterpretation:`speakers`,coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0,distanceModel:`inverse`,maxDistance:1e4,orientationX:1,orientationY:0,orientationZ:0,panningModel:`equalpower`,positionX:0,positionY:0,positionZ:0,refDistance:1,rolloffFactor:1},hi=(e,t,n,r,i,a,o)=>class extends e{constructor(e,s){let c=i(e),l=n(c,{...mi,...s}),u=a(c),d=u?r():null;super(e,!1,l,d),this._nativePannerNode=l,this._orientationX=t(this,u,l.orientationX,je,Ae),this._orientationY=t(this,u,l.orientationY,je,Ae),this._orientationZ=t(this,u,l.orientationZ,je,Ae),this._positionX=t(this,u,l.positionX,je,Ae),this._positionY=t(this,u,l.positionY,je,Ae),this._positionZ=t(this,u,l.positionZ,je,Ae),o(this,1)}get coneInnerAngle(){return this._nativePannerNode.coneInnerAngle}set coneInnerAngle(e){this._nativePannerNode.coneInnerAngle=e}get coneOuterAngle(){return this._nativePannerNode.coneOuterAngle}set coneOuterAngle(e){this._nativePannerNode.coneOuterAngle=e}get coneOuterGain(){return this._nativePannerNode.coneOuterGain}set coneOuterGain(e){this._nativePannerNode.coneOuterGain=e}get distanceModel(){return this._nativePannerNode.distanceModel}set distanceModel(e){this._nativePannerNode.distanceModel=e}get maxDistance(){return this._nativePannerNode.maxDistance}set maxDistance(e){this._nativePannerNode.maxDistance=e}get orientationX(){return this._orientationX}get orientationY(){return this._orientationY}get orientationZ(){return this._orientationZ}get panningModel(){return this._nativePannerNode.panningModel}set panningModel(e){this._nativePannerNode.panningModel=e}get positionX(){return this._positionX}get positionY(){return this._positionY}get positionZ(){return this._positionZ}get refDistance(){return this._nativePannerNode.refDistance}set refDistance(e){this._nativePannerNode.refDistance=e}get rolloffFactor(){return this._nativePannerNode.rolloffFactor}set rolloffFactor(e){this._nativePannerNode.rolloffFactor=e}},gi=(e,t,n,r,i,a,o,s,c,l)=>()=>{let u=new WeakMap,d=null,f=async(f,p)=>{let m=null,h=a(f),g={channelCount:h.channelCount,channelCountMode:h.channelCountMode,channelInterpretation:h.channelInterpretation},_={...g,coneInnerAngle:h.coneInnerAngle,coneOuterAngle:h.coneOuterAngle,coneOuterGain:h.coneOuterGain,distanceModel:h.distanceModel,maxDistance:h.maxDistance,panningModel:h.panningModel,refDistance:h.refDistance,rolloffFactor:h.rolloffFactor},v=Ce(h,p);if(`bufferSize`in h?m=r(p,{...g,gain:1}):v||(h=i(p,{..._,orientationX:h.orientationX.value,orientationY:h.orientationY.value,orientationZ:h.orientationZ.value,positionX:h.positionX.value,positionY:h.positionY.value,positionZ:h.positionZ.value})),u.set(p,m===null?h:m),m!==null){if(d===null){if(o===null)throw Error(`Missing the native OfflineAudioContext constructor.`);let e=new o(6,f.context.length,p.sampleRate),r=t(e,{channelCount:1,channelCountMode:`explicit`,channelInterpretation:`speakers`,numberOfInputs:6});r.connect(e.destination),d=(async()=>{let t=await Promise.all([f.orientationX,f.orientationY,f.orientationZ,f.positionX,f.positionY,f.positionZ].map(async(t,r)=>{let i=n(e,{channelCount:1,channelCountMode:`explicit`,channelInterpretation:`discrete`,offset:+(r===0)});return await s(e,t,i.offset),i}));for(let e=0;e<6;e+=1)t[e].connect(r,0,e),t[e].start(0);return l(e)})()}let e=await d,a=r(p,{...g,gain:1});await c(f,p,a);let u=[];for(let t=0;te!==h[t])||n.some((e,t)=>e!==v[t])){h=e,v=n;let o=t/p.sampleRate;y.gain.setValueAtTime(0,o),y=r(p,{...g,gain:0}),b=i(p,{..._,orientationX:h[0],orientationY:h[1],orientationZ:h[2],positionX:v[0],positionY:v[1],positionZ:v[2]}),y.gain.setValueAtTime(1,o),a.connect(y).connect(b.inputs[0]),b.connect(m)}}return m}return v?(await e(p,f.orientationX,h.orientationX),await e(p,f.orientationY,h.orientationY),await e(p,f.orientationZ,h.orientationZ),await e(p,f.positionX,h.positionX),await e(p,f.positionY,h.positionY),await e(p,f.positionZ,h.positionZ)):(await s(p,f.orientationX,h.orientationX),await s(p,f.orientationY,h.orientationY),await s(p,f.orientationZ,h.orientationZ),await s(p,f.positionX,h.positionX),await s(p,f.positionY,h.positionY),await s(p,f.positionZ,h.positionZ)),nt(h)?await c(f,p,h.inputs[0]):await c(f,p,h),h};return{render(e,t){let n=u.get(t);return n===void 0?f(e,t):Promise.resolve(n)}}},_i={disableNormalization:!1},vi=(e,t,n,r)=>class i{constructor(i,a){let o=e(t(i),r({..._i,...a}));return n.add(o),o}static[Symbol.hasInstance](e){return typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===i.prototype||n.has(e)}},yi=(e,t)=>(n,r,i)=>(e(r).replay(i),t(r,n,i)),bi=(e,t,n)=>async(r,i,a)=>{let o=e(r);await Promise.all(o.activeInputs.map((e,o)=>Array.from(e).map(async([e,s])=>{let c=await t(e).render(e,i),l=r.context.destination;!n(e)&&(r!==l||!n(r))&&c.connect(a,s,o)})).reduce((e,t)=>[...e,...t],[]))},xi=(e,t,n)=>async(r,i,a)=>{let o=t(r);await Promise.all(Array.from(o.activeInputs).map(async([t,r])=>{let o=await e(t).render(t,i);n(t)||o.connect(a,r)}))},Si=(e,t,n,r)=>i=>e(lr,()=>lr(i))?Promise.resolve(e(r,r)).then(e=>{if(!e){let e=n(i,512,0,1);i.oncomplete=()=>{e.onaudioprocess=null,e.disconnect()},e.onaudioprocess=()=>i.currentTime,e.connect(i.destination)}return i.startRendering()}):new Promise(e=>{let n=t(i,{channelCount:1,channelCountMode:`explicit`,channelInterpretation:`discrete`,gain:0});i.oncomplete=t=>{n.disconnect(),e(t.renderedBuffer)},n.connect(i.destination),i.startRendering()}),Ci=e=>(t,n)=>{e.set(t,n)},wi=e=>(t,n)=>e.set(t,n),Ti=(e,t,n,r,i,a,o,s)=>(c,l)=>n(c).render(c,l).then(()=>Promise.all(Array.from(r(l)).map(e=>n(e).render(e,l)))).then(()=>i(l)).then(n=>(typeof n.copyFromChannel==`function`?t(a,()=>a(n))||s(n):(o(n),De(n)),e.add(n),n)),Ei={channelCount:2,channelCountMode:`explicit`,channelInterpretation:`speakers`,pan:0},Di=(e,t,n,r,i,a)=>class extends e{constructor(e,o){let s=i(e),c=n(s,{...Ei,...o}),l=a(s),u=l?r():null;super(e,!1,c,u),this._pan=t(this,l,c.pan)}get pan(){return this._pan}},Oi=(e,t,n,r,i)=>()=>{let a=new WeakMap,o=async(o,s)=>{let c=n(o),l=Ce(c,s);return l||(c=t(s,{channelCount:c.channelCount,channelCountMode:c.channelCountMode,channelInterpretation:c.channelInterpretation,pan:c.pan.value})),a.set(s,c),l?await e(s,o.pan,c.pan):await r(s,o.pan,c.pan),nt(c)?await i(o,s,c.inputs[0]):await i(o,s,c),c};return{render(e,t){let n=a.get(t);return n===void 0?o(e,t):Promise.resolve(n)}}},ki=e=>()=>{if(e===null)return!1;try{new e({length:1,sampleRate:44100})}catch{return!1}return!0},Ai=(e,t)=>async()=>{if(e===null)return!0;if(t===null)return!1;let n=new Blob([`class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor("a",A)`],{type:`application/javascript; charset=utf-8`}),r=new t(1,128,44100),i=URL.createObjectURL(n),a=!1,o=!1;try{await r.audioWorklet.addModule(i);let t=new e(r,`a`,{numberOfOutputs:0}),n=r.createOscillator();t.port.onmessage=()=>a=!0,t.onprocessorerror=()=>o=!0,n.connect(t),n.start(0),await r.startRendering(),await new Promise(e=>setTimeout(e))}catch{}finally{URL.revokeObjectURL(i)}return a&&!o},ji=(e,t)=>()=>{if(t===null)return Promise.resolve(!1);let n=new t(1,1,44100),r=e(n,{channelCount:1,channelCountMode:`explicit`,channelInterpretation:`discrete`,gain:0});return new Promise(e=>{n.oncomplete=()=>{r.disconnect(),e(n.currentTime!==0)},n.startRendering()})},Mi=()=>new DOMException(``,`UnknownError`),Ni={channelCount:2,channelCountMode:`max`,channelInterpretation:`speakers`,curve:null,oversample:`none`},Pi=(e,t,n,r,i,a,o)=>class extends e{constructor(e,t){let s=i(e),c=n(s,{...Ni,...t}),l=a(s)?r():null;super(e,!0,c,l),this._isCurveNullified=!1,this._nativeWaveShaperNode=c,o(this,1)}get curve(){return this._isCurveNullified?null:this._nativeWaveShaperNode.curve}set curve(e){if(e===null)this._isCurveNullified=!0,this._nativeWaveShaperNode.curve=new Float32Array([0,0]);else{if(e.length<2)throw t();this._isCurveNullified=!1,this._nativeWaveShaperNode.curve=e}}get oversample(){return this._nativeWaveShaperNode.oversample}set oversample(e){this._nativeWaveShaperNode.oversample=e}},Fi=(e,t,n)=>()=>{let r=new WeakMap,i=async(i,a)=>{let o=t(i);return Ce(o,a)||(o=e(a,{channelCount:o.channelCount,channelCountMode:o.channelCountMode,channelInterpretation:o.channelInterpretation,curve:o.curve,oversample:o.oversample})),r.set(a,o),nt(o)?await n(i,a,o.inputs[0]):await n(i,a,o),o};return{render(e,t){let n=r.get(t);return n===void 0?i(e,t):Promise.resolve(n)}}},Ii=()=>typeof window>`u`?null:window,Li=(e,t)=>n=>{n.copyFromChannel=(r,i,a=0)=>{let o=e(a),s=e(i);if(s>=n.numberOfChannels)throw t();let c=n.length,l=n.getChannelData(s),u=r.length;for(let e=o<0?-o:0;e+o{let o=e(a),s=e(i);if(s>=n.numberOfChannels)throw t();let c=n.length,l=n.getChannelData(s),u=r.length;for(let e=o<0?-o:0;e+ot=>{t.copyFromChannel=(n=>(r,i,a=0)=>{let o=e(a),s=e(i);if(o(r,i,a=0)=>{let o=e(a),s=e(i);if(o(t,n)=>{let r=n.createBuffer(1,1,44100);t.buffer===null&&(t.buffer=r),e(t,`buffer`,e=>()=>{let n=e.call(t);return n===r?null:n},e=>n=>e.call(t,n===null?r:n))},zi=(e,t)=>(n,r)=>{r.channelCount=1,r.channelCountMode=`explicit`,Object.defineProperty(r,"channelCount",{get:()=>1,set:()=>{throw e()}}),Object.defineProperty(r,"channelCountMode",{get:()=>`explicit`,set:()=>{throw e()}});let i=n.createBufferSource();t(r,()=>{let e=r.numberOfInputs;for(let t=0;ti.disconnect(r))},Bi=(e,t,n)=>e.copyFromChannel===void 0?e.getChannelData(n)[0]:(e.copyFromChannel(t,n),t[0]),Vi=e=>{if(e===null)return!1;let t=e.length;return t%2==0?e[t/2-1]+e[t/2]!==0:e[Math.floor(t/2)]!==0},Hi=(e,t,n,r)=>{let i=e;for(;!i.hasOwnProperty(t);)i=Object.getPrototypeOf(i);let{get:a,set:o}=Object.getOwnPropertyDescriptor(i,t);Object.defineProperty(e,t,{get:n(a),set:r(o)})},Ui=e=>({...e,outputChannelCount:e.outputChannelCount===void 0?e.numberOfInputs===1&&e.numberOfOutputs===1?[e.channelCount]:Array.from({length:e.numberOfOutputs},()=>1):e.outputChannelCount}),Wi=e=>({...e,channelCount:e.numberOfOutputs}),Gi=e=>{let{imag:t,real:n}=e;return t===void 0?n===void 0?{...e,imag:[0,0],real:[0,0]}:{...e,imag:Array.from(n,()=>0),real:n}:n===void 0?{...e,imag:t,real:Array.from(t,()=>0)}:{...e,imag:t,real:n}},Ki=(e,t,n)=>{try{e.setValueAtTime(t,n)}catch(r){if(r.code!==9)throw r;Ki(e,t,n+1e-7)}},qi=e=>{let t=e.createBufferSource();t.start();try{t.start()}catch{return!0}return!1},Ji=e=>{let t=e.createBufferSource();t.buffer=e.createBuffer(1,1,44100);try{t.start(0,1)}catch{return!1}return!0},Yi=e=>{let t=e.createBufferSource();t.start();try{t.stop()}catch{return!1}return!0},Xi=e=>{let t=e.createOscillator();try{t.start(-1)}catch(e){return e instanceof RangeError}return!1},Zi=e=>{let t=e.createBuffer(1,1,44100),n=e.createBufferSource();n.buffer=t,n.start(),n.stop();try{return n.stop(),!0}catch{return!1}},Qi=e=>{let t=e.createOscillator();try{t.stop(-1)}catch(e){return e instanceof RangeError}return!1},$i=e=>{let{port1:t,port2:n}=new MessageChannel;try{t.postMessage(e)}finally{t.close(),n.close()}},ea=e=>{e.start=(t=>(n=0,r=0,i)=>{let a=e.buffer,o=a===null?r:Math.min(a.duration,r);a!==null&&o>a.duration-.5/e.context.sampleRate?t.call(e,n,0,0):t.call(e,n,o,i)})(e.start)},ta=(e,t)=>{let n=t.createGain();e.connect(n);let r=(t=>()=>{t.call(e,n),e.removeEventListener(`ended`,r)})(e.disconnect);e.addEventListener(`ended`,r),Lr(e,n),e.stop=(t=>{let r=!1;return(i=0)=>{if(r)try{t.call(e,i)}catch{n.gain.setValueAtTime(0,i)}else t.call(e,i),r=!0}})(e.stop)},na=(e,t)=>n=>{let r={value:e};return Object.defineProperties(n,{currentTarget:r,target:r}),typeof t==`function`?t.call(e,n):t.handleEvent.call(e,n)},ra=w($e),ia=ve($e),aa=pn(ue),oa=new WeakMap,sa=Mn(oa),ca=Vt(new Map,new WeakMap),la=Ii(),ua=hr(ca,Ee),da=jn(He),fa=bi(He,da,dt),pa=we(ua,lt,fa),ma=In(re),ha=Qr(la),I=tr(ha),ga=new WeakMap,_a=wn(na),va=Sr(la),ya=Zn(va),ba=Qn(la),xa=$n(la),Sa=wr(la),Ca=Tt(T(O),_e(ra,ia,rt,aa,ct,He,sa,fe,lt,$e,Me,dt,ft),ca,Kn(ae,ct,He,lt,ut,Me),Ee,zn,ci,ln(rt,ae,He,lt,ut,ma,Me,I),gn(ga,He,P),_a,ma,ya,ba,xa,I,Sa),wa=Se(Ca,pa,Ee,ua,ma,I),Ta=new WeakSet,Ea=gr(la),Da=en(new Uint32Array(1)),Oa=Li(Da,Ee),ka=Ri(Da),Aa=ke(Ta,ca,ci,Ea,ha,ki(Ea),Oa,ka),ja=ye(Hr),Ma=xi(da,Ue,dt),Na=Jt(Ma),Pa=xr(ja,ca,qi,Ji,Yi,Xi,Zi,Qi,ea,F(Hi),ta),Fa=yi(Nn(Ue),Ma),Ia=Fe(Na,Pa,lt,Fa,fa),La=Et(E(te),ga,ne,Dt,S.createCancelAndHoldAutomationEvent,S.createCancelScheduledValuesAutomationEvent,S.createExponentialRampToValueAutomationEvent,S.createLinearRampToValueAutomationEvent,S.createSetTargetAutomationEvent,S.createSetValueAutomationEvent,S.createSetValueCurveAutomationEvent,va,Ki),Ra=Pe(Ca,Ia,La,Fn,Pa,ma,I,na),za=Je(Ca,Ye,Ee,Fn,Cr(Hr,Hi),ma,I,fa),Ba=Bt(Na,Mr,lt,Fa,fa),Va=wi(oa),Ha=zt(Ca,La,Ba,zn,Mr,ma,I,Va),Ua=ur($e,ba),Wa=Nr(va,zi(Fn,Ua)),Ga=Ut(Ca,Wt(Wa,lt,fa),Wa,ma,I),Ka=Kt(Ca,qt(Fr,lt,fa),Fr,ma,I,Wi),qa=Ir(ja,ca,Rr(ja,Pa,Hr,Ua),Xi,Qi),Ja=Qt(Ca,La,$t(Na,qa,lt,Fa,fa),qa,ma,I,na),Ya=zr(ci,Hi),Xa=nn(Ca,rn(Ya,lt,fa),Ya,ma,I,Va),Za=dn(Ca,La,fn(Na,Br,lt,Fa,fa),Br,ma,I,Va),Qa=Vr(ci),$a=bn(Ca,La,xn(Na,Qa,lt,Fa,fa),Qa,ci,ma,I,Va),eo=On(Ca,La,kn(Na,Hr,lt,Fa,fa),Hr,ma,I),to=qr(zn,Fn,ri,ci),no=Si(ca,Hr,ri,ji(Hr,ha)),ro=Gn(Pa,lt,ha,fa,no),io=Hn(Ca,Ur(to),ro,ma,I,Va),ao=Xe(La,Wa,qa,ri,ci,Bi,I,Hi),oo=new WeakMap,so=cr(za,ao,_a,I,oo,na),co=$r(ja,ca,Xi,Zi,Qi,ta),lo=fi(Ca,La,co,pi(Na,co,lt,Fa,fa),ma,I,na),uo=Xt(Pa),fo=oi(uo,Fn,si(uo,Fn,Hr,Vi,Ua),Vi,Ua,va,Hi),po=ei(ti(rt,Fn,Wa,Hr,ri,fo,ci,ct,Bi,Ua)),mo=hi(Ca,La,po,gi(Na,Wa,qa,Hr,po,lt,ha,Fa,fa,no),ma,I,Va),ho=vi(ni(Ee),ma,new WeakSet,Gi),go=ii(ai(Wa,Fr,Hr,fo,ci,Ua),ci),L=Di(Ca,La,go,Oi(Na,go,lt,Fa,fa),ma,I),_o=Pi(Ca,Fn,fo,Fi(fo,lt,fa),ma,I,Va),vo=nr(la),yo=Tn(la),bo=new WeakMap,xo=Ln(bo,ha),So=vo?N(ca,ci,Cn(la),yo,En(C),ma,xo,I,Sa,new WeakMap,new WeakMap,Ai(Sa,ha),la):void 0,Co=er(ya,I),wo=Lt(So,wa,Aa,Ra,Ha,Ga,Ka,Ja,Xa,cn(Ta,ca,on,Sn,new WeakSet,ma,Co,Te,lr,Oa,ka),Za,$a,eo,io,so,lo,mo,ho,L,_o),To=qe(wo,Fn,ci,Mi,rr(Ca,Jr,ma,I),ar(Ca,Yr,ma,I),or(Ca,Xr,ma,I),sr(Ca,Zr(Fn,I),ma),va),Eo=Rn(oo),Do=be(Eo),Oo=Yt(Ee),ko=mn(Eo),Ao=vn(Ee),jo=new WeakMap,Mo=Er(Fn,jr(Oo,Ee,Fn,Wa,Fr,qa,Hr,ri,ci,Ao,yo,An(jo,P),Ua),Hr,ci,Ua),No=It(Na,Oo,Pa,Wa,Fr,qa,Hr,ko,Ao,yo,lt,Sa,ha,Fa,fa,no),Po=Pn(bo),Fo=Ci(jo),Io=vo?At(Do,Ca,La,No,Mo,He,Po,ma,I,Sa,Ui,Fo,$i,na):void 0,Lo=ui(wo,ca,Fn,an(ci,ha),Ti(Ta,ca,da,Eo,no,Te,Oa,ka)),Ro=qn(re,ya),zo=Jn(ee,ba),Bo=Yn(ne,xa),Vo=Xn(re,I);function Ho(e){return e===void 0}function R(e){return e!==void 0}function Uo(e){return typeof e==`function`}function Wo(e){return typeof e==`number`}function Go(e){return Object.prototype.toString.call(e)===`[object Object]`&&e.constructor===Object}function Ko(e){return typeof e==`boolean`}function qo(e){return Array.isArray(e)}function Jo(e){return typeof e==`string`}function Yo(e){return Jo(e)&&/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(e)}function z(e,t){if(!e)throw Error(t)}function Xo(e,t,n=1/0){if(!(t<=e&&e<=n))throw RangeError(`Value must be within [${t}, ${n}], got: ${e}`)}function Zo(e){!e.isOffline&&e.state!==`running`&&is(`The AudioContext is "suspended". Invoke Tone.start() from a user action to start the audio.`)}var Qo=!1,$o=!1;function es(e){Qo=e}function ts(e){Ho(e)&&Qo&&!$o&&($o=!0,is(`Events scheduled inside of scheduled callbacks should use the passed in scheduling time. See https://github.com/Tonejs/Tone.js/wiki/Accurate-Timing`))}var ns=console;function rs(...e){ns.log(...e)}function is(...e){ns.warn(...e)}function as(e){return new To(e)}function os(e,t,n){return new Lo(e,t,n)}var ss=typeof self==`object`?self:null,cs=ss&&(ss.hasOwnProperty(`AudioContext`)||ss.hasOwnProperty(`webkitAudioContext`));function ls(e,t,n){return z(R(Io),`AudioWorkletNode only works in a secure context (https or localhost)`),new(e instanceof ss?.BaseAudioContext?ss?.AudioWorkletNode:Io)(e,t,n)}function us(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function ds(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}var fs=class{constructor(e,t,n,r){this._callback=e,this._type=t,this._minimumUpdateInterval=Math.max(128/(r||44100),.001),this.updateInterval=n,this._createClock()}_createWorker(){let e=new Blob([` + // the initial timeout time + let timeoutTime = ${(this._updateInterval*1e3).toFixed(1)}; + // onmessage callback + self.onmessage = function(msg){ + timeoutTime = parseInt(msg.data); + }; + // the tick function which posts a message + // and schedules a new tick + function tick(){ + setTimeout(tick, timeoutTime); + self.postMessage('tick'); + } + // call tick initially + tick(); + `],{type:`text/javascript`}),t=URL.createObjectURL(e),n=new Worker(t);n.onmessage=this._callback.bind(this),this._worker=n}_createTimeout(){this._timeout=setTimeout(()=>{this._createTimeout(),this._callback()},this._updateInterval*1e3)}_createClock(){if(this._type===`worker`)try{this._createWorker()}catch{this._type=`timeout`,this._createClock()}else this._type===`timeout`&&this._createTimeout()}_disposeClock(){this._timeout&&clearTimeout(this._timeout),this._worker&&(this._worker.terminate(),this._worker.onmessage=null)}get updateInterval(){return this._updateInterval}set updateInterval(e){var t;this._updateInterval=Math.max(e,this._minimumUpdateInterval),this._type===`worker`&&((t=this._worker)==null||t.postMessage(this._updateInterval*1e3))}get type(){return this._type}set type(e){this._disposeClock(),this._type=e,this._createClock()}dispose(){this._disposeClock()}};function ps(e){return Bo(e)}function ms(e){return zo(e)}function hs(e){return Vo(e)}function gs(e){return Ro(e)}function _s(e){return e instanceof Aa}function vs(e,t){return e===`value`||ps(t)||ms(t)||_s(t)}function ys(e,...t){if(!t.length)return e;let n=t.shift();if(Go(e)&&Go(n))for(let t in n)vs(t,n[t])?e[t]=n[t]:Go(n[t])?(e[t]||Object.assign(e,{[t]:{}}),ys(e[t],n[t])):Object.assign(e,{[t]:n[t]});return ys(e,...t)}function bs(e,t){return e.length===t.length&&e.every((e,n)=>t[n]===e)}function B(e,t,n=[],r){let i={},a=Array.from(t);if(Go(a[0])&&r&&!Reflect.has(a[0],r)&&(Object.keys(a[0]).some(t=>Reflect.has(e,t))||(ys(i,{[r]:a[0]}),n.splice(n.indexOf(r),1),a.shift())),a.length===1&&Go(a[0]))ys(i,a[0]);else for(let e=0;e{Reflect.has(e,t)&&delete e[t]}),e}var ws=class{constructor(){this.debug=!1,this._wasDisposed=!1}static getDefaults(){return{}}log(...e){(this.debug||ss&&this.toString()===ss.TONE_DEBUG_CLASS)&&rs(this,...e)}dispose(){return this._wasDisposed=!0,this}get disposed(){return this._wasDisposed}toString(){return this.name}};ws.version=u;var Ts=1e-6;function Es(e,t){return e>t+Ts}function Ds(e,t){return Es(e,t)||ks(e,t)}function Os(e,t){return e+Tsthis.memory){let e=this.length-this.memory;this._timeline.splice(0,e)}return this}remove(e){let t=this._timeline.indexOf(e);return t!==-1&&this._timeline.splice(t,1),this}get(e,t=`time`){let n=this._search(e,t);return n===-1?null:this._timeline[n]}peek(){return this._timeline[0]}shift(){return this._timeline.shift()}getAfter(e,t=`time`){let n=this._search(e,t);return n+10&&this._timeline[t-1].time=0?this._timeline[n-1]:null}cancel(e){if(this._timeline.length>1){let t=this._search(e);if(t>=0)if(ks(this._timeline[t].time,e)){for(let n=t;n>=0&&ks(this._timeline[n].time,e);n--)t=n;this._timeline=this._timeline.slice(0,t)}else this._timeline=this._timeline.slice(0,t+1);else this._timeline=[]}else this._timeline.length===1&&Ds(this._timeline[0].time,e)&&(this._timeline=[]);return this}cancelBefore(e){let t=this._search(e);return t>=0&&(this._timeline=this._timeline.slice(t+1)),this}previousEvent(e){let t=this._timeline.indexOf(e);return t>0?this._timeline[t-1]:null}_search(e,t=`time`){if(this._timeline.length===0)return-1;let n=0,r=this._timeline.length,i=r;if(r>0&&this._timeline[r-1][t]<=e)return r-1;for(;n=0&&this._timeline[n].time>=e;)n--;return this._iterate(t,n+1),this}forEachAtTime(e,t){let n=this._search(e);if(n!==-1&&ks(this._timeline[n].time,e)){let r=n;for(let t=n;t>=0&&ks(this._timeline[t].time,e);t--)r=t;this._iterate(e=>{t(e)},r,n)}return this}dispose(){return super.dispose(),this._timeline=[],this}},Ms=[];function Ns(e){Ms.push(e)}function Ps(e){Ms.forEach(t=>t(e))}var Fs=[];function Is(e){Fs.push(e)}function Ls(e){Fs.forEach(t=>t(e))}var Rs=class e extends ws{constructor(){super(...arguments),this.name=`Emitter`}on(e,t){return e.split(/\W+/).forEach(e=>{Ho(this._events)&&(this._events={}),this._events.hasOwnProperty(e)||(this._events[e]=[]),this._events[e].push(t)}),this}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}off(e,t){return e.split(/\W+/).forEach(e=>{if(Ho(this._events)&&(this._events={}),this._events.hasOwnProperty(e))if(Ho(t))this._events[e]=[];else{let n=this._events[e];for(let e=n.length-1;e>=0;e--)n[e]===t&&n.splice(e,1)}}),this}emit(e,...t){if(this._events&&this._events.hasOwnProperty(e)){let n=this._events[e].slice(0);for(let e=0,r=n.length;e{let r=Object.getOwnPropertyDescriptor(e.prototype,n);Object.defineProperty(t.prototype,n,r)})}dispose(){return super.dispose(),this._events=void 0,this}},zs=class extends Rs{constructor(){super(...arguments),this.isOffline=!1}toJSON(){return{}}},Bs=class e extends zs{constructor(){super(),this.name=`Context`,this._constants=new Map,this._timeouts=new js,this._timeoutIds=0,this._initialized=!1,this._closeStarted=!1,this.isOffline=!1,this._workletPromise=null;let t=B(e.getDefaults(),arguments,[`context`]);t.context?(this._context=t.context,this._latencyHint=arguments[0]?.latencyHint||``):(this._context=as({latencyHint:t.latencyHint}),this._latencyHint=t.latencyHint),this._ticker=new fs(this.emit.bind(this,`tick`),t.clockSource,t.updateInterval,this._context.sampleRate),this.on(`tick`,this._timeoutLoop.bind(this)),this._context.onstatechange=()=>{this.emit(`statechange`,this.state)},this[arguments[0]?.hasOwnProperty(`updateInterval`)?`_lookAhead`:`lookAhead`]=t.lookAhead}static getDefaults(){return{clockSource:`worker`,latencyHint:`interactive`,lookAhead:.1,updateInterval:.05}}initialize(){return this._initialized||=(Ps(this),!0),this}createAnalyser(){return this._context.createAnalyser()}createOscillator(){return this._context.createOscillator()}createBufferSource(){return this._context.createBufferSource()}createBiquadFilter(){return this._context.createBiquadFilter()}createBuffer(e,t,n){return this._context.createBuffer(e,t,n)}createChannelMerger(e){return this._context.createChannelMerger(e)}createChannelSplitter(e){return this._context.createChannelSplitter(e)}createConstantSource(){return this._context.createConstantSource()}createConvolver(){return this._context.createConvolver()}createDelay(e){return this._context.createDelay(e)}createDynamicsCompressor(){return this._context.createDynamicsCompressor()}createGain(){return this._context.createGain()}createIIRFilter(e,t){return this._context.createIIRFilter(e,t)}createPanner(){return this._context.createPanner()}createPeriodicWave(e,t,n){return this._context.createPeriodicWave(e,t,n)}createStereoPanner(){return this._context.createStereoPanner()}createWaveShaper(){return this._context.createWaveShaper()}createMediaStreamSource(e){return z(gs(this._context),`Not available if OfflineAudioContext`),this._context.createMediaStreamSource(e)}createMediaElementSource(e){return z(gs(this._context),`Not available if OfflineAudioContext`),this._context.createMediaElementSource(e)}createMediaStreamDestination(){return z(gs(this._context),`Not available if OfflineAudioContext`),this._context.createMediaStreamDestination()}decodeAudioData(e){return this._context.decodeAudioData(e)}get currentTime(){return this._context.currentTime}get state(){return this._context.state}get sampleRate(){return this._context.sampleRate}get listener(){return this.initialize(),this._listener}set listener(e){z(!this._initialized,`The listener cannot be set after initialization.`),this._listener=e}get transport(){return this.initialize(),this._transport}set transport(e){z(!this._initialized,`The transport cannot be set after initialization.`),this._transport=e}get draw(){return this.initialize(),this._draw}set draw(e){z(!this._initialized,`Draw cannot be set after initialization.`),this._draw=e}get destination(){return this.initialize(),this._destination}set destination(e){z(!this._initialized,`The destination cannot be set after initialization.`),this._destination=e}createAudioWorkletNode(e,t){return ls(this.rawContext,e,t)}addAudioWorkletModule(e){return ds(this,void 0,void 0,function*(){z(R(this.rawContext.audioWorklet),`AudioWorkletNode is only available in a secure context (https or localhost)`),this._workletPromise||=this.rawContext.audioWorklet.addModule(e),yield this._workletPromise})}workletsAreReady(){return ds(this,void 0,void 0,function*(){(yield this._workletPromise)?this._workletPromise:Promise.resolve()})}get updateInterval(){return this._ticker.updateInterval}set updateInterval(e){this._ticker.updateInterval=e}get clockSource(){return this._ticker.type}set clockSource(e){this._ticker.type=e}get lookAhead(){return this._lookAhead}set lookAhead(e){this._lookAhead=e,this.updateInterval=e?e/2:.01}get latencyHint(){return this._latencyHint}get rawContext(){return this._context}now(){return this._context.currentTime+this._lookAhead}immediate(){return this._context.currentTime}resume(){return gs(this._context)?this._context.resume():Promise.resolve()}close(){return ds(this,void 0,void 0,function*(){gs(this._context)&&this.state!==`closed`&&!this._closeStarted&&(this._closeStarted=!0,yield this._context.close()),this._initialized&&Ls(this)})}getConstant(e){if(this._constants.has(e))return this._constants.get(e);{let t=this._context.createBuffer(1,128,this._context.sampleRate),n=t.getChannelData(0);for(let t=0;tthis._constants[e].disconnect()),this.close(),this}_timeoutLoop(){let e=this.now();this._timeouts.forEachBefore(e,e=>{e.callback(),this._timeouts.remove(e)})}setTimeout(e,t){this._timeoutIds++;let n=this.now();return this._timeouts.add({callback:e,id:this._timeoutIds,time:n+t}),this._timeoutIds}clearTimeout(e){return this._timeouts.forEach(t=>{t.id===e&&this._timeouts.remove(t)}),this}clearInterval(e){return this.clearTimeout(e)}setInterval(e,t){let n=++this._timeoutIds,r=()=>{let i=this.now();this._timeouts.add({callback:()=>{e(),r()},id:n,time:i+t})};return r(),n}},Vs=class extends zs{constructor(){super(...arguments),this.lookAhead=0,this.latencyHint=0,this.isOffline=!1}createAnalyser(){return{}}createOscillator(){return{}}createBufferSource(){return{}}createBiquadFilter(){return{}}createBuffer(e,t,n){return{}}createChannelMerger(e){return{}}createChannelSplitter(e){return{}}createConstantSource(){return{}}createConvolver(){return{}}createDelay(e){return{}}createDynamicsCompressor(){return{}}createGain(){return{}}createIIRFilter(e,t){return{}}createPanner(){return{}}createPeriodicWave(e,t,n){return{}}createStereoPanner(){return{}}createWaveShaper(){return{}}createMediaStreamSource(e){return{}}createMediaElementSource(e){return{}}createMediaStreamDestination(){return{}}decodeAudioData(e){return Promise.resolve({})}createAudioWorkletNode(e,t){return{}}get rawContext(){return{}}addAudioWorkletModule(e){return ds(this,void 0,void 0,function*(){return Promise.resolve()})}resume(){return Promise.resolve()}setTimeout(e,t){return 0}clearTimeout(e){return this}setInterval(e,t){return 0}clearInterval(e){return this}getConstant(e){return{}}get currentTime(){return 0}get state(){return{}}get sampleRate(){return 0}get listener(){return{}}get transport(){return{}}get draw(){return{}}set draw(e){}get destination(){return{}}set destination(e){}now(){return 0}immediate(){return 0}};function Hs(e,t){qo(t)?t.forEach(t=>Hs(e,t)):Object.defineProperty(e,t,{enumerable:!0,writable:!1})}function Us(e,t){qo(t)?t.forEach(t=>Us(e,t)):Object.defineProperty(e,t,{writable:!0})}var Ws=()=>{},Gs=class e extends ws{constructor(){super(),this.name=`ToneAudioBuffer`,this.onload=Ws;let t=B(e.getDefaults(),arguments,[`url`,`onload`,`onerror`]);this.reverse=t.reverse,this.onload=t.onload,Jo(t.url)?this.load(t.url).catch(t.onerror):t.url&&this.set(t.url)}static getDefaults(){return{onerror:Ws,onload:Ws,reverse:!1}}get sampleRate(){return this._buffer?this._buffer.sampleRate:Ys().sampleRate}set(t){return t instanceof e?t.loaded?this._buffer=t.get():t.onload=()=>{this.set(t),this.onload(this)}:this._buffer=t,this._reversed&&this._reverse(),this}get(){return this._buffer}load(t){return ds(this,void 0,void 0,function*(){let n=e.load(t).then(e=>{this.set(e),this.onload(this)});e.downloads.push(n);try{yield n}finally{let t=e.downloads.indexOf(n);e.downloads.splice(t,1)}return this})}dispose(){return super.dispose(),this._buffer=void 0,this}fromArray(e){let t=qo(e)&&e[0].length>0,n=t?e.length:1,r=t?e[0].length:e.length,i=Ys(),a=i.createBuffer(n,r,i.sampleRate),o=!t&&n===1?[e]:e;for(let e=0;ee/t),this.fromArray(e)}return this}toArray(e){if(Wo(e))return this.getChannelData(e);if(this.numberOfChannels===1)return this.toArray(0);{let e=[];for(let t=0;t0}get duration(){return this._buffer?this._buffer.duration:0}get length(){return this._buffer?this._buffer.length:0}get numberOfChannels(){return this._buffer?this._buffer.numberOfChannels:0}get reverse(){return this._reversed}set reverse(e){this._reversed!==e&&(this._reversed=e,this._reverse())}static fromArray(t){return new e().fromArray(t)}static fromUrl(t){return ds(this,void 0,void 0,function*(){return yield new e().load(t)})}static load(t){return ds(this,void 0,void 0,function*(){let n=e.baseUrl===``||e.baseUrl.endsWith(`/`)?e.baseUrl:e.baseUrl+`/`,r=yield fetch(n+t);if(!r.ok)throw Error(`could not load url: ${t}`);let i=yield r.arrayBuffer();return yield Ys().decodeAudioData(i)})}static supportsType(e){let t=e.split(`.`),n=t[t.length-1];return document.createElement(`audio`).canPlayType(`audio/`+n)!==``}static loaded(){return ds(this,void 0,void 0,function*(){for(yield Promise.resolve();e.downloads.length;)yield e.downloads[0]})}};Gs.baseUrl=``,Gs.downloads=[];var Ks=class extends Bs{constructor(){super({clockSource:`offline`,context:hs(arguments[0])?arguments[0]:os(arguments[0],arguments[1]*arguments[2],arguments[2]),lookAhead:0,updateInterval:hs(arguments[0])?128/arguments[0].sampleRate:128/arguments[2]}),this.name=`OfflineContext`,this._currentTime=0,this.isOffline=!0,this._duration=hs(arguments[0])?arguments[0].length/arguments[0].sampleRate:arguments[1]}now(){return this._currentTime}get currentTime(){return this._currentTime}_renderClock(e){return ds(this,void 0,void 0,function*(){let t=0;for(;this._duration-this._currentTime>=0;){this.emit(`tick`),this._currentTime+=128/this.sampleRate,t++;let n=Math.floor(this.sampleRate/128);e&&t%n===0&&(yield new Promise(e=>setTimeout(e,1)))}})}render(){return ds(this,arguments,void 0,function*(e=!0){return yield this.workletsAreReady(),yield this._renderClock(e),new Gs(yield this._context.startRendering())})}close(){return Promise.resolve()}},qs=new Vs,Js=qs;function Ys(){return Js===qs&&cs&&Xs(new Bs),Js}function Xs(e,t=!1){t&&Js.dispose(),Js=gs(e)?new Bs(e):hs(e)?new Ks(e):e}function Zs(){return Js.resume()}if(ss&&!ss.TONE_SILENCE_LOGGING){let e=` * Tone.js v${u} * `;console.log(`%c${e}`,`background: #000; color: #fff`)}function Qs(e){return 10**(e/20)}function $s(e){return Math.log(e)/Math.LN10*20}function ec(e){return 2**(e/12)}var tc=440;function nc(){return tc}function rc(e){tc=e}function ic(e){return Math.round(ac(e))}function ac(e){return 69+12*Math.log2(e/tc)}function oc(e){return tc*2**((e-69)/12)}var sc=class e extends ws{constructor(e,t,n){super(),this.defaultUnits=`s`,this._val=t,this._units=n,this.context=e,this._expressions=this._getExpressions()}_getExpressions(){return{hz:{method:e=>this._frequencyToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)hz$/i},i:{method:e=>this._ticksToUnits(parseInt(e,10)),regexp:/^(\d+)i$/i},m:{method:e=>this._beatsToUnits(parseInt(e,10)*this._getTimeSignature()),regexp:/^(\d+)m$/i},n:{method:(e,t)=>{let n=parseInt(e,10),r=t===`.`?1.5:1;return n===1?this._beatsToUnits(this._getTimeSignature())*r:this._beatsToUnits(4/n)*r},regexp:/^(\d+)n(\.?)$/i},number:{method:e=>this._expressions[this.defaultUnits].method.call(this,e),regexp:/^(\d+(?:\.\d+)?)$/},s:{method:e=>this._secondsToUnits(parseFloat(e)),regexp:/^(\d+(?:\.\d+)?)s$/},samples:{method:e=>parseInt(e,10)/this.context.sampleRate,regexp:/^(\d+)samples$/},t:{method:e=>{let t=parseInt(e,10);return this._beatsToUnits(8/(Math.floor(t)*3))},regexp:/^(\d+)t$/i},tr:{method:(e,t,n)=>{let r=0;return e&&e!==`0`&&(r+=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),t&&t!==`0`&&(r+=this._beatsToUnits(parseFloat(t))),n&&n!==`0`&&(r+=this._beatsToUnits(parseFloat(n)/4)),r},regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?$/}}}valueOf(){if(this._val instanceof e&&this.fromType(this._val),Ho(this._val))return this._noArg();if(Jo(this._val)&&Ho(this._units)){for(let e in this._expressions)if(this._expressions[e].regexp.test(this._val.trim())){this._units=e;break}}else if(Go(this._val)){let e=0;for(let t in this._val)if(R(this._val[t])){let n=this._val[t],r=new this.constructor(this.context,t).valueOf()*n;e+=r}return e}if(R(this._units)){let e=this._expressions[this._units],t=this._val.toString().trim().match(e.regexp);return t?e.method.apply(this,t.slice(1)):e.method.call(this,this._val)}else if(Jo(this._val))return parseFloat(this._val);else return this._val}_frequencyToUnits(e){return 1/e}_beatsToUnits(e){return 60/this._getBpm()*e}_secondsToUnits(e){return e}_ticksToUnits(e){return e*this._beatsToUnits(1)/this._getPPQ()}_noArg(){return this._now()}_getBpm(){return this.context.transport.bpm.value}_getTimeSignature(){return this.context.transport.timeSignature}_getPPQ(){return this.context.transport.PPQ}fromType(e){switch(this._units=void 0,this.defaultUnits){case`s`:this._val=e.toSeconds();break;case`i`:this._val=e.toTicks();break;case`hz`:this._val=e.toFrequency();break;case`midi`:this._val=e.toMidi();break}return this}toFrequency(){return 1/this.toSeconds()}toSamples(){return this.toSeconds()*this.context.sampleRate}toMilliseconds(){return this.toSeconds()*1e3}},cc=class e extends sc{constructor(){super(...arguments),this.name=`TimeClass`}_getExpressions(){return Object.assign(super._getExpressions(),{now:{method:e=>this._now()+new this.constructor(this.context,e).valueOf(),regexp:/^\+(.+)/},quantize:{method:t=>{let n=new e(this.context,t).valueOf();return this._secondsToUnits(this.context.transport.nextSubdivision(n))},regexp:/^@(.+)/}})}quantize(e,t=1){let n=new this.constructor(this.context,e).valueOf(),r=this.valueOf();return r+(Math.round(r/n)*n-r)*t}toNotation(){let t=this.toSeconds(),n=[`1m`];for(let e=1;e<9;e++){let t=2**e;n.push(t+`n.`),n.push(t+`n`),n.push(t+`t`)}n.push(`0`);let r=n[0],i=new e(this.context,n[0]).toSeconds();return n.forEach(n=>{let a=new e(this.context,n).toSeconds();Math.abs(a-t)3&&(r=parseFloat(parseFloat(i).toFixed(3))),[n,t,r].join(`:`)}toTicks(){let e=this._beatsToUnits(1);return this.valueOf()/e*this._getPPQ()}toSeconds(){return this.valueOf()}toMidi(){return ic(this.toFrequency())}_now(){return this.context.now()}},lc=class e extends cc{constructor(){super(...arguments),this.name=`Frequency`,this.defaultUnits=`hz`}static get A4(){return nc()}static set A4(e){rc(e)}_getExpressions(){return Object.assign({},super._getExpressions(),{midi:{regexp:/^(\d+(?:\.\d+)?midi)/,method(t){return this.defaultUnits===`midi`?t:e.mtof(t)}},note:{regexp:/^([a-g]{1}(?:b|#|##|x|bb|###|#x|x#|bbb)?)(-?[0-9]+)/i,method(t,n){let r=uc[t.toLowerCase()]+(parseInt(n,10)+1)*12;return this.defaultUnits===`midi`?r:e.mtof(r)}},tr:{regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method(e,t,n){let r=1;return e&&e!==`0`&&(r*=this._beatsToUnits(this._getTimeSignature()*parseFloat(e))),t&&t!==`0`&&(r*=this._beatsToUnits(parseFloat(t))),n&&n!==`0`&&(r*=this._beatsToUnits(parseFloat(n)/4)),r}}})}transpose(t){return new e(this.context,this.valueOf()*ec(t))}harmonize(e){return e.map(e=>this.transpose(e))}toMidi(){return ic(this.valueOf())}toNote(){let t=this.toFrequency(),n=Math.log2(t/e.A4),r=Math.round(12*n)+57,i=Math.floor(r/12);return i<0&&(r+=-12*i),dc[r%12]+i.toString()}toSeconds(){return 1/super.toSeconds()}toTicks(){let e=this._beatsToUnits(1),t=this.valueOf()/e;return Math.floor(t*this._getPPQ())}_noArg(){return 0}_frequencyToUnits(e){return e}_ticksToUnits(e){return 1/(e*60/(this._getBpm()*this._getPPQ()))}_beatsToUnits(e){return 1/super._beatsToUnits(e)}_secondsToUnits(e){return 1/e}static mtof(e){return oc(e)}static ftom(e){return ic(e)}},uc={cbbb:-3,cbb:-2,cb:-1,c:0,"c#":1,cx:2,"c##":2,"c###":3,"cx#":3,"c#x":3,dbbb:-1,dbb:0,db:1,d:2,"d#":3,dx:4,"d##":4,"d###":5,"dx#":5,"d#x":5,ebbb:1,ebb:2,eb:3,e:4,"e#":5,ex:6,"e##":6,"e###":7,"ex#":7,"e#x":7,fbbb:2,fbb:3,fb:4,f:5,"f#":6,fx:7,"f##":7,"f###":8,"fx#":8,"f#x":8,gbbb:4,gbb:5,gb:6,g:7,"g#":8,gx:9,"g##":9,"g###":10,"gx#":10,"g#x":10,abbb:6,abb:7,ab:8,a:9,"a#":10,ax:11,"a##":11,"a###":12,"ax#":12,"a#x":12,bbbb:8,bbb:9,bb:10,b:11,"b#":12,bx:13,"b##":13,"b###":14,"bx#":14,"b#x":14},dc=[`C`,`C#`,`D`,`D#`,`E`,`F`,`F#`,`G`,`G#`,`A`,`A#`,`B`];function fc(e,t){return new lc(Ys(),e,t)}var pc=class extends cc{constructor(){super(...arguments),this.name=`TransportTime`}_now(){return this.context.transport.seconds}},mc=class e extends ws{constructor(){super();let t=B(e.getDefaults(),arguments,[`context`]);this.defaultContext?this.context=this.defaultContext:this.context=t.context}static getDefaults(){return{context:Ys()}}now(){return this.context.currentTime+this.context.lookAhead}immediate(){return this.context.currentTime}get sampleTime(){return 1/this.context.sampleRate}get blockTime(){return 128/this.context.sampleRate}toSeconds(e){return ts(e),new cc(this.context,e).toSeconds()}toFrequency(e){return new lc(this.context,e).toFrequency()}toTicks(e){return new pc(this.context,e).toTicks()}_getPartialProperties(e){let t=this.get();return Object.keys(t).forEach(n=>{Ho(e[n])&&delete t[n]}),t}get(){let t=xs(this);return Object.keys(t).forEach(n=>{if(Reflect.has(this,n)){let r=this[n];R(r)&&R(r.value)&&R(r.setValueAtTime)?t[n]=r.value:r instanceof e?t[n]=r._getPartialProperties(t[n]):qo(r)||Wo(r)||Jo(r)||Ko(r)?t[n]=r:delete t[n]}}),t}set(t){return Object.keys(t).forEach(n=>{Reflect.has(this,n)&&R(this[n])&&(this[n]&&R(this[n].value)&&R(this[n].setValueAtTime)?this[n].value!==t[n]&&(this[n].value=t[n]):this[n]instanceof e?this[n].set(t[n]):this[n]=t[n])}),this}},hc=class extends js{constructor(e=`stopped`){super(),this.name=`StateTimeline`,this._initial=e,this.setStateAtTime(this._initial,0)}getValueAtTime(e){let t=this.get(e);return t===null?this._initial:t.state}setStateAtTime(e,t,n){return Xo(t,0),this.add(Object.assign({},n,{state:e,time:t})),this}getLastState(e,t){let n=this._search(t);for(let t=n;t>=0;t--){let n=this._timeline[t];if(n.state===e)return n}}getNextState(e,t){let n=this._search(t);if(n!==-1)for(let t=n;t0,`timeConstant must be a number greater than 0`);let i=this.toSeconds(t);return this._assertRange(r),z(isFinite(r)&&isFinite(i),`Invalid argument(s) to setTargetAtTime: ${JSON.stringify(e)}, ${JSON.stringify(t)}`),this._events.add({constant:n,time:i,type:`setTargetAtTime`,value:r}),this.log(this.units,`setTargetAtTime`,e,i,n),this._param.setTargetAtTime(r,i,n),this}setValueCurveAtTime(e,t,n,r=1){n=this.toSeconds(n),t=this.toSeconds(t);let i=this._fromType(e[0])*r;this.setValueAtTime(this._toType(i),t);let a=n/(e.length-1);for(let n=1;n{t.type===`cancelScheduledValues`?e.cancelScheduledValues(t.time):t.type===`setTargetAtTime`?e.setTargetAtTime(t.value,t.time,t.constant):e[t.type](t.value,t.time)}),this}setParam(e){z(this._swappable,`The Param must be assigned as 'swappable' in the constructor`);let t=this.input;return t.disconnect(this._param),this.apply(e),this._param=e,t.connect(this._param),this}dispose(){return super.dispose(),this._events.dispose(),this}get defaultValue(){return this._toType(this._param.defaultValue)}_exponentialApproach(e,t,n,r,i){return n+(t-n)*Math.exp(-(i-e)/r)}_linearInterpolate(e,t,n,r,i){return t+(r-t)*((i-e)/(n-e))}_exponentialInterpolate(e,t,n,r,i){return t*(r/t)**+((i-e)/(n-e))}},V=class e extends mc{constructor(){super(...arguments),this._internalChannels=[]}get numberOfInputs(){return R(this.input)?ps(this.input)||this.input instanceof gc?1:this.input.numberOfInputs:0}get numberOfOutputs(){return R(this.output)?this.output.numberOfOutputs:0}_isAudioNode(t){return R(t)&&(t instanceof e||ms(t))}_getInternalNodes(){let e=this._internalChannels.slice(0);return this._isAudioNode(this.input)&&e.push(this.input),this._isAudioNode(this.output)&&this.input!==this.output&&e.push(this.output),e}_setChannelProperties(e){this._getInternalNodes().forEach(t=>{t.channelCount=e.channelCount,t.channelCountMode=e.channelCountMode,t.channelInterpretation=e.channelInterpretation})}_getChannelProperties(){let e=this._getInternalNodes();z(e.length>0,`ToneAudioNode does not have any internal nodes`);let t=e[0];return{channelCount:t.channelCount,channelCountMode:t.channelCountMode,channelInterpretation:t.channelInterpretation}}get channelCount(){return this._getChannelProperties().channelCount}set channelCount(e){let t=this._getChannelProperties();this._setChannelProperties(Object.assign(t,{channelCount:e}))}get channelCountMode(){return this._getChannelProperties().channelCountMode}set channelCountMode(e){let t=this._getChannelProperties();this._setChannelProperties(Object.assign(t,{channelCountMode:e}))}get channelInterpretation(){return this._getChannelProperties().channelInterpretation}set channelInterpretation(e){let t=this._getChannelProperties();this._setChannelProperties(Object.assign(t,{channelInterpretation:e}))}connect(e,t=0,n=0){return vc(this,e,t,n),this}toDestination(){return this.connect(this.context.destination),this}toMaster(){return is(`toMaster() has been renamed toDestination()`),this.toDestination()}disconnect(e,t=0,n=0){return yc(this,e,t,n),this}chain(...e){return _c(this,...e),this}fan(...e){return e.forEach(e=>this.connect(e)),this}dispose(){return super.dispose(),R(this.input)&&(this.input instanceof e?this.input.dispose():ms(this.input)&&this.input.disconnect()),R(this.output)&&(this.output instanceof e?this.output.dispose():ms(this.output)&&this.output.disconnect()),this._internalChannels=[],this}};function _c(...e){let t=e.shift();e.reduce((e,t)=>(e instanceof V?e.connect(t):ms(e)&&vc(e,t),t),t)}function vc(e,t,n=0,r=0){for(z(R(e),`Cannot connect from undefined node`),z(R(t),`Cannot connect to undefined node`),(t instanceof V||ms(t))&&z(t.numberOfInputs>0,`Cannot connect to node with no inputs`),z(e.numberOfOutputs>0,`Cannot connect from node with no outputs`);t instanceof V||t instanceof gc;)R(t.input)&&(t=t.input);for(;e instanceof V;)R(e.output)&&(e=e.output);ps(t)?e.connect(t,n):e.connect(t,n,r)}function yc(e,t,n=0,r=0){if(R(t))for(;t instanceof V;)t=t.input;for(;!ms(e);)R(e.output)&&(e=e.output);ps(t)?e.disconnect(t,n):ms(t)?e.disconnect(t,n,r):e.disconnect()}var bc=class e extends V{constructor(){let t=B(e.getDefaults(),arguments,[`gain`,`units`]);super(t),this.name=`Gain`,this._gainNode=this.context.createGain(),this.input=this._gainNode,this.output=this._gainNode,this.gain=new gc({context:this.context,convert:t.convert,param:this._gainNode.gain,units:t.units,value:t.gain,minValue:t.minValue,maxValue:t.maxValue}),Hs(this,`gain`)}static getDefaults(){return Object.assign(V.getDefaults(),{convert:!0,gain:1,units:`gain`})}dispose(){return super.dispose(),this._gainNode.disconnect(),this.gain.dispose(),this}},xc=class extends V{constructor(e){super(e),this.onended=Ws,this._startTime=-1,this._stopTime=-1,this._timeout=-1,this.output=new bc({context:this.context,gain:0}),this._gainNode=this.output,this.getStateAtTime=function(e){let t=this.toSeconds(e);return this._startTime!==-1&&t>=this._startTime&&(this._stopTime===-1||t<=this._stopTime)?`started`:`stopped`},this._fadeIn=e.fadeIn,this._fadeOut=e.fadeOut,this._curve=e.curve,this.onended=e.onended}static getDefaults(){return Object.assign(V.getDefaults(),{curve:`linear`,fadeIn:0,fadeOut:0,onended:Ws})}_startGain(e,t=1){z(this._startTime===-1,`Source cannot be started more than once`);let n=this.toSeconds(this._fadeIn);return this._startTime=e+n,this._startTime=Math.max(this._startTime,this.context.currentTime),n>0?(this._gainNode.gain.setValueAtTime(0,e),this._curve===`linear`?this._gainNode.gain.linearRampToValueAtTime(t,e+n):this._gainNode.gain.exponentialApproachValueAtTime(t,e,n)):this._gainNode.gain.setValueAtTime(t,e),this}stop(e){return this.log(`stop`,e),this._stopGain(this.toSeconds(e)),this}_stopGain(e){z(this._startTime!==-1,`'start' must be called before 'stop'`),this.cancelStop();let t=this.toSeconds(this._fadeOut);return this._stopTime=this.toSeconds(e)+t,this._stopTime=Math.max(this._stopTime,this.now()),t>0?this._curve===`linear`?this._gainNode.gain.linearRampTo(0,t,e):this._gainNode.gain.targetRampTo(0,t,e):(this._gainNode.gain.cancelAndHoldAtTime(e),this._gainNode.gain.setValueAtTime(0,e)),this.context.clearTimeout(this._timeout),this._timeout=this.context.setTimeout(()=>{let e=this._curve===`exponential`?t*2:0;this._stopSource(this.now()+e),this._onended()},this._stopTime-this.context.currentTime),this}_onended(){if(this.onended!==Ws&&(this.onended(this),this.onended=Ws,!this.context.isOffline)){let e=()=>this.dispose();typeof requestIdleCallback<`u`?requestIdleCallback(e):setTimeout(e,10)}}get state(){return this.getStateAtTime(this.now())}cancelStop(){return this.log(`cancelStop`),z(this._startTime!==-1,`Source is not started`),this._gainNode.gain.cancelScheduledValues(this._startTime+this.sampleTime),this.context.clearTimeout(this._timeout),this._stopTime=-1,this}dispose(){return super.dispose(),this._gainNode.dispose(),this.onended=Ws,this}},Sc=class e extends xc{constructor(){let t=B(e.getDefaults(),arguments,[`offset`]);super(t),this.name=`ToneConstantSource`,this._source=this.context.createConstantSource(),vc(this._source,this._gainNode),this.offset=new gc({context:this.context,convert:t.convert,param:this._source.offset,units:t.units,value:t.offset,minValue:t.minValue,maxValue:t.maxValue})}static getDefaults(){return Object.assign(xc.getDefaults(),{convert:!0,offset:1,units:`number`})}start(e){let t=this.toSeconds(e);return this.log(`start`,t),this._startGain(t),this._source.start(t),this}_stopSource(e){this._source.stop(e)}dispose(){return super.dispose(),this.state===`started`&&this.stop(),this._source.disconnect(),this.offset.dispose(),this}},Cc=class e extends V{constructor(){let t=B(e.getDefaults(),arguments,[`value`,`units`]);super(t),this.name=`Signal`,this.override=!0,this.output=this._constantSource=new Sc({context:this.context,convert:t.convert,offset:t.value,units:t.units,minValue:t.minValue,maxValue:t.maxValue}),this._constantSource.start(0),this.input=this._param=this._constantSource.offset}static getDefaults(){return Object.assign(V.getDefaults(),{convert:!0,units:`number`,value:0})}connect(e,t=0,n=0){return wc(this,e,t,n),this}dispose(){return super.dispose(),this._param.dispose(),this._constantSource.dispose(),this}setValueAtTime(e,t){return this._param.setValueAtTime(e,t),this}getValueAtTime(e){return this._param.getValueAtTime(e)}setRampPoint(e){return this._param.setRampPoint(e),this}linearRampToValueAtTime(e,t){return this._param.linearRampToValueAtTime(e,t),this}exponentialRampToValueAtTime(e,t){return this._param.exponentialRampToValueAtTime(e,t),this}exponentialRampTo(e,t,n){return this._param.exponentialRampTo(e,t,n),this}linearRampTo(e,t,n){return this._param.linearRampTo(e,t,n),this}targetRampTo(e,t,n){return this._param.targetRampTo(e,t,n),this}exponentialApproachValueAtTime(e,t,n){return this._param.exponentialApproachValueAtTime(e,t,n),this}setTargetAtTime(e,t,n){return this._param.setTargetAtTime(e,t,n),this}setValueCurveAtTime(e,t,n,r){return this._param.setValueCurveAtTime(e,t,n,r),this}cancelScheduledValues(e){return this._param.cancelScheduledValues(e),this}cancelAndHoldAtTime(e){return this._param.cancelAndHoldAtTime(e),this}rampTo(e,t,n){return this._param.rampTo(e,t,n),this}get value(){return this._param.value}set value(e){this._param.value=e}get convert(){return this._param.convert}set convert(e){this._param.convert=e}get units(){return this._param.units}get overridden(){return this._param.overridden}set overridden(e){this._param.overridden=e}get maxValue(){return this._param.maxValue}get minValue(){return this._param.minValue}apply(e){return this._param.apply(e),this}};function wc(e,t,n,r){(t instanceof gc||ps(t)||t instanceof Cc&&t.override)&&(t.cancelScheduledValues(0),t.setValueAtTime(0,0),t instanceof Cc&&(t.overridden=!0)),vc(e,t,n,r)}var Tc=class e extends gc{constructor(){let t=B(e.getDefaults(),arguments,[`value`]);super(t),this.name=`TickParam`,this._events=new js(1/0),this._multiplier=1,this._multiplier=t.multiplier,this._events.cancel(0),this._events.add({ticks:0,time:0,type:`setValueAtTime`,value:this._fromType(t.value)}),this.setValueAtTime(t.value,0)}static getDefaults(){return Object.assign(gc.getDefaults(),{multiplier:1,units:`hertz`,value:1})}setTargetAtTime(e,t,n){t=this.toSeconds(t),this.setRampPoint(t);let r=this._fromType(e),i=this._events.get(t),a=Math.round(Math.max(1/n,1));for(let e=0;e<=a;e++){let a=n*e+t,o=this._exponentialApproach(i.time,i.value,r,n,a);this.linearRampToValueAtTime(this._toType(o),a)}return this}setValueAtTime(e,t){let n=this.toSeconds(t);super.setValueAtTime(e,t);let r=this._events.get(n),i=this._events.previousEvent(r),a=this._getTicksUntilEvent(i,n);return r.ticks=Math.max(a,0),this}linearRampToValueAtTime(e,t){let n=this.toSeconds(t);super.linearRampToValueAtTime(e,t);let r=this._events.get(n),i=this._events.previousEvent(r),a=this._getTicksUntilEvent(i,n);return r.ticks=Math.max(a,0),this}exponentialRampToValueAtTime(e,t){t=this.toSeconds(t);let n=this._fromType(e),r=this._events.get(t),i=Math.round(Math.max((t-r.time)*10,1)),a=(t-r.time)/i;for(let e=0;e<=i;e++){let i=a*e+r.time,o=this._exponentialInterpolate(r.time,r.value,t,n,i);this.linearRampToValueAtTime(this._toType(o),i)}return this}_getTicksUntilEvent(e,t){if(e===null)e={ticks:0,time:0,type:`setValueAtTime`,value:0};else if(Ho(e.ticks)){let t=this._events.previousEvent(e);e.ticks=this._getTicksUntilEvent(t,e.time)}let n=this._fromType(this.getValueAtTime(e.time)),r=this._fromType(this.getValueAtTime(t)),i=this._events.get(t);return i&&i.time===t&&i.type===`setValueAtTime`&&(r=this._fromType(this.getValueAtTime(t-this.sampleTime))),.5*(t-e.time)*(n+r)+e.ticks}getTicksAtTime(e){let t=this.toSeconds(e),n=this._events.get(t);return Math.max(this._getTicksUntilEvent(n,t),0)}getDurationOfTicks(e,t){let n=this.toSeconds(t),r=this.getTicksAtTime(t);return this.getTimeOfTick(r+e)-n}getTimeOfTick(e){let t=this._events.get(e,`ticks`),n=this._events.getAfter(e,`ticks`);if(t&&t.ticks===e)return t.time;if(t&&n&&n.type===`linearRampToValueAtTime`&&t.value!==n.value){let r=this._fromType(this.getValueAtTime(t.time)),i=(this._fromType(this.getValueAtTime(n.time))-r)/(n.time-t.time),a=Math.sqrt(r**2-2*i*(t.ticks-e)),o=(-r+a)/i,s=(-r-a)/i;return(o>0?o:s)+t.time}else if(t)return t.value===0?1/0:t.time+(e-t.ticks)/t.value;else return e/this._initialValue}ticksToTime(e,t){return this.getDurationOfTicks(e,t)}timeToTicks(e,t){let n=this.toSeconds(t),r=this.toSeconds(e),i=this.getTicksAtTime(n);return this.getTicksAtTime(n+r)-i}_fromType(e){return this.units===`bpm`&&this.multiplier?1/(60/e/this.multiplier):super._fromType(e)}_toType(e){return this.units===`bpm`&&this.multiplier?e/this.multiplier*60:super._toType(e)}get multiplier(){return this._multiplier}set multiplier(e){let t=this.value;this._multiplier=e,this.cancelScheduledValues(0),this.setValueAtTime(t,0)}},Ec=class e extends Cc{constructor(){let t=B(e.getDefaults(),arguments,[`value`]);super(t),this.name=`TickSignal`,this.input=this._param=new Tc({context:this.context,convert:t.convert,multiplier:t.multiplier,param:this._constantSource.offset,units:t.units,value:t.value})}static getDefaults(){return Object.assign(Cc.getDefaults(),{multiplier:1,units:`hertz`,value:1})}ticksToTime(e,t){return this._param.ticksToTime(e,t)}timeToTicks(e,t){return this._param.timeToTicks(e,t)}getTimeOfTick(e){return this._param.getTimeOfTick(e)}getDurationOfTicks(e,t){return this._param.getDurationOfTicks(e,t)}getTicksAtTime(e){return this._param.getTicksAtTime(e)}get multiplier(){return this._param.multiplier}set multiplier(e){this._param.multiplier=e}dispose(){return super.dispose(),this._param.dispose(),this}},Dc=class e extends mc{constructor(){let t=B(e.getDefaults(),arguments,[`frequency`]);super(t),this.name=`TickSource`,this._state=new hc,this._tickOffset=new js,this._ticksAtTime=new js,this._secondsAtTime=new js,this.frequency=new Ec({context:this.context,units:t.units,value:t.frequency}),Hs(this,`frequency`),this._state.setStateAtTime(`stopped`,0),this.setTicksAtTime(0,0)}static getDefaults(){return Object.assign({frequency:1,units:`hertz`},mc.getDefaults())}get state(){return this.getStateAtTime(this.now())}start(e,t){let n=this.toSeconds(e);return this._state.getValueAtTime(n)!==`started`&&(this._state.setStateAtTime(`started`,n),R(t)&&this.setTicksAtTime(t,n),this._ticksAtTime.cancel(n),this._secondsAtTime.cancel(n)),this}stop(e){let t=this.toSeconds(e);if(this._state.getValueAtTime(t)===`stopped`){let e=this._state.get(t);e&&e.time>0&&(this._tickOffset.cancel(e.time),this._state.cancel(e.time))}return this._state.cancel(t),this._state.setStateAtTime(`stopped`,t),this.setTicksAtTime(0,t),this._ticksAtTime.cancel(t),this._secondsAtTime.cancel(t),this}pause(e){let t=this.toSeconds(e);return this._state.getValueAtTime(t)===`started`&&(this._state.setStateAtTime(`paused`,t),this._ticksAtTime.cancel(t),this._secondsAtTime.cancel(t)),this}cancel(e){return e=this.toSeconds(e),this._state.cancel(e),this._tickOffset.cancel(e),this._ticksAtTime.cancel(e),this._secondsAtTime.cancel(e),this}getTicksAtTime(e){let t=this.toSeconds(e),n=this._state.getLastState(`stopped`,t),r=this._ticksAtTime.get(t),i={state:`paused`,time:t};this._state.add(i);let a=r||n,o=r?r.ticks:0,s=null;return this._state.forEachBetween(a.time,t+this.sampleTime,e=>{let t=a.time,n=this._tickOffset.get(e.time);n&&n.time>=a.time&&(o=n.ticks,t=n.time),a.state===`started`&&e.state!==`started`&&(o+=this.frequency.getTicksAtTime(e.time)-this.frequency.getTicksAtTime(t),e.time!==i.time&&(s={state:e.state,time:e.time,ticks:o})),a=e}),this._state.remove(i),s&&this._ticksAtTime.add(s),o}get ticks(){return this.getTicksAtTime(this.now())}set ticks(e){this.setTicksAtTime(e,this.now())}get seconds(){return this.getSecondsAtTime(this.now())}set seconds(e){let t=this.now(),n=this.frequency.timeToTicks(e,t);this.setTicksAtTime(n,t)}getSecondsAtTime(e){e=this.toSeconds(e);let t=this._state.getLastState(`stopped`,e),n={state:`paused`,time:e};this._state.add(n);let r=this._secondsAtTime.get(e),i=r||t,a=r?r.seconds:0,o=null;return this._state.forEachBetween(i.time,e+this.sampleTime,e=>{let t=i.time,r=this._tickOffset.get(e.time);r&&r.time>=i.time&&(a=r.seconds,t=r.time),i.state===`started`&&e.state!==`started`&&(a+=e.time-t,e.time!==n.time&&(o={state:e.state,time:e.time,seconds:a})),i=e}),this._state.remove(n),o&&this._secondsAtTime.add(o),a}setTicksAtTime(e,t){return t=this.toSeconds(t),this._tickOffset.cancel(t),this._tickOffset.add({seconds:this.frequency.getDurationOfTicks(e,t),ticks:e,time:t}),this._ticksAtTime.cancel(t),this._secondsAtTime.cancel(t),this}getStateAtTime(e){return e=this.toSeconds(e),this._state.getValueAtTime(e)}getTimeOfTick(e,t=this.now()){let n=this._tickOffset.get(t),r=this._state.get(t),i=Math.max(n.time,r.time),a=this.frequency.getTicksAtTime(i)+e-n.ticks;return this.frequency.getTimeOfTick(a)}forEachTickBetween(e,t,n){let r=this._state.get(e);this._state.forEachBetween(e,t,t=>{r&&r.state===`started`&&t.state!==`started`&&this.forEachTickBetween(Math.max(r.time,e),t.time-this.sampleTime,n),r=t});let i=null;if(r&&r.state===`started`){let a=Math.max(r.time,e),o=this.frequency.getTicksAtTime(a),s=o-this.frequency.getTicksAtTime(r.time),c=Math.ceil(s)-s;c=ks(c,1)?0:c;let l=this.frequency.getTimeOfTick(o+c);for(;l{switch(e.state){case`started`:let t=this._tickSource.getTicksAtTime(e.time);this.emit(`start`,e.time,t);break;case`stopped`:e.time!==0&&this.emit(`stop`,e.time);break;case`paused`:this.emit(`pause`,e.time);break}}),this._tickSource.forEachTickBetween(e,t,(e,t)=>{this.callback(e,t)}))}getStateAtTime(e){let t=this.toSeconds(e);return this._state.getValueAtTime(t)}dispose(){return super.dispose(),this.context.off(`tick`,this._boundLoop),this._tickSource.dispose(),this._state.dispose(),this}};Rs.mixin(Oc);var kc=class e extends V{constructor(){let t=B(e.getDefaults(),arguments,[`volume`]);super(t),this.name=`Volume`,this.input=this.output=new bc({context:this.context,gain:t.volume,units:`decibels`}),this.volume=this.output.gain,Hs(this,`volume`),this._unmutedVolume=t.volume,this.mute=t.mute}static getDefaults(){return Object.assign(V.getDefaults(),{mute:!1,volume:0})}get mute(){return this.volume.value===-1/0}set mute(e){!this.mute&&e?(this._unmutedVolume=this.volume.value,this.volume.value=-1/0):this.mute&&!e&&(this.volume.value=this._unmutedVolume)}dispose(){return super.dispose(),this.input.dispose(),this.volume.dispose(),this}},Ac=class e extends V{constructor(){let t=B(e.getDefaults(),arguments);super(t),this.name=`Destination`,this.input=new kc({context:this.context}),this.output=new bc({context:this.context}),this.volume=this.input.volume,_c(this.input,this.output,this.context.rawContext.destination),this.mute=t.mute,this._internalChannels=[this.input,this.context.rawContext.destination,this.output]}static getDefaults(){return Object.assign(V.getDefaults(),{mute:!1,volume:0})}get mute(){return this.input.mute}set mute(e){this.input.mute=e}chain(...e){return this.input.disconnect(),e.unshift(this.input),e.push(this.output),_c(...e),this}get maxChannelCount(){return this.context.rawContext.destination.maxChannelCount}dispose(){return super.dispose(),this.volume.dispose(),this}};Ns(e=>{e.destination=new Ac({context:e})}),Is(e=>{e.destination.dispose()});var jc=class extends V{constructor(){super(...arguments),this.name=`Listener`,this.positionX=new gc({context:this.context,param:this.context.rawContext.listener.positionX}),this.positionY=new gc({context:this.context,param:this.context.rawContext.listener.positionY}),this.positionZ=new gc({context:this.context,param:this.context.rawContext.listener.positionZ}),this.forwardX=new gc({context:this.context,param:this.context.rawContext.listener.forwardX}),this.forwardY=new gc({context:this.context,param:this.context.rawContext.listener.forwardY}),this.forwardZ=new gc({context:this.context,param:this.context.rawContext.listener.forwardZ}),this.upX=new gc({context:this.context,param:this.context.rawContext.listener.upX}),this.upY=new gc({context:this.context,param:this.context.rawContext.listener.upY}),this.upZ=new gc({context:this.context,param:this.context.rawContext.listener.upZ})}static getDefaults(){return Object.assign(V.getDefaults(),{positionX:0,positionY:0,positionZ:0,forwardX:0,forwardY:0,forwardZ:-1,upX:0,upY:1,upZ:0})}dispose(){return super.dispose(),this.positionX.dispose(),this.positionY.dispose(),this.positionZ.dispose(),this.forwardX.dispose(),this.forwardY.dispose(),this.forwardZ.dispose(),this.upX.dispose(),this.upY.dispose(),this.upZ.dispose(),this}};Ns(e=>{e.listener=new jc({context:e})}),Is(e=>{e.listener.dispose()});var Mc=class e extends ws{constructor(){super(),this.name=`ToneAudioBuffers`,this._buffers=new Map,this._loadingCount=0;let t=B(e.getDefaults(),arguments,[`urls`,`onload`,`baseUrl`],`urls`);this.baseUrl=t.baseUrl,Object.keys(t.urls).forEach(e=>{this._loadingCount++;let n=t.urls[e];this.add(e,n,this._bufferLoaded.bind(this,t.onload),t.onerror)})}static getDefaults(){return{baseUrl:``,onerror:Ws,onload:Ws,urls:{}}}has(e){return this._buffers.has(e.toString())}get(e){return z(this.has(e),`ToneAudioBuffers has no buffer named: ${e}`),this._buffers.get(e.toString())}_bufferLoaded(e){this._loadingCount--,this._loadingCount===0&&e&&e()}get loaded(){return Array.from(this._buffers).every(([e,t])=>t.loaded)}add(e,t,n=Ws,r=Ws){return Jo(t)?(this.baseUrl&&t.trim().substring(0,11).toLowerCase()===`data:audio/`&&(this.baseUrl=``),this._buffers.set(e.toString(),new Gs(this.baseUrl+t,n,r))):this._buffers.set(e.toString(),new Gs(t,n,r)),this}dispose(){return super.dispose(),this._buffers.forEach(e=>e.dispose()),this._buffers.clear(),this}},Nc=class e extends lc{constructor(){super(...arguments),this.name=`MidiClass`,this.defaultUnits=`midi`}_frequencyToUnits(e){return ic(super._frequencyToUnits(e))}_ticksToUnits(e){return ic(super._ticksToUnits(e))}_beatsToUnits(e){return ic(super._beatsToUnits(e))}_secondsToUnits(e){return ic(super._secondsToUnits(e))}toMidi(){return this.valueOf()}toFrequency(){return oc(this.toMidi())}transpose(t){return new e(this.context,this.toMidi()+t)}},Pc=class extends pc{constructor(){super(...arguments),this.name=`Ticks`,this.defaultUnits=`i`}_now(){return this.context.transport.ticks}_beatsToUnits(e){return this._getPPQ()*e}_secondsToUnits(e){return Math.floor(e/(60/this._getBpm())*this._getPPQ())}_ticksToUnits(e){return e}toTicks(){return this.valueOf()}toSeconds(){return this.valueOf()/this._getPPQ()*(60/this._getBpm())}},Fc=class extends mc{constructor(){super(...arguments),this.name=`Draw`,this.expiration=.25,this.anticipation=.008,this._events=new js,this._boundDrawLoop=this._drawLoop.bind(this),this._animationFrame=-1}schedule(e,t){return this._events.add({callback:e,time:this.toSeconds(t)}),this._events.length===1&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop)),this}cancel(e){return this._events.cancel(this.toSeconds(e)),this}_drawLoop(){let e=this.context.currentTime;this._events.forEachBefore(e+this.anticipation,t=>{e-t.time<=this.expiration&&t.callback(),this._events.remove(t)}),this._events.length>0&&(this._animationFrame=requestAnimationFrame(this._boundDrawLoop))}dispose(){return super.dispose(),this._events.dispose(),cancelAnimationFrame(this._animationFrame),this}};Ns(e=>{e.draw=new Fc({context:e})}),Is(e=>{e.draw.dispose()});var Ic=class extends ws{constructor(){super(...arguments),this.name=`IntervalTimeline`,this._root=null,this._length=0}add(e){z(R(e.time),`Events must have a time property`),z(R(e.duration),`Events must have a duration parameter`),e.time=e.time.valueOf();let t=new Lc(e.time,e.time+e.duration,e);for(this._root===null?this._root=t:this._root.insert(t),this._length++;t!==null;)t.updateHeight(),t.updateMax(),this._rebalance(t),t=t.parent;return this}remove(e){if(this._root!==null){let t=[];this._root.search(e.time,t);for(let n of t)if(n.event===e){this._removeNode(n),this._length--;break}}return this}get length(){return this._length}cancel(e){return this.forEachFrom(e,e=>this.remove(e)),this}_setRoot(e){this._root=e,this._root!==null&&(this._root.parent=null)}_replaceNodeInParent(e,t){e.parent===null?this._setRoot(t):(e.isLeftChild()?e.parent.left=t:e.parent.right=t,this._rebalance(e.parent))}_removeNode(e){if(e.left===null&&e.right===null)this._replaceNodeInParent(e,null);else if(e.right===null)this._replaceNodeInParent(e,e.left);else if(e.left===null)this._replaceNodeInParent(e,e.right);else{let t=e.getBalance(),n,r=null;if(t>0)if(e.left.right===null)n=e.left,n.right=e.right,r=n;else{for(n=e.left.right;n.right!==null;)n=n.right;n.parent&&(n.parent.right=n.left,r=n.parent,n.left=e.left,n.right=e.right)}else if(e.right.left===null)n=e.right,n.left=e.left,r=n;else{for(n=e.right.left;n.left!==null;)n=n.left;n.parent&&(n.parent.left=n.right,r=n.parent,n.left=e.left,n.right=e.right)}e.parent===null?this._setRoot(n):e.isLeftChild()?e.parent.left=n:e.parent.right=n,r&&this._rebalance(r)}e.dispose()}_rotateLeft(e){let t=e.parent,n=e.isLeftChild(),r=e.right;r&&(e.right=r.left,r.left=e),t===null?this._setRoot(r):n?t.left=r:t.right=r}_rotateRight(e){let t=e.parent,n=e.isLeftChild(),r=e.left;r&&(e.left=r.right,r.right=e),t===null?this._setRoot(r):n?t.left=r:t.right=r}_rebalance(e){let t=e.getBalance();t>1&&e.left?e.left.getBalance()<0?this._rotateLeft(e.left):this._rotateRight(e):t<-1&&e.right&&(e.right.getBalance()>0?this._rotateRight(e.right):this._rotateLeft(e))}get(e){if(this._root!==null){let t=[];if(this._root.search(e,t),t.length>0){let e=t[0];for(let n=1;ne.low&&(e=t[n]);return e.event}}return null}forEach(e){if(this._root!==null){let t=[];this._root.traverse(e=>t.push(e)),t.forEach(t=>{t.event&&e(t.event)})}return this}forEachAtTime(e,t){if(this._root!==null){let n=[];this._root.search(e,n),n.forEach(e=>{e.event&&t(e.event)})}return this}forEachFrom(e,t){if(this._root!==null){let n=[];this._root.searchAfter(e,n),n.forEach(e=>{e.event&&t(e.event)})}return this}dispose(){return super.dispose(),this._root!==null&&this._root.traverse(e=>e.dispose()),this._root=null,this}},Lc=class{constructor(e,t,n){this._left=null,this._right=null,this.parent=null,this.height=0,this.event=n,this.low=e,this.high=t,this.max=this.high}insert(e){e.low<=this.low?this.left===null?this.left=e:this.left.insert(e):this.right===null?this.right=e:this.right.insert(e)}search(e,t){e>this.max||(this.left!==null&&this.left.search(e,t),this.low<=e&&this.high>e&&t.push(this),!(this.low>e)&&this.right!==null&&this.right.search(e,t))}searchAfter(e,t){this.low>=e&&(t.push(this),this.left!==null&&this.left.searchAfter(e,t)),this.right!==null&&this.right.searchAfter(e,t)}traverse(e){e(this),this.left!==null&&this.left.traverse(e),this.right!==null&&this.right.traverse(e)}updateHeight(){this.left!==null&&this.right!==null?this.height=Math.max(this.left.height,this.right.height)+1:this.right===null?this.left===null?this.height=0:this.height=this.left.height+1:this.height=this.right.height+1}updateMax(){this.max=this.high,this.left!==null&&(this.max=Math.max(this.max,this.left.max)),this.right!==null&&(this.max=Math.max(this.max,this.right.max))}getBalance(){let e=0;return this.left!==null&&this.right!==null?e=this.left.height-this.right.height:this.left===null?this.right!==null&&(e=-(this.right.height+1)):e=this.left.height+1,e}isLeftChild(){return this.parent!==null&&this.parent.left===this}get left(){return this._left}set left(e){this._left=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}get right(){return this._right}set right(e){this._right=e,e!==null&&(e.parent=this),this.updateHeight(),this.updateMax()}dispose(){this.parent=null,this._left=null,this._right=null,this.event=null}},Rc=class extends ws{constructor(e){super(),this.name=`TimelineValue`,this._timeline=new js({memory:10}),this._initialValue=e}set(e,t){return this._timeline.add({value:e,time:t}),this}get(e){let t=this._timeline.get(e);return t?t.value:this._initialValue}},zc=class e extends V{constructor(){super(B(e.getDefaults(),arguments,[`context`]))}connect(e,t=0,n=0){return wc(this,e,t,n),this}},Bc=class e extends zc{constructor(){let t=B(e.getDefaults(),arguments,[`mapping`,`length`]);super(t),this.name=`WaveShaper`,this._shaper=this.context.createWaveShaper(),this.input=this._shaper,this.output=this._shaper,qo(t.mapping)||t.mapping instanceof Float32Array?this.curve=Float32Array.from(t.mapping):Uo(t.mapping)&&this.setMap(t.mapping,t.length)}static getDefaults(){return Object.assign(Cc.getDefaults(),{length:1024})}setMap(e,t=1024){let n=new Float32Array(t);for(let r=0,i=t;rt.includes(e)),`oversampling must be either 'none', '2x', or '4x'`),this._shaper.oversample=e}dispose(){return super.dispose(),this._shaper.disconnect(),this}},Vc=class e extends zc{constructor(){let t=B(e.getDefaults(),arguments,[`value`]);super(t),this.name=`Pow`,this._exponentScaler=this.input=this.output=new Bc({context:this.context,mapping:this._expFunc(t.value),length:8192}),this._exponent=t.value}static getDefaults(){return Object.assign(zc.getDefaults(),{value:1})}_expFunc(e){return t=>Math.abs(t)**+e}get value(){return this._exponent}set value(e){this._exponent=e,this._exponentScaler.setMap(this._expFunc(this._exponent))}dispose(){return super.dispose(),this._exponentScaler.dispose(),this}},Hc=class e{constructor(t,n){this.id=e._eventId++,this._remainderTime=0;let r=Object.assign(e.getDefaults(),n);this.transport=t,this.callback=r.callback,this._once=r.once,this.time=Math.floor(r.time),this._remainderTime=r.time-this.time}static getDefaults(){return{callback:Ws,once:!1,time:0}}get floatTime(){return this.time+this._remainderTime}invoke(e){if(this.callback){let t=this.transport.bpm.getDurationOfTicks(1,e);this.callback(e+this._remainderTime*t),this._once&&this.transport.clear(this.id)}}dispose(){return this.callback=void 0,this}};Hc._eventId=0;var Uc=class e extends Hc{constructor(t,n){super(t,n),this._currentId=-1,this._nextId=-1,this._nextTick=this.time,this._boundRestart=this._restart.bind(this);let r=Object.assign(e.getDefaults(),n);this.duration=r.duration,this._interval=r.interval,this._nextTick=r.time,this.transport.on(`start`,this._boundRestart),this.transport.on(`loopStart`,this._boundRestart),this.transport.on(`ticks`,this._boundRestart),this.context=this.transport.context,this._restart()}static getDefaults(){return Object.assign({},Hc.getDefaults(),{duration:1/0,interval:1,once:!1})}invoke(e){this._createEvents(e),super.invoke(e)}_createEvent(){return Os(this._nextTick,this.floatTime+this.duration)?this.transport.scheduleOnce(this.invoke.bind(this),new Pc(this.context,this._nextTick).toSeconds()):-1}_createEvents(e){Os(this._nextTick+this._interval,this.floatTime+this.duration)&&(this._nextTick+=this._interval,this._currentId=this._nextId,this._nextId=this.transport.scheduleOnce(this.invoke.bind(this),new Pc(this.context,this._nextTick).toSeconds()))}_restart(e){this.transport.clear(this._currentId),this.transport.clear(this._nextId),this._nextTick=this.floatTime;let t=this.transport.getTicksAtTime(e);Es(t,this.time)&&(this._nextTick=this.floatTime+Math.ceil((t-this.floatTime)/this._interval)*this._interval),this._currentId=this._createEvent(),this._nextTick+=this._interval,this._nextId=this._createEvent()}dispose(){return super.dispose(),this.transport.clear(this._currentId),this.transport.clear(this._nextId),this.transport.off(`start`,this._boundRestart),this.transport.off(`loopStart`,this._boundRestart),this.transport.off(`ticks`,this._boundRestart),this}},Wc=class e extends mc{constructor(){let t=B(e.getDefaults(),arguments);super(t),this.name=`Transport`,this._loop=new Rc(!1),this._loopStart=0,this._loopEnd=0,this._scheduledEvents={},this._timeline=new js,this._repeatedEvents=new Ic,this._syncedSignals=[],this._swingAmount=0,this._ppq=t.ppq,this._clock=new Oc({callback:this._processTick.bind(this),context:this.context,frequency:0,units:`bpm`}),this._bindClockEvents(),this.bpm=this._clock.frequency,this._clock.frequency.multiplier=t.ppq,this.bpm.setValueAtTime(t.bpm,0),Hs(this,`bpm`),this._timeSignature=t.timeSignature,this._swingTicks=t.ppq/2}static getDefaults(){return Object.assign(mc.getDefaults(),{bpm:120,loopEnd:`4m`,loopStart:0,ppq:192,swing:0,swingSubdivision:`8n`,timeSignature:4})}_processTick(e,t){if(this._loop.get(e)&&t>=this._loopEnd&&(this.emit(`loopEnd`,e),this._clock.setTicksAtTime(this._loopStart,e),t=this._loopStart,this.emit(`loopStart`,e,this._clock.getSecondsAtTime(e)),this.emit(`loop`,e)),this._swingAmount>0&&t%this._ppq!==0&&t%(this._swingTicks*2)!=0){let n=t%(this._swingTicks*2)/(this._swingTicks*2),r=Math.sin(n*Math.PI)*this._swingAmount;e+=new Pc(this.context,this._swingTicks*2/3).toSeconds()*r}es(!0),this._timeline.forEachAtTime(t,t=>t.invoke(e)),es(!1)}schedule(e,t){let n=new Hc(this,{callback:e,time:new pc(this.context,t).toTicks()});return this._addEvent(n,this._timeline)}scheduleRepeat(e,t,n,r=1/0){let i=new Uc(this,{callback:e,duration:new cc(this.context,r).toTicks(),interval:new cc(this.context,t).toTicks(),time:new pc(this.context,n).toTicks()});return this._addEvent(i,this._repeatedEvents)}scheduleOnce(e,t){let n=new Hc(this,{callback:e,once:!0,time:new pc(this.context,t).toTicks()});return this._addEvent(n,this._timeline)}clear(e){if(this._scheduledEvents.hasOwnProperty(e)){let t=this._scheduledEvents[e.toString()];t.timeline.remove(t.event),t.event.dispose(),delete this._scheduledEvents[e.toString()]}return this}_addEvent(e,t){return this._scheduledEvents[e.id.toString()]={event:e,timeline:t},t.add(e),e.id}cancel(e=0){let t=this.toTicks(e);return this._timeline.forEachFrom(t,e=>this.clear(e.id)),this._repeatedEvents.forEachFrom(t,e=>this.clear(e.id)),this}_bindClockEvents(){this._clock.on(`start`,(e,t)=>{t=new Pc(this.context,t).toSeconds(),this.emit(`start`,e,t)}),this._clock.on(`stop`,e=>{this.emit(`stop`,e)}),this._clock.on(`pause`,e=>{this.emit(`pause`,e)})}get state(){return this._clock.getStateAtTime(this.now())}start(e,t){this.context.resume();let n;return R(t)&&(n=this.toTicks(t)),this._clock.start(e,n),this}stop(e){return this._clock.stop(e),this}pause(e){return this._clock.pause(e),this}toggle(e){return e=this.toSeconds(e),this._clock.getStateAtTime(e)===`started`?this.stop(e):this.start(e),this}get timeSignature(){return this._timeSignature}set timeSignature(e){qo(e)&&(e=e[0]/e[1]*4),this._timeSignature=e}get loopStart(){return new cc(this.context,this._loopStart,`i`).toSeconds()}set loopStart(e){this._loopStart=this.toTicks(e)}get loopEnd(){return new cc(this.context,this._loopEnd,`i`).toSeconds()}set loopEnd(e){this._loopEnd=this.toTicks(e)}get loop(){return this._loop.get(this.now())}set loop(e){this._loop.set(e,this.now())}setLoopPoints(e,t){return this.loopStart=e,this.loopEnd=t,this}get swing(){return this._swingAmount}set swing(e){this._swingAmount=e}get swingSubdivision(){return new Pc(this.context,this._swingTicks).toNotation()}set swingSubdivision(e){this._swingTicks=this.toTicks(e)}get position(){let e=this.now(),t=this._clock.getTicksAtTime(e);return new Pc(this.context,t).toBarsBeatsSixteenths()}set position(e){let t=this.toTicks(e);this.ticks=t}get seconds(){return this._clock.seconds}set seconds(e){let t=this.now(),n=this._clock.frequency.timeToTicks(e,t);this.ticks=n}get progress(){if(this.loop){let e=this.now();return(this._clock.getTicksAtTime(e)-this._loopStart)/(this._loopEnd-this._loopStart)}else return 0}get ticks(){return this._clock.ticks}set ticks(e){if(this._clock.ticks!==e){let t=this.now();if(this.state===`started`){let n=this._clock.getTicksAtTime(t),r=t+this._clock.frequency.getDurationOfTicks(Math.ceil(n)-n,t);this.emit(`stop`,r),this._clock.setTicksAtTime(e,r),this.emit(`start`,r,this._clock.getSecondsAtTime(r))}else this.emit(`ticks`,t),this._clock.setTicksAtTime(e,t)}}getTicksAtTime(e){return this._clock.getTicksAtTime(e)}getSecondsAtTime(e){return this._clock.getSecondsAtTime(e)}get PPQ(){return this._clock.frequency.multiplier}set PPQ(e){this._clock.frequency.multiplier=e}nextSubdivision(e){if(e=this.toTicks(e),this.state!==`started`)return 0;{let t=this.now(),n=this.getTicksAtTime(t),r=e-n%e;return this._clock.nextTickTime(r,t)}}syncSignal(e,t){let n=this.now(),r=this.bpm,i=1/(60/r.getValueAtTime(n)/this.PPQ),a=[];if(e.units===`time`){let e=1/64/i,t=new bc(e),n=new Vc(-1),o=new bc(e);r.chain(t,n,o),r=o,i=1/i,a=[t,n,o]}t||=e.getValueAtTime(n)===0?0:e.getValueAtTime(n)/i;let o=new bc(t);return r.connect(o),o.connect(e._param),a.push(o),this._syncedSignals.push({initial:e.value,nodes:a,signal:e}),e.value=0,this}unsyncSignal(e){for(let t=this._syncedSignals.length-1;t>=0;t--){let n=this._syncedSignals[t];n.signal===e&&(n.nodes.forEach(e=>e.dispose()),n.signal.value=n.initial,this._syncedSignals.splice(t,1))}return this}dispose(){return super.dispose(),this._clock.dispose(),Us(this,`bpm`),this._timeline.dispose(),this._repeatedEvents.dispose(),this}};Rs.mixin(Wc),Ns(e=>{e.transport=new Wc({context:e})}),Is(e=>{e.transport.dispose()});var Gc=class extends V{constructor(e){super(e),this.input=void 0,this._state=new hc(`stopped`),this._synced=!1,this._scheduled=[],this._syncedStart=Ws,this._syncedStop=Ws,this._state.memory=100,this._state.increasing=!0,this._volume=this.output=new kc({context:this.context,mute:e.mute,volume:e.volume}),this.volume=this._volume.volume,Hs(this,`volume`),this.onstop=e.onstop}static getDefaults(){return Object.assign(V.getDefaults(),{mute:!1,onstop:Ws,volume:0})}get state(){return this._synced?this.context.transport.state===`started`?this._state.getValueAtTime(this.context.transport.seconds):`stopped`:this._state.getValueAtTime(this.now())}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}_clampToCurrentTime(e){return this._synced?e:Math.max(e,this.context.currentTime)}start(e,t,n){let r=Ho(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(r=this._clampToCurrentTime(r),!this._synced&&this._state.getValueAtTime(r)===`started`)z(Es(r,this._state.get(r).time),`Start time must be strictly greater than previous start time`),this._state.cancel(r),this._state.setStateAtTime(`started`,r),this.log(`restart`,r),this.restart(r,t,n);else if(this.log(`start`,r),this._state.setStateAtTime(`started`,r),this._synced){let e=this._state.get(r);e&&(e.offset=this.toSeconds(Ss(t,0)),e.duration=n?this.toSeconds(n):void 0);let i=this.context.transport.schedule(e=>{this._start(e,t,n)},r);this._scheduled.push(i),this.context.transport.state===`started`&&this.context.transport.getSecondsAtTime(this.immediate())>r&&this._syncedStart(this.now(),this.context.transport.seconds)}else Zo(this.context),this._start(r,t,n);return this}stop(e){let t=Ho(e)&&this._synced?this.context.transport.seconds:this.toSeconds(e);if(t=this._clampToCurrentTime(t),this._state.getValueAtTime(t)===`started`||R(this._state.getNextState(`started`,t))){if(this.log(`stop`,t),!this._synced)this._stop(t);else{let e=this.context.transport.schedule(this._stop.bind(this),t);this._scheduled.push(e)}this._state.cancel(t),this._state.setStateAtTime(`stopped`,t)}return this}restart(e,t,n){return e=this.toSeconds(e),this._state.getValueAtTime(e)===`started`&&(this._state.cancel(e),this._restart(e,t,n)),this}sync(){return this._synced||(this._synced=!0,this._syncedStart=(e,t)=>{if(Es(t,0)){let n=this._state.get(t);if(n&&n.state===`started`&&n.time!==t){let r=t-this.toSeconds(n.time),i;n.duration&&(i=this.toSeconds(n.duration)-r),this._start(e,this.toSeconds(n.offset)+r,i)}}},this._syncedStop=e=>{let t=this.context.transport.getSecondsAtTime(Math.max(e-this.sampleTime,0));this._state.getValueAtTime(t)===`started`&&this._stop(e)},this.context.transport.on(`start`,this._syncedStart),this.context.transport.on(`loopStart`,this._syncedStart),this.context.transport.on(`stop`,this._syncedStop),this.context.transport.on(`pause`,this._syncedStop),this.context.transport.on(`loopEnd`,this._syncedStop)),this}unsync(){return this._synced&&(this.context.transport.off(`stop`,this._syncedStop),this.context.transport.off(`pause`,this._syncedStop),this.context.transport.off(`loopEnd`,this._syncedStop),this.context.transport.off(`start`,this._syncedStart),this.context.transport.off(`loopStart`,this._syncedStart)),this._synced=!1,this._scheduled.forEach(e=>this.context.transport.clear(e)),this._scheduled=[],this._state.cancel(0),this._stop(0),this}dispose(){return super.dispose(),this.onstop=Ws,this.unsync(),this._volume.dispose(),this._state.dispose(),this}},Kc=class e extends xc{constructor(){let t=B(e.getDefaults(),arguments,[`url`,`onload`]);super(t),this.name=`ToneBufferSource`,this._source=this.context.createBufferSource(),this._internalChannels=[this._source],this._sourceStarted=!1,this._sourceStopped=!1,vc(this._source,this._gainNode),this._source.onended=()=>this._stopSource(),this.playbackRate=new gc({context:this.context,param:this._source.playbackRate,units:`positive`,value:t.playbackRate}),this.loop=t.loop,this.loopStart=t.loopStart,this.loopEnd=t.loopEnd,this._buffer=new Gs(t.url,t.onload,t.onerror),this._internalChannels.push(this._source)}static getDefaults(){return Object.assign(xc.getDefaults(),{url:new Gs,loop:!1,loopEnd:0,loopStart:0,onload:Ws,onerror:Ws,playbackRate:1})}get fadeIn(){return this._fadeIn}set fadeIn(e){this._fadeIn=e}get fadeOut(){return this._fadeOut}set fadeOut(e){this._fadeOut=e}get curve(){return this._curve}set curve(e){this._curve=e}start(e,t,n,r=1){z(this.buffer.loaded,`buffer is either not set or not loaded`);let i=this.toSeconds(e);this._startGain(i,r),t=this.loop?Ss(t,this.loopStart):Ss(t,0);let a=Math.max(this.toSeconds(t),0);if(this.loop){let e=this.toSeconds(this.loopEnd)||this.buffer.duration,t=this.toSeconds(this.loopStart),n=e-t;Ds(a,e)&&(a=(a-t)%n+t),ks(a,this.buffer.duration)&&(a=0)}if(this._source.buffer=this.buffer.get(),this._source.loopEnd=this.toSeconds(this.loopEnd)||this.buffer.duration,Os(a,this.buffer.duration)&&(this._sourceStarted=!0,this._source.start(i,a)),R(n)){let e=this.toSeconds(n);e=Math.max(e,0),this.stop(i+e)}return this}_stopSource(e){!this._sourceStopped&&this._sourceStarted&&(this._sourceStopped=!0,this._source.stop(this.toSeconds(e)),this._onended())}get loopStart(){return this._source.loopStart}set loopStart(e){this._source.loopStart=this.toSeconds(e)}get loopEnd(){return this._source.loopEnd}set loopEnd(e){this._source.loopEnd=this.toSeconds(e)}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._source.loop}set loop(e){this._source.loop=e,this._sourceStarted&&this.cancelStop()}dispose(){return super.dispose(),this._source.onended=null,this._source.disconnect(),this._buffer.dispose(),this.playbackRate.dispose(),this}};function qc(e,t){return ds(this,void 0,void 0,function*(){let n=t/e.context.sampleRate,r=new Ks(1,n,e.context.sampleRate);return new e.constructor(Object.assign(e.get(),{frequency:2/n,detune:0,context:r})).toDestination().start(0),(yield r.render()).getChannelData(0)})}var Jc=class e extends xc{constructor(){let t=B(e.getDefaults(),arguments,[`frequency`,`type`]);super(t),this.name=`ToneOscillatorNode`,this._oscillator=this.context.createOscillator(),this._internalChannels=[this._oscillator],vc(this._oscillator,this._gainNode),this.type=t.type,this.frequency=new gc({context:this.context,param:this._oscillator.frequency,units:`frequency`,value:t.frequency}),this.detune=new gc({context:this.context,param:this._oscillator.detune,units:`cents`,value:t.detune}),Hs(this,[`frequency`,`detune`])}static getDefaults(){return Object.assign(xc.getDefaults(),{detune:0,frequency:440,type:`sine`})}start(e){let t=this.toSeconds(e);return this.log(`start`,t),this._startGain(t),this._oscillator.start(t),this}_stopSource(e){this._oscillator.stop(e)}setPeriodicWave(e){return this._oscillator.setPeriodicWave(e),this}get type(){return this._oscillator.type}set type(e){this._oscillator.type=e}dispose(){return super.dispose(),this.state===`started`&&this.stop(),this._oscillator.disconnect(),this.frequency.dispose(),this.detune.dispose(),this}},Yc=class e extends Gc{constructor(){let t=B(e.getDefaults(),arguments,[`frequency`,`type`]);super(t),this.name=`Oscillator`,this._oscillator=null,this.frequency=new Cc({context:this.context,units:`frequency`,value:t.frequency}),Hs(this,`frequency`),this.detune=new Cc({context:this.context,units:`cents`,value:t.detune}),Hs(this,`detune`),this._partials=t.partials,this._partialCount=t.partialCount,this._type=t.type,t.partialCount&&t.type!==`custom`&&(this._type=this.baseType+t.partialCount.toString()),this.phase=t.phase}static getDefaults(){return Object.assign(Gc.getDefaults(),{detune:0,frequency:440,partialCount:0,partials:[],phase:0,type:`sine`})}_start(e){let t=this.toSeconds(e),n=new Jc({context:this.context,onended:()=>this.onstop(this)});this._oscillator=n,this._wave?this._oscillator.setPeriodicWave(this._wave):this._oscillator.type=this._type,this._oscillator.connect(this.output),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.start(t)}_stop(e){let t=this.toSeconds(e);this._oscillator&&this._oscillator.stop(t)}_restart(e){let t=this.toSeconds(e);return this.log(`restart`,t),this._oscillator&&this._oscillator.cancelStop(),this._state.cancel(t),this}syncFrequency(){return this.context.transport.syncSignal(this.frequency),this}unsyncFrequency(){return this.context.transport.unsyncSignal(this.frequency),this}_getCachedPeriodicWave(){if(this._type===`custom`)return e._periodicWaveCache.find(e=>e.phase===this._phase&&bs(e.partials,this._partials));{let t=e._periodicWaveCache.find(e=>e.type===this._type&&e.phase===this._phase);return this._partialCount=t?t.partialCount:this._partialCount,t}}get type(){return this._type}set type(t){this._type=t;let n=[`sine`,`square`,`sawtooth`,`triangle`].indexOf(t)!==-1;if(this._phase===0&&n)this._wave=void 0,this._partialCount=0,this._oscillator!==null&&(this._oscillator.type=t);else{let n=this._getCachedPeriodicWave();if(R(n)){let{partials:e,wave:t}=n;this._wave=t,this._partials=e,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave)}else{let[n,r]=this._getRealImaginary(t,this._phase),i=this.context.createPeriodicWave(n,r);this._wave=i,this._oscillator!==null&&this._oscillator.setPeriodicWave(this._wave),e._periodicWaveCache.push({imag:r,partialCount:this._partialCount,partials:this._partials,phase:this._phase,real:n,type:this._type,wave:this._wave}),e._periodicWaveCache.length>100&&e._periodicWaveCache.shift()}}}get baseType(){return this._type.replace(this.partialCount.toString(),``)}set baseType(e){this.partialCount&&this._type!==`custom`&&e!==`custom`?this.type=e+this.partialCount:this.type=e}get partialCount(){return this._partialCount}set partialCount(e){Xo(e,0);let t=this._type,n=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(this._type);if(n&&(t=n[1]),this._type!==`custom`)e===0?this.type=t:this.type=t+e.toString();else{let t=new Float32Array(e);this._partials.forEach((e,n)=>t[n]=e),this._partials=Array.from(t),this.type=this._type}}_getRealImaginary(e,t){let n=4096/2,r=new Float32Array(n),i=new Float32Array(n),a=1;if(e===`custom`){if(a=this._partials.length+1,this._partialCount=this._partials.length,n=a,this._partials.length===0)return[r,i]}else{let t=/^(sine|triangle|square|sawtooth)(\d+)$/.exec(e);t?(a=parseInt(t[2],10)+1,this._partialCount=parseInt(t[2],10),e=t[1],a=Math.max(a,2),n=a):this._partialCount=0,this._partials=[]}for(let o=1;o>1&1?-1:1):0,this._partials[o-1]=s;break;case`custom`:s=this._partials[o-1];break;default:throw TypeError(`Oscillator: invalid type: `+e)}s===0?(r[o]=0,i[o]=0):(r[o]=-s*Math.sin(t*o),i[o]=s*Math.cos(t*o))}return[r,i]}_inverseFFT(e,t,n){let r=0,i=e.length;for(let a=0;a(e+1)/2}),this.input=this._norm,this.output=this._norm}dispose(){return super.dispose(),this._norm.dispose(),this}},Zc=class e extends Cc{constructor(){let t=B(e.getDefaults(),arguments,[`value`]);super(t),this.name=`Multiply`,this.override=!1,this._mult=this.input=this.output=new bc({context:this.context,minValue:t.minValue,maxValue:t.maxValue}),this.factor=this._param=this._mult.gain,this.factor.setValueAtTime(t.value,0)}static getDefaults(){return Object.assign(Cc.getDefaults(),{value:0})}dispose(){return super.dispose(),this._mult.dispose(),this}},Qc=class e extends Gc{constructor(){let t=B(e.getDefaults(),arguments,[`frequency`,`type`,`modulationType`]);super(t),this.name=`AMOscillator`,this._modulationScale=new Xc({context:this.context}),this._modulationNode=new bc({context:this.context}),this._carrier=new Yc({context:this.context,detune:t.detune,frequency:t.frequency,onstop:()=>this.onstop(this),phase:t.phase,type:t.type}),this.frequency=this._carrier.frequency,this.detune=this._carrier.detune,this._modulator=new Yc({context:this.context,phase:t.phase,type:t.modulationType}),this.harmonicity=new Zc({context:this.context,units:`positive`,value:t.harmonicity}),this.frequency.chain(this.harmonicity,this._modulator.frequency),this._modulator.chain(this._modulationScale,this._modulationNode.gain),this._carrier.chain(this._modulationNode,this.output),Hs(this,[`frequency`,`detune`,`harmonicity`])}static getDefaults(){return Object.assign(Yc.getDefaults(),{harmonicity:1,modulationType:`square`})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){this._modulator.restart(e),this._carrier.restart(e)}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(){return ds(this,arguments,void 0,function*(e=1024){return qc(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this._modulationScale.dispose(),this}},$c=class e extends Gc{constructor(){let t=B(e.getDefaults(),arguments,[`frequency`,`type`,`modulationType`]);super(t),this.name=`FMOscillator`,this._modulationNode=new bc({context:this.context,gain:0}),this._carrier=new Yc({context:this.context,detune:t.detune,frequency:0,onstop:()=>this.onstop(this),phase:t.phase,type:t.type}),this.detune=this._carrier.detune,this.frequency=new Cc({context:this.context,units:`frequency`,value:t.frequency}),this._modulator=new Yc({context:this.context,phase:t.phase,type:t.modulationType}),this.harmonicity=new Zc({context:this.context,units:`positive`,value:t.harmonicity}),this.modulationIndex=new Zc({context:this.context,units:`positive`,value:t.modulationIndex}),this.frequency.connect(this._carrier.frequency),this.frequency.chain(this.harmonicity,this._modulator.frequency),this.frequency.chain(this.modulationIndex,this._modulationNode),this._modulator.connect(this._modulationNode.gain),this._modulationNode.connect(this._carrier.frequency),this._carrier.connect(this.output),this.detune.connect(this._modulator.detune),Hs(this,[`modulationIndex`,`frequency`,`detune`,`harmonicity`])}static getDefaults(){return Object.assign(Yc.getDefaults(),{harmonicity:1,modulationIndex:2,modulationType:`square`})}_start(e){this._modulator.start(e),this._carrier.start(e)}_stop(e){this._modulator.stop(e),this._carrier.stop(e)}_restart(e){return this._modulator.restart(e),this._carrier.restart(e),this}get type(){return this._carrier.type}set type(e){this._carrier.type=e}get baseType(){return this._carrier.baseType}set baseType(e){this._carrier.baseType=e}get partialCount(){return this._carrier.partialCount}set partialCount(e){this._carrier.partialCount=e}get modulationType(){return this._modulator.type}set modulationType(e){this._modulator.type=e}get phase(){return this._carrier.phase}set phase(e){this._carrier.phase=e,this._modulator.phase=e}get partials(){return this._carrier.partials}set partials(e){this._carrier.partials=e}asArray(){return ds(this,arguments,void 0,function*(e=1024){return qc(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.harmonicity.dispose(),this._carrier.dispose(),this._modulator.dispose(),this._modulationNode.dispose(),this.modulationIndex.dispose(),this}},el=class e extends Gc{constructor(){let t=B(e.getDefaults(),arguments,[`frequency`,`width`]);super(t),this.name=`PulseOscillator`,this._widthGate=new bc({context:this.context,gain:0}),this._thresh=new Bc({context:this.context,mapping:e=>e<=0?-1:1}),this.width=new Cc({context:this.context,units:`audioRange`,value:t.width}),this._triangle=new Yc({context:this.context,detune:t.detune,frequency:t.frequency,onstop:()=>this.onstop(this),phase:t.phase,type:`triangle`}),this.frequency=this._triangle.frequency,this.detune=this._triangle.detune,this._triangle.chain(this._thresh,this.output),this.width.chain(this._widthGate,this._thresh),Hs(this,[`width`,`frequency`,`detune`])}static getDefaults(){return Object.assign(Gc.getDefaults(),{detune:0,frequency:440,phase:0,type:`pulse`,width:.2})}_start(e){e=this.toSeconds(e),this._triangle.start(e),this._widthGate.gain.setValueAtTime(1,e)}_stop(e){e=this.toSeconds(e),this._triangle.stop(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(0,e)}_restart(e){this._triangle.restart(e),this._widthGate.gain.cancelScheduledValues(e),this._widthGate.gain.setValueAtTime(1,e)}get phase(){return this._triangle.phase}set phase(e){this._triangle.phase=e}get type(){return`pulse`}get baseType(){return`pulse`}get partials(){return[]}get partialCount(){return 0}set carrierType(e){this._triangle.type=e}asArray(){return ds(this,arguments,void 0,function*(e=1024){return qc(this,e)})}dispose(){return super.dispose(),this._triangle.dispose(),this.width.dispose(),this._widthGate.dispose(),this._thresh.dispose(),this}},tl=class e extends Gc{constructor(){let t=B(e.getDefaults(),arguments,[`frequency`,`type`,`spread`]);super(t),this.name=`FatOscillator`,this._oscillators=[],this.frequency=new Cc({context:this.context,units:`frequency`,value:t.frequency}),this.detune=new Cc({context:this.context,units:`cents`,value:t.detune}),this._spread=t.spread,this._type=t.type,this._phase=t.phase,this._partials=t.partials,this._partialCount=t.partialCount,this.count=t.count,Hs(this,[`frequency`,`detune`])}static getDefaults(){return Object.assign(Yc.getDefaults(),{count:3,spread:20,type:`sawtooth`})}_start(e){e=this.toSeconds(e),this._forEach(t=>t.start(e))}_stop(e){e=this.toSeconds(e),this._forEach(t=>t.stop(e))}_restart(e){this._forEach(t=>t.restart(e))}_forEach(e){for(let t=0;tt.type=e)}get spread(){return this._spread}set spread(e){if(this._spread=e,this._oscillators.length>1){let t=-e/2,n=e/(this._oscillators.length-1);this._forEach((e,r)=>e.detune.value=t+n*r)}}get count(){return this._oscillators.length}set count(e){if(Xo(e,1),this._oscillators.length!==e){this._forEach(e=>e.dispose()),this._oscillators=[];for(let t=0;tthis.onstop(this):Ws});this.type===`custom`&&(n.partials=this._partials),this.frequency.connect(n.frequency),this.detune.connect(n.detune),n.detune.overridden=!1,n.connect(this.output),this._oscillators[t]=n}this.spread=this._spread,this.state===`started`&&this._forEach(e=>e.start())}}get phase(){return this._phase}set phase(e){this._phase=e,this._forEach((e,t)=>e.phase=this._phase+t/this.count*360)}get baseType(){return this._oscillators[0].baseType}set baseType(e){this._forEach(t=>t.baseType=e),this._type=this._oscillators[0].type}get partials(){return this._oscillators[0].partials}set partials(e){this._partials=e,this._partialCount=this._partials.length,e.length&&(this._type=`custom`,this._forEach(t=>t.partials=e))}get partialCount(){return this._oscillators[0].partialCount}set partialCount(e){this._partialCount=e,this._forEach(t=>t.partialCount=e),this._type=this._oscillators[0].type}asArray(){return ds(this,arguments,void 0,function*(e=1024){return qc(this,e)})}dispose(){return super.dispose(),this.frequency.dispose(),this.detune.dispose(),this._forEach(e=>e.dispose()),this}},nl=class e extends Gc{constructor(){let t=B(e.getDefaults(),arguments,[`frequency`,`modulationFrequency`]);super(t),this.name=`PWMOscillator`,this.sourceType=`pwm`,this._scale=new Zc({context:this.context,value:2}),this._pulse=new el({context:this.context,frequency:t.modulationFrequency}),this._pulse.carrierType=`sine`,this.modulationFrequency=this._pulse.frequency,this._modulator=new Yc({context:this.context,detune:t.detune,frequency:t.frequency,onstop:()=>this.onstop(this),phase:t.phase}),this.frequency=this._modulator.frequency,this.detune=this._modulator.detune,this._modulator.chain(this._scale,this._pulse.width),this._pulse.connect(this.output),Hs(this,[`modulationFrequency`,`frequency`,`detune`])}static getDefaults(){return Object.assign(Gc.getDefaults(),{detune:0,frequency:440,modulationFrequency:.4,phase:0,type:`pwm`})}_start(e){e=this.toSeconds(e),this._modulator.start(e),this._pulse.start(e)}_stop(e){e=this.toSeconds(e),this._modulator.stop(e),this._pulse.stop(e)}_restart(e){this._modulator.restart(e),this._pulse.restart(e)}get type(){return`pwm`}get baseType(){return`pwm`}get partials(){return[]}get partialCount(){return 0}get phase(){return this._modulator.phase}set phase(e){this._modulator.phase=e}asArray(){return ds(this,arguments,void 0,function*(e=1024){return qc(this,e)})}dispose(){return super.dispose(),this._pulse.dispose(),this._scale.dispose(),this._modulator.dispose(),this}},rl={am:Qc,fat:tl,fm:$c,oscillator:Yc,pulse:el,pwm:nl},il=class e extends Gc{constructor(){let t=B(e.getDefaults(),arguments,[`frequency`,`type`]);super(t),this.name=`OmniOscillator`,this.frequency=new Cc({context:this.context,units:`frequency`,value:t.frequency}),this.detune=new Cc({context:this.context,units:`cents`,value:t.detune}),Hs(this,[`frequency`,`detune`]),this.set(t)}static getDefaults(){return Object.assign(Yc.getDefaults(),$c.getDefaults(),Qc.getDefaults(),tl.getDefaults(),el.getDefaults(),nl.getDefaults())}_start(e){this._oscillator.start(e)}_stop(e){this._oscillator.stop(e)}_restart(e){return this._oscillator.restart(e),this}get type(){let e=``;return[`am`,`fm`,`fat`].some(e=>this._sourceType===e)&&(e=this._sourceType),e+this._oscillator.type}set type(e){e.substr(0,2)===`fm`?(this._createNewOscillator(`fm`),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,2)===`am`?(this._createNewOscillator(`am`),this._oscillator=this._oscillator,this._oscillator.type=e.substr(2)):e.substr(0,3)===`fat`?(this._createNewOscillator(`fat`),this._oscillator=this._oscillator,this._oscillator.type=e.substr(3)):e===`pwm`?(this._createNewOscillator(`pwm`),this._oscillator=this._oscillator):e===`pulse`?this._createNewOscillator(`pulse`):(this._createNewOscillator(`oscillator`),this._oscillator=this._oscillator,this._oscillator.type=e)}get partials(){return this._oscillator.partials}set partials(e){!this._getOscType(this._oscillator,`pulse`)&&!this._getOscType(this._oscillator,`pwm`)&&(this._oscillator.partials=e)}get partialCount(){return this._oscillator.partialCount}set partialCount(e){!this._getOscType(this._oscillator,`pulse`)&&!this._getOscType(this._oscillator,`pwm`)&&(this._oscillator.partialCount=e)}set(e){return Reflect.has(e,`type`)&&e.type&&(this.type=e.type),super.set(e),this}_createNewOscillator(e){if(e!==this._sourceType){this._sourceType=e;let t=rl[e],n=this.now();if(this._oscillator){let e=this._oscillator;e.stop(n),this.context.setTimeout(()=>e.dispose(),this.blockTime)}this._oscillator=new t({context:this.context}),this.frequency.connect(this._oscillator.frequency),this.detune.connect(this._oscillator.detune),this._oscillator.connect(this.output),this._oscillator.onstop=()=>this.onstop(this),this.state===`started`&&this._oscillator.start(n)}}get phase(){return this._oscillator.phase}set phase(e){this._oscillator.phase=e}get sourceType(){return this._sourceType}set sourceType(e){let t=`sine`;this._oscillator.type!==`pwm`&&this._oscillator.type!==`pulse`&&(t=this._oscillator.type),e===`fm`?this.type=`fm`+t:e===`am`?this.type=`am`+t:e===`fat`?this.type=`fat`+t:e===`oscillator`?this.type=t:e===`pulse`?this.type=`pulse`:e===`pwm`&&(this.type=`pwm`)}_getOscType(e,t){return e instanceof rl[t]}get baseType(){return this._oscillator.baseType}set baseType(e){!this._getOscType(this._oscillator,`pulse`)&&!this._getOscType(this._oscillator,`pwm`)&&e!==`pulse`&&e!==`pwm`&&(this._oscillator.baseType=e)}get width(){if(this._getOscType(this._oscillator,`pulse`))return this._oscillator.width}get count(){if(this._getOscType(this._oscillator,`fat`))return this._oscillator.count}set count(e){this._getOscType(this._oscillator,`fat`)&&Wo(e)&&(this._oscillator.count=e)}get spread(){if(this._getOscType(this._oscillator,`fat`))return this._oscillator.spread}set spread(e){this._getOscType(this._oscillator,`fat`)&&Wo(e)&&(this._oscillator.spread=e)}get modulationType(){if(this._getOscType(this._oscillator,`fm`)||this._getOscType(this._oscillator,`am`))return this._oscillator.modulationType}set modulationType(e){(this._getOscType(this._oscillator,`fm`)||this._getOscType(this._oscillator,`am`))&&Jo(e)&&(this._oscillator.modulationType=e)}get modulationIndex(){if(this._getOscType(this._oscillator,`fm`))return this._oscillator.modulationIndex}get harmonicity(){if(this._getOscType(this._oscillator,`fm`)||this._getOscType(this._oscillator,`am`))return this._oscillator.harmonicity}get modulationFrequency(){if(this._getOscType(this._oscillator,`pwm`))return this._oscillator.modulationFrequency}asArray(){return ds(this,arguments,void 0,function*(e=1024){return qc(this,e)})}dispose(){return super.dispose(),this.detune.dispose(),this.frequency.dispose(),this._oscillator.dispose(),this}};function al(e,t=1/0){let n=new WeakMap;return function(r,i){Reflect.defineProperty(r,i,{configurable:!0,enumerable:!0,get:function(){return n.get(this)},set:function(r){Xo(r,e,t),n.set(this,r)}})}}function ol(e,t=1/0){let n=new WeakMap;return function(r,i){Reflect.defineProperty(r,i,{configurable:!0,enumerable:!0,get:function(){return n.get(this)},set:function(r){Xo(this.toSeconds(r),e,t),n.set(this,r)}})}}var sl=class e extends Gc{constructor(){let t=B(e.getDefaults(),arguments,[`url`,`onload`]);super(t),this.name=`Player`,this._activeSources=new Set,this._buffer=new Gs({onload:this._onload.bind(this,t.onload),onerror:t.onerror,reverse:t.reverse,url:t.url}),this.autostart=t.autostart,this._loop=t.loop,this._loopStart=t.loopStart,this._loopEnd=t.loopEnd,this._playbackRate=t.playbackRate,this.fadeIn=t.fadeIn,this.fadeOut=t.fadeOut}static getDefaults(){return Object.assign(Gc.getDefaults(),{autostart:!1,fadeIn:0,fadeOut:0,loop:!1,loopEnd:0,loopStart:0,onload:Ws,onerror:Ws,playbackRate:1,reverse:!1})}load(e){return ds(this,void 0,void 0,function*(){return yield this._buffer.load(e),this._onload(),this})}_onload(e=Ws){e(),this.autostart&&this.start()}_onSourceEnd(e){this.onstop(this),this._activeSources.delete(e),this._activeSources.size===0&&!this._synced&&this._state.getValueAtTime(this.now())===`started`&&(this._state.cancel(this.now()),this._state.setStateAtTime(`stopped`,this.now()))}start(e,t,n){return super.start(e,t,n),this}_start(e,t,n){t=this._loop?Ss(t,this._loopStart):Ss(t,0);let r=this.toSeconds(t),i=n;n=Ss(n,Math.max(this._buffer.duration-r,0));let a=this.toSeconds(n);a/=this._playbackRate,e=this.toSeconds(e);let o=new Kc({url:this._buffer,context:this.context,fadeIn:this.fadeIn,fadeOut:this.fadeOut,loop:this._loop,loopEnd:this._loopEnd,loopStart:this._loopStart,onended:this._onSourceEnd.bind(this),playbackRate:this._playbackRate}).connect(this.output);!this._loop&&!this._synced&&(this._state.cancel(e+a),this._state.setStateAtTime(`stopped`,e+a,{implicitEnd:!0})),this._activeSources.add(o),this._loop&&Ho(i)?o.start(e,r):o.start(e,r,a-this.toSeconds(this.fadeOut))}_stop(e){let t=this.toSeconds(e);this._activeSources.forEach(e=>e.stop(t))}restart(e,t,n){return super.restart(e,t,n),this}_restart(e,t,n){var r;(r=[...this._activeSources].pop())==null||r.stop(e),this._start(e,t,n)}seek(e,t){let n=this.toSeconds(t);if(this._state.getValueAtTime(n)===`started`){let t=this.toSeconds(e);this._stop(n),this._start(n,t)}return this}setLoopPoints(e,t){return this.loopStart=e,this.loopEnd=t,this}get loopStart(){return this._loopStart}set loopStart(e){this._loopStart=e,this.buffer.loaded&&Xo(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(t=>{t.loopStart=e})}get loopEnd(){return this._loopEnd}set loopEnd(e){this._loopEnd=e,this.buffer.loaded&&Xo(this.toSeconds(e),0,this.buffer.duration),this._activeSources.forEach(t=>{t.loopEnd=e})}get buffer(){return this._buffer}set buffer(e){this._buffer.set(e)}get loop(){return this._loop}set loop(e){if(this._loop!==e&&(this._loop=e,this._activeSources.forEach(t=>{t.loop=e}),e)){let e=this._state.getNextState(`stopped`,this.now());e&&this._state.cancel(e.time)}}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e;let t=this.now(),n=this._state.getNextState(`stopped`,t);n&&n.implicitEnd&&(this._state.cancel(n.time),this._activeSources.forEach(e=>e.cancelStop())),this._activeSources.forEach(n=>{n.playbackRate.setValueAtTime(e,t)})}get reverse(){return this._buffer.reverse}set reverse(e){this._buffer.reverse=e}get loaded(){return this._buffer.loaded}dispose(){return super.dispose(),this._activeSources.forEach(e=>e.dispose()),this._activeSources.clear(),this._buffer.dispose(),this}};us([ol(0)],sl.prototype,`fadeIn`,void 0),us([ol(0)],sl.prototype,`fadeOut`,void 0);var cl=class e extends V{constructor(){let t=B(e.getDefaults(),arguments,[`attack`,`decay`,`sustain`,`release`]);super(t),this.name=`Envelope`,this._sig=new Cc({context:this.context,value:0}),this.output=this._sig,this.input=void 0,this.attack=t.attack,this.decay=t.decay,this.sustain=t.sustain,this.release=t.release,this.attackCurve=t.attackCurve,this.releaseCurve=t.releaseCurve,this.decayCurve=t.decayCurve}static getDefaults(){return Object.assign(V.getDefaults(),{attack:.01,attackCurve:`linear`,decay:.1,decayCurve:`exponential`,release:1,releaseCurve:`exponential`,sustain:.5})}get value(){return this.getValueAtTime(this.now())}_getCurve(e,t){if(Jo(e))return e;{let n;for(n in ll)if(ll[n][t]===e)return n;return e}}_setCurve(e,t,n){if(Jo(n)&&Reflect.has(ll,n)){let r=ll[n];Go(r)?e!==`_decayCurve`&&(this[e]=r[t]):this[e]=r}else if(qo(n)&&e!==`_decayCurve`)this[e]=n;else throw Error(`Envelope: invalid curve: `+n)}get attackCurve(){return this._getCurve(this._attackCurve,`In`)}set attackCurve(e){this._setCurve(`_attackCurve`,`In`,e)}get releaseCurve(){return this._getCurve(this._releaseCurve,`Out`)}set releaseCurve(e){this._setCurve(`_releaseCurve`,`Out`,e)}get decayCurve(){return this._getCurve(this._decayCurve,`Out`)}set decayCurve(e){this._setCurve(`_decayCurve`,`Out`,e)}triggerAttack(e,t=1){this.log(`triggerAttack`,e,t),e=this.toSeconds(e);let n=this.toSeconds(this.attack),r=this.toSeconds(this.decay),i=this.getValueAtTime(e);if(i>0){let e=1/n;n=(1-i)/e}if(n0){let n=this.toSeconds(this.release);n{let e,t,n=[];for(e=0;e<128;e++)n[e]=Math.sin(e/127*(Math.PI/2));let r=[];for(e=0;e<127;e++)t=e/127,r[e]=(Math.sin(Math.PI*2*t*6.4-Math.PI/2)+1)/10+t*.83;r[127]=1;let i=[];for(e=0;e<128;e++)i[e]=Math.ceil(e/127*5)/5;let a=[];for(e=0;e<128;e++)t=e/127,a[e]=.5*(1-Math.cos(Math.PI*t));let o=[];for(e=0;e<128;e++){t=e/127;let n=t**3*4+.2,r=Math.cos(n*Math.PI*2*t);o[e]=Math.abs(r*(1-t))}function s(e){let t=Array(e.length);for(let n=0;nthis._original_triggerRelease(e),this._volume=this.output=new kc({context:this.context,volume:t.volume}),this.volume=this._volume.volume,Hs(this,`volume`)}static getDefaults(){return Object.assign(V.getDefaults(),{volume:0})}sync(){return this._syncState()&&(this._syncMethod(`triggerAttack`,1),this._syncMethod(`triggerRelease`,0),this.context.transport.on(`stop`,this._syncedRelease),this.context.transport.on(`pause`,this._syncedRelease),this.context.transport.on(`loopEnd`,this._syncedRelease)),this}_syncState(){let e=!1;return this._synced||(this._synced=!0,e=!0),e}_syncMethod(e,t){let n=this[`_original_`+e]=this[e];this[e]=(...e)=>{let r=e[t],i=this.context.transport.schedule(r=>{e[t]=r,n.apply(this,e)},r);this._scheduledEvents.push(i)}}unsync(){return this._scheduledEvents.forEach(e=>this.context.transport.clear(e)),this._scheduledEvents=[],this._synced&&(this._synced=!1,this.triggerAttack=this._original_triggerAttack,this.triggerRelease=this._original_triggerRelease,this.context.transport.off(`stop`,this._syncedRelease),this.context.transport.off(`pause`,this._syncedRelease),this.context.transport.off(`loopEnd`,this._syncedRelease)),this}triggerAttackRelease(e,t,n,r){let i=this.toSeconds(n),a=this.toSeconds(t);return this.triggerAttack(e,i,r),this.triggerRelease(i+a),this}dispose(){return super.dispose(),this._volume.dispose(),this.unsync(),this._scheduledEvents=[],this}},dl=class e extends ul{constructor(){let t=B(e.getDefaults(),arguments);super(t),this.portamento=t.portamento,this.onsilence=t.onsilence}static getDefaults(){return Object.assign(ul.getDefaults(),{detune:0,onsilence:Ws,portamento:0})}triggerAttack(e,t,n=1){this.log(`triggerAttack`,e,t,n);let r=this.toSeconds(t);return this._triggerEnvelopeAttack(r,n),this.setNote(e,r),this}triggerRelease(e){this.log(`triggerRelease`,e);let t=this.toSeconds(e);return this._triggerEnvelopeRelease(t),this}setNote(e,t){let n=this.toSeconds(t),r=e instanceof lc?e.toFrequency():e;if(this.portamento>0&&this.getLevelAtTime(n)>.05){let e=this.toSeconds(this.portamento);this.frequency.exponentialRampTo(r,e,n)}else this.frequency.setValueAtTime(r,n);return this}};us([ol(0)],dl.prototype,`portamento`,void 0);var fl=class e extends cl{constructor(){super(B(e.getDefaults(),arguments,[`attack`,`decay`,`sustain`,`release`])),this.name=`AmplitudeEnvelope`,this._gainNode=new bc({context:this.context,gain:0}),this.output=this._gainNode,this.input=this._gainNode,this._sig.connect(this._gainNode.gain),this.output=this._gainNode,this.input=this._gainNode}dispose(){return super.dispose(),this._gainNode.dispose(),this}},pl=class e extends dl{constructor(){let t=B(e.getDefaults(),arguments);super(t),this.name=`Synth`,this.oscillator=new il(Object.assign({context:this.context,detune:t.detune,onstop:()=>this.onsilence(this)},t.oscillator)),this.frequency=this.oscillator.frequency,this.detune=this.oscillator.detune,this.envelope=new fl(Object.assign({context:this.context},t.envelope)),this.oscillator.chain(this.envelope,this.output),Hs(this,[`oscillator`,`frequency`,`detune`,`envelope`])}static getDefaults(){return Object.assign(dl.getDefaults(),{envelope:Object.assign(Cs(cl.getDefaults(),Object.keys(V.getDefaults())),{attack:.005,decay:.1,release:1,sustain:.3}),oscillator:Object.assign(Cs(il.getDefaults(),[...Object.keys(Gc.getDefaults()),`frequency`,`detune`]),{type:`triangle`})})}_triggerEnvelopeAttack(e,t){if(this.envelope.triggerAttack(e,t),this.oscillator.start(e),this.envelope.sustain===0){let t=this.toSeconds(this.envelope.attack),n=this.toSeconds(this.envelope.decay);this.oscillator.stop(e+t+n)}}_triggerEnvelopeRelease(e){this.envelope.triggerRelease(e),this.oscillator.stop(e+this.toSeconds(this.envelope.release))}getLevelAtTime(e){return e=this.toSeconds(e),this.envelope.getValueAtTime(e)}dispose(){return super.dispose(),this.oscillator.dispose(),this.envelope.dispose(),this}},ml=class e extends pl{constructor(){let t=B(e.getDefaults(),arguments);super(t),this.name=`MembraneSynth`,this.portamento=0,this.pitchDecay=t.pitchDecay,this.octaves=t.octaves,Hs(this,[`oscillator`,`envelope`])}static getDefaults(){return ys(dl.getDefaults(),pl.getDefaults(),{envelope:{attack:.001,attackCurve:`exponential`,decay:.4,release:1.4,sustain:.01},octaves:10,oscillator:{type:`sine`},pitchDecay:.05})}setNote(e,t){let n=this.toSeconds(t),r=this.toFrequency(e instanceof lc?e.toFrequency():e),i=r*this.octaves;return this.oscillator.frequency.setValueAtTime(i,n),this.oscillator.frequency.exponentialRampToValueAtTime(r,n+this.toSeconds(this.pitchDecay)),this}dispose(){return super.dispose(),this}};us([al(0)],ml.prototype,`octaves`,void 0),us([ol(0)],ml.prototype,`pitchDecay`,void 0);var hl=new Set;function gl(e){hl.add(e)}function _l(e,t){let n=`registerProcessor("${e}", ${t})`;hl.add(n)}gl(` + /** + * The base AudioWorkletProcessor for use in Tone.js. Works with the {@link ToneAudioWorklet}. + */ + class ToneAudioWorkletProcessor extends AudioWorkletProcessor { + + constructor(options) { + + super(options); + /** + * If the processor was disposed or not. Keep alive until it's disposed. + */ + this.disposed = false; + /** + * The number of samples in the processing block + */ + this.blockSize = 128; + /** + * the sample rate + */ + this.sampleRate = sampleRate; + + this.port.onmessage = (event) => { + // when it receives a dispose + if (event.data === "dispose") { + this.disposed = true; + } + }; + } + } +`),gl(` + /** + * Abstract class for a single input/output processor. + * has a 'generate' function which processes one sample at a time + */ + class SingleIOProcessor extends ToneAudioWorkletProcessor { + + constructor(options) { + super(Object.assign(options, { + numberOfInputs: 1, + numberOfOutputs: 1 + })); + /** + * Holds the name of the parameter and a single value of that + * parameter at the current sample + * @type { [name: string]: number } + */ + this.params = {} + } + + /** + * Generate an output sample from the input sample and parameters + * @abstract + * @param input number + * @param channel number + * @param parameters { [name: string]: number } + * @returns number + */ + generate(){} + + /** + * Update the private params object with the + * values of the parameters at the given index + * @param parameters { [name: string]: Float32Array }, + * @param index number + */ + updateParams(parameters, index) { + for (const paramName in parameters) { + const param = parameters[paramName]; + if (param.length > 1) { + this.params[paramName] = parameters[paramName][index]; + } else { + this.params[paramName] = parameters[paramName][0]; + } + } + } + + /** + * Process a single frame of the audio + * @param inputs Float32Array[][] + * @param outputs Float32Array[][] + */ + process(inputs, outputs, parameters) { + const input = inputs[0]; + const output = outputs[0]; + // get the parameter values + const channelCount = Math.max(input && input.length || 0, output.length); + for (let sample = 0; sample < this.blockSize; sample++) { + this.updateParams(parameters, sample); + for (let channel = 0; channel < channelCount; channel++) { + const inputSample = input && input.length ? input[channel][sample] : 0; + output[channel][sample] = this.generate(inputSample, channel, this.params); + } + } + return !this.disposed; + } + }; +`),gl(` + /** + * A multichannel buffer for use within an AudioWorkletProcessor as a delay line + */ + class DelayLine { + + constructor(size, channels) { + this.buffer = []; + this.writeHead = [] + this.size = size; + + // create the empty channels + for (let i = 0; i < channels; i++) { + this.buffer[i] = new Float32Array(this.size); + this.writeHead[i] = 0; + } + } + + /** + * Push a value onto the end + * @param channel number + * @param value number + */ + push(channel, value) { + this.writeHead[channel] += 1; + if (this.writeHead[channel] > this.size) { + this.writeHead[channel] = 0; + } + this.buffer[channel][this.writeHead[channel]] = value; + } + + /** + * Get the recorded value of the channel given the delay + * @param channel number + * @param delay number delay samples + */ + get(channel, delay) { + let readHead = this.writeHead[channel] - Math.floor(delay); + if (readHead < 0) { + readHead += this.size; + } + return this.buffer[channel][readHead]; + } + } +`),_l(`feedback-comb-filter`,` + class FeedbackCombFilterWorklet extends SingleIOProcessor { + + constructor(options) { + super(options); + this.delayLine = new DelayLine(this.sampleRate, options.channelCount || 2); + } + + static get parameterDescriptors() { + return [{ + name: "delayTime", + defaultValue: 0.1, + minValue: 0, + maxValue: 1, + automationRate: "k-rate" + }, { + name: "feedback", + defaultValue: 0.5, + minValue: 0, + maxValue: 0.9999, + automationRate: "k-rate" + }]; + } + + generate(input, channel, parameters) { + const delayedSample = this.delayLine.get(channel, parameters.delayTime * this.sampleRate); + this.delayLine.push(channel, input + delayedSample * parameters.feedback); + return delayedSample; + } + } +`);var vl=class e extends ul{constructor(){let t=B(e.getDefaults(),arguments,[`voice`,`options`]);super(t),this.name=`PolySynth`,this._availableVoices=[],this._activeVoices=[],this._voices=[],this._gcTimeout=-1,this._averageActiveVoices=0,this._syncedRelease=e=>this.releaseAll(e),z(!Wo(t.voice),`DEPRECATED: The polyphony count is no longer the first argument.`);let n=t.voice.getDefaults();this.options=Object.assign(n,t.options),this.voice=t.voice,this.maxPolyphony=t.maxPolyphony,this._dummyVoice=this._getNextAvailableVoice();let r=this._voices.indexOf(this._dummyVoice);this._voices.splice(r,1),this._gcTimeout=this.context.setInterval(this._collectGarbage.bind(this),1)}static getDefaults(){return Object.assign(ul.getDefaults(),{maxPolyphony:32,options:{},voice:pl})}get activeVoices(){return this._activeVoices.length}_makeVoiceAvailable(e){this._availableVoices.push(e);let t=this._activeVoices.findIndex(t=>t.voice===e);this._activeVoices.splice(t,1)}_getNextAvailableVoice(){if(this._availableVoices.length)return this._availableVoices.shift();if(this._voices.lengthMath.ceil(this._averageActiveVoices+1)){let e=this._availableVoices.shift(),t=this._voices.indexOf(e);this._voices.splice(t,1),this.context.isOffline||e.dispose()}}_triggerAttack(e,t,n){e.forEach(e=>{let r=new Nc(this.context,e).toMidi(),i=this._getNextAvailableVoice();i&&(i.triggerAttack(e,t,n),this._activeVoices.push({midi:r,voice:i,released:!1}),this.log(`triggerAttack`,e,t))})}_triggerRelease(e,t){e.forEach(e=>{let n=new Nc(this.context,e).toMidi(),r=this._activeVoices.find(({midi:e,released:t})=>e===n&&!t);r&&(r.voice.triggerRelease(t),r.released=!0,this.log(`triggerRelease`,e,t))})}_scheduleEvent(e,t,n,r){z(!this.disposed,`Synth was already disposed`),n<=this.now()?e===`attack`?this._triggerAttack(t,n,r):this._triggerRelease(t,n):this.context.setTimeout(()=>{this.disposed||this._scheduleEvent(e,t,n,r)},n-this.now())}triggerAttack(e,t,n){Array.isArray(e)||(e=[e]);let r=this.toSeconds(t);return this._scheduleEvent(`attack`,e,r,n),this}triggerRelease(e,t){Array.isArray(e)||(e=[e]);let n=this.toSeconds(t);return this._scheduleEvent(`release`,e,n),this}triggerAttackRelease(e,t,n,r){let i=this.toSeconds(n);if(this.triggerAttack(e,i,r),qo(t)){z(qo(e),`If the duration is an array, the notes must also be an array`),e=e;for(let n=0;n0,`The duration must be greater than 0`),this.triggerRelease(e[n],i+a)}}else{let n=this.toSeconds(t);z(n>0,`The duration must be greater than 0`),this.triggerRelease(e,i+n)}return this}sync(){return this._syncState()&&(this._syncMethod(`triggerAttack`,1),this._syncMethod(`triggerRelease`,1),this.context.transport.on(`stop`,this._syncedRelease),this.context.transport.on(`pause`,this._syncedRelease),this.context.transport.on(`loopEnd`,this._syncedRelease)),this}set(e){let t=Cs(e,[`onsilence`,`context`]);return this.options=ys(this.options,t),this._voices.forEach(e=>e.set(t)),this._dummyVoice.set(t),this}get(){return this._dummyVoice.get()}releaseAll(e){let t=this.toSeconds(e);return this._activeVoices.forEach(({voice:e})=>{e.triggerRelease(t)}),this}dispose(){return super.dispose(),this._dummyVoice.dispose(),this._voices.forEach(e=>e.dispose()),this._activeVoices=[],this._availableVoices=[],this.context.clearInterval(this._gcTimeout),this}},yl=class e extends ul{constructor(){let t=B(e.getDefaults(),arguments,[`urls`,`onload`,`baseUrl`],`urls`);super(t),this.name=`Sampler`,this._activeSources=new Map;let n={};Object.keys(t.urls).forEach(e=>{let r=parseInt(e,10);if(z(Yo(e)||Wo(r)&&isFinite(r),`url key is neither a note or midi pitch: ${e}`),Yo(e)){let r=new lc(this.context,e).toMidi();n[r]=t.urls[e]}else Wo(r)&&isFinite(r)&&(n[r]=t.urls[r])}),this._buffers=new Mc({urls:n,onload:t.onload,baseUrl:t.baseUrl,onerror:t.onerror}),this.attack=t.attack,this.release=t.release,this.curve=t.curve,this._buffers.loaded&&Promise.resolve().then(t.onload)}static getDefaults(){return Object.assign(ul.getDefaults(),{attack:0,baseUrl:``,curve:`exponential`,onload:Ws,onerror:Ws,release:.1,urls:{}})}_findClosest(e){let t=0;for(;t<96;){if(this._buffers.has(e+t))return-t;if(this._buffers.has(e-t))return t;t++}throw Error(`No available buffers for note: ${e}`)}triggerAttack(e,t,n=1){return this.log(`triggerAttack`,e,t,n),Array.isArray(e)||(e=[e]),e.forEach(e=>{let r=ac(new lc(this.context,e).toFrequency()),i=Math.round(r),a=r-i,o=this._findClosest(i),s=i-o,c=this._buffers.get(s),l=ec(o+a),u=new Kc({url:c,context:this.context,curve:this.curve,fadeIn:this.attack,fadeOut:this.release,playbackRate:l}).connect(this.output);u.start(t,0,c.duration/l,n),qo(this._activeSources.get(i))||this._activeSources.set(i,[]),this._activeSources.get(i).push(u),u.onended=()=>{if(this._activeSources&&this._activeSources.has(i)){let e=this._activeSources.get(i),t=e.indexOf(u);t!==-1&&e.splice(t,1)}}}),this}triggerRelease(e,t){return this.log(`triggerRelease`,e,t),Array.isArray(e)||(e=[e]),e.forEach(e=>{let n=new lc(this.context,e).toMidi();if(this._activeSources.has(n)&&this._activeSources.get(n).length){let e=this._activeSources.get(n);t=this.toSeconds(t),e.forEach(e=>{e.stop(t)}),this._activeSources.set(n,[])}}),this}releaseAll(e){let t=this.toSeconds(e);return this._activeSources.forEach(e=>{for(;e.length;)e.shift().stop(t)}),this}sync(){return this._syncState()&&(this._syncMethod(`triggerAttack`,1),this._syncMethod(`triggerRelease`,1)),this}triggerAttackRelease(e,t,n,r=1){let i=this.toSeconds(n);return this.triggerAttack(e,i,r),qo(t)?(z(qo(e),`notes must be an array when duration is array`),e.forEach((e,n)=>{let r=t[Math.min(n,t.length-1)];this.triggerRelease(e,i+this.toSeconds(r))})):this.triggerRelease(e,i+this.toSeconds(t)),this}add(e,t,n){if(z(Yo(e)||isFinite(e),`note must be a pitch or midi: ${e}`),Yo(e)){let r=new lc(this.context,e).toMidi();this._buffers.add(r,t,n)}else this._buffers.add(e,t,n);return this}get loaded(){return this._buffers.loaded}dispose(){return super.dispose(),this._buffers.dispose(),this._activeSources.forEach(e=>{e.forEach(e=>e.dispose())}),this._activeSources.clear(),this}};us([ol(0)],yl.prototype,`attack`,void 0),us([ol(0)],yl.prototype,`release`,void 0);var bl=class e extends V{constructor(){let t=B(e.getDefaults(),arguments,[`pan`]);super(t),this.name=`Panner`,this._panner=this.context.createStereoPanner(),this.input=this._panner,this.output=this._panner,this.pan=new gc({context:this.context,param:this._panner.pan,value:t.pan,minValue:-1,maxValue:1}),this._panner.channelCount=t.channelCount,this._panner.channelCountMode=`explicit`,Hs(this,`pan`)}static getDefaults(){return Object.assign(V.getDefaults(),{pan:0,channelCount:1})}dispose(){return super.dispose(),this._panner.disconnect(),this.pan.dispose(),this}};_l(`bit-crusher`,` + class BitCrusherWorklet extends SingleIOProcessor { + + static get parameterDescriptors() { + return [{ + name: "bits", + defaultValue: 12, + minValue: 1, + maxValue: 16, + automationRate: 'k-rate' + }]; + } + + generate(input, _channel, parameters) { + const step = Math.pow(0.5, parameters.bits - 1); + const val = step * Math.floor(input / step + 0.5); + return val; + } + } +`);var xl=class e extends V{constructor(){let t=B(e.getDefaults(),arguments,[`solo`]);super(t),this.name=`Solo`,this.input=this.output=new bc({context:this.context}),e._allSolos.has(this.context)||e._allSolos.set(this.context,new Set),e._allSolos.get(this.context).add(this),this.solo=t.solo}static getDefaults(){return Object.assign(V.getDefaults(),{solo:!1})}get solo(){return this._isSoloed()}set solo(t){t?this._addSolo():this._removeSolo(),e._allSolos.get(this.context).forEach(e=>e._updateSolo())}get muted(){return this.input.gain.value===0}_addSolo(){e._soloed.has(this.context)||e._soloed.set(this.context,new Set),e._soloed.get(this.context).add(this)}_removeSolo(){e._soloed.has(this.context)&&e._soloed.get(this.context).delete(this)}_isSoloed(){return e._soloed.has(this.context)&&e._soloed.get(this.context).has(this)}_noSolos(){return!e._soloed.has(this.context)||e._soloed.has(this.context)&&e._soloed.get(this.context).size===0}_updateSolo(){this._isSoloed()||this._noSolos()?this.input.gain.value=1:this.input.gain.value=0}dispose(){return super.dispose(),e._allSolos.get(this.context).delete(this),this._removeSolo(),this}};xl._allSolos=new Map,xl._soloed=new Map;var Sl=class e extends V{constructor(){let t=B(e.getDefaults(),arguments,[`pan`,`volume`]);super(t),this.name=`PanVol`,this._panner=this.input=new bl({context:this.context,pan:t.pan,channelCount:t.channelCount}),this.pan=this._panner.pan,this._volume=this.output=new kc({context:this.context,volume:t.volume}),this.volume=this._volume.volume,this._panner.connect(this._volume),this.mute=t.mute,Hs(this,[`pan`,`volume`])}static getDefaults(){return Object.assign(V.getDefaults(),{mute:!1,pan:0,volume:0,channelCount:1})}get mute(){return this._volume.mute}set mute(e){this._volume.mute=e}dispose(){return super.dispose(),this._panner.dispose(),this.pan.dispose(),this._volume.dispose(),this.volume.dispose(),this}},Cl=class e extends V{constructor(){let t=B(e.getDefaults(),arguments,[`volume`,`pan`]);super(t),this.name=`Channel`,this._solo=this.input=new xl({solo:t.solo,context:this.context}),this._panVol=this.output=new Sl({context:this.context,pan:t.pan,volume:t.volume,mute:t.mute,channelCount:t.channelCount}),this.pan=this._panVol.pan,this.volume=this._panVol.volume,this._solo.connect(this._panVol),Hs(this,[`pan`,`volume`])}static getDefaults(){return Object.assign(V.getDefaults(),{pan:0,volume:0,mute:!1,solo:!1,channelCount:1})}get solo(){return this._solo.solo}set solo(e){this._solo.solo=e}get muted(){return this._solo.muted||this.mute}get mute(){return this._panVol.mute}set mute(e){this._panVol.mute=e}_getBus(t){return e.buses.has(t)||e.buses.set(t,new bc({context:this.context})),e.buses.get(t)}send(e,t=0){let n=this._getBus(e),r=new bc({context:this.context,units:`decibels`,gain:t});return this.connect(r),r.connect(n),r}receive(e){return this._getBus(e).connect(this),this}dispose(){return super.dispose(),this._panVol.dispose(),this.pan.dispose(),this.volume.dispose(),this._solo.dispose(),this}};Cl.buses=new Map,Ys().transport;function wl(){return Ys().transport}Ys().destination,Ys().destination,Ys().listener,Ys().draw,Ys();function Tl(e,t,n=0){let r=0;for(let i=0;i>>0}function El(e,t){let n=Dl(e,t,e.currentIndex);return e.currentIndex+=t,n}function Dl(e,t,n=0){let r=0n;for(let i=0;i>>0}function kl(e,t,n){for(let r=0;r>r*8&255}function U(e,t){e[e.currentIndex++]=t&255,e[e.currentIndex++]=t>>8}function W(e,t){kl(e,t,4)}function Al(e,t){let n=BigInt(t);for(let t=0n;t<8n;t++)e[e.currentIndex++]=Number(n>>t*8n&255n)}function jl(e,t){let n=t<<8|e;return n>32767?n-65536:n}var Ml=class extends Uint8Array{currentIndex=0;slice(e,t){let n=super.slice(e,t);return n.currentIndex=0,n}};function Nl(e,t=e.length,n=0){let r=``;for(let i=0;i0&&t.length>n&&(t=t.slice(0,n));for(let n=0;nt.length)for(let r=0;r>7!=1)break}return t}function Rl(e){let t=``;for(let n=0;n{var e=Uint8Array,t=Uint16Array,n=Int32Array,r=new e([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),i=new e([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),a=new e([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),o=function(e,r){for(var i=new t(31),a=0;a<31;++a)i[a]=r+=1<>1|(m&21845)<<1,p=(p&52428)>>2|(p&13107)<<2,p=(p&61680)>>4|(p&3855)<<4,f[m]=((p&65280)>>8|(p&255)<<8)>>1;var p,m,h=function(e,n,r){for(var i=e.length,a=0,o=new t(n);a>l]=u}else for(c=new t(i),a=0;a>15-e[a]);return c},g=new e(288);for(m=0;m<144;++m)g[m]=8;var m;for(m=144;m<256;++m)g[m]=9;var m;for(m=256;m<280;++m)g[m]=7;var m;for(m=280;m<288;++m)g[m]=8;var m,_=new e(32);for(m=0;m<32;++m)_[m]=5;var m,v=h(g,9,1),y=h(_,5,1),b=function(e){for(var t=e[0],n=1;nt&&(t=e[n]);return t},x=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},S=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},C=function(e){return(e+7)/8|0},w=function(t,n,r){return(n==null||n<0)&&(n=0),(r==null||r>t.length)&&(r=t.length),new e(t.subarray(n,r))},T=[`unexpected EOF`,`invalid block type`,`invalid length/literal`,`invalid distance`,`stream finished`,`no stream handler`,,`no callback`,`invalid UTF-8 data`,`extra field too long`,`date not in range 1980-2099`,`filename too long`,`stream finishing`,`invalid zip data`],E=function(e,t,n){var r=Error(t||T[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,E),!n)throw r;return r},D=function(t,n,o,s){var l=t.length,u=s?s.length:0;if(!l||n.f&&!n.l)return o||new e(0);var f=!o,p=f||n.i!=2,m=n.i;f&&(o=new e(l*3));var g=function(t){var n=o.length;if(t>n){var r=new e(Math.max(n*2,t));r.set(o),o=r}},_=n.f||0,T=n.p||0,D=n.b||0,O=n.l,ee=n.d,te=n.m,ne=n.n,re=l*8;do{if(!O){_=x(t,T,1);var ie=x(t,T+1,3);if(T+=3,ie)if(ie==1)O=v,ee=y,te=9,ne=5;else if(ie==2){var ae=x(t,T,31)+257,oe=x(t,T+10,15)+4,k=ae+x(t,T+5,31)+1;T+=14;for(var A=new e(k),se=new e(19),ce=0;ce>4;if(P<16)A[ce++]=P;else{var ue=0,de=0;for(P==16?(de=3+x(t,T,3),T+=2,ue=A[ce-1]):P==17?(de=3+x(t,T,7),T+=3):P==18&&(de=11+x(t,T,127),T+=7);de--;)A[ce++]=ue}}var fe=A.subarray(0,ae),pe=A.subarray(ae);te=b(fe),ne=b(pe),O=h(fe,te,1),ee=h(pe,ne,1)}else E(1);else{var P=C(T)+4,me=t[P-4]|t[P-3]<<8,he=P+me;if(he>l){m&&E(0);break}p&&g(D+me),o.set(t.subarray(P,he),D),n.b=D+=me,n.p=T=he*8,n.f=_;continue}if(T>re){m&&E(0);break}}p&&g(D+131072);for(var ge=(1<>4;if(T+=ue&15,T>re){m&&E(0);break}if(ue||E(2),ye<256)o[D++]=ye;else if(ye==256){ve=T,O=null;break}else{var be=ye-254;if(ye>264){var ce=ye-257,xe=r[ce];be=x(t,T,(1<>4;Se||E(3),T+=Se&15;var pe=d[Ce];if(Ce>3){var xe=i[Ce];pe+=S(t,T)&(1<re){m&&E(0);break}p&&g(D+131072);var we=D+be;if(Dt.length+e,0);r&&(a+=4,i=`LIST`);let o;n?(o=new Ml(8),Al(o,a)):(o=new Ml(4),W(o,a));let s=[Fl(i),o];return r&&s.push(Fl(e)),s.push(...t),a%2!=0&&s.push(new Uint8Array(1)),s}static writeParts(e,t,n=!1,r=!1){let i=n?12:8,a=e,o=t.reduce((e,t)=>t.length+e,0),s=o;r&&(i+=4,s+=4,a=`LIST`);let c=i+o;c%2!=0&&c++;let l=new Ml(c);Il(l,a),n?Al(l,s):W(l,s),r&&Il(l,e);for(let e of t)l.set(e,i),i+=e.length;return l}static findListType(e,t){return e.find(e=>e.header===`LIST`?(e.data.currentIndex=4,Nl(e.data,4)===t):!1)}};function q(e,t){return{...t,...e}}var J=class e{static infoEnabled=!1;static warnEnabled=!0;static groupEnabled=!1;static setLogLevel(e,t,n){this.infoEnabled=e,this.warnEnabled=t,this.groupEnabled=n}static info(...e){this.infoEnabled&&console.info(...e)}static warn(...e){this.warnEnabled&&console.warn(...e)}static group(...e){this.groupEnabled&&console.group(...e)}static groupCollapsed(...e){this.groupEnabled&&console.groupCollapsed(...e)}static groupEnd(){this.groupEnabled&&console.groupEnd()}static unsupported(e,t,n=``){this.infoEnabled&&this.info(`%cUnsupported %c${e}%c message: %c${Rl(t)}%c. ${n}`,G.warn,G.recognized,G.warn,G.unrecognized,G.warn)}static gmInfo(e,t,n=``){this.infoEnabled&&this.coolInfo(`General MIDI ${e}`,t,n)}static gmFail(e,t){this.infoEnabled&&this.unsupported(`General MIDI ${e}`,t)}static gsInfo(e,t,n=``){this.infoEnabled&&this.coolInfo(`Roland GS ${e}`,t,n)}static gsFail(e,t,n=``){this.infoEnabled&&this.unsupported(`Roland GS ${e}`,t,n)}static xgInfo(e,t,n=``){this.infoEnabled&&this.coolInfo(`Yamaha XG ${e}`,t,n)}static xgFail(e,t,n=``){this.infoEnabled&&this.unsupported(`Yamaha XG ${e}`,t,n)}static coolInfo(t,n,r=``){this.infoEnabled&&(r?e.info(`%c${t}%c is now set to %c${n}%c ${r}.`,G.recognized,G.info,G.value,G.info):e.info(`%c${t}%c is now set to %c${n}%c.`,G.recognized,G.info,G.value,G.info))}},Vl={ConsoleColors:G,readBigEndian:Tl,readLittleEndian:Ol,readLittleEndianIndexed:H,readBinaryString:Nl,readBinaryStringIndexed:Pl,readVariableLengthQuantity:Ll,inflateSync:Bl},Hl={noteOff:128,noteOn:144,polyPressure:160,controllerChange:176,programChange:192,channelPressure:208,pitchWheel:224,systemExclusive:240,timecode:241,songPosition:242,songSelect:243,tuneRequest:246,clock:248,start:250,continue:251,stop:252,activeSensing:254,reset:255,sequenceNumber:0,text:1,copyright:2,trackName:3,instrumentName:4,lyric:5,marker:6,cuePoint:7,programName:8,midiChannelPrefix:32,midiPort:33,endOfTrack:47,setTempo:81,smpteOffset:84,timeSignature:88,keySignature:89,sequenceSpecific:127},Y={bankSelect:0,modulationWheel:1,breathController:2,undefinedCC3:3,footController:4,portamentoTime:5,dataEntryMSB:6,mainVolume:7,balance:8,undefinedCC9:9,pan:10,expression:11,effectControl1:12,effectControl2:13,undefinedCC14:14,undefinedCC15:15,generalPurposeController1:16,generalPurposeController2:17,generalPurposeController3:18,generalPurposeController4:19,undefinedCC20:20,undefinedCC21:21,undefinedCC22:22,undefinedCC23:23,undefinedCC24:24,undefinedCC25:25,undefinedCC26:26,undefinedCC27:27,undefinedCC28:28,undefinedCC29:29,undefinedCC30:30,undefinedCC31:31,bankSelectLSB:32,modulationWheelLSB:33,breathControllerLSB:34,undefinedCC3LSB:35,footControllerLSB:36,portamentoTimeLSB:37,dataEntryLSB:38,mainVolumeLSB:39,balanceLSB:40,undefinedCC9LSB:41,panLSB:42,expressionLSB:43,effectControl1LSB:44,effectControl2LSB:45,undefinedCC14LSB:46,undefinedCC15LSB:47,undefinedCC16LSB:48,undefinedCC17LSB:49,undefinedCC18LSB:50,undefinedCC19LSB:51,undefinedCC20LSB:52,undefinedCC21LSB:53,undefinedCC22LSB:54,undefinedCC23LSB:55,undefinedCC24LSB:56,undefinedCC25LSB:57,undefinedCC26LSB:58,undefinedCC27LSB:59,undefinedCC28LSB:60,undefinedCC29LSB:61,undefinedCC30LSB:62,undefinedCC31LSB:63,sustainPedal:64,portamentoOnOff:65,sostenutoPedal:66,softPedal:67,legatoFootswitch:68,hold2Pedal:69,soundVariation:70,filterResonance:71,releaseTime:72,attackTime:73,brightness:74,decayTime:75,vibratoRate:76,vibratoDepth:77,vibratoDelay:78,soundController10:79,generalPurposeController5:80,generalPurposeController6:81,generalPurposeController7:82,generalPurposeController8:83,portamentoControl:84,undefinedCC85:85,undefinedCC86:86,undefinedCC87:87,undefinedCC88:88,undefinedCC89:89,undefinedCC90:90,reverbDepth:91,tremoloDepth:92,chorusDepth:93,variationDepth:94,phaserDepth:95,dataIncrement:96,dataDecrement:97,nonRegisteredParameterLSB:98,nonRegisteredParameterMSB:99,registeredParameterLSB:100,registeredParameterMSB:101,undefinedCC102LSB:102,undefinedCC103LSB:103,undefinedCC104LSB:104,undefinedCC105LSB:105,undefinedCC106LSB:106,undefinedCC107LSB:107,undefinedCC108LSB:108,undefinedCC109LSB:109,undefinedCC110LSB:110,undefinedCC111LSB:111,undefinedCC112LSB:112,undefinedCC113LSB:113,undefinedCC114LSB:114,undefinedCC115LSB:115,undefinedCC116LSB:116,undefinedCC117LSB:117,undefinedCC118LSB:118,undefinedCC119LSB:119,allSoundOff:120,resetAllControllers:121,localControlOnOff:122,allNotesOff:123,omniModeOff:124,omniModeOn:125,monoModeOn:126,polyModeOn:127};`${Math.random()}`,1/Math.cos(Math.PI/4)**2;var Ul=121,Wl=class{static getDefaultBank(e){return e===`gm2`?Ul:0}static getDrumBank(e){switch(e){default:throw Error(`${e} doesn't have a bank MSB for drums.`);case`gm2`:return 120;case`xg`:return 127}}static isXGDrum(e){return e===120||e===127}static isValidXGMSB(e){return this.isXGDrum(e)||e===64||e===Ul}static isSystemXG(e){return e===`gm2`||e===`xg`}static addBankOffset(e,t,n){return this.isXGDrum(e)&&n?e:Math.min(e+t,127)}static subtractBankOffset(e,t,n){return this.isXGDrum(e)&&n?e:Math.max(0,e-t)}},Gl=class e{static toMIDIString(e){return e.isGMGSDrum?`DRUM:${e.program}`:`${e.bankLSB}:${e.bankMSB}:${e.program}`}static fromMIDIString(e){let t=e.split(`:`);if(t.length>3||t.length<2)throw Error(`Invalid MIDI string: ${e}`);return e.startsWith(`DRUM`)?{bankMSB:0,bankLSB:0,program:Number.parseInt(t[1]),isGMGSDrum:!0}:{bankLSB:Number.parseInt(t[0]),bankMSB:Number.parseInt(t[1]),program:Number.parseInt(t[2]),isGMGSDrum:!1}}static toFullMIDIString(e){return`${this.toMIDIString(e)} ${e.isDrum?`D`:`M`} ${e.name}`}static fromFullMIDIString(t){let n=t.indexOf(` `),r=t.indexOf(` `,n+1);if(n===-1||r===-1)throw Error(`Invalid named MIDI string: ${t}`);let i=t.slice(0,Math.max(0,n)),a=t.slice(n+1,r),o=t.slice(Math.max(0,r+1));return{...e.fromMIDIString(i),isDrum:a===`D`,name:o}}static matches(e,t){return e.isGMGSDrum||t.isGMGSDrum?e.isGMGSDrum===t.isGMGSDrum&&e.program===t.program:e.program===t.program&&e.bankLSB===t.bankLSB&&e.bankMSB===t.bankMSB}static compare(e,t){return e.isGMGSDrum&&!t.isGMGSDrum?1:!e.isGMGSDrum&&t.isGMGSDrum?-1:e.program===t.program?e.bankMSB===t.bankMSB?e.bankLSB-t.bankLSB:e.bankMSB-t.bankMSB:e.program-t.program}static isXGDrum(e){return e.isDrum&&!e.isGMGSDrum}static selectPatch(t,n,r){if(t.length===0)throw Error(`No presets!`);n.isGMGSDrum&&Wl.isSystemXG(r)&&(n={...n,isGMGSDrum:!1,bankLSB:0,bankMSB:Wl.getDrumBank(r)});let{isGMGSDrum:i,bankLSB:a,bankMSB:o,program:s}=n,c=Wl.isSystemXG(r),l=Wl.isXGDrum(o)&&c,u=t.find(e=>this.matches(e,n));if(u&&(!l||l&&this.isXGDrum(u)))return u;let d=t=>{J.info(`%cPreset %c${e.toMIDIString(n)}%c not found. (${r}) Replaced with %c${this.toFullMIDIString(t)}`,G.warn,G.unrecognized,G.warn,G.value)};if(i){let e=t.find(e=>e.isGMGSDrum&&e.program===s);return e||(e=t.find(e=>e.isDrum&&e.program===s),e)?(d(e),e):(e=this.getAnyDrums(t,!1),d(e),e)}if(l){let e=t.find(e=>e.program===s&&e.isDrum&&!e.isGMGSDrum);return e||(e=t.find(e=>e.isDrum&&e.program===s),e&&e.program<49)?(d(e),e):(e=this.getAnyDrums(t,!0),d(e),e)}let f=t.filter(e=>e.program===s&&!e.isDrum);if(f.length===0)return d(t[0]),t[0];if(u=c?f.find(e=>e.bankLSB===a):f.find(e=>e.bankMSB===o),u)return d(u),u;if(a!==64||!c){let e=Math.max(o,a);if(u=f.find(t=>t.bankLSB===e||t.bankMSB===e),u)return d(u),u}return d(f[0]),f[0]}static getAnyDrums(e,t){return(t?e.find(e=>this.isXGDrum(e)):e.find(e=>e.isGMGSDrum))||(e.find(e=>e.isDrum)??e[0])}};Object.freeze({type:`Other`});function Kl(e){return e.toISOString().split(`.`)[0]+`Z`}var ql=[new Map([[`domingo`,`Sunday`],[`segunda-feira`,`Monday`],[`terça-feira`,`Tuesday`],[`quarta-feira`,`Wednesday`],[`quinta-feira`,`Thursday`],[`sexta-feira`,`Friday`],[`sábado`,`Saturday`],[`janeiro`,`January`],[`fevereiro`,`February`],[`março`,`March`],[`abril`,`April`],[`maio`,`May`],[`junho`,`June`],[`julho`,`July`],[`agosto`,`August`],[`setembro`,`September`],[`outubro`,`October`],[`novembro`,`November`],[`dezembro`,`December`]])];function Jl(e){for(let t of ql){let n=e;for(let[e,r]of t.entries()){let t=new RegExp(e,`gi`);n=n.replace(t,r)}let r=new Date(n);if(!Number.isNaN(r.getTime()))return r}}function Yl(e){let t=/^(\d{2})\.(\d{2})\.(\d{4})$/.exec(e);if(t){let e=Number.parseInt(t[1]),n=Number.parseInt(t[2])-1,r=Number.parseInt(t[3]),i=new Date(r,n,e);if(!Number.isNaN(i.getTime()))return i}}function Xl(e){let t=/^(\d{1,2})\s{1,2}(\d{1,2})\s{1,2}(\d{2})$/.exec(e);if(t){let e=t[1],n=(Number.parseInt(t[2])+1).toString(),r=t[3],i=new Date(`${n}/${e}/${r}`);if(!Number.isNaN(i.getTime()))return i}}function Zl(e){let t=/\b\d{4}\b/.exec(e);return t?new Date(t[0]):void 0}function Ql(e){if(e=e.trim(),e.length===0)return new Date;let t=e.replaceAll(/\b(\d+)(st|nd|rd|th)\b/g,`$1`).replace(/\s+at\s+/i,` `),n=new Date(t);return Number.isNaN(n.getTime())?Jl(e)||Yl(e)||Xl(e)||Zl(e)||(J.warn(`Invalid date: "${e}". Replacing with the current date!`),new Date):n}var $l=new Int16Array(128).fill(0),eu=(e,t)=>$l[e]=t<<7;eu(Y.mainVolume,100),eu(Y.balance,64),eu(Y.expression,127),eu(Y.pan,64),eu(Y.filterResonance,64),eu(Y.releaseTime,64),eu(Y.attackTime,64),eu(Y.brightness,64),eu(Y.decayTime,64),eu(Y.vibratoRate,64),eu(Y.vibratoDepth,64),eu(Y.vibratoDelay,64),eu(Y.generalPurposeController6,64),eu(Y.generalPurposeController8,64),eu(Y.registeredParameterLSB,127),eu(Y.registeredParameterMSB,127),eu(Y.nonRegisteredParameterLSB,0),eu(Y.nonRegisteredParameterMSB,0);var tu=new Int8Array(128).fill(127);tu[35]=0,tu[36]=0,Y.modulationWheel,Y.expression,Y.sustainPedal,Y.portamentoOnOff,Y.sostenutoPedal,Y.softPedal,Y.registeredParameterMSB,Y.registeredParameterLSB,new Set([Y.dataDecrement,Y.dataIncrement,Y.dataEntryMSB,Y.dataEntryLSB,Y.registeredParameterLSB,Y.registeredParameterMSB,Y.nonRegisteredParameterLSB,Y.nonRegisteredParameterMSB,Y.bankSelect,Y.bankSelectLSB,Y.resetAllControllers,Y.monoModeOn,Y.polyModeOn]);var nu={linear:0,nearestNeighbor:1,hermite:2},ru=ru===void 0?{}:ru,iu=!1,au;ru.isInitialized=new Promise(e=>au=e);var ou=function(e){var t,n,r,i,a,o,s,c=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=`,l=``,u=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,``);do i=c.indexOf(e.charAt(u++)),a=c.indexOf(e.charAt(u++)),o=c.indexOf(e.charAt(u++)),s=c.indexOf(e.charAt(u++)),t=i<<2|a>>4,n=(15&a)<<4|o>>2,r=(3&o)<<6|s,l+=String.fromCharCode(t),o!==64&&(l+=String.fromCharCode(n)),s!==64&&(l+=String.fromCharCode(r));while(u1&&(p.thisProgram=process.argv[1].replace(/\\/g,`/`)),p.arguments=process.argv.slice(2),process.on(`uncaughtException`,function(e){if(!(e instanceof ke))throw e}),process.on(`unhandledRejection`,function(e,t){process.exit(1)}),p.quit=function(e){process.exit(e)},p.inspect=function(){return`[Emscripten Module object]`}):v?(typeof read<`u`&&(p.read=function(e){return read(e)}),p.readBinary=function(e){var t;return typeof readbuffer==`function`?new Uint8Array(readbuffer(e)):(O(typeof(t=read(e,`binary`))==`object`),t)},typeof scriptArgs<`u`?p.arguments=scriptArgs:typeof arguments<`u`&&(p.arguments=arguments),typeof quit==`function`&&(p.quit=function(e){quit(e)})):(h||g)&&(h?document.currentScript&&(y=document.currentScript.src):y=self.location.href,y=y.indexOf(`blob:`)===0?``:y.split(`/`).slice(0,-1).join(`/`)+`/`,p.read=function(e){var t=new XMLHttpRequest;return t.open(`GET`,e,!1),t.send(null),t.responseText},g&&(p.readBinary=function(e){var t=new XMLHttpRequest;return t.open(`GET`,e,!1),t.responseType=`arraybuffer`,t.send(null),new Uint8Array(t.response)}),p.readAsync=function(e,t,n){var r=new XMLHttpRequest;r.open(`GET`,e,!0),r.responseType=`arraybuffer`,r.onload=function(){if(r.status==200||r.status==0&&r.response){t(r.response);return}n()},r.onerror=n,r.send(null)},p.setWindowTitle=function(e){document.title=e});var x=p.print||(typeof console<`u`?console.log.bind(console):typeof print<`u`?print:null),S=p.printErr||(typeof printErr<`u`?printErr:typeof console<`u`&&console.warn.bind(console)||x);for(e in m)m.hasOwnProperty(e)&&(p[e]=m[e]);function C(e){var t=c;return c=c+e+15&-16,t}function w(e,t){return t||=16,e=Math.ceil(e/t)*t}function T(e){T.shown||={},T.shown[e]||(T.shown[e]=1,S(e))}m=void 0;var E={"f64-rem":function(e,t){return e%t},debugger:function(){}},D=0;function O(e,t){e||je(`Assertion failed: `+t)}function ee(e){var t=p[`_`+e];return O(t,`Cannot call unknown function `+e+`, make sure it is exported`),t}var te={stackSave:function(){Oe()},stackRestore:function(){De()},arrayToC:function(e){var t,n,r=Ee(e.length);return t=e,n=r,i.set(t,n),r},stringToC:function(e){var t=0;if(e!=null&&e!==0){var n=(e.length<<2)+1;t=Ee(n),k(e,t,n)}return t}},ne={string:te.stringToC,array:te.arrayToC};function re(e,t,n,r,i){var a=ee(e),o=[],s=0;if(r)for(var c=0;c>0],(r!=0||t)&&(s++,!t||s!=t););t||=s;var c=``;if(o<128){for(;t>0;)i=String.fromCharCode.apply(String,a.subarray(e,e+Math.min(t,1024))),c=c?c+i:i,e+=1024,t-=1024;return c}return n=e,function(e,t){for(var n=t;e[n];)++n;if(n-t>16&&e.subarray&&ae)return ae.decode(e.subarray(t,n));for(var r,i,a,o,s,c=``;;){if(!(r=e[t++]))return c;if(!(128&r)){c+=String.fromCharCode(r);continue}if(i=63&e[t++],(224&r)==192){c+=String.fromCharCode((31&r)<<6|i);continue}if(a=63&e[t++],(240&r)==224?r=(15&r)<<12|i<<6|a:(o=63&e[t++],(248&r)==240?r=(7&r)<<18|i<<12|a<<6|o:(s=63&e[t++],r=(252&r)==248?(3&r)<<24|i<<18|a<<12|o<<6|s:(1&r)<<30|i<<24|a<<18|o<<12|s<<6|63&e[t++])),r<65536)c+=String.fromCharCode(r);else{var l=r-65536;c+=String.fromCharCode(55296|l>>10,56320|1023&l)}}}(a,n)}var ae=typeof TextDecoder<`u`?new TextDecoder(`utf8`):void 0;function oe(e,t,n,r){if(!(r>0))return 0;for(var i=n,a=n+r-1,o=0;o=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++o)),s<=127){if(n>=a)break;t[n++]=s}else if(s<=2047){if(n+1>=a)break;t[n++]=192|s>>6,t[n++]=128|63&s}else if(s<=65535){if(n+2>=a)break;t[n++]=224|s>>12,t[n++]=128|s>>6&63,t[n++]=128|63&s}else if(s<=2097151){if(n+3>=a)break;t[n++]=240|s>>18,t[n++]=128|s>>12&63,t[n++]=128|s>>6&63,t[n++]=128|63&s}else if(s<=67108863){if(n+4>=a)break;t[n++]=248|s>>24,t[n++]=128|s>>18&63,t[n++]=128|s>>12&63,t[n++]=128|s>>6&63,t[n++]=128|63&s}else{if(n+5>=a)break;t[n++]=252|s>>30,t[n++]=128|s>>24&63,t[n++]=128|s>>18&63,t[n++]=128|s>>12&63,t[n++]=128|s>>6&63,t[n++]=128|63&s}}return t[n]=0,n-i}function k(e,t,n){return oe(e,a,t,n)}typeof TextDecoder<`u`&&new TextDecoder(`utf-16le`);function A(e,t){return e%t>0&&(e+=t-e%t),e}function se(e){p.buffer=r=e}function ce(){p.HEAP8=i=new Int8Array(r),p.HEAP16=new Int16Array(r),p.HEAP32=o=new Int32Array(r),p.HEAPU8=a=new Uint8Array(r),p.HEAPU16=new Uint16Array(r),p.HEAPU32=new Uint32Array(r),p.HEAPF32=new Float32Array(r),p.HEAPF64=new Float64Array(r)}function le(){var e=p.usingWasm?65536:16777216,t=2147483648-e;if(o[f>>2]>t)return!1;var n=M;for(M=Math.max(M,16777216);M>2];)M=M<=536870912?A(2*M,e):Math.min(A((3*M+2147483648)/4,e),t);var r=p.reallocBuffer(M);return r&&r.byteLength==M?(se(r),ce(),!0):(M=n,!1)}s=c=l=u=d=f=0,p.reallocBuffer||=function(e){try{if(ArrayBuffer.transfer)t=ArrayBuffer.transfer(r,e);else{var t,n=i;t=new ArrayBuffer(e),new Int8Array(t).set(n)}}catch{return!1}return!!Te(t)&&t};try{Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,`byteLength`).get)(new ArrayBuffer(4))}catch{}var j=p.TOTAL_STACK||5242880,M=p.TOTAL_MEMORY||16777216;function N(){return M}function P(e){for(;e.length>0;){var t=e.shift();if(typeof t==`function`){t();continue}var n=t.func;typeof n==`number`?t.arg===void 0?p.dynCall_v(n):p.dynCall_vi(n,t.arg):n(t.arg===void 0?null:t.arg)}}M>2]=d,p.wasmTableSize=4,p.wasmMaxTableSize=4,p.asmGlobalArg={},p.asmLibraryArg={abort:je,assert:O,enlargeMemory:le,getTotalMemory:N,abortOnCannotGrowMemory:function(){je(`Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value `+M+`, (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 `)},invoke_iii:function(e,t,n){var r=Oe();try{return p.dynCall_iii(e,t,n)}catch(e){if(De(r),typeof e!=`number`&&e!==`longjmp`)throw e;p.setThrew(1,0)}},___assert_fail:function(e,t,n,r){je(`Assertion failed: `+ie(e)+`, at: `+[t?ie(t):`unknown filename`,n,r?ie(r):`unknown function`])},___setErrNo:function(e){return p.___errno_location&&(o[p.___errno_location()>>2]=e),e},_abort:function(){p.abort()},_emscripten_memcpy_big:function(e,t,n){return a.set(a.subarray(t,t+n),e),e},_llvm_floor_f64:_e,DYNAMICTOP_PTR:f,tempDoublePtr:Ce,ABORT:D,STACKTOP:l,STACK_MAX:u};var we=p.asm(p.asmGlobalArg,p.asmLibraryArg,r);p.asm=we,p.___errno_location=function(){return p.asm.___errno_location.apply(null,arguments)};var Te=p._emscripten_replace_memory=function(){return p.asm._emscripten_replace_memory.apply(null,arguments)};p._free=function(){return p.asm._free.apply(null,arguments)},p._malloc=function(){return p.asm._malloc.apply(null,arguments)},p._memcpy=function(){return p.asm._memcpy.apply(null,arguments)},p._memset=function(){return p.asm._memset.apply(null,arguments)},p._sbrk=function(){return p.asm._sbrk.apply(null,arguments)},p._stb_vorbis_js_channels=function(){return p.asm._stb_vorbis_js_channels.apply(null,arguments)},p._stb_vorbis_js_close=function(){return p.asm._stb_vorbis_js_close.apply(null,arguments)},p._stb_vorbis_js_decode=function(){return p.asm._stb_vorbis_js_decode.apply(null,arguments)},p._stb_vorbis_js_open=function(){return p.asm._stb_vorbis_js_open.apply(null,arguments)},p._stb_vorbis_js_sample_rate=function(){return p.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},p.establishStackSpace=function(){return p.asm.establishStackSpace.apply(null,arguments)},p.getTempRet0=function(){return p.asm.getTempRet0.apply(null,arguments)},p.runPostSets=function(){return p.asm.runPostSets.apply(null,arguments)},p.setTempRet0=function(){return p.asm.setTempRet0.apply(null,arguments)},p.setThrew=function(){return p.asm.setThrew.apply(null,arguments)};var Ee=p.stackAlloc=function(){return p.asm.stackAlloc.apply(null,arguments)},De=p.stackRestore=function(){return p.asm.stackRestore.apply(null,arguments)},Oe=p.stackSave=function(){return p.asm.stackSave.apply(null,arguments)};function ke(e){this.name=`ExitStatus`,this.message=`Program terminated with exit(`+e+`)`,this.status=e}function Ae(e){e||=p.arguments,!(ve>0)&&((function(){if(p.preRun)for(typeof p.preRun==`function`&&(p.preRun=[p.preRun]);p.preRun.length;)he(p.preRun.shift());P(ue)})(),!(ve>0)&&(p.calledRun||(p.setStatus?(p.setStatus(`Running...`),setTimeout(function(){setTimeout(function(){p.setStatus(``)},1),t()},1)):t())));function t(){!p.calledRun&&(p.calledRun=!0,D||(me||(me=!0,P(de)),P(fe),p.onRuntimeInitialized&&p.onRuntimeInitialized(),function(){if(p.postRun)for(typeof p.postRun==`function`&&(p.postRun=[p.postRun]);p.postRun.length;)ge(p.postRun.shift());P(pe)}()))}}function je(e){throw p.onAbort&&p.onAbort(e),e===void 0?e=``:(x(e),S(e),e=JSON.stringify(e)),D=!0,`abort(`+e+`). Build with -s ASSERTIONS=1 for more info.`}if(p.dynCall_iii=function(){return p.asm.dynCall_iii.apply(null,arguments)},p.asm=we,p.ccall=re,p.cwrap=function(e,t,n,r){var i=(n||=[]).every(function(e){return e===`number`});return t!==`string`&&i&&!r?ee(e):function(){return re(e,t,n,arguments,r)}},ke.prototype=Error(),ke.prototype.constructor=ke,be=function e(){p.calledRun||Ae(),p.calledRun||(be=e)},p.run=Ae,p.abort=je,p.preInit)for(typeof p.preInit==`function`&&(p.preInit=[p.preInit]);p.preInit.length>0;)p.preInit.pop()();p.noExitRuntime=!0,Ae(),p.onRuntimeInitialized=()=>{iu=!0,au()},ru.decode=function(e){return function(e){if(!iu)throw Error(`SF3 decoder has not been initialized yet. Did you await synth.isReady?`);var t={};function n(e){return new Int32Array(p.HEAPU8.buffer,e,1)[0]}function r(e,t){var n=new ArrayBuffer(t*Float32Array.BYTES_PER_ELEMENT),r=new Float32Array(n);return r.set(new Float32Array(p.HEAPU8.buffer,e,t)),r}t.open=p.cwrap(`stb_vorbis_js_open`,`number`,[]),t.close=p.cwrap(`stb_vorbis_js_close`,`void`,[`number`]),t.channels=p.cwrap(`stb_vorbis_js_channels`,`number`,[`number`]),t.sampleRate=p.cwrap(`stb_vorbis_js_sample_rate`,`number`,[`number`]),t.decode=p.cwrap(`stb_vorbis_js_decode`,`number`,[`number`,`number`,`number`,`number`,`number`]);var i,a,o,s,c=t.open(),l=(i=e,a=e.byteLength,o=p._malloc(a),(s=new Uint8Array(p.HEAPU8.buffer,o,a)).set(new Uint8Array(i,0,a)),s),u=p._malloc(4),d=p._malloc(4),f=t.decode(c,l.byteOffset,l.byteLength,u,d);if(p._free(l.byteOffset),f<0)throw t.close(c),p._free(u),Error(`stbvorbis decode failed: `+f);for(var m=t.channels(c),h=Array(m),g=new Int32Array(p.HEAPU32.buffer,n(u),m),_=0;_.5),r?n*2-1:n;case xu.concave:return r?(n=n*2-1,n<0?-wu[Math.trunc(n*-16384)]:wu[Math.trunc(n*Su)]):wu[Math.trunc(n*Su)];case xu.convex:return r?(n=n*2-1,n<0?-Tu[Math.trunc(n*-16384)]:Tu[Math.trunc(n*Su)]):Tu[Math.trunc(n*Su)]}}var Du=new Float32Array(1e3);for(let e=0;e>t&1)>0}function ku(e){return+!!e}var Au=class e{isBipolar;isNegative;index;isCC;curveType;constructor(e=bu.noController,t=xu.linear,n=!1,r=!1,i=!1){this.isBipolar=r,this.isNegative=i,this.index=e,this.isCC=n,this.curveType=t}get sourceName(){return this.isCC?Object.keys(Y).find(e=>Y[e]===this.index)??this.index.toString():Object.keys(bu).find(e=>bu[e]===this.index)??this.index.toString()}get curveTypeName(){return Object.keys(xu).find(e=>xu[e]===this.curveType)??this.curveType.toString()}static fromSourceEnum(t){let n=Ou(t,9),r=Ou(t,8),i=Ou(t,7);return new e(t&127,t>>10&3,i,n,r)}static copyFrom(t){return new e(t.index,t.curveType,t.isCC,t.isBipolar,t.isNegative)}toString(){return`${this.sourceName} ${this.curveTypeName} ${this.isBipolar?`bipolar`:`unipolar`} ${this.isNegative?`negative`:`positive`}`}toSourceEnum(){return this.curveType<<10|ku(this.isBipolar)<<9|ku(this.isNegative)<<8|ku(this.isCC)<<7|this.index}isIdentical(e){return this.index===e.index&&this.isNegative===e.isNegative&&this.isCC===e.isCC&&this.isBipolar===e.isBipolar&&this.curveType===e.curveType}getValue(e,t,n){let r;if(this.isCC)r=e.midiControllers[this.index];else switch(this.index){default:case bu.noController:r=16383;break;case bu.noteOnVelocity:r=n.velocity<<7;break;case bu.noteOnKeyNum:r=n.targetKey<<7;break;case bu.polyPressure:r=n.pressure<<7;break;case bu.channelPressure:r=e.midiParameters.pressure<<7;break;case bu.pitchWheel:r=t;break;case bu.pitchWheelRange:r=Math.floor(e.midiParameters.pitchWheelRange*128)}let i=(this.isBipolar?2:0)|!!this.isNegative;return ju[Su*(this.curveType*Cu+i)+r]}},ju=new Float32Array(Su*4*Cu);for(let e=0;eX[e]===this.destination)}static isIdentical(e,t,n=!1){return e.primarySource.isIdentical(t.primarySource)&&e.secondarySource.isIdentical(t.secondarySource)&&e.destination===t.destination&&e.transformType===t.transformType&&(!n||e.transformAmount===t.transformAmount)}static copyFrom(t){return new e(Au.copyFrom(t.primarySource),Au.copyFrom(t.secondarySource),t.destination,t.transformAmount,t.transformType)}toString(){return`Source: ${this.primarySource.toString()}\nSecondary source: ${this.secondarySource.toString()}\nto: ${this.destinationName}\namount: ${this.transformAmount}`+(this.transformType===2?`absolute value`:``)}write(e,t){U(e,this.primarySource.toSourceEnum()),U(e,this.destination),U(e,this.transformAmount),U(e,this.secondarySource.toSourceEnum()),U(e,this.transformType),t&&t.mod++}sumTransform(t){let n=e.copyFrom(this);return n.transformAmount+=t.transformAmount,n}},Fu=class extends Pu{constructor(e,t,n,r,i){super(Au.fromSourceEnum(e),Au.fromSourceEnum(t),n,r,i),this.destination>gu&&(this.destination=X.invalid)}},Iu=[new Fu(Mu(xu.concave,!1,!0,!1,bu.noteOnVelocity),0,X.initialAttenuation,960,0),new Fu(129,0,X.vibLfoToPitch,50,0),new Fu(Mu(xu.concave,!1,!0,!0,Y.mainVolume),0,X.initialAttenuation,960,0),new Fu(13,0,X.vibLfoToPitch,50,0),new Fu(526,16,X.fineTune,12700,0),new Fu(650,0,X.pan,500,0),new Fu(Mu(xu.concave,!1,!0,!0,Y.expression),0,X.initialAttenuation,960,0),new Fu(219,0,X.reverbEffectsSend,200,0),new Fu(221,0,X.chorusEffectsSend,200,0)],Lu=[new Fu(Mu(xu.convex,!0,!1,!0,Y.attackTime),0,X.attackVolEnv,6e3,0),new Fu(Mu(xu.linear,!0,!1,!0,Y.releaseTime),0,X.releaseVolEnv,3600,0),new Fu(Mu(xu.linear,!0,!1,!0,Y.decayTime),0,X.decayVolEnv,3600,0),new Fu(Mu(xu.linear,!0,!1,!0,Y.brightness),0,X.initialFilterFc,9600,0),new Fu(Nu,0,X.initialFilterQ,250,0),new Fu(Mu(xu.switch,!1,!1,!0,Y.softPedal),0,X.initialFilterFc,-1200,0)],Ru=[...Iu,...Lu],zu=class{type;value=0;constructor(e,t,n=!0){if(this.type=e,t===void 0)throw Error(`No value provided.`);if(this.value=Math.round(t),n){let t=vu[e];t!==void 0&&(this.value=Math.max(t.min,Math.min(t.max,this.value)))}}write(e){U(e,this.type),U(e,this.value)}toString(){return`${Object.keys(X).find(e=>X[e]===this.type)}: ${this.value}`}},Bu=class{velRange={min:-1,max:127};keyRange={min:-1,max:127};generators=[];modulators=[];get hasKeyRange(){return this.keyRange.min!==-1}get hasVelRange(){return this.velRange.min!==-1}get fineTuning(){let e=this.getGenerator(X.coarseTune,0),t=this.getGenerator(X.fineTune,0);return e*100+t}set fineTuning(e){let t=Math.trunc(e/100),n=e%100;this.setGenerator(X.coarseTune,t),this.setGenerator(X.fineTune,n)}addToGenerator(e,t,n=!0){let r=this.getGenerator(e,vu[e].def);this.setGenerator(e,t+r,n)}setGenerator(e,t,n=!0){switch(e){case X.sampleID:throw Error(`Use setSample()`);case X.instrument:throw Error(`Use setInstrument()`);case X.velRange:case X.keyRange:throw Error(`Set the range manually`)}if(t===null){this.generators=this.generators.filter(t=>t.type!==e);return}let r=this.generators.findIndex(t=>t.type===e);r===-1?this.addGenerators(new zu(e,t,n)):this.generators[r]=new zu(e,t,n)}addGenerators(...e){for(let t of e)switch(t.type){default:this.generators.push(t);break;case X.sampleID:case X.instrument:break;case X.velRange:this.velRange.min=t.value&127,this.velRange.max=t.value>>8&127;break;case X.keyRange:this.keyRange.min=t.value&127,this.keyRange.max=t.value>>8&127}}addModulators(...e){this.modulators.push(...e)}getGenerator(e,t){return this.generators.find(t=>t.type===e)?.value??t}copyFrom(e){this.generators=e.generators.map(e=>new zu(e.type,e.value,!1)),this.modulators=e.modulators.map(Pu.copyFrom.bind(Pu)),this.velRange={...e.velRange},this.keyRange={...e.keyRange}}getWriteGenerators(e){let t=this.generators.filter(e=>e.type!==X.sampleID&&e.type!==X.instrument&&e.type!==X.keyRange&&e.type!==X.velRange);if(!e)throw Error(`No bank provided! `);return this.hasVelRange&&t.unshift(new zu(X.velRange,this.velRange.max<<8|Math.max(this.velRange.min,0),!1)),this.hasKeyRange&&t.unshift(new zu(X.keyRange,this.keyRange.max<<8|Math.max(this.keyRange.min,0),!1)),t}},Vu=48e3,Hu=class{name;sampleRate;originalKey;pitchCorrection;linkedSample;sampleType;loopStart;loopEnd;linkedTo=[];dataOverridden=!0;compressedData;audioData;constructor(e,t,n,r,i,a,o){this.name=e,this.sampleRate=t,this.originalKey=n,this.pitchCorrection=r,this.loopStart=a,this.loopEnd=o,this.sampleType=i}get isCompressed(){return this.compressedData!==void 0}get isLinked(){return this.sampleType===yu.rightSample||this.sampleType===yu.leftSample||this.sampleType===yu.linkedSample}get useCount(){return this.linkedTo.length}getRawData(e){return this.compressedData&&e&&!this.dataOverridden?this.compressedData:this.encodeS16LE()}resampleData(e){let t=this.getAudioData(),n=e/this.sampleRate,r=new Float32Array(Math.floor(t.length*n));for(let e=0;e96e3)&&(this.resampleData(Vu),t=this.getAudioData());let n=await e(t,this.sampleRate);this.setCompressedData(n)}catch(e){J.warn(`Failed to compress ${this.name}. Leaving as uncompressed!`,e),this.compressedData=void 0}}setSampleType(e){if(this.sampleType=e,this.isLinked||(this.linkedSample&&(this.linkedSample.linkedSample=void 0,this.linkedSample.sampleType=e),this.linkedSample=void 0),(e&32768)>0)throw Error(`ROM samples are not supported.`)}unlinkSample(){this.setSampleType(yu.monoSample)}setLinkedSample(e,t){if(e.linkedSample)throw Error(`${e.name} is linked tp ${e.linkedSample.name}. Unlink it first.`);if(this===e)throw Error(`${e.name} cannot be linked to itself.`);switch(this.linkedSample=e,e.linkedSample=this,t){case yu.leftSample:this.setSampleType(yu.leftSample),e.setSampleType(yu.rightSample);break;case yu.rightSample:this.setSampleType(yu.rightSample),e.setSampleType(yu.leftSample);break;case yu.linkedSample:this.setSampleType(yu.linkedSample),e.setSampleType(yu.linkedSample);break;default:throw Error(`Invalid sample type: `+t)}}linkTo(e){this.linkedTo.push(e)}unlinkFrom(e){let t=this.linkedTo.indexOf(e);if(t===-1){J.warn(`Cannot unlink ${e.name} from ${this.name}: not linked.`);return}this.linkedTo.splice(t,1)}getAudioData(){if(this.audioData)return this.audioData;if(this.isCompressed)return this.audioData=this.decodeVorbis(),this.audioData;throw Error(`Sample data is undefined for a BasicSample instance.`)}setAudioData(e,t){this.audioData=e,this.sampleRate=t,this.dataOverridden=!0,this.compressedData=void 0}setCompressedData(e){this.audioData=void 0,this.compressedData=e,this.dataOverridden=!1}encodeS16LE(){let e=this.getAudioData(),t=new Int16Array(e.length),n=e.length;for(let r=0;r32767?n=32767:n<-32768&&(n=-32768),t[r]=n}return new Ml(t.buffer)}decodeVorbis(){if(this.audioData)return this.audioData;if(!this.compressedData)throw Error(`Compressed data is missing.`);try{let e=su.decode(this.compressedData).data[0];if(e===void 0)return J.warn(`Error decoding sample ${this.name}: Vorbis decode returned undefined.`),new Float32Array;for(let t=0;t=e.min&&t<=e.max}static addUniqueModulators(e,t){for(let n of t)e.some(e=>Pu.isIdentical(n,e))||e.push(n)}static subtractRanges(e,t){return{min:Math.max(e.min,t.min),max:Math.min(e.max,t.max)}}delete(){for(let e of this.zones)e.instrument?.unlinkFrom(this)}deleteZone(e){this.zones[e]?.instrument?.unlinkFrom(this),this.zones.splice(e,1)}createZone(e){let t=new Gu(this,e);return this.zones.push(t),t}preload(e,t){for(let n=e;nPu.isIdentical(e,t));t===-1?c.push(e):c[t]=c[t].sumTransform(e)}let l=new Int16Array(Ku);for(let e of a.globalZone.generators)l[e.type]=e.value;for(let e of i.generators)l[e.type]=e.value;for(let e=0;e{e.push(...t.filter(t=>!e.some(e=>e.type===t.type)))},n=(e,t)=>{e.push(...t.filter(t=>!e.some(e=>Pu.isIdentical(t,e))))},r=new Yu;r.name=this.name;let i=[],a=[],o=this.globalZone;i.push(...o.generators),a.push(...o.modulators);let s=o.keyRange,c=o.velRange;for(let o of this.zones){if(!o.instrument)throw Error(`No instrument in a preset zone.`);let l=o.keyRange;o.hasKeyRange||(l=s);let u=o.velRange;o.hasVelRange||(u=c);let d=o.generators.map(e=>new zu(e.type,e.value));t(d,i);let f=[...o.modulators];n(f,a);let p=o.instrument,m=p.zones,h=[],g=[],_=p.globalZone;h.push(..._.generators),g.push(..._.modulators);let v=_.keyRange,y=_.velRange;for(let i of m){if(!i.sample)throw Error(`No sample in an instrument zone.`);let a=i.keyRange;i.hasKeyRange||(a=v);let o=i.velRange;if(i.hasVelRange||(o=y),a=e.subtractRanges(a,l),o=e.subtractRanges(o,u),a.maxnew zu(e.type,e.value));t(s,h);let c=[...i.modulators];n(c,g);let p=[...c];for(let e of f){let t=p.findIndex(t=>Pu.isIdentical(e,t));t===-1?p.push(e):p[t]=p[t].sumTransform(e)}let m=s.map(e=>new zu(e.type,e.value));for(let e of d){if(e.type===X.velRange||e.type===X.keyRange||e.type===X.instrument||e.type===X.endOper||e.type===X.sampleModes)continue;let t=s.findIndex(t=>t.type===e.type);if(t===-1){let t=vu[e.type].def+e.value;m.push(new zu(e.type,t))}else{let n=m[t].value+e.value;m[t]=new zu(e.type,n)}}m=m.filter(e=>e.type!==X.sampleID&&e.type!==X.keyRange&&e.type!==X.velRange&&e.type!==X.endOper&&e.type!==X.instrument&&(!(e.type in vu)||e.value!==vu[e.type].def));let _=r.createZone(i.sample);_.keyRange=a,_.velRange=o,_.keyRange.min===0&&_.keyRange.max===127&&(_.keyRange.min=-1),_.velRange.min===0&&_.velRange.max===127&&(_.velRange.min=-1),_.addGenerators(...m),_.addModulators(...p)}}return r}write(e,t,n){J.info(`%cWriting ${this.name}...`,G.info),Il(e.pdta,this.name.slice(0,20),20),Il(e.xdta,this.name.slice(20),20),U(e.pdta,this.program);let r=this.bankMSB;n?(r=this.bankMSB&127|(this.bankLSB&127)<<8,this.isGMGSDrum&&(r|=128)):this.isGMGSDrum?r=128:this.bankMSB===0&&(r=this.bankLSB),U(e.pdta,r),e.xdta.currentIndex+=4,U(e.pdta,t&65535),U(e.xdta,t>>16),W(e.pdta,this.library),W(e.pdta,this.genre),W(e.pdta,this.morphology),e.xdta.currentIndex+=12}},Ju=new Set([X.velRange,X.keyRange,X.instrument,X.sampleID,X.exclusiveClass,X.endOper,X.sampleModes,X.startloopAddrsOffset,X.startloopAddrsCoarseOffset,X.endloopAddrsOffset,X.endloopAddrsCoarseOffset,X.startAddrsOffset,X.startAddrsCoarseOffset,X.endAddrOffset,X.endAddrsCoarseOffset,X.initialAttenuation,X.fineTune,X.coarseTune,X.keyNumToVolEnvHold,X.keyNumToVolEnvDecay,X.keyNumToModEnvHold,X.keyNumToModEnvDecay]),Yu=class{name=``;zones=[];globalZone=new Bu;linkedTo=[];get useCount(){return this.linkedTo.length}createZone(e){let t=new Wu(this,e);return this.zones.push(t),t}linkTo(e){this.linkedTo.push(e);for(let e of this.zones)e.useCount++}unlinkFrom(e){let t=this.linkedTo.indexOf(e);if(t===-1){J.warn(`Cannot unlink ${e.name} from ${this.name}: not linked.`);return}this.linkedTo.splice(t,1);for(let e of this.zones)e.useCount--}deleteUnusedZones(){this.zones=this.zones.filter(e=>{let t=e.useCount>0;return t||e.sample.unlinkFrom(this),t})}delete(){if(this.useCount>0)throw Error(`Cannot delete an instrument that is used by: ${this.linkedTo.map(e=>e.name).toString()}.`);for(let e of this.zones)e.sample.unlinkFrom(this)}deleteZone(e,t=!1){let n=this.zones[e];return--n.useCount,n.useCount<1||t?(n.sample.unlinkFrom(this),this.zones.splice(e,1),!0):!1}globalize(){let e=this.globalZone;for(let t=0;t<58;t++){if(Ju.has(t))continue;t=t;let n={},r=vu[t]?.def||0;n[r]=0;for(let e of this.zones){let i=e.getGenerator(t,void 0);i===void 0?n[r]++:n[i]===void 0?n[i]=1:n[i]++;let a;switch(t){default:continue;case X.decayVolEnv:a=X.keyNumToVolEnvDecay;break;case X.holdVolEnv:a=X.keyNumToVolEnvHold;break;case X.decayModEnv:a=X.keyNumToModEnvDecay;break;case X.holdModEnv:a=X.keyNumToModEnvHold}if(e.getGenerator(a,void 0)!==void 0){n={};break}}if(Object.keys(n).length>0){let i=[`0`,0];for(let[e,t]of Object.entries(n))t>i[1]&&(i=[e,t]);let a=Number.parseInt(i[0]);a!==r&&e.setGenerator(t,a,!1);for(let e of this.zones){let n=e.getGenerator(t,void 0);n===void 0?a!==r&&e.setGenerator(t,r):n===a&&e.setGenerator(t,null)}}}let t=this.zones.length===0?[]:this.zones[0].modulators.map(e=>Pu.copyFrom(e));for(let n of t){let t=!0;for(let e of this.zones)t&&(e.modulators.find(e=>Pu.isIdentical(e,n))||(t=!1));if(t){e.addModulators(Pu.copyFrom(n));for(let e of this.zones){let t=e.modulators.find(e=>Pu.isIdentical(e,n));t&&t.transformAmount===n.transformAmount&&e.modulators.splice(e.modulators.indexOf(t),1)}}}}write(e,t){J.info(`%cWriting ${this.name}...`,G.info),Il(e.pdta,this.name.slice(0,20),20),Il(e.xdta,this.name.slice(20),20),U(e.pdta,t&65535),U(e.xdta,t>>>16)}};function Xu(e,t,n,r,i){let a=0,o=[],s=[];for(let t of e.samples){let n=t.getRawData(!0);a++,i?.(a/e.samples.length),J.info(`%cWrote sample %c${a}. ${t.name}%c of %c${e.samples.length}.`,G.info,G.recognized,G.info,G.recognized),o.push(n),s.push(n.length),t.isCompressed||o.push(new Uint8Array(92))}let c=K.getParts(`smpl`,o,r),l=K.getParts(`sdta`,c,r,!0),u=0;for(let[r,i]of e.samples.entries()){let e=s[r],a,o;i.isCompressed?(a=u,o=a+e):(a=u/2,o=a+e/2,u+=92),u+=e,t.push(a),n.push(o)}return l}function Zu(e,t,n,r){let i=46*(e.samples.length+1),a=new Ml(i),o=new Ml(i),s=0;for(let[r,i]of e.samples.entries()){Il(a,i.name.slice(0,20),20),Il(o,i.name.slice(20),20);let c=t[r];W(a,c),o.currentIndex+=4;let l=n[r];W(a,l),o.currentIndex+=4;let u=i.loopStart+c,d=i.loopEnd+c;i.isCompressed&&(u-=c,d-=c),W(a,u),W(a,d),W(a,i.sampleRate),a[a.currentIndex++]=i.originalKey,a[a.currentIndex++]=i.pitchCorrection,o.currentIndex+=14;let f=i.linkedSample?e.samples.indexOf(i.linkedSample):0;U(a,Math.max(0,f)&65535),U(o,Math.max(0,f)>>16),s=Math.max(s,f);let p=i.sampleType;i.isCompressed&&(p|=16),U(a,p),o.currentIndex+=2}return Il(a,`EOS`,46),Il(o,`EOS`,46),{pdta:K.write(`shdr`,a,r),xdta:K.write(`shdr`,o,r)}}function Qu(e,t,n,r=!1){let i=n?e.presets:e.instruments,a=n?`pgen`:`igen`,o=n?`pmod`:`imod`,s=n?`pbag`:`ibag`,c=n?`phdr`:`inst`,l=n?38:22,u=0,d=[],f=0,p=[],m=[],h=[],g=0,_=[],v=t=>{d.push(u);let n=t.getWriteGenerators(e);u+=n.length,m.push(...n),p.push(f);let r=t.modulators;f+=r.length,h.push(...r)};for(let e of i){_.push(g),v(e.globalZone);for(let t of e.zones)v(t);g+=e.zones.length+1}m.push(new zu(0,0,!1)),h.push(new Fu(0,0,0,0,0)),d.push(u),p.push(f),_.push(g);let y=new Ml(m.length*4);for(let e of m)e.write(y);let b=new Ml(h.length*10);for(let e of h)e.write(b);let x=p.length*4,S={pdta:new Ml(x),xdta:new Ml(x)};for(let[e,t]of p.entries()){let n=d[e];U(S.pdta,n&65535),U(S.pdta,t&65535),U(S.xdta,n>>16),U(S.xdta,t>>16)}let C=(i.length+1)*l,w={pdta:new Ml(C),xdta:new Ml(C)};for(let[e,t]of i.entries())t.write(w,_[e],r);return n?(Il(w.pdta,`EOP`,20),w.pdta.currentIndex+=4,U(w.pdta,g&65535),w.pdta.currentIndex+=12,Il(w.xdta,``,20),w.xdta.currentIndex+=4,U(w.xdta,g>>16),w.xdta.currentIndex+=12):(Il(w.pdta,`EOI`,20),U(w.pdta,g&65535),Il(w.xdta,``,20),U(w.xdta,g>>16)),{writeXdta:Math.max(u,f,g)>65535,gen:{pdta:K.write(a,y,t),xdta:K.write(o,new Ml(4),t)},mod:{pdta:K.write(o,b,t),xdta:K.write(o,new Ml(10),t)},bag:{pdta:K.write(s,S.pdta,t),xdta:K.write(s,S.xdta,t)},hdr:{pdta:K.write(c,w.pdta,t),xdta:K.write(c,w.xdta,t)}}}var $u={writeDefaultModulators:!0,writeExtendedLimits:!0,software:`SpessaSynth`},ed={rf64:!0,software:`SpessaSynth`};function td(e,t){let n=q(t,$u);return rd(e,n.software,n.writeDefaultModulators,n.writeExtendedLimits,!1,!1)}function nd(e,t){return rd(e,q(t,ed).software,!0,!0,!0,!0)}function rd(e,t,n,r,i,a){J.groupCollapsed(`%cSaving soundbank...`,G.info),J.group(`%cWriting INFO...`,G.info);let o=[],s=(e,t)=>{t&&o.push(...K.getParts(e,[Fl(t,!0,!0)],a))},c=e.soundBankInfo;{let e=new Ml(4);U(e,c.version.major),U(e,c.version.minor),o.push(K.write(`ifil`,e,a))}if(s(`isng`,c.soundEngine),s(`INAM`,c.name),s(`irom`,c.romInfo),c.romVersion){let e=new Ml(4);U(e,c.romVersion.major),U(e,c.romVersion.minor),o.push(K.write(`iver`,e,a))}if(s(`ICRD`,Kl(c.creationDate)),s(`IENG`,c.engineer),s(`IPRD`,c.product),s(`ICOP`,c.copyright),s(`ICMT`,c?.subject?(c?.comment?c.comment+` +`:``)+c.subject:c?.comment),s(`ISFT`,t),e.defaultModulators.some(e=>!Ru.some(t=>Pu.isIdentical(t,e,!0)))&&n){let t=e.defaultModulators;J.info(`%cWriting %c${t.length}%c default modulators...`,G.info,G.recognized,G.info);let n=new Ml(10+t.length*10);for(let e of t)e.write(n);kl(n,0,10),o.push(...K.getParts(`DMOD`,[n],a))}J.groupEnd(),J.info(`%cWriting SDTA...`,G.info);let l=[],u=[],d=Xu(e,l,u,a);J.info(`%cWriting PDTA...`,G.info),J.info(`%cWriting SHDR...`,G.info);let f=Zu(e,l,u,a);J.group(`%cWriting instruments...`,G.info);let p=Qu(e,a,!1);J.groupEnd(),J.group(`%cWriting presets...`,G.info);let m=Qu(e,a,!0,i);J.groupEnd();let h=[m.hdr,m.bag,m.mod,m.gen,p.hdr,p.bag,p.mod,p.gen,f],g=K.getParts(`pdta`,h.map(e=>e.pdta),a,!0);r&&(p.writeXdta||m.writeXdta||e.presets.some(e=>e.name.length>20)||e.instruments.some(e=>e.name.length>20)||e.samples.some(e=>e.name.length>20))&&(J.info(`%cWriting the xdta chunk as writeExtendedLimits is enabled and at least one condition was met.`,G.info,G.value),o.push(...K.getParts(`xdta`,h.map(e=>e.xdta),a,!0)));let _=K.getParts(`INFO`,o,a,!0);J.info(`%cWriting the output file...`,G.info);let v=K.writeParts(a?`RIFS`:`RIFF`,[Fl(i?`sfen`:`sfbk`),..._,...d,...g],a);return J.info(`%cSaved successfully! Final file size: %c${v.length}`,G.info,G.recognized),J.groupEnd(),v.buffer}var id=class{static verifyHeader(e,...t){for(let n of t)if(e.header.toLowerCase()===n.toLowerCase())return;this.parsingError(`Invalid DLS chunk header! Expected "${t.join(`, or `)}" got "${e.header.toLowerCase()}"`)}static verifyText(e,...t){for(let n of t)if(e.toLowerCase()===n.toLowerCase())return;this.parsingError(`FourCC error: Expected "${t.join(`, or `)}" got "${e.toLowerCase()}"`)}static parsingError(e){throw J.groupEnd(),Error(`DLS parse error: ${e} The file may be corrupted.`)}static verifyAndReadList(e,...t){this.verifyHeader(e,`LIST`),e.data.currentIndex=0,this.verifyText(Pl(e.data,4),...t);let n=[];for(;e.data.length>e.data.currentIndex;)n.push(K.read(e.data));return n}},Z={none:0,modLfo:1,velocity:2,keyNum:3,volEnv:4,modEnv:5,pitchWheel:6,polyPressure:7,channelPressure:8,vibratoLfo:9,modulationWheel:129,volume:135,pan:138,expression:139,chorus:221,reverb:219,pitchWheelRange:256,fineTune:257,coarseTune:258},Q={none:0,gain:1,reserved:2,pitch:3,pan:4,keyNum:5,chorusSend:128,reverbSend:129,modLfoFreq:260,modLfoDelay:261,vibLfoFreq:276,vibLfoDelay:277,volEnvAttack:518,volEnvDecay:519,reservedEG1:520,volEnvRelease:521,volEnvSustain:522,volEnvDelay:523,volEnvHold:524,modEnvAttack:778,modEnvDecay:779,reservedEG2:780,modEnvRelease:781,modEnvSustain:782,modEnvDelay:783,modEnvHold:784,filterCutoff:1280,filterQ:1281},ad={forward:0,loopAndRelease:1},od=20,sd=16,cd=class e extends id{gain=0;unityNote=60;fineTune=0;loops=[];fulOptions=2;static copyFrom(t){let n=new e;return n.unityNote=t.unityNote,n.gain=t.gain,n.fineTune=t.fineTune,n.loops=t.loops.map(e=>({...e})),n.fulOptions=t.fulOptions,n}static read(t){this.verifyHeader(t,`wsmp`);let n=new e,r=H(t.data,4);if(r!==od&&J.warn(`Wsmp cbSize mismatch: got ${r}, expected ${od}.`),n.unityNote=H(t.data,2),n.fineTune=jl(t.data[t.data.currentIndex++],t.data[t.data.currentIndex++]),n.gain=H(t.data,4)|0,n.fulOptions=H(t.data,4),H(t.data,4)!==0){let e=H(t.data,4);e!==sd&&J.warn(`CbSize for loop in wsmp mismatch. Expected ${sd}, got ${e}.`);let r=H(t.data,4),i=H(t.data,4),a=H(t.data,4);n.loops.push({loopStart:i,loopLength:a,loopType:r})}return n}static fromSFSample(t){let n=new e;return n.unityNote=t.originalKey,n.fineTune=t.pitchCorrection,(t.loopEnd!==0||t.loopStart!==0)&&n.loops.push({loopStart:t.loopStart,loopLength:t.loopEnd-t.loopStart,loopType:ad.forward}),n}static fromSFZone(t){let n=new e;n.unityNote=t.getGenerator(X.overridingRootKey,t.sample.originalKey),t.getGenerator(X.scaleTuning,100)===0&&t.keyRange.max-t.keyRange.min===0&&(n.unityNote=t.keyRange.min),n.fineTune=t.fineTuning+t.sample.pitchCorrection,n.gain=-(t.getGenerator(X.initialAttenuation,0)*.4)<<16;let r=t.getGenerator(X.sampleModes,0);if(r!==0){let e=t.sample.loopStart+t.getGenerator(X.startloopAddrsOffset,0)+t.getGenerator(X.startloopAddrsCoarseOffset,0)*32768,i=t.sample.loopEnd+t.getGenerator(X.endloopAddrsOffset,0)+t.getGenerator(X.endloopAddrsCoarseOffset,0)*32768,a;switch(r){case 1:default:a=0;break;case 3:a=1}n.loops.push({loopType:a,loopStart:e,loopLength:i-e})}return n}toSFZone(e,t){let n=0,r=this.loops[0];r&&(n=r.loopType===ad.loopAndRelease?3:1),n!==0&&e.setGenerator(X.sampleModes,n);let i=-(this.gain>>16)/.4;if(i!==0&&e.setGenerator(X.initialAttenuation,i),e.fineTuning=this.fineTune-t.pitchCorrection,this.unityNote!==t.originalKey&&e.setGenerator(X.overridingRootKey,this.unityNote),r){let n=r.loopStart-t.loopStart,i=r.loopStart+r.loopLength-t.loopEnd;if(n!==0){let t=n%32768;e.setGenerator(X.startloopAddrsOffset,t);let r=Math.trunc(n/32768);r!==0&&e.setGenerator(X.startloopAddrsCoarseOffset,r)}if(i!==0){let t=i%32768;e.setGenerator(X.endloopAddrsOffset,t);let n=Math.trunc(i/32768);n!==0&&e.setGenerator(X.endloopAddrsCoarseOffset,n)}}}write(){let e=new Ml(od+this.loops.length*sd);W(e,od),U(e,this.unityNote),U(e,this.fineTune),W(e,this.gain),W(e,this.fulOptions),W(e,this.loops.length);for(let t of this.loops)W(e,sd),W(e,t.loopType),W(e,t.loopStart),W(e,t.loopLength);return K.write(`wsmp`,e)}},ld={PCM:1,ALAW:6};function ud(e,t){let n=2**(t*8-1),r=2**(t*8),i,a=!1;t===1?(i=255,a=!0):i=n;let o=e.length/t,s=new Float32Array(o);if(t===2){let t=new Int16Array(e.buffer),n=t.length;for(let e=0;e=n&&(c-=r),s[o]=c/i)}return s}function dd(e,t){let n=e.length/t,r=new Float32Array(n);for(let n=0;n>4,s=a&15;o>0&&(s+=16),s=(s<<4)+8,o>1&&(s<<=o-1),r[n]=(i>127?s:-s)/32768}return r}var fd=class extends Hu{wFormatTag;bytesPerSample;rawData;constructor(e,t,n,r,i,a,o,s,c){super(e,t,n,r,yu.monoSample,i,a),this.dataOverridden=!1,this.rawData=o.data,this.wFormatTag=s,this.bytesPerSample=c}getAudioData(){if(!this.rawData)return new Float32Array;if(!this.audioData){let e;switch(this.wFormatTag){default:J.warn(`Failed to decode sample. Unknown wFormatTag: ${this.wFormatTag}`),e=new Float32Array(this.rawData.length/this.bytesPerSample);break;case ld.PCM:e=ud(this.rawData,this.bytesPerSample);break;case ld.ALAW:e=dd(this.rawData,this.bytesPerSample);break}this.setAudioData(e,this.sampleRate)}return this.audioData??new Float32Array}getRawData(e){return this.dataOverridden||this.isCompressed?super.getRawData(e):this.wFormatTag===ld.PCM&&this.bytesPerSample===2?this.rawData:this.encodeS16LE()}},pd=class e extends id{waveSample=new cd;wFormatTag;bytesPerSample;sampleRate;dataChunk;name=`Unnamed sample`;constructor(e,t,n,r){super(),this.wFormatTag=e,this.bytesPerSample=t,this.sampleRate=n,this.dataChunk=r}static read(t){let n=this.verifyAndReadList(t,`wave`),r=n.find(e=>e.header===`fmt `);if(!r)throw Error(`No fmt chunk in the wave file!`);let i=H(r.data,2),a=H(r.data,2);if(a!==1)throw Error(`Only mono samples are supported. Fmt reports ${a} channels.`);let o=H(r.data,4);H(r.data,4),H(r.data,2);let s=H(r.data,2)/8,c=n.find(e=>e.header===`data`);if(!c)throw Error(`No data chunk in the WAVE chunk!`);let l=new e(i,s,o,c),u=K.findListType(n,`INFO`);if(u){let e=K.read(u.data);for(;e.header!==`INAM`&&u.data.currentIndexe.header===`wsmp`);return d&&(l.waveSample=cd.read(d)),l}static fromSFSample(t){let n=t.getRawData(!1),r=new e(1,2,t.sampleRate,new K(`data`,n.length,new Ml(n.buffer)));return r.name=t.name,r.waveSample=cd.fromSFSample(t),r}toSFSample(e){let t=this.waveSample.unityNote,n=this.waveSample.fineTune,r=Math.trunc(n/100);t+=r,n-=r*100;let i=0,a=0,o=this.waveSample.loops?.[0];o&&(i=o.loopStart,a=o.loopStart+o.loopLength);let s=new fd(this.name,this.sampleRate,t,n,i,a,this.dataChunk,this.wFormatTag,this.bytesPerSample);e.addSamples(s)}write(){let e=this.writeFmt(),t=this.waveSample.write(),n=K.getParts(`data`,[this.dataChunk.data]),r=K.write(`INAM`,Fl(this.name,!0)),i=K.write(`INFO`,r,!1,!0);return J.info(`%cSaved %c${this.name}%c successfully!`,G.recognized,G.value,G.recognized),K.getParts(`wave`,[e,t,...n,i],!1,!0)}writeFmt(){let e=new Ml(18);return U(e,this.wFormatTag),U(e,1),W(e,this.sampleRate),W(e,this.sampleRate*2),U(e,2),U(e,this.bytesPerSample*8),K.write(`fmt `,e)}},md=class e{source;transform;bipolar;invert;constructor(e=Z.none,t=xu.linear,n=!1,r=!1){this.source=e,this.transform=t,this.bipolar=n,this.invert=r}get sourceName(){return Object.keys(Z).find(e=>Z[e]===this.source)??this.source.toString()}get transformName(){return Object.keys(xu).find(e=>xu[e]===this.transform)??this.transform.toString()}static copyFrom(t){return new e(t.source,t.transform,t.bipolar,t.invert)}static fromSFSource(t){let n;if(t.isCC)switch(t.index){case Y.modulationWheel:n=Z.modulationWheel;break;case Y.mainVolume:n=Z.volume;break;case Y.pan:n=Z.pan;break;case Y.expression:n=Z.expression;break;case Y.chorusDepth:n=Z.chorus;break;case Y.reverbDepth:n=Z.reverb;break}else switch(t.index){case bu.noController:n=Z.none;break;case bu.noteOnKeyNum:n=Z.keyNum;break;case bu.noteOnVelocity:n=Z.velocity;break;case bu.pitchWheel:n=Z.pitchWheel;break;case bu.pitchWheelRange:n=Z.pitchWheelRange;break;case bu.polyPressure:n=Z.polyPressure;break;case bu.channelPressure:n=Z.channelPressure}if(n!==void 0)return new e(n,t.curveType,t.isBipolar,t.isNegative)}toString(){return`${this.sourceName} ${this.transformName} ${this.bipolar?`bipolar`:`unipolar`} ${this.invert?`inverted`:`positive`}`}toTransformFlag(){return this.transform|!!this.bipolar<<4|!!this.invert<<5}toSFSource(){let e,t=!1;switch(this.source){default:case Z.modLfo:case Z.vibratoLfo:case Z.coarseTune:case Z.fineTune:case Z.modEnv:return;case Z.keyNum:e=bu.noteOnKeyNum;break;case Z.none:e=bu.noController;break;case Z.modulationWheel:e=Y.modulationWheel,t=!0;break;case Z.pan:e=Y.pan,t=!0;break;case Z.reverb:e=Y.reverbDepth,t=!0;break;case Z.chorus:e=Y.chorusDepth,t=!0;break;case Z.expression:e=Y.expression,t=!0;break;case Z.volume:e=Y.mainVolume,t=!0;break;case Z.velocity:e=bu.noteOnVelocity;break;case Z.polyPressure:e=bu.polyPressure;break;case Z.channelPressure:e=bu.channelPressure;break;case Z.pitchWheel:e=bu.pitchWheel;break;case Z.pitchWheelRange:e=bu.pitchWheelRange;break}if(e!==void 0)return new Au(e,this.transform,t,this.bipolar,this.invert)}},hd=new Fu(219,0,X.reverbEffectsSend,1e3,0),gd=new Fu(221,0,X.chorusEffectsSend,1e3,0);new Fu(129,0,X.vibLfoToPitch,0,0),new Fu(13,0,X.vibLfoToPitch,0,0);var _d=new Set([X.sampleModes,X.initialAttenuation,X.keyRange,X.velRange,X.sampleID,X.fineTune,X.coarseTune,X.startAddrsOffset,X.startAddrsCoarseOffset,X.endAddrOffset,X.endAddrsCoarseOffset,X.startloopAddrsOffset,X.startloopAddrsCoarseOffset,X.endloopAddrsOffset,X.endloopAddrsCoarseOffset,X.overridingRootKey,X.exclusiveClass]),vd=class e{source;control;destination;scale;transform;constructor(e=new md,t=new md,n,r,i){this.source=e,this.control=t,this.destination=n,this.transform=r,this.scale=i}get isStaticParameter(){return this.source.source===Z.none&&this.control.source===Z.none}get shortScale(){return this.scale>>16}get transformName(){return Object.keys(xu).find(e=>xu[e]===this.transform)??this.transform.toString()}get destinationName(){return Object.keys(Q).find(e=>Q[e]===this.destination)??this.destination.toString()}static read(t){let n=H(t,2),r=H(t,2),i=H(t,2),a=H(t,2),o=H(t,4)|0,s=a&15,c=new md(r,a>>4&15,Ou(a,8),Ou(a,9));return new e(new md(n,a>>10&15,Ou(a,14),Ou(a,15)),c,i,s,o)}static fromSFModulator(t,n){let r=e=>{J.warn(`Failed converting SF modulator into DLS:\n ${t.toString()} \n(${e})`)};if(t.transformType!==0){r(`Absolute transform type is not supported`);return}if(Pu.isIdentical(t,gd,!0)||Pu.isIdentical(t,hd,!0))return;let i=md.fromSFSource(t.primarySource);if(!i){r(`Invalid primary source`);return}let a=md.fromSFSource(t.secondarySource);if(!a){r(`Invalid secondary source`);return}let o=e.fromSFDestination(t.destination,t.transformAmount);if(o===void 0){r(`Invalid destination`);return}let s=t.transformAmount,c;if(typeof o==`number`)c=o;else if(c=o.destination,s=o.amount,o.source!==Z.none){if(a.source!==Z.none&&i.source!==Z.none){r(`Articulation generators with secondary source are not supported`);return}i.source!==Z.none&&(a=i),i=new md(o.source,xu.linear,o.isBipolar)}let l=new e(i,a,c,0,s<<16);n.connectionBlocks.push(l)}static copyFrom(t){return new e(md.copyFrom(t.source),md.copyFrom(t.control),t.destination,t.transform,t.scale)}static fromSFGenerator(t,n){if(_d.has(t.type))return;let r=e=>{J.warn(`Failed converting SF2 generator into DLS:\n ${t.toString()} \n(${e})`)},i=e.fromSFDestination(t.type,t.value);if(i===void 0){r(`Invalid type`);return}let a=new md,o,s=t.value;typeof i==`number`?o=i:(o=i.destination,s=i.amount,a.source=i.source,a.bipolar=i.isBipolar),n.connectionBlocks.push(new e(a,new md,o,0,s<<16))}static fromSFDestination(e,t){switch(e){default:return;case X.initialAttenuation:return{destination:Q.gain,amount:-t,isBipolar:!1,source:Z.none};case X.fineTune:return Q.pitch;case X.pan:return Q.pan;case X.keyNum:return Q.keyNum;case X.reverbEffectsSend:return Q.reverbSend;case X.chorusEffectsSend:return Q.chorusSend;case X.freqModLFO:return Q.modLfoFreq;case X.delayModLFO:return Q.modLfoDelay;case X.delayVibLFO:return Q.vibLfoDelay;case X.freqVibLFO:return Q.vibLfoFreq;case X.delayVolEnv:return Q.volEnvDelay;case X.attackVolEnv:return Q.volEnvAttack;case X.holdVolEnv:return Q.volEnvHold;case X.decayVolEnv:return Q.volEnvDecay;case X.sustainVolEnv:return{destination:Q.volEnvSustain,amount:1e3-t,isBipolar:!1,source:Z.none};case X.releaseVolEnv:return Q.volEnvRelease;case X.delayModEnv:return Q.modEnvDelay;case X.attackModEnv:return Q.modEnvAttack;case X.holdModEnv:return Q.modEnvHold;case X.decayModEnv:return Q.modEnvDecay;case X.sustainModEnv:return{destination:Q.modEnvSustain,amount:1e3-t,isBipolar:!1,source:Z.none};case X.releaseModEnv:return Q.modEnvRelease;case X.initialFilterFc:return Q.filterCutoff;case X.initialFilterQ:return Q.filterQ;case X.modEnvToFilterFc:return{source:Z.modEnv,destination:Q.filterCutoff,amount:t,isBipolar:!1};case X.modEnvToPitch:return{source:Z.modEnv,destination:Q.pitch,amount:t,isBipolar:!1};case X.modLfoToFilterFc:return{source:Z.modLfo,destination:Q.filterCutoff,amount:t,isBipolar:!0};case X.modLfoToVolume:return{source:Z.modLfo,destination:Q.gain,amount:t,isBipolar:!0};case X.modLfoToPitch:return{source:Z.modLfo,destination:Q.pitch,amount:t,isBipolar:!0};case X.vibLfoToPitch:return{source:Z.vibratoLfo,destination:Q.pitch,amount:t,isBipolar:!0};case X.keyNumToVolEnvHold:return{source:Z.keyNum,destination:Q.volEnvHold,amount:t,isBipolar:!0};case X.keyNumToVolEnvDecay:return{source:Z.keyNum,destination:Q.volEnvDecay,amount:t,isBipolar:!0};case X.keyNumToModEnvHold:return{source:Z.keyNum,destination:Q.modEnvHold,amount:t,isBipolar:!0};case X.keyNumToModEnvDecay:return{source:Z.keyNum,destination:Q.modEnvDecay,amount:t,isBipolar:!0};case X.scaleTuning:return{source:Z.keyNum,destination:Q.pitch,amount:t*128,isBipolar:!1}}}toString(){return`Source: ${this.source.toString()},\nControl: ${this.control.toString()},\nScale: ${this.scale} >> 16 = ${this.shortScale},\nOutput transform: ${this.transformName}\nDestination: ${this.destinationName}`}write(){let e=new Ml(12);return U(e,this.source.source),U(e,this.control.source),U(e,this.destination),U(e,this.transform|this.control.toTransformFlag()<<4|this.source.toTransformFlag()<<10),W(e,this.scale),e}toSFGenerator(e){let t=this.destination,n=this.shortScale;switch(t){default:J.info(`%cFailed converting DLS articulator into SF generator: %c${this.toString()}%c\n(invalid destination)`,G.warn,G.value,G.unrecognized);return;case Q.pan:e.setGenerator(X.pan,n);break;case Q.gain:e.addToGenerator(X.initialAttenuation,-n/.4);break;case Q.filterCutoff:e.setGenerator(X.initialFilterFc,n);break;case Q.filterQ:e.setGenerator(X.initialFilterQ,n);break;case Q.modLfoFreq:e.setGenerator(X.freqModLFO,n);break;case Q.modLfoDelay:e.setGenerator(X.delayModLFO,n);break;case Q.vibLfoFreq:e.setGenerator(X.freqVibLFO,n);break;case Q.vibLfoDelay:e.setGenerator(X.delayVibLFO,n);break;case Q.volEnvDelay:e.setGenerator(X.delayVolEnv,n);break;case Q.volEnvAttack:e.setGenerator(X.attackVolEnv,n);break;case Q.volEnvHold:e.setGenerator(X.holdVolEnv,n);break;case Q.volEnvDecay:e.setGenerator(X.decayVolEnv,n);break;case Q.volEnvRelease:e.setGenerator(X.releaseVolEnv,n);break;case Q.volEnvSustain:e.setGenerator(X.sustainVolEnv,1e3-n);break;case Q.modEnvDelay:e.setGenerator(X.delayModEnv,n);break;case Q.modEnvAttack:e.setGenerator(X.attackModEnv,n);break;case Q.modEnvHold:e.setGenerator(X.holdModEnv,n);break;case Q.modEnvDecay:e.setGenerator(X.decayModEnv,n);break;case Q.modEnvRelease:e.setGenerator(X.releaseModEnv,n);break;case Q.modEnvSustain:e.setGenerator(X.sustainModEnv,1e3-n);break;case Q.reverbSend:e.setGenerator(X.reverbEffectsSend,n);break;case Q.chorusSend:e.setGenerator(X.chorusEffectsSend,n);break;case Q.pitch:e.fineTuning+=n;break}}toSFModulator(e){let t=this.shortScale,n,r,i=new Au,a=this.toCombinedSFDestination();if(a){n=a;let e=this.control.toSFSource();if(!e){this.failedConversion(`Invalid control`);return}r=e}else{let e=this.toSFDestination();if(!e){this.failedConversion(`Invalid destination`);return}typeof e==`object`?(t=e.newAmount,n=e.gen):n=e;let a=this.source.toSFSource();if(!a){this.failedConversion(`Invalid source`);return}r=a;let o=this.control.toSFSource();if(!o){this.failedConversion(`Invalid control`);return}i=o}this.transform!==xu.linear&&r.curveType===xu.linear&&(r.curveType=this.transform),n===X.initialAttenuation&&((this.source.source===Z.velocity||this.source.source===Z.volume||this.source.source===Z.expression)&&(r.isNegative=!0),t=Math.min(960,Math.max(0,t)));let o=new Pu(r,i,n,t,0);e.addModulators(o)}toCombinedSFDestination(){let e=this.source.source,t=this.destination;if(e===Z.vibratoLfo&&t===Q.pitch)return X.vibLfoToPitch;if(e===Z.modLfo&&t===Q.pitch)return X.modLfoToPitch;if(e===Z.modLfo&&t===Q.filterCutoff)return X.modLfoToFilterFc;if(e===Z.modLfo&&t===Q.gain)return X.modLfoToVolume;if(e===Z.modEnv&&t===Q.filterCutoff)return X.modEnvToFilterFc;if(e===Z.modEnv&&t===Q.pitch)return X.modEnvToPitch}failedConversion(e){J.info(`%cFailed converting DLS articulator into SF2:\n %c${this.toString()}%c\n(${e})`,G.warn,G.value,G.unrecognized)}toSFDestination(){let e=this.shortScale;switch(this.destination){default:case Q.none:return;case Q.pan:return X.pan;case Q.gain:return{gen:X.initialAttenuation,newAmount:-e};case Q.pitch:return X.fineTune;case Q.keyNum:return X.overridingRootKey;case Q.volEnvDelay:return X.delayVolEnv;case Q.volEnvAttack:return X.attackVolEnv;case Q.volEnvHold:return X.holdVolEnv;case Q.volEnvDecay:return X.decayVolEnv;case Q.volEnvSustain:return{gen:X.sustainVolEnv,newAmount:1e3-e};case Q.volEnvRelease:return X.releaseVolEnv;case Q.modEnvDelay:return X.delayModEnv;case Q.modEnvAttack:return X.attackModEnv;case Q.modEnvHold:return X.holdModEnv;case Q.modEnvDecay:return X.decayModEnv;case Q.modEnvSustain:return{gen:X.sustainModEnv,newAmount:1e3-e};case Q.modEnvRelease:return X.releaseModEnv;case Q.filterCutoff:return X.initialFilterFc;case Q.filterQ:return X.initialFilterQ;case Q.chorusSend:return X.chorusEffectsSend;case Q.reverbSend:return X.reverbEffectsSend;case Q.modLfoFreq:return X.freqModLFO;case Q.modLfoDelay:return X.delayModLFO;case Q.vibLfoFreq:return X.freqVibLFO;case Q.vibLfoDelay:return X.delayVibLFO}}},$=class extends id{connectionBlocks=[];mode=`dls2`;get length(){return this.connectionBlocks.length}copyFrom(e){this.mode=e.mode;for(let t of e.connectionBlocks)this.connectionBlocks.push(vd.copyFrom(t))}fromSFZone(e){this.mode=`dls2`;let t=new Bu;t.copyFrom(e);for(let e of t.generators){let n;switch(e.type){default:continue;case X.keyNumToVolEnvDecay:n=X.decayVolEnv;break;case X.keyNumToVolEnvHold:n=X.holdVolEnv;break;case X.keyNumToModEnvDecay:n=X.decayModEnv;break;case X.keyNumToModEnvHold:n=X.holdModEnv}let r=t.getGenerator(n,void 0),i=e.value*-128;if(r===void 0)continue;let a=r-60/128*i;t.setGenerator(e.type,i,!1),t.setGenerator(n,a,!1)}for(let e of t.generators)vd.fromSFGenerator(e,this);for(let e of t.modulators)vd.fromSFModulator(e,this)}read(e){let t=K.findListType(e,`lart`),n=K.findListType(e,`lar2`);if(t)for(this.mode=`dls1`;t.data.currentIndexe.write()),n=K.getParts(this.mode===`dls2`?`art2`:`art1`,[e,...t]);return K.getParts(this.mode===`dls2`?`lar2`:`lart`,n,!0)}toSFZone(e){let t=(t,n,r,i)=>{let a=t/-128;if(e.setGenerator(n,a),a<=120){let n=Math.round(60/128*t),a=this.connectionBlocks.find(e=>e.isStaticParameter&&e.destination===i);a&&e.setGenerator(r,n+a.shortScale)}};for(let t of this.connectionBlocks){let n=t.shortScale,r=t.source.source,i=t.control.source,a=t.destination;if(t.isStaticParameter){t.toSFGenerator(e);continue}if(i===Z.none)if(r===Z.keyNum){if(a===Q.pitch){e.setGenerator(X.scaleTuning,n/128);continue}if(a===Q.modEnvHold||a===Q.modEnvDecay||a===Q.volEnvHold||a===Q.volEnvDecay)continue}else{let r=t.toCombinedSFDestination();if(r){e.setGenerator(r,n);continue}}t.toSFModulator(e)}for(let e of this.connectionBlocks){if(e.source.source!==Z.keyNum)continue;let n=e.shortScale;switch(e.destination){default:case Q.volEnvHold:t(n,X.keyNumToVolEnvHold,X.holdVolEnv,Q.volEnvHold);break;case Q.volEnvDecay:t(n,X.keyNumToVolEnvDecay,X.decayVolEnv,Q.volEnvDecay);break;case Q.modEnvHold:t(n,X.keyNumToModEnvHold,X.holdModEnv,Q.modEnvHold);break;case Q.modEnvDecay:t(n,X.keyNumToModEnvDecay,X.decayModEnv,Q.modEnvDecay);break}}if(this.mode===`dls1`){e.setGenerator(X.delayVibLFO,e.getGenerator(X.delayModLFO,null)),e.setGenerator(X.freqVibLFO,e.getGenerator(X.freqModLFO,null)),e.setGenerator(X.vibLfoToPitch,e.getGenerator(X.modLfoToPitch,null)),e.setGenerator(X.modLfoToPitch,null);for(let t of e.modulators)t.destination===X.modLfoToPitch&&(t.destination=X.vibLfoToPitch)}}},yd=class e{channel=1;tableIndex;fusOptions=0;phaseGroup=0;constructor(e){this.tableIndex=e}static copyFrom(t){let n=new e(t.tableIndex);return n.channel=t.channel,n.phaseGroup=t.phaseGroup,n.fusOptions=t.fusOptions,n}static read(t){let n=H(t.data,2),r=H(t.data,2),i=H(t.data,4),a=new e(H(t.data,4));return a.channel=i,a.fusOptions=n,a.phaseGroup=r,a}static fromSFZone(t,n){let r=t.indexOf(n.sample);if(r===-1)throw Error(`Wave link error: Sample ${n.sample.name} does not exist in the sample list.`);let i=new e(r);switch(n.sample.sampleType){default:case yu.leftSample:case yu.monoSample:i.channel=1;break;case yu.rightSample:i.channel=2}return i}write(){let e=new Ml(12);return U(e,this.fusOptions),U(e,this.phaseGroup),W(e,this.channel),W(e,this.tableIndex),K.write(`wlnk`,e)}},bd=class e extends id{articulation=new $;keyRange={min:0,max:127};velRange={min:0,max:127};keyGroup=0;fusOptions=0;usLayer=0;waveSample;waveLink;constructor(e,t){super(),this.waveSample=t,this.waveLink=e}static copyFrom(t){let n=new e(yd.copyFrom(t.waveLink),cd.copyFrom(t.waveSample));return n.keyGroup=t.keyGroup,n.keyRange={...t.keyRange},n.velRange={...t.velRange},n.usLayer=t.usLayer,n.fusOptions=t.fusOptions,n.articulation.copyFrom(t.articulation),n}static read(t,n){let r=this.verifyAndReadList(n,`rgn `,`rgn2`),i=r.find(e=>e.header===`wsmp`),a=i?cd.read(i):void 0,o=r.find(e=>e.header===`wlnk`);if(!o){J.warn(`Invalid DLS region: missing 'wlnk' chunk! Discarding...`);return}let s=yd.read(o),c=r.find(e=>e.header===`rgnh`);if(!c){J.warn(`Invalid DLS region: missing 'rgnh' chunk! Discarding...`);return}let l=t[s.tableIndex];l||e.parsingError(`Invalid sample index: ${s.tableIndex}. Samples available: ${t.length}`),a??=l.waveSample;let u=new e(s,a),d=H(c.data,2),f=H(c.data,2),p=H(c.data,2),m=H(c.data,2);return p===0&&m===0&&(m=127,p=0),u.keyRange.max=f,u.keyRange.min=d,u.velRange.max=m,u.velRange.min=p,u.fusOptions=H(c.data,2),u.keyGroup=H(c.data,2),c.data.length-c.data.currentIndex>=2&&(u.usLayer=H(c.data,2)),u.articulation.read(r),u}static fromSFZone(t,n){let r=cd.fromSFZone(t),i=new e(yd.fromSFZone(n,t),r);return i.keyRange.min=Math.max(t.keyRange.min,0),i.keyRange.max=t.keyRange.max,i.velRange.min=Math.max(t.velRange.min,0),i.velRange.max=t.velRange.max,i.keyGroup=t.getGenerator(X.exclusiveClass,0),i.articulation.fromSFZone(t),i}write(){let e=[this.writeHeader(),this.waveSample.write(),this.waveLink.write(),...this.articulation.write()];return K.getParts(`rgn2`,e,!1,!0)}toSFZone(t,n){let r=n[this.waveLink.tableIndex];r||e.parsingError(`Invalid sample index: ${this.waveLink.tableIndex}`);let i=t.createZone(r);return i.keyRange=this.keyRange,i.velRange=this.velRange,this.keyRange.max===127&&this.keyRange.min===0&&(i.keyRange.min=-1),this.velRange.max===127&&this.velRange.min===0&&(i.velRange.min=-1),this.keyGroup!==0&&i.setGenerator(X.exclusiveClass,this.keyGroup),this.waveSample.toSFZone(i,r),this.articulation.toSFZone(i),i.generators=i.generators.filter(e=>e.value!==vu[e.type].def),i}writeHeader(){let e=new Ml(14);return U(e,Math.max(this.keyRange.min,0)),U(e,this.keyRange.max),U(e,Math.max(this.velRange.min,0)),U(e,this.velRange.max),U(e,this.fusOptions),U(e,this.keyGroup),U(e,this.usLayer),K.write(`rgnh`,e)}},xd=class e extends id{articulation=new $;regions=[];name=`Unnamed`;bankLSB=0;bankMSB=0;isGMGSDrum=!1;program=0;static copyFrom(t){let n=new e;n.name=t.name,n.isGMGSDrum=t.isGMGSDrum,n.bankMSB=t.bankMSB,n.bankLSB=t.bankLSB,n.program=t.program,n.articulation.copyFrom(t.articulation);for(let e of t.regions)n.regions.push(bd.copyFrom(e));return n}static read(t,n){let r=this.verifyAndReadList(n,`ins `),i=r.find(e=>e.header===`insh`);if(!i)throw J.groupEnd(),Error(`No instrument header!`);let a=``,o=K.findListType(r,`INFO`);if(o){let e=K.read(o.data);for(;e.header!==`INAM`;)e=K.read(o.data);a=Pl(e.data,e.data.length).trim()}a.length===0&&(a=`Unnamed Instrument`);let s=new e;s.name=a;let c=H(i.data,4),l=H(i.data,4);s.program=H(i.data,4)&127,s.bankMSB=l>>>8&127,s.bankLSB=l&127,s.isGMGSDrum=l>>>31>0,J.groupCollapsed(`%cParsing %c"${a}"%c...`,G.info,G.recognized,G.info);let u=K.findListType(r,`lrgn`);if(!u)throw J.groupEnd(),Error(`No region list!`);s.articulation.read(r);for(let e=0;ee.write());e.push(...K.getParts(`lrgn`,t,!1,!0)),this.articulation.length>0&&e.push(...this.articulation.write());let n=K.write(`INAM`,Fl(this.name,!0));return e.push(K.write(`INFO`,n,!1,!0)),J.groupEnd(),K.writeParts(`ins `,e,!1,!0)}toSFPreset(e){let t=new qu(e);t.name=this.name,t.bankMSB=this.bankMSB,t.bankLSB=this.bankLSB,t.isGMGSDrum=this.isGMGSDrum,t.program=this.program;let n=new Yu;n.name=this.name,t.createZone(n),this.articulation.toSFZone(n.globalZone);for(let t of this.regions)t.toSFZone(n,e.samples);n.globalize(),n.globalZone.modulators.some(e=>e.destination===X.reverbEffectsSend)||n.globalZone.addModulators(Pu.copyFrom(hd)),n.globalZone.modulators.some(e=>e.destination===X.chorusEffectsSend)||n.globalZone.addModulators(Pu.copyFrom(gd)),n.globalZone.generators=n.globalZone.generators.filter(e=>e.value!==vu[e.type].def),e.addPresets(t),e.addInstruments(n)}writeHeader(){let e=new Ml(12);W(e,this.regions.length);let t=(this.bankMSB&127)<<8|this.bankLSB&127;return this.isGMGSDrum&&(t|=1<<31),W(e,t),W(e,this.program&127),K.write(`insh`,e)}},Sd={software:`SpessaSynth`},Cd=class e extends id{samples=[];instruments=[];soundBankInfo={name:`Unnamed DLS sound bank`,creationDate:new Date,software:`SpessaSynth`,soundEngine:`DLS Level 2.2`,product:`SpessaSynth DLS`,version:{major:2,minor:4}};static read(t){if(!t)throw Error(`No data provided!`);let n=new Ml(t);J.group(`%cParsing DLS file...`,G.info);let r=K.read(n,!1,!1);this.verifyHeader(r,`RIFF`),this.verifyText(Pl(n,4).toLowerCase(),`dls `);let i=[];for(;n.currentIndexe.header===`colh`);if(!s)return this.parsingError(`No colh chunk!`),5;let c=H(s.data,4);J.info(`%cInstruments amount: %c${c}`,G.info,G.recognized);let l=K.findListType(i,`wvpl`);if(!l)return this.parsingError(`No wvpl chunk!`),5;let u=this.verifyAndReadList(l,`wvpl`);for(let e of u)a.samples.push(pd.read(e));let d=K.findListType(i,`lins`);if(!d)return this.parsingError(`No lins chunk!`),5;let f=this.verifyAndReadList(d,`lins`);J.groupCollapsed(`%cLoading instruments...`,G.info),f.length!==c&&J.warn(`Colh reported invalid amount of instruments. Detected ${f.length}, expected ${c}`);for(let e of f)a.instruments.push(xd.read(a.samples,e));J.groupEnd();let p=i.find(e=>e.header===`pgal`);if(p){J.info(`%cFound the instrument aliasing chunk!`,G.recognized);let e=p.data;(e[0]!==0||e[1]!==1||e[2]!==2||e[3]!==3)&&(e.currentIndex+=4);let t=a.instruments.find(e=>Wl.isXGDrum(e.bankMSB)||e.isGMGSDrum);if(!t)return J.warn(`MobileBAE aliasing chunk without a drum preset. Aborting!`),a;let n=e.slice(e.currentIndex,e.currentIndex+128);e.currentIndex+=128;for(let e=0;e<128;e++){let r=n[e];if(r===e)continue;let i=t.regions.find(e=>e.keyRange.max===r&&e.keyRange.min===r);if(!i){J.warn(`Invalid drum alias ${e} to ${r}: region does not exist.`);continue}let a=bd.copyFrom(i);a.keyRange.max=e,a.keyRange.min=e,t.regions.push(a)}for(e.currentIndex+=4;e.currentIndex>7&127,i=e[e.currentIndex++],o=e[e.currentIndex++];o!==0&&J.warn(`Invalid alias byte. Expected 0, got ${o}`);let s=H(e,2),c=s&127,l=s>>7&127,u=e[e.currentIndex++];o=e[e.currentIndex++],o!==0&&J.warn(`Invalid alias header. Expected 0, got ${o}`);let d=a.instruments.find(e=>e.bankLSB===c&&e.bankMSB===l&&e.program===u&&!e.isGMGSDrum);if(!d){J.warn(`Invalid alias. Missing instrument: ${c}:${l}:${u}`);continue}let f=xd.copyFrom(d);f.bankMSB=r,f.bankLSB=n,f.program=i,a.instruments.push(f)}}return J.info(`%cParsing finished! %c"${a.soundBankInfo.name||`UNNAMED`}"%c has %c${a.instruments.length}%c instruments and %c${a.samples.length}%c samples.`,G.info,G.recognized,G.info,G.recognized,G.info,G.recognized,G.info),J.groupEnd(),a}static fromSF(t,n){J.groupCollapsed(`%cSaving SF2 to DLS level 2...`,G.info);let r=new e;r.soundBankInfo={...t.soundBankInfo};for(let e=0;ee.write()),!1,!0);J.info(`%cSuccess!`,G.recognized),J.groupEnd(),J.groupCollapsed(`%cWriting WAVE samples...`,G.info);let a=0,o=[],s=[],c=0;for(let e of this.samples){let n=e.write();t.progressFunction?.(c/this.samples.length),J.info(`%cWrote sample %c${c}. ${e.name}%c of %c${this.samples.length}.`,G.info,G.recognized,G.info,G.recognized),o.push(a),a+=n.reduce((e,t)=>e+t.length,0),s.push(...n),c++}let l=K.getParts(`wvpl`,s,!1,!0);J.info(`%cSucceeded!`,G.recognized);let u=new Ml(8+4*o.length);W(u,8),W(u,o.length);for(let e of o)W(u,e);let d=K.write(`ptbl`,u);this.soundBankInfo.software=t.software;let f=[],p=this.soundBankInfo,m=(e,t)=>{t&&f.push(...K.getParts(e,[Fl(t,!0)]))};m(`INAM`,p.name),m(`ICMT`,p.comment),m(`ICOP`,p.copyright),m(`ICRD`,Kl(p.creationDate)),m(`IENG`,p.engineer),m(`IPRD`,p.product),m(`ISFT`,t.software),m(`ISBJ`,p.subject),J.info(`%cCombining everything...`);let h=K.writeParts(`RIFF`,[Fl(`DLS `),r,...i,d,...l,...K.getParts(`INFO`,f,!1,!0)]);return J.info(`%cSaved successfully!`,G.recognized),J.groupEnd(),h.buffer}toSF(){J.group(`%cConverting DLS to SF2...`,G.info);let e=new wd(`dls`);e.soundBankInfo.version.minor=4,e.soundBankInfo.version.major=2,e.soundBankInfo={...this.soundBankInfo};for(let t of this.samples)t.toSFSample(e);for(let t of this.instruments)t.toSFPreset(e);return e.flush(),J.info(`%cConversion complete!`,G.recognized),J.groupEnd(),e}},wd=class e{static isSF3DecoderReady=su.isInitialized;type;soundBankInfo={name:`Unnamed`,creationDate:new Date,software:`SpessaSynth`,soundEngine:`E-mu 10K2`,version:{major:2,minor:4}};presets=[];samples=[];instruments=[];defaultModulators=Ru.map(Pu.copyFrom.bind(Pu));customDefaultModulators=!1;constructor(e=`sf2`){this.type=e}_isXGBank=!1;get isXGBank(){return this._isXGBank}static mergeSoundBanks(...t){let n=t.shift();if(!n)throw Error(`No sound banks provided!`);let r=n.presets;for(;t.length>0;){let e=t?.shift()?.presets;if(e)for(let t of e)r.some(e=>t.matches(e))||r.push(t)}let i=new e;return i.addCompletePresets(r),i.soundBankInfo={...n.soundBankInfo},i}static getSampleSoundBankFile(){let t=new e,n=new Float32Array(128);for(let e=0;e<128;e++)n[e]=e/128*2-1;let r=new Uu;r.name=`Saw`,r.originalKey=65,r.pitchCorrection=20,r.loopEnd=128,r.setAudioData(n,44100),t.addSamples(r);let i=new Yu;i.name=`Saw Wave`,i.globalZone.addGenerators(new zu(X.initialAttenuation,375),new zu(X.releaseVolEnv,-1e3),new zu(X.sampleModes,1)),i.createZone(r),i.createZone(r).setGenerator(X.fineTune,-9),t.addInstruments(i);let a=new qu(t);return a.name=`Saw Wave`,a.createZone(i),t.addPresets(a),t.soundBankInfo.name=`SpessaSynth Sample Sound Bank`,t.flush(),t.writeSF2()}static copyFrom(t){let n=new e;for(let e of t.presets)n.clonePreset(e);return n.soundBankInfo={...t.soundBankInfo},n}addCompletePresets(e){this.addPresets(...e);let t=[];for(let n of e)for(let e of n.zones)e.instrument&&!t.includes(e.instrument)&&t.push(e.instrument);this.addInstruments(...t);let n=[];for(let e of t)for(let t of e.zones)t.sample&&!n.includes(t.sample)&&n.push(t.sample);this.addSamples(...n)}async setSampleFormat(e){let t=0,n=e.format,r=e.progressFunction;for(let i of this.samples){switch(n){default:case`pcm`:i.setAudioData(i.getAudioData(),i.sampleRate);break;case`compressed`:{let t=e.compressionFunction;if(!t)throw Error(`No compression function supplied but '${n}' was requested.`);await i.compressSample(t)}}t++,r?.(t/this.samples.length),J.info(`%cEncoded sample %c${t}. ${i.name}%c of %c${this.samples.length}%c. Compressed: %c${i.isCompressed}%c.`,G.info,G.recognized,G.info,G.recognized,G.info,i.isCompressed?G.recognized:G.unrecognized,G.info)}switch(n){default:case`pcm`:this.soundBankInfo.version.major=2,this.soundBankInfo.version.minor=4;break;case`compressed`:this.soundBankInfo.version.major=3,this.soundBankInfo.version.minor=0}}writeDLS(e=Sd){let t=e.progressFunction;return Cd.fromSF(this,t?e=>t(e/2):void 0).write({...e,progressFunction:t?e=>t(.5+e/2):void 0})}writeSF2(e=$u){return td(this,e)}writeSFE(e=ed){return nd(this,e)}addPresets(...e){this.presets.push(...e)}addInstruments(...e){this.instruments.push(...e)}addSamples(...e){this.samples.push(...e)}cloneSample(e){let t=this.samples.find(t=>t.name===e.name);if(t)return t;let n=new Hu(e.name,e.sampleRate,e.originalKey,e.pitchCorrection,e.sampleType,e.loopStart,e.loopEnd);if(e.isCompressed?n.setCompressedData(e.getRawData(!0)):n.setAudioData(e.getAudioData(),e.sampleRate),this.addSamples(n),e.linkedSample){let t=this.cloneSample(e.linkedSample);t.linkedSample||n.setLinkedSample(t,n.sampleType)}return n}cloneInstrument(e){let t=this.instruments.find(t=>t.name===e.name);if(t)return t;let n=new Yu;n.name=e.name,n.globalZone.copyFrom(e.globalZone);for(let t of e.zones)n.createZone(this.cloneSample(t.sample)).copyFrom(t);return this.addInstruments(n),n}clonePreset(e){let t=this.presets.find(t=>t.name===e.name);if(t)return t;let n=new qu(this);n.name=e.name,n.bankMSB=e.bankMSB,n.bankLSB=e.bankLSB,n.isGMGSDrum=e.isGMGSDrum,n.program=e.program,n.library=e.library,n.genre=e.genre,n.morphology=e.morphology,n.globalZone.copyFrom(e.globalZone);for(let t of e.zones)n.createZone(this.cloneInstrument(t.instrument)).copyFrom(t);return this.addPresets(n),n}flush(){this.presets.sort(Gl.compare.bind(Gl)),this.parseInternal()}trim(e){let t=(e,t)=>{let n=0;for(let r=0;r=a.min&&e<=a.max&&[...n].some(e=>e>=o.min&&e<=o.max)){s=!0;break}s||(J.info(`%c${i.sample.name}%c removed from %c${e.name}%c.`,G.recognized,G.info,G.recognized,G.info),e.deleteZone(r)&&(n++,r--,J.info(`%c${i.sample.name}%c deleted`,G.recognized,G.info)),i.sample.useCount<1&&this.deleteSample(i.sample))}return n};J.groupCollapsed(`%cTrimming sound bank...`,G.info),J.info(`Combinations to trim for:`,e);for(let n=0;n=o.min&&e<=o.max&&[...n].some(e=>e>=s.min&&e<=s.max)){c=!0;let e=t(a.instrument,i);J.info(`%cTrimmed off %c${e}%c instrument zones from %c${a.instrument.name}`,G.info,G.recognized,G.info,G.recognized);break}c||(e++,r.deleteZone(n),a.instrument.useCount<1&&this.deleteInstrument(a.instrument),n--)}J.info(`%cTrimmed off %c${e}%c preset zones from %c${r.name}`,G.info,G.recognized,G.info,G.recognized),J.groupEnd()}}this.removeUnusedElements(),J.info(`%cSound bank modified!`,G.recognized),J.groupEnd()}removeUnusedElements(){this.instruments=this.instruments.filter(e=>{e.deleteUnusedZones();let t=e.useCount<1;return t&&e.delete(),!t}),this.samples=this.samples.filter(e=>{let t=e.useCount<1;return t&&e.unlinkSample(),!t})}deleteInstrument(e){e.delete(),this.instruments.splice(this.instruments.indexOf(e),1)}deletePreset(e){e.delete(),this.presets.splice(this.presets.indexOf(e),1)}deleteSample(e){e.unlinkSample(),this.samples.splice(this.samples.indexOf(e),1)}getPreset(e,t){return Gl.selectPatch(this.presets,e,t)}destroySoundBank(){this.presets.length=0,this.instruments.length=0,this.samples.length=0}parsingError(e){throw Error(`SF parsing error: ${e} The file may be corrupted.`)}parseInternal(){this._isXGBank=!1;let e=new Set([0,1,2,3,4,5,6,7,8,9,16,17,24,25,26,27,28,29,30,31,32,33,40,41,48,56,57,58,64,65,66,126,127]);for(let t of this.presets)if(Wl.isXGDrum(t.bankMSB)&&(this._isXGBank=!0,!e.has(t.program))){this._isXGBank=!1,J.info(`%cThis bank is not valid XG. Preset %c${t.toString()}%c is not a valid XG drum. XG mode will use presets on bank 128.`,G.info,G.value,G.info);break}}printInfo(){for(let[e,t]of Object.entries(this.soundBankInfo))if(typeof t==`object`&&`major`in t){let n=t;J.info(`%c${e}: %c"${n.major}.${n.minor}"`,G.info,G.recognized)}else J.info(`%c${e}: %c${t.toLocaleString()}`,G.info,G.recognized)}},Td=class e extends Pu{isEffectModulator;isDefaultResonantModulator;isModWheelModulator;constructor(e,t,n,r,i,a,o,s){super(e,t,n,r,i),this.isEffectModulator=a,this.isDefaultResonantModulator=o,this.isModWheelModulator=s}static fromData(t,n,r,i,a){let o=t.toSourceEnum(),s=n.toSourceEnum();return new e(t,n,r,i,a,(o===219||o===221)&&s===0&&(r===X.reverbEffectsSend||r===X.chorusEffectsSend),o===Nu&&s===0&&r===X.initialFilterQ,(t.isCC&&t.index===Y.modulationWheel||n.isCC&&n.index===Y.modulationWheel)&&(r===X.modLfoToPitch||r===X.vibLfoToPitch))}static fromModulator(e){return this.fromData(e.primarySource,e.secondarySource,e.destination,e.transformAmount,e.transformType)}},Ed=Math.PI/2,Dd=-500,Od=500,kd=Od-Dd,Ad=new Float32Array(1001),jd=new Float32Array(1001);for(let e=Dd;e<=Od;e++){let t=(e-Dd)/kd,n=e-Dd;Ad[n]=Math.cos(Ed*t),jd[n]=Math.sin(Ed*t)}X.delayModLFO,X.freqModLFO,X.delayVibLFO,X.freqVibLFO,X.delayModEnv,X.attackModEnv,X.holdModEnv,X.decayModEnv,X.sustainModEnv,X.releaseModEnv,X.delayVolEnv,X.attackVolEnv,X.holdVolEnv,X.decayVolEnv,X.sustainVolEnv,X.releaseVolEnv,X.fineTune,X.modLfoToPitch,X.vibLfoToPitch,X.modEnvToPitch,X.modLfoToVolume,X.initialFilterFc,X.initialFilterQ,X.modLfoToFilterFc,X.modEnvToFilterFc,X.chorusEffectsSend,X.reverbEffectsSend,Td.fromModulator(new Fu(Mu(xu.linear,!0,!1,!0,Y.vibratoRate),0,X.vibLfoRate,1e3,0));var Md={pitchWheel:8192,pitchWheelRange:2,pressure:0,modulationDepth:50,rxChannel:0,polyMode:!0,keyShift:0,fineTune:0,randomPan:!1,assignMode:2,efxAssign:!1,cc1:16,cc2:17,drumMap:0,velocitySenseDepth:64,velocitySenseOffset:64},Nd={presetLock:!1,isMuted:!1,gain:1,pan:0,keyShift:0,fineTune:0,interpolationType:null,nrpnParamLock:null,monophonicRetrigger:null},Pd=Math.PI/2,Fd=-64,Id=63,Ld=Id-Fd,Rd=new Float32Array(128),zd=new Float32Array(128);for(let e=Fd;e<=Id;e++){let t=(e-Fd)/Ld,n=e-Fd;Rd[n]=Math.cos(Pd*t),zd[n]=Math.sin(Pd*t)}Math.PI*2,Math.PI*2;var Bd={volume:1,pan:0,keyShift:0,fineTune:0,system:`gs`},Vd={eventsEnabled:!0,oneOutput:!1,audioNodeCreators:void 0},Hd=`spessasynth-worklet-processor`;function Ud(e,t){return{...t,...e}}var Wd=class{keyModifiers=[];synth;constructor(e){this.synth=e}addModifier(e,t,n){let r=new cu;r.gain=n?.gain??1,r.velocity=n?.velocity??-1,r.patch=Ud(n.patch??{},{isGMGSDrum:!1,bankLSB:-1,bankMSB:-1,program:-1}),this.keyModifiers[e]??=[],this.keyModifiers[e][t]=r,this.sendToWorklet(`addMapping`,{channel:e,midiNote:t,mapping:r})}getModifier(e,t){return this.keyModifiers?.[e]?.[t]}deleteModifier(e,t){this.sendToWorklet(`deleteMapping`,{channel:e,midiNote:t}),this.keyModifiers[e]?.[t]!==void 0&&(this.keyModifiers[e][t]=void 0)}clearModifiers(){this.sendToWorklet(`clearMappings`,null),this.keyModifiers=[]}sendToWorklet(e,t){let n={type:e,data:t};this.synth.post({type:`keyModifierManager`,channelNumber:-1,data:n})}},Gd=class{soundBankList;synth;constructor(e){this.soundBankList=[],this.synth=e}get priorityOrder(){return this.soundBankList.map(e=>e.id)}set priorityOrder(e){this.sendToWorklet(`rearrangeSoundBanks`,e),this.soundBankList.sort((t,n)=>e.indexOf(t.id)-e.indexOf(n.id))}async addSoundBank(e,t,n=0){this.sendToWorklet(`addSoundBank`,{soundBankBuffer:e,bankOffset:n,id:t},[e]),await this.awaitResponse();let r=this.soundBankList.find(e=>e.id===t);r===void 0?this.soundBankList.push({id:t,bankOffset:n}):r.bankOffset=n}async deleteSoundBank(e){if(this.soundBankList.length<2){J.warn(`1 sound bank left. Aborting!`);return}if(!this.soundBankList.some(t=>t.id===e)){J.warn(`No sound banks with id of "${e}" found. Aborting!`);return}this.sendToWorklet(`deleteSoundBank`,e),this.soundBankList=this.soundBankList.filter(t=>t.id!==e),await this.awaitResponse()}async awaitResponse(){return new Promise(e=>this.synth.awaitWorkerResponse(`soundBankManager`,e))}sendToWorklet(e,t,n=[]){let r={type:`soundBankManager`,channelNumber:-1,data:{type:e,data:t}};this.synth.post(r,n)}},Kd=class{timeDelay=0;events={noteOff:new Map,noteOn:new Map,controllerChange:new Map,programChange:new Map,polyPressure:new Map,stopAll:new Map,channelAdded:new Map,presetListChange:new Map,reset:new Map,soundBankError:new Map,displayMessage:new Map,globalParamChange:new Map,channelParamChange:new Map,effectChange:new Map};addEvent(e,t,n){this.events[e].set(t,n)}removeEvent(e,t){this.events[e].delete(t)}callEventInternal(e,t){let n=this.events[e],r=()=>{for(let r of n.values())try{r(t)}catch(t){console.error(`Error while executing an event callback for ${e}:`,t)}};this.timeDelay>0?setTimeout(r.bind(this),this.timeDelay*1e3):r()}},qd=Vl.ConsoleColors,Jd=class{channel;synth;_systemParameters={...Nd};constructor(e,t){this.channel=e,this.synth=t}_patch={bankMSB:0,bankLSB:0,program:0,isDrum:!1,isGMGSDrum:!1,name:``};get patch(){return this._patch}set patch(e){this._patch=e}_midiParameters={...Md};get midiParameters(){return this._midiParameters}get systemParameters(){return this._systemParameters}_voiceCount=0;get voiceCount(){return this._voiceCount}set voiceCount(e){this._voiceCount=e}lockMIDIParameter(e,t){this.synth.post({type:`lockChannelMIDIParameter`,channelNumber:this.channel,data:{parameter:e,isLocked:t}})}setSystemParameter(e,t){this._systemParameters[e]=t,this.synth.post({type:`setChannelSystemParameter`,channelNumber:this.channel,data:{parameter:e,value:t}})}lockController(e,t){this.synth.post({channelNumber:this.channel,type:`lockController`,data:{controller:e,isLocked:t}})}setDrums(e){this.synth.post({channelNumber:this.channel,type:`setDrums`,data:e})}setMIDIParameter(e,t){this._midiParameters[e]=t}reset(){this._midiParameters={...Md}}},Yd={time:0},Xd=e=>`SPESSASYNTH_LIB_HANDLE_${e}_${Math.random()}`,Zd=class{soundBankManager=new Gd(this);keyModifierManager=new Wd(this);eventHandler=new Kd;context;midiChannels=[];presetList=[];sequencers=[];isReady;post;worklet;_outputCount=16;_systemParameters={...lu};resolveMap=new Map;renderingProgressTracker=new Map;constructor(e,t,n){J.info(`%cInitializing SpessaSynth synthesizer...`,qd.info),this.context=e.context,this.worklet=e,this.post=t,this.isReady=new Promise(e=>this.awaitWorkerResponse(`sf3Decoder`,e)),this.worklet.port.onmessage=e=>this.handleMessage(e.data);for(let e=0;e<16;e++)this.addNewChannelInternal(!1);this.registerInternalEvent(`channelAdded`,()=>{this.addNewChannelInternal(!1)}),this.registerInternalEvent(`presetListChange`,e=>this.presetList=[...e]),this.registerInternalEvent(`globalParamChange`,e=>this._midiParameters[e.parameter]=e.value),this.registerInternalEvent(`channelParamChange`,e=>this.midiChannels[e.channel].setMIDIParameter(e.parameter,e.value)),this.registerInternalEvent(`programChange`,e=>this.midiChannels[e.channel].patch={...e}),this.registerInternalEvent(`reset`,()=>{for(let e of this.midiChannels)e.reset();this._midiParameters={...Bd}})}_midiParameters={...Bd};get midiParameters(){return this._midiParameters}get channelCount(){return this.midiChannels.length}_voiceCount=0;get voiceCount(){return this._voiceCount}get currentTime(){return this.context.currentTime}get systemParameters(){return this._systemParameters}connect(e){for(let t=0;t<17;t++)this.worklet.connect(e,t);return e}disconnect(e){if(!e){this.worklet.disconnect();return}for(let t=0;t<17;t++)this.worklet.disconnect(e,t);return e}setLogLevel(e,t,n){this.post({channelNumber:-1,type:`setLogLevel`,data:{enableInfo:e,enableWarning:t,enableGroup:n}})}lockMIDIParameter(e,t){this.post({type:`lockGlobalMIDIParameter`,data:{parameter:e,isLocked:t},channelNumber:-1})}setSystemParameter(e,t){this._systemParameters[e]=t,this.post({type:`setGlobalSystemParameter`,channelNumber:-1,data:{parameter:e,value:t}})}async getSnapshot(){return new Promise(e=>{this.awaitWorkerResponse(`synthesizerSnapshot`,t=>{e(t)}),this.post({type:`requestSynthesizerSnapshot`,data:null,channelNumber:-1})})}addNewChannel(){this.addNewChannelInternal(!0)}connectChannel(e,t){return this.worklet.connect(e,t%16+1),e}disconnectChannel(e,t){this.worklet.disconnect(e,t%16+1)}connectIndividualOutputs(e){if(e.length!==this._outputCount)throw Error(`input nodes amount differs from the system's outputs amount! + Expected ${this._outputCount} got ${e.length}`);for(let t=0;t127||t<0)throw Error(`Invalid controller number: ${t}`);n=Math.floor(n)%128,t=Math.floor(t)%128;let i=e%16,a=e-i;this._sendInternal([Hl.controllerChange|i,t,n],a,r)}reset(){this.post({channelNumber:-1,type:`ccReset`,data:null})}channelPressure(e,t,n=Yd){let r=e%16,i=e-r;t%=128,this.sendMessage([Hl.channelPressure|r,t],i,n)}polyPressure(e,t,n,r=Yd){let i=e%16,a=e-i;t%=128,n%=128,this.sendMessage([Hl.polyPressure|i,t,n],a,r)}pitchWheel(e,t,n=Yd){let r=e%16,i=e-r;this.sendMessage([Hl.pitchWheel|r,t&127,t>>7],i,n)}pitchWheelRange(e,t,n=Yd){this.controllerChange(e,Y.registeredParameterMSB,0,n),this.controllerChange(e,Y.registeredParameterLSB,0,n),this.controllerChange(e,Y.dataEntryMSB,t),this.controllerChange(e,Y.registeredParameterMSB,127,n),this.controllerChange(e,Y.registeredParameterLSB,127,n),this.controllerChange(e,Y.dataEntryMSB,0,n)}programChange(e,t,n=Yd){let r=e%16,i=e-r;t%=128,this.sendMessage([Hl.programChange|r,t],i,n)}systemExclusive(e,t=0,n=Yd){this._sendInternal([Hl.systemExclusive,...Array.from(e)],t,n)}tuneKeys(e,t){if(t.length>127)throw Error(`Too many tunings. Maximum allowed is 127.`);let n=[127,16,8,2,e,t.length];for(let e of t)if(n.push(e.sourceKey),e.targetPitch===-1)n.push(127,127,127);else{let t=Math.floor(e.targetPitch),r=Math.floor((e.targetPitch-t)/61e-6);n.push(t,r>>7&127,r&127)}n.push(247),this.systemExclusive(n)}reverbateEverythingBecauseWhyNot(){for(let e=0;ee+t,0);break;case`isFullyInitialized`:this.workletResponds(e.data.type,e.data.data);break;case`soundBankError`:J.warn(e.data),this.eventHandler.callEventInternal(`soundBankError`,e.data);break;case`renderingProgress`:this.renderingProgressTracker.get(e.data.type)?.(e.data.data)}}addNewChannelInternal(e){this.midiChannels.push(new Jd(this.midiChannels.length,this)),e&&this.post({channelNumber:0,type:`addNewChannel`,data:null})}workletResponds(e,t){this.resolveMap.get(e)?.(t),this.resolveMap.delete(e)}registerInternalEvent(e,t){this.eventHandler.addEvent(e,Xd(e),t)}},Qd=class extends Zd{constructor(e,t=Vd){let n=Ud(t,Vd),r=Array(17).fill(2),i=17;n.oneOutput&&(r=[34],i=1);let a;try{a=(n?.audioNodeCreators?.worklet??((e,t,n)=>new AudioWorkletNode(e,t,n)))(e,Hd,{outputChannelCount:r,numberOfOutputs:i,processorOptions:{oneOutput:n.oneOutput,eventsEnabled:n.eventsEnabled}})}catch(e){throw console.error(e),Error(`Could not create the AudioWorkletNode. Did you forget to addModule()?`,{cause:e})}super(a,(e,t=[])=>{a.port.postMessage(e,t)},n)}async startOfflineRender(e){this.post({type:`startOfflineRender`,data:e,channelNumber:-1},e.soundBankList.map(e=>e.soundBankBuffer)),await new Promise(e=>this.awaitWorkerResponse(`startOfflineRender`,e))}destroy(){this.post({channelNumber:0,type:`destroyWorklet`,data:null}),this.worklet.disconnect(),delete this.worklet}},$d={trim:!0,bankID:``,writeEmbeddedSoundBank:!0,sequencerID:0},ef={...$d,writeDefaultModulators:!0,writeExtendedLimits:!0,compressionAction:`keep`,compressionQuality:1,software:`SpessaSynth`};({...$d}),{...ef},{...$d};var tf=`/assets/spessasynth_processor.min-tdOdhV7p.js`,nf=`/soundfonts/MuseScore_General.sf3`,rf=9,af={acoustic_piano:0,electric_piano:4,chromatic_percussion:9,organ:19,acoustic_guitar:24,clean_electric_guitar:27,distorted_electric_guitar:30,acoustic_bass:32,electric_bass:33,violin:40,viola:41,cello:42,contrabass:43,orchestral_harp:46,timpani:47,string_ensemble:48,synth_strings:50,voice:52,orchestra_hit:55,trumpet:56,trombone:57,tuba:58,french_horn:60,brass_section:61,soprano_and_alto_sax:65,tenor_sax:66,baritone_sax:67,oboe:68,english_horn:69,bassoon:70,clarinet:71,flutes:73,synth_lead:80,synth_pad:89},of=100;function sf(e){return e===`drums`||e===`timpani`?`square`:e.includes(`guitar`)||e.includes(`bass`)||e.includes(`sax`)||e.includes(`brass`)?`sawtooth`:e===`voice`||e.includes(`flute`)?`sine`:`triangle`}var cf=class{ctx;synth=null;synthMode=`loading`;fallbackSynths=new Map;pendingNotes=[];channels=new Map;warmChannels=new Map;warmedNotes=new Set;nextChannel=0;allNotes=[];autoStopAt=null;wavBuffer=null;wavSource=null;wavGain;midiGain;wavPanner;midiPanner;mutedInstruments=new Set;mix=.75;stereo=!1;soundfontUrl;constructor(e={}){this.soundfontUrl=e.soundfontUrl??nf,this.ctx=Ys().rawContext,this.midiPanner=this.ctx.createStereoPanner(),this.midiPanner.connect(this.ctx.destination),this.midiGain=this.ctx.createGain(),this.midiGain.connect(this.midiPanner),this.wavPanner=this.ctx.createStereoPanner(),this.wavPanner.connect(this.ctx.destination),this.wavGain=this.ctx.createGain(),this.wavGain.connect(this.wavPanner),!e.forceFallback&&globalThis.isSecureContext&&this.ctx.audioWorklet?this.initSynth().catch(e=>this.initFallback(e)):this.initFallback(Error(`AudioWorklet requires HTTPS or localhost`)),this.applyMix(),wl().on(`start`,e=>this.startWavSource(e)),wl().on(`stop`,()=>this.stopWavSource()),wl().on(`pause`,()=>this.stopWavSource())}async initSynth(){let e=fetch(this.soundfontUrl).then(e=>{if(!e.ok)throw Error(`${this.soundfontUrl}: HTTP ${e.status}`);return e.arrayBuffer()}),t=Ys();await t.addAudioWorkletModule(tf);let n=new Qd(this.ctx,{audioNodeCreators:{worklet:(e,n,r)=>t.createAudioWorkletNode(n,r)}});n.connect(this.midiGain),await n.isReady,await n.soundBankManager.addSoundBank(await e,`MuseScore_General`),this.synth=n,this.synthMode=`soundfont`,this.flushPendingNotes()}initFallback(e){this.synthMode===`loading`&&(console.warn(`SoundFont synthesis is unavailable; using the basic browser synth instead.`,e),this.synthMode=`fallback`,this.flushPendingNotes())}flushPendingNotes(){let e=this.pendingNotes;this.pendingNotes=[];for(let t of e)this.scheduleNoteRaw(t)}fallbackSynthFor(e){let t=this.fallbackSynths.get(e);if(t)return t;let n=e===`drums`||e===`timpani`;return t=new vl(pl,{oscillator:{type:sf(e)},envelope:n?{attack:.001,decay:.08,sustain:.05,release:.05}:{attack:.01,decay:.1,sustain:.55,release:.12}}),t.maxPolyphony=32,t.volume.value=this.mutedInstruments.has(e)?-1/0:-10,t.connect(this.midiGain),this.fallbackSynths.set(e,t),t}stopSynthVoices(){this.synth?.stopAll();for(let e of this.fallbackSynths.values())e.releaseAll()}async loadWav(e){this.stopWavSource(),this.wavBuffer=null;let t=await e.arrayBuffer();try{this.wavBuffer=await this.ctx.decodeAudioData(t)}catch{this.wavBuffer=null}this.applyMix()}setMix(e){this.mix=Math.max(0,Math.min(1,e)),this.applyMix()}setStereo(e){this.stereo=e,this.applyMix()}applyMix(){let e=this.ctx.currentTime;if(this.stereo){let t=this.wavBuffer?.numberOfChannels===1?1:.5;this.wavGain.gain.setTargetAtTime(t,e,.01),this.midiGain.gain.setTargetAtTime(.5,e,.01),this.wavPanner.pan.setTargetAtTime(-1,e,.01),this.midiPanner.pan.setTargetAtTime(1,e,.01)}else this.wavGain.gain.setTargetAtTime(1-this.mix,e,.01),this.midiGain.gain.setTargetAtTime(this.mix,e,.01),this.wavPanner.pan.setTargetAtTime(0,e,.01),this.midiPanner.pan.setTargetAtTime(0,e,.01)}channelFor(e){let t=this.channels.get(e);if(t!==void 0)return t;let n=this.synth;if(e===`drums`)t=rf;else{for(t=this.nextChannel++,this.nextChannel===rf&&this.nextChannel++;t>=n.channelCount;)n.addNewChannel();n.programChange(t,af[e]??0)}return this.mutedInstruments.has(e)&&n.midiChannels[t]?.setSystemParameter(`isMuted`,!0),this.channels.set(e,t),t}warmChannelFor(e){let t=this.warmChannels.get(e);if(t!==void 0)return t;let n=this.synth;for(t=this.nextChannel++,this.nextChannel===rf&&this.nextChannel++;t>=n.channelCount;)n.addNewChannel();return e===`drums`?n.midiChannels[t]?.setDrums(!0):n.programChange(t,af[e]??0),n.midiChannels[t]?.setSystemParameter(`gain`,0),this.warmChannels.set(e,t),t}warmNote(e,t){let n=`${e}:${t}`;if(this.warmedNotes.has(n))return;this.warmedNotes.add(n);let r=this.synth,i=this.warmChannelFor(e);r.noteOn(i,t,of),r.noteOff(i,t)}setInstrumentMuted(e,t){t?this.mutedInstruments.add(e):this.mutedInstruments.delete(e);let n=this.channels.get(e);n!==void 0&&this.synth?.midiChannels[n]?.setSystemParameter(`isMuted`,t);let r=this.fallbackSynths.get(e);r&&(r.volume.value=t?-1/0:-10)}startWavSource(e){if(this.stopWavSource(),!this.wavBuffer)return;let t=wl().seconds;if(t>=this.wavBuffer.duration)return;let n=this.ctx.createBufferSource();n.buffer=this.wavBuffer,n.connect(this.wavGain),n.start(e,t),this.wavSource=n}stopWavSource(){if(this.wavSource){try{this.wavSource.stop()}catch{}this.wavSource.disconnect(),this.wavSource=null}}scheduleNote(e){this.allNotes.push({...e}),this.scheduleNoteRaw(e)}scheduleNoteRaw(e){if(this.synthMode===`loading`){this.pendingNotes.push(e);return}let t=Math.max(.05,e.end-e.start);if(this.synthMode===`fallback`){let n=this.fallbackSynthFor(e.instrument);wl().scheduleOnce(r=>{n.triggerAttackRelease(fc(e.pitch,`midi`).toFrequency(),t,r,of/127)},e.start);return}let n=this.synth,r=this.channelFor(e.instrument);this.warmNote(e.instrument,e.pitch),wl().scheduleOnce(i=>{n.noteOn(r,e.pitch,of,{time:i}),n.noteOff(r,e.pitch,{time:i+t})},e.start)}async unlock(){await Zs()}async play(){await Zs();let e=wl();if(e.seconds<.001){e.cancel();for(let e of this.allNotes)this.scheduleNoteRaw(e);this.autoStopAt!==null&&this.scheduleStopRaw(this.autoStopAt)}e.start()}pause(){wl().pause(),this.stopSynthVoices()}seek(e){let t=wl(),n=Math.max(0,e),r=t.state===`started`;r&&t.pause(),this.stopSynthVoices(),t.cancel(),t.seconds=n;for(let e of this.allNotes)e.start>=n&&this.scheduleNoteRaw(e);this.autoStopAt!==null&&this.autoStopAt>n&&this.scheduleStopRaw(this.autoStopAt),r&&t.start()}scrubTo(e){wl().seconds=Math.max(0,e)}stop(){let e=wl();e.stop(),e.cancel(),e.seconds=0,this.stopSynthVoices()}loadNotes(e){let t=wl(),n=t.seconds;t.cancel(),this.stopSynthVoices(),this.allNotes=e.map(e=>({...e})),this.pendingNotes=[];for(let e of this.allNotes)e.start>=n&&this.scheduleNoteRaw(e);let r=this.allNotes.reduce((e,t)=>Math.max(e,t.end),0);this.autoStopAt=r>0?r+.3:null,this.autoStopAt!==null&&this.autoStopAt>n&&this.scheduleStopRaw(this.autoStopAt)}reset(){this.stop(),this.allNotes=[],this.pendingNotes=[],this.autoStopAt=null,this.stopWavSource(),this.wavBuffer=null,this.mutedInstruments.clear();for(let e of this.channels.values())this.synth?.midiChannels[e]?.setSystemParameter(`isMuted`,!1);for(let e of this.fallbackSynths.values())e.volume.value=-10}scheduleStop(e){this.autoStopAt=e,this.scheduleStopRaw(e)}scheduleStopRaw(e){wl().scheduleOnce(()=>{wl().stop(),wl().seconds=0,this.stopSynthVoices()},e)}get seconds(){return wl().seconds}get duration(){return this.wavBuffer?.duration??0}get state(){return wl().state}get synthesisMode(){return this.synthMode}},lf=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),uf=e(((e,t)=>{t.exports=lf()})),df=uf(),ff={viewBox:`0 0 24 24`,width:15,height:15,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":!0};function pf(){return(0,df.jsxs)(`svg`,{...ff,children:[(0,df.jsx)(`polygon`,{points:`11 5 6 9 2 9 2 15 6 15 11 19 11 5`}),(0,df.jsx)(`path`,{d:`M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07`})]})}function mf(){return(0,df.jsxs)(`svg`,{...ff,children:[(0,df.jsx)(`polygon`,{points:`11 5 6 9 2 9 2 15 6 15 11 19 11 5`}),(0,df.jsx)(`line`,{x1:`23`,y1:`9`,x2:`17`,y2:`15`}),(0,df.jsx)(`line`,{x1:`17`,y1:`9`,x2:`23`,y2:`15`})]})}function hf(){return(0,df.jsx)(`svg`,{...ff,fill:`currentColor`,children:(0,df.jsx)(`polygon`,{points:`5 3 19 12 5 21 5 3`})})}function gf(){return(0,df.jsxs)(`svg`,{...ff,fill:`currentColor`,children:[(0,df.jsx)(`rect`,{x:`6`,y:`4`,width:`4`,height:`16`,rx:`1`}),(0,df.jsx)(`rect`,{x:`14`,y:`4`,width:`4`,height:`16`,rx:`1`})]})}function _f({className:e}){return(0,df.jsx)(`svg`,{viewBox:`0 0 24 24`,width:14,height:14,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,className:e,children:(0,df.jsx)(`polyline`,{points:`6 9 12 15 18 9`})})}function vf(){return(0,df.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,className:`h-3.5 w-3.5 fill-none stroke-current [stroke-linecap:round] [stroke-linejoin:round] [stroke-width:1.5]`,children:(0,df.jsx)(`path`,{d:`M8 1v8m0 0L4.5 5.5M8 9l3.5-3.5M2 11v2.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V11`})})}var yf=280,bf=1.5,xf=1.5;function Sf(e){let t=1-e;return 1-t*t*t}var Cf=80,wf=10,Tf=2e3,Ef=160,Df=21,Of=108,kf=84,Af=64;function jf(e){let t=(e%12+12)%12;return t===1||t===3||t===6||t===8||t===10}var Mf=137.508,Nf=new Map;function Pf(e){let t=Nf.get(e);return t===void 0&&(t=Nf.size,Nf.set(e,t)),`hsl(${t*Mf%360}, 70%, 55%)`}var Ff=class{canvas;ctx;notes=[];hiddenInstruments=new Set;mutedInstruments=new Set;highlightedInstrument=null;playhead=0;chunkFrontier=null;latestNoteStart=0;transcribedSmooth=0;userOffset=null;lastOffset=0;_pxPerSec=Cf;pxPerPitch=null;pitchTop=kf;contentDuration=0;get pxPerSec(){return this._pxPerSec}constructor(e){this.canvas=e,this.ctx=e.getContext(`2d`),this.resize(),window.addEventListener(`resize`,()=>this.resize())}resize(){let e=window.devicePixelRatio||1,t=this.canvas.getBoundingClientRect();this.canvas.width=t.width*e,this.canvas.height=t.height*e,this.ctx.setTransform(e,0,0,e,0,0)}addNote(e){this.notes.push(e),e.start>this.latestNoteStart&&(this.latestNoteStart=e.start)}setNoteEnd(e,t){e.end=t,e.spawn=performance.now();let n=!0;for(let t of this.notes){if(t===e){n=!1;continue}t.spawn===void 0||t.pitch!==e.pitch||t.starte&&(e=t.end);return e}contentEnd(){return Math.max(this.contentDuration,this.maxEnd())}clampOffset(e,t){let n=(this.canvas.getBoundingClientRect().width-56)/t,r=Math.max(0,this.contentEnd()-n);return Math.max(0,Math.min(e,r))}render(){let e=this.ctx,t=this.canvas.getBoundingClientRect(),n=t.width,r=t.height;e.clearRect(0,0,n,r);let i=n-56,a=Math.max(this.maxEnd(),this.playhead+1),o=i/this._pxPerSec,s;this.userOffset===null?(s=this.lastOffset,this.playhead>s+o*.66?s=this.playhead-o*.66:this.playheadOf||this.hiddenInstruments.has(t.instrument))continue;let i=56+(t.start-s)*c,a=Math.max(2,(t.end-t.start)*c-bf)*(t.spawn===void 0?1:Sf(Math.min(1,(p-t.spawn)/yf)));if(i+a<56||i>n)continue;let o=Math.min((t.stackOffset??0)*xf,h),d=(u-t.pitch)*l-o;if(d+l<0||d>r)continue;let f=this.mutedInstruments.has(t.instrument)?.2:1;this.highlightedInstrument!==null&&t.instrument!==this.highlightedInstrument&&(f=Math.min(f,.15)),e.globalAlpha=f,e.fillStyle=Pf(t.instrument),e.fillRect(i,d,a,Math.max(2,l-m))}e.globalAlpha=1;let g=56+(this.playhead-s)*c;e.strokeStyle=`#ff5577`,e.lineWidth=2,e.beginPath(),e.moveTo(g,0),e.lineTo(g,r),e.stroke(),e.restore(),this.drawKeyboard(e,r,l,u)}drawKeyboard(e,t,n,r){let i=n>=8;i&&(e.font=`10px sans-serif`,e.textBaseline=`middle`);for(let a=Df;a<=Of;a++){let o=(r-a)*n;o+n<0||o>t||(e.fillStyle=jf(a)?`#23232b`:`#cfd2dc`,e.fillRect(0,o,56,n),e.strokeStyle=`#16161c`,e.lineWidth=1,e.beginPath(),e.moveTo(0,o+.5),e.lineTo(56,o+.5),e.stroke(),i&&a%12==0&&(e.fillStyle=`#16161c`,e.fillText(`C${a/12-1}`,4,o+n/2)))}e.strokeStyle=`#000`,e.lineWidth=1,e.beginPath(),e.moveTo(56.5,0),e.lineTo(56.5,t),e.stroke()}};export{gf as a,mf as c,l as d,a as f,vf as i,uf as l,Pf as n,hf as o,t as p,_f as r,pf as s,Ff as t,cf as u}; \ No newline at end of file diff --git a/deployment.json b/deployment.json index a124ffb3b1b2b576c571348ee873e15167dab441..e17a4fad461bf3a887796345b88b3418a08cd76d 100644 --- a/deployment.json +++ b/deployment.json @@ -5,28 +5,26 @@ "source_dirty": true, "build_command": "VITE_HENDRIX_SPACE=1 npx --yes pnpm@10.20.0 --dir demo/web build --manifest", "checkpoint_sha256": "3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe", - "example": { - "source": "Slakh2100 Track01876", - "clip_offset_seconds": 6, - "duration_seconds": 2, - "license": "CC-BY-4.0" + "example_catalog": { + "count": 14, + "sha256": "3d281b366f65769503fc35f3685b23517b4369ae4fd49318c5d3638273701572" }, "files": { "README.md": { - "bytes": 2670, - "sha256": "6e3f1d73e894ae2b0c221cf67a249539c1f474a22dfb2485fde1c46fe7ab308b" + "bytes": 3033, + "sha256": "8229ab508480d1d14f17de1f8d7239e41ed900b97ca5a387f62a16b989336260" }, - "assets/PianoRollCanvas-xSq9nagc.js": { + "assets/PianoRollCanvas-RGNgcwXI.js": { "bytes": 3055, - "sha256": "05090a468a79f356f2603f7105b26205be5703f5fffcb37bb2502317d4f9836f" + "sha256": "a5b43e4db6cc9d3ad63fe73861278d8421b4c5cda71d686a4af2d28c514628b1" }, - "assets/local-56CJnE36.css": { - "bytes": 4149, - "sha256": "dfab143da9fda372f21e3513d3882baffdc7c40f4df51ad86f7ad3c01b34ef3d" + "assets/local-CA5z8jv5.css": { + "bytes": 14901, + "sha256": "14a504dd1e96f3113cca1d3746fcbe60c31e6aa4c1be706054308f390c1ef657" }, - "assets/local-DNpA26UR.js": { - "bytes": 133985, - "sha256": "065a69aa447b366c140d4b15cc3390269182840da10ac416804456e0996ef163" + "assets/local-r9il2Qob.js": { + "bytes": 145168, + "sha256": "0f1155e5123aaa4bda72df45e6bb72e8c69bf26529654df9de0b85d73815108e" }, "assets/ort-wasm-simd-threaded.asyncify-CvvOzbbq.wasm": { "bytes": 24254953, @@ -36,17 +34,133 @@ "bytes": 396249, "sha256": "fd3e25623e191efc4068e6cc44c7b0f4e3b508404c9088a77b6beedc7dbf861f" }, + "assets/style-3Z1guUf2.js": { + "bytes": 645805, + "sha256": "965e001a79d76d5c9636fbed35b3d3e9e16b1aa59e2b4fb422e898d348b838c4" + }, "assets/style-BAFoxh21.css": { "bytes": 56584, "sha256": "ba1247f859311f3b533b28aada5a316bf1edef2dd01be3216eecb0f1318f1205" }, - "assets/style-CdJLhYve.js": { - "bytes": 644106, - "sha256": "1be18fcb99a202c31bfe5ab4154afda3aaeb95af45706ae534653910c0b914dc" + "examples/CREDITS.md": { + "bytes": 3984, + "sha256": "af4473f7f97d83dd789c024967e7c87849c34144be7121433524d3b9c943484b" + }, + "examples/catalog.json": { + "bytes": 24975, + "sha256": "3d281b366f65769503fc35f3685b23517b4369ae4fd49318c5d3638273701572" + }, + "examples/fma-15769.json": { + "bytes": 42144, + "sha256": "bb8d07cc8d078e1f9d57f5322a15d70beaac3d893339a428fb607f75fc16058e" + }, + "examples/fma-15769.wav": { + "bytes": 384506, + "sha256": "a66c10808064fa467e9cedb5b0a23167f87f24f37b559759cb48744ac98f609c" + }, + "examples/fma-22472.json": { + "bytes": 46143, + "sha256": "06528773122e4a2ab9ef5c36c330a7ba67d321c1cc2c4c2cff096ba1b49f09cc" + }, + "examples/fma-22472.wav": { + "bytes": 384482, + "sha256": "b158e513802b07aabb8181950c4616495b1dbb40a731b9ee41723d90daafbc50" + }, + "examples/fma-23371.json": { + "bytes": 10399, + "sha256": "51072ff915bed3bc5cf00e14f08a948f198fbe6f4fe4841c38d53db6481f56bc" + }, + "examples/fma-23371.wav": { + "bytes": 384586, + "sha256": "5b6d7fc514711131b3dcb6600c52f9754a8cf61d9d7e01412d49a6512acaa9f2" + }, + "examples/fma-37119.json": { + "bytes": 411, + "sha256": "97a6593e4f70b88a1dd4e8cc7cf1cc7c8b104e8adc8da0da8ffd178a9df06ce7" + }, + "examples/fma-37119.wav": { + "bytes": 384556, + "sha256": "17e0dcb1a33c859bf5e1099d556623139d08719a74e7b4d77ad12c7ed427db94" + }, + "examples/fma-42761.json": { + "bytes": 40213, + "sha256": "f8c68cc3a6214823363ef9aaba42d94deec8608a732732207be09c4b9066e433" + }, + "examples/fma-42761.wav": { + "bytes": 384500, + "sha256": "12ad8c28ffc3714fb726fb9500f843fa8b8f764974df5bbded9afe324fd440c8" + }, + "examples/fma-68838.json": { + "bytes": 2846, + "sha256": "2147def0fe2c8814078e9424554dbecfeaa3b82760530b0f920e3e5300912313" + }, + "examples/fma-68838.wav": { + "bytes": 384522, + "sha256": "60c2ef0e4ce2ef2c9e37ac9c4e35dd8c6f4c2cf1b871cf00f186e71c5c3a73bc" + }, + "examples/fma-7481.json": { + "bytes": 20471, + "sha256": "e6c6ee41bcc194c2a5a4b25613b4f6718328bab6f6d97b64d0d808c9d68145ee" + }, + "examples/fma-7481.wav": { + "bytes": 384512, + "sha256": "1fe21e9255fd0fb4ef6e9c4a088c74a7cd81d0d8d76fd91323d4fdcedcea2d5c" + }, + "examples/fma-75782.json": { + "bytes": 9489, + "sha256": "52c1e712920f2987e44ca2380061ea4038ce7a0d5525ec103c95eeb6baacfe42" + }, + "examples/fma-75782.wav": { + "bytes": 384604, + "sha256": "64daa87292395961602211cbedb775e183b97148e994cdbff872e092e8183308" }, - "diagnostic.wav": { - "bytes": 128044, - "sha256": "87586b57be103e74950daa9035b2459a000a57b19a320e1faf0649d678fbcfc4" + "examples/guitar-funk.json": { + "bytes": 11134, + "sha256": "599cd5fea20e2883c226bca251a1ea49944ccdc62099d609d64aff9fd6a54211" + }, + "examples/guitar-funk.wav": { + "bytes": 384078, + "sha256": "7f4101cf9df5af4614be3245eeea06ad2c4eb703721e28ddcbea275a19b4e77c" + }, + "examples/guitar-jazz-chords.json": { + "bytes": 12389, + "sha256": "7f939e4218b4929ca1cb403a1561564ae016649a91abff05ca71ea576e93620d" + }, + "examples/guitar-jazz-chords.wav": { + "bytes": 384078, + "sha256": "67c90694360355b8ce5e534b0321660fb367f2fb966340b36fb9e0556dd46b9c" + }, + "examples/guitar-jazz-lead.json": { + "bytes": 2434, + "sha256": "3d8ee1a1c1d31799a84abda0c7dfdc60e4ba72b662c26bdc369ce855e387d04c" + }, + "examples/guitar-jazz-lead.wav": { + "bytes": 332878, + "sha256": "1b239dfb01eb9460f8dd8807932f6ba0f1d4dc39dbfbd34c117a9bd67856709c" + }, + "examples/guitar-rock.json": { + "bytes": 8580, + "sha256": "d82e03ccd1e3108b62b3c5297fc2a35e5b00fd64cea1a07b98a220f10a2bdea4" + }, + "examples/guitar-rock.wav": { + "bytes": 384078, + "sha256": "2b6ed704a6a1f5e10b8a664bc964e2848cb3e4c713df9b854df52ee471690bd8" + }, + "examples/slakh-band.json": { + "bytes": 7960, + "sha256": "7c92b1ce0bd02051b1808990f023f2b4be3af6d6de74c19143fd46c7477ab2a5" + }, + "examples/slakh-band.wav": { + "bytes": 384078, + "sha256": "f82c5c6507115ba2fab1a374c96a04d45933569c9d7299719758036b1ef14002" + }, + "examples/slakh-studio.json": { + "bytes": 11562, + "sha256": "07d450ec346c4d1ea61a36157f89cf22e67faae6b6ff6dd3106997b23dc5d9d3" + }, + "examples/slakh-studio.wav": { + "bytes": 384078, + "sha256": "e9715a960d306d3559f424a053a0cdf5b3f9b78c06e0d304f8265a56dd380e39" }, "favicon.png": { "bytes": 4671, @@ -54,11 +168,11 @@ }, "index.html": { "bytes": 770, - "sha256": "40e2ccc066efb40ca142438b0d3e0bdbaf8479c74e660cb803e1d9af9f1e951c" + "sha256": "5fa62dd7ca6dbd9cce18562f01f4c4a1de48e3a6b157c4e994c934f82a2e5f38" }, "local.html": { "bytes": 770, - "sha256": "40e2ccc066efb40ca142438b0d3e0bdbaf8479c74e660cb803e1d9af9f1e951c" + "sha256": "5fa62dd7ca6dbd9cce18562f01f4c4a1de48e3a6b157c4e994c934f82a2e5f38" }, "models/fp32/cross_cache.onnx": { "bytes": 12648891, @@ -92,6 +206,18 @@ "bytes": 26827543, "sha256": "78feeeb3d08f6bcee94d938ed322f69073bb8076b5f9d34697a574ffba8deb48" }, + "soundfonts/GeneralUser_GS.sf2": { + "bytes": 32319396, + "sha256": "9575028c7a1f589f5770fccc8cff2734566af40cd26ed836944e9a5152688cfe" + }, + "soundfonts/LICENSE.txt": { + "bytes": 2238, + "sha256": "42c054eca8d71be2a9a2f1117ebb32a8e9380e3092b0fe91e9e8ac3e92c3def6" + }, + "source/configs/demo/public_examples.json": { + "bytes": 7150, + "sha256": "a6b4be09c59d5e28526fee2cdc9dfd3631aa1d8c8e26540498238eb465027d2f" + }, "source/demo/web/compare.html": { "bytes": 1141, "sha256": "17aa0c9a8b01152b1c49057d30c80cc267373ce1f20744862e2f34335cfc5a62" @@ -112,17 +238,145 @@ "bytes": 33463, "sha256": "ddb399c0980adef3d3c4e33bb60787b4f9c5d9a072b9bbe95a9c4864e142dc5b" }, + "source/demo/web/public/examples/CREDITS.md": { + "bytes": 3984, + "sha256": "af4473f7f97d83dd789c024967e7c87849c34144be7121433524d3b9c943484b" + }, + "source/demo/web/public/examples/catalog.json": { + "bytes": 24975, + "sha256": "3d281b366f65769503fc35f3685b23517b4369ae4fd49318c5d3638273701572" + }, + "source/demo/web/public/examples/fma-15769.json": { + "bytes": 42144, + "sha256": "bb8d07cc8d078e1f9d57f5322a15d70beaac3d893339a428fb607f75fc16058e" + }, + "source/demo/web/public/examples/fma-15769.wav": { + "bytes": 384506, + "sha256": "a66c10808064fa467e9cedb5b0a23167f87f24f37b559759cb48744ac98f609c" + }, + "source/demo/web/public/examples/fma-22472.json": { + "bytes": 46143, + "sha256": "06528773122e4a2ab9ef5c36c330a7ba67d321c1cc2c4c2cff096ba1b49f09cc" + }, + "source/demo/web/public/examples/fma-22472.wav": { + "bytes": 384482, + "sha256": "b158e513802b07aabb8181950c4616495b1dbb40a731b9ee41723d90daafbc50" + }, + "source/demo/web/public/examples/fma-23371.json": { + "bytes": 10399, + "sha256": "51072ff915bed3bc5cf00e14f08a948f198fbe6f4fe4841c38d53db6481f56bc" + }, + "source/demo/web/public/examples/fma-23371.wav": { + "bytes": 384586, + "sha256": "5b6d7fc514711131b3dcb6600c52f9754a8cf61d9d7e01412d49a6512acaa9f2" + }, + "source/demo/web/public/examples/fma-37119.json": { + "bytes": 411, + "sha256": "97a6593e4f70b88a1dd4e8cc7cf1cc7c8b104e8adc8da0da8ffd178a9df06ce7" + }, + "source/demo/web/public/examples/fma-37119.wav": { + "bytes": 384556, + "sha256": "17e0dcb1a33c859bf5e1099d556623139d08719a74e7b4d77ad12c7ed427db94" + }, + "source/demo/web/public/examples/fma-42761.json": { + "bytes": 40213, + "sha256": "f8c68cc3a6214823363ef9aaba42d94deec8608a732732207be09c4b9066e433" + }, + "source/demo/web/public/examples/fma-42761.wav": { + "bytes": 384500, + "sha256": "12ad8c28ffc3714fb726fb9500f843fa8b8f764974df5bbded9afe324fd440c8" + }, + "source/demo/web/public/examples/fma-68838.json": { + "bytes": 2846, + "sha256": "2147def0fe2c8814078e9424554dbecfeaa3b82760530b0f920e3e5300912313" + }, + "source/demo/web/public/examples/fma-68838.wav": { + "bytes": 384522, + "sha256": "60c2ef0e4ce2ef2c9e37ac9c4e35dd8c6f4c2cf1b871cf00f186e71c5c3a73bc" + }, + "source/demo/web/public/examples/fma-7481.json": { + "bytes": 20471, + "sha256": "e6c6ee41bcc194c2a5a4b25613b4f6718328bab6f6d97b64d0d808c9d68145ee" + }, + "source/demo/web/public/examples/fma-7481.wav": { + "bytes": 384512, + "sha256": "1fe21e9255fd0fb4ef6e9c4a088c74a7cd81d0d8d76fd91323d4fdcedcea2d5c" + }, + "source/demo/web/public/examples/fma-75782.json": { + "bytes": 9489, + "sha256": "52c1e712920f2987e44ca2380061ea4038ce7a0d5525ec103c95eeb6baacfe42" + }, + "source/demo/web/public/examples/fma-75782.wav": { + "bytes": 384604, + "sha256": "64daa87292395961602211cbedb775e183b97148e994cdbff872e092e8183308" + }, + "source/demo/web/public/examples/guitar-funk.json": { + "bytes": 11134, + "sha256": "599cd5fea20e2883c226bca251a1ea49944ccdc62099d609d64aff9fd6a54211" + }, + "source/demo/web/public/examples/guitar-funk.wav": { + "bytes": 384078, + "sha256": "7f4101cf9df5af4614be3245eeea06ad2c4eb703721e28ddcbea275a19b4e77c" + }, + "source/demo/web/public/examples/guitar-jazz-chords.json": { + "bytes": 12389, + "sha256": "7f939e4218b4929ca1cb403a1561564ae016649a91abff05ca71ea576e93620d" + }, + "source/demo/web/public/examples/guitar-jazz-chords.wav": { + "bytes": 384078, + "sha256": "67c90694360355b8ce5e534b0321660fb367f2fb966340b36fb9e0556dd46b9c" + }, + "source/demo/web/public/examples/guitar-jazz-lead.json": { + "bytes": 2434, + "sha256": "3d8ee1a1c1d31799a84abda0c7dfdc60e4ba72b662c26bdc369ce855e387d04c" + }, + "source/demo/web/public/examples/guitar-jazz-lead.wav": { + "bytes": 332878, + "sha256": "1b239dfb01eb9460f8dd8807932f6ba0f1d4dc39dbfbd34c117a9bd67856709c" + }, + "source/demo/web/public/examples/guitar-rock.json": { + "bytes": 8580, + "sha256": "d82e03ccd1e3108b62b3c5297fc2a35e5b00fd64cea1a07b98a220f10a2bdea4" + }, + "source/demo/web/public/examples/guitar-rock.wav": { + "bytes": 384078, + "sha256": "2b6ed704a6a1f5e10b8a664bc964e2848cb3e4c713df9b854df52ee471690bd8" + }, + "source/demo/web/public/examples/slakh-band.json": { + "bytes": 7960, + "sha256": "7c92b1ce0bd02051b1808990f023f2b4be3af6d6de74c19143fd46c7477ab2a5" + }, + "source/demo/web/public/examples/slakh-band.wav": { + "bytes": 384078, + "sha256": "f82c5c6507115ba2fab1a374c96a04d45933569c9d7299719758036b1ef14002" + }, + "source/demo/web/public/examples/slakh-studio.json": { + "bytes": 11562, + "sha256": "07d450ec346c4d1ea61a36157f89cf22e67faae6b6ff6dd3106997b23dc5d9d3" + }, + "source/demo/web/public/examples/slakh-studio.wav": { + "bytes": 384078, + "sha256": "e9715a960d306d3559f424a053a0cdf5b3f9b78c06e0d304f8265a56dd380e39" + }, "source/demo/web/public/favicon.png": { "bytes": 4671, "sha256": "5ff57d04a630614e38703856834d410bc3df02e7d6656c09d017406c63c1925d" }, + "source/demo/web/public/soundfonts/GeneralUser_GS.sf2": { + "bytes": 32319396, + "sha256": "9575028c7a1f589f5770fccc8cff2734566af40cd26ed836944e9a5152688cfe" + }, + "source/demo/web/public/soundfonts/LICENSE.txt": { + "bytes": 2238, + "sha256": "42c054eca8d71be2a9a2f1117ebb32a8e9380e3092b0fe91e9e8ac3e92c3def6" + }, "source/demo/web/src/App.tsx": { "bytes": 15167, "sha256": "a7368c93040a5e59b8889ee94a8c2e2693f0fd6f0c19dcc8d94a0a24d20317ad" }, "source/demo/web/src/audio.ts": { - "bytes": 19304, - "sha256": "8e9d876bbeef997e5d5fe740cee5b6d219f815aa2b821a02fd0c718b00dc6174" + "bytes": 19497, + "sha256": "302df833ba5a25cf741cecfa683f5bee9ccc44720090aa2c8aa04c4cb771c91f" }, "source/demo/web/src/compare.tsx": { "bytes": 33406, @@ -189,8 +443,8 @@ "sha256": "2124afe19c0654456ffe22a2ad247c7948d01dbdc0b0e4022556e0aeb25024dc" }, "source/demo/web/src/local/local.css": { - "bytes": 4682, - "sha256": "d7060987283fc6b6d102e2e35077a74a46d6274db1a4a2e2b34ef4ec8c1591c4" + "bytes": 17275, + "sha256": "21ae25e9a371966854ad6f8f33d950ad158ecf71a1805006d97c81b3abb81fa2" }, "source/demo/web/src/local/midi.ts": { "bytes": 2445, @@ -200,9 +454,13 @@ "bytes": 13379, "sha256": "461a7c37240940c440694d7a65cc18c47090b8429bbeb1daa5a6175440c75c99" }, + "source/demo/web/src/local/visuals.tsx": { + "bytes": 2259, + "sha256": "9dbdad23b24507f0e89d0921a0366cda67b854db176b47631e14a8b06ee209ad" + }, "source/demo/web/src/local.tsx": { - "bytes": 15341, - "sha256": "c5e348b230534646320555cdb770047b38b035fee4bf49383a1c1f30c903f5c1" + "bytes": 26308, + "sha256": "924e99c2ddd8db0395a18739d16c1096bdc7bcd146a7fe1133383e63b442510c" }, "source/demo/web/src/main.tsx": { "bytes": 381, @@ -236,21 +494,29 @@ "bytes": 1158, "sha256": "2e3e6765cca9de53a0f23e42a52f4f152b9789b36e630345c9e2e6fb3f1b8475" }, - "source/deploy/huggingface/README.md": { - "bytes": 2670, - "sha256": "6e3f1d73e894ae2b0c221cf67a249539c1f474a22dfb2485fde1c46fe7ab308b" + "source/deploy/huggingface/GeneralUser-LICENSE.txt": { + "bytes": 2238, + "sha256": "42c054eca8d71be2a9a2f1117ebb32a8e9380e3092b0fe91e9e8ac3e92c3def6" }, - "source/docs/assets/slakh_test_Track01876.wav": { - "bytes": 1920044, - "sha256": "6b514aae5163051da66d320b12957f7f90ab0aaf120b3b4fae7164b883f823ec" + "source/deploy/huggingface/README.md": { + "bytes": 3033, + "sha256": "8229ab508480d1d14f17de1f8d7239e41ed900b97ca5a387f62a16b989336260" }, "source/scripts/check_huggingface_space.mjs": { - "bytes": 4570, - "sha256": "17a6eb4eebef658d6f89c252c6cc66f54eae7b8d199362a0c38786d17e727fac" + "bytes": 9313, + "sha256": "5b0800b6511bcd947878c1310834450511ebf126c3aa12748d6f2a06916dd686" + }, + "source/scripts/decode_demo_tokens.mjs": { + "bytes": 299, + "sha256": "35f78b23ba52209a8dcf338d58faba43258fa84e10e8ca74eb9bf18a1f291b3e" }, "source/scripts/deploy_huggingface_space.py": { - "bytes": 8153, - "sha256": "a370c0ce64da666b22af4ca5d2d36dba628f5ea00cad1a646b65abaa7f0f7d85" + "bytes": 9352, + "sha256": "f51eba5e80f42fac04adbb7e1f553d05ba5085f70ed36a809d90fe310b0384e3" + }, + "source/scripts/prepare_public_demo.py": { + "bytes": 8006, + "sha256": "4f1e0047134a3898a80428aeecee316abf956dcc3dac260ba065f069a119026e" } } } diff --git a/examples/CREDITS.md b/examples/CREDITS.md new file mode 100644 index 0000000000000000000000000000000000000000..25e09cde298a4783c567e1e9655784d645a930b8 --- /dev/null +++ b/examples/CREDITS.md @@ -0,0 +1,88 @@ +# Demo audio credits + +All clips are cropped to at most 12 seconds and converted to mono 16 kHz PCM. +Prepared notes are Hendrix predictions, not dataset annotations. + +## The Factory +Artist/creator: Multifaros +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/015/015769.mp3`. +License: [CC BY 3.0 US](https://creativecommons.org/licenses/by/3.0/us/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## Black Forest +Artist/creator: voyageurs +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/042/042761.mp3`. +License: [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## I Want To Destroy Something Beautiful +Artist/creator: Josh Woodward +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/023/023371.mp3`. +License: [CC BY 3.0 US](https://creativecommons.org/licenses/by/3.0/us/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## Busby Berkeley +Artist/creator: Ergo Phizmiz +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/022/022472.mp3`. +License: [CC BY 3.0 US](https://creativecommons.org/licenses/by/3.0/us/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## Seeing You Out +Artist/creator: BrokeMC +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/007/007481.mp3`. +License: [CC BY 3.0 US](https://creativecommons.org/licenses/by/3.0/us/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## Dark Hallway +Artist/creator: Lee Rosevere +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/037/037119.mp3`. +License: [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## I'm Not Lazy +Artist/creator: Square People +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/075/075782.mp3`. +License: [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## David's Tune +Artist/creator: Howie Mitchell +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/068/068838.mp3`. +License: [CC BY 3.0 US](https://creativecommons.org/licenses/by/3.0/us/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## Jazz guitar · chords +Artist/creator: GuitarSet · Player 1 +Source: [GuitarSet](https://zenodo.org/records/3371780), `guitarset/audio_mono-mic/00_Jazz1-130-D_comp_mic.wav`. +License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Change: 4–16 seconds, mono 16 kHz excerpt. + +## Jazz guitar · lead +Artist/creator: GuitarSet · Player 1 +Source: [GuitarSet](https://zenodo.org/records/3371780), `guitarset/audio_mono-mic/00_Jazz1-200-B_solo_mic.wav`. +License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Change: 4–14.4 seconds, mono 16 kHz excerpt. + +## Funk guitar +Artist/creator: GuitarSet · Player 1 +Source: [GuitarSet](https://zenodo.org/records/3371780), `guitarset/audio_mono-mic/00_Funk1-114-Ab_comp_mic.wav`. +License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Change: 4–16 seconds, mono 16 kHz excerpt. + +## Rock guitar +Artist/creator: GuitarSet · Player 1 +Source: [GuitarSet](https://zenodo.org/records/3371780), `guitarset/audio_mono-mic/00_Rock1-90-C#_solo_mic.wav`. +License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Change: 4–16 seconds, mono 16 kHz excerpt. + +## Full-band groove +Artist/creator: Slakh2100 · Synthesized mix +Source: [Slakh2100](https://zenodo.org/records/4599666), `slakh16k/Slakh2100_16kHz/slakh2100_flac_redux/test/Track01876/mix.wav`. +License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## Studio ensemble +Artist/creator: Slakh2100 · Synthesized mix +Source: [Slakh2100](https://zenodo.org/records/4599666), `slakh16k/Slakh2100_16kHz/slakh2100_flac_redux/train/Track00001/mix.wav`. +License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Change: 6–18 seconds, mono 16 kHz excerpt. diff --git a/examples/catalog.json b/examples/catalog.json new file mode 100644 index 0000000000000000000000000000000000000000..90759256309f6941c02b51a91483d5fef1c6eb3f --- /dev/null +++ b/examples/catalog.json @@ -0,0 +1,1114 @@ +{ + "schema_version": 1, + "default_example": "slakh-band", + "examples": [ + { + "id": "fma-15769", + "title": "The Factory", + "artist": "Multifaros", + "category": "Electronic", + "collection": "Free Music Archive", + "source": "fma/fma_small/015/015769.mp3", + "track_id": 15769, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-15769.wav", + "notes_url": "/examples/fma-15769.json", + "duration": 12.0, + "peaks": [ + 0.912, + 0.908, + 0.953, + 0.915, + 0.989, + 0.943, + 0.969, + 0.919, + 0.947, + 0.964, + 0.973, + 0.942, + 0.964, + 0.926, + 0.935, + 0.995, + 0.965, + 0.936, + 0.997, + 0.946, + 0.944, + 0.984, + 0.93, + 0.961, + 0.904, + 0.746, + 0.966, + 0.992, + 0.917, + 0.98, + 0.948, + 0.74, + 0.927, + 0.99, + 0.943, + 0.923, + 0.959, + 0.944, + 0.942, + 0.946, + 0.879, + 1.0, + 0.952, + 0.91, + 0.898, + 0.961, + 0.974, + 0.952, + 0.931, + 0.989, + 0.952, + 0.939, + 0.927, + 0.97, + 0.971, + 0.974 + ], + "note_count": 514, + "audio_sha256": "a66c10808064fa467e9cedb5b0a23167f87f24f37b559759cb48744ac98f609c", + "notes_sha256": "bb8d07cc8d078e1f9d57f5322a15d70beaac3d893339a428fb607f75fc16058e", + "source_sha256": "694009d559255f4b4c05b8bcf59f5da2791797d0332c69cf46efa89b0dc1a797" + }, + { + "id": "fma-42761", + "title": "Black Forest", + "artist": "voyageurs", + "category": "Rock", + "collection": "Free Music Archive", + "source": "fma/fma_small/042/042761.mp3", + "track_id": 42761, + "license_name": "CC BY 3.0", + "license_url": "https://creativecommons.org/licenses/by/3.0/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 International", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-42761.wav", + "notes_url": "/examples/fma-42761.json", + "duration": 12.0, + "peaks": [ + 0.82, + 0.875, + 0.959, + 0.949, + 0.963, + 0.989, + 0.933, + 0.848, + 0.848, + 0.88, + 0.869, + 1.0, + 0.901, + 0.932, + 0.841, + 0.873, + 0.878, + 0.963, + 0.83, + 0.803, + 0.915, + 0.85, + 0.915, + 0.932, + 0.848, + 0.889, + 0.787, + 0.784, + 0.901, + 0.732, + 0.837, + 0.793, + 0.767, + 0.739, + 0.775, + 0.777, + 0.702, + 0.734, + 0.695, + 0.817, + 0.735, + 0.785, + 0.758, + 0.788, + 0.88, + 0.806, + 0.765, + 0.762, + 0.789, + 0.759, + 0.639, + 0.764, + 0.696, + 0.767, + 0.793, + 0.737 + ], + "note_count": 483, + "audio_sha256": "12ad8c28ffc3714fb726fb9500f843fa8b8f764974df5bbded9afe324fd440c8", + "notes_sha256": "f8c68cc3a6214823363ef9aaba42d94deec8608a732732207be09c4b9066e433", + "source_sha256": "a6307789a839ee707f47560501d347b324590e3b2547e47568688233cd29a9b3" + }, + { + "id": "fma-23371", + "title": "I Want To Destroy Something Beautiful", + "artist": "Josh Woodward", + "category": "Folk", + "collection": "Free Music Archive", + "source": "fma/fma_small/023/023371.mp3", + "track_id": 23371, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-23371.wav", + "notes_url": "/examples/fma-23371.json", + "duration": 12.0, + "peaks": [ + 0.215, + 0.226, + 0.24, + 0.231, + 0.303, + 0.348, + 0.452, + 0.388, + 0.405, + 0.353, + 0.444, + 0.288, + 0.423, + 0.367, + 0.424, + 0.454, + 0.397, + 0.323, + 0.417, + 0.251, + 0.448, + 0.352, + 0.395, + 0.358, + 0.428, + 0.453, + 0.452, + 0.31, + 0.474, + 0.435, + 0.245, + 0.395, + 0.452, + 0.344, + 0.274, + 0.373, + 0.385, + 0.38, + 0.498, + 0.393, + 0.271, + 0.231, + 0.218, + 0.228, + 0.233, + 0.228, + 0.227, + 0.237, + 0.227, + 0.211, + 0.209, + 0.266, + 0.247, + 0.901, + 0.845, + 1.0 + ], + "note_count": 123, + "audio_sha256": "5b6d7fc514711131b3dcb6600c52f9754a8cf61d9d7e01412d49a6512acaa9f2", + "notes_sha256": "51072ff915bed3bc5cf00e14f08a948f198fbe6f4fe4841c38d53db6481f56bc", + "source_sha256": "bae911ebf53b37949594a08385b81709917e1d982cb228feb24e2b1cf787551c" + }, + { + "id": "fma-22472", + "title": "Busby Berkeley", + "artist": "Ergo Phizmiz", + "category": "Pop", + "collection": "Free Music Archive", + "source": "fma/fma_small/022/022472.mp3", + "track_id": 22472, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-22472.wav", + "notes_url": "/examples/fma-22472.json", + "duration": 12.0, + "peaks": [ + 0.49, + 0.63, + 0.736, + 0.6, + 0.645, + 0.733, + 0.542, + 0.633, + 0.716, + 0.417, + 0.593, + 0.716, + 0.545, + 0.509, + 0.854, + 0.539, + 0.68, + 0.793, + 0.604, + 0.685, + 0.755, + 0.642, + 0.786, + 0.741, + 0.694, + 0.674, + 0.701, + 0.565, + 0.731, + 0.772, + 0.586, + 0.596, + 0.807, + 0.585, + 0.721, + 0.857, + 0.649, + 0.626, + 0.768, + 0.619, + 0.595, + 0.619, + 0.768, + 0.625, + 0.601, + 0.72, + 0.739, + 0.706, + 0.747, + 1.0, + 0.697, + 0.926, + 0.764, + 0.745, + 0.606, + 0.884 + ], + "note_count": 567, + "audio_sha256": "b158e513802b07aabb8181950c4616495b1dbb40a731b9ee41723d90daafbc50", + "notes_sha256": "06528773122e4a2ab9ef5c36c330a7ba67d321c1cc2c4c2cff096ba1b49f09cc", + "source_sha256": "d6e715331bfbf45a07739b8667119b01cf6007ccf7b009f7d14fce87701e25da" + }, + { + "id": "fma-7481", + "title": "Seeing You Out", + "artist": "BrokeMC", + "category": "Hip-Hop", + "collection": "Free Music Archive", + "source": "fma/fma_small/007/007481.mp3", + "track_id": 7481, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-7481.wav", + "notes_url": "/examples/fma-7481.json", + "duration": 12.0, + "peaks": [ + 0.815, + 0.748, + 0.465, + 0.422, + 0.575, + 0.846, + 0.485, + 0.427, + 0.705, + 0.417, + 0.464, + 0.537, + 0.47, + 0.652, + 0.614, + 0.683, + 0.43, + 0.379, + 0.617, + 0.953, + 0.798, + 0.782, + 0.805, + 0.803, + 0.692, + 0.893, + 0.856, + 0.597, + 0.988, + 0.759, + 0.622, + 0.495, + 0.935, + 0.821, + 0.594, + 0.822, + 0.779, + 0.676, + 0.532, + 0.547, + 1.0, + 0.488, + 0.382, + 0.678, + 0.411, + 0.419, + 0.629, + 0.858, + 0.651, + 0.641, + 0.684, + 0.694, + 0.397, + 0.464, + 0.513, + 0.421 + ], + "note_count": 247, + "audio_sha256": "1fe21e9255fd0fb4ef6e9c4a088c74a7cd81d0d8d76fd91323d4fdcedcea2d5c", + "notes_sha256": "e6c6ee41bcc194c2a5a4b25613b4f6718328bab6f6d97b64d0d808c9d68145ee", + "source_sha256": "e672e4872f45003740e8fc9566c9b14521dc587f09da8b989523cae5e5f6b97d" + }, + { + "id": "fma-37119", + "title": "Dark Hallway", + "artist": "Lee Rosevere", + "category": "Instrumental", + "collection": "Free Music Archive", + "source": "fma/fma_small/037/037119.mp3", + "track_id": 37119, + "license_name": "CC BY 3.0", + "license_url": "https://creativecommons.org/licenses/by/3.0/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 International", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-37119.wav", + "notes_url": "/examples/fma-37119.json", + "duration": 12.0, + "peaks": [ + 0.694, + 0.828, + 0.485, + 0.648, + 0.848, + 0.912, + 0.891, + 0.813, + 0.785, + 0.644, + 0.769, + 0.798, + 0.559, + 0.64, + 0.772, + 0.913, + 0.806, + 0.899, + 0.782, + 0.725, + 0.593, + 0.896, + 0.599, + 0.663, + 0.676, + 0.786, + 1.0, + 0.879, + 0.862, + 0.838, + 0.784, + 0.691, + 0.921, + 0.623, + 0.665, + 0.735, + 0.691, + 0.825, + 0.968, + 0.889, + 0.873, + 0.847, + 0.749, + 0.649, + 0.878, + 0.627, + 0.724, + 0.797, + 0.77, + 0.698, + 0.699, + 0.874, + 0.745, + 0.911, + 0.963, + 0.913 + ], + "note_count": 1, + "audio_sha256": "17e0dcb1a33c859bf5e1099d556623139d08719a74e7b4d77ad12c7ed427db94", + "notes_sha256": "97a6593e4f70b88a1dd4e8cc7cf1cc7c8b104e8adc8da0da8ffd178a9df06ce7", + "source_sha256": "4c870df266ff8d77721e7b833791856bc807cf6774d05516a16fb9137349374d" + }, + { + "id": "fma-75782", + "title": "I'm Not Lazy", + "artist": "Square People", + "category": "Rock", + "collection": "Free Music Archive", + "source": "fma/fma_small/075/075782.mp3", + "track_id": 75782, + "license_name": "CC BY 3.0", + "license_url": "https://creativecommons.org/licenses/by/3.0/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 International", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-75782.wav", + "notes_url": "/examples/fma-75782.json", + "duration": 12.0, + "peaks": [ + 0.775, + 0.72, + 0.691, + 0.864, + 0.586, + 0.592, + 0.565, + 0.611, + 0.385, + 0.874, + 0.937, + 0.909, + 0.889, + 0.893, + 0.828, + 0.73, + 0.709, + 0.854, + 0.772, + 0.601, + 0.656, + 0.602, + 0.465, + 0.782, + 0.955, + 0.94, + 0.913, + 1.0, + 0.834, + 0.755, + 0.894, + 0.867, + 0.744, + 0.634, + 0.678, + 0.655, + 0.519, + 0.763, + 0.904, + 0.949, + 0.913, + 0.923, + 0.867, + 0.853, + 0.752, + 0.747, + 0.839, + 0.699, + 0.537, + 0.729, + 0.58, + 0.695, + 0.88, + 0.996, + 0.844, + 0.923 + ], + "note_count": 110, + "audio_sha256": "64daa87292395961602211cbedb775e183b97148e994cdbff872e092e8183308", + "notes_sha256": "52c1e712920f2987e44ca2380061ea4038ce7a0d5525ec103c95eeb6baacfe42", + "source_sha256": "20c16f3b373a173083fbf3c93813e8dc14cad4b36f2f6a8a212afd4ad18a4d13" + }, + { + "id": "fma-68838", + "title": "David's Tune", + "artist": "Howie Mitchell", + "category": "Folk", + "collection": "Free Music Archive", + "source": "fma/fma_small/068/068838.mp3", + "track_id": 68838, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-68838.wav", + "notes_url": "/examples/fma-68838.json", + "duration": 12.0, + "peaks": [ + 0.722, + 0.726, + 0.575, + 0.349, + 0.439, + 0.422, + 0.294, + 0.368, + 0.363, + 0.317, + 0.23, + 0.434, + 0.391, + 0.294, + 0.298, + 0.283, + 0.343, + 0.452, + 0.552, + 0.67, + 0.62, + 0.968, + 1.0, + 0.662, + 0.72, + 0.715, + 0.624, + 0.746, + 0.731, + 0.994, + 0.873, + 0.527, + 0.803, + 0.902, + 0.779, + 0.572, + 0.605, + 0.73, + 0.531, + 0.57, + 0.637, + 0.49, + 0.51, + 0.465, + 0.473, + 0.433, + 0.37, + 0.468, + 0.38, + 0.37, + 0.345, + 0.411, + 0.382, + 0.307, + 0.849, + 0.564 + ], + "note_count": 31, + "audio_sha256": "60c2ef0e4ce2ef2c9e37ac9c4e35dd8c6f4c2cf1b871cf00f186e71c5c3a73bc", + "notes_sha256": "2147def0fe2c8814078e9424554dbecfeaa3b82760530b0f920e3e5300912313", + "source_sha256": "0d4553508c4ee368a7bba1f8db897e8f5eb5c4f89734f09bb48a91b9111f9f0e" + }, + { + "id": "guitar-jazz-chords", + "title": "Jazz guitar \u00b7 chords", + "artist": "GuitarSet \u00b7 Player 1", + "category": "Guitar", + "collection": "GuitarSet", + "source": "guitarset/audio_mono-mic/00_Jazz1-130-D_comp_mic.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/3371780", + "offset_seconds": 4, + "duration_seconds": 12, + "audio_url": "/examples/guitar-jazz-chords.wav", + "notes_url": "/examples/guitar-jazz-chords.json", + "duration": 12.0, + "peaks": [ + 0.47, + 0.4, + 0.323, + 0.27, + 0.782, + 0.493, + 0.813, + 0.642, + 0.866, + 0.528, + 0.712, + 0.623, + 0.607, + 1.0, + 0.75, + 0.48, + 0.807, + 0.406, + 0.352, + 0.557, + 0.55, + 0.359, + 0.721, + 0.619, + 0.55, + 0.607, + 0.377, + 0.558, + 0.732, + 0.578, + 0.623, + 0.457, + 0.673, + 0.284, + 0.229, + 0.738, + 0.404, + 0.236, + 0.535, + 0.534, + 0.39, + 0.553, + 0.267, + 0.325, + 0.572, + 0.381, + 0.22, + 0.79, + 0.496, + 0.668, + 0.593, + 0.271, + 0.706, + 0.724, + 0.523, + 0.435 + ], + "note_count": 148, + "audio_sha256": "67c90694360355b8ce5e534b0321660fb367f2fb966340b36fb9e0556dd46b9c", + "notes_sha256": "7f939e4218b4929ca1cb403a1561564ae016649a91abff05ca71ea576e93620d", + "source_sha256": "b686a47b0a0a58dbdd818d2ebc9c31da87e4bed1af889dd62b1ffd1d1496f827" + }, + { + "id": "guitar-jazz-lead", + "title": "Jazz guitar \u00b7 lead", + "artist": "GuitarSet \u00b7 Player 1", + "category": "Guitar", + "collection": "GuitarSet", + "source": "guitarset/audio_mono-mic/00_Jazz1-200-B_solo_mic.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/3371780", + "offset_seconds": 4, + "duration_seconds": 12, + "audio_url": "/examples/guitar-jazz-lead.wav", + "notes_url": "/examples/guitar-jazz-lead.json", + "duration": 10.4, + "peaks": [ + 0.325, + 0.301, + 0.249, + 0.226, + 0.443, + 0.427, + 0.324, + 0.494, + 0.447, + 0.408, + 0.4, + 0.381, + 0.37, + 0.35, + 0.562, + 0.548, + 0.496, + 0.779, + 0.485, + 0.663, + 0.514, + 0.456, + 0.48, + 0.465, + 0.495, + 0.361, + 0.338, + 0.342, + 0.282, + 0.226, + 0.186, + 0.79, + 1.0, + 0.825, + 0.679, + 0.645, + 0.601, + 0.524, + 0.633, + 0.551, + 0.732, + 0.651, + 0.647, + 0.539, + 0.537, + 0.544, + 0.53, + 0.634, + 0.75, + 0.509, + 0.272, + 0.214, + 0.175, + 0.17, + 0.152, + 0.136 + ], + "note_count": 26, + "audio_sha256": "1b239dfb01eb9460f8dd8807932f6ba0f1d4dc39dbfbd34c117a9bd67856709c", + "notes_sha256": "3d8ee1a1c1d31799a84abda0c7dfdc60e4ba72b662c26bdc369ce855e387d04c", + "source_sha256": "d8df477ac8d17da5df76bbfafe94449b9f1c398e120db99d5765deeab59fbfb6" + }, + { + "id": "guitar-funk", + "title": "Funk guitar", + "artist": "GuitarSet \u00b7 Player 1", + "category": "Guitar", + "collection": "GuitarSet", + "source": "guitarset/audio_mono-mic/00_Funk1-114-Ab_comp_mic.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/3371780", + "offset_seconds": 4, + "duration_seconds": 12, + "audio_url": "/examples/guitar-funk.wav", + "notes_url": "/examples/guitar-funk.json", + "duration": 12.0, + "peaks": [ + 0.409, + 0.528, + 0.456, + 0.344, + 0.527, + 0.328, + 0.608, + 0.419, + 0.27, + 0.502, + 0.448, + 0.497, + 0.363, + 0.669, + 0.526, + 0.741, + 0.584, + 0.852, + 0.582, + 0.89, + 0.692, + 0.396, + 0.739, + 0.477, + 0.591, + 0.745, + 0.643, + 0.552, + 0.158, + 1.0, + 0.463, + 0.402, + 0.54, + 0.672, + 0.192, + 0.832, + 0.438, + 0.442, + 0.187, + 0.684, + 0.292, + 0.738, + 0.515, + 0.483, + 0.122, + 0.57, + 0.389, + 0.596, + 0.474, + 0.483, + 0.439, + 0.582, + 0.522, + 0.612, + 0.463, + 0.45 + ], + "note_count": 133, + "audio_sha256": "7f4101cf9df5af4614be3245eeea06ad2c4eb703721e28ddcbea275a19b4e77c", + "notes_sha256": "599cd5fea20e2883c226bca251a1ea49944ccdc62099d609d64aff9fd6a54211", + "source_sha256": "15eb54c1249e69e75c69d6611bd332c51735199c8ced22a35b87d662a81e5ba9" + }, + { + "id": "guitar-rock", + "title": "Rock guitar", + "artist": "GuitarSet \u00b7 Player 1", + "category": "Guitar", + "collection": "GuitarSet", + "source": "guitarset/audio_mono-mic/00_Rock1-90-C#_solo_mic.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/3371780", + "offset_seconds": 4, + "duration_seconds": 12, + "audio_url": "/examples/guitar-rock.wav", + "notes_url": "/examples/guitar-rock.json", + "duration": 12.0, + "peaks": [ + 0.461, + 0.396, + 0.42, + 0.308, + 0.432, + 0.401, + 0.382, + 0.416, + 0.434, + 0.39, + 0.417, + 0.438, + 0.466, + 0.506, + 0.494, + 0.485, + 0.476, + 0.54, + 0.543, + 0.753, + 0.757, + 0.822, + 0.752, + 0.758, + 0.942, + 0.796, + 0.747, + 0.886, + 0.814, + 0.53, + 0.738, + 0.761, + 0.848, + 0.656, + 0.458, + 0.703, + 0.714, + 0.741, + 0.781, + 0.792, + 0.516, + 0.44, + 0.81, + 0.846, + 0.719, + 0.828, + 0.861, + 0.689, + 1.0, + 0.984, + 0.845, + 0.676, + 0.639, + 0.718, + 0.668, + 0.534 + ], + "note_count": 102, + "audio_sha256": "2b6ed704a6a1f5e10b8a664bc964e2848cb3e4c713df9b854df52ee471690bd8", + "notes_sha256": "d82e03ccd1e3108b62b3c5297fc2a35e5b00fd64cea1a07b98a220f10a2bdea4", + "source_sha256": "7027f166d92969ef4e442a998ffbffdb6a9d78ba1c77bfdde1c73f3b3193b083" + }, + { + "id": "slakh-band", + "title": "Full-band groove", + "artist": "Slakh2100 \u00b7 Synthesized mix", + "category": "Full band", + "collection": "Slakh2100", + "source": "slakh16k/Slakh2100_16kHz/slakh2100_flac_redux/test/Track01876/mix.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/4599666", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/slakh-band.wav", + "notes_url": "/examples/slakh-band.json", + "duration": 12.0, + "peaks": [ + 0.58, + 0.633, + 0.654, + 0.645, + 0.631, + 0.638, + 0.623, + 0.599, + 0.571, + 0.586, + 0.601, + 0.634, + 0.668, + 0.664, + 0.697, + 0.738, + 0.735, + 0.781, + 0.686, + 0.712, + 0.624, + 0.646, + 0.655, + 0.657, + 0.717, + 0.697, + 0.658, + 0.655, + 0.669, + 0.723, + 0.76, + 0.678, + 0.655, + 0.656, + 0.711, + 0.675, + 0.881, + 0.769, + 0.753, + 0.774, + 0.738, + 0.727, + 0.755, + 0.693, + 0.67, + 0.798, + 0.759, + 0.645, + 0.919, + 0.812, + 0.927, + 0.742, + 0.564, + 1.0, + 0.691, + 0.646 + ], + "note_count": 93, + "audio_sha256": "f82c5c6507115ba2fab1a374c96a04d45933569c9d7299719758036b1ef14002", + "notes_sha256": "7c92b1ce0bd02051b1808990f023f2b4be3af6d6de74c19143fd46c7477ab2a5", + "source_sha256": "12959d5f4a1af5f312a27a70dbf85afa0725f4bf6c1e5b95c6f7bea6a076cfda" + }, + { + "id": "slakh-studio", + "title": "Studio ensemble", + "artist": "Slakh2100 \u00b7 Synthesized mix", + "category": "Full band", + "collection": "Slakh2100", + "source": "slakh16k/Slakh2100_16kHz/slakh2100_flac_redux/train/Track00001/mix.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/4599666", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/slakh-studio.wav", + "notes_url": "/examples/slakh-studio.json", + "duration": 12.0, + "peaks": [ + 0.876, + 0.662, + 0.604, + 0.596, + 0.625, + 0.601, + 0.498, + 0.898, + 0.754, + 0.659, + 0.732, + 0.723, + 0.613, + 0.687, + 0.844, + 0.603, + 0.558, + 0.613, + 0.691, + 0.642, + 0.554, + 0.904, + 0.768, + 0.673, + 0.709, + 0.636, + 0.744, + 0.773, + 0.91, + 0.62, + 0.554, + 0.541, + 0.484, + 0.48, + 0.452, + 0.931, + 0.79, + 0.666, + 0.668, + 0.566, + 0.602, + 0.748, + 0.9, + 0.707, + 0.671, + 0.657, + 0.681, + 0.616, + 0.499, + 1.0, + 0.876, + 0.815, + 0.799, + 0.738, + 0.721, + 0.709 + ], + "note_count": 139, + "audio_sha256": "e9715a960d306d3559f424a053a0cdf5b3f9b78c06e0d304f8265a56dd380e39", + "notes_sha256": "07d450ec346c4d1ea61a36157f89cf22e67faae6b6ff6dd3106997b23dc5d9d3", + "source_sha256": "21f9b5e2dfe9d2f0a876c57f6cab0a442855c63c8775ebc9256b79167eefee71" + } + ] +} diff --git a/examples/fma-15769.json b/examples/fma-15769.json new file mode 100644 index 0000000000000000000000000000000000000000..694b4624d8381ec9cffb0e237d63ef6de529e561 --- /dev/null +++ b/examples/fma-15769.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.02,"offset":0.7,"pitch":36,"program":2,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.7,"pitch":48,"program":2,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.08,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.08,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.08,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.08,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.03,"offset":0.04,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.04,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.04,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.05,"offset":0.14,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":0.08,"offset":0.15,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.08,"offset":0.15,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.08,"offset":0.15,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.08,"offset":0.15,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.15,"offset":0.16,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.15,"offset":0.16,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.15,"offset":0.16,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.23,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.23,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.23,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.23,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.17,"offset":0.26,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.24,"offset":0.31,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.24,"offset":0.31,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.24,"offset":0.31,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.24,"offset":0.31,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.27,"offset":0.37,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":0.27,"offset":0.28,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.27,"offset":0.28,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.27,"offset":0.28,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.32,"offset":0.39,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.32,"offset":0.39,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.32,"offset":0.39,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.32,"offset":0.39,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.39,"offset":0.49,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.39,"offset":0.4,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.39,"offset":0.4,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.39,"offset":0.4,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.4,"offset":0.47,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.4,"offset":0.47,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.4,"offset":0.47,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.4,"offset":0.47,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.48,"offset":0.55,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.48,"offset":0.55,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.48,"offset":0.55,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.48,"offset":0.55,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.51,"offset":0.62,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":0.51,"offset":0.52,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.51,"offset":0.52,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.51,"offset":0.52,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.56,"offset":0.62,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.56,"offset":0.62,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.56,"offset":0.62,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.56,"offset":0.62,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.58,"offset":0.59,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.58,"offset":0.59,"pitch":39,"program":128,"isDrum":true,"velocity":1},{"onset":0.58,"offset":0.59,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.58,"offset":0.59,"pitch":56,"program":128,"isDrum":true,"velocity":1},{"onset":0.63,"offset":0.69,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.69,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.69,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.69,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.74,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.64,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.64,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.64,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.75,"offset":0.86,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":0.75,"offset":0.76,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.75,"offset":0.76,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.75,"offset":0.76,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.87,"offset":0.98,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":0.87,"offset":0.88,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.87,"offset":0.88,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.87,"offset":0.88,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.89,"offset":2.22,"pitch":36,"program":2,"isDrum":false,"velocity":1},{"onset":0.89,"offset":2.22,"pitch":48,"program":2,"isDrum":false,"velocity":1},{"onset":0.89,"offset":0.96,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.89,"offset":0.96,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.89,"offset":0.96,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.89,"offset":0.96,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.9,"offset":0.91,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.97,"offset":1.04,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.97,"offset":1.04,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.97,"offset":1.04,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.97,"offset":1.04,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.99,"offset":1.1,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":0.99,"offset":1,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.99,"offset":1,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.99,"offset":1,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.05,"offset":1.12,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.05,"offset":1.12,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.05,"offset":1.12,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.05,"offset":1.12,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.06,"offset":1.07,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.11,"offset":1.22,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.12,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.12,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.12,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.13,"offset":1.2,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.13,"offset":1.2,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.13,"offset":1.2,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.13,"offset":1.2,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.21,"offset":1.28,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.21,"offset":1.28,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.21,"offset":1.28,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.21,"offset":1.28,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.23,"offset":1.34,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":39,"program":128,"isDrum":true,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":56,"program":128,"isDrum":true,"velocity":1},{"onset":1.29,"offset":1.36,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.29,"offset":1.36,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.29,"offset":1.36,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.29,"offset":1.36,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.35,"offset":1.46,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":1.35,"offset":1.36,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.35,"offset":1.36,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.35,"offset":1.36,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.37,"offset":1.44,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.37,"offset":1.44,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.37,"offset":1.44,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.37,"offset":1.44,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.45,"offset":1.52,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.45,"offset":1.52,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.45,"offset":1.52,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.45,"offset":1.52,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.58,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.48,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.48,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.48,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.53,"offset":1.59,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.53,"offset":1.59,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.53,"offset":1.59,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.53,"offset":1.59,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.55,"offset":1.56,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.59,"offset":1.7,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":1.59,"offset":1.6,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.59,"offset":1.6,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.59,"offset":1.6,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.6,"offset":1.66,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.6,"offset":1.66,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.6,"offset":1.66,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.6,"offset":1.66,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.73,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.73,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.73,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.73,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.71,"offset":1.82,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":1.71,"offset":1.72,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.71,"offset":1.72,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.71,"offset":1.72,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.72,"offset":1.73,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.74,"offset":2.0479375,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.74,"offset":2.0479375,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.74,"offset":2.0479375,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.74,"offset":2.0479375,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.83,"offset":1.95,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":1.83,"offset":1.84,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.83,"offset":1.84,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.83,"offset":1.84,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.89,"offset":1.9,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.89,"offset":1.9,"pitch":39,"program":128,"isDrum":true,"velocity":1},{"onset":1.89,"offset":1.9,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":1.89,"offset":1.9,"pitch":56,"program":128,"isDrum":true,"velocity":1},{"onset":1.96,"offset":2.0479375,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":1.96,"offset":2.0479375,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.96,"offset":2.0479375,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.96,"offset":2.0479375,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":2.05,"offset":2.15,"pitch":75,"program":80,"isDrum":false,"velocity":1},{"onset":2.06,"offset":2.15,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":2.14,"offset":2.23,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":2.15,"offset":2.24,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":2.22,"offset":2.55,"pitch":48,"program":2,"isDrum":false,"velocity":1},{"onset":2.22,"offset":2.55,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":2.22,"offset":2.23,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":2.23,"offset":2.32,"pitch":67,"program":80,"isDrum":false,"velocity":1},{"onset":2.24,"offset":2.33,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":2.31,"offset":2.4,"pitch":75,"program":80,"isDrum":false,"velocity":1},{"onset":2.33,"offset":2.42,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":2.38,"offset":2.3899999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.4,"offset":2.49,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.51,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.57,"pitch":67,"program":80,"isDrum":false,"velocity":1},{"onset":2.51,"offset":2.6,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":2.55,"offset":3.04,"pitch":32,"program":2,"isDrum":false,"velocity":1},{"onset":2.55,"offset":3.04,"pitch":44,"program":2,"isDrum":false,"velocity":1},{"onset":2.55,"offset":3.04,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":2.55,"offset":2.5599999999999996,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.55,"offset":2.5599999999999996,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.57,"offset":2.66,"pitch":63,"program":80,"isDrum":false,"velocity":1},{"onset":2.6,"offset":2.69,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":2.65,"offset":2.74,"pitch":60,"program":80,"isDrum":false,"velocity":1},{"onset":2.69,"offset":2.78,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":2.73,"offset":2.81,"pitch":63,"program":80,"isDrum":false,"velocity":1},{"onset":2.73,"offset":2.7399999999999998,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.78,"offset":2.87,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":2.81,"offset":2.89,"pitch":60,"program":80,"isDrum":false,"velocity":1},{"onset":2.87,"offset":2.96,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":2.89,"offset":2.98,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":2.96,"offset":3.05,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":2.97,"offset":3.05,"pitch":75,"program":80,"isDrum":false,"velocity":1},{"onset":3.04,"offset":3.21,"pitch":44,"program":2,"isDrum":false,"velocity":1},{"onset":3.04,"offset":3.21,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":3.04,"offset":3.05,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.05,"offset":3.14,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":3.05,"offset":3.13,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":3.13,"offset":3.21,"pitch":67,"program":80,"isDrum":false,"velocity":1},{"onset":3.14,"offset":3.23,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":3.21,"offset":3.45,"pitch":32,"program":2,"isDrum":false,"velocity":1},{"onset":3.21,"offset":3.45,"pitch":44,"program":2,"isDrum":false,"velocity":1},{"onset":3.21,"offset":3.45,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":3.21,"offset":3.3,"pitch":63,"program":80,"isDrum":false,"velocity":1},{"onset":3.21,"offset":3.2199999999999998,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.23,"offset":3.32,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":3.29,"offset":3.38,"pitch":60,"program":80,"isDrum":false,"velocity":1},{"onset":3.32,"offset":3.41,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":3.38,"offset":3.46,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.5,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":3.45,"offset":3.62,"pitch":44,"program":2,"isDrum":false,"velocity":1},{"onset":3.45,"offset":3.62,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":3.46,"offset":3.55,"pitch":75,"program":80,"isDrum":false,"velocity":1},{"onset":3.5,"offset":3.59,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":3.54,"offset":3.55,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.54,"offset":3.55,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":3.55,"offset":3.63,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":3.59,"offset":3.68,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.88,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.88,"pitch":68,"program":2,"isDrum":false,"velocity":1},{"onset":3.63,"offset":3.71,"pitch":68,"program":80,"isDrum":false,"velocity":1},{"onset":3.68,"offset":3.77,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":3.71,"offset":3.8,"pitch":63,"program":80,"isDrum":false,"velocity":1},{"onset":3.71,"offset":3.7199999999999998,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.77,"offset":3.86,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":3.8,"offset":3.88,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":3.86,"offset":3.95,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":3.88,"offset":4.095875,"pitch":32,"program":2,"isDrum":false,"velocity":1},{"onset":3.88,"offset":4.11,"pitch":44,"program":2,"isDrum":false,"velocity":1},{"onset":3.88,"offset":4.095875,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":3.88,"offset":3.96,"pitch":68,"program":80,"isDrum":false,"velocity":1},{"onset":3.88,"offset":3.8899999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.88,"offset":3.8899999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.88,"offset":3.8899999999999997,"pitch":50,"program":128,"isDrum":true,"velocity":1},{"onset":3.94,"offset":3.9499999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.94,"offset":3.9499999999999997,"pitch":50,"program":128,"isDrum":true,"velocity":1},{"onset":3.95,"offset":4.04,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":3.96,"offset":4.05,"pitch":60,"program":80,"isDrum":false,"velocity":1},{"onset":4.03,"offset":4.04,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.03,"offset":4.04,"pitch":50,"program":128,"isDrum":true,"velocity":1},{"onset":4.04,"offset":4.095875,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":4.04,"offset":4.095875,"pitch":63,"program":80,"isDrum":false,"velocity":1},{"onset":4.11,"offset":4.2,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":4.12,"offset":4.21,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":4.2,"offset":4.29,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":4.2,"offset":4.21,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.22,"offset":4.3,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":4.29,"offset":4.37,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":4.31,"offset":4.4,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":4.36,"offset":4.37,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.36,"offset":4.37,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.37,"offset":4.46,"pitch":68,"program":2,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.54,"pitch":32,"program":33,"isDrum":false,"velocity":1},{"onset":4.4,"offset":4.48,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":4.46,"offset":4.54,"pitch":72,"program":2,"isDrum":false,"velocity":1},{"onset":4.49,"offset":4.58,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":4.53,"offset":4.54,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.53,"offset":4.54,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.54,"offset":4.62,"pitch":73,"program":2,"isDrum":false,"velocity":1},{"onset":4.54,"offset":4.78,"pitch":32,"program":33,"isDrum":false,"velocity":1},{"onset":4.59,"offset":4.67,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":4.62,"offset":4.7,"pitch":72,"program":2,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.77,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":4.7,"offset":4.78,"pitch":80,"program":2,"isDrum":false,"velocity":1},{"onset":4.7,"offset":4.71,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.78,"offset":4.86,"pitch":75,"program":2,"isDrum":false,"velocity":1},{"onset":4.78,"offset":4.87,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":4.78,"offset":5.03,"pitch":32,"program":33,"isDrum":false,"velocity":1},{"onset":4.86,"offset":4.94,"pitch":72,"program":2,"isDrum":false,"velocity":1},{"onset":4.86,"offset":4.87,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.88,"offset":4.97,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":4.94,"offset":5.03,"pitch":68,"program":2,"isDrum":false,"velocity":1},{"onset":4.98,"offset":5.07,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":5.02,"offset":5.029999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.03,"offset":5.11,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":5.03,"offset":5.19,"pitch":32,"program":33,"isDrum":false,"velocity":1},{"onset":5.07,"offset":5.16,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":5.11,"offset":5.2,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.26,"pitch":79,"program":24,"isDrum":false,"velocity":1},{"onset":5.19,"offset":5.36,"pitch":32,"program":33,"isDrum":false,"velocity":1},{"onset":5.19,"offset":5.2,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.19,"offset":5.2,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.2,"offset":5.28,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":5.27,"offset":5.36,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.28,"offset":5.36,"pitch":51,"program":2,"isDrum":false,"velocity":1},{"onset":5.36,"offset":5.44,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":5.36,"offset":5.52,"pitch":32,"program":33,"isDrum":false,"velocity":1},{"onset":5.36,"offset":5.37,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.37,"offset":5.45,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":5.44,"offset":5.53,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":5.46,"offset":5.55,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":5.52,"offset":5.77,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":5.52,"offset":5.529999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.53,"offset":5.61,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":5.55,"offset":5.64,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.61,"offset":5.69,"pitch":70,"program":2,"isDrum":false,"velocity":1},{"onset":5.64,"offset":5.73,"pitch":70,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.6899999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.69,"offset":5.77,"pitch":75,"program":2,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.82,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":5.77,"offset":5.86,"pitch":79,"program":2,"isDrum":false,"velocity":1},{"onset":5.77,"offset":5.93,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":5.83,"offset":5.92,"pitch":70,"program":24,"isDrum":false,"velocity":1},{"onset":5.85,"offset":5.859999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.85,"offset":5.859999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.86,"offset":5.94,"pitch":70,"program":2,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.02,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.143812500000001,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":5.94,"offset":6.02,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":6.01,"offset":6.02,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.02,"offset":6.11,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":6.03,"offset":6.12,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":6.11,"offset":6.17,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":6.13,"offset":6.143812500000001,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":6.17,"offset":6.25,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":6.17,"offset":6.18,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":6.18,"offset":6.5,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":6.25,"offset":6.33,"pitch":51,"program":2,"isDrum":false,"velocity":1},{"onset":6.33,"offset":6.42,"pitch":39,"program":2,"isDrum":false,"velocity":1},{"onset":6.33,"offset":6.5,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":6.42,"offset":6.5,"pitch":43,"program":2,"isDrum":false,"velocity":1},{"onset":6.5,"offset":6.58,"pitch":39,"program":2,"isDrum":false,"velocity":1},{"onset":6.5,"offset":6.83,"pitch":77,"program":24,"isDrum":false,"velocity":1},{"onset":6.5,"offset":6.67,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":6.5,"offset":6.51,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":6.5,"offset":6.51,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.58,"offset":6.67,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.75,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":6.75,"offset":6.83,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":6.83,"offset":7.15,"pitch":39,"program":2,"isDrum":false,"velocity":1},{"onset":6.83,"offset":6.91,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":6.83,"offset":7.16,"pitch":79,"program":24,"isDrum":false,"velocity":1},{"onset":6.83,"offset":7.16,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":6.83,"offset":6.84,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.91,"offset":6.99,"pitch":70,"program":2,"isDrum":false,"velocity":1},{"onset":6.99,"offset":7.07,"pitch":75,"program":2,"isDrum":false,"velocity":1},{"onset":7.07,"offset":7.15,"pitch":79,"program":2,"isDrum":false,"velocity":1},{"onset":7.15,"offset":7.65,"pitch":34,"program":2,"isDrum":false,"velocity":1},{"onset":7.15,"offset":7.23,"pitch":79,"program":2,"isDrum":false,"velocity":1},{"onset":7.16,"offset":7.82,"pitch":79,"program":24,"isDrum":false,"velocity":1},{"onset":7.16,"offset":7.65,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":7.16,"offset":7.17,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7.16,"offset":7.17,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.23,"offset":7.32,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":7.32,"offset":7.4,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":7.4,"offset":7.49,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":7.49,"offset":7.57,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":7.49,"offset":7.5,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.49,"offset":7.5,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":7.57,"offset":7.65,"pitch":51,"program":2,"isDrum":false,"velocity":1},{"onset":7.65,"offset":7.73,"pitch":39,"program":2,"isDrum":false,"velocity":1},{"onset":7.65,"offset":7.82,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":7.73,"offset":7.82,"pitch":43,"program":2,"isDrum":false,"velocity":1},{"onset":7.82,"offset":8.14,"pitch":34,"program":2,"isDrum":false,"velocity":1},{"onset":7.82,"offset":7.9,"pitch":74,"program":2,"isDrum":false,"velocity":1},{"onset":7.82,"offset":8.19175,"pitch":74,"program":24,"isDrum":false,"velocity":1},{"onset":7.82,"offset":8.15,"pitch":34,"program":33,"isDrum":false,"velocity":1},{"onset":7.82,"offset":7.83,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7.82,"offset":7.83,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.9,"offset":7.98,"pitch":62,"program":2,"isDrum":false,"velocity":1},{"onset":7.98,"offset":8.06,"pitch":65,"program":2,"isDrum":false,"velocity":1},{"onset":8.06,"offset":8.14,"pitch":70,"program":2,"isDrum":false,"velocity":1},{"onset":8.14,"offset":8.32,"pitch":46,"program":2,"isDrum":false,"velocity":1},{"onset":8.14,"offset":8.19175,"pitch":74,"program":2,"isDrum":false,"velocity":1},{"onset":8.15,"offset":8.32,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":8.15,"offset":8.16,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.15,"offset":8.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.24,"offset":8.32,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.32,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":8.31,"offset":8.32,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.32,"offset":8.49,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":8.32,"offset":8.4,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":8.32,"offset":8.4,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":8.32,"offset":8.49,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":8.4,"offset":8.48,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":8.4,"offset":8.48,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":8.48,"offset":8.56,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":8.48,"offset":8.56,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":8.49,"offset":8.81,"pitch":34,"program":2,"isDrum":false,"velocity":1},{"onset":8.49,"offset":8.81,"pitch":34,"program":33,"isDrum":false,"velocity":1},{"onset":8.49,"offset":8.5,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.49,"offset":8.5,"pitch":39,"program":128,"isDrum":true,"velocity":1},{"onset":8.49,"offset":8.5,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.49,"offset":8.5,"pitch":56,"program":128,"isDrum":true,"velocity":1},{"onset":8.56,"offset":8.65,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":8.56,"offset":8.65,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":8.65,"offset":8.73,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":8.65,"offset":8.73,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":8.73,"offset":8.81,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":8.73,"offset":8.81,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":8.81,"offset":9.14,"pitch":46,"program":2,"isDrum":false,"velocity":1},{"onset":8.81,"offset":8.89,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":8.81,"offset":8.89,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":8.81,"offset":9.14,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":8.81,"offset":8.82,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":8.89,"offset":8.98,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.98,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":8.98,"offset":9.06,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":8.98,"offset":9.06,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":8.98,"offset":8.99,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.06,"offset":9.14,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":9.06,"offset":9.14,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.46,"pitch":34,"program":2,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.23,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.23,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.47,"pitch":34,"program":33,"isDrum":false,"velocity":1},{"onset":9.15,"offset":9.16,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":9.15,"offset":9.16,"pitch":39,"program":128,"isDrum":true,"velocity":1},{"onset":9.15,"offset":9.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.15,"offset":9.16,"pitch":56,"program":128,"isDrum":true,"velocity":1},{"onset":9.23,"offset":9.31,"pitch":84,"program":16,"isDrum":false,"velocity":1},{"onset":9.23,"offset":9.31,"pitch":96,"program":16,"isDrum":false,"velocity":1},{"onset":9.31,"offset":9.39,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":9.31,"offset":9.39,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":9.39,"offset":9.47,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":9.39,"offset":9.47,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":9.46,"offset":9.64,"pitch":46,"program":2,"isDrum":false,"velocity":1},{"onset":9.47,"offset":9.55,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":9.47,"offset":9.55,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":9.47,"offset":9.64,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":9.47,"offset":9.48,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":9.55,"offset":9.64,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":9.55,"offset":9.64,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.81,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.72,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.72,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.8,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.65,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.72,"offset":9.8,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":9.72,"offset":9.8,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":9.8,"offset":9.88,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":9.8,"offset":9.88,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":9.8,"offset":10.13,"pitch":34,"program":33,"isDrum":false,"velocity":1},{"onset":9.81,"offset":10.12,"pitch":34,"program":2,"isDrum":false,"velocity":1},{"onset":9.81,"offset":9.82,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.81,"offset":9.82,"pitch":39,"program":128,"isDrum":true,"velocity":1},{"onset":9.81,"offset":9.82,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.81,"offset":9.82,"pitch":56,"program":128,"isDrum":true,"velocity":1},{"onset":9.88,"offset":9.96,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":9.88,"offset":9.96,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":9.96,"offset":10.05,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":9.96,"offset":10.05,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":10.05,"offset":10.13,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":10.05,"offset":10.13,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":10.12,"offset":10.46,"pitch":46,"program":2,"isDrum":false,"velocity":1},{"onset":10.13,"offset":10.21,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":10.13,"offset":10.21,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":10.13,"offset":10.46,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":10.13,"offset":10.14,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":10.21,"offset":10.2396875,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":10.21,"offset":10.2396875,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":10.3,"offset":10.39,"pitch":74,"program":24,"isDrum":false,"velocity":1},{"onset":10.4,"offset":10.49,"pitch":70,"program":24,"isDrum":false,"velocity":1},{"onset":10.46,"offset":10.62,"pitch":48,"program":2,"isDrum":false,"velocity":1},{"onset":10.46,"offset":11.44,"pitch":36,"program":33,"isDrum":false,"velocity":1},{"onset":10.46,"offset":10.47,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.46,"offset":10.47,"pitch":43,"program":128,"isDrum":true,"velocity":1},{"onset":10.47,"offset":10.48,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":10.49,"offset":10.58,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":10.49,"offset":10.5,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.49,"offset":10.5,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.57,"offset":10.65,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":10.62,"offset":10.79,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.73,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":10.73,"offset":10.81,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.79,"offset":10.95,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":10.81,"offset":10.89,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":10.89,"offset":10.97,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":10.95,"offset":11.11,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":10.97,"offset":11.06,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":11.06,"offset":11.14,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":11.11,"offset":11.27,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":11.13,"offset":11.14,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.13,"offset":11.14,"pitch":43,"program":128,"isDrum":true,"velocity":1},{"onset":11.14,"offset":11.22,"pitch":74,"program":24,"isDrum":false,"velocity":1},{"onset":11.14,"offset":11.15,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.14,"offset":11.15,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":11.22,"offset":11.3,"pitch":79,"program":24,"isDrum":false,"velocity":1},{"onset":11.27,"offset":11.43,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":11.3,"offset":11.39,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":11.39,"offset":11.47,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":11.43,"offset":11.59,"pitch":48,"program":2,"isDrum":false,"velocity":1},{"onset":11.44,"offset":11.82,"pitch":48,"program":33,"isDrum":false,"velocity":1},{"onset":11.45,"offset":11.459999999999999,"pitch":43,"program":128,"isDrum":true,"velocity":1},{"onset":11.46,"offset":11.47,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":11.47,"offset":11.56,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":11.55,"offset":11.64,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":11.59,"offset":11.75,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":11.64,"offset":11.72,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":11.72,"offset":11.8,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":11.75,"offset":11.91,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":11.78,"offset":11.79,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.78,"offset":11.79,"pitch":43,"program":128,"isDrum":true,"velocity":1},{"onset":11.79,"offset":11.799999999999999,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":11.8,"offset":11.88,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":11.82,"offset":11.98,"pitch":36,"program":33,"isDrum":false,"velocity":1},{"onset":11.82,"offset":11.83,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.88,"offset":11.96,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":11.91,"offset":12,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":11.96,"offset":12,"pitch":55,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"a66c10808064fa467e9cedb5b0a23167f87f24f37b559759cb48744ac98f609c","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":1} diff --git a/examples/fma-15769.wav b/examples/fma-15769.wav new file mode 100644 index 0000000000000000000000000000000000000000..0aa3fc3a9971b3937525d281e3a80dc4b6662ce8 --- /dev/null +++ b/examples/fma-15769.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a66c10808064fa467e9cedb5b0a23167f87f24f37b559759cb48744ac98f609c +size 384506 diff --git a/examples/fma-22472.json b/examples/fma-22472.json new file mode 100644 index 0000000000000000000000000000000000000000..0fb607a3446ad688ff86480b3acec7e12d523de4 --- /dev/null +++ b/examples/fma-22472.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.03,"offset":0.04,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.16,"offset":0.48,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.48,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.48,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.48,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.17,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.16,"offset":0.17,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.17,"offset":0.38,"pitch":40,"program":33,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":56,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":68,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":56,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":68,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.8,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.8,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.8,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.8,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.5,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":0.49,"offset":0.5,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.5,"offset":0.71,"pitch":40,"program":33,"isDrum":false,"velocity":1},{"onset":0.7,"offset":0.71,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":56,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":68,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":0.81,"offset":1.11,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":0.81,"offset":1.11,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":0.81,"offset":1.11,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":0.81,"offset":1.11,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":0.82,"offset":1.02,"pitch":40,"program":33,"isDrum":false,"velocity":1},{"onset":0.82,"offset":0.83,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.82,"offset":0.83,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":61,"program":0,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":1.12,"offset":1.17,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":1.12,"offset":1.17,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":1.12,"offset":1.17,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":1.12,"offset":1.17,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":1.14,"offset":1.35,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":1.15,"offset":1.16,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":1.15,"offset":1.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.18,"offset":1.46,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.46,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.46,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.46,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":1.36,"offset":1.37,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":61,"program":0,"isDrum":false,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.52,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.52,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.52,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.52,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.68,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.48,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.47,"offset":1.48,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":61,"program":0,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":61,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":1.8,"offset":1.85,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":1.8,"offset":1.85,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":1.8,"offset":1.85,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":1.8,"offset":1.85,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":1.8,"offset":2.01,"pitch":37,"program":33,"isDrum":false,"velocity":1},{"onset":1.8,"offset":1.81,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":1.8,"offset":1.81,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":61,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":2.01,"offset":2.0199999999999996,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":61,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":2.12,"offset":2.13,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.12,"offset":2.13,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":91,"program":0,"isDrum":false,"velocity":1},{"onset":2.37,"offset":2.42,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.37,"offset":2.42,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":2.37,"offset":2.42,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.37,"offset":2.42,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.37,"offset":2.42,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":2.37,"offset":2.42,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":2.44,"offset":2.4499999999999997,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":2.44,"offset":2.4499999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":88,"program":0,"isDrum":false,"velocity":1},{"onset":2.76,"offset":2.7699999999999996,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.76,"offset":2.7699999999999996,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":91,"program":0,"isDrum":false,"velocity":1},{"onset":3.08,"offset":3.09,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":3.08,"offset":3.09,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":91,"program":0,"isDrum":false,"velocity":1},{"onset":3.4,"offset":3.4099999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.4,"offset":3.4099999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":91,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":91,"program":0,"isDrum":false,"velocity":1},{"onset":3.72,"offset":3.73,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":3.72,"offset":3.73,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.83,"offset":4.095875,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.1,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.1,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.1,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.1,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.1,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.095875,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.095875,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.1,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.095875,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":4.04,"offset":4.05,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.04,"offset":4.05,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.1,"offset":4.109999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.1,"offset":4.109999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.72,"pitch":45,"program":100,"isDrum":false,"velocity":1},{"onset":4.42,"offset":4.43,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.42,"offset":4.43,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":4.72,"offset":5.07,"pitch":50,"program":100,"isDrum":false,"velocity":1},{"onset":4.73,"offset":4.74,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.73,"offset":4.74,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.83,"offset":4.84,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":5.05,"offset":5.06,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.05,"offset":5.06,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":5.07,"offset":5.39,"pitch":55,"program":100,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":91,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":5.37,"offset":5.38,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.37,"offset":5.38,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.39,"offset":5.73,"pitch":55,"program":100,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":5.56,"offset":5.569999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":6.143812500000001,"pitch":55,"program":100,"isDrum":false,"velocity":1},{"onset":5.74,"offset":5.75,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.74,"offset":5.75,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":6.05,"offset":6.06,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.05,"offset":6.06,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":6.35,"offset":6.36,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.35,"offset":6.36,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.35,"offset":6.36,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.35,"offset":8.19175,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":6.35,"offset":8.19175,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":6.35,"offset":6.359999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":6.35,"offset":6.359999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.36,"offset":6.37,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.36,"offset":6.37,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.36,"offset":6.37,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.36,"offset":6.37,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.37,"offset":6.38,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.37,"offset":6.38,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.37,"offset":6.38,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.37,"offset":6.38,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.38,"offset":6.39,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.38,"offset":6.39,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.38,"offset":6.39,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.38,"offset":6.39,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.39,"offset":6.4,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.39,"offset":6.4,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.39,"offset":6.4,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.39,"offset":6.4,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.4,"offset":6.41,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.4,"offset":6.41,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.4,"offset":6.41,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.4,"offset":6.41,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.64,"offset":6.65,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.64,"offset":6.65,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.64,"offset":6.65,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.64,"offset":6.65,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.64,"offset":6.6499999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.64,"offset":6.6499999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.65,"offset":6.66,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.65,"offset":6.66,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.65,"offset":6.66,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.65,"offset":6.66,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.66,"offset":6.67,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.66,"offset":6.67,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.66,"offset":6.67,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.66,"offset":6.67,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.68,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.68,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.68,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.68,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.86,"pitch":64,"program":100,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.69,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.69,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.69,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.69,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.82,"offset":6.83,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.82,"offset":6.83,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.86,"offset":7.18,"pitch":62,"program":100,"isDrum":false,"velocity":1},{"onset":6.88,"offset":6.89,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.88,"offset":6.89,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.88,"offset":6.89,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.88,"offset":6.89,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.89,"offset":6.9,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.89,"offset":6.9,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.89,"offset":6.9,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.89,"offset":6.9,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.9,"offset":6.91,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.9,"offset":6.91,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.9,"offset":6.91,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.9,"offset":6.91,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.92,"offset":6.93,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.92,"offset":6.93,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.92,"offset":6.93,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.92,"offset":6.93,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.93,"offset":6.94,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.93,"offset":6.94,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.93,"offset":6.94,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.93,"offset":6.94,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.94,"offset":6.95,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.94,"offset":6.95,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.94,"offset":6.95,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.94,"offset":6.95,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.95,"offset":6.96,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.95,"offset":6.96,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.95,"offset":6.96,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.95,"offset":6.96,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":7,"offset":7.01,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7,"offset":7.01,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.17,"offset":7.18,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":7.17,"offset":7.18,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":7.17,"offset":7.18,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":7.17,"offset":7.18,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":7.18,"offset":8.19175,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":7.18,"offset":8.19175,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":7.18,"offset":10.24,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":7.18,"offset":8.19175,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":7.18,"offset":7.37,"pitch":64,"program":100,"isDrum":false,"velocity":1},{"onset":7.29,"offset":7.3,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":7.29,"offset":7.3,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.37,"offset":7.56,"pitch":66,"program":100,"isDrum":false,"velocity":1},{"onset":7.48,"offset":7.49,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.56,"offset":7.95,"pitch":69,"program":100,"isDrum":false,"velocity":1},{"onset":7.66,"offset":7.67,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7.66,"offset":7.67,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.95,"offset":8.19175,"pitch":64,"program":100,"isDrum":false,"velocity":1},{"onset":7.95,"offset":7.96,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":7.95,"offset":7.96,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.14,"offset":8.15,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.29,"offset":8.3,"pitch":37,"program":0,"isDrum":false,"velocity":1},{"onset":8.29,"offset":8.3,"pitch":49,"program":0,"isDrum":false,"velocity":1},{"onset":8.29,"offset":8.3,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":8.29,"offset":8.3,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":8.29,"offset":8.3,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":8.3,"offset":8.31,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.3,"offset":8.31,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.3,"offset":8.31,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.62,"offset":8.63,"pitch":31,"program":0,"isDrum":false,"velocity":1},{"onset":8.62,"offset":8.63,"pitch":43,"program":0,"isDrum":false,"velocity":1},{"onset":8.62,"offset":8.63,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":8.62,"offset":8.63,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":8.62,"offset":8.63,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":8.62,"offset":8.629999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.62,"offset":8.629999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.8,"offset":8.81,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.95,"offset":8.96,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":8.95,"offset":8.96,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":8.95,"offset":8.96,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":8.95,"offset":8.96,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":8.95,"offset":8.96,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":8.95,"offset":8.96,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":8.97,"offset":8.98,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.97,"offset":8.98,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.97,"offset":8.98,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":9.29,"offset":9.299999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.29,"offset":9.299999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.61,"offset":9.62,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":9.61,"offset":9.62,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.61,"offset":9.62,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.62,"offset":9.63,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":9.62,"offset":9.63,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":9.62,"offset":9.63,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":9.62,"offset":9.63,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":9.62,"offset":9.63,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":9.62,"offset":9.63,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":9.93,"offset":9.94,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.93,"offset":9.94,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.94,"offset":9.95,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":9.94,"offset":9.95,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":9.94,"offset":9.95,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":9.94,"offset":9.95,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":9.94,"offset":9.95,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":9.94,"offset":9.95,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":45,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":85,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.42,"pitch":45,"program":33,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.299999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.29,"offset":10.299999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":45,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":85,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":88,"program":0,"isDrum":false,"velocity":1},{"onset":10.6,"offset":10.61,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.6,"offset":10.61,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.61,"offset":10.77,"pitch":45,"program":33,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":45,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":85,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":88,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":45,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":85,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":88,"program":0,"isDrum":false,"velocity":1},{"onset":10.9,"offset":10.91,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.9,"offset":10.91,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.95,"offset":11.1,"pitch":44,"program":33,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":44,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":56,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":84,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":87,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":11.21,"offset":11.22,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.21,"offset":11.22,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":45,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":85,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":88,"program":0,"isDrum":false,"velocity":1},{"onset":11.25,"offset":11.51,"pitch":45,"program":33,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":45,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":85,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":88,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":93,"program":0,"isDrum":false,"velocity":1},{"onset":11.51,"offset":11.52,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.51,"offset":11.52,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.57,"offset":11.71,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":11.81,"offset":11.82,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.81,"offset":11.82,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.9,"offset":12,"pitch":46,"program":33,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"b158e513802b07aabb8181950c4616495b1dbb40a731b9ee41723d90daafbc50","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":1} diff --git a/examples/fma-22472.wav b/examples/fma-22472.wav new file mode 100644 index 0000000000000000000000000000000000000000..dd8ebe7ef43a17d291572bbd9177696d6b67ae37 --- /dev/null +++ b/examples/fma-22472.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b158e513802b07aabb8181950c4616495b1dbb40a731b9ee41723d90daafbc50 +size 384482 diff --git a/examples/fma-23371.json b/examples/fma-23371.json new file mode 100644 index 0000000000000000000000000000000000000000..cbd7defa8a6b0f8a1c25d1e337dc91394ecff093 --- /dev/null +++ b/examples/fma-23371.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0,"offset":0.94,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":0,"offset":0.54,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":0,"offset":0.13,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":0,"offset":0.37,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":0.13,"offset":0.76,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":0.37,"offset":0.94,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":0.54,"offset":0.94,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":0.76,"offset":0.94,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":0.94,"offset":2.0479375,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":0.94,"offset":1.36,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":0.94,"offset":1.18,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":0.94,"offset":1.18,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":0.94,"offset":1.18,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.56,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.56,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.56,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":1.36,"offset":1.67,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":1.37,"offset":1.76,"pitch":58,"program":100,"isDrum":false,"velocity":1},{"onset":1.56,"offset":2.21,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":1.56,"offset":2.21,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":1.56,"offset":2.0479375,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":1.56,"offset":2.0479375,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.81,"pitch":51,"program":26,"isDrum":false,"velocity":1},{"onset":1.76,"offset":2.0479375,"pitch":53,"program":100,"isDrum":false,"velocity":1},{"onset":1.81,"offset":3.27,"pitch":51,"program":26,"isDrum":false,"velocity":1},{"onset":2.14,"offset":2.15,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.14,"offset":2.15,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.15,"offset":2.6,"pitch":57,"program":100,"isDrum":false,"velocity":1},{"onset":2.21,"offset":3.27,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":2.6,"offset":3.05,"pitch":54,"program":100,"isDrum":false,"velocity":1},{"onset":2.6,"offset":2.61,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.6,"offset":2.61,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.62,"offset":3.27,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":2.96,"offset":2.9699999999999998,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.96,"offset":2.9699999999999998,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.05,"offset":3.3,"pitch":57,"program":100,"isDrum":false,"velocity":1},{"onset":3.2,"offset":3.21,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.2,"offset":3.21,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.27,"offset":3.45,"pitch":44,"program":26,"isDrum":false,"velocity":1},{"onset":3.27,"offset":3.45,"pitch":51,"program":26,"isDrum":false,"velocity":1},{"onset":3.27,"offset":3.45,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":3.27,"offset":3.45,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":3.27,"offset":3.45,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":3.3,"offset":3.86,"pitch":54,"program":100,"isDrum":false,"velocity":1},{"onset":3.32,"offset":3.3299999999999996,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.43,"offset":3.44,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.43,"offset":3.44,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.45,"offset":4.95,"pitch":50,"program":26,"isDrum":false,"velocity":1},{"onset":3.45,"offset":4.95,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":3.45,"offset":4.95,"pitch":62,"program":26,"isDrum":false,"velocity":1},{"onset":3.45,"offset":4.095875,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":3.66,"offset":3.67,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.66,"offset":3.67,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.86,"offset":4.095875,"pitch":57,"program":100,"isDrum":false,"velocity":1},{"onset":4.26,"offset":4.68,"pitch":54,"program":100,"isDrum":false,"velocity":1},{"onset":4.28,"offset":4.95,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":4.68,"offset":5.19,"pitch":58,"program":100,"isDrum":false,"velocity":1},{"onset":4.95,"offset":6.65,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":4.95,"offset":7.62,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":5.19,"offset":5.58,"pitch":59,"program":100,"isDrum":false,"velocity":1},{"onset":5.58,"offset":5.99,"pitch":58,"program":100,"isDrum":false,"velocity":1},{"onset":5.99,"offset":6.48,"pitch":58,"program":100,"isDrum":false,"velocity":1},{"onset":6.36,"offset":7.2,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":6.65,"offset":7.62,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":6.77,"offset":7.38,"pitch":54,"program":100,"isDrum":false,"velocity":1},{"onset":6.81,"offset":8.24,"pitch":47,"program":26,"isDrum":false,"velocity":1},{"onset":7.2,"offset":8.19175,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":7.62,"offset":8.24,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":7.62,"offset":8.24,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":7.62,"offset":8.05,"pitch":51,"program":100,"isDrum":false,"velocity":1},{"onset":8.05,"offset":8.69,"pitch":58,"program":100,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.47,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.47,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.47,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.47,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.47,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.47,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.9,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.9,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.9,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.9,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.9,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.9,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.28,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.28,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.28,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.7,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.7,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.7,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.7,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.7,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":9.7,"offset":9.95,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":9.7,"offset":9.95,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":9.7,"offset":9.95,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":9.7,"offset":9.95,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":9.7,"offset":9.95,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":9.95,"offset":10.2396875,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":9.95,"offset":10.2396875,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":9.95,"offset":10.2396875,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":9.95,"offset":10.2396875,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":9.95,"offset":10.2396875,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.74,"pitch":42,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.74,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.74,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.74,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.74,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.35,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.35,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":11.35,"offset":11.65,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":11.35,"offset":11.65,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":11.65,"offset":11.74,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":11.65,"offset":11.74,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":46,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":62,"program":26,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":11.75,"offset":11.99,"pitch":34,"program":33,"isDrum":false,"velocity":1},{"onset":11.75,"offset":11.76,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.75,"offset":11.76,"pitch":38,"program":128,"isDrum":true,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"5b6d7fc514711131b3dcb6600c52f9754a8cf61d9d7e01412d49a6512acaa9f2","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/examples/fma-23371.wav b/examples/fma-23371.wav new file mode 100644 index 0000000000000000000000000000000000000000..64ec8e532811b651ad6e4f7c0e0b93bd6c7c1cad --- /dev/null +++ b/examples/fma-23371.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b6d7fc514711131b3dcb6600c52f9754a8cf61d9d7e01412d49a6512acaa9f2 +size 384586 diff --git a/examples/fma-37119.json b/examples/fma-37119.json new file mode 100644 index 0000000000000000000000000000000000000000..161fe4ca3d4ad3fd76c4800e1ac8d6e3c6bac10d --- /dev/null +++ b/examples/fma-37119.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":11.29,"offset":11.299999999999999,"pitch":69,"program":71,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"17e0dcb1a33c859bf5e1099d556623139d08719a74e7b4d77ad12c7ed427db94","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/examples/fma-37119.wav b/examples/fma-37119.wav new file mode 100644 index 0000000000000000000000000000000000000000..947a938249e5d8bd489432e3246463a7ee3ed760 --- /dev/null +++ b/examples/fma-37119.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17e0dcb1a33c859bf5e1099d556623139d08719a74e7b4d77ad12c7ed427db94 +size 384556 diff --git a/examples/fma-42761.json b/examples/fma-42761.json new file mode 100644 index 0000000000000000000000000000000000000000..0f7024d5b3c02a37fa0a3eea42c03337bf077093 --- /dev/null +++ b/examples/fma-42761.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.01,"offset":0.02,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.02,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.02,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.02,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.02,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.02,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.18,"pitch":31,"program":33,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.2,"offset":0.37,"pitch":43,"program":33,"isDrum":false,"velocity":1},{"onset":0.21,"offset":0.22,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.21,"offset":0.22,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.21,"offset":0.22,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.21,"offset":0.22,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.21,"offset":0.22,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.21,"offset":0.22,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.22,"offset":0.41,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.22,"offset":0.41,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.22,"offset":0.41,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.22,"offset":0.41,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.22,"offset":0.41,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.22,"offset":0.41,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.42,"offset":0.7,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.42,"offset":0.7,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.42,"offset":0.7,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.42,"offset":0.7,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.42,"offset":0.7,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.42,"offset":0.7,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.44,"offset":0.62,"pitch":31,"program":33,"isDrum":false,"velocity":1},{"onset":0.44,"offset":0.45,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.44,"offset":0.45,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.69,"offset":0.86,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":0.7,"offset":0.71,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":0.7,"offset":0.71,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":0.7,"offset":0.71,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":0.7,"offset":0.71,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":0.7,"offset":0.71,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":0.71,"offset":0.9,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":0.71,"offset":0.9,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":0.71,"offset":0.9,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":0.71,"offset":0.9,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":0.71,"offset":0.9,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":0.74,"offset":0.75,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.74,"offset":0.75,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.9,"offset":0.91,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":0.9,"offset":0.91,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":0.9,"offset":0.91,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":0.9,"offset":0.91,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":0.9,"offset":0.91,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.1,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.1,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.1,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.1,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.1,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":0.93,"offset":0.9400000000000001,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.93,"offset":0.9400000000000001,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.94,"offset":1.11,"pitch":31,"program":33,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.11,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.11,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.11,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.11,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.11,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.3,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.3,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.3,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.3,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.3,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.12,"offset":1.1300000000000001,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.12,"offset":1.1300000000000001,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.17,"offset":1.34,"pitch":36,"program":33,"isDrum":false,"velocity":1},{"onset":1.3,"offset":1.31,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.3,"offset":1.31,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.3,"offset":1.31,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.3,"offset":1.31,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.3,"offset":1.31,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.5,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.5,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.5,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.5,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.5,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.42,"offset":1.59,"pitch":31,"program":33,"isDrum":false,"velocity":1},{"onset":1.42,"offset":1.43,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.42,"offset":1.43,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.5,"offset":1.51,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.5,"offset":1.51,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.5,"offset":1.51,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.5,"offset":1.51,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.5,"offset":1.51,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.51,"offset":1.7,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.51,"offset":1.7,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.51,"offset":1.7,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.51,"offset":1.7,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.51,"offset":1.7,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.61,"offset":1.62,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.61,"offset":1.62,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.67,"offset":1.84,"pitch":36,"program":33,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.71,"offset":2.0479375,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.71,"offset":2.0479375,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.71,"offset":2.0479375,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.71,"offset":2.0479375,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.8,"offset":1.81,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.8,"offset":1.81,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.92,"offset":2.16,"pitch":36,"program":33,"isDrum":false,"velocity":1},{"onset":1.99,"offset":2,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.99,"offset":2,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.15,"offset":2.43,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":2.16,"offset":2.43,"pitch":43,"program":33,"isDrum":false,"velocity":1},{"onset":2.16,"offset":2.17,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":2.16,"offset":2.17,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.16,"offset":2.17,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.42,"offset":2.4299999999999997,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":2.42,"offset":2.4299999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.42,"offset":2.4299999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.43,"offset":4.095875,"pitch":43,"program":33,"isDrum":false,"velocity":1},{"onset":2.43,"offset":2.71,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":2.68,"offset":2.69,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.68,"offset":2.69,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.71,"offset":2.99,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":2.94,"offset":2.9499999999999997,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":2.94,"offset":2.9499999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.94,"offset":2.9499999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.99,"offset":3.27,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":3.2,"offset":3.21,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.2,"offset":3.21,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.27,"offset":3.43,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":3.43,"offset":3.7,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":3.46,"offset":3.4699999999999998,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":3.46,"offset":3.4699999999999998,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.46,"offset":3.4699999999999998,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.7,"offset":3.97,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":3.72,"offset":3.73,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":3.72,"offset":3.73,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.72,"offset":3.73,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.97,"offset":4.095875,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":3.98,"offset":3.9899999999999998,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.98,"offset":3.9899999999999998,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.18,"offset":4.19,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.19,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.19,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.19,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.19,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.19,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.1899999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.18,"offset":4.1899999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.18,"offset":4.1899999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.19,"offset":4.43,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.43,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.43,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.43,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.43,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.43,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.44,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.44,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.44,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.44,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.44,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.44,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.4399999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.43,"offset":4.4399999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.43,"offset":4.4399999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.44,"offset":4.68,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.44,"offset":4.68,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.44,"offset":4.68,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.44,"offset":4.68,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.44,"offset":4.68,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.44,"offset":4.68,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.69,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.69,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.69,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.69,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.69,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.69,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.6899999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.68,"offset":4.6899999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.69,"offset":4.93,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.69,"offset":4.93,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.69,"offset":4.93,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.69,"offset":4.93,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.69,"offset":4.93,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.69,"offset":4.93,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.94,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.94,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.94,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.94,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.94,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.94,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.9399999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.93,"offset":4.9399999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.93,"offset":4.9399999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.94,"offset":5.17,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.94,"offset":5.17,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.94,"offset":5.17,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.94,"offset":5.17,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.94,"offset":5.17,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.94,"offset":5.17,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.42,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.42,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.42,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.42,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.42,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.42,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.1899999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.18,"offset":5.1899999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.18,"offset":5.1899999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.42,"offset":5.43,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.42,"offset":5.43,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.42,"offset":5.43,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.42,"offset":5.43,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.42,"offset":5.43,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.42,"offset":5.43,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.67,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.67,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.67,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.67,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.67,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.67,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.4399999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.43,"offset":5.4399999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.43,"offset":5.4399999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.67,"offset":5.68,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.67,"offset":5.68,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.67,"offset":5.68,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.67,"offset":5.68,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.67,"offset":5.68,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.67,"offset":5.68,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.92,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.92,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.92,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.92,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.92,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.92,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.6899999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.68,"offset":5.6899999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.92,"offset":5.93,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.92,"offset":5.93,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.92,"offset":5.93,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.92,"offset":5.93,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.92,"offset":5.93,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.92,"offset":5.93,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.143812500000001,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.143812500000001,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.143812500000001,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.15,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.15,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.143812500000001,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":5.9399999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.93,"offset":5.9399999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.93,"offset":5.9399999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.15,"offset":6.16,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":6.15,"offset":6.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.15,"offset":6.16,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.16,"offset":6.41,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":6.16,"offset":6.41,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.16,"offset":6.41,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":6.28,"offset":6.29,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.42,"offset":6.67,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":6.42,"offset":6.67,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.42,"offset":6.67,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":6.53,"offset":6.54,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.66,"offset":6.67,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.66,"offset":6.67,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.68,"offset":6.93,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.93,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.93,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":6.78,"offset":6.79,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.94,"offset":7.19,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":6.94,"offset":7.19,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.94,"offset":7.19,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":7.04,"offset":7.05,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.17,"offset":7.18,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.17,"offset":7.18,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.2,"offset":7.45,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":7.2,"offset":7.45,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.2,"offset":7.45,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":7.3,"offset":7.31,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.43,"offset":7.4399999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7.43,"offset":7.4399999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.43,"offset":7.4399999999999995,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.46,"offset":7.71,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":7.46,"offset":7.71,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.46,"offset":7.71,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":7.55,"offset":7.56,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.68,"offset":7.6899999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":7.68,"offset":7.6899999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.68,"offset":7.6899999999999995,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.72,"offset":7.97,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":7.72,"offset":7.97,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.72,"offset":7.97,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":7.8,"offset":7.81,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.93,"offset":7.9399999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.93,"offset":7.9399999999999995,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.98,"offset":8.2,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":7.98,"offset":8.2,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.98,"offset":8.2,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":8.05,"offset":8.06,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":8.18,"offset":8.19,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.18,"offset":8.19,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.18,"offset":8.19,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":8.21,"offset":8.42,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":8.21,"offset":8.42,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":8.21,"offset":8.42,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":8.21,"offset":8.42,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.65,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.65,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.65,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.65,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.44,"offset":8.66,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":8.44,"offset":8.66,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":8.44,"offset":8.66,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":8.44,"offset":8.66,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.44,"offset":8.66,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8.44,"offset":8.66,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.88,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.88,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.88,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.88,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.67,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.67,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.67,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.67,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.67,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.67,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.89,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.89,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.89,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.89,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.89,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.89,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.68,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.89,"offset":9.12,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":8.89,"offset":9.12,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":8.89,"offset":9.12,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":8.89,"offset":9.12,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.9,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.9,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.9,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.9,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.9,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.9,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.13,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.13,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.13,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.13,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.13,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.13,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":8.91,"offset":8.92,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.91,"offset":8.92,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.13,"offset":9.36,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.36,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.36,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.36,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.14,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.14,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.14,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.14,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.14,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.14,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.37,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.37,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.37,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.37,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.37,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.37,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":9.15,"offset":9.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.37,"offset":9.6,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.6,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.6,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.6,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.38,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.38,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.38,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.38,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.38,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.38,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":9.38,"offset":9.61,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":9.38,"offset":9.61,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":9.38,"offset":9.61,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":9.38,"offset":9.61,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":9.38,"offset":9.61,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":9.38,"offset":9.61,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":9.39,"offset":9.4,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":9.39,"offset":9.4,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.61,"offset":10.44,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.44,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.44,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.2396875,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":9.61,"offset":9.62,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":9.61,"offset":9.62,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.2396875,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.2396875,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.2396875,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.2396875,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":9.63,"offset":9.64,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.87,"offset":9.879999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.87,"offset":9.879999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.11,"offset":10.12,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.42,"offset":10.66,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":10.44,"offset":10.68,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":10.44,"offset":10.45,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.44,"offset":10.45,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.45,"offset":10.68,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":10.46,"offset":10.68,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":10.46,"offset":10.68,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":10.47,"offset":10.68,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":10.66,"offset":10.91,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":10.68,"offset":10.93,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":10.69,"offset":10.93,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":10.7,"offset":10.93,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":10.71,"offset":10.93,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":10.71,"offset":10.93,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":10.91,"offset":11.16,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":10.92,"offset":10.93,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.92,"offset":10.93,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.93,"offset":11.19,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":10.94,"offset":11.19,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":10.95,"offset":11.19,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":10.95,"offset":11.19,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.19,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":11.16,"offset":11.41,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":11.19,"offset":11.44,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":11.2,"offset":11.44,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":11.21,"offset":11.44,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":11.22,"offset":11.44,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":11.22,"offset":11.44,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":11.41,"offset":11.67,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":11.43,"offset":11.44,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.43,"offset":11.44,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.44,"offset":11.7,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":11.45,"offset":11.7,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":11.46,"offset":11.7,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":11.47,"offset":11.7,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":11.47,"offset":11.7,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":11.67,"offset":11.93,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":11.7,"offset":11.96,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":11.7,"offset":11.709999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.7,"offset":11.709999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.71,"offset":11.96,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":11.72,"offset":11.96,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":11.72,"offset":11.96,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":11.73,"offset":11.96,"pitch":62,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"12ad8c28ffc3714fb726fb9500f843fa8b8f764974df5bbded9afe324fd440c8","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":2} diff --git a/examples/fma-42761.wav b/examples/fma-42761.wav new file mode 100644 index 0000000000000000000000000000000000000000..233ac73587733990f65ac015384629c6898b66fb --- /dev/null +++ b/examples/fma-42761.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12ad8c28ffc3714fb726fb9500f843fa8b8f764974df5bbded9afe324fd440c8 +size 384500 diff --git a/examples/fma-68838.json b/examples/fma-68838.json new file mode 100644 index 0000000000000000000000000000000000000000..f4d9fb2bf529b68c4c72d8f9b14f93744a70efe2 --- /dev/null +++ b/examples/fma-68838.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.04,"offset":0.33,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.36,"offset":0.87,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":0.89,"offset":1.13,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.38,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":1.4,"offset":1.86,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":1.88,"offset":2.09,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.09,"offset":2.27,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":2.36,"offset":2.57,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":2.57,"offset":2.84,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":2.84,"offset":3.1,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":3.13,"offset":3.53,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":3.53,"offset":4.095875,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.71,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":8.71,"offset":8.98,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":9.01,"offset":9.48,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":9.51,"offset":9.77,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":9.73,"offset":10,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":10.03,"offset":10.5,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":10.52,"offset":10.74,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":10.52,"offset":10.74,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":10.52,"offset":10.74,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":10.74,"offset":10.99,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":10.74,"offset":10.99,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":10.74,"offset":10.99,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":11.03,"offset":11.55,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":11.03,"offset":11.55,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":11.03,"offset":11.55,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":11.58,"offset":11.79,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":11.58,"offset":11.79,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":11.81,"offset":12,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":11.81,"offset":12,"pitch":68,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"60c2ef0e4ce2ef2c9e37ac9c4e35dd8c6f4c2cf1b871cf00f186e71c5c3a73bc","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/examples/fma-68838.wav b/examples/fma-68838.wav new file mode 100644 index 0000000000000000000000000000000000000000..b706e2b3d897e6b9113cfdba1e1da7d36a5aa128 --- /dev/null +++ b/examples/fma-68838.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60c2ef0e4ce2ef2c9e37ac9c4e35dd8c6f4c2cf1b871cf00f186e71c5c3a73bc +size 384522 diff --git a/examples/fma-7481.json b/examples/fma-7481.json new file mode 100644 index 0000000000000000000000000000000000000000..872fbf55a6f17624ad688b1743898e27926e123b --- /dev/null +++ b/examples/fma-7481.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.03,"offset":0.16,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.16,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":54,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":60,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":66,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":69,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":78,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":81,"program":29,"isDrum":false,"velocity":1},{"onset":0.09,"offset":0.21,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":0.09,"offset":0.09999999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":0.28,"offset":0.4,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.4,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.4,"pitch":84,"program":0,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":54,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":60,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":66,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":69,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":78,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":81,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.4,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.29000000000000004,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.28,"offset":0.29000000000000004,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.4,"offset":0.52,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":0.4,"offset":0.52,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":0.47,"offset":0.58,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":0.52,"offset":0.64,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":0.52,"offset":0.64,"pitch":87,"program":0,"isDrum":false,"velocity":1},{"onset":0.65,"offset":0.77,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":0.65,"offset":0.77,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":0.65,"offset":0.77,"pitch":80,"program":0,"isDrum":false,"velocity":1},{"onset":0.65,"offset":0.76,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":0.65,"offset":0.66,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.78,"offset":0.9,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":0.78,"offset":0.9,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":0.84,"offset":0.95,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":0.9,"offset":1.02,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":0.9,"offset":1.02,"pitch":87,"program":0,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":54,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":60,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":66,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":69,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":78,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":81,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.02,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":1.02,"offset":1.14,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":1.02,"offset":1.14,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":1.02,"offset":1.14,"pitch":83,"program":0,"isDrum":false,"velocity":1},{"onset":1.02,"offset":1.14,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":1.02,"offset":1.03,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.15,"offset":1.27,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":1.15,"offset":1.27,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":1.21,"offset":1.32,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.4,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.4,"pitch":87,"program":0,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":54,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":60,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":66,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":69,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":78,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":81,"program":29,"isDrum":false,"velocity":1},{"onset":1.4,"offset":1.51,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":1.4,"offset":1.41,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":1.41,"offset":1.53,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":1.41,"offset":1.53,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":1.54,"offset":1.66,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":1.54,"offset":1.66,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":1.58,"offset":1.69,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.79,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.79,"pitch":87,"program":0,"isDrum":false,"velocity":1},{"onset":1.77,"offset":1.88,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":1.77,"offset":1.78,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":54,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":60,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":66,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":69,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":78,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":81,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":1.79,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.79,"offset":1.91,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":1.79,"offset":1.91,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":1.79,"offset":1.91,"pitch":83,"program":0,"isDrum":false,"velocity":1},{"onset":1.92,"offset":2.04,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":1.92,"offset":2.04,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":1.95,"offset":2.0479375,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":2.04,"offset":2.15,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":2.04,"offset":2.05,"pitch":87,"program":0,"isDrum":false,"velocity":1},{"onset":2.15,"offset":2.27,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":2.15,"offset":2.1599999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.27,"offset":2.39,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":2.36,"offset":2.52,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":2.39,"offset":2.52,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":2.52,"offset":3.28,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":2.52,"offset":2.65,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":2.52,"offset":2.68,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":2.53,"offset":2.5399999999999996,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.65,"offset":2.77,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":2.68,"offset":2.84,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.9,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":2.84,"offset":3,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":2.9,"offset":3.02,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":2.9,"offset":2.9099999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3,"offset":3.16,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":3.02,"offset":3.15,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":3.15,"offset":3.28,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":3.16,"offset":3.32,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":3.28,"offset":4.03,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":3.28,"offset":3.41,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":3.28,"offset":3.2899999999999996,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.28,"offset":3.2899999999999996,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.32,"offset":4.095875,"pitch":72,"program":100,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.53,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":3.53,"offset":3.66,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":3.65,"offset":3.6599999999999997,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":3.66,"offset":3.78,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":3.78,"offset":3.91,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":3.91,"offset":4.03,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":4.03,"offset":4.095875,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":4.03,"offset":4.28,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":4.03,"offset":4.04,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.03,"offset":4.04,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.11,"offset":4.3,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":4.28,"offset":4.4,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":4.3,"offset":4.4,"pitch":63,"program":100,"isDrum":false,"velocity":1},{"onset":4.4,"offset":4.53,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":4.4,"offset":4.49,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":4.41,"offset":4.42,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.41,"offset":4.42,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":4.49,"offset":4.59,"pitch":66,"program":100,"isDrum":false,"velocity":1},{"onset":4.53,"offset":4.66,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":4.59,"offset":4.78,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":4.66,"offset":4.79,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":4.78,"offset":4.97,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":4.79,"offset":4.91,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":4.79,"offset":4.8,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.79,"offset":4.8,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.91,"offset":5.04,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":4.97,"offset":5.17,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":5.04,"offset":5.16,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":5.16,"offset":5.28,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.16,"offset":5.17,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.17,"offset":5.37,"pitch":73,"program":100,"isDrum":false,"velocity":1},{"onset":5.28,"offset":5.41,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":5.37,"offset":5.56,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":5.41,"offset":5.53,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":5.53,"offset":5.66,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.53,"offset":5.54,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.56,"offset":5.76,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":5.66,"offset":5.79,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":5.76,"offset":5.96,"pitch":73,"program":100,"isDrum":false,"velocity":1},{"onset":5.79,"offset":5.91,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":5.91,"offset":6.04,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.91,"offset":5.92,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.96,"offset":6.143812500000001,"pitch":70,"program":100,"isDrum":false,"velocity":1},{"onset":6.04,"offset":6.27,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":6.1,"offset":6.143812500000001,"pitch":52,"program":33,"isDrum":false,"velocity":1},{"onset":6.27,"offset":7.02,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":6.27,"offset":6.52,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":6.28,"offset":6.29,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.28,"offset":6.29,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.52,"offset":6.77,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":6.65,"offset":6.66,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":6.77,"offset":7.02,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":6.84,"offset":7.06,"pitch":64,"program":100,"isDrum":false,"velocity":1},{"onset":7.02,"offset":10.2396875,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":7.02,"offset":7.28,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":7.02,"offset":7.029999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7.02,"offset":7.029999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.06,"offset":7.28,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":7.28,"offset":7.53,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":7.28,"offset":7.5,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":7.4,"offset":7.41,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.5,"offset":7.72,"pitch":64,"program":100,"isDrum":false,"velocity":1},{"onset":7.53,"offset":7.79,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":7.72,"offset":7.94,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":7.78,"offset":7.79,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":7.78,"offset":7.79,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.79,"offset":8.04,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":7.94,"offset":8.16,"pitch":64,"program":100,"isDrum":false,"velocity":1},{"onset":8.04,"offset":8.2,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":8.15,"offset":8.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.16,"offset":8.19175,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":8.2,"offset":8.42,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":8.27,"offset":8.41,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":8.4,"offset":8.53,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":8.42,"offset":8.55,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":8.52,"offset":8.65,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":8.53,"offset":8.54,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.55,"offset":8.67,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":8.64,"offset":8.77,"pitch":80,"program":0,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.9,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":8.76,"offset":8.9,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":8.89,"offset":9.02,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":8.9,"offset":10.2396875,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":8.9,"offset":8.91,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.01,"offset":9.15,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.28,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":9.27,"offset":9.4,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.39,"offset":9.53,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":9.52,"offset":9.65,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.78,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":9.65,"offset":9.66,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":9.77,"offset":9.91,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":9.9,"offset":10.04,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":10.02,"offset":10.03,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.02,"offset":10.03,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.03,"offset":10.17,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":10.16,"offset":10.2396875,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":10.27,"offset":10.38,"pitch":63,"program":0,"isDrum":false,"velocity":1},{"onset":10.27,"offset":10.38,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":10.4,"offset":10.41,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.51,"offset":10.77,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":10.52,"offset":10.63,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":10.52,"offset":10.63,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":10.77,"offset":10.89,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":10.77,"offset":10.89,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":10.77,"offset":11.03,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":10.78,"offset":10.79,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.78,"offset":10.79,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.03,"offset":11.15,"pitch":63,"program":0,"isDrum":false,"velocity":1},{"onset":11.03,"offset":11.15,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":11.03,"offset":11.29,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":11.15,"offset":11.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.28,"offset":11.39,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":11.28,"offset":11.39,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":11.39,"offset":11.51,"pitch":63,"program":0,"isDrum":false,"velocity":1},{"onset":11.39,"offset":11.51,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":11.51,"offset":11.63,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":11.51,"offset":11.63,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":11.53,"offset":11.54,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.77,"offset":11.89,"pitch":63,"program":0,"isDrum":false,"velocity":1},{"onset":11.77,"offset":11.89,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":11.9,"offset":11.91,"pitch":42,"program":128,"isDrum":true,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"1fe21e9255fd0fb4ef6e9c4a088c74a7cd81d0d8d76fd91323d4fdcedcea2d5c","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/examples/fma-7481.wav b/examples/fma-7481.wav new file mode 100644 index 0000000000000000000000000000000000000000..dfae3cd1fd74212e8d2fac503e261fed00e46c82 --- /dev/null +++ b/examples/fma-7481.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fe21e9255fd0fb4ef6e9c4a088c74a7cd81d0d8d76fd91323d4fdcedcea2d5c +size 384512 diff --git a/examples/fma-75782.json b/examples/fma-75782.json new file mode 100644 index 0000000000000000000000000000000000000000..34c81689b83401f5943bf6dd2df22ec2e688767b --- /dev/null +++ b/examples/fma-75782.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.01,"offset":0.66,"pitch":31,"program":33,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.02,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.08,"offset":0.09,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.08,"offset":0.09,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.44,"offset":0.45,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.47,"offset":2.0479375,"pitch":66,"program":100,"isDrum":false,"velocity":1},{"onset":0.66,"offset":0.86,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":0.66,"offset":0.67,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":0.66,"offset":0.67,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.66,"offset":0.67,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":1.05,"offset":1.06,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.05,"offset":1.06,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.24,"offset":1.25,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.42,"offset":1.43,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.61,"offset":1.62,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.61,"offset":1.62,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":1.96,"offset":1.97,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":1.96,"offset":1.97,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":2.17,"offset":2.1799999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.17,"offset":2.1799999999999997,"pitch":48,"program":128,"isDrum":true,"velocity":1},{"onset":2.39,"offset":2.4,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.39,"offset":2.4,"pitch":48,"program":128,"isDrum":true,"velocity":1},{"onset":2.56,"offset":2.57,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.56,"offset":2.57,"pitch":48,"program":128,"isDrum":true,"velocity":1},{"onset":2.56,"offset":2.57,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":2.94,"offset":2.9499999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.94,"offset":2.9499999999999997,"pitch":48,"program":128,"isDrum":true,"velocity":1},{"onset":3.11,"offset":3.1199999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.11,"offset":3.1199999999999997,"pitch":48,"program":128,"isDrum":true,"velocity":1},{"onset":3.11,"offset":3.1199999999999997,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":3.5,"offset":3.51,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.5,"offset":3.51,"pitch":41,"program":128,"isDrum":true,"velocity":1},{"onset":3.69,"offset":4.095875,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":3.69,"offset":3.6999999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.69,"offset":3.6999999999999997,"pitch":41,"program":128,"isDrum":true,"velocity":1},{"onset":3.69,"offset":3.6999999999999997,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":4.09,"offset":4.1,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.09,"offset":4.1,"pitch":41,"program":128,"isDrum":true,"velocity":1},{"onset":4.09,"offset":4.1,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":4.28,"offset":4.29,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.46,"offset":4.47,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.64,"offset":4.6499999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.64,"offset":4.6499999999999995,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":4.83,"offset":4.84,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.01,"offset":5.02,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.01,"offset":5.02,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":5.2,"offset":5.21,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.59,"offset":5.6,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.59,"offset":5.6,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":5.78,"offset":5.79,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.96,"offset":5.97,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.14,"offset":6.1499999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.14,"offset":6.1499999999999995,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":6.32,"offset":6.33,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.38,"offset":6.51,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":6.51,"offset":6.77,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":6.51,"offset":6.52,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.67,"offset":8.19175,"pitch":45,"program":26,"isDrum":false,"velocity":1},{"onset":6.67,"offset":8.19175,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":6.67,"offset":8.19175,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":6.67,"offset":8.19175,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":6.67,"offset":8.19175,"pitch":67,"program":26,"isDrum":false,"velocity":1},{"onset":6.7,"offset":6.71,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.7,"offset":6.71,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":6.77,"offset":7.03,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":6.89,"offset":6.8999999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.09,"offset":7.1,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":7.09,"offset":7.1,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.28,"offset":7.29,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.47,"offset":7.4799999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.65,"offset":7.66,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":7.65,"offset":7.66,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":7.84,"offset":7.85,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.02,"offset":8.03,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.02,"offset":8.03,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":8.4,"offset":8.41,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.4,"offset":8.41,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.4,"offset":8.41,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.58,"offset":8.59,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.58,"offset":8.59,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":8.58,"offset":8.59,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":8.85,"offset":8.86,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.85,"offset":8.86,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.94,"offset":8.95,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.04,"offset":9.049999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.14,"offset":9.15,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.14,"offset":9.15,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.23,"offset":9.24,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.32,"offset":9.33,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.41,"offset":9.42,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.41,"offset":9.42,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.5,"offset":9.51,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":9.5,"offset":9.51,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":9.71,"offset":9.72,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":9.91,"offset":9.92,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":9.91,"offset":9.92,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.1,"offset":10.11,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.1,"offset":10.11,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":10.49,"offset":10.5,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.49,"offset":10.5,"pitch":43,"program":128,"isDrum":true,"velocity":1},{"onset":10.66,"offset":10.67,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.66,"offset":10.67,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":10.66,"offset":10.67,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":11.05,"offset":11.06,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.05,"offset":11.06,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":11.05,"offset":11.06,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":11.64,"offset":11.65,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.64,"offset":11.65,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":11.64,"offset":11.65,"pitch":49,"program":128,"isDrum":true,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"64daa87292395961602211cbedb775e183b97148e994cdbff872e092e8183308","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/examples/fma-75782.wav b/examples/fma-75782.wav new file mode 100644 index 0000000000000000000000000000000000000000..6a3232c84cb4b647dfca80b7ea904d811c1d60a6 --- /dev/null +++ b/examples/fma-75782.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64daa87292395961602211cbedb775e183b97148e994cdbff872e092e8183308 +size 384604 diff --git a/examples/guitar-funk.json b/examples/guitar-funk.json new file mode 100644 index 0000000000000000000000000000000000000000..a0abb5006f4c4b1a9243f78a33ea4eae7a0cce14 --- /dev/null +++ b/examples/guitar-funk.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.01,"offset":0.24,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.22,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":0.25,"offset":0.75,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":0.26,"offset":0.51,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":0.27,"offset":0.52,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.52,"offset":0.74,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":0.53,"offset":0.76,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.53,"offset":0.76,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":0.54,"offset":0.77,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":0.77,"offset":0.89,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":0.78,"offset":0.91,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.31,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":0.92,"offset":1.04,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":0.93,"offset":1.03,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":0.93,"offset":1.28,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":1.29,"offset":1.53,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":1.29,"offset":1.52,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":1.3,"offset":1.55,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.54,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.56,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":1.66,"offset":1.8,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.79,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":1.68,"offset":1.78,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":2.04,"offset":2.36,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":2.04,"offset":2.37,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":2.06,"offset":2.39,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":2.47,"offset":3.13,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.62,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":2.49,"offset":2.86,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":2.5,"offset":2.62,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":2.51,"offset":2.62,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":2.84,"offset":3.1,"pitch":44,"program":24,"isDrum":false,"velocity":1},{"onset":2.85,"offset":3.1,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":2.85,"offset":3.1,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":2.86,"offset":3.12,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":2.87,"offset":3.12,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":3.1,"offset":3.3,"pitch":44,"program":24,"isDrum":false,"velocity":1},{"onset":3.11,"offset":3.3,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":3.11,"offset":3.28,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":3.12,"offset":3.27,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":3.12,"offset":3.26,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":3.29,"offset":3.46,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":3.29,"offset":3.46,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":3.3,"offset":3.45,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.45,"pitch":44,"program":24,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.44,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":3.65,"offset":4.49,"pitch":44,"program":24,"isDrum":false,"velocity":1},{"onset":3.66,"offset":4.49,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":3.66,"offset":4.095875,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":3.67,"offset":4.095875,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.46,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.45,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.44,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":4.2,"offset":4.48,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":4.47,"offset":4.72,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":4.73,"offset":4.99,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":4.74,"offset":5.11,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":5.12,"offset":5.31,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":5.13,"offset":5.34,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":5.14,"offset":5.32,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.14,"offset":5.33,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.49,"offset":5.67,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.49,"offset":5.69,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.5,"offset":5.68,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.5,"offset":5.69,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":5.51,"offset":5.66,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":5.87,"offset":6.05,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":5.88,"offset":6.06,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":5.89,"offset":6.06,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.89,"offset":6.06,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.25,"offset":6.42,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":6.25,"offset":6.43,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.26,"offset":6.4,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":6.27,"offset":6.41,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":6.4,"offset":6.66,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":6.41,"offset":6.65,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":6.42,"offset":6.68,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":6.43,"offset":6.68,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.66,"offset":6.89,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.89,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.87,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.88,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.04,"offset":7.29,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":7.04,"offset":7.3,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.05,"offset":7.31,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":7.06,"offset":7.31,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":7.45,"offset":7.59,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":7.45,"offset":7.59,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":7.57,"offset":7.75,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":7.58,"offset":7.74,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.59,"offset":7.73,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":7.59,"offset":7.71,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":7.72,"offset":7.89,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":7.97,"offset":8.19175,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.97,"offset":8.19175,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":7.98,"offset":8.3,"pitch":70,"program":24,"isDrum":false,"velocity":1},{"onset":8.38,"offset":8.61,"pitch":71,"program":24,"isDrum":false,"velocity":1},{"onset":8.78,"offset":9.2,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":8.79,"offset":9.18,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":8.8,"offset":9.18,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":8.81,"offset":9.18,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":8.82,"offset":9.18,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":9.18,"offset":9.37,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":9.18,"offset":9.38,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":9.19,"offset":9.4,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":9.19,"offset":9.39,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":9.2,"offset":9.4,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":9.7,"offset":10,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":9.71,"offset":9.83,"pitch":70,"program":24,"isDrum":false,"velocity":1},{"onset":9.83,"offset":9.99,"pitch":71,"program":24,"isDrum":false,"velocity":1},{"onset":10.11,"offset":10.2396875,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":10.12,"offset":10.2396875,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":10.13,"offset":10.2396875,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.14,"offset":10.2396875,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":10.47,"offset":10.65,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":10.47,"offset":10.65,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.48,"offset":10.66,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":10.89,"offset":11.11,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":10.9,"offset":11.1,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":10.91,"offset":11.1,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.92,"offset":11.1,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":10.93,"offset":11.1,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":11.3,"offset":11.66,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":11.31,"offset":11.66,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":11.31,"offset":11.66,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.66,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":11.33,"offset":11.67,"pitch":44,"program":24,"isDrum":false,"velocity":1},{"onset":11.68,"offset":11.93,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":11.69,"offset":11.91,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":11.7,"offset":11.92,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":11.71,"offset":11.92,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":11.72,"offset":11.91,"pitch":51,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"7f4101cf9df5af4614be3245eeea06ad2c4eb703721e28ddcbea275a19b4e77c","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/examples/guitar-funk.wav b/examples/guitar-funk.wav new file mode 100644 index 0000000000000000000000000000000000000000..93191e0db14028269c4d6ead4971ae3846dd90ee --- /dev/null +++ b/examples/guitar-funk.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f4101cf9df5af4614be3245eeea06ad2c4eb703721e28ddcbea275a19b4e77c +size 384078 diff --git a/examples/guitar-jazz-chords.json b/examples/guitar-jazz-chords.json new file mode 100644 index 0000000000000000000000000000000000000000..de76c33f1c928d9bb9142a0c8db579c67fe863d2 --- /dev/null +++ b/examples/guitar-jazz-chords.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.13,"offset":0.9,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":0.13,"offset":0.9,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":0.13,"offset":0.9,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.13,"offset":0.9,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":0.13,"offset":0.9,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.14,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.14,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.14,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.14,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.14,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":1.15,"offset":1.32,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":1.15,"offset":1.32,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":1.15,"offset":1.32,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":1.33,"offset":1.77,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":1.33,"offset":1.77,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":1.33,"offset":1.77,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":1.33,"offset":1.77,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":1.33,"offset":1.53,"pitch":71,"program":24,"isDrum":false,"velocity":1},{"onset":1.54,"offset":1.77,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":1.79,"offset":2.32,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":1.79,"offset":2.3,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":1.79,"offset":2.29,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":1.79,"offset":2.19,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":1.79,"offset":1.95,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":1.96,"offset":2.19,"pitch":74,"program":24,"isDrum":false,"velocity":1},{"onset":2.3,"offset":2.5,"pitch":74,"program":24,"isDrum":false,"velocity":1},{"onset":2.31,"offset":2.75,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":2.31,"offset":2.74,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":2.32,"offset":2.77,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":2.32,"offset":2.76,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":2.5,"offset":2.72,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":2.75,"offset":2.94,"pitch":71,"program":24,"isDrum":false,"velocity":1},{"onset":2.76,"offset":2.93,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":2.76,"offset":2.93,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.93,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.93,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":2.93,"offset":3.09,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":2.93,"offset":3.12,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":2.94,"offset":3.11,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":2.94,"offset":3.12,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":2.94,"offset":3.1,"pitch":71,"program":24,"isDrum":false,"velocity":1},{"onset":3.41,"offset":4.76,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":3.41,"offset":4.17,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":3.41,"offset":4.095875,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":3.42,"offset":4.12,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.13,"offset":4.67,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.14,"offset":4.79,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.15,"offset":4.77,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.16,"offset":4.35,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.17,"offset":4.37,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.36,"offset":4.76,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.76,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.76,"offset":5.45,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.76,"offset":5.44,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.77,"offset":5.4,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.78,"offset":5.41,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.79,"offset":4.98,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.79,"offset":4.97,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.42,"offset":5.62,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.63,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.64,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.44,"offset":5.65,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.45,"offset":5.66,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.81,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":5.64,"offset":5.82,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.64,"offset":5.82,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.65,"offset":5.98,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.66,"offset":5.99,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.96,"offset":6.41,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":5.97,"offset":6.43,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.98,"offset":6.45,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.99,"offset":6.143812500000001,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":6.42,"offset":6.88,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":6.44,"offset":6.69,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.44,"offset":6.86,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":6.45,"offset":6.68,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":6.87,"offset":8.19175,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":6.88,"offset":7.09,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":6.88,"offset":7.08,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":6.89,"offset":7.07,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":7.5,"offset":8.19175,"pitch":45,"program":24,"isDrum":false,"velocity":1},{"onset":7.5,"offset":8.21,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":7.51,"offset":8.21,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":7.52,"offset":7.96,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":7.53,"offset":7.95,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":8.28,"offset":8.6,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":8.28,"offset":8.7,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":8.29,"offset":8.61,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":8.3,"offset":8.62,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":8.31,"offset":8.62,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":8.76,"offset":9.85,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":8.77,"offset":8.92,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":8.78,"offset":8.93,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":8.79,"offset":8.93,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":9.21,"offset":9.85,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":9.22,"offset":9.44,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":9.4,"offset":9.83,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":9.41,"offset":9.83,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":9.41,"offset":9.82,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.11,"offset":10.35,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":10.12,"offset":10.34,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":10.13,"offset":10.34,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.14,"offset":10.33,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":10.15,"offset":10.2396875,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":10.33,"offset":10.53,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":10.33,"offset":10.54,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":10.34,"offset":10.54,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.34,"offset":10.53,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":10.35,"offset":10.54,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":10.56,"offset":10.77,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":10.57,"offset":10.78,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":10.57,"offset":10.78,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.58,"offset":10.78,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":10.58,"offset":10.78,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":10.78,"offset":10.89,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":10.79,"offset":10.9,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":10.79,"offset":10.9,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":10.8,"offset":10.81,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":10.81,"offset":10.87,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":10.9,"offset":11.11,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":10.9,"offset":11.11,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":10.91,"offset":11.11,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":10.91,"offset":10.92,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":10.92,"offset":11.11,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":11.13,"offset":11.24,"pitch":45,"program":24,"isDrum":false,"velocity":1},{"onset":11.14,"offset":11.25,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":11.15,"offset":11.25,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":11.15,"offset":11.25,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":11.16,"offset":11.25,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":11.16,"offset":11.25,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":11.25,"offset":11.71,"pitch":45,"program":24,"isDrum":false,"velocity":1},{"onset":11.26,"offset":11.71,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":11.26,"offset":11.71,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":11.26,"offset":11.71,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":11.27,"offset":11.71,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":11.27,"offset":11.71,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":11.71,"offset":11.95,"pitch":45,"program":24,"isDrum":false,"velocity":1},{"onset":11.72,"offset":11.95,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":11.73,"offset":11.95,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.95,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.95,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":11.75,"offset":11.95,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":11.96,"offset":12,"pitch":45,"program":24,"isDrum":false,"velocity":1},{"onset":11.97,"offset":12,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":11.98,"offset":12,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":11.98,"offset":12,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":11.99,"offset":12,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":11.99,"offset":12,"pitch":69,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"67c90694360355b8ce5e534b0321660fb367f2fb966340b36fb9e0556dd46b9c","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/examples/guitar-jazz-chords.wav b/examples/guitar-jazz-chords.wav new file mode 100644 index 0000000000000000000000000000000000000000..0a9595eba7b5171ca835d0774373f7b89a8d60b8 --- /dev/null +++ b/examples/guitar-jazz-chords.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67c90694360355b8ce5e534b0321660fb367f2fb966340b36fb9e0556dd46b9c +size 384078 diff --git a/examples/guitar-jazz-lead.json b/examples/guitar-jazz-lead.json new file mode 100644 index 0000000000000000000000000000000000000000..078fbd104eef6b2ea0f7fc67e7ca51a333a2ae31 --- /dev/null +++ b/examples/guitar-jazz-lead.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":10.4,"notes":[{"onset":0.82,"offset":1.09,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":1.09,"offset":1.21,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":1.23,"offset":1.38,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":1.4,"offset":1.69,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":1.71,"offset":1.85,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":1.87,"offset":2.0479375,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":2,"offset":2.3,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":2.31,"offset":2.45,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":2.46,"offset":2.6,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":2.61,"offset":2.9,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":2.91,"offset":3.05,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":3.06,"offset":3.2,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":3.21,"offset":3.51,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":3.53,"offset":3.76,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":3.8,"offset":4.095875,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":4.44,"offset":5.9,"pitch":47,"program":24,"isDrum":false,"velocity":1},{"onset":5.91,"offset":6.143812500000001,"pitch":46,"program":24,"isDrum":false,"velocity":1},{"onset":6.2,"offset":6.49,"pitch":47,"program":24,"isDrum":false,"velocity":1},{"onset":6.51,"offset":6.8,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":6.82,"offset":7.12,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":7.13,"offset":7.41,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":7.43,"offset":7.72,"pitch":47,"program":24,"isDrum":false,"velocity":1},{"onset":7.74,"offset":8.29,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":8.31,"offset":8.89,"pitch":47,"program":24,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.1,"pitch":44,"program":24,"isDrum":false,"velocity":1},{"onset":9.1,"offset":10.2396875,"pitch":42,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"1b239dfb01eb9460f8dd8807932f6ba0f1d4dc39dbfbd34c117a9bd67856709c","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/examples/guitar-jazz-lead.wav b/examples/guitar-jazz-lead.wav new file mode 100644 index 0000000000000000000000000000000000000000..934a26629fa0e121ed6add3e90add1677a5232f0 --- /dev/null +++ b/examples/guitar-jazz-lead.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b239dfb01eb9460f8dd8807932f6ba0f1d4dc39dbfbd34c117a9bd67856709c +size 332878 diff --git a/examples/guitar-rock.json b/examples/guitar-rock.json new file mode 100644 index 0000000000000000000000000000000000000000..82ecb625d9445c3641b1a0e3b1964294b9cdf297 --- /dev/null +++ b/examples/guitar-rock.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.17,"offset":0.36,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":0.35,"offset":0.67,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":0.51,"offset":0.7,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":0.69,"offset":1.01,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":0.85,"offset":1.03,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":1.02,"offset":1.35,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.52,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":1.36,"offset":1.68,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":1.53,"offset":1.84,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":1.7,"offset":2.02,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":1.85,"offset":2.16,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":1.86,"offset":2.18,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.31,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":2.18,"offset":2.32,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.18,"offset":2.47,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":2.18,"offset":2.47,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":2.32,"offset":2.64,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":2.33,"offset":2.49,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.49,"offset":2.8,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":2.49,"offset":2.8,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":2.5,"offset":2.65,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.65,"offset":2.97,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":2.66,"offset":2.82,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.82,"offset":3.14,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":2.82,"offset":3.14,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":2.83,"offset":2.98,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.98,"offset":3.32,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.15,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":3.16,"offset":3.48,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":3.16,"offset":3.48,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":3.17,"offset":3.33,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":3.33,"offset":3.65,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":3.34,"offset":3.49,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":3.5,"offset":3.81,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":3.5,"offset":3.81,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":3.51,"offset":3.66,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":3.66,"offset":3.98,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":3.67,"offset":3.83,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":3.84,"offset":3.99,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":3.84,"offset":3.99,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":3.84,"offset":3.99,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":4,"offset":4.33,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":4.01,"offset":4.18,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.01,"offset":5.33,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":4.01,"offset":4.095875,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.34,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.49,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":4.35,"offset":4.65,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":4.36,"offset":4.51,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.51,"offset":4.66,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.51,"offset":4.82,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":4.67,"offset":4.98,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.83,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.84,"offset":4.99,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.84,"offset":5.15,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":5,"offset":5.32,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.01,"offset":5.16,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.33,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.33,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":5.34,"offset":5.49,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.34,"offset":5.48,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.5,"offset":5.65,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.5,"offset":5.66,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.67,"offset":5.83,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.82,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.84,"offset":5.97,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.84,"offset":5.98,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.99,"offset":6.13,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.99,"offset":6.14,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":6.3,"offset":6.54,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":6.3,"offset":6.54,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":6.61,"offset":6.93,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":6.61,"offset":6.93,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":6.95,"offset":7.32,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":6.95,"offset":7.32,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":7.33,"offset":7.48,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":7.33,"offset":7.48,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":7.49,"offset":7.62,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":7.49,"offset":7.62,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":7.64,"offset":8,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":7.64,"offset":8,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":8.01,"offset":8.3,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":8.31,"offset":8.91,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":8.31,"offset":8.91,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":8.98,"offset":9.3,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":8.99,"offset":9.31,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":9.32,"offset":9.63,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":9.32,"offset":9.63,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.95,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.95,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":9.96,"offset":10.29,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":9.97,"offset":10.2396875,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":10.3,"offset":10.61,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":10.3,"offset":10.61,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":10.63,"offset":10.91,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":10.64,"offset":10.9,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.21,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.21,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":11.28,"offset":11.61,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":11.28,"offset":11.61,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":11.62,"offset":11.96,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":11.62,"offset":11.96,"pitch":54,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"2b6ed704a6a1f5e10b8a664bc964e2848cb3e4c713df9b854df52ee471690bd8","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/examples/guitar-rock.wav b/examples/guitar-rock.wav new file mode 100644 index 0000000000000000000000000000000000000000..0e23c048c741d248b723b2e46ee45c6fa5c27805 --- /dev/null +++ b/examples/guitar-rock.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b6ed704a6a1f5e10b8a664bc964e2848cb3e4c713df9b854df52ee471690bd8 +size 384078 diff --git a/examples/slakh-band.json b/examples/slakh-band.json new file mode 100644 index 0000000000000000000000000000000000000000..5d585dbc77b027af58e8c0127c7f6a0e6a5653c9 --- /dev/null +++ b/examples/slakh-band.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.13,"offset":3.54,"pitch":65,"program":2,"isDrum":false,"velocity":1},{"onset":0.47,"offset":3.2,"pitch":66,"program":2,"isDrum":false,"velocity":1},{"onset":0.82,"offset":2.52,"pitch":73,"program":2,"isDrum":false,"velocity":1},{"onset":2.52,"offset":4.095875,"pitch":73,"program":2,"isDrum":false,"velocity":1},{"onset":2.7,"offset":2.84,"pitch":51,"program":26,"isDrum":false,"velocity":1},{"onset":2.83,"offset":2.98,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":2.86,"offset":4.095875,"pitch":72,"program":2,"isDrum":false,"velocity":1},{"onset":2.96,"offset":3.1,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":3.09,"offset":3.17,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":3.2,"offset":4.095875,"pitch":66,"program":2,"isDrum":false,"velocity":1},{"onset":3.2,"offset":4.095875,"pitch":78,"program":2,"isDrum":false,"velocity":1},{"onset":3.23,"offset":3.41,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":3.36,"offset":3.55,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":3.52,"offset":4.095875,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":3.54,"offset":5.25,"pitch":65,"program":2,"isDrum":false,"velocity":1},{"onset":3.88,"offset":4.095875,"pitch":77,"program":2,"isDrum":false,"velocity":1},{"onset":4.24,"offset":4.41,"pitch":78,"program":88,"isDrum":false,"velocity":1},{"onset":4.24,"offset":4.41,"pitch":90,"program":88,"isDrum":false,"velocity":1},{"onset":4.58,"offset":4.75,"pitch":73,"program":88,"isDrum":false,"velocity":1},{"onset":4.58,"offset":4.75,"pitch":85,"program":88,"isDrum":false,"velocity":1},{"onset":4.92,"offset":5.09,"pitch":73,"program":88,"isDrum":false,"velocity":1},{"onset":4.92,"offset":5.09,"pitch":85,"program":88,"isDrum":false,"velocity":1},{"onset":5.25,"offset":5.59,"pitch":73,"program":2,"isDrum":false,"velocity":1},{"onset":5.25,"offset":5.43,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":5.26,"offset":5.43,"pitch":73,"program":88,"isDrum":false,"velocity":1},{"onset":5.26,"offset":5.43,"pitch":85,"program":88,"isDrum":false,"velocity":1},{"onset":5.43,"offset":6.42,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":5.59,"offset":8.66,"pitch":65,"program":2,"isDrum":false,"velocity":1},{"onset":5.6,"offset":5.77,"pitch":73,"program":88,"isDrum":false,"velocity":1},{"onset":5.6,"offset":5.77,"pitch":85,"program":88,"isDrum":false,"velocity":1},{"onset":5.94,"offset":6.1,"pitch":78,"program":88,"isDrum":false,"velocity":1},{"onset":5.94,"offset":6.1,"pitch":90,"program":88,"isDrum":false,"velocity":1},{"onset":6.27,"offset":7.97,"pitch":73,"program":2,"isDrum":false,"velocity":1},{"onset":6.27,"offset":7.63,"pitch":72,"program":26,"isDrum":false,"velocity":1},{"onset":6.27,"offset":6.61,"pitch":85,"program":88,"isDrum":false,"velocity":1},{"onset":6.61,"offset":6.95,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":6.61,"offset":6.95,"pitch":89,"program":88,"isDrum":false,"velocity":1},{"onset":6.95,"offset":8.19175,"pitch":78,"program":2,"isDrum":false,"velocity":1},{"onset":6.95,"offset":7.29,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":6.95,"offset":7.29,"pitch":90,"program":88,"isDrum":false,"velocity":1},{"onset":7.29,"offset":7.97,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":7.29,"offset":7.63,"pitch":89,"program":88,"isDrum":false,"velocity":1},{"onset":7.63,"offset":8.19175,"pitch":72,"program":26,"isDrum":false,"velocity":1},{"onset":7.63,"offset":7.97,"pitch":84,"program":88,"isDrum":false,"velocity":1},{"onset":7.97,"offset":8.19175,"pitch":72,"program":2,"isDrum":false,"velocity":1},{"onset":7.97,"offset":8.19175,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":7.97,"offset":8.19175,"pitch":73,"program":26,"isDrum":false,"velocity":1},{"onset":7.97,"offset":8.19175,"pitch":85,"program":88,"isDrum":false,"velocity":1},{"onset":8.31,"offset":8.65,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":8.65,"offset":8.99,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":8.66,"offset":10.36,"pitch":65,"program":2,"isDrum":false,"velocity":1},{"onset":8.99,"offset":9.34,"pitch":72,"program":26,"isDrum":false,"velocity":1},{"onset":9.34,"offset":10,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":9.67,"offset":9.68,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.84,"offset":9.85,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10,"offset":10.28,"pitch":73,"program":26,"isDrum":false,"velocity":1},{"onset":10.01,"offset":10.02,"pitch":43,"program":128,"isDrum":true,"velocity":1},{"onset":10.36,"offset":10.68,"pitch":66,"program":2,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.71,"pitch":70,"program":2,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.7,"pitch":78,"program":2,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.71,"pitch":82,"program":2,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.7,"pitch":90,"program":2,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.7,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.71,"pitch":70,"program":26,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.69,"pitch":39,"program":32,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.37,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.36,"offset":10.37,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.36,"offset":10.37,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":10.7,"offset":11.37,"pitch":65,"program":2,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.37,"pitch":68,"program":2,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.38,"pitch":77,"program":2,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.38,"pitch":80,"program":2,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.38,"pitch":89,"program":2,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.38,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.36,"pitch":68,"program":26,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.38,"pitch":37,"program":32,"isDrum":false,"velocity":1},{"onset":10.7,"offset":10.709999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.7,"offset":10.709999999999999,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":11.04,"offset":11.049999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.04,"offset":11.049999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":66,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":75,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":78,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":82,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":87,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.98,"pitch":35,"program":32,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.39,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.38,"offset":11.39,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":11.72,"offset":11.73,"pitch":42,"program":128,"isDrum":true,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"f82c5c6507115ba2fab1a374c96a04d45933569c9d7299719758036b1ef14002","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/examples/slakh-band.wav b/examples/slakh-band.wav new file mode 100644 index 0000000000000000000000000000000000000000..196e7d7aa1bc74b3dae30a586e49cc37f2c17280 --- /dev/null +++ b/examples/slakh-band.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f82c5c6507115ba2fab1a374c96a04d45933569c9d7299719758036b1ef14002 +size 384078 diff --git a/examples/slakh-studio.json b/examples/slakh-studio.json new file mode 100644 index 0000000000000000000000000000000000000000..6353cc877fc3968c075558de111f4447fedb4e05 --- /dev/null +++ b/examples/slakh-studio.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0,"offset":0.01,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":0,"offset":0.01,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":0.02,"offset":2.76,"pitch":77,"program":16,"isDrum":false,"velocity":1},{"onset":0.02,"offset":2.77,"pitch":83,"program":16,"isDrum":false,"velocity":1},{"onset":0.02,"offset":2.76,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":0.25,"offset":0.26,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.5,"offset":0.51,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":0.75,"offset":1.22,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":0.75,"offset":0.76,"pitch":37,"program":128,"isDrum":true,"velocity":1},{"onset":0.75,"offset":0.76,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.75,"offset":0.76,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":1.22,"offset":1.5,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":1.25,"offset":1.26,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":1.48,"offset":1.99,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":1.5,"offset":1.9,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":1.96,"offset":2.0479375,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":2,"offset":2.24,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":2,"offset":2.01,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.25,"offset":2.76,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.25,"offset":2.76,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":2.25,"offset":2.53,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.25,"offset":2.77,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":2.25,"offset":2.48,"pitch":45,"program":32,"isDrum":false,"velocity":1},{"onset":2.25,"offset":2.26,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.25,"offset":2.26,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":2.25,"offset":2.26,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":2.5,"offset":2.72,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":2.5,"offset":2.75,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":2.72,"offset":3.04,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":2.75,"offset":2.98,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":2.75,"offset":2.97,"pitch":45,"program":32,"isDrum":false,"velocity":1},{"onset":2.76,"offset":2.7699999999999996,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":3,"offset":4.26,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":3,"offset":4.26,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":3,"offset":4.26,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":3,"offset":8.19175,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":3,"offset":4.095875,"pitch":60,"program":29,"isDrum":false,"velocity":1},{"onset":3,"offset":3.95,"pitch":36,"program":32,"isDrum":false,"velocity":1},{"onset":3,"offset":3.01,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":3,"offset":3.01,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":3.05,"offset":5.98,"pitch":72,"program":16,"isDrum":false,"velocity":1},{"onset":3.05,"offset":5.98,"pitch":76,"program":16,"isDrum":false,"velocity":1},{"onset":3.05,"offset":5.98,"pitch":79,"program":16,"isDrum":false,"velocity":1},{"onset":3.25,"offset":3.26,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.5,"offset":4.26,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":3.5,"offset":3.51,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":3.75,"offset":3.76,"pitch":37,"program":128,"isDrum":true,"velocity":1},{"onset":3.75,"offset":3.76,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":3.75,"offset":3.76,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":3.8,"offset":5.28,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":4.27,"offset":4.279999999999999,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":4.5,"offset":5.4,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":4.5,"offset":5.4,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":4.5,"offset":5.4,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":4.5,"offset":5.4,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":4.5,"offset":5.39,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":4.5,"offset":4.51,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.77,"offset":4.779999999999999,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":5.25,"offset":5.26,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.26,"offset":5.27,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.26,"offset":5.27,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":5.5,"offset":5.72,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":5.52,"offset":5.72,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.89,"pitch":69,"program":26,"isDrum":false,"velocity":1},{"onset":5.75,"offset":5.98,"pitch":45,"program":32,"isDrum":false,"velocity":1},{"onset":5.76,"offset":5.77,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":5.99,"offset":7.27,"pitch":67,"program":26,"isDrum":false,"velocity":1},{"onset":6,"offset":6.143812500000001,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":6,"offset":7.62,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":6,"offset":7.62,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":6,"offset":7.62,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":6,"offset":6.85,"pitch":36,"program":32,"isDrum":false,"velocity":1},{"onset":6,"offset":6.01,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":6.04,"offset":8.86,"pitch":72,"program":16,"isDrum":false,"velocity":1},{"onset":6.04,"offset":8.84,"pitch":76,"program":16,"isDrum":false,"velocity":1},{"onset":6.04,"offset":8.19175,"pitch":79,"program":16,"isDrum":false,"velocity":1},{"onset":6.25,"offset":6.26,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.51,"offset":6.52,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":6.75,"offset":7.27,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":6.75,"offset":7.27,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":6.75,"offset":6.76,"pitch":37,"program":128,"isDrum":true,"velocity":1},{"onset":6.75,"offset":6.76,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":6.76,"offset":6.77,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.26,"offset":7.27,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":7.27,"offset":7.54,"pitch":67,"program":26,"isDrum":false,"velocity":1},{"onset":7.27,"offset":7.54,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":7.49,"offset":7.5,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7.5,"offset":8.08,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":7.5,"offset":8.08,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":7.5,"offset":8.35,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":7.5,"offset":7.51,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":7.62,"offset":8.69,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":7.62,"offset":8.69,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":7.62,"offset":8.69,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":7.99,"offset":8.26,"pitch":62,"program":26,"isDrum":false,"velocity":1},{"onset":7.99,"offset":8.27,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8,"offset":8.01,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.25,"offset":8.76,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":8.25,"offset":8.76,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.25,"offset":8.26,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.25,"offset":8.26,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":8.49,"offset":8.71,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":8.72,"offset":9.02,"pitch":57,"program":26,"isDrum":false,"velocity":1},{"onset":8.72,"offset":9.03,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":8.74,"offset":8.97,"pitch":45,"program":32,"isDrum":false,"velocity":1},{"onset":8.74,"offset":8.75,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":9,"offset":10.2396875,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":9,"offset":10.2396875,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":9,"offset":10.2396875,"pitch":65,"program":0,"isDrum":false,"velocity":1},{"onset":9,"offset":9.76,"pitch":62,"program":26,"isDrum":false,"velocity":1},{"onset":9,"offset":10.2396875,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":9,"offset":10.03,"pitch":38,"program":32,"isDrum":false,"velocity":1},{"onset":9,"offset":9.01,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":9.01,"offset":11.82,"pitch":74,"program":16,"isDrum":false,"velocity":1},{"onset":9.01,"offset":11.84,"pitch":77,"program":16,"isDrum":false,"velocity":1},{"onset":9.25,"offset":9.26,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.5,"offset":9.51,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":9.75,"offset":9.76,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":9.75,"offset":9.76,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":9.76,"offset":11.98,"pitch":62,"program":26,"isDrum":false,"velocity":1},{"onset":9.8,"offset":9.81,"pitch":37,"program":128,"isDrum":true,"velocity":1},{"onset":10.25,"offset":10.26,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":10.5,"offset":11.74,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":10.5,"offset":11.74,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":10.5,"offset":11.74,"pitch":65,"program":0,"isDrum":false,"velocity":1},{"onset":10.5,"offset":11.36,"pitch":38,"program":32,"isDrum":false,"velocity":1},{"onset":10.5,"offset":10.51,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.5,"offset":10.51,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":10.54,"offset":11.27,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":11.01,"offset":11.02,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.01,"offset":11.02,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":11.25,"offset":11.26,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.25,"offset":11.26,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":11.27,"offset":11.98,"pitch":69,"program":26,"isDrum":false,"velocity":1},{"onset":11.5,"offset":11.75,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":11.75,"offset":11.98,"pitch":38,"program":32,"isDrum":false,"velocity":1},{"onset":11.75,"offset":11.76,"pitch":51,"program":128,"isDrum":true,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"e9715a960d306d3559f424a053a0cdf5b3f9b78c06e0d304f8265a56dd380e39","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/examples/slakh-studio.wav b/examples/slakh-studio.wav new file mode 100644 index 0000000000000000000000000000000000000000..15a87d30ebc092e71df33cc0e74ad566d6bf4b15 --- /dev/null +++ b/examples/slakh-studio.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9715a960d306d3559f424a053a0cdf5b3f9b78c06e0d304f8265a56dd380e39 +size 384078 diff --git a/index.html b/index.html index fd0f5ce132bb55b9ee671e5bdb503598a41f66e0..6cb8f74686eb9dd27b9963c6633dfbef33eb87d0 100644 --- a/index.html +++ b/index.html @@ -6,11 +6,11 @@ Hendrix — on-device transcription - - - + + + - +
diff --git a/local.html b/local.html index fd0f5ce132bb55b9ee671e5bdb503598a41f66e0..6cb8f74686eb9dd27b9963c6633dfbef33eb87d0 100644 --- a/local.html +++ b/local.html @@ -6,11 +6,11 @@ Hendrix — on-device transcription - - - + + + - +
diff --git a/soundfonts/GeneralUser_GS.sf2 b/soundfonts/GeneralUser_GS.sf2 new file mode 100644 index 0000000000000000000000000000000000000000..888d540c52e092bd203ac907c723a19bc23b039a --- /dev/null +++ b/soundfonts/GeneralUser_GS.sf2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9575028c7a1f589f5770fccc8cff2734566af40cd26ed836944e9a5152688cfe +size 32319396 diff --git a/soundfonts/LICENSE.txt b/soundfonts/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d5038809a722c40d07e3c7719adf4f5ba94f0aa4 --- /dev/null +++ b/soundfonts/LICENSE.txt @@ -0,0 +1,23 @@ +*** License v2.0 *** + +** License of the complete work ** +You may use GeneralUser GS without restriction for your own music creation, private or commercial. This SoundFont bank is provided to the community free of charge. Please feel free to use it in your software projects, and to modify the SoundFont bank or its packaging to suit your needs. + +** License of contained samples ** +GeneralUser GS inherits the usage rights of the samples contained within, all of which allow full use in music production, including the ability to make profit from musical recordings created with GeneralUser GS. + +Many of the samples are original, but some were taken from other banks freely (and legally) available on the Internet from various SoundFont websites. Because GeneralUser GS originated as a personal project with no intention for publication, I cannot be 100% sure where all of the samples originated, although I do know that none of them came from commercially published SoundFont packages or sample CDs. Regardless, many "free" SoundFonts available on the web may indeed contain samples of questionable origin. My understanding of the copyrights of all samples is only as good as the information provided by the original sources. If you become aware of any restricted samples being used in GeneralUser GS, please let me know so I can replace them. + +This uncertainty may concern you if you intend to use GeneralUser GS in a commercial software product. That being said, I have never received any complaint regarding sample ownership since I published the original GeneralUser GS back in 2000, and as far as I am aware, neither have any of the companies creating commercial software products using GeneralUser GS. + +** More info ** +If you plan to feature GeneralUser GS on your own website, please do not link directly to my download files. Either link to my website, or provide your own local copy instead. + +I hope you enjoy GeneralUser GS! This SoundFont bank is the product of many years of hard work. + +You can find updates to GeneralUser GS and more of my virtual instruments at: http://www.schristiancollins.com + +I can be reached via the contact page on my website here: https://www.schristiancollins.com/contact + +Thank you! +-~Chris diff --git a/source/configs/demo/public_examples.json b/source/configs/demo/public_examples.json new file mode 100644 index 0000000000000000000000000000000000000000..e5a94b048abee7a38de258e6199b8f92757325e0 --- /dev/null +++ b/source/configs/demo/public_examples.json @@ -0,0 +1,204 @@ +{ + "schema_version": 1, + "default_example": "slakh-band", + "examples": [ + { + "id": "fma-15769", + "title": "The Factory", + "artist": "Multifaros", + "category": "Electronic", + "collection": "Free Music Archive", + "source": "fma/fma_small/015/015769.mp3", + "track_id": 15769, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12 + }, + { + "id": "fma-42761", + "title": "Black Forest", + "artist": "voyageurs", + "category": "Rock", + "collection": "Free Music Archive", + "source": "fma/fma_small/042/042761.mp3", + "track_id": 42761, + "license_name": "CC BY 3.0", + "license_url": "https://creativecommons.org/licenses/by/3.0/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 International", + "offset_seconds": 6, + "duration_seconds": 12 + }, + { + "id": "fma-23371", + "title": "I Want To Destroy Something Beautiful", + "artist": "Josh Woodward", + "category": "Folk", + "collection": "Free Music Archive", + "source": "fma/fma_small/023/023371.mp3", + "track_id": 23371, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12 + }, + { + "id": "fma-22472", + "title": "Busby Berkeley", + "artist": "Ergo Phizmiz", + "category": "Pop", + "collection": "Free Music Archive", + "source": "fma/fma_small/022/022472.mp3", + "track_id": 22472, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12 + }, + { + "id": "fma-7481", + "title": "Seeing You Out", + "artist": "BrokeMC", + "category": "Hip-Hop", + "collection": "Free Music Archive", + "source": "fma/fma_small/007/007481.mp3", + "track_id": 7481, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12 + }, + { + "id": "fma-37119", + "title": "Dark Hallway", + "artist": "Lee Rosevere", + "category": "Instrumental", + "collection": "Free Music Archive", + "source": "fma/fma_small/037/037119.mp3", + "track_id": 37119, + "license_name": "CC BY 3.0", + "license_url": "https://creativecommons.org/licenses/by/3.0/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 International", + "offset_seconds": 6, + "duration_seconds": 12 + }, + { + "id": "fma-75782", + "title": "I'm Not Lazy", + "artist": "Square People", + "category": "Rock", + "collection": "Free Music Archive", + "source": "fma/fma_small/075/075782.mp3", + "track_id": 75782, + "license_name": "CC BY 3.0", + "license_url": "https://creativecommons.org/licenses/by/3.0/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 International", + "offset_seconds": 6, + "duration_seconds": 12 + }, + { + "id": "fma-68838", + "title": "David's Tune", + "artist": "Howie Mitchell", + "category": "Folk", + "collection": "Free Music Archive", + "source": "fma/fma_small/068/068838.mp3", + "track_id": 68838, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12 + }, + { + "id": "guitar-jazz-chords", + "title": "Jazz guitar \u00b7 chords", + "artist": "GuitarSet \u00b7 Player 1", + "category": "Guitar", + "collection": "GuitarSet", + "source": "guitarset/audio_mono-mic/00_Jazz1-130-D_comp_mic.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/3371780", + "offset_seconds": 4, + "duration_seconds": 12 + }, + { + "id": "guitar-jazz-lead", + "title": "Jazz guitar \u00b7 lead", + "artist": "GuitarSet \u00b7 Player 1", + "category": "Guitar", + "collection": "GuitarSet", + "source": "guitarset/audio_mono-mic/00_Jazz1-200-B_solo_mic.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/3371780", + "offset_seconds": 4, + "duration_seconds": 12 + }, + { + "id": "guitar-funk", + "title": "Funk guitar", + "artist": "GuitarSet \u00b7 Player 1", + "category": "Guitar", + "collection": "GuitarSet", + "source": "guitarset/audio_mono-mic/00_Funk1-114-Ab_comp_mic.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/3371780", + "offset_seconds": 4, + "duration_seconds": 12 + }, + { + "id": "guitar-rock", + "title": "Rock guitar", + "artist": "GuitarSet \u00b7 Player 1", + "category": "Guitar", + "collection": "GuitarSet", + "source": "guitarset/audio_mono-mic/00_Rock1-90-C#_solo_mic.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/3371780", + "offset_seconds": 4, + "duration_seconds": 12 + }, + { + "id": "slakh-band", + "title": "Full-band groove", + "artist": "Slakh2100 \u00b7 Synthesized mix", + "category": "Full band", + "collection": "Slakh2100", + "source": "slakh16k/Slakh2100_16kHz/slakh2100_flac_redux/test/Track01876/mix.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/4599666", + "offset_seconds": 6, + "duration_seconds": 12 + }, + { + "id": "slakh-studio", + "title": "Studio ensemble", + "artist": "Slakh2100 \u00b7 Synthesized mix", + "category": "Full band", + "collection": "Slakh2100", + "source": "slakh16k/Slakh2100_16kHz/slakh2100_flac_redux/train/Track00001/mix.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/4599666", + "offset_seconds": 6, + "duration_seconds": 12 + } + ] +} diff --git a/source/demo/web/public/examples/CREDITS.md b/source/demo/web/public/examples/CREDITS.md new file mode 100644 index 0000000000000000000000000000000000000000..25e09cde298a4783c567e1e9655784d645a930b8 --- /dev/null +++ b/source/demo/web/public/examples/CREDITS.md @@ -0,0 +1,88 @@ +# Demo audio credits + +All clips are cropped to at most 12 seconds and converted to mono 16 kHz PCM. +Prepared notes are Hendrix predictions, not dataset annotations. + +## The Factory +Artist/creator: Multifaros +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/015/015769.mp3`. +License: [CC BY 3.0 US](https://creativecommons.org/licenses/by/3.0/us/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## Black Forest +Artist/creator: voyageurs +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/042/042761.mp3`. +License: [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## I Want To Destroy Something Beautiful +Artist/creator: Josh Woodward +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/023/023371.mp3`. +License: [CC BY 3.0 US](https://creativecommons.org/licenses/by/3.0/us/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## Busby Berkeley +Artist/creator: Ergo Phizmiz +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/022/022472.mp3`. +License: [CC BY 3.0 US](https://creativecommons.org/licenses/by/3.0/us/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## Seeing You Out +Artist/creator: BrokeMC +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/007/007481.mp3`. +License: [CC BY 3.0 US](https://creativecommons.org/licenses/by/3.0/us/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## Dark Hallway +Artist/creator: Lee Rosevere +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/037/037119.mp3`. +License: [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## I'm Not Lazy +Artist/creator: Square People +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/075/075782.mp3`. +License: [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## David's Tune +Artist/creator: Howie Mitchell +Source: [Free Music Archive](https://github.com/mdeff/fma), `fma/fma_small/068/068838.mp3`. +License: [CC BY 3.0 US](https://creativecommons.org/licenses/by/3.0/us/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## Jazz guitar · chords +Artist/creator: GuitarSet · Player 1 +Source: [GuitarSet](https://zenodo.org/records/3371780), `guitarset/audio_mono-mic/00_Jazz1-130-D_comp_mic.wav`. +License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Change: 4–16 seconds, mono 16 kHz excerpt. + +## Jazz guitar · lead +Artist/creator: GuitarSet · Player 1 +Source: [GuitarSet](https://zenodo.org/records/3371780), `guitarset/audio_mono-mic/00_Jazz1-200-B_solo_mic.wav`. +License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Change: 4–14.4 seconds, mono 16 kHz excerpt. + +## Funk guitar +Artist/creator: GuitarSet · Player 1 +Source: [GuitarSet](https://zenodo.org/records/3371780), `guitarset/audio_mono-mic/00_Funk1-114-Ab_comp_mic.wav`. +License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Change: 4–16 seconds, mono 16 kHz excerpt. + +## Rock guitar +Artist/creator: GuitarSet · Player 1 +Source: [GuitarSet](https://zenodo.org/records/3371780), `guitarset/audio_mono-mic/00_Rock1-90-C#_solo_mic.wav`. +License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Change: 4–16 seconds, mono 16 kHz excerpt. + +## Full-band groove +Artist/creator: Slakh2100 · Synthesized mix +Source: [Slakh2100](https://zenodo.org/records/4599666), `slakh16k/Slakh2100_16kHz/slakh2100_flac_redux/test/Track01876/mix.wav`. +License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Change: 6–18 seconds, mono 16 kHz excerpt. + +## Studio ensemble +Artist/creator: Slakh2100 · Synthesized mix +Source: [Slakh2100](https://zenodo.org/records/4599666), `slakh16k/Slakh2100_16kHz/slakh2100_flac_redux/train/Track00001/mix.wav`. +License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Change: 6–18 seconds, mono 16 kHz excerpt. diff --git a/source/demo/web/public/examples/catalog.json b/source/demo/web/public/examples/catalog.json new file mode 100644 index 0000000000000000000000000000000000000000..90759256309f6941c02b51a91483d5fef1c6eb3f --- /dev/null +++ b/source/demo/web/public/examples/catalog.json @@ -0,0 +1,1114 @@ +{ + "schema_version": 1, + "default_example": "slakh-band", + "examples": [ + { + "id": "fma-15769", + "title": "The Factory", + "artist": "Multifaros", + "category": "Electronic", + "collection": "Free Music Archive", + "source": "fma/fma_small/015/015769.mp3", + "track_id": 15769, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-15769.wav", + "notes_url": "/examples/fma-15769.json", + "duration": 12.0, + "peaks": [ + 0.912, + 0.908, + 0.953, + 0.915, + 0.989, + 0.943, + 0.969, + 0.919, + 0.947, + 0.964, + 0.973, + 0.942, + 0.964, + 0.926, + 0.935, + 0.995, + 0.965, + 0.936, + 0.997, + 0.946, + 0.944, + 0.984, + 0.93, + 0.961, + 0.904, + 0.746, + 0.966, + 0.992, + 0.917, + 0.98, + 0.948, + 0.74, + 0.927, + 0.99, + 0.943, + 0.923, + 0.959, + 0.944, + 0.942, + 0.946, + 0.879, + 1.0, + 0.952, + 0.91, + 0.898, + 0.961, + 0.974, + 0.952, + 0.931, + 0.989, + 0.952, + 0.939, + 0.927, + 0.97, + 0.971, + 0.974 + ], + "note_count": 514, + "audio_sha256": "a66c10808064fa467e9cedb5b0a23167f87f24f37b559759cb48744ac98f609c", + "notes_sha256": "bb8d07cc8d078e1f9d57f5322a15d70beaac3d893339a428fb607f75fc16058e", + "source_sha256": "694009d559255f4b4c05b8bcf59f5da2791797d0332c69cf46efa89b0dc1a797" + }, + { + "id": "fma-42761", + "title": "Black Forest", + "artist": "voyageurs", + "category": "Rock", + "collection": "Free Music Archive", + "source": "fma/fma_small/042/042761.mp3", + "track_id": 42761, + "license_name": "CC BY 3.0", + "license_url": "https://creativecommons.org/licenses/by/3.0/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 International", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-42761.wav", + "notes_url": "/examples/fma-42761.json", + "duration": 12.0, + "peaks": [ + 0.82, + 0.875, + 0.959, + 0.949, + 0.963, + 0.989, + 0.933, + 0.848, + 0.848, + 0.88, + 0.869, + 1.0, + 0.901, + 0.932, + 0.841, + 0.873, + 0.878, + 0.963, + 0.83, + 0.803, + 0.915, + 0.85, + 0.915, + 0.932, + 0.848, + 0.889, + 0.787, + 0.784, + 0.901, + 0.732, + 0.837, + 0.793, + 0.767, + 0.739, + 0.775, + 0.777, + 0.702, + 0.734, + 0.695, + 0.817, + 0.735, + 0.785, + 0.758, + 0.788, + 0.88, + 0.806, + 0.765, + 0.762, + 0.789, + 0.759, + 0.639, + 0.764, + 0.696, + 0.767, + 0.793, + 0.737 + ], + "note_count": 483, + "audio_sha256": "12ad8c28ffc3714fb726fb9500f843fa8b8f764974df5bbded9afe324fd440c8", + "notes_sha256": "f8c68cc3a6214823363ef9aaba42d94deec8608a732732207be09c4b9066e433", + "source_sha256": "a6307789a839ee707f47560501d347b324590e3b2547e47568688233cd29a9b3" + }, + { + "id": "fma-23371", + "title": "I Want To Destroy Something Beautiful", + "artist": "Josh Woodward", + "category": "Folk", + "collection": "Free Music Archive", + "source": "fma/fma_small/023/023371.mp3", + "track_id": 23371, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-23371.wav", + "notes_url": "/examples/fma-23371.json", + "duration": 12.0, + "peaks": [ + 0.215, + 0.226, + 0.24, + 0.231, + 0.303, + 0.348, + 0.452, + 0.388, + 0.405, + 0.353, + 0.444, + 0.288, + 0.423, + 0.367, + 0.424, + 0.454, + 0.397, + 0.323, + 0.417, + 0.251, + 0.448, + 0.352, + 0.395, + 0.358, + 0.428, + 0.453, + 0.452, + 0.31, + 0.474, + 0.435, + 0.245, + 0.395, + 0.452, + 0.344, + 0.274, + 0.373, + 0.385, + 0.38, + 0.498, + 0.393, + 0.271, + 0.231, + 0.218, + 0.228, + 0.233, + 0.228, + 0.227, + 0.237, + 0.227, + 0.211, + 0.209, + 0.266, + 0.247, + 0.901, + 0.845, + 1.0 + ], + "note_count": 123, + "audio_sha256": "5b6d7fc514711131b3dcb6600c52f9754a8cf61d9d7e01412d49a6512acaa9f2", + "notes_sha256": "51072ff915bed3bc5cf00e14f08a948f198fbe6f4fe4841c38d53db6481f56bc", + "source_sha256": "bae911ebf53b37949594a08385b81709917e1d982cb228feb24e2b1cf787551c" + }, + { + "id": "fma-22472", + "title": "Busby Berkeley", + "artist": "Ergo Phizmiz", + "category": "Pop", + "collection": "Free Music Archive", + "source": "fma/fma_small/022/022472.mp3", + "track_id": 22472, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-22472.wav", + "notes_url": "/examples/fma-22472.json", + "duration": 12.0, + "peaks": [ + 0.49, + 0.63, + 0.736, + 0.6, + 0.645, + 0.733, + 0.542, + 0.633, + 0.716, + 0.417, + 0.593, + 0.716, + 0.545, + 0.509, + 0.854, + 0.539, + 0.68, + 0.793, + 0.604, + 0.685, + 0.755, + 0.642, + 0.786, + 0.741, + 0.694, + 0.674, + 0.701, + 0.565, + 0.731, + 0.772, + 0.586, + 0.596, + 0.807, + 0.585, + 0.721, + 0.857, + 0.649, + 0.626, + 0.768, + 0.619, + 0.595, + 0.619, + 0.768, + 0.625, + 0.601, + 0.72, + 0.739, + 0.706, + 0.747, + 1.0, + 0.697, + 0.926, + 0.764, + 0.745, + 0.606, + 0.884 + ], + "note_count": 567, + "audio_sha256": "b158e513802b07aabb8181950c4616495b1dbb40a731b9ee41723d90daafbc50", + "notes_sha256": "06528773122e4a2ab9ef5c36c330a7ba67d321c1cc2c4c2cff096ba1b49f09cc", + "source_sha256": "d6e715331bfbf45a07739b8667119b01cf6007ccf7b009f7d14fce87701e25da" + }, + { + "id": "fma-7481", + "title": "Seeing You Out", + "artist": "BrokeMC", + "category": "Hip-Hop", + "collection": "Free Music Archive", + "source": "fma/fma_small/007/007481.mp3", + "track_id": 7481, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-7481.wav", + "notes_url": "/examples/fma-7481.json", + "duration": 12.0, + "peaks": [ + 0.815, + 0.748, + 0.465, + 0.422, + 0.575, + 0.846, + 0.485, + 0.427, + 0.705, + 0.417, + 0.464, + 0.537, + 0.47, + 0.652, + 0.614, + 0.683, + 0.43, + 0.379, + 0.617, + 0.953, + 0.798, + 0.782, + 0.805, + 0.803, + 0.692, + 0.893, + 0.856, + 0.597, + 0.988, + 0.759, + 0.622, + 0.495, + 0.935, + 0.821, + 0.594, + 0.822, + 0.779, + 0.676, + 0.532, + 0.547, + 1.0, + 0.488, + 0.382, + 0.678, + 0.411, + 0.419, + 0.629, + 0.858, + 0.651, + 0.641, + 0.684, + 0.694, + 0.397, + 0.464, + 0.513, + 0.421 + ], + "note_count": 247, + "audio_sha256": "1fe21e9255fd0fb4ef6e9c4a088c74a7cd81d0d8d76fd91323d4fdcedcea2d5c", + "notes_sha256": "e6c6ee41bcc194c2a5a4b25613b4f6718328bab6f6d97b64d0d808c9d68145ee", + "source_sha256": "e672e4872f45003740e8fc9566c9b14521dc587f09da8b989523cae5e5f6b97d" + }, + { + "id": "fma-37119", + "title": "Dark Hallway", + "artist": "Lee Rosevere", + "category": "Instrumental", + "collection": "Free Music Archive", + "source": "fma/fma_small/037/037119.mp3", + "track_id": 37119, + "license_name": "CC BY 3.0", + "license_url": "https://creativecommons.org/licenses/by/3.0/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 International", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-37119.wav", + "notes_url": "/examples/fma-37119.json", + "duration": 12.0, + "peaks": [ + 0.694, + 0.828, + 0.485, + 0.648, + 0.848, + 0.912, + 0.891, + 0.813, + 0.785, + 0.644, + 0.769, + 0.798, + 0.559, + 0.64, + 0.772, + 0.913, + 0.806, + 0.899, + 0.782, + 0.725, + 0.593, + 0.896, + 0.599, + 0.663, + 0.676, + 0.786, + 1.0, + 0.879, + 0.862, + 0.838, + 0.784, + 0.691, + 0.921, + 0.623, + 0.665, + 0.735, + 0.691, + 0.825, + 0.968, + 0.889, + 0.873, + 0.847, + 0.749, + 0.649, + 0.878, + 0.627, + 0.724, + 0.797, + 0.77, + 0.698, + 0.699, + 0.874, + 0.745, + 0.911, + 0.963, + 0.913 + ], + "note_count": 1, + "audio_sha256": "17e0dcb1a33c859bf5e1099d556623139d08719a74e7b4d77ad12c7ed427db94", + "notes_sha256": "97a6593e4f70b88a1dd4e8cc7cf1cc7c8b104e8adc8da0da8ffd178a9df06ce7", + "source_sha256": "4c870df266ff8d77721e7b833791856bc807cf6774d05516a16fb9137349374d" + }, + { + "id": "fma-75782", + "title": "I'm Not Lazy", + "artist": "Square People", + "category": "Rock", + "collection": "Free Music Archive", + "source": "fma/fma_small/075/075782.mp3", + "track_id": 75782, + "license_name": "CC BY 3.0", + "license_url": "https://creativecommons.org/licenses/by/3.0/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 International", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-75782.wav", + "notes_url": "/examples/fma-75782.json", + "duration": 12.0, + "peaks": [ + 0.775, + 0.72, + 0.691, + 0.864, + 0.586, + 0.592, + 0.565, + 0.611, + 0.385, + 0.874, + 0.937, + 0.909, + 0.889, + 0.893, + 0.828, + 0.73, + 0.709, + 0.854, + 0.772, + 0.601, + 0.656, + 0.602, + 0.465, + 0.782, + 0.955, + 0.94, + 0.913, + 1.0, + 0.834, + 0.755, + 0.894, + 0.867, + 0.744, + 0.634, + 0.678, + 0.655, + 0.519, + 0.763, + 0.904, + 0.949, + 0.913, + 0.923, + 0.867, + 0.853, + 0.752, + 0.747, + 0.839, + 0.699, + 0.537, + 0.729, + 0.58, + 0.695, + 0.88, + 0.996, + 0.844, + 0.923 + ], + "note_count": 110, + "audio_sha256": "64daa87292395961602211cbedb775e183b97148e994cdbff872e092e8183308", + "notes_sha256": "52c1e712920f2987e44ca2380061ea4038ce7a0d5525ec103c95eeb6baacfe42", + "source_sha256": "20c16f3b373a173083fbf3c93813e8dc14cad4b36f2f6a8a212afd4ad18a4d13" + }, + { + "id": "fma-68838", + "title": "David's Tune", + "artist": "Howie Mitchell", + "category": "Folk", + "collection": "Free Music Archive", + "source": "fma/fma_small/068/068838.mp3", + "track_id": 68838, + "license_name": "CC BY 3.0 US", + "license_url": "https://creativecommons.org/licenses/by/3.0/us/", + "source_url": "https://github.com/mdeff/fma", + "license_metadata": "Attribution 3.0 United States", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/fma-68838.wav", + "notes_url": "/examples/fma-68838.json", + "duration": 12.0, + "peaks": [ + 0.722, + 0.726, + 0.575, + 0.349, + 0.439, + 0.422, + 0.294, + 0.368, + 0.363, + 0.317, + 0.23, + 0.434, + 0.391, + 0.294, + 0.298, + 0.283, + 0.343, + 0.452, + 0.552, + 0.67, + 0.62, + 0.968, + 1.0, + 0.662, + 0.72, + 0.715, + 0.624, + 0.746, + 0.731, + 0.994, + 0.873, + 0.527, + 0.803, + 0.902, + 0.779, + 0.572, + 0.605, + 0.73, + 0.531, + 0.57, + 0.637, + 0.49, + 0.51, + 0.465, + 0.473, + 0.433, + 0.37, + 0.468, + 0.38, + 0.37, + 0.345, + 0.411, + 0.382, + 0.307, + 0.849, + 0.564 + ], + "note_count": 31, + "audio_sha256": "60c2ef0e4ce2ef2c9e37ac9c4e35dd8c6f4c2cf1b871cf00f186e71c5c3a73bc", + "notes_sha256": "2147def0fe2c8814078e9424554dbecfeaa3b82760530b0f920e3e5300912313", + "source_sha256": "0d4553508c4ee368a7bba1f8db897e8f5eb5c4f89734f09bb48a91b9111f9f0e" + }, + { + "id": "guitar-jazz-chords", + "title": "Jazz guitar \u00b7 chords", + "artist": "GuitarSet \u00b7 Player 1", + "category": "Guitar", + "collection": "GuitarSet", + "source": "guitarset/audio_mono-mic/00_Jazz1-130-D_comp_mic.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/3371780", + "offset_seconds": 4, + "duration_seconds": 12, + "audio_url": "/examples/guitar-jazz-chords.wav", + "notes_url": "/examples/guitar-jazz-chords.json", + "duration": 12.0, + "peaks": [ + 0.47, + 0.4, + 0.323, + 0.27, + 0.782, + 0.493, + 0.813, + 0.642, + 0.866, + 0.528, + 0.712, + 0.623, + 0.607, + 1.0, + 0.75, + 0.48, + 0.807, + 0.406, + 0.352, + 0.557, + 0.55, + 0.359, + 0.721, + 0.619, + 0.55, + 0.607, + 0.377, + 0.558, + 0.732, + 0.578, + 0.623, + 0.457, + 0.673, + 0.284, + 0.229, + 0.738, + 0.404, + 0.236, + 0.535, + 0.534, + 0.39, + 0.553, + 0.267, + 0.325, + 0.572, + 0.381, + 0.22, + 0.79, + 0.496, + 0.668, + 0.593, + 0.271, + 0.706, + 0.724, + 0.523, + 0.435 + ], + "note_count": 148, + "audio_sha256": "67c90694360355b8ce5e534b0321660fb367f2fb966340b36fb9e0556dd46b9c", + "notes_sha256": "7f939e4218b4929ca1cb403a1561564ae016649a91abff05ca71ea576e93620d", + "source_sha256": "b686a47b0a0a58dbdd818d2ebc9c31da87e4bed1af889dd62b1ffd1d1496f827" + }, + { + "id": "guitar-jazz-lead", + "title": "Jazz guitar \u00b7 lead", + "artist": "GuitarSet \u00b7 Player 1", + "category": "Guitar", + "collection": "GuitarSet", + "source": "guitarset/audio_mono-mic/00_Jazz1-200-B_solo_mic.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/3371780", + "offset_seconds": 4, + "duration_seconds": 12, + "audio_url": "/examples/guitar-jazz-lead.wav", + "notes_url": "/examples/guitar-jazz-lead.json", + "duration": 10.4, + "peaks": [ + 0.325, + 0.301, + 0.249, + 0.226, + 0.443, + 0.427, + 0.324, + 0.494, + 0.447, + 0.408, + 0.4, + 0.381, + 0.37, + 0.35, + 0.562, + 0.548, + 0.496, + 0.779, + 0.485, + 0.663, + 0.514, + 0.456, + 0.48, + 0.465, + 0.495, + 0.361, + 0.338, + 0.342, + 0.282, + 0.226, + 0.186, + 0.79, + 1.0, + 0.825, + 0.679, + 0.645, + 0.601, + 0.524, + 0.633, + 0.551, + 0.732, + 0.651, + 0.647, + 0.539, + 0.537, + 0.544, + 0.53, + 0.634, + 0.75, + 0.509, + 0.272, + 0.214, + 0.175, + 0.17, + 0.152, + 0.136 + ], + "note_count": 26, + "audio_sha256": "1b239dfb01eb9460f8dd8807932f6ba0f1d4dc39dbfbd34c117a9bd67856709c", + "notes_sha256": "3d8ee1a1c1d31799a84abda0c7dfdc60e4ba72b662c26bdc369ce855e387d04c", + "source_sha256": "d8df477ac8d17da5df76bbfafe94449b9f1c398e120db99d5765deeab59fbfb6" + }, + { + "id": "guitar-funk", + "title": "Funk guitar", + "artist": "GuitarSet \u00b7 Player 1", + "category": "Guitar", + "collection": "GuitarSet", + "source": "guitarset/audio_mono-mic/00_Funk1-114-Ab_comp_mic.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/3371780", + "offset_seconds": 4, + "duration_seconds": 12, + "audio_url": "/examples/guitar-funk.wav", + "notes_url": "/examples/guitar-funk.json", + "duration": 12.0, + "peaks": [ + 0.409, + 0.528, + 0.456, + 0.344, + 0.527, + 0.328, + 0.608, + 0.419, + 0.27, + 0.502, + 0.448, + 0.497, + 0.363, + 0.669, + 0.526, + 0.741, + 0.584, + 0.852, + 0.582, + 0.89, + 0.692, + 0.396, + 0.739, + 0.477, + 0.591, + 0.745, + 0.643, + 0.552, + 0.158, + 1.0, + 0.463, + 0.402, + 0.54, + 0.672, + 0.192, + 0.832, + 0.438, + 0.442, + 0.187, + 0.684, + 0.292, + 0.738, + 0.515, + 0.483, + 0.122, + 0.57, + 0.389, + 0.596, + 0.474, + 0.483, + 0.439, + 0.582, + 0.522, + 0.612, + 0.463, + 0.45 + ], + "note_count": 133, + "audio_sha256": "7f4101cf9df5af4614be3245eeea06ad2c4eb703721e28ddcbea275a19b4e77c", + "notes_sha256": "599cd5fea20e2883c226bca251a1ea49944ccdc62099d609d64aff9fd6a54211", + "source_sha256": "15eb54c1249e69e75c69d6611bd332c51735199c8ced22a35b87d662a81e5ba9" + }, + { + "id": "guitar-rock", + "title": "Rock guitar", + "artist": "GuitarSet \u00b7 Player 1", + "category": "Guitar", + "collection": "GuitarSet", + "source": "guitarset/audio_mono-mic/00_Rock1-90-C#_solo_mic.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/3371780", + "offset_seconds": 4, + "duration_seconds": 12, + "audio_url": "/examples/guitar-rock.wav", + "notes_url": "/examples/guitar-rock.json", + "duration": 12.0, + "peaks": [ + 0.461, + 0.396, + 0.42, + 0.308, + 0.432, + 0.401, + 0.382, + 0.416, + 0.434, + 0.39, + 0.417, + 0.438, + 0.466, + 0.506, + 0.494, + 0.485, + 0.476, + 0.54, + 0.543, + 0.753, + 0.757, + 0.822, + 0.752, + 0.758, + 0.942, + 0.796, + 0.747, + 0.886, + 0.814, + 0.53, + 0.738, + 0.761, + 0.848, + 0.656, + 0.458, + 0.703, + 0.714, + 0.741, + 0.781, + 0.792, + 0.516, + 0.44, + 0.81, + 0.846, + 0.719, + 0.828, + 0.861, + 0.689, + 1.0, + 0.984, + 0.845, + 0.676, + 0.639, + 0.718, + 0.668, + 0.534 + ], + "note_count": 102, + "audio_sha256": "2b6ed704a6a1f5e10b8a664bc964e2848cb3e4c713df9b854df52ee471690bd8", + "notes_sha256": "d82e03ccd1e3108b62b3c5297fc2a35e5b00fd64cea1a07b98a220f10a2bdea4", + "source_sha256": "7027f166d92969ef4e442a998ffbffdb6a9d78ba1c77bfdde1c73f3b3193b083" + }, + { + "id": "slakh-band", + "title": "Full-band groove", + "artist": "Slakh2100 \u00b7 Synthesized mix", + "category": "Full band", + "collection": "Slakh2100", + "source": "slakh16k/Slakh2100_16kHz/slakh2100_flac_redux/test/Track01876/mix.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/4599666", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/slakh-band.wav", + "notes_url": "/examples/slakh-band.json", + "duration": 12.0, + "peaks": [ + 0.58, + 0.633, + 0.654, + 0.645, + 0.631, + 0.638, + 0.623, + 0.599, + 0.571, + 0.586, + 0.601, + 0.634, + 0.668, + 0.664, + 0.697, + 0.738, + 0.735, + 0.781, + 0.686, + 0.712, + 0.624, + 0.646, + 0.655, + 0.657, + 0.717, + 0.697, + 0.658, + 0.655, + 0.669, + 0.723, + 0.76, + 0.678, + 0.655, + 0.656, + 0.711, + 0.675, + 0.881, + 0.769, + 0.753, + 0.774, + 0.738, + 0.727, + 0.755, + 0.693, + 0.67, + 0.798, + 0.759, + 0.645, + 0.919, + 0.812, + 0.927, + 0.742, + 0.564, + 1.0, + 0.691, + 0.646 + ], + "note_count": 93, + "audio_sha256": "f82c5c6507115ba2fab1a374c96a04d45933569c9d7299719758036b1ef14002", + "notes_sha256": "7c92b1ce0bd02051b1808990f023f2b4be3af6d6de74c19143fd46c7477ab2a5", + "source_sha256": "12959d5f4a1af5f312a27a70dbf85afa0725f4bf6c1e5b95c6f7bea6a076cfda" + }, + { + "id": "slakh-studio", + "title": "Studio ensemble", + "artist": "Slakh2100 \u00b7 Synthesized mix", + "category": "Full band", + "collection": "Slakh2100", + "source": "slakh16k/Slakh2100_16kHz/slakh2100_flac_redux/train/Track00001/mix.wav", + "license_name": "CC BY 4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "source_url": "https://zenodo.org/records/4599666", + "offset_seconds": 6, + "duration_seconds": 12, + "audio_url": "/examples/slakh-studio.wav", + "notes_url": "/examples/slakh-studio.json", + "duration": 12.0, + "peaks": [ + 0.876, + 0.662, + 0.604, + 0.596, + 0.625, + 0.601, + 0.498, + 0.898, + 0.754, + 0.659, + 0.732, + 0.723, + 0.613, + 0.687, + 0.844, + 0.603, + 0.558, + 0.613, + 0.691, + 0.642, + 0.554, + 0.904, + 0.768, + 0.673, + 0.709, + 0.636, + 0.744, + 0.773, + 0.91, + 0.62, + 0.554, + 0.541, + 0.484, + 0.48, + 0.452, + 0.931, + 0.79, + 0.666, + 0.668, + 0.566, + 0.602, + 0.748, + 0.9, + 0.707, + 0.671, + 0.657, + 0.681, + 0.616, + 0.499, + 1.0, + 0.876, + 0.815, + 0.799, + 0.738, + 0.721, + 0.709 + ], + "note_count": 139, + "audio_sha256": "e9715a960d306d3559f424a053a0cdf5b3f9b78c06e0d304f8265a56dd380e39", + "notes_sha256": "07d450ec346c4d1ea61a36157f89cf22e67faae6b6ff6dd3106997b23dc5d9d3", + "source_sha256": "21f9b5e2dfe9d2f0a876c57f6cab0a442855c63c8775ebc9256b79167eefee71" + } + ] +} diff --git a/source/demo/web/public/examples/fma-15769.json b/source/demo/web/public/examples/fma-15769.json new file mode 100644 index 0000000000000000000000000000000000000000..694b4624d8381ec9cffb0e237d63ef6de529e561 --- /dev/null +++ b/source/demo/web/public/examples/fma-15769.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.02,"offset":0.7,"pitch":36,"program":2,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.7,"pitch":48,"program":2,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.08,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.08,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.08,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.08,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.03,"offset":0.04,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.04,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.04,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.05,"offset":0.14,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":0.08,"offset":0.15,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.08,"offset":0.15,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.08,"offset":0.15,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.08,"offset":0.15,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.15,"offset":0.16,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.15,"offset":0.16,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.15,"offset":0.16,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.23,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.23,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.23,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.23,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.17,"offset":0.26,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.24,"offset":0.31,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.24,"offset":0.31,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.24,"offset":0.31,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.24,"offset":0.31,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.27,"offset":0.37,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":0.27,"offset":0.28,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.27,"offset":0.28,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.27,"offset":0.28,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.32,"offset":0.39,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.32,"offset":0.39,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.32,"offset":0.39,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.32,"offset":0.39,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.39,"offset":0.49,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.39,"offset":0.4,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.39,"offset":0.4,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.39,"offset":0.4,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.4,"offset":0.47,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.4,"offset":0.47,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.4,"offset":0.47,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.4,"offset":0.47,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.48,"offset":0.55,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.48,"offset":0.55,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.48,"offset":0.55,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.48,"offset":0.55,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.51,"offset":0.62,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":0.51,"offset":0.52,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.51,"offset":0.52,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.51,"offset":0.52,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.56,"offset":0.62,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.56,"offset":0.62,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.56,"offset":0.62,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.56,"offset":0.62,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.58,"offset":0.59,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.58,"offset":0.59,"pitch":39,"program":128,"isDrum":true,"velocity":1},{"onset":0.58,"offset":0.59,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.58,"offset":0.59,"pitch":56,"program":128,"isDrum":true,"velocity":1},{"onset":0.63,"offset":0.69,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.69,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.69,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.69,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.74,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.64,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.64,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.63,"offset":0.64,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.75,"offset":0.86,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":0.75,"offset":0.76,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.75,"offset":0.76,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.75,"offset":0.76,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.87,"offset":0.98,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":0.87,"offset":0.88,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.87,"offset":0.88,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.87,"offset":0.88,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":0.89,"offset":2.22,"pitch":36,"program":2,"isDrum":false,"velocity":1},{"onset":0.89,"offset":2.22,"pitch":48,"program":2,"isDrum":false,"velocity":1},{"onset":0.89,"offset":0.96,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.89,"offset":0.96,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.89,"offset":0.96,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.89,"offset":0.96,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.9,"offset":0.91,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.97,"offset":1.04,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":0.97,"offset":1.04,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":0.97,"offset":1.04,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":0.97,"offset":1.04,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":0.99,"offset":1.1,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":0.99,"offset":1,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":0.99,"offset":1,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":0.99,"offset":1,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.05,"offset":1.12,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.05,"offset":1.12,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.05,"offset":1.12,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.05,"offset":1.12,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.06,"offset":1.07,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.11,"offset":1.22,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.12,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.12,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.12,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.13,"offset":1.2,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.13,"offset":1.2,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.13,"offset":1.2,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.13,"offset":1.2,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.21,"offset":1.28,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.21,"offset":1.28,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.21,"offset":1.28,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.21,"offset":1.28,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.23,"offset":1.34,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":39,"program":128,"isDrum":true,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":1.23,"offset":1.24,"pitch":56,"program":128,"isDrum":true,"velocity":1},{"onset":1.29,"offset":1.36,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.29,"offset":1.36,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.29,"offset":1.36,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.29,"offset":1.36,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.35,"offset":1.46,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":1.35,"offset":1.36,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.35,"offset":1.36,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.35,"offset":1.36,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.37,"offset":1.44,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.37,"offset":1.44,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.37,"offset":1.44,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.37,"offset":1.44,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.45,"offset":1.52,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.45,"offset":1.52,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.45,"offset":1.52,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.45,"offset":1.52,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.58,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.48,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.48,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.48,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.53,"offset":1.59,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.53,"offset":1.59,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.53,"offset":1.59,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.53,"offset":1.59,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.55,"offset":1.56,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.59,"offset":1.7,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":1.59,"offset":1.6,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.59,"offset":1.6,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.59,"offset":1.6,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.6,"offset":1.66,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.6,"offset":1.66,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.6,"offset":1.66,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.6,"offset":1.66,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.73,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.73,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.73,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.73,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.71,"offset":1.82,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":1.71,"offset":1.72,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.71,"offset":1.72,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.71,"offset":1.72,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.72,"offset":1.73,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.74,"offset":2.0479375,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":1.74,"offset":2.0479375,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":1.74,"offset":2.0479375,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":1.74,"offset":2.0479375,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":1.83,"offset":1.95,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":1.83,"offset":1.84,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.83,"offset":1.84,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.83,"offset":1.84,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":1.89,"offset":1.9,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.89,"offset":1.9,"pitch":39,"program":128,"isDrum":true,"velocity":1},{"onset":1.89,"offset":1.9,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":1.89,"offset":1.9,"pitch":56,"program":128,"isDrum":true,"velocity":1},{"onset":1.96,"offset":2.0479375,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":1.96,"offset":2.0479375,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":1.96,"offset":2.0479375,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":1.96,"offset":2.0479375,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":2.05,"offset":2.15,"pitch":75,"program":80,"isDrum":false,"velocity":1},{"onset":2.06,"offset":2.15,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":2.14,"offset":2.23,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":2.15,"offset":2.24,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":2.22,"offset":2.55,"pitch":48,"program":2,"isDrum":false,"velocity":1},{"onset":2.22,"offset":2.55,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":2.22,"offset":2.23,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":2.23,"offset":2.32,"pitch":67,"program":80,"isDrum":false,"velocity":1},{"onset":2.24,"offset":2.33,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":2.31,"offset":2.4,"pitch":75,"program":80,"isDrum":false,"velocity":1},{"onset":2.33,"offset":2.42,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":2.38,"offset":2.3899999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.4,"offset":2.49,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.51,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.57,"pitch":67,"program":80,"isDrum":false,"velocity":1},{"onset":2.51,"offset":2.6,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":2.55,"offset":3.04,"pitch":32,"program":2,"isDrum":false,"velocity":1},{"onset":2.55,"offset":3.04,"pitch":44,"program":2,"isDrum":false,"velocity":1},{"onset":2.55,"offset":3.04,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":2.55,"offset":2.5599999999999996,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.55,"offset":2.5599999999999996,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.57,"offset":2.66,"pitch":63,"program":80,"isDrum":false,"velocity":1},{"onset":2.6,"offset":2.69,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":2.65,"offset":2.74,"pitch":60,"program":80,"isDrum":false,"velocity":1},{"onset":2.69,"offset":2.78,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":2.73,"offset":2.81,"pitch":63,"program":80,"isDrum":false,"velocity":1},{"onset":2.73,"offset":2.7399999999999998,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.78,"offset":2.87,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":2.81,"offset":2.89,"pitch":60,"program":80,"isDrum":false,"velocity":1},{"onset":2.87,"offset":2.96,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":2.89,"offset":2.98,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":2.96,"offset":3.05,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":2.97,"offset":3.05,"pitch":75,"program":80,"isDrum":false,"velocity":1},{"onset":3.04,"offset":3.21,"pitch":44,"program":2,"isDrum":false,"velocity":1},{"onset":3.04,"offset":3.21,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":3.04,"offset":3.05,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.05,"offset":3.14,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":3.05,"offset":3.13,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":3.13,"offset":3.21,"pitch":67,"program":80,"isDrum":false,"velocity":1},{"onset":3.14,"offset":3.23,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":3.21,"offset":3.45,"pitch":32,"program":2,"isDrum":false,"velocity":1},{"onset":3.21,"offset":3.45,"pitch":44,"program":2,"isDrum":false,"velocity":1},{"onset":3.21,"offset":3.45,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":3.21,"offset":3.3,"pitch":63,"program":80,"isDrum":false,"velocity":1},{"onset":3.21,"offset":3.2199999999999998,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.23,"offset":3.32,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":3.29,"offset":3.38,"pitch":60,"program":80,"isDrum":false,"velocity":1},{"onset":3.32,"offset":3.41,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":3.38,"offset":3.46,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.5,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":3.45,"offset":3.62,"pitch":44,"program":2,"isDrum":false,"velocity":1},{"onset":3.45,"offset":3.62,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":3.46,"offset":3.55,"pitch":75,"program":80,"isDrum":false,"velocity":1},{"onset":3.5,"offset":3.59,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":3.54,"offset":3.55,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.54,"offset":3.55,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":3.55,"offset":3.63,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":3.59,"offset":3.68,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.88,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.88,"pitch":68,"program":2,"isDrum":false,"velocity":1},{"onset":3.63,"offset":3.71,"pitch":68,"program":80,"isDrum":false,"velocity":1},{"onset":3.68,"offset":3.77,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":3.71,"offset":3.8,"pitch":63,"program":80,"isDrum":false,"velocity":1},{"onset":3.71,"offset":3.7199999999999998,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.77,"offset":3.86,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":3.8,"offset":3.88,"pitch":72,"program":80,"isDrum":false,"velocity":1},{"onset":3.86,"offset":3.95,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":3.88,"offset":4.095875,"pitch":32,"program":2,"isDrum":false,"velocity":1},{"onset":3.88,"offset":4.11,"pitch":44,"program":2,"isDrum":false,"velocity":1},{"onset":3.88,"offset":4.095875,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":3.88,"offset":3.96,"pitch":68,"program":80,"isDrum":false,"velocity":1},{"onset":3.88,"offset":3.8899999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.88,"offset":3.8899999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.88,"offset":3.8899999999999997,"pitch":50,"program":128,"isDrum":true,"velocity":1},{"onset":3.94,"offset":3.9499999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.94,"offset":3.9499999999999997,"pitch":50,"program":128,"isDrum":true,"velocity":1},{"onset":3.95,"offset":4.04,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":3.96,"offset":4.05,"pitch":60,"program":80,"isDrum":false,"velocity":1},{"onset":4.03,"offset":4.04,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.03,"offset":4.04,"pitch":50,"program":128,"isDrum":true,"velocity":1},{"onset":4.04,"offset":4.095875,"pitch":75,"program":29,"isDrum":false,"velocity":1},{"onset":4.04,"offset":4.095875,"pitch":63,"program":80,"isDrum":false,"velocity":1},{"onset":4.11,"offset":4.2,"pitch":56,"program":2,"isDrum":false,"velocity":1},{"onset":4.12,"offset":4.21,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":4.2,"offset":4.29,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":4.2,"offset":4.21,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.22,"offset":4.3,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":4.29,"offset":4.37,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":4.31,"offset":4.4,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":4.36,"offset":4.37,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.36,"offset":4.37,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.37,"offset":4.46,"pitch":68,"program":2,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.54,"pitch":32,"program":33,"isDrum":false,"velocity":1},{"onset":4.4,"offset":4.48,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":4.46,"offset":4.54,"pitch":72,"program":2,"isDrum":false,"velocity":1},{"onset":4.49,"offset":4.58,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":4.53,"offset":4.54,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.53,"offset":4.54,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.54,"offset":4.62,"pitch":73,"program":2,"isDrum":false,"velocity":1},{"onset":4.54,"offset":4.78,"pitch":32,"program":33,"isDrum":false,"velocity":1},{"onset":4.59,"offset":4.67,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":4.62,"offset":4.7,"pitch":72,"program":2,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.77,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":4.7,"offset":4.78,"pitch":80,"program":2,"isDrum":false,"velocity":1},{"onset":4.7,"offset":4.71,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.78,"offset":4.86,"pitch":75,"program":2,"isDrum":false,"velocity":1},{"onset":4.78,"offset":4.87,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":4.78,"offset":5.03,"pitch":32,"program":33,"isDrum":false,"velocity":1},{"onset":4.86,"offset":4.94,"pitch":72,"program":2,"isDrum":false,"velocity":1},{"onset":4.86,"offset":4.87,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.88,"offset":4.97,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":4.94,"offset":5.03,"pitch":68,"program":2,"isDrum":false,"velocity":1},{"onset":4.98,"offset":5.07,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":5.02,"offset":5.029999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.03,"offset":5.11,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":5.03,"offset":5.19,"pitch":32,"program":33,"isDrum":false,"velocity":1},{"onset":5.07,"offset":5.16,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":5.11,"offset":5.2,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.26,"pitch":79,"program":24,"isDrum":false,"velocity":1},{"onset":5.19,"offset":5.36,"pitch":32,"program":33,"isDrum":false,"velocity":1},{"onset":5.19,"offset":5.2,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.19,"offset":5.2,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.2,"offset":5.28,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":5.27,"offset":5.36,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.28,"offset":5.36,"pitch":51,"program":2,"isDrum":false,"velocity":1},{"onset":5.36,"offset":5.44,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":5.36,"offset":5.52,"pitch":32,"program":33,"isDrum":false,"velocity":1},{"onset":5.36,"offset":5.37,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.37,"offset":5.45,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":5.44,"offset":5.53,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":5.46,"offset":5.55,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":5.52,"offset":5.77,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":5.52,"offset":5.529999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.53,"offset":5.61,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":5.55,"offset":5.64,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.61,"offset":5.69,"pitch":70,"program":2,"isDrum":false,"velocity":1},{"onset":5.64,"offset":5.73,"pitch":70,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.6899999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.69,"offset":5.77,"pitch":75,"program":2,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.82,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":5.77,"offset":5.86,"pitch":79,"program":2,"isDrum":false,"velocity":1},{"onset":5.77,"offset":5.93,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":5.83,"offset":5.92,"pitch":70,"program":24,"isDrum":false,"velocity":1},{"onset":5.85,"offset":5.859999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.85,"offset":5.859999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.86,"offset":5.94,"pitch":70,"program":2,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.02,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.143812500000001,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":5.94,"offset":6.02,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":6.01,"offset":6.02,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.02,"offset":6.11,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":6.03,"offset":6.12,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":6.11,"offset":6.17,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":6.13,"offset":6.143812500000001,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":6.17,"offset":6.25,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":6.17,"offset":6.18,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":6.18,"offset":6.5,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":6.25,"offset":6.33,"pitch":51,"program":2,"isDrum":false,"velocity":1},{"onset":6.33,"offset":6.42,"pitch":39,"program":2,"isDrum":false,"velocity":1},{"onset":6.33,"offset":6.5,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":6.42,"offset":6.5,"pitch":43,"program":2,"isDrum":false,"velocity":1},{"onset":6.5,"offset":6.58,"pitch":39,"program":2,"isDrum":false,"velocity":1},{"onset":6.5,"offset":6.83,"pitch":77,"program":24,"isDrum":false,"velocity":1},{"onset":6.5,"offset":6.67,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":6.5,"offset":6.51,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":6.5,"offset":6.51,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.58,"offset":6.67,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.75,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":6.75,"offset":6.83,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":6.83,"offset":7.15,"pitch":39,"program":2,"isDrum":false,"velocity":1},{"onset":6.83,"offset":6.91,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":6.83,"offset":7.16,"pitch":79,"program":24,"isDrum":false,"velocity":1},{"onset":6.83,"offset":7.16,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":6.83,"offset":6.84,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.91,"offset":6.99,"pitch":70,"program":2,"isDrum":false,"velocity":1},{"onset":6.99,"offset":7.07,"pitch":75,"program":2,"isDrum":false,"velocity":1},{"onset":7.07,"offset":7.15,"pitch":79,"program":2,"isDrum":false,"velocity":1},{"onset":7.15,"offset":7.65,"pitch":34,"program":2,"isDrum":false,"velocity":1},{"onset":7.15,"offset":7.23,"pitch":79,"program":2,"isDrum":false,"velocity":1},{"onset":7.16,"offset":7.82,"pitch":79,"program":24,"isDrum":false,"velocity":1},{"onset":7.16,"offset":7.65,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":7.16,"offset":7.17,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7.16,"offset":7.17,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.23,"offset":7.32,"pitch":67,"program":2,"isDrum":false,"velocity":1},{"onset":7.32,"offset":7.4,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":7.4,"offset":7.49,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":7.49,"offset":7.57,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":7.49,"offset":7.5,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.49,"offset":7.5,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":7.57,"offset":7.65,"pitch":51,"program":2,"isDrum":false,"velocity":1},{"onset":7.65,"offset":7.73,"pitch":39,"program":2,"isDrum":false,"velocity":1},{"onset":7.65,"offset":7.82,"pitch":39,"program":33,"isDrum":false,"velocity":1},{"onset":7.73,"offset":7.82,"pitch":43,"program":2,"isDrum":false,"velocity":1},{"onset":7.82,"offset":8.14,"pitch":34,"program":2,"isDrum":false,"velocity":1},{"onset":7.82,"offset":7.9,"pitch":74,"program":2,"isDrum":false,"velocity":1},{"onset":7.82,"offset":8.19175,"pitch":74,"program":24,"isDrum":false,"velocity":1},{"onset":7.82,"offset":8.15,"pitch":34,"program":33,"isDrum":false,"velocity":1},{"onset":7.82,"offset":7.83,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7.82,"offset":7.83,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.9,"offset":7.98,"pitch":62,"program":2,"isDrum":false,"velocity":1},{"onset":7.98,"offset":8.06,"pitch":65,"program":2,"isDrum":false,"velocity":1},{"onset":8.06,"offset":8.14,"pitch":70,"program":2,"isDrum":false,"velocity":1},{"onset":8.14,"offset":8.32,"pitch":46,"program":2,"isDrum":false,"velocity":1},{"onset":8.14,"offset":8.19175,"pitch":74,"program":2,"isDrum":false,"velocity":1},{"onset":8.15,"offset":8.32,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":8.15,"offset":8.16,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.15,"offset":8.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.24,"offset":8.32,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.32,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":8.31,"offset":8.32,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.32,"offset":8.49,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":8.32,"offset":8.4,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":8.32,"offset":8.4,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":8.32,"offset":8.49,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":8.4,"offset":8.48,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":8.4,"offset":8.48,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":8.48,"offset":8.56,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":8.48,"offset":8.56,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":8.49,"offset":8.81,"pitch":34,"program":2,"isDrum":false,"velocity":1},{"onset":8.49,"offset":8.81,"pitch":34,"program":33,"isDrum":false,"velocity":1},{"onset":8.49,"offset":8.5,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.49,"offset":8.5,"pitch":39,"program":128,"isDrum":true,"velocity":1},{"onset":8.49,"offset":8.5,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.49,"offset":8.5,"pitch":56,"program":128,"isDrum":true,"velocity":1},{"onset":8.56,"offset":8.65,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":8.56,"offset":8.65,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":8.65,"offset":8.73,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":8.65,"offset":8.73,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":8.73,"offset":8.81,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":8.73,"offset":8.81,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":8.81,"offset":9.14,"pitch":46,"program":2,"isDrum":false,"velocity":1},{"onset":8.81,"offset":8.89,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":8.81,"offset":8.89,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":8.81,"offset":9.14,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":8.81,"offset":8.82,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":8.89,"offset":8.98,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.98,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":8.98,"offset":9.06,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":8.98,"offset":9.06,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":8.98,"offset":8.99,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.06,"offset":9.14,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":9.06,"offset":9.14,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.46,"pitch":34,"program":2,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.23,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.23,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.47,"pitch":34,"program":33,"isDrum":false,"velocity":1},{"onset":9.15,"offset":9.16,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":9.15,"offset":9.16,"pitch":39,"program":128,"isDrum":true,"velocity":1},{"onset":9.15,"offset":9.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.15,"offset":9.16,"pitch":56,"program":128,"isDrum":true,"velocity":1},{"onset":9.23,"offset":9.31,"pitch":84,"program":16,"isDrum":false,"velocity":1},{"onset":9.23,"offset":9.31,"pitch":96,"program":16,"isDrum":false,"velocity":1},{"onset":9.31,"offset":9.39,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":9.31,"offset":9.39,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":9.39,"offset":9.47,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":9.39,"offset":9.47,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":9.46,"offset":9.64,"pitch":46,"program":2,"isDrum":false,"velocity":1},{"onset":9.47,"offset":9.55,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":9.47,"offset":9.55,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":9.47,"offset":9.64,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":9.47,"offset":9.48,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":9.55,"offset":9.64,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":9.55,"offset":9.64,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.81,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.72,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.72,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.8,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.65,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.72,"offset":9.8,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":9.72,"offset":9.8,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":9.8,"offset":9.88,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":9.8,"offset":9.88,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":9.8,"offset":10.13,"pitch":34,"program":33,"isDrum":false,"velocity":1},{"onset":9.81,"offset":10.12,"pitch":34,"program":2,"isDrum":false,"velocity":1},{"onset":9.81,"offset":9.82,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.81,"offset":9.82,"pitch":39,"program":128,"isDrum":true,"velocity":1},{"onset":9.81,"offset":9.82,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.81,"offset":9.82,"pitch":56,"program":128,"isDrum":true,"velocity":1},{"onset":9.88,"offset":9.96,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":9.88,"offset":9.96,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":9.96,"offset":10.05,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":9.96,"offset":10.05,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":10.05,"offset":10.13,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":10.05,"offset":10.13,"pitch":98,"program":16,"isDrum":false,"velocity":1},{"onset":10.12,"offset":10.46,"pitch":46,"program":2,"isDrum":false,"velocity":1},{"onset":10.13,"offset":10.21,"pitch":82,"program":16,"isDrum":false,"velocity":1},{"onset":10.13,"offset":10.21,"pitch":94,"program":16,"isDrum":false,"velocity":1},{"onset":10.13,"offset":10.46,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":10.13,"offset":10.14,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":10.21,"offset":10.2396875,"pitch":89,"program":16,"isDrum":false,"velocity":1},{"onset":10.21,"offset":10.2396875,"pitch":101,"program":16,"isDrum":false,"velocity":1},{"onset":10.3,"offset":10.39,"pitch":74,"program":24,"isDrum":false,"velocity":1},{"onset":10.4,"offset":10.49,"pitch":70,"program":24,"isDrum":false,"velocity":1},{"onset":10.46,"offset":10.62,"pitch":48,"program":2,"isDrum":false,"velocity":1},{"onset":10.46,"offset":11.44,"pitch":36,"program":33,"isDrum":false,"velocity":1},{"onset":10.46,"offset":10.47,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.46,"offset":10.47,"pitch":43,"program":128,"isDrum":true,"velocity":1},{"onset":10.47,"offset":10.48,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":10.49,"offset":10.58,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":10.49,"offset":10.5,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.49,"offset":10.5,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.57,"offset":10.65,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":10.62,"offset":10.79,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.73,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":10.73,"offset":10.81,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.79,"offset":10.95,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":10.81,"offset":10.89,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":10.89,"offset":10.97,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":10.95,"offset":11.11,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":10.97,"offset":11.06,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":11.06,"offset":11.14,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":11.11,"offset":11.27,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":11.13,"offset":11.14,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.13,"offset":11.14,"pitch":43,"program":128,"isDrum":true,"velocity":1},{"onset":11.14,"offset":11.22,"pitch":74,"program":24,"isDrum":false,"velocity":1},{"onset":11.14,"offset":11.15,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.14,"offset":11.15,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":11.22,"offset":11.3,"pitch":79,"program":24,"isDrum":false,"velocity":1},{"onset":11.27,"offset":11.43,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":11.3,"offset":11.39,"pitch":75,"program":24,"isDrum":false,"velocity":1},{"onset":11.39,"offset":11.47,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":11.43,"offset":11.59,"pitch":48,"program":2,"isDrum":false,"velocity":1},{"onset":11.44,"offset":11.82,"pitch":48,"program":33,"isDrum":false,"velocity":1},{"onset":11.45,"offset":11.459999999999999,"pitch":43,"program":128,"isDrum":true,"velocity":1},{"onset":11.46,"offset":11.47,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":11.47,"offset":11.56,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":11.55,"offset":11.64,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":11.59,"offset":11.75,"pitch":60,"program":2,"isDrum":false,"velocity":1},{"onset":11.64,"offset":11.72,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":11.72,"offset":11.8,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":11.75,"offset":11.91,"pitch":55,"program":2,"isDrum":false,"velocity":1},{"onset":11.78,"offset":11.79,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.78,"offset":11.79,"pitch":43,"program":128,"isDrum":true,"velocity":1},{"onset":11.79,"offset":11.799999999999999,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":11.8,"offset":11.88,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":11.82,"offset":11.98,"pitch":36,"program":33,"isDrum":false,"velocity":1},{"onset":11.82,"offset":11.83,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.88,"offset":11.96,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":11.91,"offset":12,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":11.96,"offset":12,"pitch":55,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"a66c10808064fa467e9cedb5b0a23167f87f24f37b559759cb48744ac98f609c","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":1} diff --git a/source/demo/web/public/examples/fma-15769.wav b/source/demo/web/public/examples/fma-15769.wav new file mode 100644 index 0000000000000000000000000000000000000000..0aa3fc3a9971b3937525d281e3a80dc4b6662ce8 --- /dev/null +++ b/source/demo/web/public/examples/fma-15769.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a66c10808064fa467e9cedb5b0a23167f87f24f37b559759cb48744ac98f609c +size 384506 diff --git a/source/demo/web/public/examples/fma-22472.json b/source/demo/web/public/examples/fma-22472.json new file mode 100644 index 0000000000000000000000000000000000000000..0fb607a3446ad688ff86480b3acec7e12d523de4 --- /dev/null +++ b/source/demo/web/public/examples/fma-22472.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.03,"offset":0.04,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.16,"offset":0.48,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.48,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.48,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.48,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":0.16,"offset":0.17,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.16,"offset":0.17,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.17,"offset":0.38,"pitch":40,"program":33,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":56,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":68,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":0.19,"offset":0.3,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":56,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":68,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.6,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.8,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.8,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.8,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.8,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":0.49,"offset":0.5,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":0.49,"offset":0.5,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.5,"offset":0.71,"pitch":40,"program":33,"isDrum":false,"velocity":1},{"onset":0.7,"offset":0.71,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":56,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":68,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":0.8,"offset":0.91,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":0.81,"offset":1.11,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":0.81,"offset":1.11,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":0.81,"offset":1.11,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":0.81,"offset":1.11,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":0.82,"offset":1.02,"pitch":40,"program":33,"isDrum":false,"velocity":1},{"onset":0.82,"offset":0.83,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.82,"offset":0.83,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":61,"program":0,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.2,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":1.12,"offset":1.17,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":1.12,"offset":1.17,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":1.12,"offset":1.17,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":1.12,"offset":1.17,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":1.14,"offset":1.35,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":1.15,"offset":1.16,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":1.15,"offset":1.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.18,"offset":1.46,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.46,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.46,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.46,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":1.36,"offset":1.37,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":61,"program":0,"isDrum":false,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":1.38,"offset":1.39,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.52,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.52,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.52,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.52,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.68,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":1.47,"offset":1.48,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.47,"offset":1.48,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":61,"program":0,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":61,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":1.8,"offset":1.85,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":1.8,"offset":1.85,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":1.8,"offset":1.85,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":1.8,"offset":1.85,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":1.8,"offset":2.01,"pitch":37,"program":33,"isDrum":false,"velocity":1},{"onset":1.8,"offset":1.81,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":1.8,"offset":1.81,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":61,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":1.81,"offset":1.82,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":2.01,"offset":2.0199999999999996,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":61,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.04,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":2.12,"offset":2.13,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.12,"offset":2.13,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":2.13,"offset":2.19,"pitch":91,"program":0,"isDrum":false,"velocity":1},{"onset":2.37,"offset":2.42,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.37,"offset":2.42,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":2.37,"offset":2.42,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.37,"offset":2.42,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.37,"offset":2.42,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":2.37,"offset":2.42,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":2.42,"offset":2.48,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":2.44,"offset":2.4499999999999997,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":2.44,"offset":2.4499999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.49,"pitch":88,"program":0,"isDrum":false,"velocity":1},{"onset":2.76,"offset":2.7699999999999996,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.76,"offset":2.7699999999999996,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.82,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.04,"pitch":91,"program":0,"isDrum":false,"velocity":1},{"onset":3.08,"offset":3.09,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":3.08,"offset":3.09,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.36,"pitch":91,"program":0,"isDrum":false,"velocity":1},{"onset":3.4,"offset":3.4099999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.4,"offset":3.4099999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.46,"pitch":91,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":82,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":3.62,"offset":3.67,"pitch":91,"program":0,"isDrum":false,"velocity":1},{"onset":3.72,"offset":3.73,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":3.72,"offset":3.73,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.83,"offset":4.095875,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.1,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.1,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.1,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.1,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.1,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.095875,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.095875,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.1,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":3.83,"offset":4.095875,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":4.04,"offset":4.05,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.04,"offset":4.05,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.1,"offset":4.109999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.1,"offset":4.109999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.38,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.72,"pitch":45,"program":100,"isDrum":false,"velocity":1},{"onset":4.42,"offset":4.43,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.42,"offset":4.43,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":4.6,"offset":4.61,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":4.71,"offset":4.72,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":4.72,"offset":5.07,"pitch":50,"program":100,"isDrum":false,"velocity":1},{"onset":4.73,"offset":4.74,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.73,"offset":4.74,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.83,"offset":4.84,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":4.94,"offset":4.95,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":5.05,"offset":5.06,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.05,"offset":5.06,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":5.06,"offset":5.07,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":5.07,"offset":5.39,"pitch":55,"program":100,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":91,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.19,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":5.37,"offset":5.38,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.37,"offset":5.38,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.39,"offset":5.73,"pitch":55,"program":100,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":5.56,"offset":5.569999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.63,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.74,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":5.73,"offset":6.143812500000001,"pitch":55,"program":100,"isDrum":false,"velocity":1},{"onset":5.74,"offset":5.75,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.74,"offset":5.75,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":5.95,"offset":5.96,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":6.05,"offset":6.06,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.05,"offset":6.06,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":6.06,"offset":6.07,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":6.35,"offset":6.36,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.35,"offset":6.36,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.35,"offset":6.36,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.35,"offset":8.19175,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":6.35,"offset":8.19175,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":6.35,"offset":6.359999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":6.35,"offset":6.359999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.36,"offset":6.37,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.36,"offset":6.37,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.36,"offset":6.37,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.36,"offset":6.37,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.37,"offset":6.38,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.37,"offset":6.38,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.37,"offset":6.38,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.37,"offset":6.38,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.38,"offset":6.39,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.38,"offset":6.39,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.38,"offset":6.39,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.38,"offset":6.39,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.39,"offset":6.4,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.39,"offset":6.4,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.39,"offset":6.4,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.39,"offset":6.4,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.4,"offset":6.41,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.4,"offset":6.41,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.4,"offset":6.41,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.4,"offset":6.41,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.64,"offset":6.65,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.64,"offset":6.65,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.64,"offset":6.65,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.64,"offset":6.65,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.64,"offset":6.6499999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.64,"offset":6.6499999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.65,"offset":6.66,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.65,"offset":6.66,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.65,"offset":6.66,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.65,"offset":6.66,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.66,"offset":6.67,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.66,"offset":6.67,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.66,"offset":6.67,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.66,"offset":6.67,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.68,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.68,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.68,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.68,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.86,"pitch":64,"program":100,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.69,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.69,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.69,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.69,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.82,"offset":6.83,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.82,"offset":6.83,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.86,"offset":7.18,"pitch":62,"program":100,"isDrum":false,"velocity":1},{"onset":6.88,"offset":6.89,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.88,"offset":6.89,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.88,"offset":6.89,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.88,"offset":6.89,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.89,"offset":6.9,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.89,"offset":6.9,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.89,"offset":6.9,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.89,"offset":6.9,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.9,"offset":6.91,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.9,"offset":6.91,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.9,"offset":6.91,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.9,"offset":6.91,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.92,"offset":6.93,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.92,"offset":6.93,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.92,"offset":6.93,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.92,"offset":6.93,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.93,"offset":6.94,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.93,"offset":6.94,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.93,"offset":6.94,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.93,"offset":6.94,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.94,"offset":6.95,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.94,"offset":6.95,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.94,"offset":6.95,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.94,"offset":6.95,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":6.95,"offset":6.96,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":6.95,"offset":6.96,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":6.95,"offset":6.96,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":6.95,"offset":6.96,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":7,"offset":7.01,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7,"offset":7.01,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.17,"offset":7.18,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":7.17,"offset":7.18,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":7.17,"offset":7.18,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":7.17,"offset":7.18,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":7.18,"offset":8.19175,"pitch":54,"program":0,"isDrum":false,"velocity":1},{"onset":7.18,"offset":8.19175,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":7.18,"offset":10.24,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":7.18,"offset":8.19175,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":7.18,"offset":7.37,"pitch":64,"program":100,"isDrum":false,"velocity":1},{"onset":7.29,"offset":7.3,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":7.29,"offset":7.3,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.37,"offset":7.56,"pitch":66,"program":100,"isDrum":false,"velocity":1},{"onset":7.48,"offset":7.49,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.56,"offset":7.95,"pitch":69,"program":100,"isDrum":false,"velocity":1},{"onset":7.66,"offset":7.67,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7.66,"offset":7.67,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.95,"offset":8.19175,"pitch":64,"program":100,"isDrum":false,"velocity":1},{"onset":7.95,"offset":7.96,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":7.95,"offset":7.96,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.14,"offset":8.15,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.29,"offset":8.3,"pitch":37,"program":0,"isDrum":false,"velocity":1},{"onset":8.29,"offset":8.3,"pitch":49,"program":0,"isDrum":false,"velocity":1},{"onset":8.29,"offset":8.3,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":8.29,"offset":8.3,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":8.29,"offset":8.3,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":8.3,"offset":8.31,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.3,"offset":8.31,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.3,"offset":8.31,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.62,"offset":8.63,"pitch":31,"program":0,"isDrum":false,"velocity":1},{"onset":8.62,"offset":8.63,"pitch":43,"program":0,"isDrum":false,"velocity":1},{"onset":8.62,"offset":8.63,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":8.62,"offset":8.63,"pitch":79,"program":0,"isDrum":false,"velocity":1},{"onset":8.62,"offset":8.63,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":8.62,"offset":8.629999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.62,"offset":8.629999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.8,"offset":8.81,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.95,"offset":8.96,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":8.95,"offset":8.96,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":8.95,"offset":8.96,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":8.95,"offset":8.96,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":8.95,"offset":8.96,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":8.95,"offset":8.96,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":8.97,"offset":8.98,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.97,"offset":8.98,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.97,"offset":8.98,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":9.29,"offset":9.299999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.29,"offset":9.299999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.61,"offset":9.62,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":9.61,"offset":9.62,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.61,"offset":9.62,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.62,"offset":9.63,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":9.62,"offset":9.63,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":9.62,"offset":9.63,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":9.62,"offset":9.63,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":9.62,"offset":9.63,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":9.62,"offset":9.63,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":9.93,"offset":9.94,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.93,"offset":9.94,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.94,"offset":9.95,"pitch":38,"program":0,"isDrum":false,"velocity":1},{"onset":9.94,"offset":9.95,"pitch":50,"program":0,"isDrum":false,"velocity":1},{"onset":9.94,"offset":9.95,"pitch":74,"program":0,"isDrum":false,"velocity":1},{"onset":9.94,"offset":9.95,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":9.94,"offset":9.95,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":9.94,"offset":9.95,"pitch":86,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":45,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.35,"pitch":85,"program":0,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.42,"pitch":45,"program":33,"isDrum":false,"velocity":1},{"onset":10.29,"offset":10.299999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.29,"offset":10.299999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":45,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":85,"program":0,"isDrum":false,"velocity":1},{"onset":10.59,"offset":10.65,"pitch":88,"program":0,"isDrum":false,"velocity":1},{"onset":10.6,"offset":10.61,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.6,"offset":10.61,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.61,"offset":10.77,"pitch":45,"program":33,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":45,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":85,"program":0,"isDrum":false,"velocity":1},{"onset":10.65,"offset":10.69,"pitch":88,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":45,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":85,"program":0,"isDrum":false,"velocity":1},{"onset":10.82,"offset":10.87,"pitch":88,"program":0,"isDrum":false,"velocity":1},{"onset":10.9,"offset":10.91,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.9,"offset":10.91,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.95,"offset":11.1,"pitch":44,"program":33,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":44,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":56,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":84,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":87,"program":0,"isDrum":false,"velocity":1},{"onset":11,"offset":11.06,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":11.21,"offset":11.22,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.21,"offset":11.22,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":45,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":85,"program":0,"isDrum":false,"velocity":1},{"onset":11.23,"offset":11.29,"pitch":88,"program":0,"isDrum":false,"velocity":1},{"onset":11.25,"offset":11.51,"pitch":45,"program":33,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":45,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":69,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":73,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":76,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":81,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":85,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":88,"program":0,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.39,"pitch":93,"program":0,"isDrum":false,"velocity":1},{"onset":11.51,"offset":11.52,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.51,"offset":11.52,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.57,"offset":11.71,"pitch":46,"program":33,"isDrum":false,"velocity":1},{"onset":11.81,"offset":11.82,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.81,"offset":11.82,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.9,"offset":12,"pitch":46,"program":33,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"b158e513802b07aabb8181950c4616495b1dbb40a731b9ee41723d90daafbc50","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":1} diff --git a/source/demo/web/public/examples/fma-22472.wav b/source/demo/web/public/examples/fma-22472.wav new file mode 100644 index 0000000000000000000000000000000000000000..dd8ebe7ef43a17d291572bbd9177696d6b67ae37 --- /dev/null +++ b/source/demo/web/public/examples/fma-22472.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b158e513802b07aabb8181950c4616495b1dbb40a731b9ee41723d90daafbc50 +size 384482 diff --git a/source/demo/web/public/examples/fma-23371.json b/source/demo/web/public/examples/fma-23371.json new file mode 100644 index 0000000000000000000000000000000000000000..cbd7defa8a6b0f8a1c25d1e337dc91394ecff093 --- /dev/null +++ b/source/demo/web/public/examples/fma-23371.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0,"offset":0.94,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":0,"offset":0.54,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":0,"offset":0.13,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":0,"offset":0.37,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":0.13,"offset":0.76,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":0.37,"offset":0.94,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":0.54,"offset":0.94,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":0.76,"offset":0.94,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":0.94,"offset":2.0479375,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":0.94,"offset":1.36,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":0.94,"offset":1.18,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":0.94,"offset":1.18,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":0.94,"offset":1.18,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.56,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.56,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.56,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":1.36,"offset":1.67,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":1.37,"offset":1.76,"pitch":58,"program":100,"isDrum":false,"velocity":1},{"onset":1.56,"offset":2.21,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":1.56,"offset":2.21,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":1.56,"offset":2.0479375,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":1.56,"offset":2.0479375,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.81,"pitch":51,"program":26,"isDrum":false,"velocity":1},{"onset":1.76,"offset":2.0479375,"pitch":53,"program":100,"isDrum":false,"velocity":1},{"onset":1.81,"offset":3.27,"pitch":51,"program":26,"isDrum":false,"velocity":1},{"onset":2.14,"offset":2.15,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.14,"offset":2.15,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.15,"offset":2.6,"pitch":57,"program":100,"isDrum":false,"velocity":1},{"onset":2.21,"offset":3.27,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":2.6,"offset":3.05,"pitch":54,"program":100,"isDrum":false,"velocity":1},{"onset":2.6,"offset":2.61,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.6,"offset":2.61,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.62,"offset":3.27,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":2.96,"offset":2.9699999999999998,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.96,"offset":2.9699999999999998,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.05,"offset":3.3,"pitch":57,"program":100,"isDrum":false,"velocity":1},{"onset":3.2,"offset":3.21,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.2,"offset":3.21,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.27,"offset":3.45,"pitch":44,"program":26,"isDrum":false,"velocity":1},{"onset":3.27,"offset":3.45,"pitch":51,"program":26,"isDrum":false,"velocity":1},{"onset":3.27,"offset":3.45,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":3.27,"offset":3.45,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":3.27,"offset":3.45,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":3.3,"offset":3.86,"pitch":54,"program":100,"isDrum":false,"velocity":1},{"onset":3.32,"offset":3.3299999999999996,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.43,"offset":3.44,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.43,"offset":3.44,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.45,"offset":4.95,"pitch":50,"program":26,"isDrum":false,"velocity":1},{"onset":3.45,"offset":4.95,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":3.45,"offset":4.95,"pitch":62,"program":26,"isDrum":false,"velocity":1},{"onset":3.45,"offset":4.095875,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":3.66,"offset":3.67,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.66,"offset":3.67,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.86,"offset":4.095875,"pitch":57,"program":100,"isDrum":false,"velocity":1},{"onset":4.26,"offset":4.68,"pitch":54,"program":100,"isDrum":false,"velocity":1},{"onset":4.28,"offset":4.95,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":4.68,"offset":5.19,"pitch":58,"program":100,"isDrum":false,"velocity":1},{"onset":4.95,"offset":6.65,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":4.95,"offset":7.62,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":5.19,"offset":5.58,"pitch":59,"program":100,"isDrum":false,"velocity":1},{"onset":5.58,"offset":5.99,"pitch":58,"program":100,"isDrum":false,"velocity":1},{"onset":5.99,"offset":6.48,"pitch":58,"program":100,"isDrum":false,"velocity":1},{"onset":6.36,"offset":7.2,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":6.65,"offset":7.62,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":6.77,"offset":7.38,"pitch":54,"program":100,"isDrum":false,"velocity":1},{"onset":6.81,"offset":8.24,"pitch":47,"program":26,"isDrum":false,"velocity":1},{"onset":7.2,"offset":8.19175,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":7.62,"offset":8.24,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":7.62,"offset":8.24,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":7.62,"offset":8.05,"pitch":51,"program":100,"isDrum":false,"velocity":1},{"onset":8.05,"offset":8.69,"pitch":58,"program":100,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.47,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.47,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.47,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.47,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.47,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":8.24,"offset":8.47,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.9,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.9,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.9,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.9,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.9,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.9,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.28,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.28,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.28,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.7,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.7,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.7,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.7,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.7,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":9.7,"offset":9.95,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":9.7,"offset":9.95,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":9.7,"offset":9.95,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":9.7,"offset":9.95,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":9.7,"offset":9.95,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":9.95,"offset":10.2396875,"pitch":42,"program":26,"isDrum":false,"velocity":1},{"onset":9.95,"offset":10.2396875,"pitch":49,"program":26,"isDrum":false,"velocity":1},{"onset":9.95,"offset":10.2396875,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":9.95,"offset":10.2396875,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":9.95,"offset":10.2396875,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.74,"pitch":42,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.74,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.74,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.74,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.74,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.35,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.35,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":11.35,"offset":11.65,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":11.35,"offset":11.65,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":11.65,"offset":11.74,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":11.65,"offset":11.74,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":46,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":62,"program":26,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.93,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":11.75,"offset":11.99,"pitch":34,"program":33,"isDrum":false,"velocity":1},{"onset":11.75,"offset":11.76,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.75,"offset":11.76,"pitch":38,"program":128,"isDrum":true,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"5b6d7fc514711131b3dcb6600c52f9754a8cf61d9d7e01412d49a6512acaa9f2","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/source/demo/web/public/examples/fma-23371.wav b/source/demo/web/public/examples/fma-23371.wav new file mode 100644 index 0000000000000000000000000000000000000000..64ec8e532811b651ad6e4f7c0e0b93bd6c7c1cad --- /dev/null +++ b/source/demo/web/public/examples/fma-23371.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b6d7fc514711131b3dcb6600c52f9754a8cf61d9d7e01412d49a6512acaa9f2 +size 384586 diff --git a/source/demo/web/public/examples/fma-37119.json b/source/demo/web/public/examples/fma-37119.json new file mode 100644 index 0000000000000000000000000000000000000000..161fe4ca3d4ad3fd76c4800e1ac8d6e3c6bac10d --- /dev/null +++ b/source/demo/web/public/examples/fma-37119.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":11.29,"offset":11.299999999999999,"pitch":69,"program":71,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"17e0dcb1a33c859bf5e1099d556623139d08719a74e7b4d77ad12c7ed427db94","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/source/demo/web/public/examples/fma-37119.wav b/source/demo/web/public/examples/fma-37119.wav new file mode 100644 index 0000000000000000000000000000000000000000..947a938249e5d8bd489432e3246463a7ee3ed760 --- /dev/null +++ b/source/demo/web/public/examples/fma-37119.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17e0dcb1a33c859bf5e1099d556623139d08719a74e7b4d77ad12c7ed427db94 +size 384556 diff --git a/source/demo/web/public/examples/fma-42761.json b/source/demo/web/public/examples/fma-42761.json new file mode 100644 index 0000000000000000000000000000000000000000..0f7024d5b3c02a37fa0a3eea42c03337bf077093 --- /dev/null +++ b/source/demo/web/public/examples/fma-42761.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.01,"offset":0.02,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.02,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.02,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.02,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.02,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.02,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.18,"pitch":31,"program":33,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.02,"offset":0.03,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.2,"offset":0.37,"pitch":43,"program":33,"isDrum":false,"velocity":1},{"onset":0.21,"offset":0.22,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.21,"offset":0.22,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.21,"offset":0.22,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.21,"offset":0.22,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.21,"offset":0.22,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.21,"offset":0.22,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.22,"offset":0.41,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.22,"offset":0.41,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.22,"offset":0.41,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.22,"offset":0.41,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.22,"offset":0.41,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.22,"offset":0.41,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.41,"offset":0.42,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.42,"offset":0.7,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":0.42,"offset":0.7,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":0.42,"offset":0.7,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":0.42,"offset":0.7,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":0.42,"offset":0.7,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":0.42,"offset":0.7,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":0.44,"offset":0.62,"pitch":31,"program":33,"isDrum":false,"velocity":1},{"onset":0.44,"offset":0.45,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.44,"offset":0.45,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.69,"offset":0.86,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":0.7,"offset":0.71,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":0.7,"offset":0.71,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":0.7,"offset":0.71,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":0.7,"offset":0.71,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":0.7,"offset":0.71,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":0.71,"offset":0.9,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":0.71,"offset":0.9,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":0.71,"offset":0.9,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":0.71,"offset":0.9,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":0.71,"offset":0.9,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":0.74,"offset":0.75,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.74,"offset":0.75,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.9,"offset":0.91,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":0.9,"offset":0.91,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":0.9,"offset":0.91,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":0.9,"offset":0.91,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":0.9,"offset":0.91,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.1,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.1,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.1,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.1,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.1,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":0.93,"offset":0.9400000000000001,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.93,"offset":0.9400000000000001,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.94,"offset":1.11,"pitch":31,"program":33,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.11,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.11,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.11,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.11,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.11,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.3,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.3,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.3,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.3,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.11,"offset":1.3,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.12,"offset":1.1300000000000001,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.12,"offset":1.1300000000000001,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.17,"offset":1.34,"pitch":36,"program":33,"isDrum":false,"velocity":1},{"onset":1.3,"offset":1.31,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.3,"offset":1.31,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.3,"offset":1.31,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.3,"offset":1.31,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.3,"offset":1.31,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.5,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.5,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.5,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.5,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.5,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.42,"offset":1.59,"pitch":31,"program":33,"isDrum":false,"velocity":1},{"onset":1.42,"offset":1.43,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.42,"offset":1.43,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.5,"offset":1.51,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.5,"offset":1.51,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.5,"offset":1.51,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.5,"offset":1.51,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.5,"offset":1.51,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.51,"offset":1.7,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.51,"offset":1.7,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.51,"offset":1.7,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.51,"offset":1.7,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.51,"offset":1.7,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.61,"offset":1.62,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.61,"offset":1.62,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.67,"offset":1.84,"pitch":36,"program":33,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.7,"offset":1.71,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.71,"offset":2.0479375,"pitch":45,"program":29,"isDrum":false,"velocity":1},{"onset":1.71,"offset":2.0479375,"pitch":52,"program":29,"isDrum":false,"velocity":1},{"onset":1.71,"offset":2.0479375,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.71,"offset":2.0479375,"pitch":61,"program":29,"isDrum":false,"velocity":1},{"onset":1.8,"offset":1.81,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.8,"offset":1.81,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.92,"offset":2.16,"pitch":36,"program":33,"isDrum":false,"velocity":1},{"onset":1.99,"offset":2,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.99,"offset":2,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.15,"offset":2.43,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":2.16,"offset":2.43,"pitch":43,"program":33,"isDrum":false,"velocity":1},{"onset":2.16,"offset":2.17,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":2.16,"offset":2.17,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.16,"offset":2.17,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.42,"offset":2.4299999999999997,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":2.42,"offset":2.4299999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.42,"offset":2.4299999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.43,"offset":4.095875,"pitch":43,"program":33,"isDrum":false,"velocity":1},{"onset":2.43,"offset":2.71,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":2.68,"offset":2.69,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.68,"offset":2.69,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.71,"offset":2.99,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":2.94,"offset":2.9499999999999997,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":2.94,"offset":2.9499999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.94,"offset":2.9499999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.99,"offset":3.27,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":3.2,"offset":3.21,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.2,"offset":3.21,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.27,"offset":3.43,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":3.43,"offset":3.7,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":3.46,"offset":3.4699999999999998,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":3.46,"offset":3.4699999999999998,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.46,"offset":3.4699999999999998,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.7,"offset":3.97,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":3.72,"offset":3.73,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":3.72,"offset":3.73,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.72,"offset":3.73,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.97,"offset":4.095875,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":3.98,"offset":3.9899999999999998,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.98,"offset":3.9899999999999998,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.18,"offset":4.19,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.19,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.19,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.19,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.19,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.19,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.1899999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.18,"offset":4.1899999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.18,"offset":4.1899999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.19,"offset":4.43,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.43,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.43,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.43,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.43,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.43,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.44,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.44,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.44,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.44,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.44,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.44,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.43,"offset":4.4399999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.43,"offset":4.4399999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.43,"offset":4.4399999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.44,"offset":4.68,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.44,"offset":4.68,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.44,"offset":4.68,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.44,"offset":4.68,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.44,"offset":4.68,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.44,"offset":4.68,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.69,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.69,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.69,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.69,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.69,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.69,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.6899999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.68,"offset":4.6899999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.69,"offset":4.93,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.69,"offset":4.93,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.69,"offset":4.93,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.69,"offset":4.93,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.69,"offset":4.93,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.69,"offset":4.93,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.94,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.94,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.94,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.94,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.94,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.94,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.93,"offset":4.9399999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.93,"offset":4.9399999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.93,"offset":4.9399999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.94,"offset":5.17,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.94,"offset":5.17,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.94,"offset":5.17,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.94,"offset":5.17,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.94,"offset":5.17,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.94,"offset":5.17,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.18,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.42,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.42,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.42,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.42,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.42,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.42,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.18,"offset":5.1899999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.18,"offset":5.1899999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.18,"offset":5.1899999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.42,"offset":5.43,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.42,"offset":5.43,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.42,"offset":5.43,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.42,"offset":5.43,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.42,"offset":5.43,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.42,"offset":5.43,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.67,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.67,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.67,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.67,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.67,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.67,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.4399999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.43,"offset":5.4399999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.43,"offset":5.4399999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.67,"offset":5.68,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.67,"offset":5.68,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.67,"offset":5.68,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.67,"offset":5.68,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.67,"offset":5.68,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.67,"offset":5.68,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.92,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.92,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.92,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.92,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.92,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.92,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.6899999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.68,"offset":5.6899999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.92,"offset":5.93,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.92,"offset":5.93,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.92,"offset":5.93,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.92,"offset":5.93,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.92,"offset":5.93,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.92,"offset":5.93,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.143812500000001,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.143812500000001,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.143812500000001,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.15,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.15,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":6.143812500000001,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.93,"offset":5.9399999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.93,"offset":5.9399999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.93,"offset":5.9399999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.15,"offset":6.16,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":6.15,"offset":6.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.15,"offset":6.16,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.16,"offset":6.41,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":6.16,"offset":6.41,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.16,"offset":6.41,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":6.28,"offset":6.29,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.41,"offset":6.42,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.42,"offset":6.67,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":6.42,"offset":6.67,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.42,"offset":6.67,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":6.53,"offset":6.54,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.66,"offset":6.67,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.66,"offset":6.67,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.68,"offset":6.93,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.93,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.93,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":6.78,"offset":6.79,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.91,"offset":6.92,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":6.94,"offset":7.19,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":6.94,"offset":7.19,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.94,"offset":7.19,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":7.04,"offset":7.05,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.17,"offset":7.18,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.17,"offset":7.18,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.2,"offset":7.45,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":7.2,"offset":7.45,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.2,"offset":7.45,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":7.3,"offset":7.31,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.43,"offset":7.4399999999999995,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7.43,"offset":7.4399999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.43,"offset":7.4399999999999995,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.46,"offset":7.71,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":7.46,"offset":7.71,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.46,"offset":7.71,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":7.55,"offset":7.56,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.68,"offset":7.6899999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":7.68,"offset":7.6899999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.68,"offset":7.6899999999999995,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.72,"offset":7.97,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":7.72,"offset":7.97,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.72,"offset":7.97,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":7.8,"offset":7.81,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.93,"offset":7.9399999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.93,"offset":7.9399999999999995,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.98,"offset":8.2,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":7.98,"offset":8.2,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.98,"offset":8.2,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":8.05,"offset":8.06,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":8.18,"offset":8.19,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.18,"offset":8.19,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.18,"offset":8.19,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":8.21,"offset":8.42,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":8.21,"offset":8.42,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":8.21,"offset":8.42,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":8.21,"offset":8.42,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.65,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.65,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.65,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.65,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.43,"offset":8.44,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.44,"offset":8.66,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":8.44,"offset":8.66,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":8.44,"offset":8.66,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":8.44,"offset":8.66,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.44,"offset":8.66,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8.44,"offset":8.66,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.88,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.88,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.88,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.88,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.67,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.67,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.67,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.67,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.67,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8.66,"offset":8.67,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.89,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.89,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.89,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.89,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.89,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.89,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.68,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.89,"offset":9.12,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":8.89,"offset":9.12,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":8.89,"offset":9.12,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":8.89,"offset":9.12,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.9,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.9,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.9,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.9,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.9,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8.89,"offset":8.9,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.13,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.13,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.13,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.13,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.13,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.13,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":8.91,"offset":8.92,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.91,"offset":8.92,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.13,"offset":9.36,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.36,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.36,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.36,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.14,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.14,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.14,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.14,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.14,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":9.13,"offset":9.14,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.37,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.37,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.37,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.37,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.37,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.37,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":9.15,"offset":9.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.37,"offset":9.6,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.6,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.6,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.6,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.38,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.38,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.38,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.38,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.38,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":9.37,"offset":9.38,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":9.38,"offset":9.61,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":9.38,"offset":9.61,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":9.38,"offset":9.61,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":9.38,"offset":9.61,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":9.38,"offset":9.61,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":9.38,"offset":9.61,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":9.39,"offset":9.4,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":9.39,"offset":9.4,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.61,"offset":10.44,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.44,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.44,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.2396875,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":9.61,"offset":9.62,"pitch":43,"program":29,"isDrum":false,"velocity":1},{"onset":9.61,"offset":9.62,"pitch":50,"program":29,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.2396875,"pitch":55,"program":29,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.2396875,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.2396875,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":9.61,"offset":10.2396875,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":9.63,"offset":9.64,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.87,"offset":9.879999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.87,"offset":9.879999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.11,"offset":10.12,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.42,"offset":10.66,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":10.44,"offset":10.68,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":10.44,"offset":10.45,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.44,"offset":10.45,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.45,"offset":10.68,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":10.46,"offset":10.68,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":10.46,"offset":10.68,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":10.47,"offset":10.68,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":10.66,"offset":10.91,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":10.68,"offset":10.93,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":10.69,"offset":10.93,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":10.7,"offset":10.93,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":10.71,"offset":10.93,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":10.71,"offset":10.93,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":10.91,"offset":11.16,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":10.92,"offset":10.93,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.92,"offset":10.93,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.93,"offset":11.19,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":10.94,"offset":11.19,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":10.95,"offset":11.19,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":10.95,"offset":11.19,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.19,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":11.16,"offset":11.41,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":11.19,"offset":11.44,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":11.2,"offset":11.44,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":11.21,"offset":11.44,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":11.22,"offset":11.44,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":11.22,"offset":11.44,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":11.41,"offset":11.67,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":11.43,"offset":11.44,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.43,"offset":11.44,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.44,"offset":11.7,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":11.45,"offset":11.7,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":11.46,"offset":11.7,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":11.47,"offset":11.7,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":11.47,"offset":11.7,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":11.67,"offset":11.93,"pitch":31,"program":80,"isDrum":false,"velocity":1},{"onset":11.7,"offset":11.96,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":11.7,"offset":11.709999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.7,"offset":11.709999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.71,"offset":11.96,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":11.72,"offset":11.96,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":11.72,"offset":11.96,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":11.73,"offset":11.96,"pitch":62,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"12ad8c28ffc3714fb726fb9500f843fa8b8f764974df5bbded9afe324fd440c8","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":2} diff --git a/source/demo/web/public/examples/fma-42761.wav b/source/demo/web/public/examples/fma-42761.wav new file mode 100644 index 0000000000000000000000000000000000000000..233ac73587733990f65ac015384629c6898b66fb --- /dev/null +++ b/source/demo/web/public/examples/fma-42761.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12ad8c28ffc3714fb726fb9500f843fa8b8f764974df5bbded9afe324fd440c8 +size 384500 diff --git a/source/demo/web/public/examples/fma-68838.json b/source/demo/web/public/examples/fma-68838.json new file mode 100644 index 0000000000000000000000000000000000000000..f4d9fb2bf529b68c4c72d8f9b14f93744a70efe2 --- /dev/null +++ b/source/demo/web/public/examples/fma-68838.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.04,"offset":0.33,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.36,"offset":0.87,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":0.89,"offset":1.13,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":1.1,"offset":1.38,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":1.4,"offset":1.86,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":1.88,"offset":2.09,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.09,"offset":2.27,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":2.36,"offset":2.57,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":2.57,"offset":2.84,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":2.84,"offset":3.1,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":3.13,"offset":3.53,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":3.53,"offset":4.095875,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":8.47,"offset":8.71,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":8.71,"offset":8.98,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":9.01,"offset":9.48,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":9.51,"offset":9.77,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":9.73,"offset":10,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":10.03,"offset":10.5,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":10.52,"offset":10.74,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":10.52,"offset":10.74,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":10.52,"offset":10.74,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":10.74,"offset":10.99,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":10.74,"offset":10.99,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":10.74,"offset":10.99,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":11.03,"offset":11.55,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":11.03,"offset":11.55,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":11.03,"offset":11.55,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":11.58,"offset":11.79,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":11.58,"offset":11.79,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":11.81,"offset":12,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":11.81,"offset":12,"pitch":68,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"60c2ef0e4ce2ef2c9e37ac9c4e35dd8c6f4c2cf1b871cf00f186e71c5c3a73bc","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/source/demo/web/public/examples/fma-68838.wav b/source/demo/web/public/examples/fma-68838.wav new file mode 100644 index 0000000000000000000000000000000000000000..b706e2b3d897e6b9113cfdba1e1da7d36a5aa128 --- /dev/null +++ b/source/demo/web/public/examples/fma-68838.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60c2ef0e4ce2ef2c9e37ac9c4e35dd8c6f4c2cf1b871cf00f186e71c5c3a73bc +size 384522 diff --git a/source/demo/web/public/examples/fma-7481.json b/source/demo/web/public/examples/fma-7481.json new file mode 100644 index 0000000000000000000000000000000000000000..872fbf55a6f17624ad688b1743898e27926e123b --- /dev/null +++ b/source/demo/web/public/examples/fma-7481.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.03,"offset":0.16,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.16,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":54,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":60,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":66,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":69,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":78,"program":29,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.27,"pitch":81,"program":29,"isDrum":false,"velocity":1},{"onset":0.09,"offset":0.21,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":0.09,"offset":0.09999999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":0.28,"offset":0.4,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.4,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.4,"pitch":84,"program":0,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":54,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":60,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":66,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":69,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":78,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.52,"pitch":81,"program":29,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.4,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":0.28,"offset":0.29000000000000004,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.28,"offset":0.29000000000000004,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.4,"offset":0.52,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":0.4,"offset":0.52,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":0.47,"offset":0.58,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":0.52,"offset":0.64,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":0.52,"offset":0.64,"pitch":87,"program":0,"isDrum":false,"velocity":1},{"onset":0.65,"offset":0.77,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":0.65,"offset":0.77,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":0.65,"offset":0.77,"pitch":80,"program":0,"isDrum":false,"velocity":1},{"onset":0.65,"offset":0.76,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":0.65,"offset":0.66,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.78,"offset":0.9,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":0.78,"offset":0.9,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":0.84,"offset":0.95,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":0.9,"offset":1.02,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":0.9,"offset":1.02,"pitch":87,"program":0,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":54,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":60,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":66,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":69,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":78,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.26,"pitch":81,"program":29,"isDrum":false,"velocity":1},{"onset":1.01,"offset":1.02,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":1.02,"offset":1.14,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":1.02,"offset":1.14,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":1.02,"offset":1.14,"pitch":83,"program":0,"isDrum":false,"velocity":1},{"onset":1.02,"offset":1.14,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":1.02,"offset":1.03,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.15,"offset":1.27,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":1.15,"offset":1.27,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":1.21,"offset":1.32,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.4,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.4,"pitch":87,"program":0,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":54,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":60,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":66,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":69,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":78,"program":29,"isDrum":false,"velocity":1},{"onset":1.28,"offset":1.52,"pitch":81,"program":29,"isDrum":false,"velocity":1},{"onset":1.4,"offset":1.51,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":1.4,"offset":1.41,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":1.41,"offset":1.53,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":1.41,"offset":1.53,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":1.54,"offset":1.66,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":1.54,"offset":1.66,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":1.58,"offset":1.69,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.79,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.79,"pitch":87,"program":0,"isDrum":false,"velocity":1},{"onset":1.77,"offset":1.88,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":1.77,"offset":1.78,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":54,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":60,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":66,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":69,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":72,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":78,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":2.03,"pitch":81,"program":29,"isDrum":false,"velocity":1},{"onset":1.78,"offset":1.79,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.79,"offset":1.91,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":1.79,"offset":1.91,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":1.79,"offset":1.91,"pitch":83,"program":0,"isDrum":false,"velocity":1},{"onset":1.92,"offset":2.04,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":1.92,"offset":2.04,"pitch":90,"program":0,"isDrum":false,"velocity":1},{"onset":1.95,"offset":2.0479375,"pitch":35,"program":33,"isDrum":false,"velocity":1},{"onset":2.04,"offset":2.15,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":2.04,"offset":2.05,"pitch":87,"program":0,"isDrum":false,"velocity":1},{"onset":2.15,"offset":2.27,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":2.15,"offset":2.1599999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.27,"offset":2.39,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":2.36,"offset":2.52,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":2.39,"offset":2.52,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":2.52,"offset":3.28,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":2.52,"offset":2.65,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":2.52,"offset":2.68,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":2.53,"offset":2.5399999999999996,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.65,"offset":2.77,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":2.68,"offset":2.84,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.9,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":2.84,"offset":3,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":2.9,"offset":3.02,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":2.9,"offset":2.9099999999999997,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3,"offset":3.16,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":3.02,"offset":3.15,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":3.15,"offset":3.28,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":3.16,"offset":3.32,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":3.28,"offset":4.03,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":3.28,"offset":3.41,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":3.28,"offset":3.2899999999999996,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.28,"offset":3.2899999999999996,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.32,"offset":4.095875,"pitch":72,"program":100,"isDrum":false,"velocity":1},{"onset":3.41,"offset":3.53,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":3.53,"offset":3.66,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":3.65,"offset":3.6599999999999997,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":3.66,"offset":3.78,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":3.78,"offset":3.91,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":3.91,"offset":4.03,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":4.03,"offset":4.095875,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":4.03,"offset":4.28,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":4.03,"offset":4.04,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.03,"offset":4.04,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.11,"offset":4.3,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":4.28,"offset":4.4,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":4.3,"offset":4.4,"pitch":63,"program":100,"isDrum":false,"velocity":1},{"onset":4.4,"offset":4.53,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":4.4,"offset":4.49,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":4.41,"offset":4.42,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.41,"offset":4.42,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":4.49,"offset":4.59,"pitch":66,"program":100,"isDrum":false,"velocity":1},{"onset":4.53,"offset":4.66,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":4.59,"offset":4.78,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":4.66,"offset":4.79,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":4.78,"offset":4.97,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":4.79,"offset":4.91,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":4.79,"offset":4.8,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.79,"offset":4.8,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.91,"offset":5.04,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":4.97,"offset":5.17,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":5.04,"offset":5.16,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":5.16,"offset":5.28,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.16,"offset":5.17,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.17,"offset":5.37,"pitch":73,"program":100,"isDrum":false,"velocity":1},{"onset":5.28,"offset":5.41,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":5.37,"offset":5.56,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":5.41,"offset":5.53,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":5.53,"offset":5.66,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.53,"offset":5.54,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.56,"offset":5.76,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":5.66,"offset":5.79,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":5.76,"offset":5.96,"pitch":73,"program":100,"isDrum":false,"velocity":1},{"onset":5.79,"offset":5.91,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":5.91,"offset":6.04,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":5.91,"offset":5.92,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.96,"offset":6.143812500000001,"pitch":70,"program":100,"isDrum":false,"velocity":1},{"onset":6.04,"offset":6.27,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":6.1,"offset":6.143812500000001,"pitch":52,"program":33,"isDrum":false,"velocity":1},{"onset":6.27,"offset":7.02,"pitch":58,"program":0,"isDrum":false,"velocity":1},{"onset":6.27,"offset":6.52,"pitch":70,"program":0,"isDrum":false,"velocity":1},{"onset":6.28,"offset":6.29,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.28,"offset":6.29,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.52,"offset":6.77,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":6.65,"offset":6.66,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":6.77,"offset":7.02,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":6.84,"offset":7.06,"pitch":64,"program":100,"isDrum":false,"velocity":1},{"onset":7.02,"offset":10.2396875,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":7.02,"offset":7.28,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":7.02,"offset":7.029999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7.02,"offset":7.029999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.06,"offset":7.28,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":7.28,"offset":7.53,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":7.28,"offset":7.5,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":7.4,"offset":7.41,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.5,"offset":7.72,"pitch":64,"program":100,"isDrum":false,"velocity":1},{"onset":7.53,"offset":7.79,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":7.72,"offset":7.94,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":7.78,"offset":7.79,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":7.78,"offset":7.79,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.79,"offset":8.04,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":7.94,"offset":8.16,"pitch":64,"program":100,"isDrum":false,"velocity":1},{"onset":8.04,"offset":8.2,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":8.15,"offset":8.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.16,"offset":8.19175,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":8.2,"offset":8.42,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":8.27,"offset":8.41,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":8.4,"offset":8.53,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":8.42,"offset":8.55,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":8.52,"offset":8.65,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":8.53,"offset":8.54,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.55,"offset":8.67,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":8.64,"offset":8.77,"pitch":80,"program":0,"isDrum":false,"velocity":1},{"onset":8.67,"offset":8.9,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":8.76,"offset":8.9,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":8.89,"offset":9.02,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":8.9,"offset":10.2396875,"pitch":60,"program":100,"isDrum":false,"velocity":1},{"onset":8.9,"offset":8.91,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.01,"offset":9.15,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":9.14,"offset":9.28,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":9.27,"offset":9.4,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.28,"offset":9.29,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.39,"offset":9.53,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":9.52,"offset":9.65,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.78,"pitch":72,"program":0,"isDrum":false,"velocity":1},{"onset":9.65,"offset":9.66,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":9.77,"offset":9.91,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":9.9,"offset":10.04,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":10.02,"offset":10.03,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.02,"offset":10.03,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.03,"offset":10.17,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":10.16,"offset":10.2396875,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":10.27,"offset":10.38,"pitch":63,"program":0,"isDrum":false,"velocity":1},{"onset":10.27,"offset":10.38,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":10.4,"offset":10.41,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.51,"offset":10.77,"pitch":65,"program":100,"isDrum":false,"velocity":1},{"onset":10.52,"offset":10.63,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":10.52,"offset":10.63,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":10.77,"offset":10.89,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":10.77,"offset":10.89,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":10.77,"offset":11.03,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":10.78,"offset":10.79,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.78,"offset":10.79,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.03,"offset":11.15,"pitch":63,"program":0,"isDrum":false,"velocity":1},{"onset":11.03,"offset":11.15,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":11.03,"offset":11.29,"pitch":67,"program":100,"isDrum":false,"velocity":1},{"onset":11.15,"offset":11.16,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.28,"offset":11.39,"pitch":66,"program":0,"isDrum":false,"velocity":1},{"onset":11.28,"offset":11.39,"pitch":78,"program":0,"isDrum":false,"velocity":1},{"onset":11.39,"offset":11.51,"pitch":63,"program":0,"isDrum":false,"velocity":1},{"onset":11.39,"offset":11.51,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":11.51,"offset":11.63,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":11.51,"offset":11.63,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":11.53,"offset":11.54,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.77,"offset":11.89,"pitch":63,"program":0,"isDrum":false,"velocity":1},{"onset":11.77,"offset":11.89,"pitch":75,"program":0,"isDrum":false,"velocity":1},{"onset":11.9,"offset":11.91,"pitch":42,"program":128,"isDrum":true,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"1fe21e9255fd0fb4ef6e9c4a088c74a7cd81d0d8d76fd91323d4fdcedcea2d5c","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/source/demo/web/public/examples/fma-7481.wav b/source/demo/web/public/examples/fma-7481.wav new file mode 100644 index 0000000000000000000000000000000000000000..dfae3cd1fd74212e8d2fac503e261fed00e46c82 --- /dev/null +++ b/source/demo/web/public/examples/fma-7481.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fe21e9255fd0fb4ef6e9c4a088c74a7cd81d0d8d76fd91323d4fdcedcea2d5c +size 384512 diff --git a/source/demo/web/public/examples/fma-75782.json b/source/demo/web/public/examples/fma-75782.json new file mode 100644 index 0000000000000000000000000000000000000000..34c81689b83401f5943bf6dd2df22ec2e688767b --- /dev/null +++ b/source/demo/web/public/examples/fma-75782.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.01,"offset":0.66,"pitch":31,"program":33,"isDrum":false,"velocity":1},{"onset":0.01,"offset":0.02,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.08,"offset":0.09,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":0.08,"offset":0.09,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.44,"offset":0.45,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.47,"offset":2.0479375,"pitch":66,"program":100,"isDrum":false,"velocity":1},{"onset":0.66,"offset":0.86,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":0.66,"offset":0.67,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":0.66,"offset":0.67,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.66,"offset":0.67,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":1.05,"offset":1.06,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.05,"offset":1.06,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.24,"offset":1.25,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.42,"offset":1.43,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":1.61,"offset":1.62,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":1.61,"offset":1.62,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":1.96,"offset":1.97,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":1.96,"offset":1.97,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":2.17,"offset":2.1799999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.17,"offset":2.1799999999999997,"pitch":48,"program":128,"isDrum":true,"velocity":1},{"onset":2.39,"offset":2.4,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.39,"offset":2.4,"pitch":48,"program":128,"isDrum":true,"velocity":1},{"onset":2.56,"offset":2.57,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.56,"offset":2.57,"pitch":48,"program":128,"isDrum":true,"velocity":1},{"onset":2.56,"offset":2.57,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":2.94,"offset":2.9499999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.94,"offset":2.9499999999999997,"pitch":48,"program":128,"isDrum":true,"velocity":1},{"onset":3.11,"offset":3.1199999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.11,"offset":3.1199999999999997,"pitch":48,"program":128,"isDrum":true,"velocity":1},{"onset":3.11,"offset":3.1199999999999997,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":3.5,"offset":3.51,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.5,"offset":3.51,"pitch":41,"program":128,"isDrum":true,"velocity":1},{"onset":3.69,"offset":4.095875,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":3.69,"offset":3.6999999999999997,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":3.69,"offset":3.6999999999999997,"pitch":41,"program":128,"isDrum":true,"velocity":1},{"onset":3.69,"offset":3.6999999999999997,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":4.09,"offset":4.1,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.09,"offset":4.1,"pitch":41,"program":128,"isDrum":true,"velocity":1},{"onset":4.09,"offset":4.1,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":4.28,"offset":4.29,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.46,"offset":4.47,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":4.64,"offset":4.6499999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":4.64,"offset":4.6499999999999995,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":4.83,"offset":4.84,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.01,"offset":5.02,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":5.01,"offset":5.02,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":5.2,"offset":5.21,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.4,"offset":5.41,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.59,"offset":5.6,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.59,"offset":5.6,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":5.78,"offset":5.79,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.96,"offset":5.97,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.14,"offset":6.1499999999999995,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.14,"offset":6.1499999999999995,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":6.32,"offset":6.33,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.38,"offset":6.51,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":6.51,"offset":6.77,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":6.51,"offset":6.52,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.67,"offset":8.19175,"pitch":45,"program":26,"isDrum":false,"velocity":1},{"onset":6.67,"offset":8.19175,"pitch":52,"program":26,"isDrum":false,"velocity":1},{"onset":6.67,"offset":8.19175,"pitch":55,"program":26,"isDrum":false,"velocity":1},{"onset":6.67,"offset":8.19175,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":6.67,"offset":8.19175,"pitch":67,"program":26,"isDrum":false,"velocity":1},{"onset":6.7,"offset":6.71,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":6.7,"offset":6.71,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":6.77,"offset":7.03,"pitch":33,"program":33,"isDrum":false,"velocity":1},{"onset":6.89,"offset":6.8999999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.09,"offset":7.1,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":7.09,"offset":7.1,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.28,"offset":7.29,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.47,"offset":7.4799999999999995,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":7.65,"offset":7.66,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":7.65,"offset":7.66,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":7.84,"offset":7.85,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.02,"offset":8.03,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.02,"offset":8.03,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":8.4,"offset":8.41,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":8.4,"offset":8.41,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.4,"offset":8.41,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.58,"offset":8.59,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.58,"offset":8.59,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":8.58,"offset":8.59,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":8.85,"offset":8.86,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.85,"offset":8.86,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.94,"offset":8.95,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.04,"offset":9.049999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.14,"offset":9.15,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.14,"offset":9.15,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.23,"offset":9.24,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.32,"offset":9.33,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.41,"offset":9.42,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.41,"offset":9.42,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.5,"offset":9.51,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":9.5,"offset":9.51,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":9.71,"offset":9.72,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":9.91,"offset":9.92,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":9.91,"offset":9.92,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.1,"offset":10.11,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.1,"offset":10.11,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":10.49,"offset":10.5,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.49,"offset":10.5,"pitch":43,"program":128,"isDrum":true,"velocity":1},{"onset":10.66,"offset":10.67,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10.66,"offset":10.67,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":10.66,"offset":10.67,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":11.05,"offset":11.06,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.05,"offset":11.06,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":11.05,"offset":11.06,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":11.64,"offset":11.65,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.64,"offset":11.65,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":11.64,"offset":11.65,"pitch":49,"program":128,"isDrum":true,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"64daa87292395961602211cbedb775e183b97148e994cdbff872e092e8183308","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/source/demo/web/public/examples/fma-75782.wav b/source/demo/web/public/examples/fma-75782.wav new file mode 100644 index 0000000000000000000000000000000000000000..6a3232c84cb4b647dfca80b7ea904d811c1d60a6 --- /dev/null +++ b/source/demo/web/public/examples/fma-75782.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64daa87292395961602211cbedb775e183b97148e994cdbff872e092e8183308 +size 384604 diff --git a/source/demo/web/public/examples/guitar-funk.json b/source/demo/web/public/examples/guitar-funk.json new file mode 100644 index 0000000000000000000000000000000000000000..a0abb5006f4c4b1a9243f78a33ea4eae7a0cce14 --- /dev/null +++ b/source/demo/web/public/examples/guitar-funk.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.01,"offset":0.24,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":0.02,"offset":0.22,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":0.03,"offset":0.21,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":0.25,"offset":0.75,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":0.26,"offset":0.51,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":0.27,"offset":0.52,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.52,"offset":0.74,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":0.53,"offset":0.76,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.53,"offset":0.76,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":0.54,"offset":0.77,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":0.77,"offset":0.89,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":0.78,"offset":0.91,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.31,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":0.92,"offset":1.04,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":0.93,"offset":1.03,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":0.93,"offset":1.28,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":1.29,"offset":1.53,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":1.29,"offset":1.52,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":1.3,"offset":1.55,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.54,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":1.31,"offset":1.56,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":1.66,"offset":1.8,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":1.67,"offset":1.79,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":1.68,"offset":1.78,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":2.04,"offset":2.36,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":2.04,"offset":2.37,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":2.06,"offset":2.39,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":2.47,"offset":3.13,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":2.48,"offset":2.62,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":2.49,"offset":2.86,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":2.5,"offset":2.62,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":2.51,"offset":2.62,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":2.84,"offset":3.1,"pitch":44,"program":24,"isDrum":false,"velocity":1},{"onset":2.85,"offset":3.1,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":2.85,"offset":3.1,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":2.86,"offset":3.12,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":2.87,"offset":3.12,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":3.1,"offset":3.3,"pitch":44,"program":24,"isDrum":false,"velocity":1},{"onset":3.11,"offset":3.3,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":3.11,"offset":3.28,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":3.12,"offset":3.27,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":3.12,"offset":3.26,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":3.29,"offset":3.46,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":3.29,"offset":3.46,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":3.3,"offset":3.45,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.45,"pitch":44,"program":24,"isDrum":false,"velocity":1},{"onset":3.31,"offset":3.44,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":3.65,"offset":4.49,"pitch":44,"program":24,"isDrum":false,"velocity":1},{"onset":3.66,"offset":4.49,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":3.66,"offset":4.095875,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":3.67,"offset":4.095875,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":4.18,"offset":4.46,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.45,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.44,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":4.2,"offset":4.48,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":4.47,"offset":4.72,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":4.73,"offset":4.99,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":4.74,"offset":5.11,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":5.12,"offset":5.31,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":5.13,"offset":5.34,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":5.14,"offset":5.32,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.14,"offset":5.33,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.49,"offset":5.67,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.49,"offset":5.69,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.5,"offset":5.68,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.5,"offset":5.69,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":5.51,"offset":5.66,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":5.87,"offset":6.05,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":5.88,"offset":6.06,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":5.89,"offset":6.06,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.89,"offset":6.06,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.25,"offset":6.42,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":6.25,"offset":6.43,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.26,"offset":6.4,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":6.27,"offset":6.41,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":6.4,"offset":6.66,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":6.41,"offset":6.65,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":6.42,"offset":6.68,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":6.43,"offset":6.68,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.66,"offset":6.89,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":6.67,"offset":6.89,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.87,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":6.68,"offset":6.88,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.04,"offset":7.29,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":7.04,"offset":7.3,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.05,"offset":7.31,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":7.06,"offset":7.31,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":7.45,"offset":7.59,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":7.45,"offset":7.59,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":7.57,"offset":7.75,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":7.58,"offset":7.74,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.59,"offset":7.73,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":7.59,"offset":7.71,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":7.72,"offset":7.89,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":7.97,"offset":8.19175,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":7.97,"offset":8.19175,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":7.98,"offset":8.3,"pitch":70,"program":24,"isDrum":false,"velocity":1},{"onset":8.38,"offset":8.61,"pitch":71,"program":24,"isDrum":false,"velocity":1},{"onset":8.78,"offset":9.2,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":8.79,"offset":9.18,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":8.8,"offset":9.18,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":8.81,"offset":9.18,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":8.82,"offset":9.18,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":9.18,"offset":9.37,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":9.18,"offset":9.38,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":9.19,"offset":9.4,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":9.19,"offset":9.39,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":9.2,"offset":9.4,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":9.7,"offset":10,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":9.71,"offset":9.83,"pitch":70,"program":24,"isDrum":false,"velocity":1},{"onset":9.83,"offset":9.99,"pitch":71,"program":24,"isDrum":false,"velocity":1},{"onset":10.11,"offset":10.2396875,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":10.12,"offset":10.2396875,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":10.13,"offset":10.2396875,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.14,"offset":10.2396875,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":10.47,"offset":10.65,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":10.47,"offset":10.65,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.48,"offset":10.66,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":10.89,"offset":11.11,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":10.9,"offset":11.1,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":10.91,"offset":11.1,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.92,"offset":11.1,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":10.93,"offset":11.1,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":11.3,"offset":11.66,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":11.31,"offset":11.66,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":11.31,"offset":11.66,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":11.32,"offset":11.66,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":11.33,"offset":11.67,"pitch":44,"program":24,"isDrum":false,"velocity":1},{"onset":11.68,"offset":11.93,"pitch":68,"program":24,"isDrum":false,"velocity":1},{"onset":11.69,"offset":11.91,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":11.7,"offset":11.92,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":11.71,"offset":11.92,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":11.72,"offset":11.91,"pitch":51,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"7f4101cf9df5af4614be3245eeea06ad2c4eb703721e28ddcbea275a19b4e77c","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/source/demo/web/public/examples/guitar-funk.wav b/source/demo/web/public/examples/guitar-funk.wav new file mode 100644 index 0000000000000000000000000000000000000000..93191e0db14028269c4d6ead4971ae3846dd90ee --- /dev/null +++ b/source/demo/web/public/examples/guitar-funk.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f4101cf9df5af4614be3245eeea06ad2c4eb703721e28ddcbea275a19b4e77c +size 384078 diff --git a/source/demo/web/public/examples/guitar-jazz-chords.json b/source/demo/web/public/examples/guitar-jazz-chords.json new file mode 100644 index 0000000000000000000000000000000000000000..de76c33f1c928d9bb9142a0c8db579c67fe863d2 --- /dev/null +++ b/source/demo/web/public/examples/guitar-jazz-chords.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.13,"offset":0.9,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":0.13,"offset":0.9,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":0.13,"offset":0.9,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.13,"offset":0.9,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":0.13,"offset":0.9,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.14,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.14,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.14,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.14,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":0.91,"offset":1.14,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":1.15,"offset":1.32,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":1.15,"offset":1.32,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":1.15,"offset":1.32,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":1.33,"offset":1.77,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":1.33,"offset":1.77,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":1.33,"offset":1.77,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":1.33,"offset":1.77,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":1.33,"offset":1.53,"pitch":71,"program":24,"isDrum":false,"velocity":1},{"onset":1.54,"offset":1.77,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":1.79,"offset":2.32,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":1.79,"offset":2.3,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":1.79,"offset":2.29,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":1.79,"offset":2.19,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":1.79,"offset":1.95,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":1.96,"offset":2.19,"pitch":74,"program":24,"isDrum":false,"velocity":1},{"onset":2.3,"offset":2.5,"pitch":74,"program":24,"isDrum":false,"velocity":1},{"onset":2.31,"offset":2.75,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":2.31,"offset":2.74,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":2.32,"offset":2.77,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":2.32,"offset":2.76,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":2.5,"offset":2.72,"pitch":72,"program":24,"isDrum":false,"velocity":1},{"onset":2.75,"offset":2.94,"pitch":71,"program":24,"isDrum":false,"velocity":1},{"onset":2.76,"offset":2.93,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":2.76,"offset":2.93,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.93,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":2.77,"offset":2.93,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":2.93,"offset":3.09,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":2.93,"offset":3.12,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":2.94,"offset":3.11,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":2.94,"offset":3.12,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":2.94,"offset":3.1,"pitch":71,"program":24,"isDrum":false,"velocity":1},{"onset":3.41,"offset":4.76,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":3.41,"offset":4.17,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":3.41,"offset":4.095875,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":3.42,"offset":4.12,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.13,"offset":4.67,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":4.14,"offset":4.79,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.15,"offset":4.77,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.16,"offset":4.35,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.17,"offset":4.37,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.36,"offset":4.76,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.37,"offset":4.76,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.76,"offset":5.45,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":4.76,"offset":5.44,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":4.77,"offset":5.4,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":4.78,"offset":5.41,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":4.79,"offset":4.98,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":4.79,"offset":4.97,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.42,"offset":5.62,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.63,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.43,"offset":5.64,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.44,"offset":5.65,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.45,"offset":5.66,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.62,"offset":5.81,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":5.64,"offset":5.82,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.64,"offset":5.82,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":5.65,"offset":5.98,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.66,"offset":5.99,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":5.96,"offset":6.41,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":5.97,"offset":6.43,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":5.98,"offset":6.45,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":5.99,"offset":6.143812500000001,"pitch":43,"program":24,"isDrum":false,"velocity":1},{"onset":6.42,"offset":6.88,"pitch":67,"program":24,"isDrum":false,"velocity":1},{"onset":6.44,"offset":6.69,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":6.44,"offset":6.86,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":6.45,"offset":6.68,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":6.87,"offset":8.19175,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":6.88,"offset":7.09,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":6.88,"offset":7.08,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":6.89,"offset":7.07,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":7.5,"offset":8.19175,"pitch":45,"program":24,"isDrum":false,"velocity":1},{"onset":7.5,"offset":8.21,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":7.51,"offset":8.21,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":7.52,"offset":7.96,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":7.53,"offset":7.95,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":8.28,"offset":8.6,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":8.28,"offset":8.7,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":8.29,"offset":8.61,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":8.3,"offset":8.62,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":8.31,"offset":8.62,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":8.76,"offset":9.85,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":8.77,"offset":8.92,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":8.78,"offset":8.93,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":8.79,"offset":8.93,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":9.21,"offset":9.85,"pitch":66,"program":24,"isDrum":false,"velocity":1},{"onset":9.22,"offset":9.44,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":9.4,"offset":9.83,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":9.41,"offset":9.83,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":9.41,"offset":9.82,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.11,"offset":10.35,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":10.12,"offset":10.34,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":10.13,"offset":10.34,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.14,"offset":10.33,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":10.15,"offset":10.2396875,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":10.33,"offset":10.53,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":10.33,"offset":10.54,"pitch":55,"program":24,"isDrum":false,"velocity":1},{"onset":10.34,"offset":10.54,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.34,"offset":10.53,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":10.35,"offset":10.54,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":10.56,"offset":10.77,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":10.57,"offset":10.78,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":10.57,"offset":10.78,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":10.58,"offset":10.78,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":10.58,"offset":10.78,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":10.78,"offset":10.89,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":10.79,"offset":10.9,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":10.79,"offset":10.9,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":10.8,"offset":10.81,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":10.81,"offset":10.87,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":10.9,"offset":11.11,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":10.9,"offset":11.11,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":10.91,"offset":11.11,"pitch":63,"program":24,"isDrum":false,"velocity":1},{"onset":10.91,"offset":10.92,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":10.92,"offset":11.11,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":11.13,"offset":11.24,"pitch":45,"program":24,"isDrum":false,"velocity":1},{"onset":11.14,"offset":11.25,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":11.15,"offset":11.25,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":11.15,"offset":11.25,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":11.16,"offset":11.25,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":11.16,"offset":11.25,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":11.25,"offset":11.71,"pitch":45,"program":24,"isDrum":false,"velocity":1},{"onset":11.26,"offset":11.71,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":11.26,"offset":11.71,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":11.26,"offset":11.71,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":11.27,"offset":11.71,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":11.27,"offset":11.71,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":11.71,"offset":11.95,"pitch":45,"program":24,"isDrum":false,"velocity":1},{"onset":11.72,"offset":11.95,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":11.73,"offset":11.95,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.95,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":11.74,"offset":11.95,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":11.75,"offset":11.95,"pitch":69,"program":24,"isDrum":false,"velocity":1},{"onset":11.96,"offset":12,"pitch":45,"program":24,"isDrum":false,"velocity":1},{"onset":11.97,"offset":12,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":11.98,"offset":12,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":11.98,"offset":12,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":11.99,"offset":12,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":11.99,"offset":12,"pitch":69,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"67c90694360355b8ce5e534b0321660fb367f2fb966340b36fb9e0556dd46b9c","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/source/demo/web/public/examples/guitar-jazz-chords.wav b/source/demo/web/public/examples/guitar-jazz-chords.wav new file mode 100644 index 0000000000000000000000000000000000000000..0a9595eba7b5171ca835d0774373f7b89a8d60b8 --- /dev/null +++ b/source/demo/web/public/examples/guitar-jazz-chords.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67c90694360355b8ce5e534b0321660fb367f2fb966340b36fb9e0556dd46b9c +size 384078 diff --git a/source/demo/web/public/examples/guitar-jazz-lead.json b/source/demo/web/public/examples/guitar-jazz-lead.json new file mode 100644 index 0000000000000000000000000000000000000000..078fbd104eef6b2ea0f7fc67e7ca51a333a2ae31 --- /dev/null +++ b/source/demo/web/public/examples/guitar-jazz-lead.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":10.4,"notes":[{"onset":0.82,"offset":1.09,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":1.09,"offset":1.21,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":1.23,"offset":1.38,"pitch":64,"program":24,"isDrum":false,"velocity":1},{"onset":1.4,"offset":1.69,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":1.71,"offset":1.85,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":1.87,"offset":2.0479375,"pitch":62,"program":24,"isDrum":false,"velocity":1},{"onset":2,"offset":2.3,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":2.31,"offset":2.45,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":2.46,"offset":2.6,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":2.61,"offset":2.9,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":2.91,"offset":3.05,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":3.06,"offset":3.2,"pitch":57,"program":24,"isDrum":false,"velocity":1},{"onset":3.21,"offset":3.51,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":3.53,"offset":3.76,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":3.8,"offset":4.095875,"pitch":52,"program":24,"isDrum":false,"velocity":1},{"onset":4.44,"offset":5.9,"pitch":47,"program":24,"isDrum":false,"velocity":1},{"onset":5.91,"offset":6.143812500000001,"pitch":46,"program":24,"isDrum":false,"velocity":1},{"onset":6.2,"offset":6.49,"pitch":47,"program":24,"isDrum":false,"velocity":1},{"onset":6.51,"offset":6.8,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":6.82,"offset":7.12,"pitch":50,"program":24,"isDrum":false,"velocity":1},{"onset":7.13,"offset":7.41,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":7.43,"offset":7.72,"pitch":47,"program":24,"isDrum":false,"velocity":1},{"onset":7.74,"offset":8.29,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":8.31,"offset":8.89,"pitch":47,"program":24,"isDrum":false,"velocity":1},{"onset":8.9,"offset":9.1,"pitch":44,"program":24,"isDrum":false,"velocity":1},{"onset":9.1,"offset":10.2396875,"pitch":42,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"1b239dfb01eb9460f8dd8807932f6ba0f1d4dc39dbfbd34c117a9bd67856709c","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/source/demo/web/public/examples/guitar-jazz-lead.wav b/source/demo/web/public/examples/guitar-jazz-lead.wav new file mode 100644 index 0000000000000000000000000000000000000000..934a26629fa0e121ed6add3e90add1677a5232f0 --- /dev/null +++ b/source/demo/web/public/examples/guitar-jazz-lead.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b239dfb01eb9460f8dd8807932f6ba0f1d4dc39dbfbd34c117a9bd67856709c +size 332878 diff --git a/source/demo/web/public/examples/guitar-rock.json b/source/demo/web/public/examples/guitar-rock.json new file mode 100644 index 0000000000000000000000000000000000000000..82ecb625d9445c3641b1a0e3b1964294b9cdf297 --- /dev/null +++ b/source/demo/web/public/examples/guitar-rock.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.17,"offset":0.36,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":0.35,"offset":0.67,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":0.51,"offset":0.7,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":0.69,"offset":1.01,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":0.85,"offset":1.03,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":1.02,"offset":1.35,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":1.18,"offset":1.52,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":1.36,"offset":1.68,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":1.53,"offset":1.84,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":1.7,"offset":2.02,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":1.85,"offset":2.16,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":1.86,"offset":2.18,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.03,"offset":2.31,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":2.18,"offset":2.32,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.18,"offset":2.47,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":2.18,"offset":2.47,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":2.32,"offset":2.64,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":2.33,"offset":2.49,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.49,"offset":2.8,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":2.49,"offset":2.8,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":2.5,"offset":2.65,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.65,"offset":2.97,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":2.66,"offset":2.82,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.82,"offset":3.14,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":2.82,"offset":3.14,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":2.83,"offset":2.98,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":2.98,"offset":3.32,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":2.99,"offset":3.15,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":3.16,"offset":3.48,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":3.16,"offset":3.48,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":3.17,"offset":3.33,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":3.33,"offset":3.65,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":3.34,"offset":3.49,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":3.5,"offset":3.81,"pitch":60,"program":24,"isDrum":false,"velocity":1},{"onset":3.5,"offset":3.81,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":3.51,"offset":3.66,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":3.66,"offset":3.98,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":3.67,"offset":3.83,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":3.84,"offset":3.99,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":3.84,"offset":3.99,"pitch":59,"program":24,"isDrum":false,"velocity":1},{"onset":3.84,"offset":3.99,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":4,"offset":4.33,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":4.01,"offset":4.18,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.01,"offset":5.33,"pitch":61,"program":24,"isDrum":false,"velocity":1},{"onset":4.01,"offset":4.095875,"pitch":65,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.34,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.19,"offset":4.49,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":4.35,"offset":4.65,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":4.36,"offset":4.51,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.51,"offset":4.66,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.51,"offset":4.82,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":4.67,"offset":4.98,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":4.68,"offset":4.83,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.84,"offset":4.99,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":4.84,"offset":5.15,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":5,"offset":5.32,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.01,"offset":5.16,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.33,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":5.17,"offset":5.33,"pitch":58,"program":24,"isDrum":false,"velocity":1},{"onset":5.34,"offset":5.49,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.34,"offset":5.48,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.5,"offset":5.65,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.5,"offset":5.66,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.67,"offset":5.83,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.68,"offset":5.82,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.84,"offset":5.97,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.84,"offset":5.98,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":5.99,"offset":6.13,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":5.99,"offset":6.14,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":6.3,"offset":6.54,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":6.3,"offset":6.54,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":6.61,"offset":6.93,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":6.61,"offset":6.93,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":6.95,"offset":7.32,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":6.95,"offset":7.32,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":7.33,"offset":7.48,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":7.33,"offset":7.48,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":7.49,"offset":7.62,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":7.49,"offset":7.62,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":7.64,"offset":8,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":7.64,"offset":8,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":8.01,"offset":8.3,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":8.31,"offset":8.91,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":8.31,"offset":8.91,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":8.98,"offset":9.3,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":8.99,"offset":9.31,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":9.32,"offset":9.63,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":9.32,"offset":9.63,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.95,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":9.64,"offset":9.95,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":9.96,"offset":10.29,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":9.97,"offset":10.2396875,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":10.3,"offset":10.61,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":10.3,"offset":10.61,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":10.63,"offset":10.91,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":10.64,"offset":10.9,"pitch":56,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.21,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":10.96,"offset":11.21,"pitch":54,"program":24,"isDrum":false,"velocity":1},{"onset":11.28,"offset":11.61,"pitch":49,"program":24,"isDrum":false,"velocity":1},{"onset":11.28,"offset":11.61,"pitch":53,"program":24,"isDrum":false,"velocity":1},{"onset":11.62,"offset":11.96,"pitch":51,"program":24,"isDrum":false,"velocity":1},{"onset":11.62,"offset":11.96,"pitch":54,"program":24,"isDrum":false,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"2b6ed704a6a1f5e10b8a664bc964e2848cb3e4c713df9b854df52ee471690bd8","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/source/demo/web/public/examples/guitar-rock.wav b/source/demo/web/public/examples/guitar-rock.wav new file mode 100644 index 0000000000000000000000000000000000000000..0e23c048c741d248b723b2e46ee45c6fa5c27805 --- /dev/null +++ b/source/demo/web/public/examples/guitar-rock.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b6ed704a6a1f5e10b8a664bc964e2848cb3e4c713df9b854df52ee471690bd8 +size 384078 diff --git a/source/demo/web/public/examples/slakh-band.json b/source/demo/web/public/examples/slakh-band.json new file mode 100644 index 0000000000000000000000000000000000000000..5d585dbc77b027af58e8c0127c7f6a0e6a5653c9 --- /dev/null +++ b/source/demo/web/public/examples/slakh-band.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0.13,"offset":3.54,"pitch":65,"program":2,"isDrum":false,"velocity":1},{"onset":0.47,"offset":3.2,"pitch":66,"program":2,"isDrum":false,"velocity":1},{"onset":0.82,"offset":2.52,"pitch":73,"program":2,"isDrum":false,"velocity":1},{"onset":2.52,"offset":4.095875,"pitch":73,"program":2,"isDrum":false,"velocity":1},{"onset":2.7,"offset":2.84,"pitch":51,"program":26,"isDrum":false,"velocity":1},{"onset":2.83,"offset":2.98,"pitch":54,"program":26,"isDrum":false,"velocity":1},{"onset":2.86,"offset":4.095875,"pitch":72,"program":2,"isDrum":false,"velocity":1},{"onset":2.96,"offset":3.1,"pitch":56,"program":26,"isDrum":false,"velocity":1},{"onset":3.09,"offset":3.17,"pitch":58,"program":26,"isDrum":false,"velocity":1},{"onset":3.2,"offset":4.095875,"pitch":66,"program":2,"isDrum":false,"velocity":1},{"onset":3.2,"offset":4.095875,"pitch":78,"program":2,"isDrum":false,"velocity":1},{"onset":3.23,"offset":3.41,"pitch":61,"program":26,"isDrum":false,"velocity":1},{"onset":3.36,"offset":3.55,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":3.52,"offset":4.095875,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":3.54,"offset":5.25,"pitch":65,"program":2,"isDrum":false,"velocity":1},{"onset":3.88,"offset":4.095875,"pitch":77,"program":2,"isDrum":false,"velocity":1},{"onset":4.24,"offset":4.41,"pitch":78,"program":88,"isDrum":false,"velocity":1},{"onset":4.24,"offset":4.41,"pitch":90,"program":88,"isDrum":false,"velocity":1},{"onset":4.58,"offset":4.75,"pitch":73,"program":88,"isDrum":false,"velocity":1},{"onset":4.58,"offset":4.75,"pitch":85,"program":88,"isDrum":false,"velocity":1},{"onset":4.92,"offset":5.09,"pitch":73,"program":88,"isDrum":false,"velocity":1},{"onset":4.92,"offset":5.09,"pitch":85,"program":88,"isDrum":false,"velocity":1},{"onset":5.25,"offset":5.59,"pitch":73,"program":2,"isDrum":false,"velocity":1},{"onset":5.25,"offset":5.43,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":5.26,"offset":5.43,"pitch":73,"program":88,"isDrum":false,"velocity":1},{"onset":5.26,"offset":5.43,"pitch":85,"program":88,"isDrum":false,"velocity":1},{"onset":5.43,"offset":6.42,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":5.59,"offset":8.66,"pitch":65,"program":2,"isDrum":false,"velocity":1},{"onset":5.6,"offset":5.77,"pitch":73,"program":88,"isDrum":false,"velocity":1},{"onset":5.6,"offset":5.77,"pitch":85,"program":88,"isDrum":false,"velocity":1},{"onset":5.94,"offset":6.1,"pitch":78,"program":88,"isDrum":false,"velocity":1},{"onset":5.94,"offset":6.1,"pitch":90,"program":88,"isDrum":false,"velocity":1},{"onset":6.27,"offset":7.97,"pitch":73,"program":2,"isDrum":false,"velocity":1},{"onset":6.27,"offset":7.63,"pitch":72,"program":26,"isDrum":false,"velocity":1},{"onset":6.27,"offset":6.61,"pitch":85,"program":88,"isDrum":false,"velocity":1},{"onset":6.61,"offset":6.95,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":6.61,"offset":6.95,"pitch":89,"program":88,"isDrum":false,"velocity":1},{"onset":6.95,"offset":8.19175,"pitch":78,"program":2,"isDrum":false,"velocity":1},{"onset":6.95,"offset":7.29,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":6.95,"offset":7.29,"pitch":90,"program":88,"isDrum":false,"velocity":1},{"onset":7.29,"offset":7.97,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":7.29,"offset":7.63,"pitch":89,"program":88,"isDrum":false,"velocity":1},{"onset":7.63,"offset":8.19175,"pitch":72,"program":26,"isDrum":false,"velocity":1},{"onset":7.63,"offset":7.97,"pitch":84,"program":88,"isDrum":false,"velocity":1},{"onset":7.97,"offset":8.19175,"pitch":72,"program":2,"isDrum":false,"velocity":1},{"onset":7.97,"offset":8.19175,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":7.97,"offset":8.19175,"pitch":73,"program":26,"isDrum":false,"velocity":1},{"onset":7.97,"offset":8.19175,"pitch":85,"program":88,"isDrum":false,"velocity":1},{"onset":8.31,"offset":8.65,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":8.65,"offset":8.99,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":8.66,"offset":10.36,"pitch":65,"program":2,"isDrum":false,"velocity":1},{"onset":8.99,"offset":9.34,"pitch":72,"program":26,"isDrum":false,"velocity":1},{"onset":9.34,"offset":10,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":9.67,"offset":9.68,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":9.84,"offset":9.85,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":10,"offset":10.28,"pitch":73,"program":26,"isDrum":false,"velocity":1},{"onset":10.01,"offset":10.02,"pitch":43,"program":128,"isDrum":true,"velocity":1},{"onset":10.36,"offset":10.68,"pitch":66,"program":2,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.71,"pitch":70,"program":2,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.7,"pitch":78,"program":2,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.71,"pitch":82,"program":2,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.7,"pitch":90,"program":2,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.7,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.71,"pitch":70,"program":26,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.69,"pitch":39,"program":32,"isDrum":false,"velocity":1},{"onset":10.36,"offset":10.37,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.36,"offset":10.37,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":10.36,"offset":10.37,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":10.7,"offset":11.37,"pitch":65,"program":2,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.37,"pitch":68,"program":2,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.38,"pitch":77,"program":2,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.38,"pitch":80,"program":2,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.38,"pitch":89,"program":2,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.38,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.36,"pitch":68,"program":26,"isDrum":false,"velocity":1},{"onset":10.7,"offset":11.38,"pitch":37,"program":32,"isDrum":false,"velocity":1},{"onset":10.7,"offset":10.709999999999999,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.7,"offset":10.709999999999999,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":11.04,"offset":11.049999999999999,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.04,"offset":11.049999999999999,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":58,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":63,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":66,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":75,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":78,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":82,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":87,"program":2,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":63,"program":26,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.99,"pitch":66,"program":26,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.98,"pitch":35,"program":32,"isDrum":false,"velocity":1},{"onset":11.38,"offset":11.39,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":11.38,"offset":11.39,"pitch":49,"program":128,"isDrum":true,"velocity":1},{"onset":11.72,"offset":11.73,"pitch":42,"program":128,"isDrum":true,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"f82c5c6507115ba2fab1a374c96a04d45933569c9d7299719758036b1ef14002","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/source/demo/web/public/examples/slakh-band.wav b/source/demo/web/public/examples/slakh-band.wav new file mode 100644 index 0000000000000000000000000000000000000000..196e7d7aa1bc74b3dae30a586e49cc37f2c17280 --- /dev/null +++ b/source/demo/web/public/examples/slakh-band.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f82c5c6507115ba2fab1a374c96a04d45933569c9d7299719758036b1ef14002 +size 384078 diff --git a/source/demo/web/public/examples/slakh-studio.json b/source/demo/web/public/examples/slakh-studio.json new file mode 100644 index 0000000000000000000000000000000000000000..6353cc877fc3968c075558de111f4447fedb4e05 --- /dev/null +++ b/source/demo/web/public/examples/slakh-studio.json @@ -0,0 +1 @@ +{"schema_version":1,"duration":12.0,"notes":[{"onset":0,"offset":0.01,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":0,"offset":0.01,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":0.02,"offset":2.76,"pitch":77,"program":16,"isDrum":false,"velocity":1},{"onset":0.02,"offset":2.77,"pitch":83,"program":16,"isDrum":false,"velocity":1},{"onset":0.02,"offset":2.76,"pitch":86,"program":16,"isDrum":false,"velocity":1},{"onset":0.25,"offset":0.26,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":0.5,"offset":0.51,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":0.75,"offset":1.22,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":0.75,"offset":0.76,"pitch":37,"program":128,"isDrum":true,"velocity":1},{"onset":0.75,"offset":0.76,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":0.75,"offset":0.76,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":1.22,"offset":1.5,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":1.25,"offset":1.26,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":1.48,"offset":1.99,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":1.49,"offset":1.5,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":1.5,"offset":1.9,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":1.96,"offset":2.0479375,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":2,"offset":2.24,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":2,"offset":2.01,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":2.25,"offset":2.76,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":2.25,"offset":2.76,"pitch":59,"program":0,"isDrum":false,"velocity":1},{"onset":2.25,"offset":2.53,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":2.25,"offset":2.77,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":2.25,"offset":2.48,"pitch":45,"program":32,"isDrum":false,"velocity":1},{"onset":2.25,"offset":2.26,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":2.25,"offset":2.26,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":2.25,"offset":2.26,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":2.5,"offset":2.72,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":2.5,"offset":2.75,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":2.72,"offset":3.04,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":2.75,"offset":2.98,"pitch":71,"program":0,"isDrum":false,"velocity":1},{"onset":2.75,"offset":2.97,"pitch":45,"program":32,"isDrum":false,"velocity":1},{"onset":2.76,"offset":2.7699999999999996,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":3,"offset":4.26,"pitch":52,"program":0,"isDrum":false,"velocity":1},{"onset":3,"offset":4.26,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":3,"offset":4.26,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":3,"offset":8.19175,"pitch":60,"program":26,"isDrum":false,"velocity":1},{"onset":3,"offset":4.095875,"pitch":60,"program":29,"isDrum":false,"velocity":1},{"onset":3,"offset":3.95,"pitch":36,"program":32,"isDrum":false,"velocity":1},{"onset":3,"offset":3.01,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":3,"offset":3.01,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":3.05,"offset":5.98,"pitch":72,"program":16,"isDrum":false,"velocity":1},{"onset":3.05,"offset":5.98,"pitch":76,"program":16,"isDrum":false,"velocity":1},{"onset":3.05,"offset":5.98,"pitch":79,"program":16,"isDrum":false,"velocity":1},{"onset":3.25,"offset":3.26,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":3.5,"offset":4.26,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":3.5,"offset":3.51,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":3.75,"offset":3.76,"pitch":37,"program":128,"isDrum":true,"velocity":1},{"onset":3.75,"offset":3.76,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":3.75,"offset":3.76,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":3.8,"offset":5.28,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":4.27,"offset":4.279999999999999,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":4.5,"offset":5.4,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":4.5,"offset":5.4,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":4.5,"offset":5.4,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":4.5,"offset":5.4,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":4.5,"offset":5.39,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":4.5,"offset":4.51,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":4.77,"offset":4.779999999999999,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":5.25,"offset":5.26,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":5.26,"offset":5.27,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":5.26,"offset":5.27,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":5.5,"offset":5.72,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":5.52,"offset":5.72,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":5.73,"offset":5.89,"pitch":69,"program":26,"isDrum":false,"velocity":1},{"onset":5.75,"offset":5.98,"pitch":45,"program":32,"isDrum":false,"velocity":1},{"onset":5.76,"offset":5.77,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":5.99,"offset":7.27,"pitch":67,"program":26,"isDrum":false,"velocity":1},{"onset":6,"offset":6.143812500000001,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":6,"offset":7.62,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":6,"offset":7.62,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":6,"offset":7.62,"pitch":67,"program":0,"isDrum":false,"velocity":1},{"onset":6,"offset":6.85,"pitch":36,"program":32,"isDrum":false,"velocity":1},{"onset":6,"offset":6.01,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":6.04,"offset":8.86,"pitch":72,"program":16,"isDrum":false,"velocity":1},{"onset":6.04,"offset":8.84,"pitch":76,"program":16,"isDrum":false,"velocity":1},{"onset":6.04,"offset":8.19175,"pitch":79,"program":16,"isDrum":false,"velocity":1},{"onset":6.25,"offset":6.26,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":6.51,"offset":6.52,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":6.75,"offset":7.27,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":6.75,"offset":7.27,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":6.75,"offset":6.76,"pitch":37,"program":128,"isDrum":true,"velocity":1},{"onset":6.75,"offset":6.76,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":6.76,"offset":6.77,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":7.26,"offset":7.27,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":7.27,"offset":7.54,"pitch":67,"program":26,"isDrum":false,"velocity":1},{"onset":7.27,"offset":7.54,"pitch":67,"program":29,"isDrum":false,"velocity":1},{"onset":7.49,"offset":7.5,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":7.5,"offset":8.08,"pitch":64,"program":26,"isDrum":false,"velocity":1},{"onset":7.5,"offset":8.08,"pitch":64,"program":29,"isDrum":false,"velocity":1},{"onset":7.5,"offset":8.35,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":7.5,"offset":7.51,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":7.62,"offset":8.69,"pitch":55,"program":0,"isDrum":false,"velocity":1},{"onset":7.62,"offset":8.69,"pitch":60,"program":0,"isDrum":false,"velocity":1},{"onset":7.62,"offset":8.69,"pitch":64,"program":0,"isDrum":false,"velocity":1},{"onset":7.99,"offset":8.26,"pitch":62,"program":26,"isDrum":false,"velocity":1},{"onset":7.99,"offset":8.27,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":8,"offset":8.01,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":8.25,"offset":8.76,"pitch":59,"program":26,"isDrum":false,"velocity":1},{"onset":8.25,"offset":8.76,"pitch":59,"program":29,"isDrum":false,"velocity":1},{"onset":8.25,"offset":8.26,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":8.25,"offset":8.26,"pitch":54,"program":128,"isDrum":true,"velocity":1},{"onset":8.49,"offset":8.71,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":8.72,"offset":9.02,"pitch":57,"program":26,"isDrum":false,"velocity":1},{"onset":8.72,"offset":9.03,"pitch":57,"program":29,"isDrum":false,"velocity":1},{"onset":8.74,"offset":8.97,"pitch":45,"program":32,"isDrum":false,"velocity":1},{"onset":8.74,"offset":8.75,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":9,"offset":10.2396875,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":9,"offset":10.2396875,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":9,"offset":10.2396875,"pitch":65,"program":0,"isDrum":false,"velocity":1},{"onset":9,"offset":9.76,"pitch":62,"program":26,"isDrum":false,"velocity":1},{"onset":9,"offset":10.2396875,"pitch":62,"program":29,"isDrum":false,"velocity":1},{"onset":9,"offset":10.03,"pitch":38,"program":32,"isDrum":false,"velocity":1},{"onset":9,"offset":9.01,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":9.01,"offset":11.82,"pitch":74,"program":16,"isDrum":false,"velocity":1},{"onset":9.01,"offset":11.84,"pitch":77,"program":16,"isDrum":false,"velocity":1},{"onset":9.25,"offset":9.26,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":9.5,"offset":9.51,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":9.75,"offset":9.76,"pitch":46,"program":128,"isDrum":true,"velocity":1},{"onset":9.75,"offset":9.76,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":9.76,"offset":11.98,"pitch":62,"program":26,"isDrum":false,"velocity":1},{"onset":9.8,"offset":9.81,"pitch":37,"program":128,"isDrum":true,"velocity":1},{"onset":10.25,"offset":10.26,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":10.5,"offset":11.74,"pitch":57,"program":0,"isDrum":false,"velocity":1},{"onset":10.5,"offset":11.74,"pitch":62,"program":0,"isDrum":false,"velocity":1},{"onset":10.5,"offset":11.74,"pitch":65,"program":0,"isDrum":false,"velocity":1},{"onset":10.5,"offset":11.36,"pitch":38,"program":32,"isDrum":false,"velocity":1},{"onset":10.5,"offset":10.51,"pitch":36,"program":128,"isDrum":true,"velocity":1},{"onset":10.5,"offset":10.51,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":10.54,"offset":11.27,"pitch":65,"program":26,"isDrum":false,"velocity":1},{"onset":11.01,"offset":11.02,"pitch":42,"program":128,"isDrum":true,"velocity":1},{"onset":11.01,"offset":11.02,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":11.25,"offset":11.26,"pitch":38,"program":128,"isDrum":true,"velocity":1},{"onset":11.25,"offset":11.26,"pitch":51,"program":128,"isDrum":true,"velocity":1},{"onset":11.27,"offset":11.98,"pitch":69,"program":26,"isDrum":false,"velocity":1},{"onset":11.5,"offset":11.75,"pitch":43,"program":32,"isDrum":false,"velocity":1},{"onset":11.75,"offset":11.98,"pitch":38,"program":32,"isDrum":false,"velocity":1},{"onset":11.75,"offset":11.76,"pitch":51,"program":128,"isDrum":true,"velocity":1}],"checkpoint_sha256":"3df08bb38dce7ae30be23090524b63755c565d1a3242860aef6c9401fc125bbe","audio_sha256":"e9715a960d306d3559f424a053a0cdf5b3f9b78c06e0d304f8265a56dd380e39","runtime":"Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder","truncated_windows":0} diff --git a/source/demo/web/public/examples/slakh-studio.wav b/source/demo/web/public/examples/slakh-studio.wav new file mode 100644 index 0000000000000000000000000000000000000000..15a87d30ebc092e71df33cc0e74ad566d6bf4b15 --- /dev/null +++ b/source/demo/web/public/examples/slakh-studio.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9715a960d306d3559f424a053a0cdf5b3f9b78c06e0d304f8265a56dd380e39 +size 384078 diff --git a/source/demo/web/public/soundfonts/GeneralUser_GS.sf2 b/source/demo/web/public/soundfonts/GeneralUser_GS.sf2 new file mode 100644 index 0000000000000000000000000000000000000000..888d540c52e092bd203ac907c723a19bc23b039a --- /dev/null +++ b/source/demo/web/public/soundfonts/GeneralUser_GS.sf2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9575028c7a1f589f5770fccc8cff2734566af40cd26ed836944e9a5152688cfe +size 32319396 diff --git a/source/demo/web/public/soundfonts/LICENSE.txt b/source/demo/web/public/soundfonts/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d5038809a722c40d07e3c7719adf4f5ba94f0aa4 --- /dev/null +++ b/source/demo/web/public/soundfonts/LICENSE.txt @@ -0,0 +1,23 @@ +*** License v2.0 *** + +** License of the complete work ** +You may use GeneralUser GS without restriction for your own music creation, private or commercial. This SoundFont bank is provided to the community free of charge. Please feel free to use it in your software projects, and to modify the SoundFont bank or its packaging to suit your needs. + +** License of contained samples ** +GeneralUser GS inherits the usage rights of the samples contained within, all of which allow full use in music production, including the ability to make profit from musical recordings created with GeneralUser GS. + +Many of the samples are original, but some were taken from other banks freely (and legally) available on the Internet from various SoundFont websites. Because GeneralUser GS originated as a personal project with no intention for publication, I cannot be 100% sure where all of the samples originated, although I do know that none of them came from commercially published SoundFont packages or sample CDs. Regardless, many "free" SoundFonts available on the web may indeed contain samples of questionable origin. My understanding of the copyrights of all samples is only as good as the information provided by the original sources. If you become aware of any restricted samples being used in GeneralUser GS, please let me know so I can replace them. + +This uncertainty may concern you if you intend to use GeneralUser GS in a commercial software product. That being said, I have never received any complaint regarding sample ownership since I published the original GeneralUser GS back in 2000, and as far as I am aware, neither have any of the companies creating commercial software products using GeneralUser GS. + +** More info ** +If you plan to feature GeneralUser GS on your own website, please do not link directly to my download files. Either link to my website, or provide your own local copy instead. + +I hope you enjoy GeneralUser GS! This SoundFont bank is the product of many years of hard work. + +You can find updates to GeneralUser GS and more of my virtual instruments at: http://www.schristiancollins.com + +I can be reached via the contact page on my website here: https://www.schristiancollins.com/contact + +Thank you! +-~Chris diff --git a/source/demo/web/src/audio.ts b/source/demo/web/src/audio.ts index 8808bf5e2b64dc29c9a35eb0081011984d2d07b3..f4eb08b89e4e9a7d6cb6dfb969cc22cd0947db2b 100644 --- a/source/demo/web/src/audio.ts +++ b/source/demo/web/src/audio.ts @@ -109,8 +109,10 @@ export class AudioEngine { private mix = 0.75; // 0 = full WAV, 1 = full MIDI /** When true: original audio hard-left, synthesis hard-right (mix ignored). */ private stereo = false; + private soundfontUrl: string; - constructor(options: { forceFallback?: boolean } = {}) { + constructor(options: { forceFallback?: boolean; soundfontUrl?: string } = {}) { + this.soundfontUrl = options.soundfontUrl ?? SOUNDFONT_URL; // Tone.getContext() lazily creates a (suspended) AudioContext — no user // gesture needed. The synth and soundfont can load while suspended; // we only need to call Tone.start() to *resume* it on the play click. @@ -147,8 +149,8 @@ export class AudioEngine { /** Load the worklet + soundfont, then flush notes queued in the meantime. */ private async initSynth() { // Fetch the soundfont concurrently with the worklet setup. - const soundfont = fetch(SOUNDFONT_URL).then((res) => { - if (!res.ok) throw new Error(`${SOUNDFONT_URL}: HTTP ${res.status}`); + const soundfont = fetch(this.soundfontUrl).then((res) => { + if (!res.ok) throw new Error(`${this.soundfontUrl}: HTTP ${res.status}`); return res.arrayBuffer(); }); // Tone wraps its AudioContext with standardized-audio-context, so the @@ -525,4 +527,8 @@ export class AudioEngine { get state(): "started" | "stopped" | "paused" { return Tone.getTransport().state; } + + get synthesisMode(): SynthMode { + return this.synthMode; + } } diff --git a/source/demo/web/src/local.tsx b/source/demo/web/src/local.tsx index 4fa8bd70ee2d9dea8024d6e23551443bb08c4f48..909856360e2f116e283950fba2c744dc163e9c29 100644 --- a/source/demo/web/src/local.tsx +++ b/source/demo/web/src/local.tsx @@ -1,329 +1,355 @@ -import { useEffect, useRef, useState } from "react"; +import { useEffect, useRef, useState, type CSSProperties } from "react"; import { createRoot } from "react-dom/client"; import "./style.css"; import "./local/local.css"; import { AudioEngine } from "./audio"; import { PianoRollCanvas } from "./components/PianoRollCanvas"; -import type { PianoRoll, RollNote } from "./pianoroll"; +import { IconPlay, IconPause, IconDownload } from "./components/icons"; +import { instrumentColor, type PianoRoll, type RollNote } from "./pianoroll"; import { decodeTrackTokens, instrumentName, type HendrixNote } from "./local/codec"; import { decodeAudio, sliceAudio, spectrogram, TARGET_SAMPLE_RATE } from "./local/dsp"; -import { notesToMidi } from "./local/midi"; import { LocalHendrixModel, probeLocalCapability, type LocalBackend, type LocalCapability } from "./local/model"; +import { notesToMidi } from "./local/midi"; +import { HeroNotes, IconMic, IconShield, IconUpload, MusicMark, Waveform } from "./local/visuals"; type RunState = "idle" | "loading" | "running" | "done" | "error"; +type Example = { + id: string; title: string; artist: string; category: string; collection: string; + audio_url: string; notes_url: string; duration: number; peaks: number[]; + license_name: string; license_url: string; source_url: string; +}; const isSpace = import.meta.env.VITE_HENDRIX_SPACE === "1"; -const precisionQuery = new URLSearchParams(window.location.search).get("precision"); +const query = new URLSearchParams(window.location.search); +const precisionQuery = query.get("precision"); const precisionOverride = precisionQuery === "fp32" || precisionQuery === "fp16" ? precisionQuery : undefined; -const cacheQuery = new URLSearchParams(window.location.search).get("cache"); -const gpuResidentOutputs = cacheQuery !== "cpu"; -const backendQuery = new URLSearchParams(window.location.search).get("backend"); -const preferredBackend: LocalBackend | undefined = backendQuery === "wasm" || backendQuery === "webgpu" - ? backendQuery - : undefined; +const gpuResidentOutputs = query.get("cache") !== "cpu"; +const backendQuery = query.get("backend"); +const preferredBackend: LocalBackend | undefined = backendQuery === "wasm" || backendQuery === "webgpu" ? backendQuery : undefined; +const categoryColors: Record = { + "Full band": "#efb58c", Guitar: "#a7c6b4", Electronic: "#b8a5df", Rock: "#e7a4a4", + Folk: "#d5c095", Pop: "#d9aacb", "Hip-Hop": "#acb8df", Instrumental: "#9ebec8", +}; +const instrumentLabels: Record = { + acoustic_piano: "Piano", electric_piano: "Electric piano", chromatic_percussion: "Percussion", + clean_electric_guitar: "Electric guitar", distorted_electric_guitar: "Electric guitar", + acoustic_guitar: "Acoustic guitar", string_ensemble: "Strings", singing_voice: "Voice", + singing_voice_chorus: "Choir", soprano_and_alto_sax: "Saxophone", flutes: "Flute", +}; +const labelFor = (name: string) => instrumentLabels[name] ?? name.replaceAll("_", " ").replace(/^./, c => c.toUpperCase()); +const timeLabel = (seconds: number) => `${Math.floor(seconds / 60)}:${Math.floor(seconds % 60).toString().padStart(2, "0")}`; +function waveformPeaks(values: Float32Array) { + const width = Math.max(1, Math.ceil(values.length / 56)); + const peaks = Array.from({ length: 56 }, (_, index) => { + let energy = 0, count = 0; + for (let i = index * width; i < Math.min(values.length, (index + 1) * width); i++) { energy += values[i] ** 2; count++; } + return Math.sqrt(energy / Math.max(1, count)); + }); + const maximum = Math.max(...peaks) || 1; + return peaks.map(value => (value / maximum) ** 0.65); +} function LocalApp() { const audioRef = useRef(null); - const audio = (audioRef.current ??= new AudioEngine({ forceFallback: true })); + const audio = (audioRef.current ??= new AudioEngine(isSpace + ? { soundfontUrl: "/soundfonts/GeneralUser_GS.sf2" } + : { forceFallback: true })); const rollRef = useRef(null); const modelRef = useRef(null); const abortRef = useRef(null); const recorderRef = useRef<{ recorder: MediaRecorder; stream: MediaStream; chunks: Blob[] } | null>(null); const [capability, setCapability] = useState(null); + const [examples, setExamples] = useState([]); + const [catalogError, setCatalogError] = useState(false); + const [category, setCategory] = useState("All"); + const [selectedExample, setSelectedExample] = useState(null); const [file, setFile] = useState(null); const [runState, setRunState] = useState("idle"); - const [status, setStatus] = useState("Choose a recording or make one here."); + const [status, setStatus] = useState("Choose a clip below, or bring your own recording."); const [progress, setProgress] = useState(0); const [notes, setNotes] = useState([]); const [midiUrl, setMidiUrl] = useState(null); - const [limitSeconds, setLimitSeconds] = useState(2.05); + const [limitSeconds, setLimitSeconds] = useState(12); + const [duration, setDuration] = useState(0); + const [peaks, setPeaks] = useState(Array(56).fill(0)); const [recording, setRecording] = useState(false); const [inputPending, setInputPending] = useState(false); const [diagnostics, setDiagnostics] = useState(""); + const [mix, setMix] = useState(0); + const [playing, setPlaying] = useState(false); + const [position, setPosition] = useState(0); + const [synthReady, setSynthReady] = useState(false); + const [muted, setMuted] = useState>(new Set()); + const [dragging, setDragging] = useState(false); const [, setUserScrolled] = useState(false); useEffect(() => { - probeLocalCapability(preferredBackend).then(setCapability).catch((error) => setCapability({ - supported: false, - adapter: "", - shaderF16: false, - backend: "wasm", - reason: String(error), + probeLocalCapability(preferredBackend).then(setCapability).catch(error => setCapability({ + supported: false, adapter: "", shaderF16: false, backend: "wasm", reason: String(error), })); }, []); - useEffect(() => { - let frame = 0; - const render = () => { + let active = true; + fetch("/examples/catalog.json").then(response => { + if (!response.ok) throw new Error("Example library unavailable"); + return response.json(); + }).then(async catalog => { + if (!active) return; + const sorted = [...catalog.examples].sort((a: Example, b: Example) => + Number(b.id === catalog.default_example) - Number(a.id === catalog.default_example)); + setExamples(sorted); + if (isSpace && sorted.length) await prepareInput(() => loadExample(sorted[0])); + }).catch(() => { if (active) setCatalogError(true); }); + return () => { active = false; }; + }, []); + useEffect(() => { audio.setMix(mix); }, [audio, mix]); + useEffect(() => { + let frame = 0, last = 0; + const render = (now: number) => { rollRef.current?.setPlayhead(audio.seconds); rollRef.current?.render(); + if (now - last > 80) { + setPosition(audio.seconds); + setPlaying(audio.state === "started"); + setSynthReady(audio.synthesisMode !== "loading"); + last = now; + } frame = requestAnimationFrame(render); }; frame = requestAnimationFrame(render); return () => cancelAnimationFrame(frame); }, [audio]); - useEffect(() => () => { abortRef.current?.abort(); - recorderRef.current?.stream.getTracks().forEach((track) => track.stop()); + recorderRef.current?.stream.getTracks().forEach(track => track.stop()); }, []); - - useEffect(() => () => { - if (midiUrl) URL.revokeObjectURL(midiUrl); - }, [midiUrl]); + useEffect(() => () => { if (midiUrl) URL.revokeObjectURL(midiUrl); }, [midiUrl]); function chooseFile(selected: File) { abortRef.current?.abort(); audio.reset(); rollRef.current?.clear(); - setFile(selected); - setNotes([]); - setProgress(0); - setRunState("idle"); - setDiagnostics(""); - setStatus(`${selected.name} stays on this device.`); - setMidiUrl(null); + setFile(selected); setSelectedExample(null); setNotes([]); setMuted(new Set()); + setDuration(0); setPeaks(Array(56).fill(0)); setProgress(0); setRunState("idle"); + setDiagnostics(""); setMidiUrl(null); + setStatus(`${selected.name} is ready. Your recording stays on this device.`); + } + function showNotes(predicted: HendrixNote[], seconds: number) { + setNotes(predicted); setDuration(seconds); setMuted(new Set()); + rollRef.current?.setDuration(seconds); + const canvas = document.querySelector(".roll-stage canvas"); + if (canvas && rollRef.current && seconds) { + rollRef.current.zoomTime((canvas.clientWidth - 56) / seconds / rollRef.current.pxPerSec, 56); + } + for (const note of predicted) { + const rollNote: RollNote = { pitch: note.pitch, start: note.onset, end: note.offset, instrument: instrumentName(note) }; + rollRef.current?.addNote(rollNote); + rollRef.current?.setNoteEnd(rollNote, note.offset); + audio.scheduleNote({ instrument: rollNote.instrument, pitch: note.pitch, start: note.onset, end: note.offset }); + } + if (seconds > 0) audio.scheduleStop(seconds); + setMidiUrl(URL.createObjectURL(notesToMidi(predicted))); + } + async function loadExample(example: Example, autoplay = false) { + if (autoplay) await audio.unlock(); + setStatus(`Opening ${example.title}…`); + const [source, prediction] = await Promise.all([fetch(example.audio_url), fetch(example.notes_url)]); + if (!source.ok || !prediction.ok) throw new Error("This clip could not load. Please try another."); + const [blob, prepared] = await Promise.all([source.blob(), prediction.json()]); + const chosen = new File([blob], `${example.title}.wav`, { type: "audio/wav" }); + chooseFile(chosen); + setSelectedExample(example); setLimitSeconds(12); setPeaks(example.peaks); + await audio.loadWav(chosen); + showNotes(prepared.notes, prepared.duration); + setRunState("done"); setProgress(1); + setStatus("Ready to listen. Press play, then blend the original recording with MIDI."); + if (autoplay) await audio.play(); + } + async function loadUpload(selected: File) { + chooseFile(selected); + await audio.loadWav(selected); + const seconds = Math.min(audio.duration, limitSeconds); + setDuration(seconds); + if (seconds > 0) audio.scheduleStop(seconds); + setMix(0); } - async function startRecording() { if (!navigator.mediaDevices?.getUserMedia || typeof MediaRecorder === "undefined") { throw new Error("Recording is unavailable in this browser. Choose an audio file instead."); } - const stream = await navigator.mediaDevices.getUserMedia({ - audio: { channelCount: 1, echoCancellation: false, noiseSuppression: false }, - }); + audio.pause(); + const stream = await navigator.mediaDevices.getUserMedia({ audio: { channelCount: 1, echoCancellation: false, noiseSuppression: false } }); let recorder: MediaRecorder; - try { - recorder = new MediaRecorder(stream); - } catch (error) { - stream.getTracks().forEach((track) => track.stop()); - throw error; - } + try { recorder = new MediaRecorder(stream); } catch (error) { stream.getTracks().forEach(track => track.stop()); throw error; } const state = { recorder, stream, chunks: [] as Blob[] }; recorderRef.current = state; - recorder.ondataavailable = (event) => { if (event.data.size) state.chunks.push(event.data); }; + recorder.ondataavailable = event => { if (event.data.size) state.chunks.push(event.data); }; recorder.onstop = () => { const blob = new Blob(state.chunks, { type: recorder.mimeType || "audio/mp4" }); - stream.getTracks().forEach((track) => track.stop()); - chooseFile(new File([blob], `hendrix-recording-${Date.now()}.${blob.type.includes("webm") ? "webm" : blob.type.includes("ogg") ? "ogg" : "m4a"}`, { type: blob.type })); - recorderRef.current = null; - setRecording(false); + stream.getTracks().forEach(track => track.stop()); + recorderRef.current = null; setRecording(false); + void prepareInput(() => loadUpload(new File([blob], `Your recording.${blob.type.includes("webm") ? "webm" : blob.type.includes("ogg") ? "ogg" : "m4a"}`, { type: blob.type }))); }; - try { - recorder.start(250); - } catch (error) { - stream.getTracks().forEach((track) => track.stop()); - recorderRef.current = null; - throw error; - } - setRecording(true); - setStatus("Recording locally… tap Stop when you have enough audio."); - } - - function stopRecording() { - recorderRef.current?.recorder.stop(); + try { recorder.start(250); } catch (error) { stream.getTracks().forEach(track => track.stop()); recorderRef.current = null; throw error; } + setRecording(true); setStatus("Recording… stop when you have enough audio."); } - async function loadDiagnosticClip() { - setStatus("Loading the known two-second check clip…"); const response = await fetch("/diagnostic.wav", { cache: "no-cache" }); if (!response.ok) throw new Error(`Diagnostic clip: HTTP ${response.status}`); chooseFile(new File([await response.blob()], "hendrix-known-check.wav", { type: "audio/wav" })); setLimitSeconds(2.05); } - async function prepareInput(action: () => Promise) { setInputPending(true); - try { - await action(); - } catch (error) { - setRunState("error"); - setStatus(error instanceof Error ? error.message : String(error)); - } finally { - setInputPending(false); - } + try { await action(); } catch (error) { + setRunState("error"); setStatus(error instanceof Error ? error.message : String(error)); + } finally { setInputPending(false); } } - async function transcribe() { if (!file || !capability?.supported) return; const controller = new AbortController(); - abortRef.current?.abort(); - abortRef.current = controller; - setRunState("loading"); - setProgress(0); - setDiagnostics(""); - setNotes([]); - setMidiUrl(null); - audio.reset(); - rollRef.current?.clear(); + abortRef.current?.abort(); abortRef.current = controller; + setRunState("loading"); setProgress(0); setDiagnostics(""); setNotes([]); setMidiUrl(null); setMuted(new Set()); + audio.reset(); rollRef.current?.clear(); await audio.unlock().catch(() => {}); - // Await playback decoding too, so it cannot mutate the next run after cancel. const playbackReady = audio.loadWav(file).catch(() => {}); const started = performance.now(); try { - setStatus("Decoding and resampling audio on this device…"); + setStatus("Reading your recording…"); const [decoded] = await Promise.all([decodeAudio(file, limitSeconds), playbackReady]); controller.signal.throwIfAborted(); const kept = decoded.subarray(0, Math.min(decoded.length, Math.round(limitSeconds * TARGET_SAMPLE_RATE))); - const duration = kept.length / TARGET_SAMPLE_RATE; + const seconds = kept.length / TARGET_SAMPLE_RATE; + setPeaks(waveformPeaks(kept)); setDuration(seconds); const windows = sliceAudio(kept); if (!modelRef.current) { - modelRef.current = await LocalHendrixModel.create( - "/models", - (message) => { if (!controller.signal.aborted) setStatus(message); }, - precisionOverride, - gpuResidentOutputs, - capability.backend, - ); + modelRef.current = await LocalHendrixModel.create("/models", message => { + if (!controller.signal.aborted) setStatus(isSpace ? "Preparing Hendrix for your first transcription…" : message); + }, precisionOverride, gpuResidentOutputs, capability.backend); } controller.signal.throwIfAborted(); const model = modelRef.current; setRunState("running"); - const tokenWindows: number[][][] = []; - const runDiagnostics: string[] = []; + const tokenWindows: number[][][] = [], runDiagnostics: string[] = []; for (let index = 0; index < windows.length; index++) { - if (controller.signal.aborted) throw new DOMException("Cancelled", "AbortError"); - setStatus(`Transcribing window ${index + 1} of ${windows.length} on ${model.adapter}…`); - setProgress(index / windows.length); - const features = spectrogram(windows[index]); - const result = await model.transcribeSegment(features, controller.signal); controller.signal.throwIfAborted(); - tokenWindows.push(result.channels); + setStatus(`Finding notes… ${Math.round(index / windows.length * 100)}%`); + setProgress(index / windows.length); + const result = await model.transcribeSegment(spectrogram(windows[index]), controller.signal); + controller.signal.throwIfAborted(); tokenWindows.push(result.channels); const detail = result.diagnostics; - runDiagnostics.push( - `w${index + 1} ${detail.precision}/${detail.logitsArray} backend=${detail.backend} cache=${detail.cacheLocation} steps=${detail.steps} eos=${detail.endedChannels}/13 encoder=${detail.encoderMs.toFixed(0)}ms cross=${detail.crossCacheMs.toFixed(0)}ms decoder=${detail.decoderMs.toFixed(0)}ms finite=${detail.finiteLogits}/${detail.totalLogits} first=${detail.firstTokens.join(",")} ch0=${detail.channelPreviews[0].join(",")}`, - ); + runDiagnostics.push(`w${index + 1} ${detail.precision}/${detail.logitsArray} backend=${detail.backend} cache=${detail.cacheLocation} steps=${detail.steps} eos=${detail.endedChannels}/13 encoder=${detail.encoderMs.toFixed(0)}ms cross=${detail.crossCacheMs.toFixed(0)}ms decoder=${detail.decoderMs.toFixed(0)}ms finite=${detail.finiteLogits}/${detail.totalLogits} first=${detail.firstTokens.join(",")} ch0=${detail.channelPreviews[0].join(",")}`); setProgress((index + 1) / windows.length); } - setStatus("Turning tokens into notes…"); - const decodedNotes = decodeTrackTokens( - tokenWindows, - model.manifest.runtime_contract.segment_seconds, - duration, - ); - setNotes(decodedNotes); - rollRef.current?.setDuration(duration); - for (const note of decodedNotes) { - const rollNote: RollNote = { - pitch: note.pitch, - start: note.onset, - end: note.offset, - instrument: instrumentName(note), - }; - rollRef.current?.addNote(rollNote); - rollRef.current?.setNoteEnd(rollNote, note.offset); - audio.scheduleNote({ - instrument: rollNote.instrument, - pitch: rollNote.pitch, - start: rollNote.start, - end: rollNote.end, - }); - } - if (duration > 0) audio.scheduleStop(duration + 0.3); - const midi = notesToMidi(decodedNotes); - setMidiUrl(URL.createObjectURL(midi)); + const decodedNotes = decodeTrackTokens(tokenWindows, model.manifest.runtime_contract.segment_seconds, seconds); + showNotes(decodedNotes, seconds); const elapsed = (performance.now() - started) / 1000; setDiagnostics(runDiagnostics.join(" | ")); - setStatus(`${decodedNotes.length} notes from ${duration.toFixed(1)} s of audio in ${elapsed.toFixed(1)} s. Audio never left this device.`); - setRunState("done"); + setStatus(`${decodedNotes.length} notes from ${seconds.toFixed(1)} s of audio in ${elapsed.toFixed(1)} s. Audio never left this device.`); + setRunState("done"); setMix(0.5); } catch (error) { - if (controller.signal.aborted) { - setRunState("idle"); - setStatus("Cancelled."); - } else { - console.error(error); - setRunState("error"); - setStatus(error instanceof Error ? error.message : String(error)); - } - } finally { - if (abortRef.current === controller) abortRef.current = null; - } + if (controller.signal.aborted) { setRunState("idle"); setStatus("Cancelled."); } + else { console.error(error); setRunState("error"); setStatus(error instanceof Error ? error.message : String(error)); } + } finally { if (abortRef.current === controller) abortRef.current = null; } } - - function cancel() { - abortRef.current?.abort(); - setStatus("Cancelling… waiting for the current browser operation to finish."); + function toggleInstrument(name: string) { + const next = new Set(muted); + if (next.has(name)) next.delete(name); else next.add(name); + setMuted(next); audio.setInstrumentMuted(name, next.has(name)); + rollRef.current?.setInstrumentMuted(name, next.has(name)); } - const families = Array.from(new Set(notes.map(instrumentName))).sort(); const busy = runState === "loading" || runState === "running"; const inputLocked = busy || recording || inputPending; + const ready = runState === "done"; + const title = selectedExample?.title ?? file?.name.replace(/\.[^.]+$/, "") ?? "Your music, in a new form"; + const visibleExamples = examples.filter(example => category === "All" || example.category === category); - return ( -
-
- {isSpace ? "HENDRIX / AUDIO TO MIDI" : "HENDRIX / LOCAL LAB"} -

{isSpace ? <>Audio to MIDI.
On your device. : <>46M parameters.
No server.}

-

29× fewer learned parameters than MuScriptor-large. The D26 research checkpoint runs here with WebGPU or a CPU fallback. Pick a file or record here; the page turns it into notes without an upload.

-
- -
- - {capability === null ? "Checking this browser…" : capability.supported - ? `${capability.adapter} · ${precisionOverride === "fp16" ? "FP16 diagnostic · 100.1 MB" : "FP32 verified · 195.3 MB"}` - : capability.reason} -
- -
-
- - - {!recording ? ( - - ) : ( - - )} - + return
+ +
+

MUSIC TRANSCRIPTION, WITHOUT THE UPLOAD

Hear the music.
See the notes.

+

Turn a recording into editable MIDI. Hear what Hendrix finds, blend it with the original, and make it your own.

+
sound → notes → your next idea
+
+
{ event.preventDefault(); if (!inputLocked) setDragging(true); }} onDragLeave={() => setDragging(false)} + onDrop={event => { event.preventDefault(); setDragging(false); const dropped = event.dataTransfer.files[0]; if (dropped && !inputLocked) void prepareInput(() => loadUpload(dropped)); }}> +
Bring your own music

Drop an audio file here. MP3, WAV, M4A, and more.

+
+
+
+ +
+

{selectedExample ? selectedExample.category : "YOUR RECORDING"}

{title}

+

{selectedExample?.artist ?? (file ? file.name : "Choose an example or an audio file to get started.")}

+ {midiUrl && Download MIDI} +
+
{ready ? `${notes.length} notes · ${families.length} instruments` : "Your notes will appear here"}PIANO ROLL
+
+ {!notes.length &&
{busy ? "Listening for notes…" : ready ? "No notes found in this clip" : "From sound to something you can play."}{busy ? "Hendrix is working on your device." : "Choose a clip to see its notes here."}
}
-
{file ? file.name : "No recording chosen"}
-
- - {busy && } +
{families.map(name => )}{!families.length && Instrument colors appear with your transcription.}
+
+
+ {timeLabel(Math.min(position, duration))} +
+ audio.seek(Number(event.target.value))} />
{timeLabel(duration)} + +
+
Hear the difference{Math.round((1 - mix) * 100)}% original / {Math.round(mix * 100)}% MIDI
+
+ setMix(Number(event.target.value))} /> +
+

{ready ? "Drag while playing to move between the recording and its transcription." : "Transcribe your recording to compare it with MIDI."}{isSpace && !synthReady && " Instrument sounds are loading…"}

+
-

Start with two seconds. The first run downloads a 195.3 MB model and prepares it; speed varies by device.

-
+
+ + {busy && } + {!isSpace && } +
+ {busy &&
}

{status}

- {diagnostics &&
Run details

{diagnostics}

} +

Your first live transcription downloads the 195 MB model. Examples are ready without it.

+
- - {notes.length > 0 && ( -
-
{notes.length}notes
-
{families.length}families
- - {midiUrl && Download MIDI} -
- )} - -
- - {notes.length === 0 &&
Your notes will appear here
} -
- - -
- ); +
+
hendrix.

Music in. Editable notes out.

+

Runs in your browser. Your recordings stay with you.

Predictions may miss notes or get an instrument or note length wrong. Listen, edit, and make it yours.

+
About this demo

{capability?.supported ? `${capability.adapter} · Hendrix · 195 MB model` : capability?.reason ?? "Checking your browser…"}

+

Example notes are prepared Hendrix predictions. Choose “Transcribe again” to run the model on your device. MIDI plays through the GeneralUser GS instrument library by S. Christian Collins.

+ {diagnostics &&
Transcription details

{diagnostics}

} + +
+
+
; } - createRoot(document.getElementById("root")!).render(); diff --git a/source/demo/web/src/local/local.css b/source/demo/web/src/local/local.css index da03c1ecec370a22adf6d33a10898e3f37a9d2e0..25a3be922e4e27060a23d83efee56aad53e67d4b 100644 --- a/source/demo/web/src/local/local.css +++ b/source/demo/web/src/local/local.css @@ -1,51 +1,207 @@ :root { color-scheme: dark; } -body { margin: 0; background: #090a0d; color: #f2f0e9; } -.local-shell { width: min(1120px, calc(100% - 28px)); margin: 0 auto; padding: max(24px, env(safe-area-inset-top)) 0 56px; display: grid; gap: 18px; font-family: Inter, ui-sans-serif, system-ui, sans-serif; } -.local-hero { padding: clamp(24px, 6vw, 72px) 4px 20px; border-bottom: 1px solid #30323a; } -.local-kicker { color: #ff627d; letter-spacing: .18em; font-size: 12px; font-weight: 800; text-decoration: none; } -.local-hero h1 { margin: 14px 0; max-width: 850px; font-family: Georgia, serif; font-size: clamp(54px, 11vw, 124px); font-weight: 500; letter-spacing: -.06em; line-height: .82; } -.local-hero p { max-width: 700px; margin: 26px 0 0; color: #b7bac4; font-size: clamp(16px, 2vw, 21px); line-height: 1.5; } -.local-card { border: 1px solid #2d3038; border-radius: 16px; background: #111319; box-shadow: inset 0 1px rgba(255,255,255,.04); } -.capability-card { display: flex; align-items: center; gap: 10px; padding: 14px 18px; color: #c7cad2; font-size: 13px; } -.status-dot { width: 9px; height: 9px; border-radius: 50%; background: #ff627d; box-shadow: 0 0 14px #ff627d88; } -.status-dot.ready { background: #70e09b; box-shadow: 0 0 14px #70e09b88; } -.input-card { padding: clamp(18px, 4vw, 34px); } -.file-row, .action-row, .result-bar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; } -.primary-button, .secondary-button, .record-button { appearance: none; border-radius: 999px; border: 1px solid transparent; padding: 12px 18px; font: inherit; font-weight: 750; text-decoration: none; cursor: pointer; } -.primary-button { color: #090a0d; background: #f2f0e9; } -.secondary-button { color: #f2f0e9; background: #1b1e25; border-color: #3a3e48; } -.record-button { color: white; background: #d83455; animation: pulse-record 1.3s infinite; } -button:disabled, .primary-button:has(input:disabled) { cursor: not-allowed; opacity: .38; } -.limit-label { display: flex; gap: 8px; align-items: center; margin-left: auto; color: #9da1ac; font-size: 13px; } -.limit-label select { border: 1px solid #3a3e48; border-radius: 8px; background: #171920; color: white; padding: 8px; } -.chosen-file { margin: 22px 0; overflow: hidden; color: #f2f0e9; font-family: ui-monospace, monospace; text-overflow: ellipsis; white-space: nowrap; } -.progress-track { height: 5px; margin-top: 22px; overflow: hidden; border-radius: 9px; background: #262933; } -.progress-track > div { height: 100%; background: linear-gradient(90deg, #ff5577, #f3b65c); transition: width .2s ease; } -.run-status { min-height: 1.5em; margin: 12px 0 0; color: #aeb1bb; font-size: 14px; } -.run-status.error { color: #ff8ca0; } -.diagnostic-output { overflow-wrap: anywhere; margin: 10px 0 0; color: #858994; font: 11px/1.5 ui-monospace, monospace; } -.result-bar { padding: 16px 18px; border: 1px solid #2d3038; border-radius: 16px; background: #111319; } -.result-bar > div { min-width: 80px; } -.result-bar strong { display: block; font-family: Georgia, serif; font-size: 30px; font-weight: 500; } -.result-bar span { color: #8f939e; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; } -.result-bar button { margin-left: auto; } -.roll-stage { position: relative; } -.roll-empty { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: max-content; max-width: 80%; padding: 11px 16px; border: 1px solid #3a3e48; border-radius: 999px; background: #111319e8; color: #b7bac4; font-size: 13px; pointer-events: none; } -.local-footer { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 16px 36px; padding: 8px 4px 0; color: #858994; font-size: 12px; line-height: 1.5; } -.local-footer p { max-width: 650px; margin: 0; } -.local-footer-links { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px 16px; max-width: 380px; } -.local-footer a { color: #d9dce5; text-decoration-color: #626670; text-underline-offset: 3px; } -@keyframes pulse-record { 50% { box-shadow: 0 0 0 7px #d8345522; } } -@media (max-width: 640px) { - .local-shell { width: min(100% - 20px, 1120px); } - .local-hero h1 { font-size: 58px; } - .limit-label { width: 100%; margin: 8px 0 0; } - .result-bar button { margin-left: 0; } - .local-footer { grid-template-columns: 1fr; } - .local-footer-links { justify-content: flex-start; } +body { margin: 0; background: #111216; color: #f4f0e9; } +.local-shell { --ink: #f4f0e9; --muted: #9b9ba5; --peach: #efb58c; --line: #ffffff12; width: min(1240px, calc(100% - 64px)); margin: 0 auto; padding: 26px 0 36px; font-family: "Hanken Grotesk", Inter, ui-sans-serif, system-ui, sans-serif; } +.local-shell button, .local-shell input, .local-shell select { font: inherit; } +.demo-nav { display: flex; justify-content: space-between; align-items: center; gap: 24px; } +.demo-brand { display: inline-flex; gap: 10px; align-items: center; color: var(--ink); font-size: 26px; font-weight: 750; letter-spacing: -1.5px; text-decoration: none; } +.demo-brand svg { width: 30px; height: 30px; color: var(--peach); } +.brand-period { color: var(--peach); } +.demo-nav > div { display: flex; align-items: center; gap: 28px; font-size: 12px; } +.demo-nav a:not(.demo-brand) { text-decoration: none; color: #c3c1c7; } +.demo-nav a:hover { color: var(--peach); } +.privacy-pill { display: inline-flex; gap: 7px; align-items: center; color: #b1c4b8; padding: 8px 11px; border: 1px solid #a7c6b41f; border-radius: 999px; background: #a7c6b408; font-size: 11px; } +.privacy-pill svg { width: 14px; height: 14px; } +.local-hero { display: flex; align-items: center; justify-content: space-between; gap: 44px; padding: 54px 0 34px; } +.eyebrow { color: #a5a0a5; font-size: 9px; letter-spacing: .18em; font-weight: 700; margin: 0 0 12px; } +.local-hero h1 { font-family: Georgia, "Times New Roman", serif; font-size: clamp(42px, 5.1vw, 66px); font-weight: 400; letter-spacing: -.055em; line-height: 1.02; margin: 0; } +.local-hero h1 em { font-weight: 400; color: var(--peach); } +.local-hero > div > p:last-child { max-width: 470px; color: #b8b4bc; font-size: 14px; line-height: 1.7; margin: 18px 0 0; } +.hero-art { width: 290px; padding: 12px 20px 0; flex: 0 0 330px; } +.hero-notes { display: block; width: 100%; color: #b4b1bc; } +.hero-art > span { display: block; margin-top: 20px; text-align: center; color: #a39daa; font-size: 10px; letter-spacing: .08em; } +.hero-art > span > span { padding: 0 12px; color: var(--peach); } +.upload-panel { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 20px 24px; background: #191a1f; border: 1px dashed #ffffff24; border-radius: 14px; margin-bottom: 30px; transition: border-color .15s, background .15s; } +.upload-panel.dragging { border-color: var(--peach); background: #30251f; } +.upload-copy { display: flex; align-items: center; gap: 16px; } +.upload-icon { width: 44px; height: 44px; display: grid; place-items: center; border: 1px solid #ffffff10; border-radius: 12px; color: #c4b7ab; background: #ffffff03; flex: 0 0 auto; } +.upload-icon svg { width: 20px; height: 20px; } +.upload-copy strong { font-size: 14px; font-weight: 600; } +.upload-copy p { font-size: 11px; color: var(--muted); margin: 5px 0 0; } +.upload-actions { display: flex; gap: 9px; flex: 0 0 auto; } +.primary-button, .secondary-button, .record-button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; appearance: none; padding: 10px 15px; border-radius: 8px; font-size: 12px !important; font-weight: 650 !important; cursor: pointer; text-decoration: none; } +.primary-button { background: var(--peach); color: #22170f; border: 1px solid var(--peach); } +.primary-button:hover { background: #f4c29e; } +.secondary-button { background: #ffffff04; border: 1px solid #ffffff1c; color: #ddd6d2; } +.record-button { background: #ae4857; color: white; animation: pulse-record 1.3s infinite; } +.primary-button svg, .secondary-button svg, .record-button svg { width: 14px; height: 14px; } +button:disabled, .primary-button:has(input:disabled) { cursor: not-allowed; opacity: .4; } +.demo-workspace { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 28px; align-items: start; } +.example-library { min-width: 0; scroll-margin-top: 20px; } +.library-heading { display: flex; justify-content: space-between; align-items: center; gap: 10px; } +.library-heading .eyebrow { font-size: 8px; margin-bottom: 7px; } +.library-heading h2 { margin: 0; font-family: Georgia, serif; font-size: 22px; line-height: 1.2; font-weight: 400; letter-spacing: -.03em; } +.example-count { flex: 0 0 auto; color: #c3bbca; background: #ffffff07; border: 1px solid #ffffff10; font-size: 9px; border-radius: 5px; padding: 4px 6px; } +.library-intro { margin: 10px 0 16px; font-size: 11px; color: var(--muted); line-height: 1.55; } +.category-tabs { display: flex; gap: 5px; flex-wrap: wrap; margin-bottom: 16px; } +.category-tabs button { padding: 5px 9px; font-size: 10px; border-radius: 999px; border-color: transparent; background: transparent; color: #9b96a2; } +.category-tabs button[aria-pressed="true"] { background: #efb58c17; color: #e8bd9f; border-color: #efb58c28; } +.example-list { display: grid; gap: 6px; max-height: 553px; overflow-y: auto; padding-right: 5px; scrollbar-width: thin; scrollbar-color: #ffffff20 transparent; } +.example-card { position: relative; display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; border: 1px solid transparent; border-radius: 10px; padding: 11px 9px; background: #ffffff02; color: #eee9e3; min-height: 86px; } +.example-card:hover { background: #ffffff06; border-color: #ffffff15; } +.example-card.selected { background: #efb58c09; border-color: #efb58c34; } +.clip-art { flex: 0 0 44px; height: 48px; padding: 7px; border-radius: 8px; background: color-mix(in srgb, var(--clip-color) 13%, #1b1a20); color: var(--clip-color); display: grid; align-items: center; } +.clip-art svg { width: 100%; height: 25px; } +.clip-info { min-width: 0; display: flex; flex-direction: column; gap: 4px; flex: 1; } +.clip-info strong { font-size: 11px; font-weight: 600; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } +.clip-info > span { font-size: 9px; color: #9f99a3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.clip-info .clip-tags { font-size: 8px; color: var(--clip-color); } +.clip-tags > span { padding: 0 6px; color: #77717d; } +.clip-open { color: var(--clip-color); opacity: .8; flex: 0 0 10px; } +.clip-open svg { width: 10px; height: 10px; } +.library-note { margin: 15px 4px 0 0; font-size: 9px; line-height: 1.6; color: #8a8490; } +.library-note a { color: #b7adb9; display: inline-block; text-decoration: none; margin-top: 4px; } +.library-empty { color: #c7bfcb; font-size: 12px; line-height: 1.6; } +.listening-room { min-width: 0; border: 1px solid #ffffff17; background: #191a20; border-radius: 16px; overflow: hidden; box-shadow: 0 12px 48px #00000012; } +.track-header { padding: 23px 24px 18px; display: flex; align-items: center; gap: 24px; justify-content: space-between; } +.track-header > div { min-width: 0; } +.track-header .eyebrow { color: var(--peach); font-size: 8px; margin-bottom: 8px; } +.track-header h2 { font-family: Georgia, serif; font-size: 26px; line-height: 1.15; font-weight: 400; letter-spacing: -.025em; margin: 0; } +.chosen-file { color: var(--muted); font-size: 11px; margin: 8px 0 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.download-button { display: inline-flex; align-items: center; gap: 7px; font-size: 11px; color: #e1d3c6; border: 1px solid #ffffff22; border-radius: 7px; padding: 9px 11px; white-space: nowrap; text-decoration: none; } +.download-button svg { width: 13px; height: 13px; } +.download-button:hover { color: var(--peach); border-color: #efb58c66; } +.roll-toolbar { display: flex; align-items: center; justify-content: space-between; padding: 11px 23px; border-top: 1px solid var(--line); background: #ffffff02; } +.roll-toolbar > span:last-child { font-size: 8px; letter-spacing: .14em; color: #706b78; } +.roll-label { display: flex; align-items: center; gap: 7px; color: #b6b0bd; font-size: 10px; } +.status-dot { width: 5px; height: 5px; background: #77717c; border-radius: 50%; } +.status-dot.ready { background: #a5c6b4; box-shadow: 0 0 7px #a5c6b433; } +.roll-stage { position: relative; padding: 0 12px; background: #0e0f13; } +.roll-stage section { border: none; border-radius: 0; box-shadow: none; animation: none; } +.roll-stage canvas { height: 282px; } +.roll-empty { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; pointer-events: none; background: #0e0f13c4; padding: 20px; } +.roll-empty svg { max-width: 200px; margin-bottom: 22px; opacity: .6; } +.roll-empty strong { color: #d6cfda; font-size: 13px; font-weight: 500; } +.roll-empty span { color: #8d8794; font-size: 11px; margin-top: 7px; } +.instrument-row { display: flex; flex-wrap: wrap; align-items: center; gap: 5px 8px; padding: 10px 20px; min-height: 37px; border-bottom: 1px solid var(--line); background: #14151a; } +.instrument-row button { display: inline-flex; align-items: center; gap: 5px; background: transparent; border-color: transparent; color: #b2abba; font-size: 9px; padding: 3px 5px; border-radius: 4px; } +.instrument-row button[aria-pressed="false"] { opacity: .4; text-decoration: line-through; } +.instrument-row i { width: 5px; height: 5px; border-radius: 50%; } +.instrument-row > span { font-size: 10px; color: #77717f; } +.player { padding: 15px 24px 17px; } +.transport-row { display: flex; align-items: center; gap: 12px; } +.play-button { display: grid; place-items: center; border: none; border-radius: 50%; background: var(--peach); color: #332215; width: 38px; height: 38px; padding: 0; flex: 0 0 auto; } +.play-button:hover { background: #f4c29e; } +.play-button svg { width: 13px; height: 13px; } +.play-clock { color: #c8c0cc; font-family: ui-monospace, monospace; font-size: 10px; font-variant-numeric: tabular-nums; } +.play-clock.duration { color: #81798a; } +.waveform-seek { position: relative; min-width: 0; flex: 1; height: 35px; color: #d2b49e; } +.waveform-seek svg { width: 100%; height: 35px; } +.waveform-seek input { appearance: none; position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: .001; cursor: pointer; } +.waveform-seek:focus-within { outline: 1px solid var(--peach); outline-offset: 5px; border-radius: 3px; } +.restart-button { padding: 3px; border: none; background: transparent; color: #a198ac; font-size: 23px !important; } +.blend-control { margin-top: 17px; padding-top: 15px; border-top: 1px solid var(--line); } +.blend-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 11px; color: #ded6e1; } +.blend-readout { font-variant-numeric: tabular-nums; font-size: 9px; color: #8f879b; } +.blend-slider-row { display: flex; align-items: center; gap: 14px; margin: 10px 0 7px; } +.blend-slider-row button { border: none; padding: 2px 0; background: transparent; color: #b2a9bd; font-size: 10px; min-width: 44px; } +.blend-slider-row button.active { color: var(--peach); } +.local-shell .mix-slider { appearance: none; flex: 1; min-width: 0; width: auto; height: 4px; border-radius: 9px; background: linear-gradient(to right, #efb58c 0%, #efb58c var(--mix-percent), #45404c var(--mix-percent), #45404c 100%); cursor: pointer; border: none; } +.local-shell .mix-slider::-webkit-slider-thumb { appearance: none; width: 13px; height: 13px; background: #f4e7dd; border: 3px solid #29232c; border-radius: 50%; box-shadow: 0 0 0 1px #f4e7dd; } +.local-shell .mix-slider::-moz-range-thumb { width: 9px; height: 9px; background: #f4e7dd; border: 2px solid #29232c; border-radius: 50%; } +.local-shell .mix-slider:disabled { cursor: not-allowed; opacity: .4; } +.blend-hint { color: #81798d; font-size: 9px; line-height: 1.5; margin: 0; } +.transcription-panel { border-top: 1px solid var(--line); padding: 15px 24px 17px; background: #ffffff02; } +.transcription-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; } +.limit-label { display: flex; align-items: center; gap: 8px; font-size: 10px; color: #9d94a7; } +.limit-label select { color: #cec5d5; background: #26232b; border: 1px solid #ffffff15; border-radius: 5px; padding: 6px 8px; font-size: 10px; } +.transcribe-button { display: inline-flex; align-items: center; justify-content: center; gap: 12px; background: #eee6dc; color: #2a222e; border: none; font-size: 11px !important; font-weight: 650 !important; border-radius: 6px; padding: 8px 12px; margin-left: auto; } +.transcribe-button:hover { background: #f5f0e9; } +.transcribe-button > span { font-size: 15px; line-height: 1; } +.run-status { color: #a69dac; font-size: 10px; line-height: 1.5; margin: 11px 0 0; } +.run-status.error { color: #f39d9d; } +.download-hint { color: #77707f; font-size: 9px; margin: 6px 0 0; line-height: 1.5; } +.progress-track { height: 3px; background: #ffffff10; overflow: hidden; border-radius: 4px; margin-top: 14px; } +.progress-track > div { height: 100%; background: var(--peach); transition: width .2s; } +.local-footer { display: grid; grid-template-columns: 300px minmax(0,1fr); gap: 28px; margin-top: 36px; border-top: 1px solid var(--line); padding-top: 22px; } +.local-footer .demo-brand { font-size: 18px; gap: 7px; } +.local-footer .demo-brand svg { width: 21px; height: 21px; color: #a89aab; } +.local-footer p { color: #8d8496; font-size: 10px; line-height: 1.7; margin: 5px 0; } +.local-footer > div:last-child > p:first-child { color: #b6abba; } +.runtime-details { color: #a39aad; font-size: 10px; margin-top: 11px; } +.runtime-details summary { cursor: pointer; } +.capability-card { margin-top: 10px !important; } +.local-footer-links { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 8px; } +.local-footer-links a { color: #d0c1d1; text-decoration: none; } +.diagnostic-output { font: 10px/1.6 ui-monospace, monospace; overflow-wrap: anywhere; } +.run-diagnostics { margin-top: 8px; } +.local-shell :is(button, a, select, input):focus-visible, .primary-button:focus-within { outline: 2px solid var(--peach); outline-offset: 4px; } +@keyframes pulse-record { 50% { box-shadow: 0 0 0 5px #ae485720; } } +@media (min-width: 1500px) { .local-shell { padding-top: 34px; } } +@media (max-width: 1000px) { + .local-shell { width: calc(100% - 40px); } + .demo-workspace { grid-template-columns: 260px minmax(0,1fr); gap: 20px; } + .local-footer { grid-template-columns: 260px minmax(0,1fr); gap: 20px; } + .privacy-pill { display: none; } + .hero-art { flex-basis: 240px; padding: 0; } + .upload-panel { padding: 18px; } + .track-header { padding: 20px 18px; gap: 12px; } + .track-header h2 { font-size: 24px; } + .download-button { font-size: 10px; padding: 8px; } + .player, .transcription-panel { padding-left: 18px; padding-right: 18px; } +} +@media (max-width: 760px) { + .local-shell { width: calc(100% - 32px); padding-top: 18px; } + .demo-brand { font-size: 24px; } + .demo-nav > div { gap: 20px; font-size: 11px; } + .local-hero { padding: 36px 0 25px; gap: 20px; } + .local-hero h1 { font-size: 51px; } + .local-hero .eyebrow { font-size: 8px; } + .local-hero > div > p:last-child { font-size: 13px; max-width: 390px; margin-top: 16px; } + .hero-art { display: none; } + .upload-panel { flex-direction: column; align-items: stretch; gap: 15px; margin-bottom: 26px; } + .upload-actions { width: 100%; } + .upload-actions > * { flex: 1; } + .upload-copy { gap: 12px; } + .demo-workspace { display: flex; flex-direction: column; gap: 22px; } + .example-library, .listening-room { width: 100%; } + .library-heading { align-items: center; } + .library-heading h2 { font-size: 24px; } + .library-intro { margin: 8px 0 12px; } + .category-tabs { margin-bottom: 12px; } + .example-list { display: flex; gap: 8px; max-height: none; overflow-x: auto; padding: 0 0 10px; scroll-snap-type: x mandatory; } + .example-card { flex: 0 0 220px; min-width: 0; min-height: 89px; border-color: #ffffff0b; scroll-snap-align: start; } + .clip-info strong { font-size: 12px; } + .clip-info > span { font-size: 10px; } + .clip-info .clip-tags { font-size: 9px; } + .library-note { margin-top: 1px; font-size: 9px; } + .library-note a { display: inline; margin-left: 4px; } + .track-header { flex-wrap: wrap; align-items: start; } + .track-header > div { flex: 1; } + .track-header h2 { font-size: 25px; } + .download-button { font-size: 9px; padding: 8px; } + .roll-stage canvas { height: 250px; } + .roll-toolbar { padding: 10px 17px; } + .instrument-row { padding: 9px 12px; } + .instrument-row button { font-size: 10px; } + .player { padding: 14px 17px 16px; } + .transport-row { gap: 10px; } + .blend-hint { font-size: 10px; } + .blend-slider-row button { font-size: 11px; } + .blend-readout { font-size: 9px; } + .transcription-panel { padding: 14px 17px 17px; } + .run-status { font-size: 11px; } + .local-footer { grid-template-columns: 1fr; gap: 13px; margin-top: 28px; padding-top: 20px; } + .local-footer p { font-size: 11px; } +} +@media (max-width: 380px) { + .demo-nav > div { gap: 12px; } + .local-hero h1 { font-size: 46px; } + .eyebrow { letter-spacing: .13em; } + .download-button { padding: 7px; } + .download-button svg { display: none; } + .transcription-actions { gap: 8px; } + .limit-label { font-size: 9px; gap: 5px; } +} +@media (prefers-reduced-motion: reduce) { + *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; } } - -.run-hint { color: #aeb1bb; font-size: 13px; line-height: 1.5; margin: 16px 0 0; } -.run-diagnostics { color: #aeb1bb; font-size: 12px; margin-top: 12px; } -.run-diagnostics summary { cursor: pointer; } -.primary-button:focus-within, button:focus-visible, a:focus-visible, select:focus-visible { outline: 2px solid #ff627d; outline-offset: 4px; } diff --git a/source/demo/web/src/local/visuals.tsx b/source/demo/web/src/local/visuals.tsx new file mode 100644 index 0000000000000000000000000000000000000000..e69670dec25f5d245eb1187b329f697f8dd9487e --- /dev/null +++ b/source/demo/web/src/local/visuals.tsx @@ -0,0 +1,40 @@ +export function Waveform({ peaks, progress = 0, className = "" }: { peaks: number[]; progress?: number; className?: string }) { + return ; +} + +export function MusicMark() { + return ; +} + +export function IconUpload() { + return ; +} + +export function IconMic() { + return ; +} + +export function IconShield() { + return ; +} + +export function HeroNotes() { + const notes = [[12, 22, 52], [42, 42, 74], [66, 12, 35], [104, 64, 78], [148, 42, 64], [170, 22, 46], [202, 12, 48], [230, 64, 45]]; + return ; +} diff --git a/source/deploy/huggingface/GeneralUser-LICENSE.txt b/source/deploy/huggingface/GeneralUser-LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d5038809a722c40d07e3c7719adf4f5ba94f0aa4 --- /dev/null +++ b/source/deploy/huggingface/GeneralUser-LICENSE.txt @@ -0,0 +1,23 @@ +*** License v2.0 *** + +** License of the complete work ** +You may use GeneralUser GS without restriction for your own music creation, private or commercial. This SoundFont bank is provided to the community free of charge. Please feel free to use it in your software projects, and to modify the SoundFont bank or its packaging to suit your needs. + +** License of contained samples ** +GeneralUser GS inherits the usage rights of the samples contained within, all of which allow full use in music production, including the ability to make profit from musical recordings created with GeneralUser GS. + +Many of the samples are original, but some were taken from other banks freely (and legally) available on the Internet from various SoundFont websites. Because GeneralUser GS originated as a personal project with no intention for publication, I cannot be 100% sure where all of the samples originated, although I do know that none of them came from commercially published SoundFont packages or sample CDs. Regardless, many "free" SoundFonts available on the web may indeed contain samples of questionable origin. My understanding of the copyrights of all samples is only as good as the information provided by the original sources. If you become aware of any restricted samples being used in GeneralUser GS, please let me know so I can replace them. + +This uncertainty may concern you if you intend to use GeneralUser GS in a commercial software product. That being said, I have never received any complaint regarding sample ownership since I published the original GeneralUser GS back in 2000, and as far as I am aware, neither have any of the companies creating commercial software products using GeneralUser GS. + +** More info ** +If you plan to feature GeneralUser GS on your own website, please do not link directly to my download files. Either link to my website, or provide your own local copy instead. + +I hope you enjoy GeneralUser GS! This SoundFont bank is the product of many years of hard work. + +You can find updates to GeneralUser GS and more of my virtual instruments at: http://www.schristiancollins.com + +I can be reached via the contact page on my website here: https://www.schristiancollins.com/contact + +Thank you! +-~Chris diff --git a/source/deploy/huggingface/README.md b/source/deploy/huggingface/README.md index 2b50f6ebc811d019e94e1e0920346bf8e814dc67..81b0392ac8e974ee8822d466fb49a436e59c4aef 100644 --- a/source/deploy/huggingface/README.md +++ b/source/deploy/huggingface/README.md @@ -21,38 +21,40 @@ custom_headers: # Hendrix -Choose an audio file, record with your microphone, or try the short demo -clip. Hendrix predicts notes and instrument families, draws a piano roll, -plays the result, and lets you download a MIDI file. +Hear a recording, see its notes, and turn it into MIDI. -Audio decoding and model inference run on your device. The app does not upload -your recording. It downloads the checked 195.3 MB FP32 D26 model on first use. -WebGPU is preferred; WebAssembly supplies a CPU fallback. Start with two -seconds: speed and memory use depend on your browser and device. +Explore 14 music clips: full-band mixes, guitar performances, electronic music, +rock, folk, pop, hip-hop, and instrumental tracks. Each clip comes with prepared +Hendrix predictions, so you can listen and download MIDI right away. Press play +and drag the **Original ↔ MIDI** slider to blend the recording with its +transcription. Seek through the waveform or mute individual instrument parts. +MIDI plays with sampled instruments from GeneralUser GS by S. Christian Collins. -If the embedded app runs slowly, [open the app directly](https://jackboyla-hendrix.static.hf.space/) -to enable browser isolation and up to four CPU threads. Microphone access also -depends on browser permissions. Predictions are a research result and may -miss notes, assign the wrong instrument, or give poor note endings. MIDI -playback uses a simple browser synth. +Choose a file or record with your microphone to transcribe your own audio. +Decoding and inference run on your device; the app does not upload your recording. +The first live transcription downloads 195.3 MB of model graphs and the browser +runtime. WebGPU is preferred, with a WebAssembly CPU fallback. Start with two +seconds on slower devices. The example library needs no model download. -The example is a two-second excerpt (6–8 seconds of the repo's preview) from -Slakh2100 test Track01876, cropped from the existing project demo. Slakh2100 -is by Ethan Manilow, Gordon Wichern, Prem Seetharaman, and Jonathan Le Roux, -available on [Zenodo](https://zenodo.org/records/4599666) under -[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). We do not -redistribute the local YouTube diagnostic audio. +[Open the app directly](https://jackboyla-hendrix.static.hf.space/) for the full +listening view. Microphone access depends on browser permissions. Predictions +can miss notes, choose the wrong instrument, or give poor note endings. -Model: 46.5M-parameter D26, derived from YPTF-MoE+Multi. `models/fp32/manifest.json` -records the source checkpoint and graph hashes. `deployment.json` records the -app build and file hashes. This Space includes only the checked FP32 release. +The example audio comes from Free Music Archive, GuitarSet, and Slakh2100 under +CC BY licenses. Clips are cropped to at most 12 seconds and converted to mono +16 kHz audio. [Full creator, source, license, and crop credits](https://huggingface.co/spaces/jackboyla/hendrix/blob/main/examples/CREDITS.md) +accompany the clips. Prepared notes come from the fixed Hendrix model, not +reference annotations. [GeneralUser GS license](https://huggingface.co/spaces/jackboyla/hendrix/blob/main/soundfonts/LICENSE.txt). -[Source, methods, results, and deployment commands](https://github.com/jackboyla/hendrix) +The 46.5M-parameter model derives from YPTF-MoE+Multi. +`models/fp32/manifest.json` records the source checkpoint and checked FP32 graph +hashes. `deployment.json` records the app source and file hashes. This static +Space needs no server-side inference or GPU. -This is a static Space: hosting requires no server-side inference or GPU. +[Source, methods, results, and deployment commands](https://github.com/jackboyla/hendrix) -The `source/` directory contains the app source used for this deployment. -To rebuild and publish from that snapshot: +The `source/` directory contains the exact app source and prepared audio assets +used for this deployment. To rebuild and publish from that snapshot: ```bash cd source @@ -63,5 +65,5 @@ uv run --no-project --with huggingface_hub==0.36.2 python \ ``` Omit `--upload` to build and check a local package. Each run prints the staging -directory. The script keeps the model hashes fixed and refuses to change an -existing Space's visibility or SDK. +directory. The script checks the model and example hashes and refuses to change +an existing Space's visibility or SDK. diff --git a/source/scripts/check_huggingface_space.mjs b/source/scripts/check_huggingface_space.mjs index c21ac00b007b9d1d18db037929d87afb924b2e87..b19638d261e07a6dab545a8101969b02bfb674df 100644 --- a/source/scripts/check_huggingface_space.mjs +++ b/source/scripts/check_huggingface_space.mjs @@ -1,81 +1,149 @@ #!/usr/bin/env node -// Check the deployed package with CPU inference, independent of local GPUs. +// Check examples, real audio gains, live CPU inference, and responsive layouts. import assert from "node:assert/strict"; import { mkdir, writeFile } from "node:fs/promises"; +import { dirname } from "node:path"; import { chromium } from "../demo/web/node_modules/playwright/index.mjs"; const base = process.env.HENDRIX_SPACE_URL || "https://jackboyla-hendrix.static.hf.space"; -const resultPath = process.env.HENDRIX_SPACE_RESULT || "progress/evaluations/huggingface_space_check.json"; -const screenshotPath = process.env.HENDRIX_SPACE_SCREENSHOT || "progress/evaluations/huggingface_space.png"; +const resultPath = process.env.HENDRIX_SPACE_RESULT || "progress/evaluations/huggingface_space_redesign_check.json"; +const screenshotPath = process.env.HENDRIX_SPACE_SCREENSHOT || "progress/evaluations/huggingface_space_redesign.png"; const browser = await chromium.launch({ headless: true, args: ["--disable-gpu"] }); -const errors = []; -const failedResponses = []; -const audioUploads = []; -const results = []; +const errors = [], failedResponses = [], audioUploads = [], results = []; async function check(page, embedded) { - page.on("pageerror", (error) => errors.push(String(error))); - page.on("request", (request) => { + await page.addInitScript(() => { + window.__blendTargets = []; + const original = AudioParam.prototype.setTargetAtTime; + AudioParam.prototype.setTargetAtTime = function (value, time, constant) { + window.__blendTargets.push(value); + return original.call(this, value, time, constant); + }; + }); + const modelRequests = []; + page.on("pageerror", error => errors.push(String(error))); + page.on("request", request => { if (request.method() === "POST" && request.url().startsWith(base)) audioUploads.push(request.url()); if (request.url().includes("/transcribe")) audioUploads.push(request.url()); + if (request.url().includes("/models/")) modelRequests.push(request.url()); }); - page.on("response", (response) => { + page.on("response", response => { if (response.status() >= 400 && response.url().startsWith(base)) failedResponses.push({ url: response.url(), status: response.status() }); }); - let app; if (embedded) { const repoId = process.env.HENDRIX_SPACE_REPO || "jackboyla/hendrix"; await page.goto(`https://huggingface.co/spaces/${repoId}`, { waitUntil: "domcontentloaded", timeout: 60_000 }); - // HF may add query params or trailing slashes to the actual frame URL. - await page.waitForFunction((origin) => [...document.querySelectorAll("iframe")] - .some((frame) => frame.src.startsWith(origin)), base, { timeout: 60_000 }); - // HF replaces its initial iframe after loading Space metadata. A live - // FrameLocator follows that replacement instead of holding a stale frame. + await page.waitForFunction(origin => [...document.querySelectorAll("iframe")].some(frame => frame.src.startsWith(origin)), base, { timeout: 60_000 }); app = page.frameLocator(`iframe[src^="${base}"]`).first(); } else { await page.goto(`${base}/local.html?backend=wasm`, { waitUntil: "domcontentloaded", timeout: 60_000 }); app = page.mainFrame(); } - await app.getByRole("button", { name: "Try demo clip" }).waitFor({ timeout: 60_000 }); - await app.locator(".capability-card").filter({ hasText: "WebAssembly CPU" }).waitFor(); - const isolation = await app.locator("html").evaluate(() => ({ - isolated: crossOriginIsolated, secure: isSecureContext, - sharedArrayBuffer: typeof SharedArrayBuffer !== "undefined", - adapter: document.querySelector(".capability-card").textContent, - })); + const download = app.getByRole("link", { name: "Download MIDI" }); + await download.waitFor({ timeout: 60_000 }); + assert.equal(await app.locator(".example-card").count(), 14); + assert.doesNotMatch(await app.locator("body").textContent(), /D26|research checkpoint/); + const isolation = await app.locator("html").evaluate(() => ({ isolated: crossOriginIsolated, secure: isSecureContext, sharedArrayBuffer: typeof SharedArrayBuffer !== "undefined" })); assert.equal(isolation.secure, true); - if (!embedded) assert.equal(isolation.isolated, true, "direct app must enable cross-origin isolation"); - await app.getByRole("button", { name: "Try demo clip" }).click(); + if (!embedded) assert.equal(isolation.isolated, true); + assert.deepEqual(modelRequests, [], "prepared examples must work without downloading the inference model"); + + // Verify every catalog asset, not just the featured example. + const catalogResult = await app.locator("html").evaluate(async () => { + const catalog = await (await fetch("/examples/catalog.json")).json(); + const bad = []; + for (const example of catalog.examples) { + for (const url of [example.audio_url, example.notes_url]) { + const response = await fetch(url); + if (!response.ok) bad.push({ url, status: response.status }); + } + } + return { count: catalog.examples.length, categories: [...new Set(catalog.examples.map(example => example.category))], bad }; + }); + assert.equal(catalogResult.count, 14); + assert.deepEqual(catalogResult.bad, []); + const blend = app.getByRole("slider", { name: "Original and MIDI blend" }); + await blend.waitFor(); + // MIDI endpoints stay disabled until the actual sampled-instrument synth is ready. + await app.getByRole("button", { name: "MIDI", exact: true }).waitFor(); + const synthStarted = Date.now(); + while (await blend.isDisabled()) { + if (Date.now() - synthStarted > 60_000) throw new Error("MIDI instrument sounds did not become ready"); + await new Promise(resolve => setTimeout(resolve, 100)); + } + + await app.getByRole("button", { name: "Play recording" }).click(); + await app.getByRole("button", { name: "Pause playback" }).waitFor(); + await blend.focus(); + await page.keyboard.press("End"); + await app.locator(".blend-readout").filter({ hasText: "100% MIDI" }).waitFor(); + const midiGains = await app.locator("html").evaluate(() => window.__blendTargets.slice(-4)); + assert.deepEqual(midiGains, [0, 1, 0, 0], "MIDI endpoint must mute original gain and open MIDI gain"); + assert.equal(await app.getByRole("button", { name: "Pause playback" }).count(), 1); + await page.keyboard.press("Home"); + await app.locator(".blend-readout").filter({ hasText: "100% original" }).waitFor(); + const originalGains = await app.locator("html").evaluate(() => window.__blendTargets.slice(-4)); + assert.deepEqual(originalGains, [1, 0, 0, 0], "Original endpoint must open original gain and mute MIDI gain"); + await page.keyboard.press("ArrowRight"); + await app.locator(".blend-readout").filter({ hasText: "99% original" }).waitFor(); + const mixedGains = await app.locator("html").evaluate(() => window.__blendTargets.slice(-4)); + assert.deepEqual(mixedGains, [0.99, 0.01, 0, 0], "slider must drive both actual audio gains"); + await app.getByRole("button", { name: "Pause playback" }).click(); + const preparedMidi = await app.locator("html").evaluate(async (_html, url) => Array.from(new Uint8Array(await (await fetch(url)).arrayBuffer())), await download.getAttribute("href")); + assert.equal(Buffer.from(preparedMidi).subarray(0, 4).toString(), "MThd"); + + // Browse and load a second source; then return to the featured mix. + await app.getByRole("button", { name: "Guitar", exact: true }).click(); + assert.equal(await app.locator(".example-card").count(), 4); + await app.getByRole("button", { name: "Load Funk guitar", exact: true }).click(); + await app.getByRole("heading", { name: "Funk guitar", exact: true }).waitFor(); + await download.waitFor(); + await app.getByRole("button", { name: "Pause playback" }).waitFor(); + await app.getByRole("button", { name: "Pause playback" }).click(); + await app.getByRole("button", { name: "All", exact: true }).click(); + await app.getByRole("button", { name: "Load Full-band groove", exact: true }).click(); + await app.getByRole("heading", { name: "Full-band groove", exact: true }).waitFor(); + await app.getByRole("button", { name: "Pause playback" }).waitFor(); + await app.getByRole("button", { name: "Pause playback" }).click(); + assert.deepEqual(modelRequests, [], "all prepared listening checks must stay independent of inference download"); + + if (!embedded) { + await mkdir(dirname(screenshotPath), { recursive: true }); + await page.screenshot({ path: screenshotPath, fullPage: true }); + await page.setViewportSize({ width: 390, height: 844 }); + const layout = await app.locator("html").evaluate(() => ({ width: innerWidth, scrollWidth: document.documentElement.scrollWidth })); + assert.ok(layout.scrollWidth <= layout.width, `mobile layout overflow: ${JSON.stringify(layout)}`); + await page.screenshot({ path: screenshotPath.replace(/\.png$/, "_mobile.png"), fullPage: true }); + await page.setViewportSize({ width: 1280, height: 1000 }); + } + // Check the live path too; use a short excerpt to keep this a bounded test. + await app.locator(".limit-label select").selectOption("2.05"); const started = Date.now(); - await app.getByRole("button", { name: "Run on this device" }).click(); + await app.getByRole("button", { name: "Transcribe audio" }).click(); await app.locator('.run-status:has-text("Audio never left this device"), .run-status.error').waitFor({ timeout: 180_000 }); const status = await app.locator(".run-status").textContent(); const diagnostic = await app.locator(".diagnostic-output").textContent().catch(() => ""); assert.match(status, /^[1-9]\d* notes from /, `${status}; ${diagnostic}`); assert.match(diagnostic, /backend=wasm cache=cpu/); - const download = await app.getByRole("link", { name: "Download MIDI" }).getAttribute("href"); - const midi = await app.locator("html").evaluate(async (_html, url) => Array.from(new Uint8Array(await (await fetch(url)).arrayBuffer())), download); + const midi = await app.locator("html").evaluate(async (_html, url) => Array.from(new Uint8Array(await (await fetch(url)).arrayBuffer())), await download.getAttribute("href")); assert.equal(Buffer.from(midi).subarray(0, 4).toString(), "MThd"); - const result = { embedded, ...isolation, status, diagnostic, midiBytes: midi.length, wallSeconds: (Date.now() - started) / 1000 }; + const result = { embedded, ...isolation, catalog: catalogResult, midiGains, originalGains, mixedGains, + preparedMidiBytes: preparedMidi.length, status, diagnostic, liveMidiBytes: midi.length, + liveWallSeconds: (Date.now() - started) / 1000, modelRequests }; results.push(result); console.log(JSON.stringify(result)); - if (!embedded) { - await mkdir(new URL("..", `file://${process.cwd()}/${screenshotPath}`).pathname, { recursive: true }); - await page.screenshot({ path: screenshotPath, fullPage: true }); - } } try { - await check(await browser.newPage({ viewport: { width: 1280, height: 900 } }), false); + await check(await browser.newPage({ viewport: { width: 1280, height: 1000 } }), false); if (process.env.HENDRIX_SPACE_SKIP_EMBED !== "1") { await check(await browser.newPage({ viewport: { width: 1440, height: 1000 } }), true); } assert.deepEqual(errors, []); assert.deepEqual(failedResponses, []); assert.deepEqual(audioUploads, []); + await mkdir(dirname(resultPath), { recursive: true }); await writeFile(resultPath, JSON.stringify({ base, results, errors, failedResponses, audioUploads }, null, 2) + "\n"); - console.log(`Hosted audio-to-MIDI checks passed: ${resultPath}`); -} finally { - await browser.close(); -} + console.log(`Example, audio blend, MIDI, layout, and live transcription checks passed: ${resultPath}`); +} finally { await browser.close(); } diff --git a/source/scripts/decode_demo_tokens.mjs b/source/scripts/decode_demo_tokens.mjs new file mode 100644 index 0000000000000000000000000000000000000000..255926c170becd305f91d9a7b09e7208f5cd4efa --- /dev/null +++ b/source/scripts/decode_demo_tokens.mjs @@ -0,0 +1,6 @@ +import { decodeTrackTokens } from "../demo/web/src/local/codec.ts"; + +let input = ""; +for await (const chunk of process.stdin) input += chunk; +const { windows, segmentSeconds, duration } = JSON.parse(input); +process.stdout.write(JSON.stringify(decodeTrackTokens(windows, segmentSeconds, duration))); diff --git a/source/scripts/deploy_huggingface_space.py b/source/scripts/deploy_huggingface_space.py index 3d7541746e3b6f0fc5568fb8ca4ab88bd3299728..51f5101cffff6af6627185b1249894d0f1efffe9 100644 --- a/source/scripts/deploy_huggingface_space.py +++ b/source/scripts/deploy_huggingface_space.py @@ -11,7 +11,6 @@ from pathlib import Path import shutil import subprocess import tempfile -import wave REPO = Path(__file__).resolve().parents[1] @@ -81,13 +80,24 @@ def package_space(web_dir: Path, graph_dir: Path, ort_dir: Path, output: Path) - for filename in ORT_FILES: copy_file(ort_dir / filename, output / "ort" / filename) - # Use the public CC-BY demo mix, skipping its silent opening. Never copy - # the private YouTube jazz diagnostic or the local examples directory. - with wave.open(str(REPO / "docs/assets/slakh_test_Track01876.wav"), "rb") as source: - with wave.open(str(output / "diagnostic.wav"), "wb") as target: - target.setparams(source.getparams()) - source.setpos(6 * source.getframerate()) - target.writeframes(source.readframes(2 * source.getframerate())) + # Only publish the licensed catalog's exact audio/notes, with graph and + # file hashes checked. Never copy the private local examples directory. + catalog = json.loads((web_dir / "examples/catalog.json").read_text()) + public_files = ["examples/catalog.json", "examples/CREDITS.md", "soundfonts/GeneralUser_GS.sf2", "soundfonts/LICENSE.txt"] + for example in catalog["examples"]: + for field, digest_field in (("audio_url", "audio_sha256"), ("notes_url", "notes_sha256")): + relative = example[field].lstrip("/") + source = (web_dir / relative).resolve() + if not source.is_relative_to((web_dir / "examples").resolve()): + raise ValueError(f"Invalid example asset: {relative}") + if sha256(source) != example[digest_field]: + raise ValueError(f"Example asset hash mismatch: {relative}") + public_files.append(relative) + prediction = json.loads((web_dir / example["notes_url"].lstrip("/")).read_text()) + if prediction["checkpoint_sha256"] != manifest["checkpoint"]["sha256"]: + raise ValueError(f"Example prediction uses another model: {example['id']}") + for relative in public_files: + copy_file(web_dir / relative, output / relative) copy_file(REPO / "deploy/huggingface/README.md", output / "README.md") # Keep the exact app source next to the build for review and reproduction. @@ -97,8 +107,13 @@ def package_space(web_dir: Path, graph_dir: Path, ort_dir: Path, output: Path) - copy_file(REPO / "demo/web/public/favicon.png", output / "source/demo/web/public/favicon.png") copy_file(Path(__file__), output / "source/scripts/deploy_huggingface_space.py") copy_file(REPO / "scripts/check_huggingface_space.mjs", output / "source/scripts/check_huggingface_space.mjs") + copy_file(REPO / "scripts/prepare_public_demo.py", output / "source/scripts/prepare_public_demo.py") + copy_file(REPO / "scripts/decode_demo_tokens.mjs", output / "source/scripts/decode_demo_tokens.mjs") + copy_file(REPO / "configs/demo/public_examples.json", output / "source/configs/demo/public_examples.json") + copy_file(REPO / "deploy/huggingface/GeneralUser-LICENSE.txt", output / "source/deploy/huggingface/GeneralUser-LICENSE.txt") copy_file(REPO / "deploy/huggingface/README.md", output / "source/deploy/huggingface/README.md") - copy_file(REPO / "docs/assets/slakh_test_Track01876.wav", output / "source/docs/assets/slakh_test_Track01876.wav") + for relative in public_files: + copy_file(web_dir / relative, output / "source/demo/web/public" / relative) def git(*args: str) -> str: return subprocess.check_output(["git", *args], cwd=REPO, text=True).strip() @@ -110,7 +125,7 @@ def package_space(web_dir: Path, graph_dir: Path, ort_dir: Path, output: Path) - "source_dirty": bool(git("status", "--porcelain")), "build_command": "VITE_HENDRIX_SPACE=1 npx --yes pnpm@10.20.0 --dir demo/web build --manifest", "checkpoint_sha256": manifest["checkpoint"]["sha256"], - "example": {"source": "Slakh2100 Track01876", "clip_offset_seconds": 6, "duration_seconds": 2, "license": "CC-BY-4.0"}, + "example_catalog": {"count": len(catalog["examples"]), "sha256": sha256(web_dir / "examples/catalog.json")}, "files": { path.relative_to(output).as_posix(): {"bytes": path.stat().st_size, "sha256": sha256(path)} for path in sorted(output.rglob("*")) if path.is_file() @@ -164,7 +179,7 @@ def main() -> None: # No deletion patterns: preserve unrelated files in an existing Space. commit = api.upload_folder( repo_id=args.repo_id, repo_type="space", folder_path=output, - commit_message="Deploy checked Hendrix D26 browser demo", + commit_message="Update Hendrix music transcription demo", ) print(f"Space: https://huggingface.co/spaces/{args.repo_id}") print(f"Commit: {commit.commit_url}") diff --git a/source/scripts/prepare_public_demo.py b/source/scripts/prepare_public_demo.py new file mode 100644 index 0000000000000000000000000000000000000000..75ebebc77d18ff15c6d8b9b72493362426379f82 --- /dev/null +++ b/source/scripts/prepare_public_demo.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python3 +"""Crop licensed demo clips and prepare notes with the fixed browser ONNX model.""" +from __future__ import annotations + +import argparse +import csv +import hashlib +import json +from pathlib import Path +import re +import shutil +import subprocess +import time + +import numpy as np +import onnxruntime as ort +import soundfile as sf +import torch + +ROOT = Path(__file__).resolve().parents[1] + + +def digest(path: Path) -> str: + with path.open("rb") as stream: + return hashlib.file_digest(stream, "sha256").hexdigest() + + +def generate(sessions, features): + encoder, cross_cache, decoder = sessions + encoded = encoder.run(None, {"spectrogram": features})[0] + cross = cross_cache.run(None, {"encoder_hidden_states": encoded}) + cache = [np.zeros((13, 6, 0, 64), np.float32) for _ in range(16)] + token = np.zeros((1, 13, 1), np.int64) + unfinished = np.ones_like(token) + windows = [] + for position in range(256): + feeds = {"token_ids": token, "position_ids": np.asarray([position], np.int64)} + for layer in range(8): + for suffix, values in (("self_key", cache[2*layer]), ("self_value", cache[2*layer+1]), + ("cross_key", cross[2*layer]), ("cross_value", cross[2*layer+1])): + feeds[f"layer_{layer}_{suffix}"] = values + result = decoder.run(None, feeds) + token = result[0].argmax(-1).astype(np.int64) + visible = token * unfinished + windows.append(visible) + cache = result[1:] + unfinished *= visible != 1 + if not unfinished.any(): + break + return np.concatenate(windows, axis=-1)[0].tolist(), int(unfinished.sum()) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--dataset-root", type=Path, default=Path("/home/jack/workspace/datasets")) + parser.add_argument("--graph-dir", type=Path, default=ROOT / "progress/evaluations/yptf_web_fp32_d26") + parser.add_argument("--soundfont", type=Path, default=Path("/home/jack/workspace/models/soundfonts/GeneralUser_GS.sf2")) + parser.add_argument("--output-dir", type=Path, default=ROOT / "demo/web/public/examples") + args = parser.parse_args() + config = json.loads((ROOT / "configs/demo/public_examples.json").read_text()) + for row in config["examples"]: + if not re.fullmatch(r"[a-z0-9-]+", row["id"]): + raise SystemExit(f"Example ID must be safe in a URL: {row['id']}") + manifest = json.loads((args.graph_dir / "manifest.json").read_text()) + if manifest["precision"] != "fp32": + raise SystemExit("Public examples require the checked FP32 browser export") + options = ort.SessionOptions() + options.intra_op_num_threads = 4 + options.inter_op_num_threads = 1 + torch.set_num_threads(4) + sessions = [] + for name in ("encoder", "cross_cache", "decoder_step"): + path = args.graph_dir / f"{name}.onnx" + if digest(path) != manifest["graphs"][name]["sha256"]: + raise SystemExit(f"Graph hash mismatch: {path}") + sessions.append(ort.InferenceSession(str(path), sess_options=options, providers=["CPUExecutionProvider"])) + + # Check each selected FMA license against the frozen dataset metadata. + with (args.dataset_root / "fma/fma_metadata/tracks.csv").open() as stream: + reader = csv.reader(stream) + groups, fields = next(reader), next(reader) + license_index = list(zip(groups, fields)).index(("track", "license")) + licenses = {int(row[0]): row[license_index] for row in reader if row[0].isdigit()} + for row in config["examples"]: + if row["collection"] == "Free Music Archive": + assert licenses[row["track_id"]] == row["license_metadata"], row["id"] + assert row["license_metadata"] in {"Attribution 3.0 United States", "Attribution 3.0 International"} + + args.output_dir.mkdir(parents=True, exist_ok=True) + catalog = {"schema_version": 1, "default_example": config["default_example"], "examples": []} + credits = ["# Demo audio credits", "", "All clips are cropped to at most 12 seconds and converted to mono 16 kHz PCM.", "Prepared notes are Hendrix predictions, not dataset annotations.", ""] + hann = torch.hann_window(2048) + started = time.monotonic() + for row in config["examples"]: + audio_path = args.output_dir / f"{row['id']}.wav" + source = args.dataset_root / row["source"] + subprocess.run(["ffmpeg", "-hide_banner", "-loglevel", "error", "-y", "-ss", str(row["offset_seconds"]), + "-i", str(source), "-t", str(row["duration_seconds"]), "-ac", "1", "-ar", "16000", "-c:a", "pcm_s16le", str(audio_path)], check=True) + audio, rate = sf.read(audio_path, dtype="float32") + assert rate == 16000 and audio.ndim == 1 + duration = len(audio) / rate + tokens, truncations = [], 0 + for start in range(0, len(audio), 32767): + window = np.zeros(32767, np.float32) + segment = audio[start:start+32767] + window[:len(segment)] = segment + magnitudes = torch.stft(torch.from_numpy(window), n_fft=2048, hop_length=300, + window=hann, return_complex=True).abs()[1:].transpose(0, 1) + features = torch.log(magnitudes + 1e-5) + features = (features - features.min()) / (features.max() - features.min() + 0.008) + predicted, unfinished = generate(sessions, features.unsqueeze(0).numpy()) + tokens.append(predicted) + truncations += bool(unfinished) + decoded = subprocess.run(["node", "--experimental-strip-types", str(ROOT / "scripts/decode_demo_tokens.mjs")], + input=json.dumps({"windows": tokens, "segmentSeconds": 32767/16000, "duration": duration}), + text=True, capture_output=True, check=True) + notes = json.loads(decoded.stdout) + payload = {"schema_version": 1, "duration": duration, "notes": notes, + "checkpoint_sha256": manifest["checkpoint"]["sha256"], "audio_sha256": digest(audio_path), + "runtime": "Fixed FP32 ONNX browser graphs, CPU, shared browser note decoder", "truncated_windows": truncations} + note_path = args.output_dir / f"{row['id']}.json" + note_path.write_text(json.dumps(payload, separators=(",", ":")) + "\n") + peaks = [float(np.sqrt(np.mean(chunk**2))) for chunk in np.array_split(audio, 56)] + maximum = max(peaks) or 1 + peaks = [round((value/maximum)**0.65, 3) for value in peaks] + public = {**row, "audio_url": f"/examples/{audio_path.name}", "notes_url": f"/examples/{note_path.name}", + "duration": duration, "peaks": peaks, "note_count": len(notes), "audio_sha256": digest(audio_path), + "notes_sha256": digest(note_path), "source_sha256": digest(source)} + catalog["examples"].append(public) + credits += [f"## {row['title']}", f"Artist/creator: {row['artist']}", + f"Source: [{row['collection']}]({row['source_url']}), `{row['source']}`.", + f"License: [{row['license_name']}]({row['license_url']}).", + f"Change: {row['offset_seconds']}–{row['offset_seconds']+duration:g} seconds, mono 16 kHz excerpt.", ""] + print(f"{row['id']}: {duration:g}s, {len(notes)} notes, {truncations} truncated windows", flush=True) + (args.output_dir / "catalog.json").write_text(json.dumps(catalog, indent=2) + "\n") + (args.output_dir / "CREDITS.md").write_text("\n".join(credits)) + fonts = args.output_dir.parent / "soundfonts" + fonts.mkdir(parents=True, exist_ok=True) + shutil.copyfile(args.soundfont, fonts / "GeneralUser_GS.sf2") + shutil.copyfile(ROOT / "deploy/huggingface/GeneralUser-LICENSE.txt", fonts / "LICENSE.txt") + print(f"Prepared {len(catalog['examples'])} examples in {time.monotonic()-started:.1f}s: {args.output_dir}", flush=True) + + +if __name__ == "__main__": + main()